From b545d80cb2f05bb99b1e9a8dc65688b2107b3549 Mon Sep 17 00:00:00 2001 From: Microchip Technology Date: Wed, 4 Mar 2020 19:24:36 +0000 Subject: [PATCH] Merging into the (master) branch --- AVRIoT.X/Makefile | 113 + AVRIoT.X/main.c | 36 + .../CryptoAuth_example.c | 83 + .../CryptoAuth_example.h | 34 + .../CryptoAuth_init.c | 63 + .../CryptoAuth_init.h | 35 + .../MicrochipDisclaimer | 27 + .../CryptoAuthenticationLibrary/atca_bool.h | 43 + .../CryptoAuthenticationLibrary/atca_cfgs.c | 126 + .../CryptoAuthenticationLibrary/atca_cfgs.h | 67 + .../atca_command.c | 765 +++++ .../atca_command.h | 762 +++++ .../atca_compiler.h | 88 + .../CryptoAuthenticationLibrary/atca_device.c | 174 + .../CryptoAuthenticationLibrary/atca_device.h | 66 + .../atca_devtypes.h | 54 + .../atca_execution.c | 372 +++ .../atca_execution.h | 68 + .../CryptoAuthenticationLibrary/atca_iface.c | 271 ++ .../CryptoAuthenticationLibrary/atca_iface.h | 173 + .../CryptoAuthenticationLibrary/atca_status.h | 84 + .../atcacert/atcacert.h | 66 + .../atcacert/atcacert_client.c | 366 +++ .../atcacert/atcacert_client.h | 152 + .../atcacert/atcacert_date.c | 1102 +++++++ .../atcacert/atcacert_date.h | 194 ++ .../atcacert/atcacert_def.c | 1786 ++++++++++ .../atcacert/atcacert_def.h | 818 +++++ .../atcacert/atcacert_der.c | 562 ++++ .../atcacert/atcacert_der.h | 165 + .../atcacert/atcacert_host_hw.c | 105 + .../atcacert/atcacert_host_hw.h | 106 + .../atcacert/atcacert_host_sw.c | 97 + .../atcacert/atcacert_host_sw.h | 106 + .../atcacert/atcacert_pem.c | 165 + .../atcacert/atcacert_pem.h | 126 + .../basic/README.md | 15 + .../basic/atca_basic.c | 420 +++ .../basic/atca_basic.h | 256 ++ .../basic/atca_basic_aes.c | 153 + .../basic/atca_basic_aes_cbc.c | 144 + .../basic/atca_basic_aes_cmac.c | 218 ++ .../basic/atca_basic_aes_ctr.c | 230 ++ .../basic/atca_basic_aes_gcm.c | 583 ++++ .../basic/atca_basic_aes_gcm.h | 67 + .../basic/atca_basic_checkmac.c | 94 + .../basic/atca_basic_counter.c | 104 + .../basic/atca_basic_derivekey.c | 79 + .../basic/atca_basic_ecdh.c | 258 ++ .../basic/atca_basic_gendig.c | 91 + .../basic/atca_basic_genkey.c | 122 + .../basic/atca_basic_hmac.c | 92 + .../basic/atca_basic_info.c | 139 + .../basic/atca_basic_kdf.c | 136 + .../basic/atca_basic_lock.c | 140 + .../basic/atca_basic_mac.c | 93 + .../basic/atca_basic_nonce.c | 205 ++ .../basic/atca_basic_privwrite.c | 177 + .../basic/atca_basic_random.c | 80 + .../basic/atca_basic_read.c | 713 ++++ .../basic/atca_basic_secureboot.c | 221 ++ .../basic/atca_basic_selftest.c | 102 + .../basic/atca_basic_sha.c | 508 +++ .../basic/atca_basic_sign.c | 181 ++ .../basic/atca_basic_updateextra.c | 76 + .../basic/atca_basic_verify.c | 495 +++ .../basic/atca_basic_write.c | 535 +++ .../basic/atca_helpers.c | 857 +++++ .../basic/atca_helpers.h | 82 + .../crypto/README.md | 6 + .../crypto/atca_crypto_sw.h | 33 + .../crypto/atca_crypto_sw_ecdsa.c | 44 + .../crypto/atca_crypto_sw_ecdsa.h | 62 + .../crypto/atca_crypto_sw_rand.c | 39 + .../crypto/atca_crypto_sw_rand.h | 53 + .../crypto/atca_crypto_sw_sha1.c | 106 + .../crypto/atca_crypto_sw_sha1.h | 64 + .../crypto/atca_crypto_sw_sha2.c | 107 + .../crypto/atca_crypto_sw_sha2.h | 64 + .../crypto/hashes/sha1_routines.c | 339 ++ .../crypto/hashes/sha1_routines.h | 94 + .../crypto/hashes/sha2_routines.c | 255 ++ .../crypto/hashes/sha2_routines.h | 61 + .../cryptoauthlib.h | 57 + .../cryptoauthlib_config.h | 62 + .../hal/atca_hal.c | 221 ++ .../hal/atca_hal.h | 177 + .../hal/atca_i2c_hal.c | 179 + .../hal/atca_i2c_hal.h | 24 + .../hal/atca_start_config.h | 6 + .../hal/atca_start_iface.h | 6 + .../hal/hal_i2c_timer.c | 45 + .../host/atca_host.c | 1464 +++++++++ .../host/atca_host.h | 443 +++ .../jwt/atca_jwt.c | 348 ++ .../jwt/atca_jwt.h | 61 + .../CryptoAuthenticationLibrary/readme.md | 1 + .../mcc_generated_files/application_manager.c | 399 +++ .../mcc_generated_files/application_manager.h | 35 + AVRIoT.X/mcc_generated_files/banner.h | 106 + AVRIoT.X/mcc_generated_files/cli/cli.c | 380 +++ AVRIoT.X/mcc_generated_files/cli/cli.h | 36 + .../cloud/aws_cloud_service.c | 210 ++ .../cloud/cloud_interface.h | 67 + .../mcc_generated_files/cloud/cloud_service.c | 455 +++ .../mcc_generated_files/cloud/cloud_service.h | 44 + .../cloud/crypto_client/crypto_client.c | 352 ++ .../cloud/crypto_client/crypto_client.h | 51 + .../mcc_generated_files/cloud/mqtt_service.c | 152 + .../mcc_generated_files/cloud/mqtt_service.h | 78 + .../mcc_generated_files/cloud/wifi_service.c | 428 +++ .../mcc_generated_files/cloud/wifi_service.h | 47 + .../config/IoT_Sensor_Node_config.h | 14 + .../mcc_generated_files/config/clock_config.h | 31 + .../mcc_generated_files/config/cloud_config.h | 11 + .../mcc_generated_files/config/conf_winc.h | 106 + .../mcc_generated_files/config/mqtt_config.h | 93 + .../credentials_storage/credentials_storage.c | 47 + .../credentials_storage/credentials_storage.h | 44 + AVRIoT.X/mcc_generated_files/debug_print.c | 88 + AVRIoT.X/mcc_generated_files/debug_print.h | 85 + AVRIoT.X/mcc_generated_files/delay.c | 44 + AVRIoT.X/mcc_generated_files/delay.h | 31 + AVRIoT.X/mcc_generated_files/device_config.c | 39 + .../docs/mqtt_documentation/MQTT Readme.md | 397 +++ .../Microchip MQTT Client Library.docx | Bin 0 -> 40827 bytes .../WINC1500_IoT_SW_APIs.chm | Bin 0 -> 1393870 bytes .../drivers/i2c_simple_master.c | 162 + .../drivers/i2c_simple_master.h | 40 + .../mcc_generated_files/drivers/spi_master.c | 50 + .../mcc_generated_files/drivers/spi_master.h | 53 + .../mcc_generated_files/drivers/timeout.c | 384 +++ .../mcc_generated_files/drivers/timeout.h | 66 + AVRIoT.X/mcc_generated_files/drivers/uart.c | 36 + AVRIoT.X/mcc_generated_files/drivers/uart.h | 45 + AVRIoT.X/mcc_generated_files/include/adc0.h | 184 ++ AVRIoT.X/mcc_generated_files/include/ccp.h | 72 + AVRIoT.X/mcc_generated_files/include/cpuint.h | 44 + .../mcc_generated_files/include/pin_manager.h | 410 +++ AVRIoT.X/mcc_generated_files/include/port.h | 1373 ++++++++ .../include/protected_io.h | 85 + .../mcc_generated_files/include/rstctrl.h | 54 + AVRIoT.X/mcc_generated_files/include/rtc.h | 53 + AVRIoT.X/mcc_generated_files/include/spi0.h | 228 ++ .../mcc_generated_files/include/twi0_master.h | 210 ++ AVRIoT.X/mcc_generated_files/include/usart2.h | 178 + AVRIoT.X/mcc_generated_files/led.c | 341 ++ AVRIoT.X/mcc_generated_files/led.h | 63 + AVRIoT.X/mcc_generated_files/mcc.c | 118 + AVRIoT.X/mcc_generated_files/mcc.h | 58 + .../mqtt/mqtt_comm_bsd/mqtt_comm_layer.c | 92 + .../mqtt/mqtt_comm_bsd/mqtt_comm_layer.h | 59 + .../mqtt_comm_tcpipLite/mqtt_comm_layer.c | 132 + .../mqtt_comm_tcpipLite/mqtt_comm_layer.h | 175 + .../mqtt_connection_handler.c | 144 + .../mqtt_connection_handler.h | 71 + .../mqtt/mqtt_core/mqtt_core.c | 1436 ++++++++ .../mqtt/mqtt_core/mqtt_core.h | 409 +++ .../mqtt_exchange_buffer.c | 94 + .../mqtt_exchange_buffer.h | 50 + .../mqtt/mqtt_packetTransfer_interface.c | 61 + .../mqtt/mqtt_packetTransfer_interface.h | 64 + .../mqtt/mqtt_winc_adapter.c | 847 +++++ .../mqtt/mqtt_winc_adapter.h | 294 ++ .../nvmem_hwLibInteraction.c | 84 + .../nvmem_hwLibInteraction.h | 81 + AVRIoT.X/mcc_generated_files/mqtt/readme.md | 1 + .../mcc_generated_files/sensors_handling.c | 55 + .../mcc_generated_files/sensors_handling.h | 34 + AVRIoT.X/mcc_generated_files/src/adc0.c | 178 + AVRIoT.X/mcc_generated_files/src/cpuint.c | 45 + .../mcc_generated_files/src/pin_manager.c | 462 +++ .../mcc_generated_files/src/protected_io.S | 80 + AVRIoT.X/mcc_generated_files/src/rtc.c | 175 + AVRIoT.X/mcc_generated_files/src/spi0.c | 168 + .../mcc_generated_files/src/twi0_master.c | 696 ++++ AVRIoT.X/mcc_generated_files/src/usart2.c | 278 ++ AVRIoT.X/mcc_generated_files/time_service.c | 110 + AVRIoT.X/mcc_generated_files/time_service.h | 44 + .../mcc_generated_files/utils/assembler.h | 39 + .../mcc_generated_files/utils/assembler/gas.h | 106 + .../mcc_generated_files/utils/assembler/iar.h | 94 + AVRIoT.X/mcc_generated_files/utils/atomic.h | 103 + AVRIoT.X/mcc_generated_files/utils/compiler.h | 70 + .../utils/interrupt_avr8.h | 90 + AVRIoT.X/mcc_generated_files/utils/utils.h | 51 + .../mcc_generated_files/utils/utils_assert.h | 62 + .../winc/common/ecc_types.h | 199 ++ .../winc/common/winc_1500_3A0_registers.h | 103 + .../winc/common/winc_debug.h | 73 + .../winc/common/winc_defines.h | 126 + .../winc/common/winc_registers.h | 43 + .../winc/driver/winc_adapter.c | 169 + .../winc/driver/winc_adapter.h | 445 +++ .../winc/driver/winc_asic.c | 493 +++ .../winc/driver/winc_asic.h | 90 + .../winc/driver/winc_drv.c | 120 + .../winc/driver/winc_drv.h | 58 + .../winc/driver/winc_hif.c | 364 +++ .../winc/driver/winc_hif.h | 185 ++ .../winc/driver/winc_spi.c | 700 ++++ .../winc/driver/winc_spi.h | 65 + .../winc/include/conf_winc_defaults.h | 123 + .../mcc_generated_files/winc/include/winc.h | 64 + .../winc/include/winc_legacy.h | 60 + .../mcc_generated_files/winc/m2m/m2m_crypto.c | 1012 ++++++ .../mcc_generated_files/winc/m2m/m2m_crypto.h | 272 ++ .../mcc_generated_files/winc/m2m/m2m_fwinfo.c | 133 + .../mcc_generated_files/winc/m2m/m2m_fwinfo.h | 53 + .../mcc_generated_files/winc/m2m/m2m_ota.c | 555 ++++ .../mcc_generated_files/winc/m2m/m2m_ota.h | 797 +++++ .../mcc_generated_files/winc/m2m/m2m_periph.c | 123 + .../mcc_generated_files/winc/m2m/m2m_periph.h | 195 ++ .../winc/m2m/m2m_socket_host_if.h | 430 +++ .../mcc_generated_files/winc/m2m/m2m_ssl.c | 413 +++ .../mcc_generated_files/winc/m2m/m2m_ssl.h | 357 ++ .../mcc_generated_files/winc/m2m/m2m_types.h | 2815 ++++++++++++++++ .../mcc_generated_files/winc/m2m/m2m_wifi.c | 1575 +++++++++ .../mcc_generated_files/winc/m2m/m2m_wifi.h | 2883 +++++++++++++++++ AVRIoT.X/mcc_generated_files/winc/readme.md | 1 + .../mcc_generated_files/winc/socket/socket.c | 1020 ++++++ .../mcc_generated_files/winc/socket/socket.h | 1516 +++++++++ .../winc/spi_flash/flexible_flash.c | 77 + .../winc/spi_flash/flexible_flash.h | 89 + .../winc/spi_flash/spi_flash.c | 447 +++ .../winc/spi_flash/spi_flash.h | 188 ++ .../winc/spi_flash/spi_flash_map.h | 223 ++ AVRIoT.X/nbproject/Makefile-AWS_IOT.mk | 1278 ++++++++ .../nbproject/Makefile-genesis.properties | 10 + AVRIoT.X/nbproject/Makefile-impl.mk | 69 + AVRIoT.X/nbproject/Makefile-local-AWS_IOT.mk | 37 + AVRIoT.X/nbproject/Makefile-variables.mk | 13 + AVRIoT.X/nbproject/Package-AWS_IOT.bash | 73 + AVRIoT.X/nbproject/configurations.xml | 541 ++++ AVRIoT.X/nbproject/private/configurations.xml | 25 + AVRIoT.X/nbproject/project.xml | 29 + README.md | 349 ++ images/AWS_ShadowUserStory.png | Bin 0 -> 175983 bytes images/Actuators.png | Bin 0 -> 10101 bytes images/DeltaToggle.png | Bin 0 -> 99732 bytes images/DeviceStartUpConsole.png | Bin 0 -> 134807 bytes images/MetaData.png | Bin 0 -> 104474 bytes images/PublishDataToAWS.png | Bin 0 -> 19665 bytes images/SequenceOfEvents.png | Bin 0 -> 72249 bytes images/awsCli.PNG | Bin 0 -> 5471 bytes images/awsConnection.png | Bin 0 -> 96614 bytes images/awsCore.png | Bin 0 -> 48537 bytes images/awsLeverage.png | Bin 0 -> 246437 bytes images/awsSendToCloud.PNG | Bin 0 -> 180610 bytes images/awsSensors.png | Bin 0 -> 25202 bytes images/board.png | Bin 0 -> 85868 bytes images/boardAVR.png | Bin 0 -> 398498 bytes images/boardCallout.png | Bin 0 -> 256822 bytes images/boardPIC.png | Bin 0 -> 384926 bytes images/capturedMetaData.PNG | Bin 0 -> 9033 bytes images/cliMenu.png | Bin 0 -> 26049 bytes images/deviceIdConnect.png | Bin 0 -> 23537 bytes images/eccDevice.png | Bin 0 -> 28592 bytes images/graph.PNG | Bin 0 -> 332736 bytes images/serialSubscribe.png | Bin 0 -> 36001 bytes images/serialWiFi.png | Bin 0 -> 17957 bytes images/softApCredentials.png | Bin 0 -> 154211 bytes images/standardConnect.png | Bin 0 -> 36174 bytes images/subscribeData.png | Bin 0 -> 40765 bytes images/telemetryGraphs.png | Bin 0 -> 81431 bytes images/updateDeviceShadow.png | Bin 0 -> 38234 bytes images/updateShadowOnPushButtonPress.PNG | Bin 0 -> 3305 bytes images/wifiCredentialsWeb.png | Bin 0 -> 40293 bytes images/wifiNotepad.png | Bin 0 -> 17529 bytes images/wifiStatus.png | Bin 0 -> 160313 bytes images/wincModule.png | Bin 0 -> 47173 bytes 271 files changed, 57796 insertions(+) create mode 100644 AVRIoT.X/Makefile create mode 100644 AVRIoT.X/main.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_example.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_example.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/MicrochipDisclaimer create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_bool.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_compiler.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_devtypes.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_status.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/README.md create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_cbc.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_cmac.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_ctr.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_gcm.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_gcm.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/README.md create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/cryptoauthlib.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/cryptoauthlib_config.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_start_config.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_start_iface.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.c create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.h create mode 100644 AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/readme.md create mode 100644 AVRIoT.X/mcc_generated_files/application_manager.c create mode 100644 AVRIoT.X/mcc_generated_files/application_manager.h create mode 100644 AVRIoT.X/mcc_generated_files/banner.h create mode 100644 AVRIoT.X/mcc_generated_files/cli/cli.c create mode 100644 AVRIoT.X/mcc_generated_files/cli/cli.h create mode 100644 AVRIoT.X/mcc_generated_files/cloud/aws_cloud_service.c create mode 100644 AVRIoT.X/mcc_generated_files/cloud/cloud_interface.h create mode 100644 AVRIoT.X/mcc_generated_files/cloud/cloud_service.c create mode 100644 AVRIoT.X/mcc_generated_files/cloud/cloud_service.h create mode 100644 AVRIoT.X/mcc_generated_files/cloud/crypto_client/crypto_client.c create mode 100644 AVRIoT.X/mcc_generated_files/cloud/crypto_client/crypto_client.h create mode 100644 AVRIoT.X/mcc_generated_files/cloud/mqtt_service.c create mode 100644 AVRIoT.X/mcc_generated_files/cloud/mqtt_service.h create mode 100644 AVRIoT.X/mcc_generated_files/cloud/wifi_service.c create mode 100644 AVRIoT.X/mcc_generated_files/cloud/wifi_service.h create mode 100644 AVRIoT.X/mcc_generated_files/config/IoT_Sensor_Node_config.h create mode 100644 AVRIoT.X/mcc_generated_files/config/clock_config.h create mode 100644 AVRIoT.X/mcc_generated_files/config/cloud_config.h create mode 100644 AVRIoT.X/mcc_generated_files/config/conf_winc.h create mode 100644 AVRIoT.X/mcc_generated_files/config/mqtt_config.h create mode 100644 AVRIoT.X/mcc_generated_files/credentials_storage/credentials_storage.c create mode 100644 AVRIoT.X/mcc_generated_files/credentials_storage/credentials_storage.h create mode 100644 AVRIoT.X/mcc_generated_files/debug_print.c create mode 100644 AVRIoT.X/mcc_generated_files/debug_print.h create mode 100644 AVRIoT.X/mcc_generated_files/delay.c create mode 100644 AVRIoT.X/mcc_generated_files/delay.h create mode 100644 AVRIoT.X/mcc_generated_files/device_config.c create mode 100644 AVRIoT.X/mcc_generated_files/docs/mqtt_documentation/MQTT Readme.md create mode 100644 AVRIoT.X/mcc_generated_files/docs/mqtt_documentation/Microchip MQTT Client Library.docx create mode 100644 AVRIoT.X/mcc_generated_files/docs/winc_documentation/WINC1500_IoT_SW_APIs.chm create mode 100644 AVRIoT.X/mcc_generated_files/drivers/i2c_simple_master.c create mode 100644 AVRIoT.X/mcc_generated_files/drivers/i2c_simple_master.h create mode 100644 AVRIoT.X/mcc_generated_files/drivers/spi_master.c create mode 100644 AVRIoT.X/mcc_generated_files/drivers/spi_master.h create mode 100644 AVRIoT.X/mcc_generated_files/drivers/timeout.c create mode 100644 AVRIoT.X/mcc_generated_files/drivers/timeout.h create mode 100644 AVRIoT.X/mcc_generated_files/drivers/uart.c create mode 100644 AVRIoT.X/mcc_generated_files/drivers/uart.h create mode 100644 AVRIoT.X/mcc_generated_files/include/adc0.h create mode 100644 AVRIoT.X/mcc_generated_files/include/ccp.h create mode 100644 AVRIoT.X/mcc_generated_files/include/cpuint.h create mode 100644 AVRIoT.X/mcc_generated_files/include/pin_manager.h create mode 100644 AVRIoT.X/mcc_generated_files/include/port.h create mode 100644 AVRIoT.X/mcc_generated_files/include/protected_io.h create mode 100644 AVRIoT.X/mcc_generated_files/include/rstctrl.h create mode 100644 AVRIoT.X/mcc_generated_files/include/rtc.h create mode 100644 AVRIoT.X/mcc_generated_files/include/spi0.h create mode 100644 AVRIoT.X/mcc_generated_files/include/twi0_master.h create mode 100644 AVRIoT.X/mcc_generated_files/include/usart2.h create mode 100644 AVRIoT.X/mcc_generated_files/led.c create mode 100644 AVRIoT.X/mcc_generated_files/led.h create mode 100644 AVRIoT.X/mcc_generated_files/mcc.c create mode 100644 AVRIoT.X/mcc_generated_files/mcc.h create mode 100644 AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.c create mode 100644 AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.h create mode 100644 AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_tcpipLite/mqtt_comm_layer.c create mode 100644 AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_tcpipLite/mqtt_comm_layer.h create mode 100644 AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_tcpipLite/mqtt_connection_handler.c create mode 100644 AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_tcpipLite/mqtt_connection_handler.h create mode 100644 AVRIoT.X/mcc_generated_files/mqtt/mqtt_core/mqtt_core.c create mode 100644 AVRIoT.X/mcc_generated_files/mqtt/mqtt_core/mqtt_core.h create mode 100644 AVRIoT.X/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.c create mode 100644 AVRIoT.X/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.h create mode 100644 AVRIoT.X/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.c create mode 100644 AVRIoT.X/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.h create mode 100644 AVRIoT.X/mcc_generated_files/mqtt/mqtt_winc_adapter.c create mode 100644 AVRIoT.X/mcc_generated_files/mqtt/mqtt_winc_adapter.h create mode 100644 AVRIoT.X/mcc_generated_files/mqtt/nvmem_abstractionLayer/nvmem_hwLibInteraction.c create mode 100644 AVRIoT.X/mcc_generated_files/mqtt/nvmem_abstractionLayer/nvmem_hwLibInteraction.h create mode 100644 AVRIoT.X/mcc_generated_files/mqtt/readme.md create mode 100644 AVRIoT.X/mcc_generated_files/sensors_handling.c create mode 100644 AVRIoT.X/mcc_generated_files/sensors_handling.h create mode 100644 AVRIoT.X/mcc_generated_files/src/adc0.c create mode 100644 AVRIoT.X/mcc_generated_files/src/cpuint.c create mode 100644 AVRIoT.X/mcc_generated_files/src/pin_manager.c create mode 100644 AVRIoT.X/mcc_generated_files/src/protected_io.S create mode 100644 AVRIoT.X/mcc_generated_files/src/rtc.c create mode 100644 AVRIoT.X/mcc_generated_files/src/spi0.c create mode 100644 AVRIoT.X/mcc_generated_files/src/twi0_master.c create mode 100644 AVRIoT.X/mcc_generated_files/src/usart2.c create mode 100644 AVRIoT.X/mcc_generated_files/time_service.c create mode 100644 AVRIoT.X/mcc_generated_files/time_service.h create mode 100644 AVRIoT.X/mcc_generated_files/utils/assembler.h create mode 100644 AVRIoT.X/mcc_generated_files/utils/assembler/gas.h create mode 100644 AVRIoT.X/mcc_generated_files/utils/assembler/iar.h create mode 100644 AVRIoT.X/mcc_generated_files/utils/atomic.h create mode 100644 AVRIoT.X/mcc_generated_files/utils/compiler.h create mode 100644 AVRIoT.X/mcc_generated_files/utils/interrupt_avr8.h create mode 100644 AVRIoT.X/mcc_generated_files/utils/utils.h create mode 100644 AVRIoT.X/mcc_generated_files/utils/utils_assert.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/common/ecc_types.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/common/winc_1500_3A0_registers.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/common/winc_debug.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/common/winc_defines.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/common/winc_registers.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/driver/winc_adapter.c create mode 100644 AVRIoT.X/mcc_generated_files/winc/driver/winc_adapter.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/driver/winc_asic.c create mode 100644 AVRIoT.X/mcc_generated_files/winc/driver/winc_asic.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/driver/winc_drv.c create mode 100644 AVRIoT.X/mcc_generated_files/winc/driver/winc_drv.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/driver/winc_hif.c create mode 100644 AVRIoT.X/mcc_generated_files/winc/driver/winc_hif.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/driver/winc_spi.c create mode 100644 AVRIoT.X/mcc_generated_files/winc/driver/winc_spi.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/include/conf_winc_defaults.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/include/winc.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/include/winc_legacy.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/m2m/m2m_crypto.c create mode 100644 AVRIoT.X/mcc_generated_files/winc/m2m/m2m_crypto.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/m2m/m2m_fwinfo.c create mode 100644 AVRIoT.X/mcc_generated_files/winc/m2m/m2m_fwinfo.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/m2m/m2m_ota.c create mode 100644 AVRIoT.X/mcc_generated_files/winc/m2m/m2m_ota.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/m2m/m2m_periph.c create mode 100644 AVRIoT.X/mcc_generated_files/winc/m2m/m2m_periph.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/m2m/m2m_socket_host_if.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/m2m/m2m_ssl.c create mode 100644 AVRIoT.X/mcc_generated_files/winc/m2m/m2m_ssl.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/m2m/m2m_types.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/m2m/m2m_wifi.c create mode 100644 AVRIoT.X/mcc_generated_files/winc/m2m/m2m_wifi.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/readme.md create mode 100644 AVRIoT.X/mcc_generated_files/winc/socket/socket.c create mode 100644 AVRIoT.X/mcc_generated_files/winc/socket/socket.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/spi_flash/flexible_flash.c create mode 100644 AVRIoT.X/mcc_generated_files/winc/spi_flash/flexible_flash.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/spi_flash/spi_flash.c create mode 100644 AVRIoT.X/mcc_generated_files/winc/spi_flash/spi_flash.h create mode 100644 AVRIoT.X/mcc_generated_files/winc/spi_flash/spi_flash_map.h create mode 100644 AVRIoT.X/nbproject/Makefile-AWS_IOT.mk create mode 100644 AVRIoT.X/nbproject/Makefile-genesis.properties create mode 100644 AVRIoT.X/nbproject/Makefile-impl.mk create mode 100644 AVRIoT.X/nbproject/Makefile-local-AWS_IOT.mk create mode 100644 AVRIoT.X/nbproject/Makefile-variables.mk create mode 100644 AVRIoT.X/nbproject/Package-AWS_IOT.bash create mode 100644 AVRIoT.X/nbproject/configurations.xml create mode 100644 AVRIoT.X/nbproject/private/configurations.xml create mode 100644 AVRIoT.X/nbproject/project.xml create mode 100644 images/AWS_ShadowUserStory.png create mode 100644 images/Actuators.png create mode 100644 images/DeltaToggle.png create mode 100644 images/DeviceStartUpConsole.png create mode 100644 images/MetaData.png create mode 100644 images/PublishDataToAWS.png create mode 100644 images/SequenceOfEvents.png create mode 100644 images/awsCli.PNG create mode 100644 images/awsConnection.png create mode 100644 images/awsCore.png create mode 100644 images/awsLeverage.png create mode 100644 images/awsSendToCloud.PNG create mode 100644 images/awsSensors.png create mode 100644 images/board.png create mode 100644 images/boardAVR.png create mode 100644 images/boardCallout.png create mode 100644 images/boardPIC.png create mode 100644 images/capturedMetaData.PNG create mode 100644 images/cliMenu.png create mode 100644 images/deviceIdConnect.png create mode 100644 images/eccDevice.png create mode 100644 images/graph.PNG create mode 100644 images/serialSubscribe.png create mode 100644 images/serialWiFi.png create mode 100644 images/softApCredentials.png create mode 100644 images/standardConnect.png create mode 100644 images/subscribeData.png create mode 100644 images/telemetryGraphs.png create mode 100644 images/updateDeviceShadow.png create mode 100644 images/updateShadowOnPushButtonPress.PNG create mode 100644 images/wifiCredentialsWeb.png create mode 100644 images/wifiNotepad.png create mode 100644 images/wifiStatus.png create mode 100644 images/wincModule.png diff --git a/AVRIoT.X/Makefile b/AVRIoT.X/Makefile new file mode 100644 index 0000000..fca8e2c --- /dev/null +++ b/AVRIoT.X/Makefile @@ -0,0 +1,113 @@ +# +# There exist several targets which are by default empty and which can be +# used for execution of your targets. These targets are usually executed +# before and after some main targets. They are: +# +# .build-pre: called before 'build' target +# .build-post: called after 'build' target +# .clean-pre: called before 'clean' target +# .clean-post: called after 'clean' target +# .clobber-pre: called before 'clobber' target +# .clobber-post: called after 'clobber' target +# .all-pre: called before 'all' target +# .all-post: called after 'all' target +# .help-pre: called before 'help' target +# .help-post: called after 'help' target +# +# Targets beginning with '.' are not intended to be called on their own. +# +# Main targets can be executed directly, and they are: +# +# build build a specific configuration +# clean remove built files from a configuration +# clobber remove all built files +# all build all configurations +# help print help mesage +# +# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and +# .help-impl are implemented in nbproject/makefile-impl.mk. +# +# Available make variables: +# +# CND_BASEDIR base directory for relative paths +# CND_DISTDIR default top distribution directory (build artifacts) +# CND_BUILDDIR default top build directory (object files, ...) +# CONF name of current configuration +# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration) +# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration) +# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration) +# CND_PACKAGE_DIR_${CONF} directory of package (current configuration) +# CND_PACKAGE_NAME_${CONF} name of package (current configuration) +# CND_PACKAGE_PATH_${CONF} path to package (current configuration) +# +# NOCDDL + + +# Environment +MKDIR=mkdir +CP=cp +CCADMIN=CCadmin +RANLIB=ranlib + + +# build +build: .build-post + +.build-pre: +# Add your pre 'build' code here... + +.build-post: .build-impl +# Add your post 'build' code here... + + +# clean +clean: .clean-post + +.clean-pre: +# Add your pre 'clean' code here... +# WARNING: the IDE does not call this target since it takes a long time to +# simply run make. Instead, the IDE removes the configuration directories +# under build and dist directly without calling make. +# This target is left here so people can do a clean when running a clean +# outside the IDE. + +.clean-post: .clean-impl +# Add your post 'clean' code here... + + +# clobber +clobber: .clobber-post + +.clobber-pre: +# Add your pre 'clobber' code here... + +.clobber-post: .clobber-impl +# Add your post 'clobber' code here... + + +# all +all: .all-post + +.all-pre: +# Add your pre 'all' code here... + +.all-post: .all-impl +# Add your post 'all' code here... + + +# help +help: .help-post + +.help-pre: +# Add your pre 'help' code here... + +.help-post: .help-impl +# Add your post 'help' code here... + + + +# include project implementation makefile +include nbproject/Makefile-impl.mk + +# include project make variables +include nbproject/Makefile-variables.mk diff --git a/AVRIoT.X/main.c b/AVRIoT.X/main.c new file mode 100644 index 0000000..7b9d198 --- /dev/null +++ b/AVRIoT.X/main.c @@ -0,0 +1,36 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include "mcc_generated_files/application_manager.h" + +int main(void) +{ + application_init(); + + while (1) + { + runScheduler(); + } + + return 0; +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_example.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_example.c new file mode 100644 index 0000000..ea1a448 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_example.c @@ -0,0 +1,83 @@ +/* + + * \file + * \brief CryptoAuthLib Basic API methods - a simple crypto authentication API. + * These methods manage a global ATCADevice object behind the scenes. They also + * manage the wake/idle state transitions so callers don't need to. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. +*/ + +#include "CryptoAuth_example.h" +#include +#include +#include + + +void CryptoAuth_Example(void){ + + uint8_t random_number[32]; + uint8_t serial_number[9]; + int i = 0; + int j = 0; + int loop = 10; + + while(loop--) + { + atcab_read_serial_number(serial_number); + + printf("Serial Number: \r\n"); + + while (i < 9) { + printf("%02X ", serial_number[i]); + i++; + } + printf("\r\n"); + printf("\r\n"); + + i = 0; + + atcab_random(random_number); + + printf("Generated 32-byte Random Number: \r\n"); + + while (i < 32) { + while (j < 4) { + printf("0x%02X ", random_number[i]); + j++; + i++; + } + printf("\r\n"); + j = 0; + } + printf("\r\n"); + i = 0; + j = 0; + + } + + + printf("\r\n"); + +} + diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_example.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_example.h new file mode 100644 index 0000000..336fdf1 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_example.h @@ -0,0 +1,34 @@ +/* + + * \file + * \brief CryptoAuthLib Basic API methods - a simple crypto authentication API. + * These methods manage a global ATCADevice object behind the scenes. They also + * manage the wake/idle state transitions so callers don't need to. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. +*/ + +#include "../cryptoauthlib_config.h" +#include "../CryptoAuthenticationLibrary/cryptoauthlib.h" + +void CryptoAuth_Example(void); diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.c new file mode 100644 index 0000000..712c2c1 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.c @@ -0,0 +1,63 @@ +/* + + * \file + * \brief CryptoAuthLib Basic API methods - a simple crypto authentication API. + * These methods manage a global ATCADevice object behind the scenes. They also + * manage the wake/idle state transitions so callers don't need to. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. +*/ + +#include +#include "CryptoAuth_init.h" + +struct atca_command _gmyCommand; +struct atca_iface _gmyIface; +struct atca_device _gMyDevice = {&_gmyCommand, &_gmyIface}; + +ATCAIfaceCfg secureCfg = { + .iface_type = ATCA_I2C_IFACE, + .devtype = ATECC608A, + .atcai2c.slave_address = 0xB0, + .atcai2c.bus = 2, + .atcai2c.baud = 100000, + .wake_delay = 1560, + .rx_retries = 20 +}; + + +bool CryptoAuth_Initialize(void) +{ + uint8_t calInitialzeStatus; + calInitialzeStatus = atcab_init(&secureCfg); + if (calInitialzeStatus != ATCA_SUCCESS) + { + return false; + } + else + { + atcab_lock_data_slot(0); + return true; + } +} + diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.h new file mode 100644 index 0000000..e615d34 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.h @@ -0,0 +1,35 @@ +/* + + * \file + * \brief CryptoAuthLib Basic API methods - a simple crypto authentication API. + * These methods manage a global ATCADevice object behind the scenes. They also + * manage the wake/idle state transitions so callers don't need to. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. +*/ + +#include +#include "cryptoauthlib_config.h" +#include "CryptoAuthenticationLibrary/cryptoauthlib.h" + +bool CryptoAuth_Initialize(void); diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/MicrochipDisclaimer b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/MicrochipDisclaimer new file mode 100644 index 0000000..ac75260 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/MicrochipDisclaimer @@ -0,0 +1,27 @@ + + * \file + * \brief CryptoAuthLib Basic API methods - a simple crypto authentication API. + * These methods manage a global ATCADevice object behind the scenes. They also + * manage the wake/idle state transitions so callers don't need to. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_bool.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_bool.h new file mode 100644 index 0000000..47d800d --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_bool.h @@ -0,0 +1,43 @@ +/** + * \file + * + * \brief bool define for systems that don't have it + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef _ATCA_BOOL_H +#define _ATCA_BOOL_H + +#if defined(_MSC_VER) && (_MSC_VER <= 1700) +// VS2012 and earlier don't support stdbool.h + #ifndef __cplusplus + #define bool unsigned char + #define false 0 + #define true 1 + #endif +#else + #include +#endif + +#endif \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.c new file mode 100644 index 0000000..3002e2a --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.c @@ -0,0 +1,126 @@ +/** + * \file + * \brief a set of default configurations for various ATCA devices and interfaces + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include +#include "atca_cfgs.h" +#include "atca_iface.h" +#include "atca_device.h" + +/** \defgroup config Configuration (cfg_) + * \brief Logical device configurations describe the CryptoAuth device type and logical interface. + @{ */ + +/* if the number of these configurations grows large, we can #ifdef them based on required device support */ + +/** \brief default configuration for an ECCx08A device */ +ATCAIfaceCfg cfg_ateccx08a_i2c_default = { + .iface_type = ATCA_I2C_IFACE, + .devtype = ATECC508A, + .atcai2c.slave_address = 0xC0, + .atcai2c.bus = 2, + .atcai2c.baud = 400000, + //.atcai2c.baud = 100000, + .wake_delay = 1500, + .rx_retries = 20 +}; + +/** \brief default configuration for an ECCx08A device on the logical SWI bus over UART*/ +ATCAIfaceCfg cfg_ateccx08a_swi_default = { + .iface_type = ATCA_SWI_IFACE, + .devtype = ATECC508A, + .atcaswi.bus = 4, + .wake_delay = 1500, + .rx_retries = 10 +}; + +/** \brief default configuration for Kit protocol over the device's async interface */ +ATCAIfaceCfg cfg_ateccx08a_kitcdc_default = { + .iface_type = ATCA_UART_IFACE, + .devtype = ATECC508A, + .atcauart.port = 0, + .atcauart.baud = 115200, + .atcauart.wordsize = 8, + .atcauart.parity = 2, + .atcauart.stopbits = 1, + .rx_retries = 1, +}; + +/** \brief default configuration for Kit protocol over the device's async interface */ +ATCAIfaceCfg cfg_ateccx08a_kithid_default = { + .iface_type = ATCA_HID_IFACE, + .devtype = ATECC508A, + .atcahid.idx = 0, + .atcahid.vid = 0x03EB, + .atcahid.pid = 0x2312, + .atcahid.packetsize = 64, + .atcahid.guid = { 0x4d, 0x1e, 0x55, 0xb2, 0xf1, 0x6f, 0x11, 0xcf, 0x88, 0xcb, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 }, +}; + +/** \brief default configuration for a SHA204A device on the first logical I2C bus */ +ATCAIfaceCfg cfg_atsha204a_i2c_default = { + .iface_type = ATCA_I2C_IFACE, + .devtype = ATSHA204A, + .atcai2c.slave_address = 0xC8, + .atcai2c.bus = 2, + .atcai2c.baud = 400000, + .wake_delay = 2560, + .rx_retries = 20 +}; + +/** \brief default configuration for an SHA204A device on the logical SWI bus over UART*/ +ATCAIfaceCfg cfg_atsha204a_swi_default = { + .iface_type = ATCA_SWI_IFACE, + .devtype = ATSHA204A, + .atcaswi.bus = 4, + .wake_delay = 2560, + .rx_retries = 10 +}; + +/** \brief default configuration for Kit protocol over the device's async interface */ +ATCAIfaceCfg cfg_atsha204a_kitcdc_default = { + .iface_type = ATCA_UART_IFACE, + .devtype = ATSHA204A, + .atcauart.port = 0, + .atcauart.baud = 115200, + .atcauart.wordsize = 8, + .atcauart.parity = 2, + .atcauart.stopbits = 1, + .rx_retries = 1, +}; + +/** \brief default configuration for Kit protocol over the device's async interface */ +ATCAIfaceCfg cfg_atsha204a_kithid_default = { + .iface_type = ATCA_HID_IFACE, + .devtype = ATSHA204A, + .atcahid.idx = 0, + .atcahid.vid = 0x03EB, + .atcahid.pid = 0x2312, + .atcahid.packetsize = 64, + .atcahid.guid = { 0x4d, 0x1e, 0x55, 0xb2, 0xf1, 0x6f, 0x11, 0xcf, 0x88, 0xcb, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 }, +}; + +/** @} */ diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.h new file mode 100644 index 0000000..49d5167 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.h @@ -0,0 +1,67 @@ +/** + * \file + * \brief a set of default configurations for various ATCA devices and interfaces + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#ifndef ATCA_CFGS_H_ +#define ATCA_CFGS_H_ + +#include "atca_iface.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/** \brief default configuration for an ECCx08A device on the first logical I2C bus */ +extern ATCAIfaceCfg cfg_ateccx08a_i2c_default; + +/** \brief default configuration for an ECCx08A device on the logical SWI bus over UART*/ +extern ATCAIfaceCfg cfg_ateccx08a_swi_default; + +/** \brief default configuration for Kit protocol over a CDC interface */ +extern ATCAIfaceCfg cfg_ateccx08a_kitcdc_default; + +/** \brief default configuration for Kit protocol over a HID interface */ +extern ATCAIfaceCfg cfg_ateccx08a_kithid_default; + + +/** \brief default configuration for a SHA204A device on the first logical I2C bus */ +extern ATCAIfaceCfg cfg_atsha204a_i2c_default; + +/** \brief default configuration for an SHA204A device on the logical SWI bus over UART*/ +extern ATCAIfaceCfg cfg_atsha204a_swi_default; + +/** \brief default configuration for Kit protocol over a CDC interface */ +extern ATCAIfaceCfg cfg_atsha204a_kitcdc_default; + +/** \brief default configuration for Kit protocol over a HID interface for SHA204 */ +extern ATCAIfaceCfg cfg_atsha204a_kithid_default; + +#ifdef __cplusplus +} +#endif +#endif /* ATCA_CFGS_H_ */ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.c new file mode 100644 index 0000000..036625a --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.c @@ -0,0 +1,765 @@ +/** + * \file + * \brief Microchip CryptoAuthentication device command builder - this is the main object that builds the command + * byte strings for the given device. It does not execute the command. The basic flow is to call + * a command method to build the command you want given the parameters and then send that byte string + * through the device interface. + * + * The primary goal of the command builder is to wrap the given parameters with the correct packet size and CRC. + * The caller should first fill in the parameters required in the ATCAPacket parameter given to the command. + * The command builder will deal with the mechanics of creating a valid packet using the parameter information. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include +#include +#include "atca_command.h" +#include "atca_devtypes.h" + +/** \brief ATCACommand CheckMAC method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS + */ +ATCA_STATUS atCheckMAC(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + packet->opcode = ATCA_CHECKMAC; + packet->txsize = CHECKMAC_COUNT; + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand Counter method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atCounter(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + packet->opcode = ATCA_COUNTER; + packet->txsize = COUNTER_COUNT; + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand DeriveKey method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \param[in] has_mac hasMAC determines if MAC data is present in the packet input + * \return ATCA_SUCCESS + */ +ATCA_STATUS atDeriveKey(ATCACommand ca_cmd, ATCAPacket *packet, bool has_mac) +{ + // Set the opcode & parameters + packet->opcode = ATCA_DERIVE_KEY; + + // hasMAC must be given since the packet does not have any implicit information to + // know if it has a mac or not unless the size is preset + if (has_mac) + { + packet->txsize = DERIVE_KEY_COUNT_LARGE; + } + else + { + packet->txsize = DERIVE_KEY_COUNT_SMALL; + } + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand ECDH method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS + */ +ATCA_STATUS atECDH(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + packet->opcode = ATCA_ECDH; + packet->txsize = ECDH_COUNT; + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand Generate Digest method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \param[in] is_no_mac_key Should be true if GenDig is being run on a slot that has its SlotConfig.NoMac bit set + * \return ATCA_SUCCESS + */ +ATCA_STATUS atGenDig(ATCACommand ca_cmd, ATCAPacket *packet, bool is_no_mac_key) +{ + // Set the opcode & parameters + packet->opcode = ATCA_GENDIG; + + if (packet->param1 == GENDIG_ZONE_SHARED_NONCE) // shared nonce mode + { + packet->txsize = GENDIG_COUNT + 32; + } + else if (is_no_mac_key) + { + packet->txsize = GENDIG_COUNT + 4; // noMac keys use 4 bytes of OtherData in calculation + } + else + { + packet->txsize = GENDIG_COUNT; + } + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand Generate Key method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS + */ +ATCA_STATUS atGenKey(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + packet->opcode = ATCA_GENKEY; + + if (packet->param1 & GENKEY_MODE_PUBKEY_DIGEST) + { + packet->txsize = GENKEY_COUNT_DATA; + } + else + { + packet->txsize = GENKEY_COUNT; + } + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand HMAC method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS + */ +ATCA_STATUS atHMAC(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + packet->opcode = ATCA_HMAC; + packet->txsize = HMAC_COUNT; + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand Info method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS + */ +ATCA_STATUS atInfo(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + packet->opcode = ATCA_INFO; + packet->txsize = INFO_COUNT; + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand Lock method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS + */ +ATCA_STATUS atLock(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + packet->opcode = ATCA_LOCK; + packet->txsize = LOCK_COUNT; + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand MAC method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS + */ +ATCA_STATUS atMAC(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + // variable packet size + packet->opcode = ATCA_MAC; + if (!(packet->param1 & MAC_MODE_BLOCK2_TEMPKEY)) + { + packet->txsize = MAC_COUNT_LONG; + } + else + { + packet->txsize = MAC_COUNT_SHORT; + } + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand Nonce method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atNonce(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + // variable packet size + uint8_t calc_mode = packet->param1 & NONCE_MODE_MASK; + + packet->opcode = ATCA_NONCE; + + if ((calc_mode == NONCE_MODE_SEED_UPDATE || calc_mode == NONCE_MODE_NO_SEED_UPDATE)) + { + // Calculated nonce mode, 20 byte NumInm + packet->txsize = NONCE_COUNT_SHORT; + } + else if (calc_mode == NONCE_MODE_PASSTHROUGH) + { + // PAss-through nonce mode + if ((packet->param1 & NONCE_MODE_INPUT_LEN_MASK) == NONCE_MODE_INPUT_LEN_64) + { + // 64 byte NumIn + packet->txsize = NONCE_COUNT_LONG_64; + } + else + { + // 32 byte NumIn + packet->txsize = NONCE_COUNT_LONG; + } + } + else + { + return ATCA_BAD_PARAM; + } + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand Pause method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS + */ +ATCA_STATUS atPause(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + packet->opcode = ATCA_PAUSE; + packet->txsize = PAUSE_COUNT; + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand PrivWrite method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS + */ +ATCA_STATUS atPrivWrite(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + packet->opcode = ATCA_PRIVWRITE; + packet->txsize = PRIVWRITE_COUNT; + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand Random method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS + */ +ATCA_STATUS atRandom(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + packet->opcode = ATCA_RANDOM; + packet->txsize = RANDOM_COUNT; + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand Read method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS + */ +ATCA_STATUS atRead(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + packet->opcode = ATCA_READ; + packet->txsize = READ_COUNT; + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand SecureBoot method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS + */ +ATCA_STATUS atSecureBoot(ATCACommand ca_cmd, ATCAPacket *packet) +{ + packet->opcode = ATCA_SECUREBOOT; + packet->txsize = ATCA_CMD_SIZE_MIN; + + //variable transmit size based on mode encoding + switch (packet->param1 & SECUREBOOT_MODE_MASK) + { + case SECUREBOOT_MODE_FULL: + case SECUREBOOT_MODE_FULL_COPY: + packet->txsize += (SECUREBOOT_DIGEST_SIZE + SECUREBOOT_SIGNATURE_SIZE); + break; + + case SECUREBOOT_MODE_FULL_STORE: + packet->txsize += SECUREBOOT_DIGEST_SIZE; + break; + + default: + return ATCA_BAD_PARAM; + break; + } + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand SHA method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \param[in] write_context_size the length of the sha write_context data + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atSHA(ATCACommand ca_cmd, ATCAPacket *packet, uint16_t write_context_size) +{ + // Set the opcode & parameters + packet->opcode = ATCA_SHA; + + switch (packet->param1 & SHA_MODE_MASK) + { + case SHA_MODE_SHA256_START: // START + case SHA_MODE_HMAC_START: + case SHA_MODE_SHA256_PUBLIC: + packet->txsize = ATCA_CMD_SIZE_MIN; + break; + + case SHA_MODE_SHA256_UPDATE: // UPDATE + packet->txsize = ATCA_CMD_SIZE_MIN + packet->param2; + break; + + case SHA_MODE_SHA256_END: // END + case SHA_MODE_HMAC_END: + // check the given packet for a size variable in param2. If it is > 0, it should + // be 0-63, incorporate that size into the packet + packet->txsize = ATCA_CMD_SIZE_MIN + packet->param2; + break; + + case SHA_MODE_READ_CONTEXT: + packet->txsize = ATCA_CMD_SIZE_MIN; + break; + + case SHA_MODE_WRITE_CONTEXT: + packet->txsize = ATCA_CMD_SIZE_MIN + write_context_size; + break; + + default: + return ATCA_BAD_PARAM; + } + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand Sign method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS + */ +ATCA_STATUS atSign(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + packet->opcode = ATCA_SIGN; + packet->txsize = SIGN_COUNT; + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand UpdateExtra method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS + */ +ATCA_STATUS atUpdateExtra(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + packet->opcode = ATCA_UPDATE_EXTRA; + packet->txsize = UPDATE_COUNT; + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand ECDSA Verify method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atVerify(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + packet->opcode = ATCA_VERIFY; + + // variable packet size based on mode + switch (packet->param1 & VERIFY_MODE_MASK) + { + case VERIFY_MODE_STORED: + packet->txsize = VERIFY_256_STORED_COUNT; + break; + + case VERIFY_MODE_VALIDATE_EXTERNAL: + packet->txsize = VERIFY_256_EXTERNAL_COUNT; + break; + + case VERIFY_MODE_EXTERNAL: + packet->txsize = VERIFY_256_EXTERNAL_COUNT; + break; + + case VERIFY_MODE_VALIDATE: + case VERIFY_MODE_INVALIDATE: + packet->txsize = VERIFY_256_VALIDATE_COUNT; + break; + + default: + return ATCA_BAD_PARAM; + } + + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand Write method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \param[in] has_mac Flag to indicate whether a mac is present or not + * \return ATCA_SUCCESS + */ +ATCA_STATUS atWrite(ATCACommand ca_cmd, ATCAPacket *packet, bool has_mac) +{ + // Set the opcode & parameters + packet->opcode = ATCA_WRITE; + + packet->txsize = 7; + if (packet->param1 & ATCA_ZONE_READWRITE_32) + { + packet->txsize += ATCA_BLOCK_SIZE; + } + else + { + packet->txsize += ATCA_WORD_SIZE; + } + if (has_mac) + { + packet->txsize += WRITE_MAC_SIZE; + } + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand AES method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS + */ +ATCA_STATUS atAES(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + packet->opcode = ATCA_AES; + packet->txsize = ATCA_CMD_SIZE_MIN; + + if ((packet->param1 & AES_MODE_OP_MASK) == AES_MODE_GFM) + { + packet->txsize += ATCA_AES_GFM_SIZE; + } + else + { + packet->txsize += AES_DATA_SIZE; + } + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief ATCACommand AES method + * \param[in] ca_cmd instance + * \param[in] packet pointer to the packet containing the command being built + * \return ATCA_SUCCESS + */ +ATCA_STATUS atSelfTest(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + packet->opcode = ATCA_SELFTEST; + packet->txsize = ATCA_CMD_SIZE_MIN; + atCalcCrc(packet); + return ATCA_SUCCESS; +} + + + +/** \brief ATCACommand KDF method + * \param[in] ca_cmd Instance + * \param[in] packet Pointer to the packet containing the command being + * built. + * \return ATCA_SUCCESS + */ +ATCA_STATUS atKDF(ATCACommand ca_cmd, ATCAPacket *packet) +{ + // Set the opcode & parameters + packet->opcode = ATCA_KDF; + + // Set TX size + if ((packet->param1 & KDF_MODE_ALG_MASK) == KDF_MODE_ALG_AES) + { + // AES algorithm has a fixed message size + packet->txsize = ATCA_CMD_SIZE_MIN + KDF_DETAILS_SIZE + AES_DATA_SIZE; + } + else + { + // All other algorithms encode message size in the last byte of details + packet->txsize = ATCA_CMD_SIZE_MIN + KDF_DETAILS_SIZE + packet->data[3]; + } + atCalcCrc(packet); + return ATCA_SUCCESS; +} + +/** \brief Initializer for ATCACommand + * \param[in] device_type Specifies which set of commands and execution times + * should be associated with this command object. + * \param[in] ca_cmd Pre-allocated command structure to initialize. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS initATCACommand(ATCADeviceType device_type, ATCACommand ca_cmd) +{ + if (ca_cmd == NULL) + { + return ATCA_BAD_PARAM; + } + + ca_cmd->dt = device_type; + ca_cmd->clock_divider = 0; + + return ATCA_SUCCESS; +} + +#ifndef ATCA_NO_HEAP +/** \brief constructor for ATCACommand + * \param[in] device_type Specifies which set of commands and execution times + * should be associated with this command object. + * \return Initialized object on success. NULL on failure. + */ +ATCACommand newATCACommand(ATCADeviceType device_type) +{ + ATCACommand ca_cmd; + ATCA_STATUS status; + + ca_cmd = (ATCACommand)malloc(sizeof(*ca_cmd)); + status = initATCACommand(device_type, ca_cmd); + if (status != ATCA_SUCCESS) + { + free(ca_cmd); + ca_cmd = NULL; + return NULL; + } + + return ca_cmd; +} +#endif + +#ifndef ATCA_NO_HEAP +/** \brief ATCACommand destructor + * \param[in] ca_cmd instance of a command object + */ +void deleteATCACommand(ATCACommand *ca_cmd) +{ + if (ca_cmd == NULL) + { + return; + } + + free(*ca_cmd); + *ca_cmd = NULL; +} +#endif + +/** \brief Calculates CRC over the given raw data and returns the CRC in + * little-endian byte order. + * + * \param[in] length Size of data not including the CRC byte positions + * \param[in] data Pointer to the data over which to compute the CRC + * \param[out] crc_le Pointer to the place where the two-bytes of CRC will be + * returned in little-endian byte order. + */ +void atCRC(size_t length, const uint8_t *data, uint8_t *crc_le) +{ + size_t counter; + uint16_t crc_register = 0; + uint16_t polynom = 0x8005; + uint8_t shift_register; + uint8_t data_bit, crc_bit; + + for (counter = 0; counter < length; counter++) + { + for (shift_register = 0x01; shift_register > 0x00; shift_register <<= 1) + { + data_bit = (data[counter] & shift_register) ? 1 : 0; + crc_bit = crc_register >> 15; + crc_register <<= 1; + if (data_bit != crc_bit) + { + crc_register ^= polynom; + } + } + } + crc_le[0] = (uint8_t)(crc_register & 0x00FF); + crc_le[1] = (uint8_t)(crc_register >> 8); +} + + +/** \brief This function calculates CRC and adds it to the correct offset in the packet data + * \param[in] packet Packet to calculate CRC data for + */ + +void atCalcCrc(ATCAPacket *packet) +{ + uint8_t length, *crc; + + length = packet->txsize - ATCA_CRC_SIZE; + // computer pointer to CRC in the packet + crc = &(packet->txsize) + length; + + // stuff CRC into packet + atCRC(length, &(packet->txsize), crc); +} + + +/** \brief This function checks the consistency of a response. + * \param[in] response pointer to response + * \return ATCA_SUCCESS on success, otherwise ATCA_RX_CRC_ERROR + */ + +ATCA_STATUS atCheckCrc(const uint8_t *response) +{ + uint8_t crc[ATCA_CRC_SIZE]; + uint8_t count = response[ATCA_COUNT_IDX]; + + count -= ATCA_CRC_SIZE; + atCRC(count, response, crc); + + return (crc[0] == response[count] && crc[1] == response[count + 1]) ? ATCA_SUCCESS : ATCA_RX_CRC_ERROR; +} + + +/** \brief determines if a given device type is a SHA device or a superset of a SHA device + * \param[in] device_type Type of device to check for family type + * \return boolean indicating whether the given device is a SHA family device. + */ + +bool atIsSHAFamily(ATCADeviceType device_type) +{ + switch (device_type) + { + case ATSHA204A: + case ATECC108A: + case ATECC508A: + case ATECC608A: + return true; + break; + + default: + return false; + break; + } +} + +/** \brief determines if a given device type is an ECC device or a superset of a ECC device + * \param[in] device_type Type of device to check for family type + * \return boolean indicating whether the given device is an ECC family device. + */ +bool atIsECCFamily(ATCADeviceType device_type) +{ + switch (device_type) + { + case ATECC108A: + case ATECC508A: + case ATECC608A: + return true; + break; + default: + return false; + break; + } +} + +/** \brief checks for basic error frame in data + * \param[in] data pointer to received data - expected to be in the form of a CA device response frame + * \return ATCA_SUCCESS on success, otherwise an error code. + */ + +ATCA_STATUS isATCAError(uint8_t *data) +{ + if (data[0] == 0x04) // error packets are always 4 bytes long + { + switch (data[1]) + { + case 0x00: //No Error + return ATCA_SUCCESS; + case 0x01: // checkmac or verify failed + return ATCA_CHECKMAC_VERIFY_FAILED; + break; + case 0x03: // command received byte length, opcode or parameter was illegal + return ATCA_PARSE_ERROR; + break; + case 0x05: // computation error during ECC processing causing invalid results + return ATCA_STATUS_ECC; + break; + case 0x07: // chip is in self test failure mode + return ATCA_STATUS_SELFTEST_ERROR; + break; + case 0x08: //random number generator health test error + return ATCA_HEALTH_TEST_ERROR; + case 0x0f: // chip can't execute the command + return ATCA_EXECUTION_ERROR; + break; + case 0x11: // chip was successfully woken up + return ATCA_WAKE_SUCCESS; + break; + case 0xff: // bad crc found (command not properly received by device) or other comm error + return ATCA_STATUS_CRC; + break; + default: + return ATCA_GEN_FAIL; + break; + } + } + else + { + return ATCA_SUCCESS; + } +} + +/** @} */ diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.h new file mode 100644 index 0000000..1ad6f96 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.h @@ -0,0 +1,762 @@ +/** + * \file + * \brief Microchip Crypto Auth device command object - this is a command builder only, it does + * not send the command. The result of a command method is a fully formed packet, ready to send + * to the ATCAIFace object to dispatch. + * + * This command object supports the ATSHA and ATECC device family. + * The command list is a superset of all device commands for this family. The command object + * differentiates the packet contents based on specific device type within the family. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef ATCA_COMMAND_H +#define ATCA_COMMAND_H + +#include "atca_compiler.h" +#include "atca_status.h" +#include "atca_devtypes.h" +#include "cryptoauthlib_config.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup command ATCACommand (atca_) + \brief CryptoAuthLib command builder object, ATCACommand. Member functions for the ATCACommand object. + @{ */ + +/** \brief atca_command is the C object backing ATCACommand. + */ +struct atca_command +{ + ATCADeviceType dt; + uint8_t clock_divider; + uint16_t execution_time_msec; +}; + +/*--- ATCACommand ---------*/ +typedef struct atca_command* ATCACommand; + +ATCA_STATUS initATCACommand(ATCADeviceType device_type, ATCACommand ca_cmd); +ATCACommand newATCACommand(ATCADeviceType device_type); +void deleteATCACommand(ATCACommand *ca_cmd); + +/* add ATCACommand declarations here + * + * since these are still C functions, not classes, naming is an important + * consideration to keep the namespace from colliding with other 3rd party + * libraries or even ourselves/ASF. + * + * Basic conventions: + * all methods start with the prefix 'at' + * all method names must be unique, obviously + * all method implementations should be proceeded by their Doxygen comment header + * + **/ + + +// this is the ATCACommand parameter structure. The caller to the command method must +// initialize param1, param2 and data if appropriate. The command method will fill in the rest +// and initialize the packet so it's ready to send via the ATCAIFace. +// this particular structure mimics the ATSHA and ATECC family device's command structures + +// Note: pack @ 2 is required, @ 1 causes word alignment crash (though it should not), a known bug in GCC. +// @2, the wire still has the intended byte alignment with arm-eabi. this is likely the least portable part of atca +#if defined(__XC16__)||defined(__XC32__) +#pragma pack( push, ATCAPacket, 2 ) +#endif + +/** \brief an ATCA packet structure. This is a superset of the packet transmitted on the wire. It's also + * used as a buffer for receiving the response + */ +typedef struct +{ + + // used for transmit/send + uint8_t _reserved; // used by HAL layer as needed (I/O tokens, Word address values) + + //--- start of packet i/o frame---- + uint8_t txsize; + uint8_t opcode; + uint8_t param1; // often same as mode + uint16_t param2; + uint8_t data[192]; // includes 2-byte CRC. data size is determined by largest possible data section of any + // command + crc (see: x08 verify data1 + data2 + data3 + data4) + // this is an explicit design trade-off (space) resulting in simplicity in use + // and implementation + //--- end of packet i/o frame + + // used for receive + uint8_t execTime; // execution time of command by opcode + + // structure should be packed since it will be transmitted over the wire + // this method varies by compiler. As new compilers are supported, add their structure packing method here + +} ATCAPacket; + +#if defined(__XC16__)||defined(__XC32__) +#pragma pack( pop, ATCAPacket) +#endif + + +ATCA_STATUS atCheckMAC(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atCounter(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atDeriveKey(ATCACommand ca_cmd, ATCAPacket *packet, bool has_mac); +ATCA_STATUS atECDH(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atGenDig(ATCACommand ca_cmd, ATCAPacket *packet, bool is_no_mac_key); +ATCA_STATUS atGenKey(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atHMAC(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atInfo(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atLock(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atMAC(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atNonce(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atPause(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atPrivWrite(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atRandom(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atRead(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atSecureBoot(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atSHA(ATCACommand ca_cmd, ATCAPacket *packet, uint16_t write_context_size); +ATCA_STATUS atSign(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atUpdateExtra(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atVerify(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atWrite(ATCACommand ca_cmd, ATCAPacket *packet, bool has_mac); +ATCA_STATUS atAES(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atSelfTest(ATCACommand ca_cmd, ATCAPacket *packet); +ATCA_STATUS atKDF(ATCACommand ca_cmd, ATCAPacket *packet); + +bool atIsSHAFamily(ATCADeviceType device_type); +bool atIsECCFamily(ATCADeviceType device_type); +ATCA_STATUS isATCAError(uint8_t *data); + + +// command helpers +void atCRC(size_t length, const uint8_t *data, uint8_t *crc_le); +void atCalcCrc(ATCAPacket *pkt); +ATCA_STATUS atCheckCrc(const uint8_t *response); + + +/* command definitions */ + +//! minimum number of bytes in command (from count byte to second CRC byte) +#define ATCA_CMD_SIZE_MIN ((uint8_t)7) +//! maximum size of command packet (Verify) +#define ATCA_CMD_SIZE_MAX ((uint8_t)4 * 36 + 7) +//! status byte for success +#define CMD_STATUS_SUCCESS ((uint8_t)0x00) +//! status byte after wake-up +#define CMD_STATUS_WAKEUP ((uint8_t)0x11) +//! command parse error +#define CMD_STATUS_BYTE_PARSE ((uint8_t)0x03) +//! command ECC error +#define CMD_STATUS_BYTE_ECC ((uint8_t)0x05) +//! command execution error +#define CMD_STATUS_BYTE_EXEC ((uint8_t)0x0F) +//! communication error +#define CMD_STATUS_BYTE_COMM ((uint8_t)0xFF) + +/** \name Opcodes for Crypto Authentication device commands + @{ */ +#define ATCA_CHECKMAC ((uint8_t)0x28) //!< CheckMac command op-code +#define ATCA_DERIVE_KEY ((uint8_t)0x1C) //!< DeriveKey command op-code +#define ATCA_INFO ((uint8_t)0x30) //!< Info command op-code +#define ATCA_GENDIG ((uint8_t)0x15) //!< GenDig command op-code +#define ATCA_GENKEY ((uint8_t)0x40) //!< GenKey command op-code +#define ATCA_HMAC ((uint8_t)0x11) //!< HMAC command op-code +#define ATCA_LOCK ((uint8_t)0x17) //!< Lock command op-code +#define ATCA_MAC ((uint8_t)0x08) //!< MAC command op-code +#define ATCA_NONCE ((uint8_t)0x16) //!< Nonce command op-code +#define ATCA_PAUSE ((uint8_t)0x01) //!< Pause command op-code +#define ATCA_PRIVWRITE ((uint8_t)0x46) //!< PrivWrite command op-code +#define ATCA_RANDOM ((uint8_t)0x1B) //!< Random command op-code +#define ATCA_READ ((uint8_t)0x02) //!< Read command op-code +#define ATCA_SIGN ((uint8_t)0x41) //!< Sign command op-code +#define ATCA_UPDATE_EXTRA ((uint8_t)0x20) //!< UpdateExtra command op-code +#define ATCA_VERIFY ((uint8_t)0x45) //!< GenKey command op-code +#define ATCA_WRITE ((uint8_t)0x12) //!< Write command op-code +#define ATCA_ECDH ((uint8_t)0x43) //!< ECDH command op-code +#define ATCA_COUNTER ((uint8_t)0x24) //!< Counter command op-code +#define ATCA_SHA ((uint8_t)0x47) //!< SHA command op-code +#define ATCA_AES ((uint8_t)0x51) //!< AES command op-code +#define ATCA_KDF ((uint8_t)0x56) //!< KDF command op-code +#define ATCA_SECUREBOOT ((uint8_t)0x80) //!< Secure Boot command op-code +#define ATCA_SELFTEST ((uint8_t)0x77) //!< Self test command op-code + + + + +/** @} */ + + +/** \name Definitions of Data and Packet Sizes + @{ */ +#define ATCA_BLOCK_SIZE (32) //!< size of a block +#define ATCA_WORD_SIZE (4) //!< size of a word +#define ATCA_PUB_KEY_PAD (4) //!< size of the public key pad +#define ATCA_SERIAL_NUM_SIZE (9) //!< number of bytes in the device serial number +#define ATCA_RSP_SIZE_VAL ((uint8_t)7) //!< size of response packet containing four bytes of data +#define ATCA_KEY_COUNT (16) //!< number of keys +#define ATCA_ECC_CONFIG_SIZE (128) //!< size of configuration zone +#define ATCA_SHA_CONFIG_SIZE (88) //!< size of configuration zone +#define ATCA_OTP_SIZE (64) //!< size of OTP zone +#define ATCA_DATA_SIZE (ATCA_KEY_COUNT * ATCA_KEY_SIZE) //!< size of data zone +#define ATCA_AES_GFM_SIZE ATCA_BLOCK_SIZE //!< size of GFM data + +#define ATCA_CHIPMODE_OFFSET (19) //!< ChipMode byte offset within the configuration zone +#define ATCA_CHIPMODE_I2C_ADDRESS_FLAG ((uint8_t)0x01) //!< ChipMode I2C Address in UserExtraAdd flag +#define ATCA_CHIPMODE_TTL_ENABLE_FLAG ((uint8_t)0x02) //!< ChipMode TTLenable flag +#define ATCA_CHIPMODE_WATCHDOG_MASK ((uint8_t)0x04) //!< ChipMode watchdog duration mask +#define ATCA_CHIPMODE_WATCHDOG_SHORT ((uint8_t)0x00) //!< ChipMode short watchdog (~1.3s) +#define ATCA_CHIPMODE_WATCHDOG_LONG ((uint8_t)0x04) //!< ChipMode long watchdog (~13s) +#define ATCA_CHIPMODE_CLOCK_DIV_MASK ((uint8_t)0xF8) //!< ChipMode clock divider mask +#define ATCA_CHIPMODE_CLOCK_DIV_M0 ((uint8_t)0x00) //!< ChipMode clock divider M0 +#define ATCA_CHIPMODE_CLOCK_DIV_M1 ((uint8_t)0x28) //!< ChipMode clock divider M1 +#define ATCA_CHIPMODE_CLOCK_DIV_M2 ((uint8_t)0x68) //!< ChipMode clock divider M2 + +#define ATCA_COUNT_SIZE ((uint8_t)1) //!< Number of bytes in the command packet Count +#define ATCA_CRC_SIZE ((uint8_t)2) //!< Number of bytes in the command packet CRC +#define ATCA_PACKET_OVERHEAD (ATCA_COUNT_SIZE + ATCA_CRC_SIZE) //!< Number of bytes in the command packet + +#define ATCA_PUB_KEY_SIZE (64) //!< size of a p256 public key +#define ATCA_PRIV_KEY_SIZE (32) //!< size of a p256 private key +#define ATCA_SIG_SIZE (64) //!< size of a p256 signature +#define ATCA_KEY_SIZE (32) //!< size of a symmetric SHA key +#define RSA2048_KEY_SIZE (256) //!< size of a RSA private key + +#define ATCA_RSP_SIZE_MIN ((uint8_t)4) //!< minimum number of bytes in response +#define ATCA_RSP_SIZE_4 ((uint8_t)7) //!< size of response packet containing 4 bytes data +#define ATCA_RSP_SIZE_72 ((uint8_t)75) //!< size of response packet containing 64 bytes data +#define ATCA_RSP_SIZE_64 ((uint8_t)67) //!< size of response packet containing 64 bytes data +#define ATCA_RSP_SIZE_32 ((uint8_t)35) //!< size of response packet containing 32 bytes data +#define ATCA_RSP_SIZE_16 ((uint8_t)19) //!< size of response packet containing 16 bytes data +#define ATCA_RSP_SIZE_MAX ((uint8_t)75) //!< maximum size of response packet (GenKey and Verify command) + +#define OUTNONCE_SIZE (32) //!< Size of the OutNonce response expected from several commands + +/** \name Definitions for Command Parameter Ranges + @{ */ +#define ATCA_KEY_ID_MAX ((uint8_t)15) //!< maximum value for key id +#define ATCA_OTP_BLOCK_MAX ((uint8_t)1) //!< maximum value for OTP block +/** @} */ + +/** \name Definitions for Indexes Common to All Commands + @{ */ +#define ATCA_COUNT_IDX (0) //!< command packet index for count +#define ATCA_OPCODE_IDX (1) //!< command packet index for op-code +#define ATCA_PARAM1_IDX (2) //!< command packet index for first parameter +#define ATCA_PARAM2_IDX (3) //!< command packet index for second parameter +#define ATCA_DATA_IDX (5) //!< command packet index for data load +#define ATCA_RSP_DATA_IDX (1) //!< buffer index of data in response +/** @} */ + +/** \name Definitions for Zone and Address Parameters + @{ */ +#define ATCA_ZONE_CONFIG ((uint8_t)0x00) //!< Configuration zone +#define ATCA_ZONE_OTP ((uint8_t)0x01) //!< OTP (One Time Programming) zone +#define ATCA_ZONE_DATA ((uint8_t)0x02) //!< Data zone +#define ATCA_ZONE_MASK ((uint8_t)0x03) //!< Zone mask +#define ATCA_ZONE_ENCRYPTED ((uint8_t)0x40) //!< Zone bit 6 set: Write is encrypted with an unlocked data zone. +#define ATCA_ZONE_READWRITE_32 ((uint8_t)0x80) //!< Zone bit 7 set: Access 32 bytes, otherwise 4 bytes. +#define ATCA_ADDRESS_MASK_CONFIG (0x001F) //!< Address bits 5 to 7 are 0 for Configuration zone. +#define ATCA_ADDRESS_MASK_OTP (0x000F) //!< Address bits 4 to 7 are 0 for OTP zone. +#define ATCA_ADDRESS_MASK (0x007F) //!< Address bit 7 to 15 are always 0. +#define ATCA_TEMPKEY_KEYID (0xFFFF) //!< KeyID when referencing TempKey +/** @} */ + +/** \name Definitions for Key types + @{ */ +#define ATCA_B283_KEY_TYPE 0 //!< B283 NIST ECC key +#define ATCA_K283_KEY_TYPE 1 //!< K283 NIST ECC key +#define ATCA_P256_KEY_TYPE 4 //!< P256 NIST ECC key +#define ATCA_AES_KEY_TYPE 6 //!< AES-128 Key +#define ATCA_SHA_KEY_TYPE 7 //!< SHA key or other data +/** @} */ + +/** \name Definitions for the AES Command + @{ */ +#define AES_MODE_IDX ATCA_PARAM1_IDX //!< AES command index for mode +#define AES_KEYID_IDX ATCA_PARAM2_IDX //!< AES command index for key id +#define AES_INPUT_IDX ATCA_DATA_IDX //!< AES command index for input data +#define AES_COUNT (23) //!< AES command packet size +#define AES_MODE_MASK ((uint8_t)0xC7) //!< AES mode bits 3 to 5 are 0 +#define AES_MODE_KEY_BLOCK_MASK ((uint8_t)0xC0) //!< AES mode mask for key block field +#define AES_MODE_OP_MASK ((uint8_t)0x07) //!< AES mode operation mask +#define AES_MODE_ENCRYPT ((uint8_t)0x00) //!< AES mode: Encrypt +#define AES_MODE_DECRYPT ((uint8_t)0x01) //!< AES mode: Decrypt +#define AES_MODE_GFM ((uint8_t)0x03) //!< AES mode: GFM calculation +#define AES_MODE_KEY_BLOCK_POS (6) //!< Bit shift for key block in mode +#define AES_DATA_SIZE (16) //!< size of AES encrypt/decrypt data +#define AES_RSP_SIZE ATCA_RSP_SIZE_16 //!< AES command response packet size +/** @} */ + +/** \name Definitions for the CheckMac Command + @{ */ +#define CHECKMAC_MODE_IDX ATCA_PARAM1_IDX //!< CheckMAC command index for mode +#define CHECKMAC_KEYID_IDX ATCA_PARAM2_IDX //!< CheckMAC command index for key identifier +#define CHECKMAC_CLIENT_CHALLENGE_IDX ATCA_DATA_IDX //!< CheckMAC command index for client challenge +#define CHECKMAC_CLIENT_RESPONSE_IDX (37) //!< CheckMAC command index for client response +#define CHECKMAC_DATA_IDX (69) //!< CheckMAC command index for other data +#define CHECKMAC_COUNT (84) //!< CheckMAC command packet size +#define CHECKMAC_MODE_CHALLENGE ((uint8_t)0x00) //!< CheckMAC mode 0: first SHA block from key id +#define CHECKMAC_MODE_BLOCK2_TEMPKEY ((uint8_t)0x01) //!< CheckMAC mode bit 0: second SHA block from TempKey +#define CHECKMAC_MODE_BLOCK1_TEMPKEY ((uint8_t)0x02) //!< CheckMAC mode bit 1: first SHA block from TempKey +#define CHECKMAC_MODE_SOURCE_FLAG_MATCH ((uint8_t)0x04) //!< CheckMAC mode bit 2: match TempKey.SourceFlag +#define CHECKMAC_MODE_INCLUDE_OTP_64 ((uint8_t)0x20) //!< CheckMAC mode bit 5: include first 64 OTP bits +#define CHECKMAC_MODE_MASK ((uint8_t)0x27) //!< CheckMAC mode bits 3, 4, 6, and 7 are 0. +#define CHECKMAC_CLIENT_CHALLENGE_SIZE (32) //!< CheckMAC size of client challenge +#define CHECKMAC_CLIENT_RESPONSE_SIZE (32) //!< CheckMAC size of client response +#define CHECKMAC_OTHER_DATA_SIZE (13) //!< CheckMAC size of "other data" +#define CHECKMAC_CLIENT_COMMAND_SIZE (4) //!< CheckMAC size of client command header size inside "other data" +#define CHECKMAC_CMD_MATCH (0) //!< CheckMAC return value when there is a match +#define CHECKMAC_CMD_MISMATCH (1) //!< CheckMAC return value when there is a mismatch +#define CHECKMAC_RSP_SIZE ATCA_RSP_SIZE_MIN //!< CheckMAC response packet size +/** @} */ + +/** \name Definitions for the Counter command + @{ */ +#define COUNTER_COUNT ATCA_CMD_SIZE_MIN +#define COUNTER_MODE_IDX ATCA_PARAM1_IDX //!< Counter command index for mode +#define COUNTER_KEYID_IDX ATCA_PARAM2_IDX //!< Counter command index for key id +#define COUNTER_MODE_MASK ((uint8_t)0x01) //!< Counter mode bits 1 to 7 are 0 +#define COUNTER_MAX_VALUE ((uint32_t)2097151) //!< Counter maximum value of the counter +#define COUNTER_MODE_READ ((uint8_t)0x00) //!< Counter command mode for reading +#define COUNTER_MODE_INCREMENT ((uint8_t)0x01) //!< Counter command mode for incrementing +#define COUNTER_RSP_SIZE ATCA_RSP_SIZE_4 //!< Counter command response packet size +/** @} */ + +/** \name Definitions for the DeriveKey Command + @{ */ +#define DERIVE_KEY_RANDOM_IDX ATCA_PARAM1_IDX //!< DeriveKey command index for random bit +#define DERIVE_KEY_TARGETKEY_IDX ATCA_PARAM2_IDX //!< DeriveKey command index for target slot +#define DERIVE_KEY_MAC_IDX ATCA_DATA_IDX //!< DeriveKey command index for optional MAC +#define DERIVE_KEY_COUNT_SMALL ATCA_CMD_SIZE_MIN //!< DeriveKey command packet size without MAC +#define DERIVE_KEY_MODE ((uint8_t)0x04) //!< DeriveKey command mode set to 4 as in datasheet +#define DERIVE_KEY_COUNT_LARGE (39) //!< DeriveKey command packet size with MAC +#define DERIVE_KEY_RANDOM_FLAG ((uint8_t)4) //!< DeriveKey 1. parameter; has to match TempKey.SourceFlag +#define DERIVE_KEY_MAC_SIZE (32) //!< DeriveKey MAC size +#define DERIVE_KEY_RSP_SIZE ATCA_RSP_SIZE_MIN //!< DeriveKey response packet size +/** @} */ + +/** \name Definitions for the ECDH Command + @{ */ +#define ECDH_PREFIX_MODE ((uint8_t)0x00) +#define ECDH_COUNT (ATCA_CMD_SIZE_MIN + ATCA_PUB_KEY_SIZE) +#define ECDH_MODE_SOURCE_MASK ((uint8_t)0x01) +#define ECDH_MODE_SOURCE_EEPROM_SLOT ((uint8_t)0x00) +#define ECDH_MODE_SOURCE_TEMPKEY ((uint8_t)0x01) +#define ECDH_MODE_OUTPUT_MASK ((uint8_t)0x02) +#define ECDH_MODE_OUTPUT_CLEAR ((uint8_t)0x00) +#define ECDH_MODE_OUTPUT_ENC ((uint8_t)0x02) +#define ECDH_MODE_COPY_MASK ((uint8_t)0x0C) +#define ECDH_MODE_COPY_COMPATIBLE ((uint8_t)0x00) +#define ECDH_MODE_COPY_EEPROM_SLOT ((uint8_t)0x04) +#define ECDH_MODE_COPY_TEMP_KEY ((uint8_t)0x08) +#define ECDH_MODE_COPY_OUTPUT_BUFFER ((uint8_t)0x0C) +#define ECDH_KEY_SIZE ATCA_BLOCK_SIZE //!< ECDH output data size +#define ECDH_RSP_SIZE ATCA_RSP_SIZE_64 //!< ECDH command packet size +/** @} */ + +/** \name Definitions for the GenDig Command + @{ */ +#define GENDIG_ZONE_IDX ATCA_PARAM1_IDX //!< GenDig command index for zone +#define GENDIG_KEYID_IDX ATCA_PARAM2_IDX //!< GenDig command index for key id +#define GENDIG_DATA_IDX ATCA_DATA_IDX //!< GenDig command index for optional data +#define GENDIG_COUNT ATCA_CMD_SIZE_MIN //!< GenDig command packet size without "other data" +#define GENDIG_ZONE_CONFIG ((uint8_t)0) //!< GenDig zone id config. Use KeyID to specify any of the four 256-bit blocks of the Configuration zone. +#define GENDIG_ZONE_OTP ((uint8_t)1) //!< GenDig zone id OTP. Use KeyID to specify either the first or second 256-bit block of the OTP zone. +#define GENDIG_ZONE_DATA ((uint8_t)2) //!< GenDig zone id data. Use KeyID to specify a slot in the Data zone or a transport key in the hardware array. +#define GENDIG_ZONE_SHARED_NONCE ((uint8_t)3) //!< GenDig zone id shared nonce. KeyID specifies the location of the input value in the message generation. +#define GENDIG_ZONE_COUNTER ((uint8_t)4) //!< GenDig zone id counter. KeyID specifies the monotonic counter ID to be included in the message generation. +#define GENDIG_ZONE_KEY_CONFIG ((uint8_t)5) //!< GenDig zone id key config. KeyID specifies the slot for which the configuration information is to be included in the message generation. +#define GENDIG_RSP_SIZE ATCA_RSP_SIZE_MIN //!< GenDig command response packet size +/** @} */ + +/** \name Definitions for the GenKey Command + @{ */ +#define GENKEY_MODE_IDX ATCA_PARAM1_IDX //!< GenKey command index for mode +#define GENKEY_KEYID_IDX ATCA_PARAM2_IDX //!< GenKey command index for key id +#define GENKEY_DATA_IDX (5) //!< GenKey command index for other data +#define GENKEY_COUNT ATCA_CMD_SIZE_MIN //!< GenKey command packet size without "other data" +#define GENKEY_COUNT_DATA (10) //!< GenKey command packet size with "other data" +#define GENKEY_OTHER_DATA_SIZE (3) //!< GenKey size of "other data" +#define GENKEY_MODE_MASK ((uint8_t)0x1C) //!< GenKey mode bits 0 to 1 and 5 to 7 are 0 +#define GENKEY_MODE_PRIVATE ((uint8_t)0x04) //!< GenKey mode: private key generation +#define GENKEY_MODE_PUBLIC ((uint8_t)0x00) //!< GenKey mode: public key calculation +#define GENKEY_MODE_DIGEST ((uint8_t)0x08) //!< GenKey mode: PubKey digest will be created after the public key is calculated +#define GENKEY_MODE_PUBKEY_DIGEST ((uint8_t)0x10) //!< GenKey mode: Calculate PubKey digest on the public key in KeyId +#define GENKEY_PRIVATE_TO_TEMPKEY ((uint16_t)0xFFFF) //!< GenKey Create private key and store to tempkey (608 only) +#define GENKEY_RSP_SIZE_SHORT ATCA_RSP_SIZE_MIN //!< GenKey response packet size in Digest mode +#define GENKEY_RSP_SIZE_LONG ATCA_RSP_SIZE_64 //!< GenKey response packet size when returning a public key +/** @} */ + +/** \name Definitions for the HMAC Command + @{ */ +#define HMAC_MODE_IDX ATCA_PARAM1_IDX //!< HMAC command index for mode +#define HMAC_KEYID_IDX ATCA_PARAM2_IDX //!< HMAC command index for key id +#define HMAC_COUNT ATCA_CMD_SIZE_MIN //!< HMAC command packet size +#define HMAC_MODE_FLAG_TK_RAND ((uint8_t)0x00) //!< HMAC mode bit 2: The value of this bit must match the value in TempKey.SourceFlag or the command will return an error. +#define HMAC_MODE_FLAG_TK_NORAND ((uint8_t)0x04) //!< HMAC mode bit 2: The value of this bit must match the value in TempKey.SourceFlag or the command will return an error. +#define HMAC_MODE_FLAG_OTP88 ((uint8_t)0x10) //!< HMAC mode bit 4: Include the first 88 OTP bits (OTP[0] through OTP[10]) in the message.; otherwise, the corresponding message bits are set to zero. Not applicable for ATECC508A. +#define HMAC_MODE_FLAG_OTP64 ((uint8_t)0x20) //!< HMAC mode bit 5: Include the first 64 OTP bits (OTP[0] through OTP[7]) in the message.; otherwise, the corresponding message bits are set to zero. If Mode[4] is set, the value of this mode bit is ignored. Not applicable for ATECC508A. +#define HMAC_MODE_FLAG_FULLSN ((uint8_t)0x40) //!< HMAC mode bit 6: If set, include the 48 bits SN[2:3] and SN[4:7] in the message.; otherwise, the corresponding message bits are set to zero. +#define HMAC_MODE_MASK ((uint8_t)0x74) //!< HMAC mode bits 0, 1, 3, and 7 are 0. +#define HMAC_DIGEST_SIZE (32) //!< HMAC size of digest response +#define HMAC_RSP_SIZE ATCA_RSP_SIZE_32 //!< HMAC command response packet size +/** @} */ + +/** \name Definitions for the Info Command + @{ */ +#define INFO_PARAM1_IDX ATCA_PARAM1_IDX //!< Info command index for 1. parameter +#define INFO_PARAM2_IDX ATCA_PARAM2_IDX //!< Info command index for 2. parameter +#define INFO_COUNT ATCA_CMD_SIZE_MIN //!< Info command packet size +#define INFO_MODE_REVISION ((uint8_t)0x00) //!< Info mode Revision +#define INFO_MODE_KEY_VALID ((uint8_t)0x01) //!< Info mode KeyValid +#define INFO_MODE_STATE ((uint8_t)0x02) //!< Info mode State +#define INFO_MODE_GPIO ((uint8_t)0x03) //!< Info mode GPIO +#define INFO_MODE_VOL_KEY_PERMIT ((uint8_t)0x04) //!< Info mode GPIO +#define INFO_MODE_MAX ((uint8_t)0x03) //!< Info mode maximum value +#define INFO_NO_STATE ((uint8_t)0x00) //!< Info mode is not the state mode. +#define INFO_OUTPUT_STATE_MASK ((uint8_t)0x01) //!< Info output state mask +#define INFO_DRIVER_STATE_MASK ((uint8_t)0x02) //!< Info driver state mask +#define INFO_PARAM2_SET_LATCH_STATE ((uint16_t)0x0002) //!< Info param2 to set the persistent latch state. +#define INFO_PARAM2_LATCH_SET ((uint16_t)0x0001) //!< Info param2 to set the persistent latch +#define INFO_PARAM2_LATCH_CLEAR ((uint16_t)0x0000) //!< Info param2 to clear the persistent latch +#define INFO_SIZE ((uint8_t)0x04) //!< Info return size +#define INFO_RSP_SIZE ATCA_RSP_SIZE_VAL //!< Info command response packet size +/** @} */ + +/** \name Definitions for the KDF Command + @{ */ +#define KDF_MODE_IDX ATCA_PARAM1_IDX //!< KDF command index for mode +#define KDF_KEYID_IDX ATCA_PARAM2_IDX //!< KDF command index for key id +#define KDF_DETAILS_IDX ATCA_DATA_IDX //!< KDF command index for details +#define KDF_DETAILS_SIZE 4 //!< KDF details (param3) size +#define KDF_MESSAGE_IDX (ATCA_DATA_IDX + KDF_DETAILS_SIZE) + +#define KDF_MODE_SOURCE_MASK ((uint8_t)0x03) //!< KDF mode source key mask +#define KDF_MODE_SOURCE_TEMPKEY ((uint8_t)0x00) //!< KDF mode source key in TempKey +#define KDF_MODE_SOURCE_TEMPKEY_UP ((uint8_t)0x01) //!< KDF mode source key in upper TempKey +#define KDF_MODE_SOURCE_SLOT ((uint8_t)0x02) //!< KDF mode source key in a slot +#define KDF_MODE_SOURCE_ALTKEYBUF ((uint8_t)0x03) //!< KDF mode source key in alternate key buffer + +#define KDF_MODE_TARGET_MASK ((uint8_t)0x1C) //!< KDF mode target key mask +#define KDF_MODE_TARGET_TEMPKEY ((uint8_t)0x00) //!< KDF mode target key in TempKey +#define KDF_MODE_TARGET_TEMPKEY_UP ((uint8_t)0x04) //!< KDF mode target key in upper TempKey +#define KDF_MODE_TARGET_SLOT ((uint8_t)0x08) //!< KDF mode target key in slot +#define KDF_MODE_TARGET_ALTKEYBUF ((uint8_t)0x0C) //!< KDF mode target key in alternate key buffer +#define KDF_MODE_TARGET_OUTPUT ((uint8_t)0x10) //!< KDF mode target key in output buffer +#define KDF_MODE_TARGET_OUTPUT_ENC ((uint8_t)0x14) //!< KDF mode target key encrypted in output buffer + +#define KDF_MODE_ALG_MASK ((uint8_t)0x60) //!< KDF mode algorithm mask +#define KDF_MODE_ALG_PRF ((uint8_t)0x00) //!< KDF mode PRF algorithm +#define KDF_MODE_ALG_AES ((uint8_t)0x20) //!< KDF mode AES algorithm +#define KDF_MODE_ALG_HKDF ((uint8_t)0x40) //!< KDF mode HKDF algorithm + +#define KDF_DETAILS_PRF_KEY_LEN_MASK ((uint32_t)0x00000003) //!< KDF details for PRF, source key length mask +#define KDF_DETAILS_PRF_KEY_LEN_16 ((uint32_t)0x00000000) //!< KDF details for PRF, source key length is 16 bytes +#define KDF_DETAILS_PRF_KEY_LEN_32 ((uint32_t)0x00000001) //!< KDF details for PRF, source key length is 32 bytes +#define KDF_DETAILS_PRF_KEY_LEN_48 ((uint32_t)0x00000002) //!< KDF details for PRF, source key length is 48 bytes +#define KDF_DETAILS_PRF_KEY_LEN_64 ((uint32_t)0x00000003) //!< KDF details for PRF, source key length is 64 bytes + +#define KDF_DETAILS_PRF_TARGET_LEN_MASK ((uint32_t)0x00000100) //!< KDF details for PRF, target length mask +#define KDF_DETAILS_PRF_TARGET_LEN_32 ((uint32_t)0x00000000) //!< KDF details for PRF, target length is 32 bytes +#define KDF_DETAILS_PRF_TARGET_LEN_64 ((uint32_t)0x00000100) //!< KDF details for PRF, target length is 64 bytes + +#define KDF_DETAILS_PRF_AEAD_MASK ((uint32_t)0x00000600) //!< KDF details for PRF, AEAD processing mask +#define KDF_DETAILS_PRF_AEAD_MODE0 ((uint32_t)0x00000000) //!< KDF details for PRF, AEAD no processing +#define KDF_DETAILS_PRF_AEAD_MODE1 ((uint32_t)0x00000200) //!< KDF details for PRF, AEAD First 32 go to target, second 32 go to output buffer + +#define KDF_DETAILS_AES_KEY_LOC_MASK ((uint32_t)0x00000003) //!< KDF details for AES, key location mask + +#define KDF_DETAILS_HKDF_MSG_LOC_MASK ((uint32_t)0x00000003) //!< KDF details for HKDF, message location mask +#define KDF_DETAILS_HKDF_MSG_LOC_SLOT ((uint32_t)0x00000000) //!< KDF details for HKDF, message location in slot +#define KDF_DETAILS_HKDF_MSG_LOC_TEMPKEY ((uint32_t)0x00000001) //!< KDF details for HKDF, message location in TempKey +#define KDF_DETAILS_HKDF_MSG_LOC_INPUT ((uint32_t)0x00000002) //!< KDF details for HKDF, message location in input parameter +#define KDF_DETAILS_HKDF_MSG_LOC_IV ((uint32_t)0x00000003) //!< KDF details for HKDF, message location is a special IV function +#define KDF_DETAILS_HKDF_ZERO_KEY ((uint32_t)0x00000004) //!< KDF details for HKDF, key is 32 bytes of zero +/** @} */ + +/** \name Definitions for the Lock Command + @{ */ +#define LOCK_ZONE_IDX ATCA_PARAM1_IDX //!< Lock command index for zone +#define LOCK_SUMMARY_IDX ATCA_PARAM2_IDX //!< Lock command index for summary +#define LOCK_COUNT ATCA_CMD_SIZE_MIN //!< Lock command packet size +#define LOCK_ZONE_CONFIG ((uint8_t)0x00) //!< Lock zone is Config +#define LOCK_ZONE_DATA ((uint8_t)0x01) //!< Lock zone is OTP or Data +#define LOCK_ZONE_DATA_SLOT ((uint8_t)0x02) //!< Lock slot of Data +#define LOCK_ZONE_NO_CRC ((uint8_t)0x80) //!< Lock command: Ignore summary. +#define LOCK_ZONE_MASK (0xBF) //!< Lock parameter 1 bits 6 are 0. +#define ATCA_UNLOCKED (0x55) //!< Value indicating an unlocked zone +#define ATCA_LOCKED (0x00) //!< Value indicating a locked zone +#define LOCK_RSP_SIZE ATCA_RSP_SIZE_MIN //!< Lock command response packet size +/** @} */ + +/** \name Definitions for the MAC Command + @{ */ +#define MAC_MODE_IDX ATCA_PARAM1_IDX //!< MAC command index for mode +#define MAC_KEYID_IDX ATCA_PARAM2_IDX //!< MAC command index for key id +#define MAC_CHALLENGE_IDX ATCA_DATA_IDX //!< MAC command index for optional challenge +#define MAC_COUNT_SHORT ATCA_CMD_SIZE_MIN //!< MAC command packet size without challenge +#define MAC_COUNT_LONG (39) //!< MAC command packet size with challenge +#define MAC_MODE_CHALLENGE ((uint8_t)0x00) //!< MAC mode 0: first SHA block from data slot +#define MAC_MODE_BLOCK2_TEMPKEY ((uint8_t)0x01) //!< MAC mode bit 0: second SHA block from TempKey +#define MAC_MODE_BLOCK1_TEMPKEY ((uint8_t)0x02) //!< MAC mode bit 1: first SHA block from TempKey +#define MAC_MODE_SOURCE_FLAG_MATCH ((uint8_t)0x04) //!< MAC mode bit 2: match TempKey.SourceFlag +#define MAC_MODE_PTNONCE_TEMPKEY ((uint8_t)0x06) //!< MAC mode bit 0: second SHA block from TempKey +#define MAC_MODE_PASSTHROUGH ((uint8_t)0x07) //!< MAC mode bit 0-2: pass-through mode +#define MAC_MODE_INCLUDE_OTP_88 ((uint8_t)0x10) //!< MAC mode bit 4: include first 88 OTP bits +#define MAC_MODE_INCLUDE_OTP_64 ((uint8_t)0x20) //!< MAC mode bit 5: include first 64 OTP bits +#define MAC_MODE_INCLUDE_SN ((uint8_t)0x40) //!< MAC mode bit 6: include serial number +#define MAC_CHALLENGE_SIZE (32) //!< MAC size of challenge +#define MAC_SIZE (32) //!< MAC size of response +#define MAC_MODE_MASK ((uint8_t)0x77) //!< MAC mode bits 3 and 7 are 0. +#define MAC_RSP_SIZE ATCA_RSP_SIZE_32 //!< MAC command response packet size +/** @} */ + +/** \name Definitions for the Nonce Command + @{ */ +#define NONCE_MODE_IDX ATCA_PARAM1_IDX //!< Nonce command index for mode +#define NONCE_PARAM2_IDX ATCA_PARAM2_IDX //!< Nonce command index for 2. parameter +#define NONCE_INPUT_IDX ATCA_DATA_IDX //!< Nonce command index for input data +#define NONCE_COUNT_SHORT (ATCA_CMD_SIZE_MIN + 20) //!< Nonce command packet size for 20 bytes of NumIn +#define NONCE_COUNT_LONG (ATCA_CMD_SIZE_MIN + 32) //!< Nonce command packet size for 32 bytes of NumIn +#define NONCE_COUNT_LONG_64 (ATCA_CMD_SIZE_MIN + 64) //!< Nonce command packet size for 64 bytes of NumIn +#define NONCE_MODE_MASK ((uint8_t)0x03) //!< Nonce mode bits 2 to 7 are 0. +#define NONCE_MODE_SEED_UPDATE ((uint8_t)0x00) //!< Nonce mode: update seed +#define NONCE_MODE_NO_SEED_UPDATE ((uint8_t)0x01) //!< Nonce mode: do not update seed +#define NONCE_MODE_INVALID ((uint8_t)0x02) //!< Nonce mode 2 is invalid. +#define NONCE_MODE_PASSTHROUGH ((uint8_t)0x03) //!< Nonce mode: pass-through + +#define NONCE_MODE_INPUT_LEN_MASK ((uint8_t)0x20) //!< Nonce mode: input size mask +#define NONCE_MODE_INPUT_LEN_32 ((uint8_t)0x00) //!< Nonce mode: input size is 32 bytes +#define NONCE_MODE_INPUT_LEN_64 ((uint8_t)0x20) //!< Nonce mode: input size is 64 bytes + +#define NONCE_MODE_TARGET_MASK ((uint8_t)0xC0) //!< Nonce mode: target mask +#define NONCE_MODE_TARGET_TEMPKEY ((uint8_t)0x00) //!< Nonce mode: target is TempKey +#define NONCE_MODE_TARGET_MSGDIGBUF ((uint8_t)0x40) //!< Nonce mode: target is Message Digest Buffer +#define NONCE_MODE_TARGET_ALTKEYBUF ((uint8_t)0x80) //!< Nonce mode: target is Alternate Key Buffer + +#define NONCE_ZERO_CALC_MASK ((uint16_t)0x8000) //!< Nonce zero (param2): calculation mode mask +#define NONCE_ZERO_CALC_RANDOM ((uint16_t)0x0000) //!< Nonce zero (param2): calculation mode random, use RNG in calculation and return RNG output +#define NONCE_ZERO_CALC_TEMPKEY ((uint16_t)0x8000) //!< Nonce zero (param2): calculation mode TempKey, use TempKey in calculation and return new TempKey value + +#define NONCE_NUMIN_SIZE (20) //!< Nonce NumIn size for random modes +#define NONCE_NUMIN_SIZE_PASSTHROUGH (32) //!< Nonce NumIn size for 32-byte pass-through mode + +#define NONCE_RSP_SIZE_SHORT ATCA_RSP_SIZE_MIN //!< Nonce command response packet size with no output +#define NONCE_RSP_SIZE_LONG ATCA_RSP_SIZE_32 //!< Nonce command response packet size with output +/** @} */ + +/** \name Definitions for the Pause Command + @{ */ +#define PAUSE_SELECT_IDX ATCA_PARAM1_IDX //!< Pause command index for Selector +#define PAUSE_PARAM2_IDX ATCA_PARAM2_IDX //!< Pause command index for 2. parameter +#define PAUSE_COUNT ATCA_CMD_SIZE_MIN //!< Pause command packet size +#define PAUSE_RSP_SIZE ATCA_RSP_SIZE_MIN //!< Pause command response packet size +/** @} */ + +/** \name Definitions for the PrivWrite Command + @{ */ +#define PRIVWRITE_ZONE_IDX ATCA_PARAM1_IDX //!< PrivWrite command index for zone +#define PRIVWRITE_KEYID_IDX ATCA_PARAM2_IDX //!< PrivWrite command index for KeyID +#define PRIVWRITE_VALUE_IDX ( 5) //!< PrivWrite command index for value +#define PRIVWRITE_MAC_IDX (41) //!< PrivWrite command index for MAC +#define PRIVWRITE_COUNT (75) //!< PrivWrite command packet size +#define PRIVWRITE_ZONE_MASK ((uint8_t)0x40) //!< PrivWrite zone bits 0 to 5 and 7 are 0. +#define PRIVWRITE_MODE_ENCRYPT ((uint8_t)0x40) //!< PrivWrite mode: encrypted +#define PRIVWRITE_RSP_SIZE ATCA_RSP_SIZE_MIN //!< PrivWrite command response packet size +/** @} */ + +/** \name Definitions for the Random Command + @{ */ +#define RANDOM_MODE_IDX ATCA_PARAM1_IDX //!< Random command index for mode +#define RANDOM_PARAM2_IDX ATCA_PARAM2_IDX //!< Random command index for 2. parameter +#define RANDOM_COUNT ATCA_CMD_SIZE_MIN //!< Random command packet size +#define RANDOM_SEED_UPDATE ((uint8_t)0x00) //!< Random mode for automatic seed update +#define RANDOM_NO_SEED_UPDATE ((uint8_t)0x01) //!< Random mode for no seed update +#define RANDOM_NUM_SIZE ((uint8_t)32) //!< Number of bytes in the data packet of a random command +#define RANDOM_RSP_SIZE ATCA_RSP_SIZE_32 //!< Random command response packet size +/** @} */ + +/** \name Definitions for the Read Command + @{ */ +#define READ_ZONE_IDX ATCA_PARAM1_IDX //!< Read command index for zone +#define READ_ADDR_IDX ATCA_PARAM2_IDX //!< Read command index for address +#define READ_COUNT ATCA_CMD_SIZE_MIN //!< Read command packet size +#define READ_ZONE_MASK ((uint8_t)0x83) //!< Read zone bits 2 to 6 are 0. +#define READ_4_RSP_SIZE ATCA_RSP_SIZE_VAL //!< Read command response packet size when reading 4 bytes +#define READ_32_RSP_SIZE ATCA_RSP_SIZE_32 //!< Read command response packet size when reading 32 bytes +/** @} */ + +/** \name Definitions for the SecureBoot Command + @{ */ +#define SECUREBOOT_MODE_IDX ATCA_PARAM1_IDX //!< SecureBoot command index for mode +#define SECUREBOOT_DIGEST_SIZE (32) //!< SecureBoot digest input size +#define SECUREBOOT_SIGNATURE_SIZE (64) //!< SecureBoot signature input size +#define SECUREBOOT_COUNT_DIG (ATCA_CMD_SIZE_MIN + SECUREBOOT_DIGEST_SIZE) //!< SecureBoot command packet size for just a digest +#define SECUREBOOT_COUNT_DIG_SIG (ATCA_CMD_SIZE_MIN + SECUREBOOT_DIGEST_SIZE + SECUREBOOT_SIGNATURE_SIZE) //!< SecureBoot command packet size for a digest and signature +#define SECUREBOOT_MAC_SIZE (32) //!< SecureBoot MAC output size +#define SECUREBOOT_RSP_SIZE_NO_MAC ATCA_RSP_SIZE_MIN //!< SecureBoot response packet size for no MAC +#define SECUREBOOT_RSP_SIZE_MAC (ATCA_PACKET_OVERHEAD + SECUREBOOT_MAC_SIZE) //!< SecureBoot response packet size with MAC + +#define SECUREBOOT_MODE_MASK ((uint8_t)0x07) //!< SecureBoot mode mask +#define SECUREBOOT_MODE_FULL ((uint8_t)0x05) //!< SecureBoot mode Full +#define SECUREBOOT_MODE_FULL_STORE ((uint8_t)0x06) //!< SecureBoot mode FullStore +#define SECUREBOOT_MODE_FULL_COPY ((uint8_t)0x07) //!< SecureBoot mode FullCopy +#define SECUREBOOT_MODE_PROHIBIT_FLAG ((uint8_t)0x40) //!< SecureBoot mode flag to prohibit SecureBoot until next power cycle +#define SECUREBOOT_MODE_ENC_MAC_FLAG ((uint8_t)0x80) //!< SecureBoot mode flag for encrypted digest and returning validating MAC + +#define SECUREBOOTCONFIG_OFFSET (70) //!< SecureBootConfig byte offset into the configuration zone +#define SECUREBOOTCONFIG_MODE_MASK ((uint16_t)0x0003) //!< Mask for SecureBootMode field in SecureBootConfig value +#define SECUREBOOTCONFIG_MODE_DISABLED ((uint16_t)0x0000) //!< Disabled SecureBootMode in SecureBootConfig value +#define SECUREBOOTCONFIG_MODE_FULL_BOTH ((uint16_t)0x0001) //!< Both digest and signature always required SecureBootMode in SecureBootConfig value +#define SECUREBOOTCONFIG_MODE_FULL_SIG ((uint16_t)0x0002) //!< Signature stored SecureBootMode in SecureBootConfig value +#define SECUREBOOTCONFIG_MODE_FULL_DIG ((uint16_t)0x0003) //!< Digest stored SecureBootMode in SecureBootConfig value +/** @} */ + +/** \name Definitions for the SelfTest Command + @{ */ +#define SELFTEST_MODE_IDX ATCA_PARAM1_IDX //!< SelfTest command index for mode +#define SELFTEST_COUNT ATCA_CMD_SIZE_MIN //!< SelfTest command packet size +#define SELFTEST_MODE_RNG ((uint8_t)0x01) //!< SelfTest mode RNG DRBG function +#define SELFTEST_MODE_ECDSA_SIGN_VERIFY ((uint8_t)0x02) //!< SelfTest mode ECDSA verify function +#define SELFTEST_MODE_ECDH ((uint8_t)0x08) //!< SelfTest mode ECDH function +#define SELFTEST_MODE_AES ((uint8_t)0x10) //!< SelfTest mode AES encrypt function +#define SELFTEST_MODE_SHA ((uint8_t)0x20) //!< SelfTest mode SHA function +#define SELFTEST_MODE_ALL ((uint8_t)0x3B) //!< SelfTest mode all algorithms +#define SELFTEST_RSP_SIZE ATCA_RSP_SIZE_MIN //!< SelfTest command response packet size +/** @} */ + +/** \name Definitions for the SHA Command + @{ */ +#define SHA_COUNT_SHORT ATCA_CMD_SIZE_MIN +#define SHA_COUNT_LONG ATCA_CMD_SIZE_MIN //!< Just a starting size +#define ATCA_SHA_DIGEST_SIZE (32) +#define SHA_DATA_MAX (64) +#define ATCA_SHA256_BLOCK_SIZE (64) +#define SHA_CONTEXT_MAX_SIZE (99) + +#define SHA_MODE_MASK ((uint8_t)0x07) //!< Mask the bit 0-2 +#define SHA_MODE_SHA256_START ((uint8_t)0x00) //!< Initialization, does not accept a message +#define SHA_MODE_SHA256_UPDATE ((uint8_t)0x01) //!< Add 64 bytes in the meesage to the SHA context +#define SHA_MODE_SHA256_END ((uint8_t)0x02) //!< Complete the calculation and return the digest +#define SHA_MODE_SHA256_PUBLIC ((uint8_t)0x03) //!< Add 64 byte ECC public key in the slot to the SHA context +#define SHA_MODE_HMAC_START ((uint8_t)0x04) //!< Initialization, HMAC calculation +#define SHA_MODE_HMAC_UPDATE ((uint8_t)0x01) //!< Add 64 bytes in the meesage to the SHA context +#define SHA_MODE_HMAC_END ((uint8_t)0x05) //!< Complete the HMAC computation and return digest +#define SHA_MODE_608_HMAC_END ((uint8_t)0x02) //!< Complete the HMAC computation and return digest... Different command on 608 +#define SHA_MODE_READ_CONTEXT ((uint8_t)0x06) //!< Read current SHA-256 context out of the device +#define SHA_MODE_WRITE_CONTEXT ((uint8_t)0x07) //!< Restore a SHA-256 context into the device +#define SHA_MODE_TARGET_MASK ((uint8_t)0xC0) //!< Resulting digest target location mask +#define SHA_MODE_TARGET_TEMPKEY ((uint8_t)0x00) //!< Place resulting digest both in Output buffer and TempKey +#define SHA_MODE_TARGET_MSGDIGBUF ((uint8_t)0x40) //!< Place resulting digest both in Output buffer and Message Digest Buffer +#define SHA_MODE_TARGET_OUT_ONLY ((uint8_t)0xC0) //!< Place resulting digest both in Output buffer ONLY + +#define SHA_RSP_SIZE ATCA_RSP_SIZE_32 //!< SHA command response packet size +#define SHA_RSP_SIZE_SHORT ATCA_RSP_SIZE_MIN //!< SHA command response packet size only status code +#define SHA_RSP_SIZE_LONG ATCA_RSP_SIZE_32 //!< SHA command response packet size +/** @} */ + +/** @} *//** \name Definitions for the Sign Command + @{ */ +#define SIGN_MODE_IDX ATCA_PARAM1_IDX //!< Sign command index for mode +#define SIGN_KEYID_IDX ATCA_PARAM2_IDX //!< Sign command index for key id +#define SIGN_COUNT ATCA_CMD_SIZE_MIN //!< Sign command packet size +#define SIGN_MODE_MASK ((uint8_t)0xE1) //!< Sign mode bits 1 to 4 are 0 +#define SIGN_MODE_INTERNAL ((uint8_t)0x00) //!< Sign mode 0: internal +#define SIGN_MODE_INVALIDATE ((uint8_t)0x01) //!< Sign mode bit 1: Signature will be used for Verify(Invalidate) +#define SIGN_MODE_INCLUDE_SN ((uint8_t)0x40) //!< Sign mode bit 6: include serial number +#define SIGN_MODE_EXTERNAL ((uint8_t)0x80) //!< Sign mode bit 7: external +#define SIGN_MODE_SOURCE_MASK ((uint8_t)0x20) //!< Sign mode message source mask +#define SIGN_MODE_SOURCE_TEMPKEY ((uint8_t)0x00) //!< Sign mode message source is TempKey +#define SIGN_MODE_SOURCE_MSGDIGBUF ((uint8_t)0x20) //!< Sign mode message source is the Message Digest Buffer +#define SIGN_RSP_SIZE ATCA_RSP_SIZE_MAX //!< Sign command response packet size +/** @} */ + +/** \name Definitions for the UpdateExtra Command + @{ */ +#define UPDATE_MODE_IDX ATCA_PARAM1_IDX //!< UpdateExtra command index for mode +#define UPDATE_VALUE_IDX ATCA_PARAM2_IDX //!< UpdateExtra command index for new value +#define UPDATE_COUNT ATCA_CMD_SIZE_MIN //!< UpdateExtra command packet size +#define UPDATE_MODE_USER_EXTRA ((uint8_t)0x00) //!< UpdateExtra mode update UserExtra (config byte 84) +#define UPDATE_MODE_SELECTOR ((uint8_t)0x01) //!< UpdateExtra mode update Selector (config byte 85) +#define UPDATE_MODE_USER_EXTRA_ADD UPDATE_MODE_SELECTOR //!< UpdateExtra mode update UserExtraAdd (config byte 85) +#define UPDATE_MODE_DEC_COUNTER ((uint8_t)0x02) //!< UpdateExtra mode: decrement counter +#define UPDATE_RSP_SIZE ATCA_RSP_SIZE_MIN //!< UpdateExtra command response packet size +/** @} */ + +/** \name Definitions for the Verify Command + @{ */ +#define VERIFY_MODE_IDX ATCA_PARAM1_IDX //!< Verify command index for mode +#define VERIFY_KEYID_IDX ATCA_PARAM2_IDX //!< Verify command index for key id +#define VERIFY_DATA_IDX ( 5) //!< Verify command index for data +#define VERIFY_256_STORED_COUNT ( 71) //!< Verify command packet size for 256-bit key in stored mode +#define VERIFY_283_STORED_COUNT ( 79) //!< Verify command packet size for 283-bit key in stored mode +#define VERIFY_256_VALIDATE_COUNT ( 90) //!< Verify command packet size for 256-bit key in validate mode +#define VERIFY_283_VALIDATE_COUNT ( 98) //!< Verify command packet size for 283-bit key in validate mode +#define VERIFY_256_EXTERNAL_COUNT (135) //!< Verify command packet size for 256-bit key in external mode +#define VERIFY_283_EXTERNAL_COUNT (151) //!< Verify command packet size for 283-bit key in external mode +#define VERIFY_256_KEY_SIZE ( 64) //!< Verify key size for 256-bit key +#define VERIFY_283_KEY_SIZE ( 72) //!< Verify key size for 283-bit key +#define VERIFY_256_SIGNATURE_SIZE ( 64) //!< Verify signature size for 256-bit key +#define VERIFY_283_SIGNATURE_SIZE ( 72) //!< Verify signature size for 283-bit key +#define VERIFY_OTHER_DATA_SIZE ( 19) //!< Verify size of "other data" +#define VERIFY_MODE_MASK ((uint8_t)0x03) //!< Verify mode bits 2 to 7 are 0 +#define VERIFY_MODE_STORED ((uint8_t)0x00) //!< Verify mode: stored +#define VERIFY_MODE_VALIDATE_EXTERNAL ((uint8_t)0x01) //!< Verify mode: validate external +#define VERIFY_MODE_EXTERNAL ((uint8_t)0x02) //!< Verify mode: external +#define VERIFY_MODE_VALIDATE ((uint8_t)0x03) //!< Verify mode: validate +#define VERIFY_MODE_INVALIDATE ((uint8_t)0x07) //!< Verify mode: invalidate +#define VERIFY_MODE_SOURCE_MASK ((uint8_t)0x20) //!< Verify mode message source mask +#define VERIFY_MODE_SOURCE_TEMPKEY ((uint8_t)0x00) //!< Verify mode message source is TempKey +#define VERIFY_MODE_SOURCE_MSGDIGBUF ((uint8_t)0x20) //!< Verify mode message source is the Message Digest Buffer +#define VERIFY_MODE_MAC_FLAG ((uint8_t)0x80) //!< Verify mode: MAC +#define VERIFY_KEY_B283 ((uint16_t)0x0000) //!< Verify key type: B283 +#define VERIFY_KEY_K283 ((uint16_t)0x0001) //!< Verify key type: K283 +#define VERIFY_KEY_P256 ((uint16_t)0x0004) //!< Verify key type: P256 +#define VERIFY_RSP_SIZE ATCA_RSP_SIZE_MIN //!< Verify command response packet size +#define VERIFY_RSP_SIZE_MAC ATCA_RSP_SIZE_32 //!< Verify command response packet size with validating MAC +/** @} */ + +/** \name Definitions for the Write Command + @{ */ +#define WRITE_ZONE_IDX ATCA_PARAM1_IDX //!< Write command index for zone +#define WRITE_ADDR_IDX ATCA_PARAM2_IDX //!< Write command index for address +#define WRITE_VALUE_IDX ATCA_DATA_IDX //!< Write command index for data +#define WRITE_MAC_VS_IDX ( 9) //!< Write command index for MAC following short data +#define WRITE_MAC_VL_IDX (37) //!< Write command index for MAC following long data +#define WRITE_MAC_SIZE (32) //!< Write MAC size +#define WRITE_ZONE_MASK ((uint8_t)0xC3) //!< Write zone bits 2 to 5 are 0. +#define WRITE_ZONE_WITH_MAC ((uint8_t)0x40) //!< Write zone bit 6: write encrypted with MAC +#define WRITE_ZONE_OTP ((uint8_t)1) //!< Write zone id OTP +#define WRITE_ZONE_DATA ((uint8_t)2) //!< Write zone id data +#define WRITE_RSP_SIZE ATCA_RSP_SIZE_MIN //!< Write command response packet size +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_compiler.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_compiler.h new file mode 100644 index 0000000..3955372 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_compiler.h @@ -0,0 +1,88 @@ +/** + * \file + * \brief CryptoAuthLiub is meant to be portable across architectures, even + * non-Microchip architectures and compiler environments. This file is + * for isolating compiler specific macros. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#ifndef ATCA_COMPILER_H_ +#define ATCA_COMPILER_H_ + +#if defined(__clang__) +/* Clang/LLVM. ---------------------------------------------- */ +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#define ATCA_UINT32_HOST_TO_BE(x) (x) +#define ATCA_UINT32_BE_TO_HOST(x) (x) +#define ATCA_UINT64_HOST_TO_BE(x) (x) +#define ATCA_UINT64_BE_TO_HOST(x) (x) +#else +#define ATCA_UINT32_HOST_TO_BE(x) __builtin_bswap32(x) +#define ATCA_UINT32_BE_TO_HOST(x) __builtin_bswap32(x) +#define ATCA_UINT64_HOST_TO_BE(x) __builtin_bswap64(x) +#define ATCA_UINT64_BE_TO_HOST(x) __builtin_bswap64(x) +#endif + +#elif defined(__ICC) || defined(__INTEL_COMPILER) +/* Intel ICC/ICPC. ------------------------------------------ */ + +#elif defined(__GNUC__) || defined(__GNUG__) +/* GNU GCC/G++. --------------------------------------------- */ +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#define ATCA_UINT32_HOST_TO_BE(x) (x) +#define ATCA_UINT32_BE_TO_HOST(x) (x) +#define ATCA_UINT64_HOST_TO_BE(x) (x) +#define ATCA_UINT64_BE_TO_HOST(x) (x) +#else +#define ATCA_UINT32_HOST_TO_BE(x) __builtin_bswap32(x) +#define ATCA_UINT32_BE_TO_HOST(x) __builtin_bswap32(x) +#define ATCA_UINT64_HOST_TO_BE(x) __builtin_bswap64(x) +#define ATCA_UINT64_BE_TO_HOST(x) __builtin_bswap64(x) +#endif + +#elif defined(__HP_cc) || defined(__HP_aCC) +/* Hewlett-Packard C/aC++. ---------------------------------- */ + +#elif defined(__IBMC__) || defined(__IBMCPP__) +/* IBM XL C/C++. -------------------------------------------- */ + +#elif defined(_MSC_VER) +/* Microsoft Visual Studio. --------------------------------- */ +// MSVC is usually always little-endian architecture +#include +#define ATCA_UINT32_HOST_TO_BE(x) _byteswap_ulong(x) +#define ATCA_UINT32_BE_TO_HOST(x) _byteswap_ulong(x) +#define ATCA_UINT64_HOST_TO_BE(x) _byteswap_uint64(x) +#define ATCA_UINT64_BE_TO_HOST(x) _byteswap_uint64(x) + +#elif defined(__PGI) +/* Portland Group PGCC/PGCPP. ------------------------------- */ + +#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) +/* Oracle Solaris Studio. ----------------------------------- */ + +#endif + +#endif /* ATCA_COMPILER_H_ */ diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.c new file mode 100644 index 0000000..5492c6a --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.c @@ -0,0 +1,174 @@ +/** + * \file + * \brief Microchip CryptoAuth device object + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include +#include "atca_device.h" + +/** \defgroup device ATCADevice (atca_) + * \brief ATCADevice object - composite of command and interface objects + @{ */ + + +#ifndef ATCA_NO_HEAP +/** \brief constructor for a Microchip CryptoAuth device + * \param[in] cfg Interface configuration object + * \return Reference to a new ATCADevice on success. NULL on failure. + */ +ATCADevice newATCADevice(ATCAIfaceCfg *cfg) +{ + ATCADevice ca_dev = NULL; + ATCA_STATUS status; + + if (cfg == NULL) + { + return NULL; + } + + ca_dev = (ATCADevice)malloc(sizeof(*ca_dev)); + if (ca_dev == NULL) + { + return NULL; + } + + ca_dev->mCommands = (ATCACommand)malloc(sizeof(*(ca_dev->mCommands))); + if (ca_dev->mCommands == NULL) + { + free(ca_dev); + ca_dev = NULL; + return NULL; + } + + ca_dev->mIface = (ATCAIface)malloc(sizeof(*(ca_dev->mIface))); + if (ca_dev->mIface == NULL) + { + free(ca_dev->mCommands); + free(ca_dev); + ca_dev = NULL; + return NULL; + } + + status = initATCADevice(cfg, ca_dev); + if (status != ATCA_SUCCESS) + { + free(ca_dev->mIface); + free(ca_dev->mCommands); + free(ca_dev); + ca_dev = NULL; + return NULL; + } + + return ca_dev; +} + +/** \brief destructor for a device NULLs reference after object is freed + * \param[in] ca_dev pointer to a reference to a device + */ +void deleteATCADevice(ATCADevice *ca_dev) +{ + if (ca_dev == NULL) + { + return; + } + + releaseATCADevice(*ca_dev); + deleteATCACommand(&(*ca_dev)->mCommands); + // Free iface manually as we don't want to call releaseATCAIface twice + if ((*ca_dev)->mIface) + { + free((*ca_dev)->mIface); + (*ca_dev)->mIface = NULL; + } + + free(*ca_dev); + *ca_dev = NULL; +} +#endif + +/** \brief Initializer for an Microchip CryptoAuth device + * \param[in] cfg pointer to an interface configuration object + * \param[inout] ca_dev As input, pre-allocated structure to be initialized. + * mCommands and mIface members should point to existing + * structures to be initialized. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS initATCADevice(ATCAIfaceCfg *cfg, ATCADevice ca_dev) +{ + ATCA_STATUS status; + + if (cfg == NULL || ca_dev == NULL || ca_dev->mCommands == NULL || ca_dev->mIface == NULL) + { + return ATCA_BAD_PARAM; + } + + status = initATCACommand(cfg->devtype, ca_dev->mCommands); + if (status != ATCA_SUCCESS) + { + return status; + } + + status = initATCAIface(cfg, ca_dev->mIface); + if (status != ATCA_SUCCESS) + { + return status; + } + + return ATCA_SUCCESS; +} + +/** \brief returns a reference to the ATCACommand object for the device + * \param[in] dev reference to a device + * \return reference to the ATCACommand object for the device + */ +ATCACommand atGetCommands(ATCADevice dev) +{ + return dev->mCommands; +} + +/** \brief returns a reference to the ATCAIface interface object for the device + * \param[in] dev reference to a device + * \return reference to the ATCAIface object for the device + */ +ATCAIface atGetIFace(ATCADevice dev) +{ + return dev->mIface; +} + +/** \brief Release any resources associated with the device. + * \param[in] ca_dev Device to release + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS releaseATCADevice(ATCADevice ca_dev) +{ + if (ca_dev == NULL) + { + return ATCA_BAD_PARAM; + } + + return releaseATCAIface(ca_dev->mIface); +} + +/** @} */ diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.h new file mode 100644 index 0000000..15fa544 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.h @@ -0,0 +1,66 @@ +/** + * \file + * + * \brief Microchip Crypto Auth device object + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef ATCA_DEVICE_H +#define ATCA_DEVICE_H + +#include "atca_command.h" +#include "atca_iface.h" +/** \defgroup device ATCADevice (atca_) + @{ */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** \brief atca_device is the C object backing ATCADevice. See the + * atca_device.h file for details on the ATCADevice methods. + */ +struct atca_device +{ + ATCACommand mCommands; //!< Command set for a given CryptoAuth device + ATCAIface mIface; //!< Physical interface +}; + +typedef struct atca_device * ATCADevice; + +ATCA_STATUS initATCADevice(ATCAIfaceCfg* cfg, ATCADevice cadev); +ATCADevice newATCADevice(ATCAIfaceCfg *cfg); +ATCA_STATUS releaseATCADevice(ATCADevice ca_dev); +void deleteATCADevice(ATCADevice *ca_dev); + +ATCACommand atGetCommands(ATCADevice dev); +ATCAIface atGetIFace(ATCADevice dev); + + + +#ifdef __cplusplus +} +#endif +/** @} */ +#endif diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_devtypes.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_devtypes.h new file mode 100644 index 0000000..6c34266 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_devtypes.h @@ -0,0 +1,54 @@ +/** + * \file + * \brief Microchip Crypto Auth + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#ifndef ATCA_DEVTYPES_H_ +#define ATCA_DEVTYPES_H_ + +/** \defgroup device ATCADevice (atca_) + @{ */ + +#ifdef __cplusplus +extern "C" { +#endif + + +/** \brief The supported Device type in Cryptoauthlib library */ +typedef enum +{ + ATSHA204A, + ATECC108A, + ATECC508A, + ATECC608A, + ATCA_DEV_UNKNOWN = 0x20 +} ATCADeviceType; + +#ifdef __cplusplus +} +#endif +/** @} */ +#endif /* ATCA_DEVTYPES_H_ */ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.c new file mode 100644 index 0000000..d3ad6f6 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.c @@ -0,0 +1,372 @@ +/** + * \file + * \brief Implements an execution handler that executes a given command on a + * device and returns the results. + * + * This implementation wraps Polling and No polling (simple wait) schemes into + * a single method and use it across the library. Polling is used by default, + * however, by defining the ATCA_NO_POLL symbol the code will instead wait an + * estimated max execution time before requesting the result. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include +#include +#include "atca_command.h" +#include "atca_device.h" +#include "atca_execution.h" +#include "atca_devtypes.h" +#include "hal/atca_hal.h" + +#ifndef ATCA_POLLING_INIT_TIME_MSEC +#define ATCA_POLLING_INIT_TIME_MSEC 1 +#endif + +#ifndef ATCA_POLLING_FREQUENCY_TIME_MSEC +#define ATCA_POLLING_FREQUENCY_TIME_MSEC 2 +#endif + +#ifndef ATCA_POLLING_MAX_TIME_MSEC +#define ATCA_POLLING_MAX_TIME_MSEC 2500 +#endif + +#ifdef ATCA_NO_POLL +// *INDENT-OFF* - Preserve time formatting from the code formatter +/*Execution times for ATSHA204A supported commands...*/ +static const device_execution_time_t device_execution_time_204[] = { + { ATCA_CHECKMAC, 38}, + { ATCA_DERIVE_KEY, 62}, + { ATCA_GENDIG, 43}, + { ATCA_HMAC, 69}, + { ATCA_INFO, 2}, + { ATCA_LOCK, 24}, + { ATCA_MAC, 35}, + { ATCA_NONCE, 60}, + { ATCA_PAUSE, 2}, + { ATCA_RANDOM, 50}, + { ATCA_READ, 5}, + { ATCA_SHA, 22}, + { ATCA_UPDATE_EXTRA, 12}, + { ATCA_WRITE, 42} +}; + +/*Execution times for ATECC108A supported commands...*/ +static const device_execution_time_t device_execution_time_108[] = { + { ATCA_CHECKMAC, 13}, + { ATCA_COUNTER, 20}, + { ATCA_DERIVE_KEY, 50}, + { ATCA_GENDIG, 11}, + { ATCA_GENKEY, 115}, + { ATCA_HMAC, 23}, + { ATCA_INFO, 2}, + { ATCA_LOCK, 32}, + { ATCA_MAC, 14}, + { ATCA_NONCE, 29}, + { ATCA_PAUSE, 3}, + { ATCA_PRIVWRITE, 48}, + { ATCA_RANDOM, 23}, + { ATCA_READ, 5}, + { ATCA_SHA, 9}, + { ATCA_SIGN, 60}, + { ATCA_UPDATE_EXTRA, 10}, + { ATCA_VERIFY, 72}, + { ATCA_WRITE, 26} +}; + +/*Execution times for ATECC508A supported commands...*/ +static const device_execution_time_t device_execution_time_508[] = { + { ATCA_CHECKMAC, 13}, + { ATCA_COUNTER, 20}, + { ATCA_DERIVE_KEY, 50}, + { ATCA_ECDH, 58}, + { ATCA_GENDIG, 11}, + { ATCA_GENKEY, 115}, + { ATCA_HMAC, 23}, + { ATCA_INFO, 2}, + { ATCA_LOCK, 32}, + { ATCA_MAC, 14}, + { ATCA_NONCE, 29}, + { ATCA_PAUSE, 3}, + { ATCA_PRIVWRITE, 48}, + { ATCA_RANDOM, 23}, + { ATCA_READ, 5}, + { ATCA_SHA, 9}, + { ATCA_SIGN, 60}, + { ATCA_UPDATE_EXTRA, 10}, + { ATCA_VERIFY, 72}, + { ATCA_WRITE, 26} +}; + +/*Execution times for ATECC608A-M0 supported commands...*/ +static const device_execution_time_t device_execution_time_608_m0[] = { + { ATCA_AES, 27}, + { ATCA_CHECKMAC, 40}, + { ATCA_COUNTER, 25}, + { ATCA_DERIVE_KEY, 50}, + { ATCA_ECDH, 75}, + { ATCA_GENDIG, 25}, + { ATCA_GENKEY, 115}, + { ATCA_INFO, 5}, + { ATCA_KDF, 165}, + { ATCA_LOCK, 35}, + { ATCA_MAC, 55}, + { ATCA_NONCE, 20}, + { ATCA_PRIVWRITE, 50}, + { ATCA_RANDOM, 23}, + { ATCA_READ, 5}, + { ATCA_SECUREBOOT, 80}, + { ATCA_SELFTEST, 250}, + { ATCA_SHA, 36}, + { ATCA_SIGN, 115}, + { ATCA_UPDATE_EXTRA, 10}, + { ATCA_VERIFY, 105}, + { ATCA_WRITE, 45} +}; + +/*Execution times for ATECC608A-M1 supported commands...*/ +static const device_execution_time_t device_execution_time_608_m1[] = { + { ATCA_AES, 27}, + { ATCA_CHECKMAC, 40}, + { ATCA_COUNTER, 25}, + { ATCA_DERIVE_KEY, 50}, + { ATCA_ECDH, 172}, + { ATCA_GENDIG, 35}, + { ATCA_GENKEY, 215}, + { ATCA_INFO, 5}, + { ATCA_KDF, 165}, + { ATCA_LOCK, 35}, + { ATCA_MAC, 55}, + { ATCA_NONCE, 20}, + { ATCA_PRIVWRITE, 50}, + { ATCA_RANDOM, 23}, + { ATCA_READ, 5}, + { ATCA_SECUREBOOT, 160}, + { ATCA_SELFTEST, 625}, + { ATCA_SHA, 42}, + { ATCA_SIGN, 220}, + { ATCA_UPDATE_EXTRA, 10}, + { ATCA_VERIFY, 295}, + { ATCA_WRITE, 45} +}; + +/*Execution times for ATECC608A-M2 supported commands...*/ +static const device_execution_time_t device_execution_time_608_m2[] = { + { ATCA_AES, 27}, + { ATCA_CHECKMAC, 40}, + { ATCA_COUNTER, 25}, + { ATCA_DERIVE_KEY, 50}, + { ATCA_ECDH, 531}, + { ATCA_GENDIG, 35}, + { ATCA_GENKEY, 653}, + { ATCA_INFO, 5}, + { ATCA_KDF, 165}, + { ATCA_LOCK, 35}, + { ATCA_MAC, 55}, + { ATCA_NONCE, 20}, + { ATCA_PRIVWRITE, 50}, + { ATCA_RANDOM, 23}, + { ATCA_READ, 5}, + { ATCA_SECUREBOOT, 480}, + { ATCA_SELFTEST, 2324}, + { ATCA_SHA, 75}, + { ATCA_SIGN, 665}, + { ATCA_UPDATE_EXTRA, 10}, + { ATCA_VERIFY, 1085}, + { ATCA_WRITE, 45} +}; +// *INDENT-ON* +#endif + +#ifdef ATCA_NO_POLL +/** \brief return the typical execution time for the given command + * \param[in] opcode Opcode value of the command + * \param[in] ca_cmd Command object for which the execution times are associated + * \return ATCA_SUCCESS + */ +ATCA_STATUS atGetExecTime(uint8_t opcode, ATCACommand ca_cmd) +{ + ATCA_STATUS status = ATCA_SUCCESS; + const device_execution_time_t *execution_times; + uint8_t i, no_of_commands; + + + switch (ca_cmd->dt) + { + case ATSHA204A: + execution_times = device_execution_time_204; + no_of_commands = sizeof(device_execution_time_204) / sizeof(device_execution_time_t); + break; + + case ATECC108A: + execution_times = device_execution_time_108; + no_of_commands = sizeof(device_execution_time_108) / sizeof(device_execution_time_t); + break; + + case ATECC508A: + execution_times = device_execution_time_508; + no_of_commands = sizeof(device_execution_time_508) / sizeof(device_execution_time_t); + break; + + case ATECC608A: + if (ca_cmd->clock_divider == ATCA_CHIPMODE_CLOCK_DIV_M1) + { + execution_times = device_execution_time_608_m1; + no_of_commands = sizeof(device_execution_time_608_m1) / sizeof(device_execution_time_t); + } + else if (ca_cmd->clock_divider == ATCA_CHIPMODE_CLOCK_DIV_M2) + { + execution_times = device_execution_time_608_m2; + no_of_commands = sizeof(device_execution_time_608_m2) / sizeof(device_execution_time_t); + } + else + { + // Assume default M0 clock divider + execution_times = device_execution_time_608_m0; + no_of_commands = sizeof(device_execution_time_608_m0) / sizeof(device_execution_time_t); + } + break; + + default: + no_of_commands = 0; + execution_times = NULL; + break; + } + + ca_cmd->execution_time_msec = ATCA_UNSUPPORTED_CMD; + + for (i = 0; i < no_of_commands; i++) + { + if (execution_times[i].opcode == opcode) + { + ca_cmd->execution_time_msec = execution_times[i].execution_time_msec; + break; + } + } + + if (ca_cmd->execution_time_msec == ATCA_UNSUPPORTED_CMD) + { + status = ATCA_BAD_OPCODE; + } + + return status; +} +#endif + +/** \brief Wakes up device, sends the packet, waits for command completion, + * receives response, and puts the device into the idle state. + * + * \param[inout] packet As input, the packet to be sent. As output, the + * data buffer in the packet structure will contain the + * response. + * \param[in] device CryptoAuthentication device to send the command to. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atca_execute_command(ATCAPacket* packet, ATCADevice device) +{ + ATCA_STATUS status; + uint32_t execution_or_wait_time; + uint32_t max_delay_count; + uint16_t rxsize; + + do + { +#ifdef ATCA_NO_POLL + if ((status = atGetExecTime(packet->opcode, device->mCommands)) != ATCA_SUCCESS) + { + return status; + } + execution_or_wait_time = device->mCommands->execution_time_msec; + max_delay_count = 0; +#else + execution_or_wait_time = ATCA_POLLING_INIT_TIME_MSEC; + max_delay_count = ATCA_POLLING_MAX_TIME_MSEC / ATCA_POLLING_FREQUENCY_TIME_MSEC; +#endif + + if ((status = atwake(device->mIface)) != ATCA_SUCCESS) + { + break; + } + + // send the command + if ((status = atsend(device->mIface, (uint8_t*)packet, packet->txsize)) != ATCA_SUCCESS) + { + break; + } + + // Delay for execution time or initial wait before polling + atca_delay_ms(execution_or_wait_time); + + do + { + memset(packet->data, 0, sizeof(packet->data)); + // receive the response + rxsize = sizeof(packet->data); + if ((status = atreceive(device->mIface, packet->data, &rxsize)) == ATCA_SUCCESS) + { + break; + } + +#ifndef ATCA_NO_POLL + // delay for polling frequency time + atca_delay_ms(ATCA_POLLING_FREQUENCY_TIME_MSEC); +#endif + } + while (max_delay_count-- > 0); + if (status != ATCA_SUCCESS) + { + break; + } + + // Check response size + if (rxsize < 4) + { + if (rxsize > 0) + { + status = ATCA_RX_FAIL; + } + else + { + status = ATCA_RX_NO_RESPONSE; + } + break; + } + + if ((status = atCheckCrc(packet->data)) != ATCA_SUCCESS) + { + break; + } + + if ((status = isATCAError(packet->data)) != ATCA_SUCCESS) + { + break; + } + } + while (0); + + atidle(device->mIface); + return status; +} + +/** @} */ diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.h new file mode 100644 index 0000000..e8ae17c --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.h @@ -0,0 +1,68 @@ +/** + * \file + * \brief Defines an execution handler that executes a given command on a + * device and returns the results. + * + * The basic flow is to wake the device, send the command, wait/poll for + * completion, and finally receives the response from the device and does + * basic checks before returning to caller. + * + * This handler supports the ATSHA and ATECC device family. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#ifndef ATCA_EXECUTION_H +#define ATCA_EXECUTION_H + +#include "atca_status.h" +#include "atca_command.h" +#include "atca_device.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define ATCA_UNSUPPORTED_CMD ((uint16_t)0xFFFF) + +#ifdef ATCA_NO_POLL +/** \brief Structure to hold the device execution time and the opcode for the + * corresponding command + */ +typedef struct +{ + uint8_t opcode; + uint16_t execution_time_msec; +}device_execution_time_t; + +ATCA_STATUS atGetExecTime(uint8_t opcode, ATCACommand ca_cmd); +#endif + +ATCA_STATUS atca_execute_command(ATCAPacket* packet, ATCADevice device); + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.c new file mode 100644 index 0000000..b3afb51 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.c @@ -0,0 +1,271 @@ +/** + * \file + * + * \brief Microchip CryptoAuthLib hardware interface object + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include +#include "atca_iface.h" +#include "hal/atca_hal.h" + +/** \defgroup interface ATCAIface (atca_) + * \brief Abstract interface to all CryptoAuth device types. This interface + * connects to the HAL implementation and abstracts the physical details of the + * device communication from all the upper layers of CryptoAuthLib + @{ */ + + +#ifndef ATCA_POST_DELAY_MSEC +/* \brief How long to wait after an initial wake failure for the POSt to + * complete. + * If Power-on self test (POST) is enabled, the self test will run on waking + * from sleep or during power-on, which delays the wake reply. + */ +#define ATCA_POST_DELAY_MSEC 25 +#endif + +ATCA_STATUS _atinit(ATCAIface ca_iface, ATCAHAL_t *hal); + +/** \brief Initializer for ATCAIface objects + * \param[in] cfg Logical configuration for the interface + * \param[in] ca_iface Interface structure to initialize. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS initATCAIface(ATCAIfaceCfg *cfg, ATCAIface ca_iface) +{ + ATCA_STATUS status; + + if (cfg == NULL || ca_iface == NULL) + { + return ATCA_BAD_PARAM; + } + + ca_iface->mType = cfg->iface_type; + ca_iface->mIfaceCFG = cfg; + + status = atinit(ca_iface); + if (status != ATCA_SUCCESS) + { + return status; + } + + return ATCA_SUCCESS; +} + +#ifndef ATCA_NO_HEAP +/** \brief Constructor for ATCAIface objects + * \param[in] cfg Logical configuration for the interface + * \return New interface instance on success. NULL on failure. + */ +ATCAIface newATCAIface(ATCAIfaceCfg *cfg) +{ + ATCAIface ca_iface; + ATCA_STATUS status; + + ca_iface = (ATCAIface)malloc(sizeof(struct atca_iface)); + status = initATCAIface(cfg, ca_iface); + if (status != ATCA_SUCCESS) + { + free(ca_iface); + ca_iface = NULL; + return NULL; + } + + return ca_iface; +} +#endif + +/** \brief Performs the HAL initialization by calling intermediate HAL wrapper + * function. If using the basic API, the atcab_init() function should + * be called instead. + * \param[in] ca_iface Device to interact with. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atinit(ATCAIface ca_iface) +{ + ATCA_STATUS status = ATCA_COMM_FAIL; + ATCAHAL_t hal; + + _atinit(ca_iface, &hal); + + status = ca_iface->atinit(&hal, ca_iface->mIfaceCFG); + if (status == ATCA_SUCCESS) + { + ca_iface->hal_data = hal.hal_data; + + // Perform the post init + status = ca_iface->atpostinit(ca_iface); + } + + return status; +} + +/** \brief Sends the data to the device by calling intermediate HAL wrapper + * function. + * \param[in] ca_iface Device to interact with. + * \param[in] txdata Data to be transmitted to the device. + * \param[in] txlength Number of bytes to be transmitted to the device. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atsend(ATCAIface ca_iface, uint8_t *txdata, int txlength) +{ + return ca_iface->atsend(ca_iface, txdata, txlength); +} + +/**\brief Receives data from the device by calling intermediate HAL wrapper + * function. + * \param[in] ca_iface Device to interact with. + * \param[out] rxdata Data received will be returned here. + * \param[inout] rxlength As input, the size of the rxdata buffer. + * As output, the number of bytes received. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atreceive(ATCAIface ca_iface, uint8_t *rxdata, uint16_t *rxlength) +{ + return ca_iface->atreceive(ca_iface, rxdata, rxlength); +} + +/** \brief Wakes up the device by calling intermediate HAL wrapper function. + * If using the basic API, the atcab_wakeup() function should be used + * instead. + * \param[in] ca_iface Device to interact with. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atwake(ATCAIface ca_iface) +{ + ATCA_STATUS status = ca_iface->atwake(ca_iface); + + if (status == ATCA_WAKE_FAILED) + { + // The device might be performing a POST. Wait for it to complete + // and try again. + atca_delay_ms(ATCA_POST_DELAY_MSEC); + + status = ca_iface->atwake(ca_iface); + } + + return status; +} + + +/** \brief Puts the device into idle state by calling intermediate HAL wrapper + * function. If using the basic API, the atcab_idle() function should + * be used instead. + * \param[in] ca_iface Device to interact with. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atidle(ATCAIface ca_iface) +{ + ATCA_STATUS status; + + status = ca_iface->atidle(ca_iface); + atca_delay_ms(1); + return status; +} + +/** \brief Puts the device into sleep state by calling intermediate HAL wrapper + * function. If using the basic API, the atcab_sleep() function should + * be used instead. + * \param[in] ca_iface Device to interact with. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atsleep(ATCAIface ca_iface) +{ + ATCA_STATUS status; + + status = ca_iface->atsleep(ca_iface); + atca_delay_ms(1); + return status; +} + + +/** \brief Returns the logical interface configuration for the device. + * \param[in] ca_iface Device interface. + * \return Logical interface configuration. + */ +ATCAIfaceCfg * atgetifacecfg(ATCAIface ca_iface) +{ + return ca_iface->mIfaceCFG; +} + + +/** \brief Returns the HAL data pointer for the device. + * \param[in] ca_iface Device interface. + * \return HAL data pointer. + */ +void* atgetifacehaldat(ATCAIface ca_iface) +{ + return ca_iface->hal_data; +} + +/** \brief Instruct the HAL driver to release any resources associated with + * this interface. + * \param[in] ca_iface Device interface. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS releaseATCAIface(ATCAIface ca_iface) +{ + if (ca_iface == NULL) + { + return ATCA_BAD_PARAM; + } + + return hal_iface_release(ca_iface->mType, ca_iface->hal_data); +} + +#ifndef ATCA_NO_HEAP +/** \brief Instruct the HAL driver to release any resources associated with + * this interface, then delete the object. + * \param[in] ca_iface Device interface. + */ +void deleteATCAIface(ATCAIface *ca_iface) +{ + if (ca_iface == NULL) + { + return; + } + + releaseATCAIface(*ca_iface); + free(*ca_iface); + *ca_iface = NULL; +} +#endif + +ATCA_STATUS _atinit(ATCAIface ca_iface, ATCAHAL_t *hal) +{ + // get method mapping to HAL methods for this interface + hal_iface_init(ca_iface->mIfaceCFG, hal); + ca_iface->atinit = hal->halinit; + ca_iface->atpostinit = hal->halpostinit; + ca_iface->atsend = hal->halsend; + ca_iface->atreceive = hal->halreceive; + ca_iface->atwake = hal->halwake; + ca_iface->atsleep = hal->halsleep; + ca_iface->atidle = hal->halidle; + ca_iface->hal_data = hal->hal_data; + + return ATCA_SUCCESS; +} +/** @} */ diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.h new file mode 100644 index 0000000..8db967b --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.h @@ -0,0 +1,173 @@ +/** + * \file + * + * \brief Microchip Crypto Auth hardware interface object + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef ATCA_IFACE_H +#define ATCA_IFACE_H + +/** \defgroup interface ATCAIface (atca_) + * \brief Abstract interface to all CryptoAuth device types. This interface + * connects to the HAL implementation and abstracts the physical details of the + * device communication from all the upper layers of CryptoAuthLib + @{ */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "atca_command.h" + +typedef enum +{ + ATCA_I2C_IFACE, + ATCA_SWI_IFACE, + ATCA_UART_IFACE, + ATCA_SPI_IFACE, + ATCA_HID_IFACE, + ATCA_CUSTOM_IFACE, + // additional physical interface types here + ATCA_UNKNOWN_IFACE, +} ATCAIfaceType; + +/* ATCAIfaceCfg is a mediator object between a completely abstract notion of a + physical interface and an actual physical interface. + + The main purpose of it is to keep hardware specifics from bleeding into the + higher levels - hardware specifics could include things like framework + specific items (ASF SERCOM) vs a non-Microchip I2C library constant that + defines an I2C port. But I2C has roughly the same parameters regardless of + architecture and framework. + */ + +typedef struct +{ + + ATCAIfaceType iface_type; // active iface - how to interpret the union below + ATCADeviceType devtype; // explicit device type + + union // each instance of an iface cfg defines a single type of interface + { + struct ATCAI2C + { + uint8_t slave_address; // 8-bit slave address + uint8_t bus; // logical i2c bus number, 0-based - HAL will map this to a pin pair for SDA SCL + uint32_t baud; // typically 400000 + } atcai2c; + + struct ATCASWI + { + uint8_t bus; // logical SWI bus - HAL will map this to a pin or uart port + } atcaswi; + + struct ATCAUART + { + int port; // logic port number + uint32_t baud; // typically 115200 + uint8_t wordsize; // usually 8 + uint8_t parity; // 0 == even, 1 == odd, 2 == none + uint8_t stopbits; // 0,1,2 + } atcauart; + + struct ATCAHID + { + int idx; // HID enumeration index + uint32_t vid; // Vendor ID of kit (0x03EB for CK101) + uint32_t pid; // Product ID of kit (0x2312 for CK101) + uint32_t packetsize; // Size of the USB packet + uint8_t guid[16]; // The GUID for this HID device + } atcahid; + + struct ATCACUSTOM + { + ATCA_STATUS (*halinit)(void *hal, void *cfg); + ATCA_STATUS (*halpostinit)(void *iface); + ATCA_STATUS (*halsend)(void *iface, uint8_t *txdata, int txlength); + ATCA_STATUS (*halreceive)(void *iface, uint8_t* rxdata, uint16_t* rxlength); + ATCA_STATUS (*halwake)(void *iface); + ATCA_STATUS (*halidle)(void *iface); + ATCA_STATUS (*halsleep)(void *iface); + ATCA_STATUS (*halrelease)(void* hal_data); + } atcacustom; + + }; + + uint16_t wake_delay; // microseconds of tWHI + tWLO which varies based on chip type + int rx_retries; // the number of retries to attempt for receiving bytes + void * cfg_data; // opaque data used by HAL in device discovery +} ATCAIfaceCfg; +typedef struct atca_iface * ATCAIface; + + +/** \brief atca_iface is the C object backing ATCAIface. See the atca_iface.h file for + * details on the ATCAIface methods + */ + +struct atca_iface +{ + ATCAIfaceType mType; + ATCAIfaceCfg *mIfaceCFG; // points to previous defined/given Cfg object, caller manages this + + ATCA_STATUS (*atinit)(void *hal, ATCAIfaceCfg *); + ATCA_STATUS (*atpostinit)(ATCAIface hal); + ATCA_STATUS (*atsend)(ATCAIface hal, uint8_t *txdata, int txlength); + ATCA_STATUS (*atreceive)(ATCAIface hal, uint8_t *rxdata, uint16_t *rxlength); + ATCA_STATUS (*atwake)(ATCAIface hal); + ATCA_STATUS (*atidle)(ATCAIface hal); + ATCA_STATUS (*atsleep)(ATCAIface hal); + + // treat as private + void *hal_data; // generic pointer used by HAL to point to architecture specific structure + // no ATCA object should touch this except HAL, HAL manages this pointer and memory it points to +}; + +ATCA_STATUS initATCAIface(ATCAIfaceCfg *cfg, ATCAIface ca_iface); +ATCAIface newATCAIface(ATCAIfaceCfg *cfg); +ATCA_STATUS releaseATCAIface(ATCAIface ca_iface); +void deleteATCAIface(ATCAIface *ca_iface); + +// IFace methods +ATCA_STATUS atinit(ATCAIface ca_iface); +ATCA_STATUS atpostinit(ATCAIface ca_iface); +ATCA_STATUS atsend(ATCAIface ca_iface, uint8_t *txdata, int txlength); +ATCA_STATUS atreceive(ATCAIface ca_iface, uint8_t *rxdata, uint16_t *rxlength); +ATCA_STATUS atwake(ATCAIface ca_iface); +ATCA_STATUS atidle(ATCAIface ca_iface); +ATCA_STATUS atsleep(ATCAIface ca_iface); + +// accessors +ATCAIfaceCfg * atgetifacecfg(ATCAIface ca_iface); +void* atgetifacehaldat(ATCAIface ca_iface); + + +#ifdef __cplusplus +} +#endif +/** @} */ +#endif + + + diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_status.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_status.h new file mode 100644 index 0000000..036c597 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atca_status.h @@ -0,0 +1,84 @@ +/** + * \file + * + * \brief Microchip Crypto Auth status codes + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef _ATCA_STATUS_H +#define _ATCA_STATUS_H + +#include +#include "atca_bool.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* all status codes for the ATCA lib are defined here */ + +typedef enum +{ + ATCA_SUCCESS = 0x00, //!< Function succeeded. + ATCA_CONFIG_ZONE_LOCKED = 0x01, + ATCA_DATA_ZONE_LOCKED = 0x02, + ATCA_WAKE_FAILED = 0xD0, //!< response status byte indicates CheckMac failure (status byte = 0x01) + ATCA_CHECKMAC_VERIFY_FAILED = 0xD1, //!< response status byte indicates CheckMac failure (status byte = 0x01) + ATCA_PARSE_ERROR = 0xD2, //!< response status byte indicates parsing error (status byte = 0x03) + ATCA_STATUS_CRC = 0xD4, //!< response status byte indicates DEVICE did not receive data properly (status byte = 0xFF) + ATCA_STATUS_UNKNOWN = 0xD5, //!< response status byte is unknown + ATCA_STATUS_ECC = 0xD6, //!< response status byte is ECC fault (status byte = 0x05) + ATCA_STATUS_SELFTEST_ERROR = 0xD7, //!< response status byte is Self Test Error, chip in failure mode (status byte = 0x07) + ATCA_FUNC_FAIL = 0xE0, //!< Function could not execute due to incorrect condition / state. + ATCA_GEN_FAIL = 0xE1, //!< unspecified error + ATCA_BAD_PARAM = 0xE2, //!< bad argument (out of range, null pointer, etc.) + ATCA_INVALID_ID = 0xE3, //!< invalid device id, id not set + ATCA_INVALID_SIZE = 0xE4, //!< Count value is out of range or greater than buffer size. + ATCA_RX_CRC_ERROR = 0xE5, //!< CRC error in data received from device + ATCA_RX_FAIL = 0xE6, //!< Timed out while waiting for response. Number of bytes received is > 0. + ATCA_RX_NO_RESPONSE = 0xE7, //!< Not an error while the Command layer is polling for a command response. + ATCA_RESYNC_WITH_WAKEUP = 0xE8, //!< Re-synchronization succeeded, but only after generating a Wake-up + ATCA_PARITY_ERROR = 0xE9, //!< for protocols needing parity + ATCA_TX_TIMEOUT = 0xEA, //!< for Microchip PHY protocol, timeout on transmission waiting for master + ATCA_RX_TIMEOUT = 0xEB, //!< for Microchip PHY protocol, timeout on receipt waiting for master + ATCA_TOO_MANY_COMM_RETRIES = 0xEC, //!< Device did not respond too many times during a transmission. Could indicate no device present. + ATCA_SMALL_BUFFER = 0xED, //!< Supplied buffer is too small for data required + ATCA_COMM_FAIL = 0xF0, //!< Communication with device failed. Same as in hardware dependent modules. + ATCA_TIMEOUT = 0xF1, //!< Timed out while waiting for response. Number of bytes received is 0. + ATCA_BAD_OPCODE = 0xF2, //!< opcode is not supported by the device + ATCA_WAKE_SUCCESS = 0xF3, //!< received proper wake token + ATCA_EXECUTION_ERROR = 0xF4, //!< chip was in a state where it could not execute the command, response status byte indicates command execution error (status byte = 0x0F) + ATCA_UNIMPLEMENTED = 0xF5, //!< Function or some element of it hasn't been implemented yet + ATCA_ASSERT_FAILURE = 0xF6, //!< Code failed run-time consistency check + ATCA_TX_FAIL = 0xF7, //!< Failed to write + ATCA_NOT_LOCKED = 0xF8, //!< required zone was not locked + ATCA_NO_DEVICES = 0xF9, //!< For protocols that support device discovery (kit protocol), no devices were found + ATCA_HEALTH_TEST_ERROR = 0xFA, //!< random number generator health test error + ATCA_ALLOC_FAILURE = 0xFB, //!< Couldn't allocate required memory +} ATCA_STATUS; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert.h new file mode 100644 index 0000000..a9ca5e9 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert.h @@ -0,0 +1,66 @@ +/** + * \file + * \brief Declarations common to all atcacert code. + * + * These are common definitions used by all the atcacert code. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef ATCACERT_H +#define ATCACERT_H + +#include +#include + +/** \defgroup atcacert_ Certificate manipulation methods (atcacert_) + * + * \brief + * These methods provide convenient ways to perform certification I/O with + * CryptoAuth chips and perform certificate manipulation in memory + * + @{ */ +#ifndef FALSE +#define FALSE (0) +#endif +#ifndef TRUE +#define TRUE (1) +#endif + +#define ATCACERT_E_SUCCESS 0 //!< Operation completed successfully. +#define ATCACERT_E_ERROR 1 //!< General error. +#define ATCACERT_E_BAD_PARAMS 2 //!< Invalid/bad parameter passed to function. +#define ATCACERT_E_BUFFER_TOO_SMALL 3 //!< Supplied buffer for output is too small to hold the result. +#define ATCACERT_E_DECODING_ERROR 4 //!< Data being decoded/parsed has an invalid format. +#define ATCACERT_E_INVALID_DATE 5 //!< Date is invalid. +#define ATCACERT_E_UNIMPLEMENTED 6 //!< Function is unimplemented for the current configuration. +#define ATCACERT_E_UNEXPECTED_ELEM_SIZE 7 //!< A certificate element size was not what was expected. +#define ATCACERT_E_ELEM_MISSING 8 //!< The certificate element isn't defined for the certificate definition. +#define ATCACERT_E_ELEM_OUT_OF_BOUNDS 9 //!< Certificate element is out of bounds for the given certificate. +#define ATCACERT_E_BAD_CERT 10 //!< Certificate structure is bad in some way. +#define ATCACERT_E_WRONG_CERT_DEF 11 +#define ATCACERT_E_VERIFY_FAILED 12 //!< Certificate or challenge/response verification failed. +#define ATCACERT_E_INVALID_TRANSFORM 13 //!< Invalid transform passed to function. + +/** @} */ +#endif \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.c new file mode 100644 index 0000000..6d6daa9 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.c @@ -0,0 +1,366 @@ +/** + * \file + * \brief Client side cert i/o methods. These declarations deal with the client-side, the node being authenticated, + * of the authentication process. It is assumed the client has an ECC CryptoAuthentication device + * (e.g. ATECC508A) and the certificates are stored on that device. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#include +#include "atcacert_client.h" +#include "atcacert_pem.h" +#include "cryptoauthlib.h" +#include "basic/atca_basic.h" + +// Perform floor integer division (-1 / 2 == -1) instead of truncate towards zero (-1 / 2 == 0) +static int floor_div(int a, int b) +{ + int d = a / b; + int r = a % b; + + return r ? (d - ((a < 0) ^ (b < 0))) : d; +} + +int atcacert_get_response(uint8_t device_private_key_slot, + const uint8_t challenge[32], + uint8_t response[64]) +{ + if (device_private_key_slot > 15 || challenge == NULL || response == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + return atcab_sign(device_private_key_slot, challenge, response); +} + +int atcacert_read_device_loc(const atcacert_device_loc_t* device_loc, + uint8_t* data) +{ + int ret = 0; + + if (device_loc->zone == DEVZONE_DATA && device_loc->is_genkey) + { + uint8_t public_key[ATCA_PUB_KEY_SIZE]; + if (device_loc->offset + device_loc->count > sizeof(public_key)) + { + return ATCACERT_E_BAD_PARAMS; + } + + ret = atcab_get_pubkey(device_loc->slot, public_key); + if (ret != ATCA_SUCCESS) + { + return ret; + } + memcpy(data, &public_key[device_loc->offset], device_loc->count); + } + else + { + size_t count = device_loc->count; + size_t zone_size; + ret = atcab_get_zone_size(device_loc->zone, device_loc->slot, &zone_size); + if (ret != ATCA_SUCCESS) + { + return ret; + } + if (device_loc->offset + device_loc->count > zone_size) + { + if (device_loc->offset > zone_size) + { + return ATCACERT_E_BAD_PARAMS; + } + count = zone_size - device_loc->offset; + } + + ret = atcab_read_bytes_zone( + device_loc->zone, + device_loc->slot, + device_loc->offset, + data, + count); + if (ret != ATCA_SUCCESS) + { + return ret; + } + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_read_cert(const atcacert_def_t* cert_def, + const uint8_t ca_public_key[64], + uint8_t* cert, + size_t* cert_size) +{ + int ret = 0; + atcacert_device_loc_t device_locs[16]; + size_t device_locs_count = 0; + size_t i = 0; + atcacert_build_state_t build_state; + + if (cert_def == NULL || cert == NULL || cert_size == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + ret = atcacert_get_device_locs( + cert_def, + device_locs, + &device_locs_count, + sizeof(device_locs) / sizeof(device_locs[0]), + ATCA_BLOCK_SIZE); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_cert_build_start(&build_state, cert_def, cert, cert_size, ca_public_key); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + for (i = 0; i < device_locs_count; i++) + { + static uint8_t data[416]; + ret = atcacert_read_device_loc(&device_locs[i], data); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_cert_build_process(&build_state, &device_locs[i], data); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + } + + ret = atcacert_cert_build_finish(&build_state); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_write_cert(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size) +{ + int ret = 0; + atcacert_device_loc_t device_locs[16]; + size_t device_locs_count = 0; + size_t i = 0; + + if (cert_def == NULL || cert == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + ret = atcacert_get_device_locs( + cert_def, + device_locs, + &device_locs_count, + sizeof(device_locs) / sizeof(device_locs[0]), + ATCA_BLOCK_SIZE); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + for (i = 0; i < device_locs_count; i++) + { + int end_block; + int start_block; + static uint8_t data[416]; + int block; + + if (device_locs[i].zone == DEVZONE_CONFIG) + { + continue; // Cert data isn't written to the config zone, only read + } + if (device_locs[i].zone == DEVZONE_DATA && device_locs[i].is_genkey) + { + continue; // Public key is generated not written + + } + ret = atcacert_get_device_data(cert_def, cert, cert_size, &device_locs[i], data); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + start_block = device_locs[i].offset / ATCA_BLOCK_SIZE; + end_block = floor_div((int)(device_locs[i].offset + device_locs[i].count) - 1, ATCA_BLOCK_SIZE); + for (block = start_block; block <= end_block; block++) + { + ret = atcab_write_zone( + device_locs[i].zone, + device_locs[i].slot, + (uint8_t)block, + 0, + &data[(block - start_block) * ATCA_BLOCK_SIZE], + ATCA_BLOCK_SIZE); + if (ret != ATCA_SUCCESS) + { + return ret; + } + } + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_create_csr_pem(const atcacert_def_t* csr_def, char* csr, size_t* csr_size) +{ + ATCA_STATUS status = ATCA_SUCCESS; + size_t csr_max_size; + size_t csr_der_size; + + // Check the pointers + if (csr_def == NULL || csr == NULL || csr_size == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + csr_max_size = *csr_size; + *csr_size = 0; + + // Create DER CSR + csr_der_size = csr_max_size; + status = atcacert_create_csr(csr_def, (uint8_t*)csr, &csr_der_size); + if (status != ATCACERT_E_SUCCESS) + { + return status; + } + + // Move the DER CSR to the end of the buffer, so we can encode it into + // PEM in place. + memmove(csr + (csr_max_size - csr_der_size), csr, csr_der_size); + + *csr_size = csr_max_size; + status = atcacert_encode_pem_csr((uint8_t*)(csr + (csr_max_size - csr_der_size)), csr_der_size, csr, csr_size); + if (status != ATCACERT_E_SUCCESS) + { + return status; + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_create_csr(const atcacert_def_t* csr_def, uint8_t* csr, size_t* csr_size) +{ + ATCA_STATUS status = ATCA_SUCCESS; + uint8_t pub_key[ATCA_PUB_KEY_SIZE] = { 0 }; + uint8_t sig[ATCA_SIG_SIZE] = { 0 }; + const atcacert_device_loc_t* pub_dev_loc = NULL; + const atcacert_cert_loc_t* pub_loc = NULL; + uint16_t key_slot = 0; + uint16_t priv_key_slot = 0; + uint8_t tbs_digest[ATCA_BLOCK_SIZE] = { 0 }; + size_t csr_max_size = 0; + + do + { + // Check the pointers + if (csr_def == NULL || csr == NULL || csr == NULL || csr_size == NULL) + { + status = ATCACERT_E_BAD_PARAMS; + BREAK(status, "Null input parameter"); + } + // Check the csr buffer size + if (*csr_size < csr_def->cert_template_size) + { + status = ATCACERT_E_BUFFER_TOO_SMALL; + BREAK(status, "CSR buffer size too small"); + } + // Copy the CSR template into the CSR that will be returned + memcpy(csr, csr_def->cert_template, csr_def->cert_template_size); + csr_max_size = *csr_size; + *csr_size = csr_def->cert_template_size; + + // Get a few elements from the csr_def structure + pub_loc = &(csr_def->std_cert_elements[STDCERT_PUBLIC_KEY]); + pub_dev_loc = &(csr_def->public_key_dev_loc); + key_slot = pub_dev_loc->slot; + priv_key_slot = csr_def->private_key_slot; + + // Get the public key from the device + if (pub_dev_loc->is_genkey) + { + // Calculate the public key from the private key + status = atcab_get_pubkey(key_slot, pub_key); + if (status != ATCA_SUCCESS) + { + BREAK(status, "Could not generate public key"); + } + } + else + { + // Read the public key from a slot + status = atcab_read_pubkey(key_slot, pub_key); + if (status != ATCA_SUCCESS) + { + BREAK(status, "Could not read public key"); + } + } + // Insert the public key into the CSR template + status = atcacert_set_cert_element(csr_def, pub_loc, csr, *csr_size, pub_key, ATCA_PUB_KEY_SIZE); + if (status != ATCA_SUCCESS) + { + BREAK(status, "Setting CSR public key failed"); + } + + // Get the CSR TBS digest + status = atcacert_get_tbs_digest(csr_def, csr, *csr_size, tbs_digest); + if (status != ATCA_SUCCESS) + { + BREAK(status, "Get TBS digest failed"); + } + + // Sign the TBS digest + status = atcab_sign(priv_key_slot, tbs_digest, sig); + if (status != ATCA_SUCCESS) + { + BREAK(status, "Signing CSR failed"); + } + + // Insert the signature into the CSR template + status = atcacert_set_signature(csr_def, csr, csr_size, csr_max_size, sig); + if (status != ATCA_SUCCESS) + { + BREAK(status, "Setting CSR signature failed"); + } + + // The exact size of the csr cannot be determined until after adding the signature + // it is returned in the csr_size parameter. (*csr_size = *csr_size;) + + } + while (false); + + return status; +} + + diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.h new file mode 100644 index 0000000..18dfa31 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.h @@ -0,0 +1,152 @@ +/** + * \file + * \brief Client side cert i/o methods. These declarations deal with the client-side, the node being authenticated, + * of the authentication process. It is assumed the client has an ECC CryptoAuthentication device + * (e.g. ATECC508A) and the certificates are stored on that device. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#ifndef ATCACERT_CLIENT_H +#define ATCACERT_CLIENT_H + +#include +#include +#include "atcacert_def.h" + +// Inform function naming when compiling in C++ +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup atcacert_ Certificate manipulation methods (atcacert_) + * + * \brief + * These methods provide convenient ways to perform certification I/O with + * CryptoAuth chips and perform certificate manipulation in memory + * + @{ */ + +/** \brief Read the data from a device location. + * + * \param[in] device_loc Device location to read data from. + * \param[out] data Data read is returned here. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_read_device_loc(const atcacert_device_loc_t* device_loc, + uint8_t* data); + +/** + * \brief Reads the certificate specified by the certificate definition from the + * ATECC508A device. + * + * This process involves reading the dynamic cert data from the device and combining it + * with the template found in the certificate definition. + * + * \param[in] cert_def Certificate definition describing where to find the dynamic + * certificate information on the device and how to incorporate it + * into the template. + * \param[in] ca_public_key The ECC P256 public key of the certificate authority that signed + * this certificate. Formatted as the 32 byte X and Y integers + * concatenated together (64 bytes total). Set to NULL if the + * authority key id is not needed, set properly in the cert_def + * template, or stored on the device as specifed in the + * cert_def cert_elements. + * \param[out] cert Buffer to received the certificate. + * \param[inout] cert_size As input, the size of the cert buffer in bytes. + * As output, the size of the certificate returned in cert in bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_read_cert(const atcacert_def_t* cert_def, + const uint8_t ca_public_key[64], + uint8_t* cert, + size_t* cert_size); + +/** + * \brief Take a full certificate and write it to the ATECC508A device according to the + * certificate definition. + * + * \param[in] cert_def Certificate definition describing where the dynamic certificate + * information is and how to store it on the device. + * \param[in] cert Full certificate to be stored. + * \param[in] cert_size Size of the full certificate in bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_write_cert(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size); + +/** + * \brief Creates a CSR specified by the CSR definition from the ATECC508A device. + * This process involves reading the dynamic CSR data from the device and combining it + * with the template found in the CSR definition, then signing it. Return the CSR int der format + * \param[in] csr_def CSR definition describing where to find the dynamic CSR information + * on the device and how to incorporate it into the template. + * \param[out] csr Buffer to receive the CSR. + * \param[inout] csr_size As input, the size of the CSR buffer in bytes. + * As output, the size of the CSR returned in cert in bytes. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +int atcacert_create_csr(const atcacert_def_t* csr_def, uint8_t* csr, size_t* csr_size); + +/** + * \brief Creates a CSR specified by the CSR definition from the ATECC508A device. + * This process involves reading the dynamic CSR data from the device and combining it + * with the template found in the CSR definition, then signing it. Return the CSR int der format + * \param[in] csr_def CSR definition describing where to find the dynamic CSR information + * on the device and how to incorporate it into the template. + * \param[out] csr Buffer to received the CSR formatted as PEM. + * \param[inout] csr_size As input, the size of the CSR buffer in bytes. + * As output, the size of the CSR as PEM returned in cert in bytes. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +int atcacert_create_csr_pem(const atcacert_def_t* csr_def, char* csr, size_t* csr_size); + +/** + * \brief Calculates the response to a challenge sent from the host. + * + * The challenge-response protocol is an ECDSA Sign and Verify. This performs the ECDSA Sign on the + * challenge and returns the signature as the response. + * + * \param[in] device_private_key_slot Slot number for the device's private key. This must be the + * same slot used to generate the public key included in the + * device's certificate. + * \param[in] challenge Challenge to generate the response for. Must be 32 bytes. + * \param[out] response Response will be returned in this buffer. 64 bytes. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +int atcacert_get_response(uint8_t device_private_key_slot, + const uint8_t challenge[32], + uint8_t response[64]); + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.c new file mode 100644 index 0000000..6876860 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.c @@ -0,0 +1,1102 @@ +/** + * \file + * \brief Date handling with regard to certificates. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include +#include "atcacert_date.h" + + +const size_t ATCACERT_DATE_FORMAT_SIZES[ATCACERT_DATE_FORMAT_SIZES_COUNT] = { + DATEFMT_ISO8601_SEP_SIZE, + DATEFMT_RFC5280_UTC_SIZE, + DATEFMT_POSIX_UINT32_BE_SIZE, + DATEFMT_POSIX_UINT32_LE_SIZE, + DATEFMT_RFC5280_GEN_SIZE +}; + +int atcacert_date_enc(atcacert_date_format_t format, + const atcacert_tm_utc_t* timestamp, + uint8_t* formatted_date, + size_t* formatted_date_size) +{ + if (timestamp == NULL || formatted_date_size == NULL || format < 0 || format >= sizeof(ATCACERT_DATE_FORMAT_SIZES) / sizeof(ATCACERT_DATE_FORMAT_SIZES[0])) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (formatted_date != NULL && *formatted_date_size < ATCACERT_DATE_FORMAT_SIZES[format]) + { + *formatted_date_size = ATCACERT_DATE_FORMAT_SIZES[format]; + return ATCACERT_E_BUFFER_TOO_SMALL; + } + *formatted_date_size = ATCACERT_DATE_FORMAT_SIZES[format]; + if (formatted_date == NULL) + { + return ATCACERT_E_SUCCESS; // Caller just wanted + + } + switch (format) + { + case DATEFMT_ISO8601_SEP: return atcacert_date_enc_iso8601_sep(timestamp, formatted_date); + case DATEFMT_RFC5280_UTC: return atcacert_date_enc_rfc5280_utc(timestamp, formatted_date); + case DATEFMT_POSIX_UINT32_BE: return atcacert_date_enc_posix_uint32_be(timestamp, formatted_date); + case DATEFMT_POSIX_UINT32_LE: return atcacert_date_enc_posix_uint32_le(timestamp, formatted_date); + case DATEFMT_RFC5280_GEN: return atcacert_date_enc_rfc5280_gen(timestamp, formatted_date); + default: return ATCACERT_E_BAD_PARAMS; + } + + return ATCACERT_E_BAD_PARAMS; +} + +int atcacert_date_dec(atcacert_date_format_t format, + const uint8_t* formatted_date, + size_t formatted_date_size, + atcacert_tm_utc_t* timestamp) +{ + if (formatted_date == NULL || timestamp == NULL || format < 0 || format >= sizeof(ATCACERT_DATE_FORMAT_SIZES) / sizeof(ATCACERT_DATE_FORMAT_SIZES[0])) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (formatted_date_size < ATCACERT_DATE_FORMAT_SIZES[format]) + { + return ATCACERT_E_DECODING_ERROR; // Not enough data to parse this date format + + } + switch (format) + { + case DATEFMT_ISO8601_SEP: return atcacert_date_dec_iso8601_sep(formatted_date, timestamp); + case DATEFMT_RFC5280_UTC: return atcacert_date_dec_rfc5280_utc(formatted_date, timestamp); + case DATEFMT_POSIX_UINT32_BE: return atcacert_date_dec_posix_uint32_be(formatted_date, timestamp); + case DATEFMT_POSIX_UINT32_LE: return atcacert_date_dec_posix_uint32_le(formatted_date, timestamp); + case DATEFMT_RFC5280_GEN: return atcacert_date_dec_rfc5280_gen(formatted_date, timestamp); + default: return ATCACERT_E_BAD_PARAMS; + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_date_get_max_date(atcacert_date_format_t format, atcacert_tm_utc_t* timestamp) +{ + + if (timestamp == NULL || format < 0 || format >= sizeof(ATCACERT_DATE_FORMAT_SIZES) / sizeof(ATCACERT_DATE_FORMAT_SIZES[0])) + { + return ATCACERT_E_BAD_PARAMS; + } + + switch (format) + { + case DATEFMT_ISO8601_SEP: + timestamp->tm_year = 9999 - 1900; + timestamp->tm_mon = 12 - 1; + timestamp->tm_mday = 31; + timestamp->tm_hour = 23; + timestamp->tm_min = 59; + timestamp->tm_sec = 59; + break; + + case DATEFMT_RFC5280_UTC: + timestamp->tm_year = 2049 - 1900; + timestamp->tm_mon = 12 - 1; + timestamp->tm_mday = 31; + timestamp->tm_hour = 23; + timestamp->tm_min = 59; + timestamp->tm_sec = 59; + break; + + case DATEFMT_POSIX_UINT32_BE: + timestamp->tm_year = 2106 - 1900; + timestamp->tm_mon = 2 - 1; + timestamp->tm_mday = 7; + timestamp->tm_hour = 6; + timestamp->tm_min = 28; + timestamp->tm_sec = 15; + break; + + case DATEFMT_POSIX_UINT32_LE: + timestamp->tm_year = 2106 - 1900; + timestamp->tm_mon = 2 - 1; + timestamp->tm_mday = 7; + timestamp->tm_hour = 6; + timestamp->tm_min = 28; + timestamp->tm_sec = 15; + break; + + case DATEFMT_RFC5280_GEN: + timestamp->tm_year = 9999 - 1900; + timestamp->tm_mon = 12 - 1; + timestamp->tm_mday = 31; + timestamp->tm_hour = 23; + timestamp->tm_min = 59; + timestamp->tm_sec = 59; + break; + + default: return ATCACERT_E_BAD_PARAMS; + } + + return ATCACERT_E_SUCCESS; +} + +/** + * \brief Convert an unsigned integer to a zero padded string with no terminating null. + */ +static uint8_t* uint_to_str(uint32_t num, int width, uint8_t* str) +{ + uint8_t* ret = str + width; + int i; + + // Pre-fill the string width with zeros + for (i = 0; i < width; i++) + { + *(str++) = '0'; + } + // Convert the number from right to left + for (; num; num /= 10) + { + *(--str) = '0' + (num % 10); + } + + return ret; +} + +/** + * \brief Convert a number string as a zero padded unsigned integer back into a number + */ +static const uint8_t* str_to_uint(const uint8_t* str, int width, uint32_t* num) +{ + const uint8_t* error_ret = str; + const uint8_t* good_ret = str + width; + uint32_t prev_num = 0; + uint32_t digit_value = 1; + int digit; + + str += width - 1; + *num = 0; + for (digit = 0; digit < width; digit++) + { + if (*str < '0' || *str > '9') + { + return error_ret; // Character is not a digit + } + if (digit >= 10) + { + if (*str != '0') + { + return error_ret; // Number is larger than the output can handle + } + continue; + } + if (digit == 9 && *str > '4') + { + return error_ret; // Number is larger than the output can handle + + } + *num += digit_value * (*str - '0'); + if (*num < prev_num) + { + return error_ret; // Number rolled over, it is larger than the output can handle + + } + digit_value *= 10; + prev_num = *num; + str--; + } + + return good_ret; +} + +/** + * \brief Convert a number string as a zero padded unsigned integer back into a number constrained + * to an integer's size. + */ +static const uint8_t* str_to_int(const uint8_t* str, int width, int* num) +{ + uint32_t unum = 0; + const uint8_t* ret = str_to_uint(str, width, &unum); + + if (ret != str && unum > 2147483647UL) + { + ret = str; // Number exceeds int32's range + } + *num = (int)unum; + return ret; +} + +int atcacert_date_enc_iso8601_sep(const atcacert_tm_utc_t* timestamp, + uint8_t formatted_date[DATEFMT_ISO8601_SEP_SIZE]) +{ + uint8_t* cur_pos = formatted_date; + int year = 0; + + if (timestamp == NULL || formatted_date == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + year = timestamp->tm_year + 1900; + + if (year < 0 || year > 9999) + { + return ATCACERT_E_INVALID_DATE; + } + cur_pos = uint_to_str(year, 4, cur_pos); + + *(cur_pos++) = '-'; + + if (timestamp->tm_mon < 0 || timestamp->tm_mon > 11) + { + return ATCACERT_E_INVALID_DATE; + } + cur_pos = uint_to_str(timestamp->tm_mon + 1, 2, cur_pos); + + *(cur_pos++) = '-'; + + if (timestamp->tm_mday < 1 || timestamp->tm_mday > 31) + { + return ATCACERT_E_INVALID_DATE; + } + cur_pos = uint_to_str(timestamp->tm_mday, 2, cur_pos); + + *(cur_pos++) = 'T'; + + if (timestamp->tm_hour < 0 || timestamp->tm_hour > 23) + { + return ATCACERT_E_INVALID_DATE; + } + cur_pos = uint_to_str(timestamp->tm_hour, 2, cur_pos); + + *(cur_pos++) = ':'; + + if (timestamp->tm_min < 0 || timestamp->tm_min > 59) + { + return ATCACERT_E_INVALID_DATE; + } + cur_pos = uint_to_str(timestamp->tm_min, 2, cur_pos); + + *(cur_pos++) = ':'; + + if (timestamp->tm_sec < 0 || timestamp->tm_sec > 59) + { + return ATCACERT_E_INVALID_DATE; + } + cur_pos = uint_to_str(timestamp->tm_sec, 2, cur_pos); + + *(cur_pos++) = 'Z'; + + return ATCACERT_E_SUCCESS; +} + +int atcacert_date_dec_iso8601_sep(const uint8_t formatted_date[DATEFMT_ISO8601_SEP_SIZE], + atcacert_tm_utc_t* timestamp) +{ + const uint8_t* cur_pos = formatted_date; + const uint8_t* new_pos = NULL; + + if (formatted_date == NULL || timestamp == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + memset(timestamp, 0, sizeof(*timestamp)); + + new_pos = str_to_int(cur_pos, 4, ×tamp->tm_year); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + timestamp->tm_year -= 1900; + + if (*(cur_pos++) != '-') + { + return ATCACERT_E_DECODING_ERROR; // Unexpected separator + + } + new_pos = str_to_int(cur_pos, 2, ×tamp->tm_mon); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + timestamp->tm_mon -= 1; + + if (*(cur_pos++) != '-') + { + return ATCACERT_E_DECODING_ERROR; // Unexpected separator + + } + new_pos = str_to_int(cur_pos, 2, ×tamp->tm_mday); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + + if (*(cur_pos++) != 'T') + { + return ATCACERT_E_DECODING_ERROR; // Unexpected separator + + } + new_pos = str_to_int(cur_pos, 2, ×tamp->tm_hour); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + + if (*(cur_pos++) != ':') + { + return ATCACERT_E_DECODING_ERROR; // Unexpected separator + + } + new_pos = str_to_int(cur_pos, 2, ×tamp->tm_min); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + + if (*(cur_pos++) != ':') + { + return ATCACERT_E_DECODING_ERROR; // Unexpected separator + + } + new_pos = str_to_int(cur_pos, 2, ×tamp->tm_sec); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + + if (*(cur_pos++) != 'Z') + { + return ATCACERT_E_DECODING_ERROR; // Unexpected UTC marker + + } + return ATCACERT_E_SUCCESS; +} + +int atcacert_date_enc_rfc5280_utc(const atcacert_tm_utc_t* timestamp, + uint8_t formatted_date[DATEFMT_RFC5280_UTC_SIZE]) +{ + uint8_t* cur_pos = formatted_date; + int year = 0; + + if (timestamp == NULL || formatted_date == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + year = timestamp->tm_year + 1900; + + if (year >= 1950 && year <= 1999) + { + year = year - 1900; + } + else if (year >= 2000 && year <= 2049) + { + year = year - 2000; + } + else + { + return ATCACERT_E_INVALID_DATE; // Year out of range for RFC2459 UTC format + } + cur_pos = uint_to_str(year, 2, cur_pos); + + if (timestamp->tm_mon < 0 || timestamp->tm_mon > 11) + { + return ATCACERT_E_INVALID_DATE; + } + cur_pos = uint_to_str(timestamp->tm_mon + 1, 2, cur_pos); + + if (timestamp->tm_mday < 1 || timestamp->tm_mday > 31) + { + return ATCACERT_E_INVALID_DATE; + } + cur_pos = uint_to_str(timestamp->tm_mday, 2, cur_pos); + + if (timestamp->tm_hour < 0 || timestamp->tm_hour > 23) + { + return ATCACERT_E_INVALID_DATE; + } + cur_pos = uint_to_str(timestamp->tm_hour, 2, cur_pos); + + if (timestamp->tm_min < 0 || timestamp->tm_min > 59) + { + return ATCACERT_E_INVALID_DATE; + } + cur_pos = uint_to_str(timestamp->tm_min, 2, cur_pos); + + if (timestamp->tm_sec < 0 || timestamp->tm_sec > 59) + { + return ATCACERT_E_INVALID_DATE; + } + cur_pos = uint_to_str(timestamp->tm_sec, 2, cur_pos); + + *(cur_pos++) = 'Z'; + + return ATCACERT_E_SUCCESS; +} + +int atcacert_date_dec_rfc5280_utc(const uint8_t formatted_date[DATEFMT_RFC5280_UTC_SIZE], + atcacert_tm_utc_t* timestamp) +{ + const uint8_t* cur_pos = formatted_date; + const uint8_t* new_pos = NULL; + + if (formatted_date == NULL || timestamp == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + memset(timestamp, 0, sizeof(*timestamp)); + + new_pos = str_to_int(cur_pos, 2, ×tamp->tm_year); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + if (timestamp->tm_year < 50) + { + timestamp->tm_year += 2000; + } + else + { + timestamp->tm_year += 1900; + } + timestamp->tm_year -= 1900; + + new_pos = str_to_int(cur_pos, 2, ×tamp->tm_mon); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + timestamp->tm_mon -= 1; + + new_pos = str_to_int(cur_pos, 2, ×tamp->tm_mday); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + + new_pos = str_to_int(cur_pos, 2, ×tamp->tm_hour); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + + new_pos = str_to_int(cur_pos, 2, ×tamp->tm_min); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + + new_pos = str_to_int(cur_pos, 2, ×tamp->tm_sec); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + + if (*(cur_pos++) != 'Z') + { + return ATCACERT_E_DECODING_ERROR; // Unexpected UTC marker + + } + return ATCACERT_E_SUCCESS; +} + +int atcacert_date_enc_rfc5280_gen(const atcacert_tm_utc_t* timestamp, + uint8_t formatted_date[DATEFMT_RFC5280_GEN_SIZE]) +{ + uint8_t* cur_pos = formatted_date; + int year = 0; + + if (timestamp == NULL || formatted_date == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + year = timestamp->tm_year + 1900; + + if (year < 0 || year > 9999) + { + return ATCACERT_E_INVALID_DATE; + } + cur_pos = uint_to_str(year, 4, cur_pos); + + if (timestamp->tm_mon < 0 || timestamp->tm_mon > 11) + { + return ATCACERT_E_INVALID_DATE; + } + cur_pos = uint_to_str(timestamp->tm_mon + 1, 2, cur_pos); + + if (timestamp->tm_mday < 1 || timestamp->tm_mday > 31) + { + return ATCACERT_E_INVALID_DATE; + } + cur_pos = uint_to_str(timestamp->tm_mday, 2, cur_pos); + + if (timestamp->tm_hour < 0 || timestamp->tm_hour > 23) + { + return ATCACERT_E_INVALID_DATE; + } + cur_pos = uint_to_str(timestamp->tm_hour, 2, cur_pos); + + if (timestamp->tm_min < 0 || timestamp->tm_min > 59) + { + return ATCACERT_E_INVALID_DATE; + } + cur_pos = uint_to_str(timestamp->tm_min, 2, cur_pos); + + if (timestamp->tm_sec < 0 || timestamp->tm_sec > 59) + { + return ATCACERT_E_INVALID_DATE; + } + cur_pos = uint_to_str(timestamp->tm_sec, 2, cur_pos); + + *(cur_pos++) = 'Z'; + + return ATCACERT_E_SUCCESS; +} + +int atcacert_date_dec_rfc5280_gen(const uint8_t formatted_date[DATEFMT_RFC5280_GEN_SIZE], + atcacert_tm_utc_t* timestamp) +{ + const uint8_t* cur_pos = formatted_date; + const uint8_t* new_pos = NULL; + + if (formatted_date == NULL || timestamp == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + memset(timestamp, 0, sizeof(*timestamp)); + + new_pos = str_to_int(cur_pos, 4, ×tamp->tm_year); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + timestamp->tm_year -= 1900; + + new_pos = str_to_int(cur_pos, 2, ×tamp->tm_mon); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + timestamp->tm_mon -= 1; + + new_pos = str_to_int(cur_pos, 2, ×tamp->tm_mday); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + + new_pos = str_to_int(cur_pos, 2, ×tamp->tm_hour); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + + new_pos = str_to_int(cur_pos, 2, ×tamp->tm_min); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + + new_pos = str_to_int(cur_pos, 2, ×tamp->tm_sec); + if (new_pos == cur_pos) + { + return ATCACERT_E_DECODING_ERROR; // There was a problem converting the string to a number + } + cur_pos = new_pos; + + if (*(cur_pos++) != 'Z') + { + return ATCACERT_E_DECODING_ERROR; // Unexpected UTC marker + + } + return ATCACERT_E_SUCCESS; +} + +static int is_leap_year(int year) +{ + return (year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)); +} + +static uint32_t get_year_secs(int year) +{ + if (is_leap_year(year)) + { + return (31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31) * 86400; + } + else + { + return (31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31) * 86400; + } +} + +static uint32_t get_month_secs(int year, int mon) +{ + static const uint32_t month_secs[] = { 2678400, 2419200, 2678400, 2592000, 2678400, 2592000, 2678400, 2678400, 2592000, 2678400, 2592000, 2678400 }; + + if (mon == 1 && is_leap_year(year)) + { + return 2505600; + } + else if (mon < 12) + { + return month_secs[mon]; + } + else + { + return 0; + } +} + +static atcacert_tm_utc_t *atcacert_gmtime32(const uint32_t *posix_time, atcacert_tm_utc_t *result) +{ + uint32_t secs_remaining = *posix_time; + uint32_t secs = 0; + + result->tm_year = 1970; + result->tm_mon = 0; + result->tm_mday = 1; + result->tm_hour = 0; + result->tm_min = 0; + result->tm_sec = 0; + + secs = get_year_secs(result->tm_year); + while (secs_remaining >= secs) + { + result->tm_year++; + secs_remaining -= secs; + secs = get_year_secs(result->tm_year); + } + + secs = get_month_secs(result->tm_year, result->tm_mon); + while (secs_remaining >= secs) + { + result->tm_mon++; + secs_remaining -= secs; + secs = get_month_secs(result->tm_year, result->tm_mon); + } + + result->tm_year -= 1900; + + result->tm_mday += secs_remaining / 86400; + secs_remaining %= 86400; + + result->tm_hour += secs_remaining / 3600; + secs_remaining %= 3600; + + result->tm_min += secs_remaining / 60; + secs_remaining %= 60; + + result->tm_sec += secs_remaining; + + return result; +} + +static uint32_t atcacert_mkgmtime32(const atcacert_tm_utc_t *timeptr) +{ + uint32_t posix_time = 0; + int cur_value = 0; + int year = timeptr->tm_year + 1900; + + cur_value = year - 1; + while (cur_value >= 1970) + { + posix_time += get_year_secs(cur_value--); + } + + cur_value = timeptr->tm_mon - 1; + while (cur_value >= 0) + { + posix_time += get_month_secs(year, cur_value--); + } + + posix_time += (uint32_t)(timeptr->tm_mday - 1) * 86400; + posix_time += (uint32_t)timeptr->tm_hour * 3600; + posix_time += (uint32_t)timeptr->tm_min * 60; + posix_time += (uint32_t)timeptr->tm_sec; + + return posix_time; +} + +static int atcacert_date_enc_posix_uint32(const atcacert_tm_utc_t* timestamp, uint32_t* posix_uint32) +{ + //atcacert_tm_utc_t timestamp_nc; + //time_t posix_time = 0; + int year = 0; + + if (timestamp == NULL || posix_uint32 == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + year = timestamp->tm_year + 1900; + + if (year > 2106 || year < 1970) + { + return ATCACERT_E_INVALID_DATE; //Timestamp out of range for POSIX time. + } + if (timestamp->tm_mon < 0 || timestamp->tm_mon > 11) + { + return ATCACERT_E_INVALID_DATE; + } + if (timestamp->tm_mday < 1 || timestamp->tm_mday > 31) + { + return ATCACERT_E_INVALID_DATE; + } + if (timestamp->tm_hour < 0 || timestamp->tm_hour > 23) + { + return ATCACERT_E_INVALID_DATE; + } + if (timestamp->tm_min < 0 || timestamp->tm_min > 59) + { + return ATCACERT_E_INVALID_DATE; + } + if (timestamp->tm_sec < 0 || timestamp->tm_sec > 59) + { + return ATCACERT_E_INVALID_DATE; + } + // Check for date past max date for POSIX time + if (year == 2106) + { + if (timestamp->tm_mon > 1) + { + return ATCACERT_E_INVALID_DATE; + } + if (timestamp->tm_mon == 1) + { + if (timestamp->tm_mday > 7) + { + return ATCACERT_E_INVALID_DATE; + } + if (timestamp->tm_mday == 7) + { + if (timestamp->tm_hour > 6) + { + return ATCACERT_E_INVALID_DATE; + } + if (timestamp->tm_hour == 6) + { + if (timestamp->tm_min > 28) + { + return ATCACERT_E_INVALID_DATE; + } + if (timestamp->tm_min == 28) + { + if (timestamp->tm_sec > 14) + { + return ATCACERT_E_INVALID_DATE; + } + } + } + } + } + } + +//#ifdef WIN32 +// timestamp_nc = *timestamp; +// posix_time = _mkgmtime(×tamp_nc); +// if (posix_time == -1) +// return ATCACERT_E_INVALID_DATE; +//#elif defined _BSD_SOURCE || defined _SVID_SOURCE +// timestamp_nc = *timestamp; +// posix_time = timegm(×tamp_nc); +// if (posix_time == -1) +// return ATCACERT_E_INVALID_DATE; +//#else +// // In order for this to work, we need to make sure mktime is using GMT. Since this can +// // vary from system to system, I'm putting this "assert" in every time since it may not +// // be caught early on. +// memset(×tamp_nc, 0, sizeof(timestamp_nc)); +// timestamp_nc.tm_year = 2013 - 1900; +// timestamp_nc.tm_mon = 11 - 1; +// timestamp_nc.tm_mday = 10; +// timestamp_nc.tm_hour = 9; +// timestamp_nc.tm_min = 8; +// timestamp_nc.tm_sec = 7; +// posix_time = mktime(×tamp_nc); +// if (posix_time != 1384074487) +// return ATCACERT_E_UNIMPLEMENTED; // mktime isn't using GMT as the timezone, this needs to be fixed +// +// timestamp_nc = *timestamp; +// posix_time = mktime(×tamp_nc); +// if (posix_time == -1) +// return ATCACERT_E_INVALID_DATE; +//#endif +// +// *posix_uint32 = (uint32_t)posix_time; + + *posix_uint32 = atcacert_mkgmtime32(timestamp); + + return ATCACERT_E_SUCCESS; +} + +int atcacert_date_enc_posix_uint32_be(const atcacert_tm_utc_t* timestamp, + uint8_t formatted_date[DATEFMT_POSIX_UINT32_BE_SIZE]) +{ + uint32_t posix_uint32 = 0; + int ret = 0; + + if (timestamp == NULL || formatted_date == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + ret = atcacert_date_enc_posix_uint32(timestamp, &posix_uint32); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + formatted_date[0] = (uint8_t)((posix_uint32 >> 24) & 0xFF); + formatted_date[1] = (uint8_t)((posix_uint32 >> 16) & 0xFF); + formatted_date[2] = (uint8_t)((posix_uint32 >> 8) & 0xFF); + formatted_date[3] = (uint8_t)((posix_uint32 >> 0) & 0xFF); + + return ATCACERT_E_SUCCESS; +} + +static int atcacert_date_dec_posix_uint32(uint32_t posix_uint32, + atcacert_tm_utc_t* timestamp) +{ +//#ifdef WIN32 +// time_t posix_time = (time_t)posix_uint32; +// errno_t ret = 0; +// +// if (timestamp == NULL) +// return ATCACERT_E_BAD_PARAMS; +// +// memset(timestamp, 0, sizeof(*timestamp)); +// ret = gmtime_s(timestamp, &posix_time); +// if (ret != 0) +// return ATCACERT_E_DECODING_ERROR; // Failed to convert to timestamp structure +//#else +// time_t posix_time = (time_t)posix_uint32; +// atcacert_tm_utc_t* ret = NULL; +// if (timestamp == NULL) +// return ATCACERT_E_BAD_PARAMS; +// +// memset(timestamp, 0, sizeof(*timestamp)); +// ret = gmtime_r(&posix_time, timestamp); +// if (ret == NULL) +// return ATCACERT_E_DECODING_ERROR; // Failed to convert to timestamp structure +//#endif + atcacert_gmtime32(&posix_uint32, timestamp); + + return ATCACERT_E_SUCCESS; +} + +int atcacert_date_dec_posix_uint32_be(const uint8_t formatted_date[DATEFMT_POSIX_UINT32_BE_SIZE], + atcacert_tm_utc_t* timestamp) +{ + uint32_t posix_uint32 = 0; + + if (formatted_date == NULL || timestamp == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + posix_uint32 = + ((uint32_t)formatted_date[0] << 24) | + ((uint32_t)formatted_date[1] << 16) | + ((uint32_t)formatted_date[2] << 8) | + ((uint32_t)formatted_date[3]); + + return atcacert_date_dec_posix_uint32(posix_uint32, timestamp); +} + +int atcacert_date_enc_posix_uint32_le(const atcacert_tm_utc_t* timestamp, + uint8_t formatted_date[DATEFMT_POSIX_UINT32_LE_SIZE]) +{ + uint32_t posix_uint32 = 0; + int ret = 0; + + if (timestamp == NULL || formatted_date == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + ret = atcacert_date_enc_posix_uint32(timestamp, &posix_uint32); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + formatted_date[0] = (uint8_t)((posix_uint32 >> 0) & 0xFF); + formatted_date[1] = (uint8_t)((posix_uint32 >> 8) & 0xFF); + formatted_date[2] = (uint8_t)((posix_uint32 >> 16) & 0xFF); + formatted_date[3] = (uint8_t)((posix_uint32 >> 24) & 0xFF); + + return ATCACERT_E_SUCCESS; +} + +int atcacert_date_dec_posix_uint32_le(const uint8_t formatted_date[DATEFMT_POSIX_UINT32_LE_SIZE], + atcacert_tm_utc_t* timestamp) +{ + uint32_t posix_uint32 = 0; + + if (formatted_date == NULL || timestamp == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + posix_uint32 = + ((uint32_t)formatted_date[3] << 24) | + ((uint32_t)formatted_date[2] << 16) | + ((uint32_t)formatted_date[1] << 8) | + ((uint32_t)formatted_date[0]); + + return atcacert_date_dec_posix_uint32(posix_uint32, timestamp); +} + +int atcacert_date_enc_compcert(const atcacert_tm_utc_t* issue_date, + uint8_t expire_years, + uint8_t enc_dates[3]) +{ + /* + * Issue and expire dates are compressed/encoded as below + * +---------------+---------------+---------------+ + * | Byte 1 | Byte 2 | Byte 3 | + * +---------------+---------------+---------------+ + * | | | | | | | | | | | | | | | | | | | | | | | | | + * | 5 bits | 4 bits| 5 bits | 5 bits | 5 bits | + * | Year | Month | Day | Hour | Expire | + * | | | | | Years | + * +---------+-------+---------+---------+---------+ + * + * Minutes and seconds are always zero. + */ + if (issue_date == NULL || enc_dates == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + if ((issue_date->tm_year + 1900) < 2000 || (issue_date->tm_year + 1900) > 2031) + { + return ATCACERT_E_INVALID_DATE; + } + if (issue_date->tm_mon < 0 || issue_date->tm_mon > 11) + { + return ATCACERT_E_INVALID_DATE; + } + if (issue_date->tm_mday < 1 || issue_date->tm_mday > 31) + { + return ATCACERT_E_INVALID_DATE; + } + if (issue_date->tm_hour < 0 || issue_date->tm_hour > 23) + { + return ATCACERT_E_INVALID_DATE; + } + if (expire_years > 31) + { + return ATCACERT_E_INVALID_DATE; + } + + memset(enc_dates, 0, 3); + + enc_dates[0] = (enc_dates[0] & 0x07) | (((issue_date->tm_year + 1900 - 2000) & 0x1F) << 3); + enc_dates[0] = (enc_dates[0] & 0xF8) | (((issue_date->tm_mon + 1) & 0x0F) >> 1); + enc_dates[1] = (enc_dates[1] & 0x7F) | (((issue_date->tm_mon + 1) & 0x0F) << 7); + enc_dates[1] = (enc_dates[1] & 0x83) | ((issue_date->tm_mday & 0x1F) << 2); + enc_dates[1] = (enc_dates[1] & 0xFC) | ((issue_date->tm_hour & 0x1F) >> 3); + enc_dates[2] = (enc_dates[2] & 0x1F) | ((issue_date->tm_hour & 0x1F) << 5); + enc_dates[2] = (enc_dates[2] & 0xE0) | (expire_years & 0x1F); + + return ATCACERT_E_SUCCESS; +} + +int atcacert_date_dec_compcert(const uint8_t enc_dates[3], + atcacert_date_format_t expire_date_format, + atcacert_tm_utc_t* issue_date, + atcacert_tm_utc_t* expire_date) +{ + int ret = ATCACERT_E_SUCCESS; + uint8_t expire_years = 0; + + /* + * Issue and expire dates are compressed/encoded as below + * +---------------+---------------+---------------+ + * | Byte 1 | Byte 2 | Byte 3 | + * +---------------+---------------+---------------+ + * | | | | | | | | | | | | | | | | | | | | | | | | | + * | 5 bits | 4 bits| 5 bits | 5 bits | 5 bits | + * | Year | Month | Day | Hour | Expire | + * | | | | | Years | + * +---------+-------+---------+---------+---------+ + * + * Minutes and seconds are always zero. + */ + + if (enc_dates == NULL || issue_date == NULL || expire_date == NULL || expire_date_format < 0 || expire_date_format >= sizeof(ATCACERT_DATE_FORMAT_SIZES) / sizeof(ATCACERT_DATE_FORMAT_SIZES[0])) + { + return ATCACERT_E_BAD_PARAMS; + } + + memset(issue_date, 0, sizeof(*issue_date)); + memset(expire_date, 0, sizeof(*expire_date)); + + issue_date->tm_year = (enc_dates[0] >> 3) + 2000 - 1900; + issue_date->tm_mon = (((enc_dates[0] & 0x07) << 1) | ((enc_dates[1] & 0x80) >> 7)) - 1; + issue_date->tm_mday = ((enc_dates[1] & 0x7C) >> 2); + issue_date->tm_hour = ((enc_dates[1] & 0x03) << 3) | ((enc_dates[2] & 0xE0) >> 5); + + expire_years = (enc_dates[2] & 0x1F); + + if (expire_years != 0) + { + expire_date->tm_year = issue_date->tm_year + expire_years; + expire_date->tm_mon = issue_date->tm_mon; + expire_date->tm_mday = issue_date->tm_mday; + expire_date->tm_hour = issue_date->tm_hour; + } + else + { + // Expire years of 0, means no expiration. Set to max date for the given expiration date format. + ret = atcacert_date_get_max_date(expire_date_format, expire_date); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + } + + return ATCACERT_E_SUCCESS; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.h new file mode 100644 index 0000000..e42a68e --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.h @@ -0,0 +1,194 @@ +/** + * \file + * \brief Declarations for date handling with regard to certificates. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef ATCACERT_DATE_H +#define ATCACERT_DATE_H + +#include +#include "atcacert.h" + + + +// Inform function naming when compiling in C++ +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup atcacert_ Certificate manipulation methods (atcacert_) + * + * \brief + * These methods provide convenient ways to perform certification I/O with + * CryptoAuth chips and perform certificate manipulation in memory + * + @{ */ + +/** + * Holds a broken-down date in UTC. Mimics atcacert_tm_utc_t from time.h. + */ +typedef struct atcacert_tm_utc_s +{ + int tm_sec; // 0 to 59 + int tm_min; // 0 to 59 + int tm_hour; // 0 to 23 + int tm_mday; // 1 to 31 + int tm_mon; // 0 to 11 + int tm_year; // years since 1900 +} atcacert_tm_utc_t; + +/** + * Date formats. + */ +typedef enum atcacert_date_format_e +{ + DATEFMT_ISO8601_SEP, //!< ISO8601 full date YYYY-MM-DDThh:mm:ssZ + DATEFMT_RFC5280_UTC, //!< RFC 5280 (X.509) 4.1.2.5.1 UTCTime format YYMMDDhhmmssZ + DATEFMT_POSIX_UINT32_BE, //!< POSIX (aka UNIX) date format. Seconds since Jan 1, 1970. 32 bit unsigned integer, big endian. + DATEFMT_POSIX_UINT32_LE, //!< POSIX (aka UNIX) date format. Seconds since Jan 1, 1970. 32 bit unsigned integer, little endian. + DATEFMT_RFC5280_GEN //!< RFC 5280 (X.509) 4.1.2.5.2 GeneralizedTime format YYYYMMDDhhmmssZ +} atcacert_date_format_t; + +#define DATEFMT_ISO8601_SEP_SIZE (20) +#define DATEFMT_RFC5280_UTC_SIZE (13) +#define DATEFMT_POSIX_UINT32_BE_SIZE (4) +#define DATEFMT_POSIX_UINT32_LE_SIZE (4) +#define DATEFMT_RFC5280_GEN_SIZE (15) +#define DATEFMT_MAX_SIZE DATEFMT_ISO8601_SEP_SIZE +#define ATCACERT_DATE_FORMAT_SIZES_COUNT 5 + +extern const size_t ATCACERT_DATE_FORMAT_SIZES[ATCACERT_DATE_FORMAT_SIZES_COUNT]; + +/** + * \brief Format a timestamp according to the format type. + * + * \param[in] format Format to use. + * \param[in] timestamp Timestamp to format. + * \param[out] formatted_date Formatted date will be returned in this buffer. + * \param[inout] formatted_date_size As input, the size of the formatted_date buffer. + * As output, the size of the returned formatted_date. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_date_enc(atcacert_date_format_t format, + const atcacert_tm_utc_t* timestamp, + uint8_t* formatted_date, + size_t* formatted_date_size); + +/** + * \brief Parse a formatted timestamp according to the specified format. + * + * \param[in] format Format to parse the formatted date as. + * \param[in] formatted_date Formatted date to be parsed. + * \param[in] formatted_date_size Size of the formatted date in bytes. + * \param[out] timestamp Parsed timestamp is returned here. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_date_dec(atcacert_date_format_t format, + const uint8_t* formatted_date, + size_t formatted_date_size, + atcacert_tm_utc_t* timestamp); + +/** + * \brief Encode the issue and expire dates in the format used by the compressed certificate. + * + * \param[in] issue_date Issue date to encode. Note that minutes and seconds will be ignored. + * \param[in] expire_years Expire date is expressed as a number of years past the issue date. + * 0 should be used if there is no expire date. + * \param[out] enc_dates Encoded dates for use in the compressed certificate is returned here. + * 3 bytes. + * + * \return 0 on success + */ +int atcacert_date_enc_compcert(const atcacert_tm_utc_t * issue_date, + uint8_t expire_years, + uint8_t enc_dates[3]); + +/** + * \brief Decode the issue and expire dates from the format used by the compressed certificate. + * + * \param[in] enc_dates Encoded date from the compressed certificate. 3 bytes. + * \param[in] expire_date_format Expire date format. Only used to determine max date when no + * expiration date is specified by the encoded date. + * \param[out] issue_date Decoded issue date is returned here. + * \param[out] expire_date Decoded expire date is returned here. If there is no + * expiration date, the expire date will be set to a maximum + * value for the given expire_date_format. + * + * \return 0 on success + */ +int atcacert_date_dec_compcert(const uint8_t enc_dates[3], + atcacert_date_format_t expire_date_format, + atcacert_tm_utc_t* issue_date, + atcacert_tm_utc_t* expire_date); + +/** + * \brief Return the maximum date available for the given format. + * + * \param[in] format Format to get the max date for. + * \param[out] timestamp Max date is returned here. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_date_get_max_date(atcacert_date_format_t format, atcacert_tm_utc_t* timestamp); + +int atcacert_date_enc_iso8601_sep(const atcacert_tm_utc_t * timestamp, + uint8_t formatted_date[DATEFMT_ISO8601_SEP_SIZE]); + +int atcacert_date_dec_iso8601_sep(const uint8_t formatted_date[DATEFMT_ISO8601_SEP_SIZE], + atcacert_tm_utc_t* timestamp); + +int atcacert_date_enc_rfc5280_utc(const atcacert_tm_utc_t * timestamp, + uint8_t formatted_date[DATEFMT_RFC5280_UTC_SIZE]); + +int atcacert_date_dec_rfc5280_utc(const uint8_t formatted_date[DATEFMT_RFC5280_UTC_SIZE], + atcacert_tm_utc_t* timestamp); + +int atcacert_date_enc_rfc5280_gen(const atcacert_tm_utc_t * timestamp, + uint8_t formatted_date[DATEFMT_RFC5280_GEN_SIZE]); + +int atcacert_date_dec_rfc5280_gen(const uint8_t formatted_date[DATEFMT_RFC5280_GEN_SIZE], + atcacert_tm_utc_t* timestamp); + +int atcacert_date_enc_posix_uint32_be(const atcacert_tm_utc_t * timestamp, + uint8_t formatted_date[DATEFMT_POSIX_UINT32_BE_SIZE]); + +int atcacert_date_dec_posix_uint32_be(const uint8_t formatted_date[DATEFMT_POSIX_UINT32_BE_SIZE], + atcacert_tm_utc_t* timestamp); + +int atcacert_date_enc_posix_uint32_le(const atcacert_tm_utc_t * timestamp, + uint8_t formatted_date[DATEFMT_POSIX_UINT32_LE_SIZE]); + +int atcacert_date_dec_posix_uint32_le(const uint8_t formatted_date[DATEFMT_POSIX_UINT32_LE_SIZE], + atcacert_tm_utc_t* timestamp); + + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.c new file mode 100644 index 0000000..7cc01f1 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.c @@ -0,0 +1,1786 @@ +/** + * \file + * \brief Main certificate definition implementation. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "atcacert_def.h" +#include "crypto/atca_crypto_sw_sha1.h" +#include "crypto/atca_crypto_sw_sha2.h" +#include "atcacert_der.h" +#include "atcacert_date.h" +#include +#include "basic/atca_helpers.h" + +#define ATCACERT_MIN(x, y) ((x) < (y) ? (x) : (y)) +#define ATCACERT_MAX(x, y) ((x) >= (y) ? (x) : (y)) + +int atcacert_merge_device_loc(atcacert_device_loc_t* device_locs, + size_t* device_locs_count, + size_t device_locs_max_count, + const atcacert_device_loc_t* device_loc, + size_t block_size) +{ + size_t i = 0; + size_t new_offset; + size_t new_end; + + if (device_locs == NULL || device_locs_count == NULL || device_loc == NULL || block_size <= 0) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (device_loc->zone == DEVZONE_NONE || device_loc->count == 0) + { + return ATCACERT_E_SUCCESS; // New device location doesn't exist + + } + new_offset = (device_loc->offset / block_size) * block_size; // Round down to block_size + new_end = device_loc->offset + device_loc->count; + new_end = ((new_end % block_size) ? new_end / block_size + 1 : new_end / block_size) * block_size; // Round up to block size + + // Try to merge with an existing device location + for (i = 0; i < *device_locs_count; ++i) + { + atcacert_device_loc_t* cur_device_loc = &device_locs[i]; + size_t cur_end = cur_device_loc->offset + cur_device_loc->count; + + if (device_loc->zone != cur_device_loc->zone) + { + continue; // Not the same zone, can't merge + } + if (device_loc->zone == DEVZONE_DATA && device_loc->slot != cur_device_loc->slot) + { + continue; // Not the same slot, can't merge + } + if (device_loc->zone == DEVZONE_DATA && device_loc->is_genkey != cur_device_loc->is_genkey) + { + continue; // Not the same read method, can't merge. + } + if (new_end < cur_device_loc->offset || new_offset > cur_end) + { + continue; // Same zone, but non-continuous areas + + } + if (device_loc->offset < cur_device_loc->offset) + { + cur_device_loc->offset = device_loc->offset; + } + + if (new_end > cur_end) + { + cur_device_loc->count = (uint16_t)(new_end - cur_device_loc->offset); + } + else + { + cur_device_loc->count = (uint16_t)(cur_end - cur_device_loc->offset); + } + break; + } + + if (i == *device_locs_count) + { + // New device_loc wasn't merged into an existing one, add to the end of the list + if (*device_locs_count >= device_locs_max_count) + { + return ATCACERT_E_BUFFER_TOO_SMALL; // No room to add to list + + } + device_locs[*device_locs_count] = *device_loc; + // Adjust for block size + device_locs[*device_locs_count].offset = (uint16_t)new_offset; + device_locs[*device_locs_count].count = (uint16_t)(new_end - new_offset); + (*device_locs_count)++; + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_get_device_locs(const atcacert_def_t* cert_def, + atcacert_device_loc_t* device_locs, + size_t* device_locs_count, + size_t device_locs_max_count, + size_t block_size) +{ + int ret = 0; + size_t i; + + if (cert_def == NULL || device_locs == NULL || device_locs_count == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + ret = atcacert_merge_device_loc( + device_locs, + device_locs_count, + device_locs_max_count, + &cert_def->comp_cert_dev_loc, + block_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_merge_device_loc( + device_locs, + device_locs_count, + device_locs_max_count, + &cert_def->cert_sn_dev_loc, + block_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_merge_device_loc( + device_locs, + device_locs_count, + device_locs_max_count, + &cert_def->public_key_dev_loc, + block_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + if (cert_def->cert_elements_count > 0 && cert_def->cert_elements == NULL) + { + return ATCACERT_E_BAD_CERT; // Cert def is in an invalid state + + } + for (i = 0; i < cert_def->cert_elements_count; i++) + { + ret = atcacert_merge_device_loc( + device_locs, + device_locs_count, + device_locs_max_count, + &cert_def->cert_elements[i].device_loc, + block_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + } + + // Add the device SN to the list if the cert serial number scheme requires it + if (cert_def->sn_source == SNSRC_DEVICE_SN + || cert_def->sn_source == SNSRC_DEVICE_SN_HASH + || cert_def->sn_source == SNSRC_DEVICE_SN_HASH_POS + || cert_def->sn_source == SNSRC_DEVICE_SN_HASH_RAW) + { + // Device SN is config zone bytes 0-3 and 8-12 + atcacert_device_loc_t device_sn_loc = { + .zone = DEVZONE_CONFIG, + .slot = 0, // Ignored + .is_genkey = FALSE, // Ignored + .offset = 0, + .count = 13 + }; + + ret = atcacert_merge_device_loc( + device_locs, + device_locs_count, + device_locs_max_count, + &device_sn_loc, + block_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + } + + return ATCACERT_E_SUCCESS; +} + +static const uint8_t* atcacert_is_device_loc_match(const atcacert_device_loc_t* device_loc_dest, + const atcacert_device_loc_t* device_loc_src, + const uint8_t* src_data) +{ + size_t dest_end = device_loc_dest->offset + device_loc_dest->count; + size_t src_end = device_loc_src->offset + device_loc_src->count; + + if (device_loc_dest->zone == DEVZONE_NONE || device_loc_dest->count <= 0) + { + return NULL; // device_loc_dest is a null location + } + if (device_loc_src->zone == DEVZONE_NONE || device_loc_src->count <= 0) + { + return NULL; // device_loc_src is a null location + } + if (device_loc_dest->zone != device_loc_src->zone) + { + return NULL; + } + if (device_loc_dest->zone == DEVZONE_DATA && device_loc_dest->slot != device_loc_src->slot) + { + return NULL; + } + if (device_loc_dest->zone == DEVZONE_DATA && device_loc_dest->is_genkey != device_loc_src->is_genkey) + { + return NULL; + } + + if (device_loc_dest->offset < device_loc_src->offset || dest_end > src_end) + { + return NULL; + } + + // device_loc_dest is encompassed by device_loc_src, return a pointer to the data for device_loc_dest + return src_data + (device_loc_dest->offset - device_loc_src->offset); +} + +static int get_effective_offset(const atcacert_def_t* cert_def, const uint8_t* cert, size_t ref_offset) +{ + size_t sn_offset = 0; + + if (cert_def->type != CERTTYPE_X509 || cert_def->sn_source != SNSRC_STORED_DYNAMIC) + { + return 0; + } + + sn_offset = cert_def->std_cert_elements[STDCERT_CERT_SN].offset; + if (ref_offset <= sn_offset) + { + return 0; + } + + return (int)cert[sn_offset] - (int)cert_def->cert_template[sn_offset]; +} + +int atcacert_cert_build_start(atcacert_build_state_t* build_state, + const atcacert_def_t* cert_def, + uint8_t* cert, + size_t* cert_size, + const uint8_t ca_public_key[64]) +{ + int ret = 0; + + if (build_state == NULL || cert_def == NULL || cert == NULL || cert_size == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + memset(build_state, 0, sizeof(*build_state)); + + build_state->cert_def = cert_def; + build_state->cert = cert; + build_state->cert_size = cert_size; + build_state->max_cert_size = *cert_size; + build_state->is_device_sn = FALSE; + + if (build_state->max_cert_size < build_state->cert_def->cert_template_size) + { + *build_state->cert_size = build_state->cert_def->cert_template_size; + return ATCACERT_E_BUFFER_TOO_SMALL; // cert buffer is too small to contain the template + } + + // Initialize the cert buffer with the cert template + *build_state->cert_size = build_state->cert_def->cert_template_size; + memcpy(build_state->cert, build_state->cert_def->cert_template, build_state->cert_def->cert_template_size); + + if (build_state->cert_def->type == CERTTYPE_X509) + { + // Set a fake signature that should result in the largest X.509 cert. This will ensure + // the cert buffer is large enough early in the cert rebuilding process. + uint8_t large_sig[64]; + memset(large_sig, 0xFF, sizeof(large_sig)); + ret = atcacert_set_signature( + build_state->cert_def, + build_state->cert, + build_state->cert_size, + build_state->max_cert_size, + large_sig); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + } + + if (ca_public_key != NULL) + { + // Set the authority key ID + ret = atcacert_set_auth_key_id( + build_state->cert_def, + build_state->cert, + *build_state->cert_size, + ca_public_key); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_cert_build_process(atcacert_build_state_t* build_state, + const atcacert_device_loc_t* device_loc, + const uint8_t* device_data) +{ + int ret = 0; + size_t i = 0; + const uint8_t* data = NULL; + uint8_t public_key[64]; + static const atcacert_device_loc_t device_sn_dev_loc = { + .zone = DEVZONE_CONFIG, + .slot = 0, + .is_genkey = FALSE, + .offset = 0, + .count = 13 + }; + + if (build_state == NULL || device_loc == NULL || device_data == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + data = atcacert_is_device_loc_match(&build_state->cert_def->cert_sn_dev_loc, device_loc, device_data); + if (data != NULL) + { + ret = atcacert_set_cert_sn( + build_state->cert_def, + build_state->cert, + build_state->cert_size, + build_state->max_cert_size, + data, + build_state->cert_def->cert_sn_dev_loc.count); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + } + + data = atcacert_is_device_loc_match(&build_state->cert_def->public_key_dev_loc, device_loc, device_data); + if (data != NULL) + { + if (build_state->cert_def->public_key_dev_loc.count == 72) + { + // Public key is formatted with padding bytes in front of the X and Y components + atcacert_public_key_remove_padding(data, public_key); + ret = atcacert_set_subj_public_key( + build_state->cert_def, + build_state->cert, + *build_state->cert_size, + public_key); + } + else if (build_state->cert_def->public_key_dev_loc.count == 64) + { + ret = atcacert_set_subj_public_key( + build_state->cert_def, + build_state->cert, + *build_state->cert_size, + data); + } + else + { + return ATCACERT_E_BAD_CERT; // Unexpected public key size + + } + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + } + + data = atcacert_is_device_loc_match(&build_state->cert_def->comp_cert_dev_loc, device_loc, device_data); + if (data != NULL) + { + if (build_state->cert_def->comp_cert_dev_loc.count != 72) + { + return ATCACERT_E_BAD_CERT; // Unexpected compressed certificate size + + } + ret = atcacert_set_comp_cert( + build_state->cert_def, + build_state->cert, + build_state->cert_size, + build_state->max_cert_size, + data); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + } + + if (build_state->cert_def->cert_elements_count > 0 && build_state->cert_def->cert_elements == NULL) + { + return ATCACERT_E_BAD_CERT; + } + for (i = 0; i < build_state->cert_def->cert_elements_count; i++) + { + size_t j; + + + + data = atcacert_is_device_loc_match(&build_state->cert_def->cert_elements[i].device_loc, device_loc, device_data); + if (data != NULL) + { + uint8_t tf_buffer1[256]; + uint8_t tf_buffer2[256]; + uint8_t *dest_pt; + + size_t data_size = build_state->cert_def->cert_elements[i].cert_loc.count; + dest_pt = tf_buffer1; + + for (j = 0; j < sizeof(build_state->cert_def->cert_elements[i].transforms) / sizeof(atcacert_transform_t); j++) + { + size_t destination_size; + atcacert_transform_t transform; + + destination_size = sizeof(tf_buffer1); + transform = build_state->cert_def->cert_elements[i].transforms[j]; + + if (transform == TF_NONE) + { + break; + } + + if (j == 0) + { + data_size = build_state->cert_def->cert_elements[i].device_loc.count; + } + + if ((ret = atcacert_transform_data(transform, data, data_size, dest_pt, &destination_size)) != ATCACERT_E_SUCCESS) + { + return ret; + } + + data_size = destination_size; + + /* The below logic switches between the buffer tf_buffer1 & tf_buffer2 for the transform input & output. + The first transform stores output data to tf_buffer1 and the second transform takes the tf_buffer1 as input & + stores the output in tf_buffer2. + */ + + if ((j % 2) == 0) + { + data = dest_pt; + dest_pt = tf_buffer2; + } + else + { + data = tf_buffer2; + dest_pt = tf_buffer1; + + } + + } + + ret = atcacert_set_cert_element( + build_state->cert_def, + &build_state->cert_def->cert_elements[i].cert_loc, + build_state->cert, + *build_state->cert_size, + data, + data_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + } + } + + data = atcacert_is_device_loc_match(&device_sn_dev_loc, device_loc, device_data); + if (data != NULL) + { + // Get the device SN + build_state->is_device_sn = TRUE; + memcpy(&build_state->device_sn[0], &data[0], 4); + memcpy(&build_state->device_sn[4], &data[8], 5); + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_cert_build_finish(atcacert_build_state_t* build_state) +{ + int ret = 0; + const uint8_t* device_sn = NULL; + + if (build_state == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (build_state->is_device_sn) + { + device_sn = build_state->device_sn; + } + + ret = atcacert_gen_cert_sn(build_state->cert_def, build_state->cert, *build_state->cert_size, device_sn); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + return ret; +} + +int atcacert_is_device_loc_overlap(const atcacert_device_loc_t* device_loc1, + const atcacert_device_loc_t* device_loc2) +{ + if (device_loc1->zone != device_loc2->zone) + { + return FALSE; // Zones don't match, can't overlap + } + if (device_loc1->zone == DEVZONE_DATA && device_loc1->slot != device_loc2->slot) + { + return FALSE; // Data zone, slots don't match, can't overlap + } + if (device_loc1->zone == DEVZONE_DATA && device_loc1->is_genkey != device_loc2->is_genkey) + { + return FALSE; // Data zone, same slot, but read method doesn't match, can't overlap + + } + return !( device_loc1->offset + device_loc1->count <= device_loc2->offset + || device_loc1->offset >= device_loc2->offset + device_loc2->count); +} + +static void atcacert_copy_device_loc_data(const atcacert_device_loc_t* device_loc_src, + const uint8_t* data_src, + const atcacert_device_loc_t* device_loc_dest, + uint8_t* data_dest) +{ + size_t offset = ATCACERT_MAX(device_loc_src->offset, device_loc_dest->offset); + size_t end = ATCACERT_MIN(device_loc_src->offset + device_loc_src->count, device_loc_dest->offset + device_loc_dest->count); + + memcpy(&data_dest[offset - device_loc_dest->offset], &data_src[offset - device_loc_src->offset], end - offset); +} + +int atcacert_get_device_data(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + const atcacert_device_loc_t* device_loc, + uint8_t* device_data) +{ + int ret = 0; + int i = 0; + uint8_t temp_buf[256]; // Must be at least 72 bytes + size_t temp_buf_size = sizeof(temp_buf); + + if (cert_def == NULL || cert == NULL || device_loc == NULL || device_data == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + // Certificate serial number + if (atcacert_is_device_loc_overlap(&cert_def->cert_sn_dev_loc, device_loc)) + { + ret = atcacert_get_cert_sn(cert_def, cert, cert_size, temp_buf, &temp_buf_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + atcacert_copy_device_loc_data(&cert_def->cert_sn_dev_loc, temp_buf, device_loc, device_data); + } + + // Subject public key + if (atcacert_is_device_loc_overlap(&cert_def->public_key_dev_loc, device_loc)) + { + ret = atcacert_get_subj_public_key(cert_def, cert, cert_size, temp_buf); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + if (cert_def->public_key_dev_loc.count == 72) + { + // Public key is formatted with padding bytes in front of the X and Y components + atcacert_public_key_add_padding(temp_buf, temp_buf); + } + else if (cert_def->public_key_dev_loc.count != 64) + { + return ATCACERT_E_BAD_CERT; // Unexpected public key size + } + atcacert_copy_device_loc_data(&cert_def->public_key_dev_loc, temp_buf, device_loc, device_data); + } + + // Compressed certificate + if (atcacert_is_device_loc_overlap(&cert_def->comp_cert_dev_loc, device_loc)) + { + ret = atcacert_get_comp_cert(cert_def, cert, cert_size, temp_buf); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + if (cert_def->comp_cert_dev_loc.count != 72) + { + return ATCACERT_E_BAD_CERT; // Unexpected compressed certificate size + } + atcacert_copy_device_loc_data(&cert_def->comp_cert_dev_loc, temp_buf, device_loc, device_data); + } + + // Additional custom certificate elements + if (cert_def->cert_elements_count > 0 && cert_def->cert_elements == NULL) + { + return ATCACERT_E_BAD_CERT; + } + for (i = 0; i < cert_def->cert_elements_count; i++) + { + if (atcacert_is_device_loc_overlap(&cert_def->cert_elements[i].device_loc, device_loc)) + { + if (sizeof(temp_buf) < cert_def->cert_elements[i].device_loc.count) + { + return ATCACERT_E_BUFFER_TOO_SMALL; + } + ret = atcacert_get_cert_element( + cert_def, + &cert_def->cert_elements[i].cert_loc, + cert, + cert_size, + temp_buf, + cert_def->cert_elements[i].device_loc.count); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + atcacert_copy_device_loc_data(&cert_def->cert_elements[i].device_loc, temp_buf, device_loc, device_data); + } + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_set_subj_public_key(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t cert_size, + const uint8_t subj_public_key[64]) +{ + int ret = 0; + uint8_t key_id[20]; + + if (cert_def == NULL || cert == NULL || subj_public_key == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + ret = atcacert_set_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_PUBLIC_KEY], cert, cert_size, subj_public_key, 64); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_get_key_id(subj_public_key, key_id); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_set_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_SUBJ_KEY_ID], cert, cert_size, key_id, 20); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_get_subj_public_key(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + uint8_t subj_public_key[64]) +{ + if (cert_def == NULL || cert == NULL || subj_public_key == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + return atcacert_get_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_PUBLIC_KEY], cert, cert_size, subj_public_key, 64); +} + +int atcacert_get_subj_key_id(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + uint8_t subj_key_id[20]) +{ + if (cert_def == NULL || cert == NULL || subj_key_id == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + return atcacert_get_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_SUBJ_KEY_ID], cert, cert_size, subj_key_id, 20); +} + +int atcacert_set_signature(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t* cert_size, + size_t max_cert_size, + const uint8_t signature[64]) +{ + int ret = 0; + uint16_t sig_offset; + size_t cur_der_sig_size; + size_t new_der_sig_size; + size_t old_cert_der_length_size; + uint32_t new_cert_length; + + if (cert_def == NULL || cert == NULL || cert_size == NULL || signature == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + sig_offset = cert_def->std_cert_elements[STDCERT_SIGNATURE].offset; + sig_offset += get_effective_offset(cert_def, cert, sig_offset); + + // Non X.509 signatures are treated like normal certificate elements + if (cert_def->type != CERTTYPE_X509) + { + return atcacert_set_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_SIGNATURE], cert, *cert_size, signature, 64); + } + + if (sig_offset >= *cert_size) + { + return ATCACERT_E_ELEM_OUT_OF_BOUNDS; // Signature element is shown as past the end of the certificate + + } + // Current size of the signature is from its offset to the end of the cert + cur_der_sig_size = *cert_size - sig_offset; + + // Find the size of buffer available for the new DER signature + new_der_sig_size = max_cert_size - sig_offset; + + // Set the new signature + ret = atcacert_der_enc_ecdsa_sig_value(signature, &cert[sig_offset], &new_der_sig_size); + if (ret != ATCACERT_E_SUCCESS) + { + if (ret == ATCACERT_E_BUFFER_TOO_SMALL) + { + *cert_size += (int)new_der_sig_size - (int)cur_der_sig_size; // Report the size needed + } + return ret; + } + + *cert_size += (int)new_der_sig_size - (int)cur_der_sig_size; + + old_cert_der_length_size = *cert_size - 1; + ret = atcacert_der_adjust_length( + &cert[1], + &old_cert_der_length_size, + (int)new_der_sig_size - (int)cur_der_sig_size, + &new_cert_length); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + // Tag, length, value + if (1 + old_cert_der_length_size + new_cert_length != *cert_size) + { + return ATCACERT_E_BAD_CERT; + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_get_signature(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + uint8_t signature[64]) +{ + uint16_t sig_offset; + size_t der_sig_size = 0; + + if (cert_def == NULL || cert == NULL || signature == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + sig_offset = cert_def->std_cert_elements[STDCERT_SIGNATURE].offset; + sig_offset += get_effective_offset(cert_def, cert, sig_offset); + + // Non X.509 signatures are treated like normal certificate elements + if (cert_def->type != CERTTYPE_X509) + { + return atcacert_get_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_SIGNATURE], cert, cert_size, signature, 64); + } + + if (sig_offset >= cert_size) + { + return ATCACERT_E_ELEM_OUT_OF_BOUNDS; // Signature element is shown as past the end of the certificate + + } + der_sig_size = cert_size - sig_offset; + return atcacert_der_dec_ecdsa_sig_value(&cert[sig_offset], &der_sig_size, signature); +} + +int atcacert_set_issue_date(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t cert_size, + const atcacert_tm_utc_t* timestamp) +{ + int ret = 0; + uint8_t formatted_date[DATEFMT_MAX_SIZE]; + size_t formatted_date_size = sizeof(formatted_date); + + if (cert_def == NULL || cert == NULL || timestamp == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (cert_def->std_cert_elements[STDCERT_ISSUE_DATE].count == 0) + { + return ATCACERT_E_SUCCESS; // No issue date to be set + + } + ret = atcacert_date_enc(cert_def->issue_date_format, timestamp, formatted_date, &formatted_date_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_set_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_ISSUE_DATE], cert, cert_size, formatted_date, formatted_date_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_get_issue_date(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + atcacert_tm_utc_t* timestamp) +{ + int ret = 0; + uint8_t formatted_date[DATEFMT_MAX_SIZE]; + size_t formatted_date_size = sizeof(formatted_date); + + if (cert_def == NULL || cert == NULL || timestamp == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (cert_def->issue_date_format > sizeof(ATCACERT_DATE_FORMAT_SIZES) / sizeof(ATCACERT_DATE_FORMAT_SIZES[0])) + { + return ATCACERT_E_ERROR; // Format is out of range + + } + formatted_date_size = ATCACERT_DATE_FORMAT_SIZES[cert_def->issue_date_format]; + if (formatted_date_size > sizeof(formatted_date)) + { + return ATCACERT_E_ERROR; // DATEFMT_MAX_SIZE is wrong + + } + ret = atcacert_get_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_ISSUE_DATE], cert, cert_size, formatted_date, formatted_date_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_date_dec(cert_def->issue_date_format, formatted_date, formatted_date_size, timestamp); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_set_expire_date(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t cert_size, + const atcacert_tm_utc_t* timestamp) +{ + int ret = 0; + uint8_t formatted_date[DATEFMT_MAX_SIZE]; + size_t formatted_date_size = sizeof(formatted_date); + + if (cert_def == NULL || cert == NULL || timestamp == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (cert_def->std_cert_elements[STDCERT_EXPIRE_DATE].count == 0) + { + return ATCACERT_E_SUCCESS; // No expire date to be set + + } + ret = atcacert_date_enc(cert_def->expire_date_format, timestamp, formatted_date, &formatted_date_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_set_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_EXPIRE_DATE], cert, cert_size, formatted_date, formatted_date_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_get_expire_date(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + atcacert_tm_utc_t* timestamp) +{ + int ret = 0; + uint8_t formatted_date[DATEFMT_MAX_SIZE]; + size_t formatted_date_size = sizeof(formatted_date); + + if (cert_def == NULL || cert == NULL || timestamp == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (cert_def->expire_date_format > sizeof(ATCACERT_DATE_FORMAT_SIZES) / sizeof(ATCACERT_DATE_FORMAT_SIZES[0])) + { + return ATCACERT_E_ERROR; // Format is out of range + + } + formatted_date_size = ATCACERT_DATE_FORMAT_SIZES[cert_def->expire_date_format]; + if (formatted_date_size > sizeof(formatted_date)) + { + return ATCACERT_E_ERROR; // DATEFMT_MAX_SIZE is wrong + + } + ret = atcacert_get_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_EXPIRE_DATE], cert, cert_size, formatted_date, formatted_date_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_date_dec(cert_def->expire_date_format, formatted_date, formatted_date_size, timestamp); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + return ATCACERT_E_SUCCESS; +} + +static void uint8_to_hex(uint8_t num, uint8_t* hex_str) +{ + uint8_t nibble = (num >> 4) & 0x0F; + + if (nibble < 10) + { + *(hex_str++) = '0' + nibble; + } + else + { + *(hex_str++) = 'A' + (nibble - 10); + } + nibble = num & 0x0F; + if (nibble < 10) + { + *(hex_str++) = '0' + nibble; + } + else + { + *(hex_str++) = 'A' + (nibble - 10); + } +} + +int atcacert_set_signer_id(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t cert_size, + const uint8_t signer_id[2]) +{ + uint8_t hex_str[4]; + + if (cert_def == NULL || cert == NULL || signer_id == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + uint8_to_hex(signer_id[0], &hex_str[0]); + uint8_to_hex(signer_id[1], &hex_str[2]); + + return atcacert_set_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_SIGNER_ID], cert, cert_size, hex_str, 4); +} + +static int hex_to_uint8(const uint8_t hex_str[2], uint8_t* num) +{ + *num = 0; + + if (hex_str[0] >= '0' && hex_str[0] <= '9') + { + *num += (hex_str[0] - '0') << 4; + } + else if (hex_str[0] >= 'A' && hex_str[0] <= 'F') + { + *num += (hex_str[0] - 'A' + 10) << 4; + } + else if (hex_str[0] >= 'a' && hex_str[0] <= 'f') + { + *num += (hex_str[0] - 'a' + 10) << 4; + } + else + { + return ATCACERT_E_DECODING_ERROR; + } + + if (hex_str[1] >= '0' && hex_str[1] <= '9') + { + *num += (hex_str[1] - '0'); + } + else if (hex_str[1] >= 'A' && hex_str[1] <= 'F') + { + *num += (hex_str[1] - 'A' + 10); + } + else if (hex_str[1] >= 'a' && hex_str[1] <= 'f') + { + *num += (hex_str[1] - 'a' + 10); + } + else + { + return ATCACERT_E_DECODING_ERROR; + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_get_signer_id(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + uint8_t signer_id[2]) +{ + int ret = 0; + uint8_t hex_str[4]; + + if (cert_def == NULL || cert == NULL || signer_id == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + ret = atcacert_get_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_SIGNER_ID], cert, cert_size, hex_str, 4); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = hex_to_uint8(&hex_str[0], &signer_id[0]); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = hex_to_uint8(&hex_str[2], &signer_id[1]); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_set_cert_sn(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t* cert_size, + size_t max_cert_size, + const uint8_t* cert_sn, + size_t cert_sn_size) +{ + if (cert_def == NULL || cert == NULL || cert_size == NULL || cert_sn == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (cert_def->type == CERTTYPE_X509 && cert_def->sn_source == SNSRC_STORED_DYNAMIC) + { + // The SN includes the header length, indicating this is a variable length SN + const atcacert_cert_loc_t* sn_cert_loc = &cert_def->std_cert_elements[STDCERT_CERT_SN]; + int sn_offset = (int)cert[sn_cert_loc->offset] - (int)cert_def->cert_template[sn_cert_loc->offset]; + + if (sn_offset != 0) + { + int ret = 0; + size_t der_len_offset = 0; + size_t cert_der_len = 0; + uint32_t cert_len = 0; + size_t tbs_der_len = 0; + + // The SN field has changed size + if (*cert_size + sn_offset > max_cert_size) + { + return ATCACERT_E_BUFFER_TOO_SMALL; // Cert buffer is too small for resizing + } + // Shift everything after the serial number to accommodate its new size + memmove( + &cert[sn_cert_loc->offset + sn_cert_loc->count], + &cert[sn_cert_loc->offset + sn_cert_loc->count + sn_offset], + *cert_size - (sn_cert_loc->offset + sn_cert_loc->count)); + *cert_size += sn_offset; + + // Adjust cert header length + der_len_offset = 1; // Right after first sequence tag + cert_der_len = *cert_size - der_len_offset; // Indicate how much buffer it has to work with + ret = atcacert_der_adjust_length( + &cert[der_len_offset], + &cert_der_len, + sn_offset, + &cert_len); + if (ret != 0) + { + return ret; + } + if (1 + cert_der_len + cert_len != *cert_size) + { + return ATCACERT_E_BAD_CERT; // Cert was malformed + + } + der_len_offset = 1 + cert_der_len + 1; // cert Tag (1), cert len, TBS tag (1) + tbs_der_len = *cert_size - der_len_offset; // Indicate how much buffer it has to work with: + ret = atcacert_der_adjust_length( + &cert[der_len_offset], + &tbs_der_len, + sn_offset, + NULL); + if (ret != 0) + { + return ret; + } + } + + if ((size_t)(cert[sn_cert_loc->offset] + 1) > cert_sn_size) + { + return ATCACERT_E_BAD_PARAMS; + } + cert_sn_size = cert[sn_cert_loc->offset] + 1; + + // Update Cert + } + + return atcacert_set_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_CERT_SN], cert, *cert_size, cert_sn, cert_sn_size); +} + +int atcacert_gen_cert_sn(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t cert_size, + const uint8_t device_sn[9]) +{ + int ret = 0; + size_t sn_size = 0; + uint8_t msg[64 + 3]; + uint8_t sn[32]; + atcacert_tm_utc_t issue_date; + + if (cert_def == NULL || cert == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (cert_def->sn_source == SNSRC_STORED || cert_def->sn_source == SNSRC_STORED_DYNAMIC || cert_def->std_cert_elements[STDCERT_CERT_SN].count == 0) + { + return ATCACERT_E_SUCCESS; // Certificate serial number is not generated or not in the certificate + + } + switch (cert_def->sn_source) + { + case SNSRC_DEVICE_SN: // Cert serial number is 0x40(MSB) + 9-byte device serial number. Only applies to device certificates. + if (device_sn == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + sn_size = 1 + 9; + sn[0] = 0x40; + memcpy(&sn[1], device_sn, 9); + break; + + case SNSRC_SIGNER_ID: // Cert serial number is 0x40(MSB) + 2-byte signer ID. Only applies to signer certificates. + sn_size = 1 + 2; + sn[0] = 0x40; + ret = atcacert_get_signer_id(cert_def, cert, cert_size, &sn[1]); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + break; + + case SNSRC_PUB_KEY_HASH_RAW: // Cert serial number is the SHA256(Subject public key + Encoded dates) + case SNSRC_PUB_KEY_HASH_POS: + case SNSRC_PUB_KEY_HASH: + if (cert_def->std_cert_elements[STDCERT_CERT_SN].count > 32) + { + return ATCACERT_E_UNEXPECTED_ELEM_SIZE; + } + sn_size = cert_def->std_cert_elements[STDCERT_CERT_SN].count; + + // Add public key to hash input + ret = atcacert_get_subj_public_key(cert_def, cert, cert_size, &msg[0]); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + // Add compressed/encoded dates to hash input + ret = atcacert_get_issue_date(cert_def, cert, cert_size, &issue_date); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + ret = atcacert_date_enc_compcert(&issue_date, cert_def->expire_years, &msg[64]); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + ret = atcac_sw_sha2_256(msg, 64 + 3, sn); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + if (cert_def->sn_source == SNSRC_PUB_KEY_HASH_POS || cert_def->sn_source == SNSRC_PUB_KEY_HASH) + { + sn[0] &= 0x7F; // Ensure the SN is positive + } + if (cert_def->sn_source == SNSRC_PUB_KEY_HASH) + { + sn[0] |= 0x40; // Ensure the SN doesn't have any trimmable bytes + } + break; + + case SNSRC_DEVICE_SN_HASH_RAW: // Cert serial number is the SHA256(Device SN + Encoded dates). Only applies to device certificates. + case SNSRC_DEVICE_SN_HASH_POS: + case SNSRC_DEVICE_SN_HASH: + if (device_sn == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + if (cert_def->std_cert_elements[STDCERT_CERT_SN].count > 32) + { + return ATCACERT_E_UNEXPECTED_ELEM_SIZE; + } + sn_size = cert_def->std_cert_elements[STDCERT_CERT_SN].count; + + // Add device SN to the hash input + memcpy(&msg[0], device_sn, 9); + + // Add compressed/encoded dates to hash input + ret = atcacert_get_issue_date(cert_def, cert, cert_size, &issue_date); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + ret = atcacert_date_enc_compcert(&issue_date, cert_def->expire_years, &msg[9]); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + ret = atcac_sw_sha2_256(msg, 9 + 3, sn); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + if (cert_def->sn_source == SNSRC_DEVICE_SN_HASH_POS || cert_def->sn_source == SNSRC_DEVICE_SN_HASH) + { + sn[0] &= 0x7F; // Ensure the SN is positive + } + if (cert_def->sn_source == SNSRC_DEVICE_SN_HASH) + { + sn[0] |= 0x40; // Ensure the SN doesn't have any trimmable bytes + } + break; + + default: + return ATCACERT_E_BAD_PARAMS; + } + + return atcacert_set_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_CERT_SN], cert, cert_size, sn, sn_size); +} + +int atcacert_get_cert_sn(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + uint8_t* cert_sn, + size_t* cert_sn_size) +{ + if (cert_def == NULL || cert == NULL || cert_sn == NULL || cert_sn_size == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (*cert_sn_size < cert_def->std_cert_elements[STDCERT_CERT_SN].count) + { + *cert_sn_size = cert_def->std_cert_elements[STDCERT_CERT_SN].count; + return ATCACERT_E_BUFFER_TOO_SMALL; + } + + *cert_sn_size = cert_def->std_cert_elements[STDCERT_CERT_SN].count; + + return atcacert_get_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_CERT_SN], cert, cert_size, cert_sn, *cert_sn_size); +} + +int atcacert_set_auth_key_id(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t cert_size, + const uint8_t auth_public_key[64]) +{ + int ret = 0; + uint8_t key_id[20]; + + if (cert_def == NULL || cert == NULL || auth_public_key == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + ret = atcacert_get_key_id(auth_public_key, key_id); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_set_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_AUTH_KEY_ID], cert, cert_size, key_id, 20); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_set_auth_key_id_raw(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t cert_size, + const uint8_t* auth_key_id) +{ + int ret = 0; + + if (cert_def == NULL || cert == NULL || auth_key_id == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + ret = atcacert_set_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_AUTH_KEY_ID], cert, cert_size, auth_key_id, cert_def->std_cert_elements[STDCERT_AUTH_KEY_ID].count); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_get_auth_key_id(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + uint8_t auth_key_id[20]) +{ + if (cert_def == NULL || cert == NULL || auth_key_id == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + return atcacert_get_cert_element(cert_def, &cert_def->std_cert_elements[STDCERT_AUTH_KEY_ID], cert, cert_size, auth_key_id, 20); +} + +int atcacert_set_comp_cert(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t* cert_size, + size_t max_cert_size, + const uint8_t comp_cert[72]) +{ + int ret = 0; + uint8_t enc_dates[3]; + uint8_t signer_id[2]; + uint8_t template_id; + uint8_t chain_id; + uint8_t sn_source; + uint8_t format; + atcacert_tm_utc_t issue_date; + atcacert_tm_utc_t expire_date; + + if (cert_def == NULL || cert == NULL || cert_size == NULL || comp_cert == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + format = comp_cert[70] & 0x0F; + if (format != 0) + { + return ATCACERT_E_DECODING_ERROR; // Unknown format + + } + memcpy(enc_dates, &comp_cert[64], 3); + memcpy(signer_id, &comp_cert[67], 2); + template_id = (comp_cert[69] >> 4) & 0x0F; + chain_id = comp_cert[69] & 0x0F; + sn_source = (comp_cert[70] >> 4) & 0x0F; + + if (template_id != cert_def->template_id || chain_id != cert_def->chain_id || sn_source != cert_def->sn_source) + { + return ATCACERT_E_WRONG_CERT_DEF; + } + + ret = atcacert_set_signature( + cert_def, + cert, + cert_size, + max_cert_size, + &comp_cert[0]); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_date_dec_compcert(enc_dates, cert_def->expire_date_format, &issue_date, &expire_date); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_set_issue_date(cert_def, cert, *cert_size, &issue_date); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_set_expire_date(cert_def, cert, *cert_size, &expire_date); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_set_signer_id(cert_def, cert, *cert_size, signer_id); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_get_comp_cert(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + uint8_t comp_cert[72]) +{ + int ret = 0; + atcacert_tm_utc_t issue_date; + + if (cert_def == NULL || cert == NULL || comp_cert == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + ret = atcacert_get_signature(cert_def, cert, cert_size, &comp_cert[0]); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_get_issue_date(cert_def, cert, cert_size, &issue_date); + if (ret == ATCACERT_E_ELEM_MISSING) + { + // No issue date in cert, just use lowest possible date + issue_date.tm_year = 2000 - 1900; + issue_date.tm_mon = 1 - 1; + issue_date.tm_mday = 1; + issue_date.tm_hour = 0; + issue_date.tm_min = 0; + issue_date.tm_sec = 0; + } + else if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + ret = atcacert_date_enc_compcert(&issue_date, cert_def->expire_years, &comp_cert[64]); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_get_signer_id(cert_def, cert, cert_size, &comp_cert[67]); + if (ret == ATCACERT_E_ELEM_MISSING) + { + memset(&comp_cert[67], 0, 2); // No signer ID in cert, use 0 + } + else if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + comp_cert[69] = ((cert_def->template_id & 0x0F) << 4) | (cert_def->chain_id & 0x0F); + comp_cert[70] = ((uint8_t)(cert_def->sn_source & 0x0F) << 4) | 0; + comp_cert[71] = 0; + + return ATCACERT_E_SUCCESS; +} + +int atcacert_get_tbs(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + const uint8_t** tbs, + size_t* tbs_size) +{ + int eff_offset = 0; + + if (cert_def == NULL || cert == NULL || tbs == NULL || tbs_size == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + eff_offset = get_effective_offset(cert_def, cert, cert_def->tbs_cert_loc.offset + cert_def->tbs_cert_loc.count); + + if ((size_t)(cert_def->tbs_cert_loc.offset + cert_def->tbs_cert_loc.count + eff_offset) > cert_size) + { + return ATCACERT_E_BAD_CERT; + } + + *tbs = &cert[cert_def->tbs_cert_loc.offset]; + *tbs_size = cert_def->tbs_cert_loc.count + eff_offset; + + return ATCACERT_E_SUCCESS; +} + +int atcacert_get_tbs_digest(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + uint8_t tbs_digest[32]) +{ + int ret = ATCACERT_E_SUCCESS; + const uint8_t* tbs = NULL; + size_t tbs_size = 0; + + if (cert_def == NULL || cert == NULL || tbs_digest == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + ret = atcacert_get_tbs(cert_def, cert, cert_size, &tbs, &tbs_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcac_sw_sha2_256(tbs, tbs_size, tbs_digest); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + return ret; +} + +int atcacert_set_cert_element(const atcacert_def_t* cert_def, + const atcacert_cert_loc_t* cert_loc, + uint8_t* cert, + size_t cert_size, + const uint8_t* data, + size_t data_size) +{ + int eff_offset = 0; + + if (cert_def == NULL || cert_loc == NULL || cert == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (cert_loc->count == 0) + { + return ATCACERT_E_SUCCESS; // This element doesn't exist in the cert, but we treat this as a success + + } + if (data == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + // Don't validate for dynamic cert SN + if (!(cert_def->type == CERTTYPE_X509 && + cert_def->sn_source == SNSRC_STORED_DYNAMIC && + cert_loc->offset == cert_def->std_cert_elements[STDCERT_CERT_SN].offset) && + data_size != cert_loc->count) + { + return ATCACERT_E_UNEXPECTED_ELEM_SIZE; + } + + eff_offset = get_effective_offset(cert_def, cert, cert_loc->offset); + + if ((size_t)(cert_loc->offset + data_size + eff_offset) > cert_size) + { + return ATCACERT_E_ELEM_OUT_OF_BOUNDS; + } + + memcpy(&cert[cert_loc->offset + eff_offset], data, data_size); + + return ATCACERT_E_SUCCESS; +} + +int atcacert_get_cert_element(const atcacert_def_t* cert_def, + const atcacert_cert_loc_t* cert_loc, + const uint8_t* cert, + size_t cert_size, + uint8_t* data, + size_t data_size) +{ + int eff_offset = 0; + + if (cert_def == NULL || cert_loc == NULL || cert == NULL || data == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (cert_loc->count == 0) + { + return ATCACERT_E_ELEM_MISSING; // This element doesn't exist in the certificate + + } + if (cert_loc->count != data_size) + { + return ATCACERT_E_UNEXPECTED_ELEM_SIZE; + } + + eff_offset = get_effective_offset(cert_def, cert, cert_loc->offset); + + if ((size_t)(cert_loc->offset + cert_loc->count + eff_offset) > cert_size) + { + return ATCACERT_E_ELEM_OUT_OF_BOUNDS; + } + + memcpy(data, &cert[cert_loc->offset + eff_offset], data_size); + + return ATCACERT_E_SUCCESS; +} + +int atcacert_get_key_id(const uint8_t public_key[64], uint8_t key_id[20]) +{ + uint8_t msg[65]; + + if (public_key == NULL || key_id == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + msg[0] = 0x04; + memcpy(&msg[1], public_key, 64); + + return atcac_sw_sha1(msg, sizeof(msg), key_id); +} + +void atcacert_public_key_add_padding(const uint8_t raw_key[64], uint8_t padded_key[72]) +{ + memmove(&padded_key[40], &raw_key[32], 32); // Move Y to padded position + memset(&padded_key[36], 0, 4); // Add Y padding bytes + memmove(&padded_key[4], &raw_key[0], 32); // Move X to padded position + memset(&padded_key[0], 0, 4); // Add X padding bytes +} + +void atcacert_public_key_remove_padding(const uint8_t padded_key[72], uint8_t raw_key[64]) +{ + memmove(&raw_key[0], &padded_key[4], 32); // Move X + memmove(&raw_key[32], &padded_key[40], 32); // Move Y +} + +int atcacert_transform_data(atcacert_transform_t transform, + const uint8_t* data, + size_t data_size, + uint8_t* destination, + size_t* destination_size) +{ + int status = ATCACERT_E_INVALID_TRANSFORM; + + if (destination == NULL || destination_size == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + switch (transform) + { + case TF_NONE: + if (*destination_size >= data_size) + { + memcpy(destination, data, data_size); + *destination_size = data_size; + } + else + { + status = ATCA_SMALL_BUFFER; + } + case TF_REVERSE: + status = atcab_reversal(data, data_size, destination, destination_size); + break; + case TF_BIN2HEX_UC: + status = atcab_bin2hex_(data, data_size, (char*)destination, destination_size, false, false, true); + break; + case TF_BIN2HEX_LC: + status = atcab_bin2hex_(data, data_size, (char*)destination, destination_size, false, false, false); + break; + case TF_HEX2BIN_UC: + status = atcab_hex2bin_((const char*)data, data_size, destination, destination_size, false); + break; + case TF_HEX2BIN_LC: + status = atcab_hex2bin_((const char*)data, data_size, destination, destination_size, false); + break; + case TF_BIN2HEX_SPACE_UC: + status = atcab_bin2hex_(data, data_size, (char*)destination, destination_size, false, true, true); + break; + case TF_BIN2HEX_SPACE_LC: + status = atcab_bin2hex_(data, data_size, (char*)destination, destination_size, false, true, false); + break; + case TF_HEX2BIN_SPACE_UC: + status = atcab_hex2bin_((const char*)data, data_size, destination, destination_size, true); + break; + case TF_HEX2BIN_SPACE_LC: + status = atcab_hex2bin_((const char*)data, data_size, destination, destination_size, true); + break; + default: + status = ATCACERT_E_INVALID_TRANSFORM; + break; + } + + return status; +} + +int atcacert_max_cert_size(const atcacert_def_t* cert_def, + size_t* max_cert_size) +{ + uint8_t template_sn_size; + + if (cert_def == NULL || max_cert_size == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (cert_def->type == CERTTYPE_X509) + { + // Signature offset plus the largest P-256 ECDSA-Sig-Value Bit String (zero padded R and S) + *max_cert_size = cert_def->std_cert_elements[STDCERT_SIGNATURE].offset + 75; + + if (cert_def->sn_source == SNSRC_STORED_DYNAMIC) + { + // Certificate definition uses a variable sized serial number + template_sn_size = cert_def->cert_template[cert_def->std_cert_elements[STDCERT_CERT_SN].offset]; + if (template_sn_size > 127) + { + // Certificate serial number is larger than expected. Multi-byte sizes not handled + // as this should never happen. + return ATCACERT_E_BAD_CERT; + } + + // Add the max possible serial number to the max size + *max_cert_size += 128 - template_sn_size; + } + } + else + { + // There are no variable length elements in custom certs, so the cert + // size is simply the template size + *max_cert_size = cert_def->cert_template_size; + } + + return ATCACERT_E_SUCCESS; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.h new file mode 100644 index 0000000..edb50c7 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.h @@ -0,0 +1,818 @@ +/** + * \file + * \brief Declarations for certificates related to ECC CryptoAuthentication devices. + * These are the definitions required to define a certificate and its various + * elements with regards to the CryptoAuthentication ECC devices. + * + * Only the dynamic elements of a certificate (the parts of the certificate + * that change from device to device) are stored on the ATECC device. The + * definitions here describe the form of the certificate, and where the + * dynamic elements can be found both on the ATECC device itself and in the + * certificate template. + * + * This also defines utility functions for working with the certificates and their definitions. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#ifndef ATCACERT_DEF_H +#define ATCACERT_DEF_H + +#include +#include +#include "atcacert.h" +#include "atcacert_date.h" +#include "basic/atca_helpers.h" + +#define ATCA_MAX_TRANSFORMS 2 + + +/** \defgroup atcacert_ Certificate manipulation methods (atcacert_) + * + * \brief + * These methods provide convenient ways to perform certification I/O with + * CryptoAuth chips and perform certificate manipulation in memory + * + @{ */ + +/** + * Types of certificates. + */ +typedef enum atcacert_cert_type_e +{ + CERTTYPE_X509, //!< Standard X509 certificate + CERTTYPE_CUSTOM //!< Custom format +} atcacert_cert_type_t; + +/** + * Sources for the certificate serial number. + */ +typedef enum atcacert_cert_sn_src_e +{ + SNSRC_STORED = 0x0, //!< Cert serial is stored on the device. + SNSRC_STORED_DYNAMIC = 0x7, //!< Cert serial is stored on the device with the first byte being the DER size (X509 certs only). + SNSRC_DEVICE_SN = 0x8, //!< Cert serial number is 0x40(MSB) + 9-byte device serial number. Only applies to device certificates. + SNSRC_SIGNER_ID = 0x9, //!< Cert serial number is 0x40(MSB) + 2-byte signer ID. Only applies to signer certificates. + SNSRC_PUB_KEY_HASH = 0xA, //!< Cert serial number is the SHA256(Subject public key + Encoded dates), with uppermost 2 bits set to 01. + SNSRC_DEVICE_SN_HASH = 0xB, //!< Cert serial number is the SHA256(Device SN + Encoded dates), with uppermost 2 bits set to 01. Only applies to device certificates. + SNSRC_PUB_KEY_HASH_POS = 0xC, //!< Depreciated, don't use. Cert serial number is the SHA256(Subject public key + Encoded dates), with MSBit set to 0 to ensure it's positive. + SNSRC_DEVICE_SN_HASH_POS = 0xD, //!< Depreciated, don't use. Cert serial number is the SHA256(Device SN + Encoded dates), with MSBit set to 0 to ensure it's positive. Only applies to device certificates. + SNSRC_PUB_KEY_HASH_RAW = 0xE, //!< Depreciated, don't use. Cert serial number is the SHA256(Subject public key + Encoded dates). + SNSRC_DEVICE_SN_HASH_RAW = 0xF //!< Depreciated, don't use. Cert serial number is the SHA256(Device SN + Encoded dates). Only applies to device certificates. +} atcacert_cert_sn_src_t; + +/** + * ATECC device zones. The values match the Zone Encodings as specified in the datasheet. + */ +typedef enum atcacert_device_zone_e +{ + DEVZONE_CONFIG = 0x00, //!< Configuration zone. + DEVZONE_OTP = 0x01, //!< One Time Programmable zone. + DEVZONE_DATA = 0x02, //!< Data zone (slots). + DEVZONE_NONE = 0x07 //!< Special value used to indicate there is no device location. +} atcacert_device_zone_t; + +/** \brief How to transform the data from the device to the certificate. + */ +typedef enum atcacert_transform_e +{ + TF_NONE, //!< No transform, data is used byte for byte + TF_REVERSE, //!< Reverse the bytes (e.g. change endianness) + TF_BIN2HEX_UC, //!< Convert raw binary into ASCII hex, uppercase + TF_BIN2HEX_LC, //!< Convert raw binary into ASCII hex, lowercase + TF_HEX2BIN_UC, //!< Convert ASCII hex, uppercase to binary + TF_HEX2BIN_LC, //!< Convert ASCII hex, lowercase to binary + TF_BIN2HEX_SPACE_UC, //!< Convert raw binary into ASCII hex, uppercase space between bytes + TF_BIN2HEX_SPACE_LC, //!< Convert raw binary into ASCII hex, lowercase space between bytes + TF_HEX2BIN_SPACE_UC, //!< Convert ASCII hex, uppercase with spaces between bytes to binary + TF_HEX2BIN_SPACE_LC, //!< Convert ASCII hex, lowercase with spaces between bytes to binary +} atcacert_transform_t; + +/** + * Standard dynamic certificate elements. + */ +typedef enum atcacert_std_cert_element_e +{ + STDCERT_PUBLIC_KEY, + STDCERT_SIGNATURE, + STDCERT_ISSUE_DATE, + STDCERT_EXPIRE_DATE, + STDCERT_SIGNER_ID, + STDCERT_CERT_SN, + STDCERT_AUTH_KEY_ID, + STDCERT_SUBJ_KEY_ID, + STDCERT_NUM_ELEMENTS //!< Special item to give the number of elements in this enum +} atcacert_std_cert_element_t; + +// Some of these structures may need to be byte-accurate + +#pragma pack(push, 1) + +/** + * Defines a chunk of data in an ATECC device. + */ +typedef struct atcacert_device_loc_s +{ + atcacert_device_zone_t zone; //!< Zone in the device. + uint8_t slot; //!< Slot within the data zone. Only applies if zone is DEVZONE_DATA. + uint8_t is_genkey; //!< If true, use GenKey command to get the contents instead of Read. + uint16_t offset; //!< Byte offset in the zone. + uint16_t count; //!< Byte count. +} atcacert_device_loc_t; + +/** + * Defines a chunk of data in a certificate template. + */ +typedef struct atcacert_cert_loc_s +{ + uint16_t offset; //!< Byte offset in the certificate template. + uint16_t count; //!< Byte count. Set to 0 if it doesn't exist. +} atcacert_cert_loc_t; + +/** + * Defines a generic dynamic element for a certificate including the device and template locations. + */ + +typedef struct atcacert_cert_element_s +{ + char id[25]; //!< ID identifying this element. + atcacert_device_loc_t device_loc; //!< Location in the device for the element. + atcacert_cert_loc_t cert_loc; //!< Location in the certificate template for the element. + atcacert_transform_t transforms[ATCA_MAX_TRANSFORMS]; //!< List of transforms from device to cert for this element. +} atcacert_cert_element_t; + +/** + * Defines a certificate and all the pieces to work with it. + * + * If any of the standard certificate elements (std_cert_elements) are not a part of the certificate + * definition, set their count to 0 to indicate their absence. + */ +typedef struct atcacert_def_s +{ + atcacert_cert_type_t type; //!< Certificate type. + uint8_t template_id; //!< ID for the this certificate definition (4-bit value). + uint8_t chain_id; //!< ID for the certificate chain this definition is a part of (4-bit value). + uint8_t private_key_slot; //!< If this is a device certificate template, this is the device slot for the device private key. + atcacert_cert_sn_src_t sn_source; //!< Where the certificate serial number comes from (4-bit value). + atcacert_device_loc_t cert_sn_dev_loc; //!< Only applies when sn_source is SNSRC_STORED or SNSRC_STORED_DYNAMIC. Describes where to get the certificate serial number on the device. + atcacert_date_format_t issue_date_format; //!< Format of the issue date in the certificate. + atcacert_date_format_t expire_date_format; //!< format of the expire date in the certificate. + atcacert_cert_loc_t tbs_cert_loc; //!< Location in the certificate for the TBS (to be signed) portion. + uint8_t expire_years; //!< Number of years the certificate is valid for (5-bit value). 0 means no expiration. + atcacert_device_loc_t public_key_dev_loc; //!< Where on the device the public key can be found. + atcacert_device_loc_t comp_cert_dev_loc; //!< Where on the device the compressed cert can be found. + atcacert_cert_loc_t std_cert_elements[STDCERT_NUM_ELEMENTS]; //!< Where in the certificate template the standard cert elements are inserted. + const atcacert_cert_element_t* cert_elements; //!< Additional certificate elements outside of the standard certificate contents. + uint8_t cert_elements_count; //!< Number of additional certificate elements in cert_elements. + const uint8_t* cert_template; //!< Pointer to the actual certificate template data. + uint16_t cert_template_size; //!< Size of the certificate template in cert_template in bytes. + const struct atcacert_def_s* ca_cert_def; //!< Certificate definition of the CA certificate +} atcacert_def_t; + +/** + * Tracks the state of a certificate as it's being rebuilt from device information. + */ +typedef struct atcacert_build_state_s +{ + const atcacert_def_t* cert_def; //!< Certificate definition for the certificate being rebuilt. + uint8_t* cert; //!< Buffer to contain the rebuilt certificate. + size_t* cert_size; //!< Current size of the certificate in bytes. + size_t max_cert_size; //!< Max size of the cert buffer in bytes. + uint8_t is_device_sn; //!< Indicates the structure contains the device SN. + uint8_t device_sn[9]; //!< Storage for the device SN, when it's found. +} atcacert_build_state_t; + +#pragma pack(pop) + +// Inform function naming when compiling in C++ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Add all the device locations required to rebuild the specified certificate (cert_def) to + * a device locations list. + * + * The block_size parameter will adjust all added device locations to have a offset and count that + * aligns with that block size. This allows one to generate a list of device locations that matches + * specific read or write semantics (e.g. 4 byte or 32 byte reads). + * + * \param[in] cert_def Certificate definition containing all the device locations + * to add to the list. + * \param[inout] device_locs List of device locations to add to. + * \param[inout] device_locs_count As input, existing size of the device locations list. + * As output, the new size of the device locations list. + * \param[in] device_locs_max_count Maximum number of elements device_locs can hold. + * \param[in] block_size Block size to align all offsets and counts to when adding + * device locations. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_get_device_locs(const atcacert_def_t* cert_def, + atcacert_device_loc_t* device_locs, + size_t* device_locs_count, + size_t device_locs_max_count, + size_t block_size); + +/** + * \brief Starts the certificate rebuilding process. + * + * \param[out] build_state Structure is initialized to start the certificate building process. + * Will be passed to the other certificate building functions. + * \param[in] cert_def Certificate definition for the certificate being built. + * \param[in] cert Buffer to contain the rebuilt certificate. + * \param[in] cert_size As input, the size of the cert buffer in bytes. This value will be + * adjusted to the current/final size of the certificate through the + * building process. + * \param[in] ca_public_key ECC P256 public key of the certificate authority (issuer) for the + * certificate being built. Set to NULL if the authority key id is + * not needed, set properly in the cert_def template, or stored on the + * device as specified in the cert_def cert_elements. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_cert_build_start(atcacert_build_state_t* build_state, + const atcacert_def_t* cert_def, + uint8_t* cert, + size_t* cert_size, + const uint8_t ca_public_key[64]); + +/** + * \brief Process information read from the ATECC device. If it contains information for the + * certificate, it will be incorporated into the certificate. + * + * \param[in] build_state Current certificate building state. + * \param[in] device_loc Device location structure describing where on the device the following + * data came from. + * \param[in] device_data Actual data from the device. It should represent the offset and byte + * count specified in the device_loc parameter. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_cert_build_process(atcacert_build_state_t* build_state, + const atcacert_device_loc_t* device_loc, + const uint8_t* device_data); + +/** + * \brief Completes any final certificate processing required after all data from the device has + * been incorporated. + * + * The final certificate and its size in bytes are contained in the cert and cert_size elements + * of the build_state structure. This will be the same buffers as supplied to the + * atcacert_cert_build_start function at the beginning of the certificate rebuilding process. + * + * \param[in] build_state Current certificate build state. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_cert_build_finish(atcacert_build_state_t* build_state); + +/** + * \brief Gets the dynamic data that would be saved to the specified device location. This + * function is primarily used to break down a full certificate into the dynamic components + * to be saved to a device. + * + * The atcacert_add_device_locs function can be used to generate a list of device locations a + * particular certificate definition requires. + * + * \param[in] cert_def Certificate definition for the certificate we're getting data from. + * \param[in] cert Certificate to get the device data from. + * \param[in] cert_size Size of the certificate in bytes. + * \param[in] device_loc Device location to request data for. + * \param[out] device_data Buffer that represents the device data in device_loc. Required to be + * at least device_loc.count in size. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_get_device_data(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + const atcacert_device_loc_t* device_loc, + uint8_t* device_data); + +/** + * \brief Sets the subject public key and subject key ID in a certificate. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[inout] cert Certificate to update. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[in] subj_public_key Subject public key as X and Y integers concatenated together. 64 bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_set_subj_public_key(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t cert_size, + const uint8_t subj_public_key[64]); + +/** + * \brief Gets the subject public key from a certificate. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[in] cert Certificate to get element from. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[out] subj_public_key Subject public key is returned in this buffer. Formatted at X and Y + * integers concatenated together. 64 bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_get_subj_public_key(const atcacert_def_t * cert_def, + const uint8_t * cert, + size_t cert_size, + uint8_t subj_public_key[64]); + +/** + * \brief Gets the subject key ID from a certificate. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[in] cert Certificate to get element from. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[out] subj_key_id Subject key ID is returned in this buffer. 20 bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_get_subj_key_id(const atcacert_def_t * cert_def, + const uint8_t * cert, + size_t cert_size, + uint8_t subj_key_id[20]); + +/** + * \brief Sets the signature in a certificate. This may alter the size of the X.509 certificates. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[inout] cert Certificate to update. + * \param[inout] cert_size As input, size of the certificate (cert) in bytes. + * As output, the new size of the certificate. + * \param[in] max_cert_size Maximum size of the cert buffer. + * \param[in] signature Signature as R and S integers concatenated together. 64 bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_set_signature(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t* cert_size, + size_t max_cert_size, + const uint8_t signature[64]); + +/** + * \brief Gets the signature from a certificate. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[in] cert Certificate to get element from. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[out] signature Signature is returned in this buffer. Formatted at R and S integers + * concatenated together. 64 bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_get_signature(const atcacert_def_t * cert_def, + const uint8_t * cert, + size_t cert_size, + uint8_t signature[64]); + +/** + * \brief Sets the issue date (notBefore) in a certificate. Will be formatted according to the date + * format specified in the certificate definition. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[inout] cert Certificate to update. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[in] timestamp Issue date. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_set_issue_date(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t cert_size, + const atcacert_tm_utc_t* timestamp); + +/** + * \brief Gets the issue date from a certificate. Will be parsed according to the date format + * specified in the certificate definition. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[in] cert Certificate to get element from. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[out] timestamp Issue date is returned in this structure. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_get_issue_date(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + atcacert_tm_utc_t* timestamp); + +/** + * \brief Sets the expire date (notAfter) in a certificate. Will be formatted according to the date + * format specified in the certificate definition. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[inout] cert Certificate to update. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[in] timestamp Expire date. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_set_expire_date(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t cert_size, + const atcacert_tm_utc_t* timestamp); + +/** + * \brief Gets the expire date from a certificate. Will be parsed according to the date format + * specified in the certificate definition. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[in] cert Certificate to get element from. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[out] timestamp Expire date is returned in this structure. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_get_expire_date(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + atcacert_tm_utc_t* timestamp); + +/** + * \brief Sets the signer ID in a certificate. Will be formatted as 4 upper-case hex digits. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[inout] cert Certificate to update. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[in] signer_id Signer ID. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_set_signer_id(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t cert_size, + const uint8_t signer_id[2]); + +/** + * \brief Gets the signer ID from a certificate. Will be parsed as 4 upper-case hex digits. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[in] cert Certificate to get element from. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[out] signer_id Signer ID will be returned in this buffer. 2 bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_get_signer_id(const atcacert_def_t * cert_def, + const uint8_t * cert, + size_t cert_size, + uint8_t signer_id[2]); + +/** + * \brief Sets the certificate serial number in a certificate. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[inout] cert Certificate to update. + * \param[inout] cert_size Size of the certificate (cert) in bytes. + * \param[in] max_cert_size Maximum size of the cert buffer. + * \param[in] cert_sn Certificate serial number. + * \param[in] cert_sn_size Size of the certificate serial number in bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_set_cert_sn(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t* cert_size, + size_t max_cert_size, + const uint8_t* cert_sn, + size_t cert_sn_size); + +/** + * \brief Sets the certificate serial number by generating it from other information in the + * certificate using the scheme specified by sn_source in cert_def. See the + * + * This method requires certain elements in the certificate be set properly as they're used for + * generating the serial number. See atcacert_cert_sn_src_t for what elements should be set in the + * certificate beforehand. If the sn_source is set to SNSRC_STORED or SNSRC_STORED_DYNAMIC, the + * function will return ATCACERT_E_SUCCESS without making any changes to the certificate. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[inout] cert Certificate to update. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[in] device_sn Device serial number, only used if required by the sn_source scheme. + * Can be set to NULL, if not required. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_gen_cert_sn(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t cert_size, + const uint8_t device_sn[9]); + +/** + * \brief Gets the certificate serial number from a certificate. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[in] cert Certificate to get element from. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[out] cert_sn Certificate SN will be returned in this buffer. + * \param[inout] cert_sn_size As input, the size of the cert_sn buffer. + * As output, the size of the certificate SN (cert_sn) in bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_get_cert_sn(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + uint8_t* cert_sn, + size_t* cert_sn_size); + +/** + * \brief Sets the authority key ID in a certificate. Note that this takes the actual public key + * creates a key ID from it. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[inout] cert Certificate to update. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[in] auth_public_key Authority public key as X and Y integers concatenated together. + * 64 bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_set_auth_key_id(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t cert_size, + const uint8_t auth_public_key[64]); + +/** + * \brief Sets the authority key ID in a certificate. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[inout] cert Certificate to update. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[in] auth_key_id Authority key ID. Same size as defined in the cert_def. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_set_auth_key_id_raw(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t cert_size, + const uint8_t* auth_key_id); + +/** + * \brief Gets the authority key ID from a certificate. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[in] cert Certificate to get element from. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[out] auth_key_id Authority key ID is returned in this buffer. 20 bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_get_auth_key_id(const atcacert_def_t * cert_def, + const uint8_t * cert, + size_t cert_size, + uint8_t auth_key_id[20]); + +/** + * \brief Sets the signature, issue date, expire date, and signer ID found in the compressed + * certificate. This also checks fields common between the cert_def and the compressed + * certificate to make sure they match. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[inout] cert Certificate to update. + * \param[inout] cert_size As input, size of the certificate (cert) in bytes. + * As output, the new size of the certificate. + * \param[in] max_cert_size Maximum size of the cert buffer. + * \param[in] comp_cert Compressed certificate. 72 bytes. + * + * \return ATCACERT_E_SUCCESS on success. ATCACERT_E_WRONG_CERT_DEF if the template ID, chain ID, and/or SN source + * don't match between the cert_def and the compressed certificate. + */ +int atcacert_set_comp_cert(const atcacert_def_t* cert_def, + uint8_t* cert, + size_t* cert_size, + size_t max_cert_size, + const uint8_t comp_cert[72]); + +/** + * \brief Generate the compressed certificate for the given certificate. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[in] cert Certificate to generate the compressed certificate for. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[out] comp_cert Compressed certificate is returned in this buffer. 72 bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_get_comp_cert(const atcacert_def_t * cert_def, + const uint8_t * cert, + size_t cert_size, + uint8_t comp_cert[72]); + +/** + * \brief Get a pointer to the TBS data in a certificate. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[in] cert Certificate to get the TBS data pointer for. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[out] tbs Pointer to a const pointer that will be set the start of the TBS data. + * \param[out] tbs_size Size of the TBS data will be returned here. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_get_tbs(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + const uint8_t** tbs, + size_t* tbs_size); + +/** + * \brief Get the SHA256 digest of certificate's TBS data. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[in] cert Certificate to get the TBS data pointer for. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[out] tbs_digest TBS data digest will be returned here. 32 bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_get_tbs_digest(const atcacert_def_t * cert_def, + const uint8_t * cert, + size_t cert_size, + uint8_t tbs_digest[32]); + +/** + * \brief Sets an element in a certificate. The data_size must match the size in cert_loc. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[in] cert_loc Certificate location for this element. + * \param[inout] cert Certificate to update. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[in] data Element data to insert into the certificate. Buffer must contain + * cert_loc.count bytes to be copied into the certificate. + * \param[in] data_size Size of the data in bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_set_cert_element(const atcacert_def_t* cert_def, + const atcacert_cert_loc_t* cert_loc, + uint8_t* cert, + size_t cert_size, + const uint8_t* data, + size_t data_size); + +/** + * \brief Gets an element from a certificate. + * + * \param[in] cert_def Certificate definition for the certificate. + * \param[in] cert_loc Certificate location for this element. + * \param[in] cert Certificate to get element from. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[out] data Element data will be returned in this buffer. This buffer must be large + * enough to hold cert_loc.count bytes. + * \param[in] data_size Expected size of the cert element data. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_get_cert_element(const atcacert_def_t* cert_def, + const atcacert_cert_loc_t* cert_loc, + const uint8_t* cert, + size_t cert_size, + uint8_t* data, + size_t data_size); + + +// Below are utility functions for dealing with various bits for data conversion and wrangling + +/** + * \brief Calculates the key ID for a given public ECC P256 key. + * + * Uses method 1 for calculating the keyIdentifier as specified by RFC 5280, section 4.2.1.2: + * (1) The keyIdentifier is composed of the 160-bit SHA-1 hash of the + * value of the BIT STRING subjectPublicKey (excluding the tag, + * length, and number of unused bits). + * + * \param[in] public_key ECC P256 public key to calculate key key ID for. Formatted as the X and + * Y integers concatenated together. 64 bytes. + * \param[in] key_id Calculated key ID will be returned in this buffer. 20 bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_get_key_id(const uint8_t public_key[64], uint8_t key_id[20]); + +/** + * \brief Merge a new device location into a list of device locations. If the new location overlaps + * with an existing location, the existing one will be modified to encompass both. Otherwise + * the new location is appended to the end of the list. + * + * The block_size parameter will adjust all added device locations to have an offset and count that + * aligns with that block size. This allows one to generate a list of device locations that matches + * specific read/write semantics (e.g. 4 byte or 32 byte reads). Note that this block_size only + * applies to the device_loc being added. Existing device locations in the list won't be modified + * to match the block size. + * + * \param[inout] device_locs Existing device location list to merge the new device + * location into. + * \param[inout] device_locs_count As input, the existing number of items in the device_locs + * list. As output, the new size of the device_locs list. + * \param[in] device_locs_max_count Maximum number of items the device_locs list can hold. + * \param[in] device_loc New device location to be merged into the device_locs list. + * \param[in] block_size Block size to align all offsets and counts to when adding + * device location. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_merge_device_loc(atcacert_device_loc_t* device_locs, + size_t* device_locs_count, + size_t device_locs_max_count, + const atcacert_device_loc_t* device_loc, + size_t block_size); + +/** \brief Determines if the two device locations overlap. + * \param[in] device_loc1 First device location to check. + * \param[in] device_loc2 Second device location o check. + * \return 0 (false) if they don't overlap, non-zero if the do overlap. + */ +int atcacert_is_device_loc_overlap(const atcacert_device_loc_t* device_loc1, + const atcacert_device_loc_t* device_loc2); + +/** + * \brief Takes a raw P256 ECC public key and converts it to the padded version used by ATECC + * devices. Input and output buffers can point to the same location to do an in-place + * transform. + * + * \param[in] raw_key Public key as X and Y integers concatenated together. 64 bytes. + * \param[out] padded_key Padded key is returned in this buffer. X and Y integers are padded + * with 4 bytes of 0 in the MSB. 72 bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +void atcacert_public_key_add_padding(const uint8_t raw_key[64], uint8_t padded_key[72]); + +/** + * \brief Takes a padded public key used by ATECC devices and converts it to a raw P256 ECC public + * key. Input and output buffers can point to the same location to do an in-place transform. + * + * \param[out] padded_key X and Y integers are padded with 4 bytes of 0 in the MSB. 72 bytes. + * \param[in] raw_key Raw key is returned in this buffer. Public key as X and Y integers + * concatenated together. 64 bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +void atcacert_public_key_remove_padding(const uint8_t padded_key[72], uint8_t raw_key[64]); + +/** + * \brief Apply the specified transform to the specified data. + * + * \param[in] transform Transform to be performed. + * \param[in] data Input data to be transformed. + * \param[in] data_size Size of the input data in bytes. + * \param[out] destination Destination buffer to hold the transformed data. + * \param[inout] destination_size As input, the size of the destination buffer. + * As output the size of the transformed data. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_transform_data(atcacert_transform_t transform, + const uint8_t* data, + size_t data_size, + uint8_t* destination, + size_t* destination_size); + +/** \brief Return the maximum possible certificate size in bytes for a given + * cert def. Certificate can be variable size, so this gives an + * appropriate buffer size when reading the certificates. + * + * \param[in] cert_def Certificate definition to find a max size for. + * \param[out] max_cert_size Maximum certificate size will be returned here in bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_max_cert_size(const atcacert_def_t* cert_def, + size_t* max_cert_size); + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.c new file mode 100644 index 0000000..f35c68e --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.c @@ -0,0 +1,562 @@ +/** + * \file + * \brief functions required to work with DER encoded data related to X.509 certificates. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#include "atcacert_der.h" +#include + +int atcacert_der_enc_length(uint32_t length, uint8_t* der_length, size_t* der_length_size) +{ + size_t der_length_size_calc = 0; + int exp = sizeof(length) - 1; + + if (der_length_size == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (length < 0x80) + { + // The length can take the short form with only one byte + der_length_size_calc = 1; + exp = 0; + } + else + { + // Length is long-form, encoded as a multi-byte big-endian unsigned integer + + // Find first non-zero octet + while (length / ((uint32_t)1 << (8 * exp)) == 0) + { + exp--; + } + + der_length_size_calc = 2 + exp; + } + + if (der_length != NULL && *der_length_size < der_length_size_calc) + { + *der_length_size = der_length_size_calc; + return ATCACERT_E_BUFFER_TOO_SMALL; + } + + *der_length_size = der_length_size_calc; + + if (der_length == NULL) + { + return ATCACERT_E_SUCCESS; // Caller is only requesting the size + + } + // Encode length in big-endian format + for (; exp >= 0; exp--) + { + der_length[der_length_size_calc - 1 - exp] = (uint8_t)((length >> (exp * 8)) & 0xFF); + } + + if (der_length_size_calc > 1) + { + der_length[0] = 0x80 | (uint8_t)(der_length_size_calc - 1); // Set number of bytes octet with long-form flag + + } + return ATCACERT_E_SUCCESS; +} + +int atcacert_der_dec_length(const uint8_t* der_length, size_t* der_length_size, uint32_t* length) +{ + if (der_length == NULL || der_length_size == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (*der_length_size < 1) + { + return ATCACERT_E_DECODING_ERROR; + } + + if (der_length[0] & 0x80) + { + // Long form + size_t num_bytes = der_length[0] & 0x7F; + size_t i; + if (*der_length_size < num_bytes + 1) + { + return ATCACERT_E_DECODING_ERROR; // Invalid DER length format, not enough data. + } + if (num_bytes == 0) + { + return ATCACERT_E_DECODING_ERROR; // Invalid DER length format, indefinite length not supported. + } + if (num_bytes > sizeof(*length)) + { + return ATCACERT_E_DECODING_ERROR; // Can't parse DER length format, larger than length. + + } + if (length != NULL) + { + // Decode integer in big-endian format + *length = 0; + for (i = 1; i <= num_bytes; i++) + { + *length += der_length[i] * ((uint32_t)1 << (8 * (num_bytes - i))); + } + } + *der_length_size = num_bytes + 1; // Return the actual number of bytes the DER length encoding used. + } + else + { + if (length != NULL) + { + *length = der_length[0]; + } + *der_length_size = 1; // Return the actual number of bytes the DER length encoding used. + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_der_adjust_length(uint8_t* der_length, size_t* der_length_size, int delta_length, uint32_t* new_length) +{ + int ret = 0; + size_t new_der_len_size = 0; + uint32_t old_len = 0; + uint32_t new_len = 0; + uint8_t new_der_length[5]; + + ret = atcacert_der_dec_length(der_length, der_length_size, &old_len); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + if (delta_length < 0 && (size_t)(-delta_length) > old_len) + { + return ATCACERT_E_ERROR; + } + new_len = old_len + delta_length; + + if (new_length != NULL) + { + *new_length = new_len; + } + + new_der_len_size = sizeof(new_der_length); + ret = atcacert_der_enc_length(new_len, new_der_length, &new_der_len_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + if (*der_length_size != new_der_len_size) + { + return ATCACERT_E_BAD_CERT; + } + + memcpy(der_length, new_der_length, new_der_len_size); + + return 0; +} + +int atcacert_der_enc_integer(const uint8_t* int_data, + size_t int_data_size, + uint8_t is_unsigned, + uint8_t* der_int, + size_t* der_int_size) +{ + uint8_t der_length[5]; + size_t der_length_size = sizeof(der_length); + size_t der_int_size_calc = 0; + size_t trim = 0; + size_t pad = 0; + int ret; + + if (int_data == NULL || der_int_size == NULL || int_data_size <= 0) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (!(is_unsigned && (int_data[0] & 0x80))) + { + // This is not an unsigned value that needs a padding byte, trim any unnecessary bytes. + // Trim a byte when the upper 9 bits are all 0s or all 1s. + while ( + (int_data_size - trim >= 2) && ( + ((int_data[trim] == 0x00) && ((int_data[trim + 1] & 0x80) == 0)) || + ((int_data[trim] == 0xFF) && ((int_data[trim + 1] & 0x80) != 0)))) + { + trim++; + } + } + else + { + // Will be adding extra byte for unsigned padding so it's not interpreted as negative + pad = 1; + } + + ret = atcacert_der_enc_length((uint32_t)(int_data_size + pad - trim), der_length, &der_length_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + der_int_size_calc = 1 + der_length_size + int_data_size + pad - trim; + + if (der_int != NULL && der_int_size_calc > *der_int_size) + { + *der_int_size = der_int_size_calc; + return ATCACERT_E_BUFFER_TOO_SMALL; + } + + *der_int_size = der_int_size_calc; + + if (der_int == NULL) + { + return ATCACERT_E_SUCCESS; // Caller just wanted the size of the encoded integer + + } + der_int[0] = 0x02; // Integer tag + memcpy(&der_int[1], der_length, der_length_size); // Integer length + if (pad) + { + der_int[der_length_size + 1] = 0; // Unsigned integer value requires padding byte so it's not interpreted as negative + } + memcpy(&der_int[der_length_size + 1 + pad], &int_data[trim], int_data_size - trim); // Integer value + + return ATCACERT_E_SUCCESS; +} + +int atcacert_der_dec_integer(const uint8_t* der_int, + size_t* der_int_size, + uint8_t* int_data, + size_t* int_data_size) +{ + int ret = 0; + size_t der_length_size = 0; + uint32_t int_data_size_calc = 0; + + if (der_int == NULL || der_int_size == NULL || (int_data != NULL && int_data_size == NULL)) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (*der_int_size < 1) + { + return ATCACERT_E_DECODING_ERROR; // No data to decode + + } + if (der_int[0] != 0x02) + { + return ATCACERT_E_DECODING_ERROR; // Not an integer tag + + } + der_length_size = *der_int_size - 1; + ret = atcacert_der_dec_length(&der_int[1], &der_length_size, &int_data_size_calc); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + if (*der_int_size < (1 + der_length_size + int_data_size_calc)) + { + return ATCACERT_E_DECODING_ERROR; // Invalid DER integer, not enough data. + + } + *der_int_size = (1 + der_length_size + int_data_size_calc); + + if (int_data == NULL && int_data_size == NULL) + { + return ATCACERT_E_SUCCESS; // Caller doesn't want the actual data, just the der_int_size + + } + if (int_data != NULL && *int_data_size < int_data_size_calc) + { + *int_data_size = int_data_size_calc; + return ATCACERT_E_BUFFER_TOO_SMALL; + } + + *int_data_size = int_data_size_calc; + + if (int_data == NULL) + { + return ATCACERT_E_SUCCESS; // Caller doesn't want the actual data, just the int_data_size + + } + memcpy(int_data, &der_int[1 + der_length_size], int_data_size_calc); + + return ATCACERT_E_SUCCESS; +} + +int atcacert_der_enc_ecdsa_sig_value(const uint8_t raw_sig[64], + uint8_t* der_sig, + size_t* der_sig_size) +{ + int ret = 0; + size_t r_size = 0; + size_t s_size = 0; + size_t der_sig_size_calc = 0; + + if (raw_sig == NULL || der_sig_size == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + // Find size of the DER encoded R integer + ret = atcacert_der_enc_integer(&raw_sig[0], 32, TRUE, NULL, &r_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + // Find size of the DER encoded S integer + ret = atcacert_der_enc_integer(&raw_sig[32], 32, TRUE, NULL, &s_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + // This calculation assumes all DER lengths are a single byte, which is fine for 32 byte + // R and S integers. + der_sig_size_calc = 5 + r_size + s_size; + + if (der_sig != NULL && *der_sig_size < der_sig_size_calc) + { + *der_sig_size = der_sig_size_calc; + return ATCACERT_E_BUFFER_TOO_SMALL; + } + + *der_sig_size = der_sig_size_calc; + + if (der_sig == NULL) + { + return ATCACERT_E_SUCCESS; // Caller just wanted the encoded size + + } + der_sig[0] = 0x03; // signatureValue bit string tag + der_sig[1] = (uint8_t)(der_sig_size_calc - 2); // signatureValue bit string length + der_sig[2] = 0x00; // signatureValue bit string spare bits + + // signatureValue bit string value is the DER encoding of ECDSA-Sig-Value + der_sig[3] = 0x30; // sequence tag + der_sig[4] = (uint8_t)(der_sig_size_calc - 5); // sequence length + + // Add R integer + ret = atcacert_der_enc_integer(&raw_sig[0], 32, TRUE, &der_sig[5], &r_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + // Add S integer + ret = atcacert_der_enc_integer(&raw_sig[32], 32, TRUE, &der_sig[5 + r_size], &s_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_der_dec_ecdsa_sig_value(const uint8_t* der_sig, + size_t* der_sig_size, + uint8_t raw_sig[64]) +{ + int ret = 0; + size_t curr_idx = 0; + size_t dec_size = 0; + uint32_t bs_length = 0; + uint32_t seq_length = 0; + size_t r_size = 0; + size_t s_size = 0; + uint8_t int_data[33]; + size_t int_data_size = 0; + + if (der_sig == NULL || der_sig_size == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + if (*der_sig_size < 1) + { + return ATCACERT_E_DECODING_ERROR; // No data to decode + + } + // signatureValue bit string tag + curr_idx = 0; + if (der_sig[curr_idx] != 0x03) + { + return ATCACERT_E_DECODING_ERROR; // Unexpected tag value + } + curr_idx++; + + // signatureValue bit string length + dec_size = *der_sig_size - curr_idx; + ret = atcacert_der_dec_length(&der_sig[curr_idx], &dec_size, &bs_length); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; // Failed to decode length + } + curr_idx += dec_size; + if (curr_idx + bs_length > *der_sig_size) + { + return ATCACERT_E_DECODING_ERROR; // Not enough data in buffer to decode the rest + + } + // signatureValue bit string spare bits + if (curr_idx >= *der_sig_size) + { + return ATCACERT_E_DECODING_ERROR; // No data left + } + if (der_sig[curr_idx] != 0x00) + { + return ATCACERT_E_DECODING_ERROR; // Unexpected spare bits value + } + curr_idx++; + + // signatureValue bit string value is the DER encoding of ECDSA-Sig-Value + + // sequence tag + if (curr_idx >= *der_sig_size) + { + return ATCACERT_E_DECODING_ERROR; // No data left + } + if (der_sig[curr_idx] != 0x30) + { + return ATCACERT_E_DECODING_ERROR; // Unexpected tag value + } + curr_idx++; + + // sequence length + if (curr_idx >= *der_sig_size) + { + return ATCACERT_E_DECODING_ERROR; // No data left + } + dec_size = *der_sig_size - curr_idx; + ret = atcacert_der_dec_length(&der_sig[curr_idx], &dec_size, &seq_length); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; // Failed to decode length + } + curr_idx += dec_size; + if (curr_idx + seq_length > *der_sig_size) + { + return ATCACERT_E_DECODING_ERROR; // Not enough data in buffer to decode the rest + + } + // R integer + if (curr_idx >= *der_sig_size) + { + return ATCACERT_E_DECODING_ERROR; // No data left + } + r_size = *der_sig_size - curr_idx; + int_data_size = sizeof(int_data); + ret = atcacert_der_dec_integer(&der_sig[curr_idx], &r_size, int_data, &int_data_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; // Failed to decode length + } + curr_idx += r_size; + + if (raw_sig != NULL) + { + memset(raw_sig, 0, 64); // Zero out the raw sig as the decoded integers may not touch all bytes + + } + if (int_data_size <= 32) + { + if (raw_sig != NULL) + { + memcpy(&raw_sig[32 - int_data_size], &int_data[0], int_data_size); + } + } + else if (int_data_size == 33) + { + if (int_data[0] != 0x00) + { + return ATCACERT_E_DECODING_ERROR; // R integer is too large + } + // DER integer was 0-padded to keep it positive + if (raw_sig != NULL) + { + memcpy(&raw_sig[0], &int_data[1], 32); + } + } + else + { + return ATCACERT_E_DECODING_ERROR; // R integer is too large + + } + // S integer + if (curr_idx >= *der_sig_size) + { + return ATCACERT_E_DECODING_ERROR; // No data left + } + s_size = *der_sig_size - curr_idx; + int_data_size = sizeof(int_data); + ret = atcacert_der_dec_integer(&der_sig[curr_idx], &s_size, int_data, &int_data_size); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; // Failed to decode length + } + curr_idx += s_size; + + if (int_data_size <= 32) + { + if (raw_sig != NULL) + { + memcpy(&raw_sig[64 - int_data_size], &int_data[0], int_data_size); + } + } + else if (int_data_size == 33) + { + if (int_data[0] != 0x00) + { + return ATCACERT_E_DECODING_ERROR; // S integer is too large + } + // DER integer was 0-padded to keep it positive + if (raw_sig != NULL) + { + memcpy(&raw_sig[32], &int_data[1], 32); + } + } + else + { + return ATCACERT_E_DECODING_ERROR; // S integer is too large + + } + if (seq_length != r_size + s_size) + { + return ATCACERT_E_DECODING_ERROR; // Unexpected extra data in sequence + + } + if (bs_length != r_size + s_size + 3) + { + return ATCACERT_E_DECODING_ERROR; // Unexpected extra data in bit string + + } + *der_sig_size = curr_idx; + + return ATCACERT_E_SUCCESS; +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.h new file mode 100644 index 0000000..432033c --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.h @@ -0,0 +1,165 @@ +/** + * \file + * \brief function declarations required to work with DER encoded data related to X.509 certificates. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#ifndef ATCACERT_DER_H +#define ATCACERT_DER_H + +#include +#include +#include "atcacert.h" + +// Inform function naming when compiling in C++ +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup atcacert_ Certificate manipulation methods (atcacert_) + * + * \brief + * These methods provide convenient ways to perform certification I/O with + * CryptoAuth chips and perform certificate manipulation in memory + * + @{ */ + +/** + * \brief Encode a length in DER format. + * + * X.690 (http://www.itu.int/rec/T-REC-X.690/en) section 8.1.3, for encoding + * + * \param[in] length Length to be encoded. + * \param[out] der_length DER encoded length will returned in this buffer. + * \param[inout] der_length_size As input, size of der_length buffer in bytes. + * As output, the size of the DER length encoding in bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_der_enc_length(uint32_t length, uint8_t* der_length, size_t* der_length_size); + +/** + * \brief Decode a DER format length. + * + * X.690 (http://www.itu.int/rec/T-REC-X.690/en) section 8.1.3, for encoding + * + * \param[in] der_length DER encoded length. + * \param[inout] der_length_size As input, the size of the der_length buffer in bytes. + * As output, the size of the DER encoded length that was decoded. + * \param[out] length Decoded length is returned here. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_der_dec_length(const uint8_t* der_length, size_t* der_length_size, uint32_t* length); + +int atcacert_der_adjust_length(uint8_t* der_length, size_t* der_length_size, int delta_length, uint32_t* new_length); + +/** + * \brief Encode an ASN.1 integer in DER format, including tag and length fields. + * + * X.680 (http://www.itu.int/rec/T-REC-X.680/en) section 19.8, for tag value + * X.690 (http://www.itu.int/rec/T-REC-X.690/en) section 8.3, for encoding + * + * \param[in] int_data Raw integer in big-endian format. + * \param[in] int_data_size Size of the raw integer in bytes. + * \param[in] is_unsigned Indicate whether the input integer should be treated as unsigned. + * \param[out] der_int DER encoded integer is returned in this buffer. + * \param[inout] der_int_size As input, the size of the der_int buffer in bytes. + * As output, the size of the DER integer returned in bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_der_enc_integer(const uint8_t* int_data, + size_t int_data_size, + uint8_t is_unsigned, + uint8_t* der_int, + size_t* der_int_size); + +/** + * \brief Decode an ASN.1 DER encoded integer. + * + * X.680 (http://www.itu.int/rec/T-REC-X.680/en) section 19.8, for tag value + * X.690 (http://www.itu.int/rec/T-REC-X.690/en) section 8.3, for encoding + * + * \param[in] der_int DER encoded ASN.1 integer, including the tag and length fields. + * \param[inout] der_int_size As input, the size of the der_int buffer in bytes. + * As output, the size of the DER integer decoded in bytes. + * \param[out] int_data Decode integer is returned in this buffer in a signed big-endian + * format. + * \param[inout] int_data_size As input, the size of int_data in bytes. + * As output, the size of the decoded integer in bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_der_dec_integer(const uint8_t* der_int, + size_t* der_int_size, + uint8_t* int_data, + size_t* int_data_size); + +/** + * \brief Formats a raw ECDSA P256 signature in the DER encoding found in X.509 certificates. + * + * This will return the DER encoding of the signatureValue field as found in an X.509 certificate + * (RFC 5280). This include the tag, length, and value. The value of the signatureValue is the DER + * encoding of the ECDSA-Sig-Value as specified by RFC 5480 and SECG SEC1. + * + * \param[in] raw_sig P256 ECDSA signature to be formatted. Input format is R and S + * integers concatenated together. 64 bytes. + * \param[out] der_sig X.509 format signature (TLV of signatureValue) will be returned in + * this buffer. + * \param[inout] der_sig_size As input, the size of the x509_sig buffer in bytes. + * As output, the size of the returned X.509 signature in bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_der_enc_ecdsa_sig_value(const uint8_t raw_sig[64], + uint8_t* der_sig, + size_t* der_sig_size); + +/** + * \brief Parses an ECDSA P256 signature in the DER encoding as found in X.509 certificates. + * + * This will parse the DER encoding of the signatureValue field as found in an X.509 certificate + * (RFC 5280). x509_sig should include the tag, length, and value. The value of the signatureValue + * is the DER encoding of the ECDSA-Sig-Value as specified by RFC 5480 and SECG SEC1. + * + * \param[in] der_sig X.509 format signature (TLV of signatureValue) to be parsed. + * \param[inout] der_sig_size As input, size of the der_sig buffer in bytes. + * As output, size of the DER x.509 signature parsed from the buffer. + * \param[out] raw_sig Parsed P256 ECDSA signature will be returned in this buffer. + * Formatted as R and S integers concatenated together. 64 bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_der_dec_ecdsa_sig_value(const uint8_t * der_sig, + size_t * der_sig_size, + uint8_t raw_sig[64]); + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.c new file mode 100644 index 0000000..8bea860 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.c @@ -0,0 +1,105 @@ +/** + * \file + * \brief host side methods using CryptoAuth hardware + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "atcacert_host_hw.h" +#include "basic/atca_basic.h" +#include "crypto/atca_crypto_sw_sha2.h" + + + + + +int atcacert_verify_cert_hw(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + const uint8_t ca_public_key[64]) +{ + int ret = 0; + uint8_t tbs_digest[32]; + uint8_t signature[64]; + bool is_verified = false; + + if (cert_def == NULL || ca_public_key == NULL || cert == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + ret = atcacert_get_tbs_digest(cert_def, cert, cert_size, tbs_digest); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_get_signature(cert_def, cert, cert_size, signature); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcab_verify_extern(tbs_digest, signature, ca_public_key, &is_verified); + if (ret != ATCA_SUCCESS) + { + return ret; + } + + return is_verified ? ATCACERT_E_SUCCESS : ATCACERT_E_VERIFY_FAILED; +} + + + + +int atcacert_gen_challenge_hw(uint8_t challenge[32]) +{ + if (challenge == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + return atcab_random(challenge); +} + + +int atcacert_verify_response_hw(const uint8_t device_public_key[64], + const uint8_t challenge[32], + const uint8_t response[64]) +{ + int ret = 0; + bool is_verified = false; + + if (device_public_key == NULL || challenge == NULL || response == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + ret = atcab_verify_extern(challenge, response, device_public_key, &is_verified); + if (ret != ATCA_SUCCESS) + { + return ret; + } + + return is_verified ? ATCACERT_E_SUCCESS : ATCACERT_E_VERIFY_FAILED; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.h new file mode 100644 index 0000000..5c4fce8 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.h @@ -0,0 +1,106 @@ +/** + * \file + * \brief host side methods using CryptoAuth hardware + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ +#ifndef ATCACERT_HOST_HA_H +#define ATCACERT_HOST_HA_H + +#include +#include +#include "atcacert_def.h" + +// Inform function naming when compiling in C++ +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup atcacert_ Certificate manipulation methods (atcacert_) + * + * \brief + * These methods provide convenient ways to perform certification I/O with + * CryptoAuth chips and perform certificate manipulation in memory + * + @{ */ + +/** + * \brief Verify a certificate against its certificate authority's public key using the host's ATECC + * device for crypto functions. + * + * \param[in] cert_def Certificate definition describing how to extract the TBS and signature + * components from the certificate specified. + * \param[in] cert Certificate to verify. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[in] ca_public_key The ECC P256 public key of the certificate authority that signed this + * certificate. Formatted as the 32 byte X and Y integers concatenated + * together (64 bytes total). + * + * \return ATCACERT_E_SUCCESS if the verify succeeds, ATCACERT_VERIFY_FAILED or ATCA_EXECUTION_ERROR if it fails to + * verify. ATCA_EXECUTION_ERROR may occur when the public key is invalid and doesn't fall + * on the P256 curve. + */ +int atcacert_verify_cert_hw(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + const uint8_t ca_public_key[64]); + + +/** + * \brief Generate a random challenge to be sent to the client using the RNG on the host's ATECC + * device. + * + * \param[out] challenge Random challenge is return here. 32 bytes. + * + * \return ATCACERT_E_SUCCESS on success, otherwise an error code. + */ +int atcacert_gen_challenge_hw(uint8_t challenge[32]); + + +/** + * \brief Verify a client's response to a challenge using the host's ATECC device for crypto + * functions. + * + * The challenge-response protocol is an ECDSA Sign and Verify. This performs an ECDSA verify on the + * response returned by the client, verifying the client has the private key counter-part to the + * public key returned in its certificate. + * + * \param[in] device_public_key Device public key as read from its certificate. Formatted as the X + * and Y integers concatenated together. 64 bytes. + * \param[in] challenge Challenge that was sent to the client. 32 bytes. + * \param[in] response Response returned from the client to be verified. 64 bytes. + * + * \return ATCACERT_E_SUCCESS if the verify succeeds, ATCACERT_VERIFY_FAILED or ATCA_EXECUTION_ERROR if it fails to + * verify. ATCA_EXECUTION_ERROR may occur when the public key is invalid and doesn't fall + * on the P256 curve. + */ +int atcacert_verify_response_hw(const uint8_t device_public_key[64], + const uint8_t challenge[32], + const uint8_t response[64]); + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.c new file mode 100644 index 0000000..e7255e1 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.c @@ -0,0 +1,97 @@ +/** + * \file + * \brief host side methods using software implementations + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "atcacert_host_sw.h" +#include "crypto/atca_crypto_sw_sha2.h" +#include "crypto/atca_crypto_sw_ecdsa.h" +#include "crypto/atca_crypto_sw_rand.h" + + + + + + +int atcacert_verify_cert_sw(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + const uint8_t ca_public_key[64]) +{ + int ret = 0; + uint8_t tbs_digest[32]; + uint8_t signature[64]; + + if (cert_def == NULL || ca_public_key == NULL || cert == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + ret = atcacert_get_tbs_digest(cert_def, cert, cert_size, tbs_digest); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcacert_get_signature(cert_def, cert, cert_size, signature); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + ret = atcac_sw_ecdsa_verify_p256(tbs_digest, signature, ca_public_key); + if (ret != ATCACERT_E_SUCCESS) + { + return ret; + } + + return ATCACERT_E_SUCCESS; +} + + + +int atcacert_gen_challenge_sw(uint8_t challenge[32]) +{ + if (challenge == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + return atcac_sw_random(challenge, 32); +} + + + +int atcacert_verify_response_sw(const uint8_t device_public_key[64], + const uint8_t challenge[32], + const uint8_t response[64]) +{ + if (device_public_key == NULL || challenge == NULL || response == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + return atcac_sw_ecdsa_verify_p256(challenge, response, device_public_key); +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.h new file mode 100644 index 0000000..1a4a0e5 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.h @@ -0,0 +1,106 @@ +/** + * \file + * \brief Host side methods using software implementations. host-side, the one authenticating + * a client, of the authentication process. Crypto functions are performed using a software library. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef ATCACERT_HOST_SOFT_H +#define ATCACERT_HOST_SOFT_H + +#include +#include +#include "atcacert_def.h" + +// Inform function naming when compiling in C++ +#ifdef __cplusplus +extern "C" { +#endif + + +/** \defgroup atcacert_ Certificate manipulation methods (atcacert_) + * + * \brief + * These methods provide convenient ways to perform certification I/O with + * CryptoAuth chips and perform certificate manipulation in memory + * + @{ */ + +/** + * \brief Verify a certificate against its certificate authority's public key using software crypto + * functions.The function is currently not implemented. + * + * \param[in] cert_def Certificate definition describing how to extract the TBS and signature + * components from the certificate specified. + * \param[in] cert Certificate to verify. + * \param[in] cert_size Size of the certificate (cert) in bytes. + * \param[in] ca_public_key The ECC P256 public key of the certificate authority that signed this + * certificate. Formatted as the 32 byte X and Y integers concatenated + * together (64 bytes total). + * + * \return ATCA_UNIMPLEMENTED , as the function is currently not implemented. + */ +int atcacert_verify_cert_sw(const atcacert_def_t* cert_def, + const uint8_t* cert, + size_t cert_size, + const uint8_t ca_public_key[64]); + + + +/** + * \brief Generate a random challenge to be sent to the client using a software PRNG.The function is currently not implemented. + * + * \param[out] challenge Random challenge is return here. 32 bytes. + * + * \return ATCA_UNIMPLEMENTED , as the function is currently not implemented. + */ +int atcacert_gen_challenge_sw(uint8_t challenge[32]); + + + + +/** + * \brief Verify a client's response to a challenge using software crypto functions.The function is currently not implemented. + * + * The challenge-response protocol is an ECDSA Sign and Verify. This performs an ECDSA verify on the + * response returned by the client, verifying the client has the private key counter-part to the + * public key returned in its certificate. + * + * \param[in] device_public_key Device public key as read from its certificate. Formatted as the X + * and Y integers concatenated together. 64 bytes. + * \param[in] challenge Challenge that was sent to the client. 32 bytes. + * \param[in] response Response returned from the client to be verified. 64 bytes. + * + * \return ATCA_UNIMPLEMENTED , as the function is currently not implemented. + */ +int atcacert_verify_response_sw(const uint8_t device_public_key[64], + const uint8_t challenge[32], + const uint8_t response[64]); + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.c new file mode 100644 index 0000000..c418900 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.c @@ -0,0 +1,165 @@ +#include "atcacert.h" +#include "atcacert_pem.h" +#include "../basic/atca_helpers.h" + +int atcacert_encode_pem(const uint8_t* der, + size_t der_size, + char* pem, + size_t* pem_size, + const char* header, + const char* footer) +{ + ATCA_STATUS status; + size_t max_pem_size; + size_t header_size; + size_t footer_size; + size_t b64_size; + size_t pem_index = 0; + + if (der == NULL || pem == NULL || pem_size == NULL || header == NULL || footer == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + max_pem_size = *pem_size; + *pem_size = 0; // Default to 0 + + // Add header + header_size = strlen(header); + if (pem_index + header_size + 2 > max_pem_size) + { + return ATCACERT_E_BUFFER_TOO_SMALL; + } + memcpy(&pem[pem_index], header, header_size); + pem_index += header_size; + memcpy(&pem[pem_index], "\r\n", 2); + pem_index += 2; + + // Add base64 encoded DER data with \r\n every 64 characters + b64_size = max_pem_size - pem_index; + status = atcab_base64encode(der, der_size, &pem[pem_index], &b64_size); + if (status != ATCACERT_E_SUCCESS) + { + if (status == ATCA_SMALL_BUFFER) + { + status = ATCACERT_E_BUFFER_TOO_SMALL; + } + return status; + } + pem_index += b64_size; + + // Add \r\n after data + footer_size = strlen(footer); + if (pem_index + 2 + footer_size + 2 + 1 > max_pem_size) + { + return ATCACERT_E_BUFFER_TOO_SMALL; + } + memcpy(&pem[pem_index], "\r\n", 2); + pem_index += 2; + + // Add footer + memcpy(&pem[pem_index], footer, footer_size); + pem_index += footer_size; + memcpy(&pem[pem_index], "\r\n", 2); + pem_index += 2; + + pem[pem_index] = 0; // Terminating null, not included in size + + // Set output size + *pem_size = pem_index; + + return ATCACERT_E_SUCCESS; +} + +int atcacert_decode_pem(const char* pem, + size_t pem_size, + uint8_t* der, + size_t* der_size, + const char* header, + const char* footer) +{ + ATCA_STATUS status; + const char* header_pos = NULL; + const char* data_pos = NULL; + const char* footer_pos = NULL; + + if (pem == NULL || der == NULL || der_size == NULL || header == NULL || footer == NULL) + { + return ATCACERT_E_BAD_PARAMS; + } + + // Find the position of the header + header_pos = strstr(pem, header); + if (header_pos == NULL) + { + return ATCACERT_E_DECODING_ERROR; // Couldn't find header + } + + // Data should be right after the header. Not accounting for new lines as + // the base64 decode should skip over those. + data_pos = header_pos + strlen(header); + + // Find footer + footer_pos = strstr(pem, footer); + if (footer_pos == NULL || footer_pos < data_pos) + { + // Couldn't find footer or found it before the data + return ATCACERT_E_DECODING_ERROR; + } + + // Decode data + status = atcab_base64decode(data_pos, footer_pos - data_pos, der, der_size); + if (status != ATCA_SUCCESS) + { + if (status == ATCA_SMALL_BUFFER) + { + status = ATCACERT_E_BUFFER_TOO_SMALL; + } + return status; + } + + return ATCACERT_E_SUCCESS; +} + +int atcacert_encode_pem_cert(const uint8_t* der_cert, size_t der_cert_size, char* pem_cert, size_t* pem_cert_size) +{ + return atcacert_encode_pem( + der_cert, + der_cert_size, + pem_cert, + pem_cert_size, + PEM_CERT_BEGIN, + PEM_CERT_END); +} + +int atcacert_encode_pem_csr(const uint8_t* der_csr, size_t der_csr_size, char* pem_csr, size_t* pem_csr_size) +{ + return atcacert_encode_pem( + der_csr, + der_csr_size, + pem_csr, + pem_csr_size, + PEM_CSR_BEGIN, + PEM_CSR_END); +} + +int atcacert_decode_pem_cert(const char* pem_cert, size_t pem_cert_size, uint8_t* der_cert, size_t* der_cert_size) +{ + return atcacert_decode_pem( + pem_cert, + pem_cert_size, + der_cert, + der_cert_size, + PEM_CERT_BEGIN, + PEM_CERT_END); +} + +int atcacert_decode_pem_csr(const char* pem_csr, size_t pem_csr_size, uint8_t* der_csr, size_t* der_csr_size) +{ + return atcacert_decode_pem( + pem_csr, + pem_csr_size, + der_csr, + der_csr_size, + PEM_CSR_BEGIN, + PEM_CSR_END); +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.h new file mode 100644 index 0000000..d2bf022 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.h @@ -0,0 +1,126 @@ +/** + * \file + * \brief Functions for converting between DER and PEM formats. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef ATCACERT_PEM_H +#define ATCACERT_PEM_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define PEM_CERT_BEGIN "-----BEGIN CERTIFICATE-----" +#define PEM_CERT_END "-----END CERTIFICATE-----" +#define PEM_CSR_BEGIN "-----BEGIN CERTIFICATE REQUEST-----" +#define PEM_CSR_END "-----END CERTIFICATE REQUEST-----" + +/** + * \brief Encode a DER data in PEM format. + * \param[in] der DER data to be encoded as PEM. + * \param[out] der_size DER data size in bytes. + * \param[out] pem PEM encoded data is returned here. + * \param[inout] pem_size As input, the size of the pem buffer. + * As output, the size of the PEM data. + * \param[in] header Header to place at the beginning of the PEM data. + * \param[in] footer Footer to place at the end of the PEM data. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +int atcacert_encode_pem(const uint8_t* der, + size_t der_size, + char* pem, + size_t* pem_size, + const char* header, + const char* footer); + +/** + * \brief Decode PEM data into DER format. + * \param[in] pem PEM data to decode to DER. + * \param[in] pem_size PEM data size in bytes. + * \param[out] der DER data is returned here. + * \param[inout] der_size As input, the size of the der buffer. + * As output, the size of the DER data. + * \param[in] header Header to find the beginning of the PEM data. + * \param[in] footer Footer to find the end of the PEM data. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +int atcacert_decode_pem(const char* pem, + size_t pem_size, + uint8_t* der, + size_t* der_size, + const char* header, + const char* footer); + +/** + * \brief Encode a DER certificate in PEM format. + * \param[in] der_cert DER certificate to be encoded as PEM. + * \param[out] der_cert_size DER certificate size in bytes. + * \param[out] pem_cert PEM encoded certificate is returned here. + * \param[inout] pem_cert_size As input, the size of the pem_cert buffer. + * As output, the size of the PEM certificate. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +int atcacert_encode_pem_cert(const uint8_t* der_cert, size_t der_cert_size, char* pem_cert, size_t* pem_cert_size); + +/** + * \brief Decode a PEM certificate into DER format. + * \param[in] pem_cert PEM certificate to decode to DER. + * \param[in] pem_cert_size PEM certificate size in bytes. + * \param[out] der_cert DER certificate is returned here. + * \param[inout] der_cert_size As input, the size of the der_cert buffer. + * As output, the size of the DER certificate. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +int atcacert_decode_pem_cert(const char* pem_cert, size_t pem_cert_size, uint8_t* der_cert, size_t* der_cert_size); + +/** + * \brief Encode a DER CSR in PEM format. + * \param[in] der_csr DER CSR to be encoded as PEM. + * \param[out] der_csr_size DER CSR size in bytes. + * \param[out] pem_csr PEM encoded CSR is returned here. + * \param[inout] pem_csr_size As input, the size of the pem_csr buffer. + * As output, the size of the PEM CSR. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +int atcacert_encode_pem_csr(const uint8_t* der_csr, size_t der_csr_size, char* pem_csr, size_t* pem_csr_size); + +/** + * \brief Extract the CSR certificate bytes from a PEM encoded CSR certificate + * \param[in] pem_csr PEM CSR to decode to DER. + * \param[in] pem_csr_size PEM CSR size in bytes. + * \param[out] der_csr DER CSR is returned here. + * \param[inout] der_csr_size As input, the size of the der_csr buffer. + * As output, the size of the DER CSR. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +int atcacert_decode_pem_csr(const char* pem_csr, size_t pem_csr_size, uint8_t* der_csr, size_t* der_csr_size); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/README.md b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/README.md new file mode 100644 index 0000000..79f8c2c --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/README.md @@ -0,0 +1,15 @@ +basic directory - Purpose +========================= +The purpose of this directory is to contain the files implementing the APIs for +a basic interface to the core CryptoAuthLib library. + +High-level functions like these make it very convenient to use the library when +standard configurations and defaults are in play. They are the easiest to use +when developing examples or trying to understand the "flow" of an +authentication operation without getting overwhelmed by the details. + +This makes simple jobs easy and if you need more sophistication and power, you +can employ the full power of the CryptoAuthLib object model. + +See the Doxygen documentation in cryptoauthlib/docs for details on the API of +the Basic commands. diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.c new file mode 100644 index 0000000..33627bc --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.c @@ -0,0 +1,420 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods. These methods provide a simpler way + * to access the core crypto methods. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#include "atca_basic.h" +#include "host/atca_host.h" + +const char atca_version[] = { "20190517" }; // change for each release, yyyymmdd +ATCADevice _gDevice = NULL; +#ifdef ATCA_NO_HEAP +struct atca_command g_atcab_command; +struct atca_iface g_atcab_iface; +struct atca_device g_atcab_device; +#endif +#define MAX_BUSES 4 + +/** \brief basic API methods are all prefixed with atcab_ (CryptoAuthLib Basic) + * the fundamental premise of the basic API is it is based on a single interface + * instance and that instance is global, so all basic API commands assume that + * one global device is the one to operate on. + */ + +/** \brief returns a version string for the CryptoAuthLib release. + * The format of the version string returned is "yyyymmdd" + * \param[out] ver_str ptr to space to receive version string + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_version(char *ver_str) +{ + strcpy(ver_str, atca_version); + return ATCA_SUCCESS; +} + + +/** \brief Creates a global ATCADevice object used by Basic API. + * \param[in] cfg Logical interface configuration. Some predefined + * configurations can be found in atca_cfgs.h + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_init(ATCAIfaceCfg *cfg) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + + // If a device has already been initialized, release it + if (_gDevice) + { + atcab_release(); + } + +#ifdef ATCA_NO_HEAP + g_atcab_device.mCommands = &g_atcab_command; + g_atcab_device.mIface = &g_atcab_iface; + status = initATCADevice(cfg, &g_atcab_device); + if (status != ATCA_SUCCESS) + { + return status; + } + _gDevice = &g_atcab_device; +#else + _gDevice = newATCADevice(cfg); + if (_gDevice == NULL) + { + return ATCA_GEN_FAIL; + } +#endif + + if (cfg->devtype == ATECC608A) + { + if ((status = atcab_read_bytes_zone(ATCA_ZONE_CONFIG, 0, ATCA_CHIPMODE_OFFSET, &_gDevice->mCommands->clock_divider, 1)) != ATCA_SUCCESS) + { + return status; + } + _gDevice->mCommands->clock_divider &= ATCA_CHIPMODE_CLOCK_DIV_MASK; + } + + return ATCA_SUCCESS; +} + +/** \brief Initialize the global ATCADevice object to point to one of your + * choosing for use with all the atcab_ basic API. + * \param[in] ca_device ATCADevice instance to use as the global Basic API + * crypto device instance + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_init_device(ATCADevice ca_device) +{ + if (ca_device == NULL) + { + return ATCA_BAD_PARAM; + } + + if (atGetCommands(ca_device) == NULL || atGetIFace(ca_device) == NULL) + { + return ATCA_GEN_FAIL; + } + + // if there's already a device created, release it + if (_gDevice) + { + atcab_release(); + } + + _gDevice = ca_device; + + return ATCA_SUCCESS; +} + +/** \brief release (free) the global ATCADevice instance. + * This must be called in order to release or free up the interface. + * \return Returns ATCA_SUCCESS . + */ +ATCA_STATUS atcab_release(void) +{ +#ifdef ATCA_NO_HEAP + ATCA_STATUS status = releaseATCADevice(_gDevice); + if (status != ATCA_SUCCESS) + { + return status; + } + _gDevice = NULL; +#else + deleteATCADevice(&_gDevice); +#endif + return ATCA_SUCCESS; +} + +/** \brief Get the global device object. + * \return instance of global ATCADevice + */ +ATCADevice atcab_get_device(void) +{ + return _gDevice; +} + +/** \brief Get the current device type. + * \return Device type if basic api is initialized or ATCA_DEV_UNKNOWN. + */ +ATCADeviceType atcab_get_device_type(void) +{ + if (_gDevice) + { + return _gDevice->mIface->mIfaceCFG->devtype; + } + else + { + return ATCA_DEV_UNKNOWN; + } +} + +/** \brief wakeup the CryptoAuth device + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_wakeup(void) +{ + if (_gDevice == NULL) + { + return ATCA_GEN_FAIL; + } + + return atwake(_gDevice->mIface); +} + +/** \brief idle the CryptoAuth device + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_idle(void) +{ + if (_gDevice == NULL) + { + return ATCA_GEN_FAIL; + } + + return atidle(_gDevice->mIface); +} + +/** \brief invoke sleep on the CryptoAuth device + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_sleep(void) +{ + if (_gDevice == NULL) + { + return ATCA_GEN_FAIL; + } + + return atsleep(_gDevice->mIface); +} + + +/** \brief auto discovery of crypto auth devices + * + * Calls interface discovery functions and fills in cfg_array up to the maximum + * number of configurations either found or the size of the array. The cfg_array + * can have a mixture of interface types (ie: some I2C, some SWI or UART) depending upon + * which interfaces you've enabled + * + * \param[out] cfg_array ptr to an array of interface configs + * \param[in] max_ifaces maximum size of cfg_array + * \return ATCA_SUCCESS on success, otherwise an error code. + */ + + +ATCA_STATUS atcab_cfg_discover(ATCAIfaceCfg cfg_array[], int max_ifaces) +{ + int iface_num = 0; + int found = 0; + int i = 0; + +// this cumulatively gathers all the interfaces enabled by #defines + +#ifdef ATCA_HAL_I2C + int i2c_buses[MAX_BUSES]; + memset(i2c_buses, -1, sizeof(i2c_buses)); + hal_i2c_discover_buses(i2c_buses, MAX_BUSES); + + for (i = 0; i < MAX_BUSES && iface_num < max_ifaces; i++) + { + if (i2c_buses[i] != -1) + { + hal_i2c_discover_devices(i2c_buses[i], &cfg_array[iface_num], &found); + iface_num += found; + } + } +#endif + +#ifdef ATCA_HAL_SWI + int swi_buses[MAX_BUSES]; + memset(swi_buses, -1, sizeof(swi_buses)); + hal_swi_discover_buses(swi_buses, MAX_BUSES); + for (i = 0; i < MAX_BUSES && iface_num < max_ifaces; i++) + { + if (swi_buses[i] != -1) + { + hal_swi_discover_devices(swi_buses[i], &cfg_array[iface_num], &found); + iface_num += found; + } + } + +#endif + +#ifdef ATCA_HAL_UART + int uart_buses[MAX_BUSES]; + memset(uart_buses, -1, sizeof(uart_buses)); + hal_uart_discover_buses(uart_buses, MAX_BUSES); + for (i = 0; i < MAX_BUSES && iface_num < max_ifaces; i++) + { + if (uart_buses[i] != -1) + { + hal_uart_discover_devices(uart_buses[i], &cfg_array[iface_num], &found); + iface_num += found; + } + } +#endif + +#ifdef ATCA_HAL_KIT_CDC + int cdc_buses[MAX_BUSES]; + memset(cdc_buses, -1, sizeof(cdc_buses)); + hal_kit_cdc_discover_buses(cdc_buses, MAX_BUSES); + for (i = 0; i < MAX_BUSES && iface_num < max_ifaces; i++) + { + if (cdc_buses[i] != -1) + { + hal_kit_cdc_discover_devices(cdc_buses[i], &cfg_array[iface_num++], &found); + iface_num += found; + } + } +#endif + +#ifdef ATCA_HAL_KIT_HID + int hid_buses[MAX_BUSES]; + memset(hid_buses, -1, sizeof(hid_buses)); + hal_kit_hid_discover_buses(hid_buses, MAX_BUSES); + for (i = 0; i < MAX_BUSES && iface_num < max_ifaces; i++) + { + if (hid_buses[i] != -1) + { + hal_kit_hid_discover_devices(hid_buses[i], &cfg_array[iface_num++], &found); + iface_num += found; + } + } +#endif + return ATCA_SUCCESS; +} + +/** \brief common cleanup code which idles the device after any operation + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS _atcab_exit(void) +{ + return atcab_idle(); +} + +/** \brief Compute the address given the zone, slot, block, and offset + * \param[in] zone Zone to get address from. Config(0), OTP(1), or + * Data(2) which requires a slot. + * \param[in] slot Slot Id number for data zone and zero for other zones. + * \param[in] block Block number within the data or configuration or OTP zone . + * \param[in] offset Offset Number within the block of data or configuration or OTP zone. + * \param[out] addr Pointer to the address of data or configuration or OTP zone. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_get_addr(uint8_t zone, uint16_t slot, uint8_t block, uint8_t offset, uint16_t* addr) +{ + ATCA_STATUS status = ATCA_SUCCESS; + uint8_t mem_zone = zone & 0x03; + + if (addr == NULL) + { + return ATCA_BAD_PARAM; + } + if ((mem_zone != ATCA_ZONE_CONFIG) && (mem_zone != ATCA_ZONE_DATA) && (mem_zone != ATCA_ZONE_OTP)) + { + return ATCA_BAD_PARAM; + } + do + { + // Initialize the addr to 00 + *addr = 0; + // Mask the offset + offset = offset & (uint8_t)0x07; + if ((mem_zone == ATCA_ZONE_CONFIG) || (mem_zone == ATCA_ZONE_OTP)) + { + *addr = block << 3; + *addr |= offset; + } + else // ATCA_ZONE_DATA + { + *addr = slot << 3; + *addr |= offset; + *addr |= block << 8; + } + } + while (0); + + return status; +} + +/** \brief Gets the size of the specified zone in bytes. + * + * \param[in] zone Zone to get size information from. Config(0), OTP(1), or + * Data(2) which requires a slot. + * \param[in] slot If zone is Data(2), the slot to query for size. + * \param[out] size Zone size is returned here. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_get_zone_size(uint8_t zone, uint16_t slot, size_t* size) +{ + ATCA_STATUS status = ATCA_SUCCESS; + + if (size == NULL) + { + return ATCA_BAD_PARAM; + } + + if (_gDevice->mIface->mIfaceCFG->devtype == ATSHA204A) + { + switch (zone) + { + case ATCA_ZONE_CONFIG: *size = 88; break; + case ATCA_ZONE_OTP: *size = 64; break; + case ATCA_ZONE_DATA: *size = 32; break; + default: status = ATCA_BAD_PARAM; break; + } + } + else + { + switch (zone) + { + case ATCA_ZONE_CONFIG: *size = 128; break; + case ATCA_ZONE_OTP: *size = 64; break; + case ATCA_ZONE_DATA: + if (slot < 8) + { + *size = 36; + } + else if (slot == 8) + { + *size = 416; + } + else if (slot < 16) + { + *size = 72; + } + else + { + status = ATCA_BAD_PARAM; + } + break; + default: status = ATCA_BAD_PARAM; break; + } + } + + return status; +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.h new file mode 100644 index 0000000..f6c04ea --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.h @@ -0,0 +1,256 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods - a simple crypto authentication API. + * These methods manage a global ATCADevice object behind the scenes. They also + * manage the wake/idle state transitions so callers don't need to. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "cryptoauthlib.h" +#include "crypto/atca_crypto_sw_sha2.h" +#include "cryptoauthlib_config.h" + +#ifndef ATCA_BASIC_H_ +#define ATCA_BASIC_H_ + +/** \defgroup atcab_ Basic Crypto API methods (atcab_) + * + * \brief + * These methods provide the most convenient, simple API to CryptoAuth chips + * + @{ */ + +#ifdef __cplusplus +extern "C" { +#endif + +#define BLOCK_NUMBER(a) (a / 32) +#define WORD_OFFSET(a) ((a % 32) / 4) + +#define ATCA_AES_GCM_IV_STD_LENGTH 12 + + +extern ATCADevice _gDevice; + +// Basic global methods +ATCA_STATUS atcab_version(char *ver_str); +ATCA_STATUS atcab_init(ATCAIfaceCfg *cfg); +ATCA_STATUS atcab_init_device(ATCADevice ca_device); +ATCA_STATUS atcab_release(void); +ATCADevice atcab_get_device(void); +ATCADeviceType atcab_get_device_type(void); +ATCA_STATUS _atcab_exit(void); +ATCA_STATUS atcab_wakeup(void); +ATCA_STATUS atcab_idle(void); +ATCA_STATUS atcab_sleep(void); +ATCA_STATUS atcab_cfg_discover(ATCAIfaceCfg cfg_array[], int max); +ATCA_STATUS atcab_get_addr(uint8_t zone, uint16_t slot, uint8_t block, uint8_t offset, uint16_t* addr); +ATCA_STATUS atcab_get_zone_size(uint8_t zone, uint16_t slot, size_t* size); + +// AES command functions +ATCA_STATUS atcab_aes(uint8_t mode, uint16_t key_id, const uint8_t* aes_in, uint8_t* aes_out); +ATCA_STATUS atcab_aes_encrypt(uint16_t key_id, uint8_t key_block, const uint8_t* plaintext, uint8_t* ciphertext); +ATCA_STATUS atcab_aes_decrypt(uint16_t key_id, uint8_t key_block, const uint8_t* ciphertext, uint8_t* plaintext); +ATCA_STATUS atcab_aes_gfm(const uint8_t* h, const uint8_t* input, uint8_t* output); + +typedef struct atca_aes_cbc_ctx +{ + uint16_t key_id; //!< Key location. Can either be a slot number or ATCA_TEMPKEY_KEYID for TempKey. + uint8_t key_block; //!< Index of the 16-byte block to use within the key location for the actual key. + uint8_t ciphertext[AES_DATA_SIZE]; //!< Ciphertext from last operation. +} atca_aes_cbc_ctx_t; + +ATCA_STATUS atcab_aes_cbc_init(atca_aes_cbc_ctx_t* ctx, uint16_t key_id, uint8_t key_block, const uint8_t* iv); +ATCA_STATUS atcab_aes_cbc_encrypt_block(atca_aes_cbc_ctx_t* ctx, const uint8_t* plaintext, uint8_t* ciphertext); +ATCA_STATUS atcab_aes_cbc_decrypt_block(atca_aes_cbc_ctx_t* ctx, const uint8_t* ciphertext, uint8_t* plaintext); + +typedef struct atca_aes_cmac_ctx +{ + atca_aes_cbc_ctx_t cbc_ctx; //!< CBC context + uint32_t block_size; //!< Number of bytes in current block. + uint8_t block[AES_DATA_SIZE]; //!< Unprocessed message storage. +} atca_aes_cmac_ctx_t; + +ATCA_STATUS atcab_aes_cmac_init(atca_aes_cmac_ctx_t* ctx, uint16_t key_id, uint8_t key_block); +ATCA_STATUS atcab_aes_cmac_update(atca_aes_cmac_ctx_t* ctx, const uint8_t* data, uint32_t data_size); +ATCA_STATUS atcab_aes_cmac_finish(atca_aes_cmac_ctx_t* ctx, uint8_t* cmac, uint32_t cmac_size); + +typedef struct atca_aes_ctr_ctx +{ + uint16_t key_id; //!< Key location. Can either be a slot number or ATCA_TEMPKEY_KEYID for TempKey. + uint8_t key_block; //!< Index of the 16-byte block to use within the key location for the actual key. + uint8_t cb[AES_DATA_SIZE]; //!< Counter block, comprises of nonce + count value (16 bytes). + uint8_t counter_size; //!< Size of counter in the initialization vector. +}atca_aes_ctr_ctx_t; + +ATCA_STATUS atcab_aes_ctr_init(atca_aes_ctr_ctx_t* ctx, uint16_t key_id, uint8_t key_block, uint8_t counter_size, const uint8_t* iv); +ATCA_STATUS atcab_aes_ctr_init_rand(atca_aes_ctr_ctx_t* ctx, uint16_t key_id, uint8_t key_block, uint8_t counter_size, uint8_t* iv); +ATCA_STATUS atcab_aes_ctr_block(atca_aes_ctr_ctx_t* ctx, const uint8_t* input, uint8_t* output); +ATCA_STATUS atcab_aes_ctr_encrypt_block(atca_aes_ctr_ctx_t* ctx, const uint8_t* plaintext, uint8_t* ciphertext); +ATCA_STATUS atcab_aes_ctr_decrypt_block(atca_aes_ctr_ctx_t* ctx, const uint8_t* ciphertext, uint8_t* plaintext); +ATCA_STATUS atcab_aes_ctr_increment(atca_aes_ctr_ctx_t* ctx); + +// CheckMAC command functions +ATCA_STATUS atcab_checkmac(uint8_t mode, uint16_t key_id, const uint8_t *challenge, const uint8_t *response, const uint8_t *other_data); + +// Counter command functions +ATCA_STATUS atcab_counter(uint8_t mode, uint16_t counter_id, uint32_t* counter_value); +ATCA_STATUS atcab_counter_increment(uint16_t counter_id, uint32_t* counter_value); +ATCA_STATUS atcab_counter_read(uint16_t counter_id, uint32_t* counter_value); + +// DeriveKey command functions +ATCA_STATUS atcab_derivekey(uint8_t mode, uint16_t key_id, const uint8_t* mac); + +// ECDH command functions +ATCA_STATUS atcab_ecdh_base(uint8_t mode, uint16_t key_id, const uint8_t* public_key, uint8_t* pms, uint8_t* out_nonce); +ATCA_STATUS atcab_ecdh(uint16_t key_id, const uint8_t* public_key, uint8_t* pms); +ATCA_STATUS atcab_ecdh_enc(uint16_t key_id, const uint8_t* public_key, uint8_t* pms, const uint8_t* read_key, uint16_t read_key_id); +ATCA_STATUS atcab_ecdh_ioenc(uint16_t key_id, const uint8_t* public_key, uint8_t* pms, const uint8_t* io_key); +ATCA_STATUS atcab_ecdh_tempkey(const uint8_t* public_key, uint8_t* pms); +ATCA_STATUS atcab_ecdh_tempkey_ioenc(const uint8_t* public_key, uint8_t* pms, const uint8_t* io_key); + +// GenDig command functions +ATCA_STATUS atcab_gendig(uint8_t zone, uint16_t key_id, const uint8_t *other_data, uint8_t other_data_size); + +// GenKey command functions +ATCA_STATUS atcab_genkey_base(uint8_t mode, uint16_t key_id, const uint8_t* other_data, uint8_t* public_key); +ATCA_STATUS atcab_genkey(uint16_t key_id, uint8_t* public_key); +ATCA_STATUS atcab_get_pubkey(uint16_t key_id, uint8_t* public_key); + +// HMAC command functions +ATCA_STATUS atcab_hmac(uint8_t mode, uint16_t key_id, uint8_t* digest); + +// Info command functions +ATCA_STATUS atcab_info_base(uint8_t mode, uint16_t param2, uint8_t* out_data); +ATCA_STATUS atcab_info(uint8_t* revision); +ATCA_STATUS atcab_info_set_latch(bool state); +ATCA_STATUS atcab_info_get_latch(bool* state); + +// KDF command functions +ATCA_STATUS atcab_kdf(uint8_t mode, uint16_t key_id, const uint32_t details, const uint8_t* message, uint8_t* out_data, uint8_t* out_nonce); + +// Lock command functions +ATCA_STATUS atcab_lock(uint8_t mode, uint16_t summary_crc); +ATCA_STATUS atcab_lock_config_zone(void); +ATCA_STATUS atcab_lock_config_zone_crc(uint16_t summary_crc); +ATCA_STATUS atcab_lock_data_zone(void); +ATCA_STATUS atcab_lock_data_zone_crc(uint16_t summary_crc); +ATCA_STATUS atcab_lock_data_slot(uint16_t slot); + +// MAC command functions +ATCA_STATUS atcab_mac(uint8_t mode, uint16_t key_id, const uint8_t* challenge, uint8_t* digest); + +// Nonce command functions +ATCA_STATUS atcab_nonce_base(uint8_t mode, uint16_t zero, const uint8_t *num_in, uint8_t* rand_out); +ATCA_STATUS atcab_nonce(const uint8_t *num_in); +ATCA_STATUS atcab_nonce_load(uint8_t target, const uint8_t *num_in, uint16_t num_in_size); +ATCA_STATUS atcab_nonce_rand(const uint8_t *num_in, uint8_t* rand_out); +ATCA_STATUS atcab_challenge(const uint8_t *num_in); +ATCA_STATUS atcab_challenge_seed_update(const uint8_t *num_in, uint8_t* rand_out); + +// PrivWrite command functions +ATCA_STATUS atcab_priv_write(uint16_t key_id, const uint8_t priv_key[36], uint16_t write_key_id, const uint8_t write_key[32]); + +// Random command functions +ATCA_STATUS atcab_random(uint8_t* rand_out); + +// Read command functions +ATCA_STATUS atcab_read_zone(uint8_t zone, uint16_t slot, uint8_t block, uint8_t offset, uint8_t *data, uint8_t len); +ATCA_STATUS atcab_is_locked(uint8_t zone, bool *is_locked); +ATCA_STATUS atcab_is_slot_locked(uint16_t slot, bool *is_locked); +ATCA_STATUS atcab_read_bytes_zone(uint8_t zone, uint16_t slot, size_t offset, uint8_t *data, size_t length); +ATCA_STATUS atcab_read_serial_number(uint8_t* serial_number); +ATCA_STATUS atcab_read_pubkey(uint16_t slot, uint8_t *public_key); +ATCA_STATUS atcab_read_sig(uint16_t slot, uint8_t *sig); +ATCA_STATUS atcab_read_config_zone(uint8_t* config_data); +ATCA_STATUS atcab_cmp_config_zone(uint8_t* config_data, bool* same_config); +ATCA_STATUS atcab_read_enc(uint16_t key_id, uint8_t block, uint8_t *data, const uint8_t* enc_key, const uint16_t enc_key_id); + +// SecureBoot command functions +ATCA_STATUS atcab_secureboot(uint8_t mode, uint16_t param2, const uint8_t* digest, const uint8_t* signature, uint8_t* mac); +ATCA_STATUS atcab_secureboot_mac(uint8_t mode, const uint8_t* digest, const uint8_t* signature, const uint8_t* num_in, const uint8_t* io_key, bool* is_verified); + +// SelfTest command functions +ATCA_STATUS atcab_selftest(uint8_t mode, uint16_t param2, uint8_t* result); + +// SHA command functions +typedef struct atca_sha256_ctx +{ + uint32_t total_msg_size; //!< Total number of message bytes processed + uint32_t block_size; //!< Number of bytes in current block + uint8_t block[ATCA_SHA256_BLOCK_SIZE * 2]; //!< Unprocessed message storage +} atca_sha256_ctx_t; + +typedef atca_sha256_ctx_t atca_hmac_sha256_ctx_t; + +ATCA_STATUS atcab_sha_base(uint8_t mode, uint16_t length, const uint8_t* data_in, uint8_t* data_out, uint16_t* data_out_size); +ATCA_STATUS atcab_sha_start(void); +ATCA_STATUS atcab_sha_update(const uint8_t* message); +ATCA_STATUS atcab_sha_end(uint8_t *digest, uint16_t length, const uint8_t *message); +ATCA_STATUS atcab_sha_read_context(uint8_t* context, uint16_t* context_size); +ATCA_STATUS atcab_sha_write_context(const uint8_t* context, uint16_t context_size); +ATCA_STATUS atcab_sha(uint16_t length, const uint8_t *message, uint8_t *digest); +ATCA_STATUS atcab_hw_sha2_256(const uint8_t * data, size_t data_size, uint8_t* digest); +ATCA_STATUS atcab_hw_sha2_256_init(atca_sha256_ctx_t* ctx); +ATCA_STATUS atcab_hw_sha2_256_update(atca_sha256_ctx_t* ctx, const uint8_t* data, size_t data_size); +ATCA_STATUS atcab_hw_sha2_256_finish(atca_sha256_ctx_t* ctx, uint8_t* digest); +ATCA_STATUS atcab_sha_hmac_init(atca_hmac_sha256_ctx_t* ctx, uint16_t key_slot); +ATCA_STATUS atcab_sha_hmac_update(atca_hmac_sha256_ctx_t* ctx, const uint8_t* data, size_t data_size); +ATCA_STATUS atcab_sha_hmac_finish(atca_hmac_sha256_ctx_t* ctx, uint8_t* digest, uint8_t target); +ATCA_STATUS atcab_sha_hmac(const uint8_t * data, size_t data_size, uint16_t key_slot, uint8_t* digest, uint8_t target); + +// Sign command functions +ATCA_STATUS atcab_sign_base(uint8_t mode, uint16_t key_id, uint8_t *signature); +ATCA_STATUS atcab_sign(uint16_t key_id, const uint8_t *msg, uint8_t *signature); +ATCA_STATUS atcab_sign_internal(uint16_t key_id, bool is_invalidate, bool is_full_sn, uint8_t *signature); + +// UpdateExtra command functions +ATCA_STATUS atcab_updateextra(uint8_t mode, uint16_t new_value); + +// Verify command functions +ATCA_STATUS atcab_verify(uint8_t mode, uint16_t key_id, const uint8_t* signature, const uint8_t* public_key, const uint8_t* other_data, uint8_t* mac); +ATCA_STATUS atcab_verify_extern(const uint8_t *message, const uint8_t *signature, const uint8_t *public_key, bool *is_verified); +ATCA_STATUS atcab_verify_extern_mac(const uint8_t *message, const uint8_t* signature, const uint8_t* public_key, const uint8_t* num_in, const uint8_t* io_key, bool* is_verified); +ATCA_STATUS atcab_verify_stored(const uint8_t *message, const uint8_t *signature, uint16_t key_id, bool *is_verified); +ATCA_STATUS atcab_verify_stored_mac(const uint8_t *message, const uint8_t *signature, uint16_t key_id, const uint8_t* num_in, const uint8_t* io_key, bool* is_verified); + +ATCA_STATUS atcab_verify_validate(uint16_t key_id, const uint8_t *signature, const uint8_t *other_data, bool *is_verified); +ATCA_STATUS atcab_verify_invalidate(uint16_t key_id, const uint8_t *signature, const uint8_t *other_data, bool *is_verified); + +// Write command functions +ATCA_STATUS atcab_write(uint8_t zone, uint16_t address, const uint8_t *value, const uint8_t *mac); +ATCA_STATUS atcab_write_zone(uint8_t zone, uint16_t slot, uint8_t block, uint8_t offset, const uint8_t *data, uint8_t len); +ATCA_STATUS atcab_write_bytes_zone(uint8_t zone, uint16_t slot, size_t offset_bytes, const uint8_t *data, size_t length); +ATCA_STATUS atcab_write_pubkey(uint16_t slot, const uint8_t *public_key); +ATCA_STATUS atcab_write_config_zone(const uint8_t* config_data); +ATCA_STATUS atcab_write_enc(uint16_t key_id, uint8_t block, const uint8_t *data, const uint8_t* enc_key, const uint16_t enc_key_id); +ATCA_STATUS atcab_write_config_counter(uint16_t counter_id, uint32_t counter_value); + +#ifdef __cplusplus +} +#endif + +/** @} */ + +#endif /* ATCA_BASIC_H_ */ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes.c new file mode 100644 index 0000000..993f701 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes.c @@ -0,0 +1,153 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for AES command. + * + * The AES command supports 128-bit AES encryption or decryption of small + * messages or data packets in ECB mode. Also can perform GFM (Galois Field + * Multiply) calculation in support of AES-GCM. + * + * \note List of devices that support this command - ATECC608A. Refer to device + * datasheet for full details. + * + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ +#include "atca_basic.h" +#include "atca_execution.h" +#ifdef _WIN32 +#include +#endif + + +/** \brief Compute the AES-128 encrypt, decrypt, or GFM calculation. + * \param[in] mode The mode for the AES command. + * \param[in] key_id Key location. Can either be a slot number or + * ATCA_TEMPKEY_KEYID for TempKey. + * \param[in] aes_in Input data to the AES command (16 bytes). + * \param[out] aes_out Output data from the AES command is returned here (16 + * bytes). + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes(uint8_t mode, uint16_t key_id, const uint8_t* aes_in, uint8_t* aes_out) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + + do + { + if (aes_in == NULL) + { + status = ATCA_BAD_PARAM; + break; + } + + // build a AES command + packet.param1 = mode; + packet.param2 = key_id; + if (AES_MODE_GFM == (mode & AES_MODE_GFM)) + { + memcpy(packet.data, aes_in, ATCA_AES_GFM_SIZE); + } + else + { + memcpy(packet.data, aes_in, AES_DATA_SIZE); + } + + if ((status = atAES(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + if (aes_out && packet.data[ATCA_COUNT_IDX] >= (3 + AES_DATA_SIZE)) + { + // The AES command return a 16 byte data. + memcpy(aes_out, &packet.data[ATCA_RSP_DATA_IDX], AES_DATA_SIZE); + } + + } + while (0); + + return status; +} + +/** \brief Perform an AES-128 encrypt operation with a key in the device. + * + * \param[in] key_id Key location. Can either be a slot number or + * ATCA_TEMPKEY_KEYID for TempKey. + * \param[in] key_block Index of the 16-byte block to use within the key + * location for the actual key. + * \param[in] plaintext Input plaintext to be encrypted (16 bytes). + * \param[out] ciphertext Output ciphertext is returned here (16 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_encrypt(uint16_t key_id, uint8_t key_block, const uint8_t* plaintext, uint8_t* ciphertext) +{ + uint8_t mode; + + mode = AES_MODE_ENCRYPT | (AES_MODE_KEY_BLOCK_MASK & (key_block << AES_MODE_KEY_BLOCK_POS)); + return atcab_aes(mode, key_id, plaintext, ciphertext); +} + +/** \brief Perform an AES-128 decrypt operation with a key in the device. + * + * \param[in] key_id Key location. Can either be a slot number or + * ATCA_TEMPKEY_KEYID for TempKey. + * \param[in] key_block Index of the 16-byte block to use within the key + * location for the actual key. + * \param[in] ciphertext Input ciphertext to be decrypted (16 bytes). + * \param[out] plaintext Output plaintext is returned here (16 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_decrypt(uint16_t key_id, uint8_t key_block, const uint8_t* ciphertext, uint8_t* plaintext) +{ + uint8_t mode; + + mode = AES_MODE_DECRYPT | (AES_MODE_KEY_BLOCK_MASK & (key_block << AES_MODE_KEY_BLOCK_POS)); + return atcab_aes(mode, key_id, ciphertext, plaintext); +} + +/** \brief Perform a Galois Field Multiply (GFM) operation. + * + * \param[in] h First input value (16 bytes). + * \param[in] input Second input value (16 bytes). + * \param[out] output GFM result is returned here (16 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_gfm(const uint8_t* h, const uint8_t* input, uint8_t* output) +{ + uint8_t aes_in[AES_DATA_SIZE * 2]; + + memcpy(aes_in, h, AES_DATA_SIZE); + memcpy(aes_in + AES_DATA_SIZE, input, AES_DATA_SIZE); + // KeyID is ignored for GFM mode + return atcab_aes(AES_MODE_GFM, 0x0000, aes_in, output); +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_cbc.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_cbc.c new file mode 100644 index 0000000..1508b29 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_cbc.c @@ -0,0 +1,144 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for AES CBC mode. + * + * The AES command supports 128-bit AES encryption or decryption of small + * messages or data packets in ECB mode. Also can perform GFM (Galois Field + * Multiply) calculation in support of AES-GCM. + * + * \note List of devices that support this command - ATECC608A. Refer to device + * datasheet for full details. + * + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ +#include "atca_basic.h" +#ifdef _WIN32 +#include +#endif + +/** \brief Initialize context for AES CBC operation. + * + * \param[in] ctx AES CBC context to be initialized + * \param[in] key_id Key location. Can either be a slot number or + * ATCA_TEMPKEY_KEYID for TempKey. + * \param[in] key_block Index of the 16-byte block to use within the key + * location for the actual key. + * \param[in] iv Initialization vector (16 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_cbc_init(atca_aes_cbc_ctx_t* ctx, uint16_t key_id, uint8_t key_block, const uint8_t* iv) +{ + if (ctx == NULL || iv == NULL) + { + return ATCA_BAD_PARAM; + } + + memset(ctx, 0, sizeof(*ctx)); + ctx->key_id = key_id; + ctx->key_block = key_block; + memcpy(ctx->ciphertext, iv, sizeof(ctx->ciphertext)); + + return ATCA_SUCCESS; +} + +/** \brief Encrypt a block of data using CBC mode and a key within the + * ATECC608A. atcab_aes_cbc_init() should be called before the + * first use of this function. + * + * \param[in] ctx AES CBC context. + * \param[in] plaintext Plaintext to be encrypted (16 bytes). + * \param[out] ciphertext Encrypted data is returned here (16 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_cbc_encrypt_block(atca_aes_cbc_ctx_t* ctx, const uint8_t* plaintext, uint8_t* ciphertext) +{ + uint8_t input[AES_DATA_SIZE]; + int i; + ATCA_STATUS status = ATCA_SUCCESS; + + if (ctx == NULL || plaintext == NULL || ciphertext == NULL) + { + return ATCA_BAD_PARAM; + } + + // XOR plaintext with previous block's ciphertext to get input value to block encrypt + for (i = 0; i < AES_DATA_SIZE; i++) + { + input[i] = plaintext[i] ^ ctx->ciphertext[i]; + } + + // Block encrypt of input data + status = atcab_aes_encrypt(ctx->key_id, ctx->key_block, input, ciphertext); + if (status != ATCA_SUCCESS) + { + return status; + } + + // Save copy of ciphertext for next block operation + memcpy(ctx->ciphertext, ciphertext, AES_DATA_SIZE); + + return status; +} + +/** \brief Decrypt a block of data using CBC mode and a key within the + * ATECC608A. atcab_aes_cbc_init() should be called before the + * first use of this function. + * + * \param[in] ctx AES CBC context. + * \param[in] ciphertext Ciphertext to be decrypted (16 bytes). + * \param[out] plaintext Decrypted data is returned here (16 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_cbc_decrypt_block(atca_aes_cbc_ctx_t* ctx, const uint8_t* ciphertext, uint8_t* plaintext) +{ + uint8_t output[AES_DATA_SIZE]; + int i; + ATCA_STATUS status = ATCA_SUCCESS; + + if (ctx == NULL || ciphertext == NULL || plaintext == NULL) + { + return ATCA_BAD_PARAM; + } + + // Block decrypt of ciphertext + status = atcab_aes_decrypt(ctx->key_id, ctx->key_block, ciphertext, output); + if (status != ATCA_SUCCESS) + { + return status; + } + + // XOR output with previous block's ciphertext to get plaintext + for (i = 0; i < AES_DATA_SIZE; i++) + { + plaintext[i] = output[i] ^ ctx->ciphertext[i]; + } + + // Save copy of ciphertext for next block operation + memcpy(ctx->ciphertext, ciphertext, AES_DATA_SIZE); + + return status; +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_cmac.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_cmac.c new file mode 100644 index 0000000..8f4d357 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_cmac.c @@ -0,0 +1,218 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for AES CBC_MAC mode. + * + * The AES command supports 128-bit AES encryption or decryption of small + * messages or data packets in ECB mode. Also can perform GFM (Galois Field + * Multiply) calculation in support of AES-GCM. + * + * \note List of devices that support this command - ATECC608A. Refer to device + * datasheet for full details. + * + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ +#include "atca_basic.h" +#ifdef _WIN32 +#include +#endif + +static const uint8_t g_aes_zero_block[AES_DATA_SIZE] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +/** \brief Initialize a CMAC calculation using an AES-128 key in the ATECC608A. + * + * \param[in] ctx AES-128 CMAC context. + * \param[in] key_id Key location. Can either be a slot number or + * ATCA_TEMPKEY_KEYID for TempKey. + * \param[in] key_block Index of the 16-byte block to use within the key + * location for the actual key. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_cmac_init(atca_aes_cmac_ctx_t* ctx, uint16_t key_id, uint8_t key_block) +{ + if (ctx == NULL) + { + return ATCA_BAD_PARAM; + } + memset(ctx, 0, sizeof(*ctx)); + // IV for CMAC CBC calculations is all zeros + return atcab_aes_cbc_init(&ctx->cbc_ctx, key_id, key_block, g_aes_zero_block); +} + +/** \brief Add data to an initialized CMAC calculation. + * + * \param[in] ctx AES-128 CMAC context. + * \param[in] data Data to be added. + * \param[in] data_size Size of the data to be added in bytes. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_cmac_update(atca_aes_cmac_ctx_t* ctx, const uint8_t* data, uint32_t data_size) +{ + uint32_t rem_size = AES_DATA_SIZE - ctx->block_size; + uint32_t copy_size = data_size > rem_size ? rem_size : data_size; + ATCA_STATUS status = ATCA_SUCCESS; + uint8_t ciphertext[AES_DATA_SIZE]; + uint32_t block_count; + uint32_t i; + + if (ctx == NULL || (data == NULL && data_size > 0)) + { + return ATCA_BAD_PARAM; + } + + memcpy(&ctx->block[ctx->block_size], data, copy_size); + + if (ctx->block_size + data_size < AES_DATA_SIZE + 1) + { + // The last block of a CMAC operation is handled specially, so we don't + // process a complete block unless we know there's data afterwards. + ctx->block_size += data_size; + return ATCA_SUCCESS; + } + + // Process the current block + status = atcab_aes_cbc_encrypt_block(&ctx->cbc_ctx, ctx->block, ciphertext); + if (status != ATCA_SUCCESS) + { + return status; + } + + // Process any additional blocks + data_size -= copy_size; // Adjust to the remaining message bytes + block_count = data_size / AES_DATA_SIZE; + if (block_count > 0 && data_size % AES_DATA_SIZE == 0) + { + block_count--; // Don't process last block because it may need special handling + } + for (i = 0; i < block_count; i++) + { + status = atcab_aes_cbc_encrypt_block(&ctx->cbc_ctx, &data[copy_size + i * AES_DATA_SIZE], ciphertext); + if (status != ATCA_SUCCESS) + { + return status; + } + data_size -= AES_DATA_SIZE; + } + + // Save any remaining data + ctx->block_size = data_size; + memcpy(ctx->block, &data[copy_size + block_count * AES_DATA_SIZE], ctx->block_size); + + return ATCA_SUCCESS; +} + +/** \brief Left shift an MSB buffer by 1 bit. + * + * \param[inout] data Data to left shift. + * \param[in] data_size Size of data in bytes. + */ +static void left_shift_one(uint8_t* data, size_t data_size) +{ + size_t i; + + for (i = 0; i < data_size; i++) + { + data[i] = data[i] << 1; + if (i + 1 < data_size && data[i + 1] & 0x80) + { + data[i] |= 0x01; // Next byte has a bit that needs to be shifted into this one + } + } +} + +/** \brief Finish a CMAC operation returning the CMAC value. + * + * \param[in] ctx AES-128 CMAC context. + * \param[out] cmac CMAC is returned here. + * \param[in] cmac_size Size of CMAC requested in bytes (max 16 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_cmac_finish(atca_aes_cmac_ctx_t* ctx, uint8_t* cmac, uint32_t cmac_size) +{ + uint32_t i; + uint8_t subkey[AES_DATA_SIZE]; + ATCA_STATUS status = ATCA_SUCCESS; + bool is_msb_one; + uint8_t cmac_full[AES_DATA_SIZE]; + + if (ctx == NULL || cmac == NULL || cmac_size > AES_DATA_SIZE) + { + return ATCA_BAD_PARAM; + } + + // Calculate L as AES Encrypt of an all zero block + status = atcab_aes_encrypt(ctx->cbc_ctx.key_id, ctx->cbc_ctx.key_block, g_aes_zero_block, subkey); + if (status != ATCA_SUCCESS) + { + return status; + } + + // Calculate subkey 1 + is_msb_one = (subkey[0] & 0x80); + left_shift_one(subkey, sizeof(subkey)); // L << 1 + if (is_msb_one) + { + subkey[AES_DATA_SIZE - 1] ^= 0x87; // (L << 1) XOR R128 + } + + if (ctx->block_size != AES_DATA_SIZE) + { + // Data is not a complete block, we calculate subkey 2 + is_msb_one = (subkey[0] & 0x80); + left_shift_one(subkey, sizeof(subkey)); // K1 << 1 + if (is_msb_one) + { + subkey[AES_DATA_SIZE - 1] ^= 0x87; // (K1 << 1) XOR R128 + } + + // Pad out an incomplete block starting with a 1 bit, followed by zeros + for (i = 0; i < AES_DATA_SIZE - ctx->block_size; i++) + { + ctx->block[ctx->block_size + i] = (i == 0 ? 0x80 : 0x00); + } + } + + // XOR last block with subkey + for (i = 0; i < AES_DATA_SIZE; i++) + { + ctx->block[i] ^= subkey[i]; + } + + // Process last block + status = atcab_aes_cbc_encrypt_block(&ctx->cbc_ctx, ctx->block, cmac_full); + if (status != ATCA_SUCCESS) + { + return status; + } + + memcpy(cmac, cmac_full, cmac_size); + + return ATCA_SUCCESS; +} + diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_ctr.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_ctr.c new file mode 100644 index 0000000..d8dbb37 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_ctr.c @@ -0,0 +1,230 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for AES CTR mode. + * + * The AES command supports 128-bit AES encryption or decryption of small + * messages or data packets in ECB mode. Also can perform GFM (Galois Field + * Multiply) calculation in support of AES-GCM. + * + * \note List of devices that support this command - ATECC608A. Refer to device + * datasheet for full details. + * + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ +#include "basic/atca_basic.h" + +/** \brief Initialize context for AES CTR operation with an existing IV, which + * is common when start a decrypt operation. + * + * The IV is a combination of nonce (left-field) and big-endian counter + * (right-field). The counter_size field sets the size of the counter and the + * remaining bytes are assumed to be the nonce. + * + * \param[in] ctx AES CTR context to be initialized. + * \param[in] key_id Key location. Can either be a slot number or + * ATCA_TEMPKEY_KEYID for TempKey. + * \param[in] key_block Index of the 16-byte block to use within the key + * location for the actual key. + * \param[in] counter_size Size of counter in IV in bytes. 4 bytes is a + * common size. + * \param[in] iv Initialization vector (concatenation of nonce and + * counter) 16 bytes. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_ctr_init(atca_aes_ctr_ctx_t* ctx, uint16_t key_id, uint8_t key_block, uint8_t counter_size, const uint8_t* iv) +{ + if (ctx == NULL || iv == NULL || counter_size > AES_DATA_SIZE) + { + return ATCA_BAD_PARAM; + } + memset(ctx, 0, sizeof(*ctx)); + ctx->key_id = key_id; + ctx->key_block = key_block; + ctx->counter_size = counter_size; + memcpy(ctx->cb, iv, AES_DATA_SIZE); + + return ATCA_SUCCESS; +} + +/** \brief Initialize context for AES CTR operation with a random nonce and + * counter set to 0 as the IV, which is common when starting an + * encrypt operation. + * + * The IV is a combination of nonce (left-field) and big-endian counter + * (right-field). The counter_size field sets the size of the counter and the + * remaining bytes are assumed to be the nonce. + * + * \param[in] ctx AES CTR context to be initialized. + * \param[in] key_id Key location. Can either be a slot number or + * ATCA_TEMPKEY_KEYID for TempKey. + * \param[in] key_block Index of the 16-byte block to use within the key + * location for the actual key. + * \param[in] counter_size Size of counter in IV in bytes. 4 bytes is a + * common size. + * \param[out] iv Initialization vector (concatenation of nonce and + * counter) is returned here (16 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_ctr_init_rand(atca_aes_ctr_ctx_t* ctx, uint16_t key_id, uint8_t key_block, uint8_t counter_size, uint8_t* iv) +{ + ATCA_STATUS status = ATCA_SUCCESS; + uint8_t nonce_size; + + if (ctx == NULL || iv == NULL || counter_size > AES_DATA_SIZE) + { + return ATCA_BAD_PARAM; + } + memset(ctx, 0, sizeof(*ctx)); + ctx->key_id = key_id; + ctx->key_block = key_block; + ctx->counter_size = counter_size; + + // Generate random nonce + nonce_size = AES_DATA_SIZE - ctx->counter_size; + if (nonce_size != 0) + { + uint8_t random_nonce[32]; + status = atcab_random(random_nonce); + if (status != ATCA_SUCCESS) + { + return status; + } + memcpy(iv, random_nonce, nonce_size); + } + memcpy(ctx->cb, iv, AES_DATA_SIZE); + + return ATCA_SUCCESS; +} + +/** \brief Increments AES CTR counter value. + * + * \param[in,out] ctx AES CTR context + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_ctr_increment(atca_aes_ctr_ctx_t* ctx) +{ + size_t i; + + if (ctx == NULL || ctx->counter_size > AES_DATA_SIZE) + { + return ATCA_BAD_PARAM; + } + + // Increment the big-endian counter value + for (i = 0; i < ctx->counter_size; i++) + { + // Counter is right-aligned in buffer + if (++(ctx->cb[AES_DATA_SIZE - i - 1]) != 0) + { + break; + } + } + if (i >= ctx->counter_size) + { + // Counter overflowed + memset(&ctx->cb[AES_DATA_SIZE - ctx->counter_size], 0, ctx->counter_size); + } + + return ATCA_SUCCESS; +} + +/** \brief Process a block of data using CTR mode and a key within the + * ATECC608A device. atcab_aes_ctr_init() or atcab_aes_ctr_init_rand() + * should be called before the first use of this function. + * + * \param[in] ctx AES CTR context structure. + * \param[in] input Input data to be processed (16 bytes). + * \param[out] output Output data is returned here (16 bytes). + * + * \return ATCA_SUCCESS on success, ATCA_INVALID_SIZE on counter overflow, + * otherwise an error code. + */ +ATCA_STATUS atcab_aes_ctr_block(atca_aes_ctr_ctx_t* ctx, const uint8_t* input, uint8_t* output) +{ + uint8_t i; + ATCA_STATUS status = ATCA_SUCCESS; + uint8_t encrypted_counter[AES_DATA_SIZE]; + + if (ctx == NULL || input == NULL || output == NULL) + { + return ATCA_BAD_PARAM; + } + + // Block encrypt of counter block (128 bits) + status = atcab_aes_encrypt(ctx->key_id, ctx->key_block, ctx->cb, encrypted_counter); + if (status != ATCA_SUCCESS) + { + return status; + } + + // XOR output of AES encrypt with input to get output + for (i = 0; i < AES_DATA_SIZE; i++) + { + output[i] = encrypted_counter[i] ^ input[i]; + } + + status = atcab_aes_ctr_increment(ctx); + if (status != ATCA_SUCCESS) + { + return status; + } + + return status; +} + +/** \brief Encrypt a block of data using CTR mode and a key within the + * ATECC608A device. atcab_aes_ctr_init() or atcab_aes_ctr_init_rand() + * should be called before the first use of this function. + * + * \param[in] ctx AES CTR context structure. + * \param[in] plaintext Plaintext to be encrypted (16 bytes). + * \param[out] ciphertext Encrypted data is returned here (16 bytes). + * + * \return ATCA_SUCCESS on success, ATCA_INVALID_SIZE on counter overflow, + * otherwise an error code. + */ +ATCA_STATUS atcab_aes_ctr_encrypt_block(atca_aes_ctr_ctx_t* ctx, const uint8_t* plaintext, uint8_t* ciphertext) +{ + return atcab_aes_ctr_block(ctx, plaintext, ciphertext); +} + +/** \brief Decrypt a block of data using CTR mode and a key within the + * ATECC608A device. atcab_aes_ctr_init() or atcab_aes_ctr_init_rand() + * should be called before the first use of this function. + * + * \param[in] ctx AES CTR context structure. + * \param[in] ciphertext Ciphertext to be decrypted (16 bytes). + * \param[out] plaintext Decrypted data is returned here (16 bytes). + * + * \return ATCA_SUCCESS on success, ATCA_INVALID_SIZE on counter overflow, + * otherwise an error code. + */ +ATCA_STATUS atcab_aes_ctr_decrypt_block(atca_aes_ctr_ctx_t* ctx, const uint8_t* ciphertext, uint8_t* plaintext) +{ + return atcab_aes_ctr_block(ctx, ciphertext, plaintext); +} + diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_gcm.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_gcm.c new file mode 100644 index 0000000..0b2297f --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_gcm.c @@ -0,0 +1,583 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for AES GCM mode. + * + * The AES command supports 128-bit AES encryption or decryption of small + * messages or data packets in ECB mode. Also can perform GFM (Galois Field + * Multiply) calculation in support of AES-GCM. + * + * \note List of devices that support this command - ATECC608A. Refer to device + * datasheet for full details. + * + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ +#include "atca_basic_aes_gcm.h" +#include "atca_compiler.h" + +/** \ingroup atcab_ + * @{ + */ + +const char* atca_basic_aes_gcm_version = "1.0"; + +/** \brief Performs running GHASH calculations using the current hash value, + * hash subkey, and data received. In case of partial blocks, the last + * block is padded with zeros to get the output. + * + * \param[in] h Subkey to use in GHASH calculations. + * \param[in] data Input data to hash. + * \param[in] data_size Data size in bytes. + * \param[in,out] y As input, current hash value. As output, the new + * hash output. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +static ATCA_STATUS atcab_aes_ghash(const uint8_t* h, const uint8_t* data, size_t data_size, uint8_t* y) +{ + ATCA_STATUS status; + uint8_t pad_bytes[AES_DATA_SIZE]; + size_t xor_index; + + if (h == NULL || data == NULL || y == NULL) + { + RETURN(ATCA_BAD_PARAM, "Null pointer"); + } + if (data_size == 0) + { + return ATCA_SUCCESS; + } + + while (data_size / AES_DATA_SIZE) + { + for (xor_index = 0; xor_index < AES_DATA_SIZE; xor_index++) + { + y[xor_index] ^= *data++; + } + + if (ATCA_SUCCESS != (status = atcab_aes_gfm(h, y, y))) + { + RETURN(status, "GHASH GFM (full block) failed"); + } + + data_size -= AES_DATA_SIZE; + } + + if (data_size) + { + memcpy(pad_bytes, data, data_size); + memset(&pad_bytes[data_size], 0, sizeof(pad_bytes) - data_size); + + for (xor_index = 0; xor_index < AES_DATA_SIZE; xor_index++) + { + y[xor_index] ^= pad_bytes[xor_index]; + } + + if (ATCA_SUCCESS != (status = atcab_aes_gfm(h, y, y))) + { + RETURN(status, "GHASH GFM (partial block) failed"); + } + } + + return ATCA_SUCCESS; +} + +/** \brief Increments AES GCM counter value. + * + * \param[in,out] cb AES GCM counter block to be incremented + * (16 bytes). + * \param[in] counter_size Counter size in bytes. Should be 4 for GCM. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +static ATCA_STATUS atcab_aes_gcm_increment(uint8_t* cb, size_t counter_size) +{ + size_t i; + + if (cb == NULL) + { + return ATCA_BAD_PARAM; + } + + // Not converting to uint32_t and incrementing as there may be alignment + // issues with the cb buffer + + // Increment the big-endian counter value + for (i = 0; i < counter_size; i++) + { + // Counter is right-aligned in buffer + if (++(cb[AES_DATA_SIZE - i - 1]) != 0) + { + break; + } + } + if (i >= counter_size) + { + // Counter overflowed + memset(&cb[AES_DATA_SIZE - counter_size], 0, counter_size); + } + + return ATCA_SUCCESS; +} + +/** \brief Initialize context for AES GCM operation with an existing IV, which + * is common when starting a decrypt operation. + * + * \param[in] ctx AES GCM context to be initialized. + * \param[in] key_id Key location. Can either be a slot number or + * ATCA_TEMPKEY_KEYID for TempKey. + * \param[in] key_block Index of the 16-byte block to use within the key + * location for the actual key. + * \param[in] iv Initialization vector. + * \param[in] iv_size Size of IV in bytes. Standard is 12 bytes. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_gcm_init(atca_aes_gcm_ctx_t* ctx, uint16_t key_id, uint8_t key_block, const uint8_t* iv, size_t iv_size) +{ + ATCA_STATUS status; + uint8_t ghash_data[AES_DATA_SIZE]; + uint32_t length; + + if (ctx == NULL || iv == NULL || iv_size == 0) + { + RETURN(ATCA_BAD_PARAM, "GCM init failed; Either null pointer or 0 iv_size"); + } + + memset(ctx, 0, sizeof(*ctx)); + + //Calculate H = CIPHK(0^128) + if (ATCA_SUCCESS != (status = atcab_aes_encrypt(key_id, key_block, ctx->h, ctx->h))) + { + RETURN(status, "GCM - H failed"); + } + + //Calculate J0 + if (iv_size == ATCA_AES_GCM_IV_STD_LENGTH) + { + //J0 = IV || 0^31 ||1. + memcpy(ctx->j0, iv, iv_size); + ctx->j0[AES_DATA_SIZE - 1] = 0x01; + } + else + { + //J0=GHASH(H, IV||0^(s+64)||[len(IV)]64) + if (ATCA_SUCCESS != (status = atcab_aes_ghash(ctx->h, iv, iv_size, ctx->j0))) + { + RETURN(status, "GCM - J0 (IV) failed"); + } + + memset(ghash_data, 0, AES_DATA_SIZE); + length = ATCA_UINT32_HOST_TO_BE((uint32_t)(iv_size * 8)); + memcpy(&ghash_data[12], &length, sizeof(length)); + if (ATCA_SUCCESS != (status = atcab_aes_ghash(ctx->h, ghash_data, sizeof(ghash_data), ctx->j0))) + { + RETURN(status, "GCM - J0 (IV Size) failed"); + } + } + + ctx->key_id = key_id; + ctx->key_block = key_block; + memcpy(ctx->cb, ctx->j0, AES_DATA_SIZE); + + if (ATCA_SUCCESS != (status = atcab_aes_gcm_increment(ctx->cb, 4))) + { + RETURN(status, "GCM CTR increment failed"); + } + + return ATCA_SUCCESS; +} + +/** \brief Initialize context for AES GCM operation with a IV composed of a + * random and optional fixed(free) field, which is common when + * starting an encrypt operation. + * + * \param[in] ctx AES CTR context to be initialized. + * \param[in] key_id Key location. Can either be a slot number or + * ATCA_TEMPKEY_KEYID for TempKey. + * \param[in] key_block Index of the 16-byte block to use within the + * key location for the actual key. + * \param[in] rand_size Size of the random field in bytes. Minimum and + * recommended size is 12 bytes. Max is 32 bytes. + * \param[in] free_field Fixed data to include in the IV after the + * random field. Can be NULL if not used. + * \param[in] free_field_size Size of the free field in bytes. + * \param[out] iv Initialization vector is returned here. Its + * size will be rand_size and free_field_size + * combined. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_gcm_init_rand(atca_aes_gcm_ctx_t* ctx, uint16_t key_id, uint8_t key_block, size_t rand_size, + const uint8_t* free_field, size_t free_field_size, uint8_t* iv) +{ + ATCA_STATUS status; + uint8_t random[RANDOM_NUM_SIZE]; + + if (ctx == NULL || iv == NULL || (free_field_size > 0 && free_field == NULL)) + { + RETURN(ATCA_BAD_PARAM, "Null pointer"); + } + // 800-38D 8.2.2 specifies a minimum rand_field size of 12 bytes (96 bits) + if (rand_size < 12 || rand_size > RANDOM_NUM_SIZE) + { + RETURN(ATCA_BAD_PARAM, "Bad rand_size"); + } + + if (ATCA_SUCCESS != (status = atcab_random(random))) + { + RETURN(status, "GCM init rand - Random Generation failed"); + } + memcpy(iv, random, rand_size); + memcpy(&iv[rand_size], free_field, free_field_size); + + if (ATCA_SUCCESS != (status = atcab_aes_gcm_init(ctx, key_id, key_block, iv, rand_size + free_field_size))) + { + RETURN(status, "GCM init failed"); + } + + return ATCA_SUCCESS; +} + +/** \brief Process Additional Authenticated Data (AAD) using GCM mode and a + * key within the ATECC608A device. + * + * This can be called multiple times. atcab_aes_gcm_init() or + * atcab_aes_gcm_init_rand() should be called before the first use of this + * function. When there is AAD to include, this should be called before + * atcab_aes_gcm_encrypt_update() or atcab_aes_gcm_decrypt_update(). + * + * \param[in] ctx AES GCM context + * \param[in] aad Additional authenticated data to be added + * \param[in] aad_size Size of aad in bytes + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_gcm_aad_update(atca_aes_gcm_ctx_t* ctx, const uint8_t* aad, uint32_t aad_size) +{ + ATCA_STATUS status; + uint32_t block_count; + uint32_t rem_size; + uint32_t copy_size; + + if (ctx == NULL || (aad_size > 0 && aad == NULL)) + { + RETURN(ATCA_BAD_PARAM, "Null pointer"); + } + + if (aad_size == 0) + { + return ATCA_SUCCESS; + } + + rem_size = AES_DATA_SIZE - (uint32_t)ctx->partial_aad_size; + copy_size = aad_size > rem_size ? rem_size : aad_size; + + // Copy data into current block + memcpy(&ctx->partial_aad[ctx->partial_aad_size], aad, copy_size); + + if (ctx->partial_aad_size + aad_size < AES_DATA_SIZE) + { + // Not enough data to finish off the current block + ctx->partial_aad_size += aad_size; + return ATCA_SUCCESS; + } + + // Process the current block + if (ATCA_SUCCESS != (status = atcab_aes_ghash(ctx->h, ctx->partial_aad, AES_DATA_SIZE, ctx->y))) + { + RETURN(status, "GCM - S (AAD) failed"); + } + + // Process any additional blocks + aad_size -= copy_size; // Adjust to the remaining aad bytes + block_count = aad_size / AES_DATA_SIZE; + if (ATCA_SUCCESS != (status = atcab_aes_ghash(ctx->h, &aad[copy_size], block_count * AES_DATA_SIZE, ctx->y))) + { + RETURN(status, "GCM - S (AAD) failed"); + } + + // Save any remaining data + ctx->aad_size += (block_count + 1) * AES_DATA_SIZE; + ctx->partial_aad_size = aad_size % AES_DATA_SIZE; + memcpy(ctx->partial_aad, &aad[copy_size + block_count * AES_DATA_SIZE], ctx->partial_aad_size); + + return ATCA_SUCCESS; +} + +/** \brief Process data using GCM mode and a key within the ATECC608A device. + * atcab_aes_gcm_init() or atcab_aes_gcm_init_rand() should be called + * before the first use of this function. + * + * \param[in] ctx AES GCM context structure. + * \param[in] input Data to be processed. + * \param[in] input_size Size of input in bytes. + * \param[out] output Output data is returned here. + * \param[in] is_encrypt Encrypt operation if true, otherwise decrypt. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +static ATCA_STATUS atcab_aes_gcm_update(atca_aes_gcm_ctx_t* ctx, const uint8_t* input, uint32_t input_size, + uint8_t* output, bool is_encrypt) +{ + ATCA_STATUS status; + uint32_t data_idx; + uint32_t i; + + if (ctx == NULL || (input_size > 0 && (input == NULL || output == NULL))) + { + RETURN(ATCA_BAD_PARAM, "Null pointer"); + } + + if (ctx->partial_aad_size > 0) + { + // We have a partial block of AAD that needs to be added + if (ATCA_SUCCESS != (status = atcab_aes_ghash(ctx->h, ctx->partial_aad, ctx->partial_aad_size, ctx->y))) + { + RETURN(status, "GCM - S (AAD partial) failed"); + } + ctx->aad_size += ctx->partial_aad_size; + ctx->partial_aad_size = 0; + } + + if (input_size == 0) + { + // Nothing to do + return ATCA_SUCCESS; + } + + data_idx = 0; + while (data_idx < input_size) + { + if (ctx->data_size % AES_DATA_SIZE == 0) + { + // Need to calculate next encrypted counter block + if (ATCA_SUCCESS != (status = atcab_aes_encrypt(ctx->key_id, ctx->key_block, ctx->cb, ctx->enc_cb))) + { + RETURN(status, "AES GCM CB encrypt failed"); + } + + // Increment counter + if (ATCA_SUCCESS != (status = atcab_aes_gcm_increment(ctx->cb, 4))) + { + RETURN(status, "AES GCM counter increment failed"); + } + } + + // Process data with current encrypted counter block + for (i = ctx->data_size % AES_DATA_SIZE; i < AES_DATA_SIZE && data_idx < input_size; i++, data_idx++) + { + output[data_idx] = input[data_idx] ^ ctx->enc_cb[i]; + // Save the current ciphertext block depending on whether this is an encrypt or decrypt operation + ctx->ciphertext_block[i] = is_encrypt ? output[data_idx] : input[data_idx]; + ctx->data_size += 1; + } + + if (ctx->data_size % AES_DATA_SIZE == 0) + { + // Calculate running hash with completed block + if (ATCA_SUCCESS != (status = atcab_aes_ghash(ctx->h, ctx->ciphertext_block, AES_DATA_SIZE, ctx->y))) + { + RETURN(status, "GCM - S (data) failed"); + } + } + } + + return ATCA_SUCCESS; +} + +/** \brief Encrypt data using GCM mode and a key within the ATECC608A device. + * atcab_aes_gcm_init() or atcab_aes_gcm_init_rand() should be called + * before the first use of this function. + * + * \param[in] ctx AES GCM context structure. + * \param[in] plaintext Plaintext to be encrypted (16 bytes). + * \param[in] plaintext_size Size of plaintext in bytes. + * \param[out] ciphertext Encrypted data is returned here. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_gcm_encrypt_update(atca_aes_gcm_ctx_t* ctx, const uint8_t* plaintext, uint32_t plaintext_size, uint8_t* ciphertext) +{ + return atcab_aes_gcm_update(ctx, plaintext, plaintext_size, ciphertext, true); +} + +/** \brief Complete GCM operation to generate the authentication tag. + * + * It calculates output block (S) by including AAD size and data size, then + * calculates the tag. This should be called last in a encrypt/decrypt + * operation. + * + * \param[in] ctx AES GCM context structure. + * \param[out] tag Authentication tag is returned here. + * \param[in] tag_size Required size for the tag. Must be 12 to 16 bytes. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +static ATCA_STATUS atcab_aes_gcm_calc_auth_tag(atca_aes_gcm_ctx_t* ctx, uint8_t* tag, size_t tag_size) +{ + ATCA_STATUS status; + size_t xor_index; + uint8_t temp_data[AES_DATA_SIZE]; + uint64_t length; + + if (ctx == NULL || tag == NULL) + { + RETURN(ATCA_BAD_PARAM, "Null pointer"); + } + // 800-38D 5.2.1.2 specifies these tags sizes + if (tag_size < 12 || tag_size > 16) + { + RETURN(ATCA_BAD_PARAM, "Invalid tag size"); + } + + memset(temp_data, 0, AES_DATA_SIZE); + length = ATCA_UINT64_HOST_TO_BE(((uint64_t)ctx->aad_size) * 8); + memcpy(&temp_data[0], &length, sizeof(length)); + length = ATCA_UINT64_HOST_TO_BE(((uint64_t)ctx->data_size) * 8); + memcpy(&temp_data[8], &length, sizeof(length)); + + //S = GHASH(H, [len(A)]64 || [len(C)]64)) + if (ATCA_SUCCESS != (status = atcab_aes_ghash(ctx->h, temp_data, AES_DATA_SIZE, ctx->y))) + { + RETURN(status, "GCM - S (lengths) failed"); + } + + //T = GCTR(J0, S) + if (ATCA_SUCCESS != (status = atcab_aes_encrypt(ctx->key_id, ctx->key_block, ctx->j0, temp_data))) + { + RETURN(status, "Tag GCTR Encryption failed"); + } + + for (xor_index = 0; xor_index < tag_size; xor_index++) + { + tag[xor_index] = temp_data[xor_index] ^ ctx->y[xor_index]; + } + + return ATCA_SUCCESS; +} + +/** \brief Complete a GCM encrypt operation returning the authentication tag. + * + * \param[in] ctx AES GCM context structure. + * \param[out] tag Authentication tag is returned here. + * \param[in] tag_size Tag size in bytes (12 to 16 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_gcm_encrypt_finish(atca_aes_gcm_ctx_t* ctx, uint8_t* tag, size_t tag_size) +{ + ATCA_STATUS status; + + if (ctx == NULL) + { + RETURN(ATCA_BAD_PARAM, "Null pointer"); + } + + if (ctx->partial_aad_size > 0) + { + // Incomplete AAD with no encrypted data, need to complete AAD hash + if (ATCA_SUCCESS != (status = atcab_aes_gcm_update(ctx, NULL, 0, NULL, true))) + { + RETURN(status, "GCM - S (AAD) failed"); + } + } + + // Update hash with any partial block of ciphertext + //S = GHASH(H, C || 0^u) + if (ATCA_SUCCESS != (status = atcab_aes_ghash(ctx->h, ctx->ciphertext_block, ctx->data_size % AES_DATA_SIZE, ctx->y))) + { + RETURN(status, "GCM - S (C - encrypt update) failed"); + } + + if (ATCA_SUCCESS != (status = atcab_aes_gcm_calc_auth_tag(ctx, tag, tag_size))) + { + RETURN(status, "GCM encrypt tag calculation failed"); + } + + return ATCA_SUCCESS; +} + +/** \brief Decrypt data using GCM mode and a key within the ATECC608A device. + * atcab_aes_gcm_init() or atcab_aes_gcm_init_rand() should be called + * before the first use of this function. + * + * \param[in] ctx AES GCM context structure. + * \param[in] ciphertext Ciphertext to be decrypted. + * \param[in] ciphertext_size Size of ciphertext in bytes. + * \param[out] plaintext Decrypted data is returned here. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_gcm_decrypt_update(atca_aes_gcm_ctx_t* ctx, const uint8_t* ciphertext, uint32_t ciphertext_size, uint8_t* plaintext) +{ + return atcab_aes_gcm_update(ctx, ciphertext, ciphertext_size, plaintext, false); +} + +/** \brief Complete a GCM decrypt operation verifying the authentication tag. + * + * \param[in] ctx AES GCM context structure. + * \param[in] tag Expected authentication tag. + * \param[in] tag_size Size of tag in bytes (12 to 16 bytes). + * \param[out] is_verified Returns whether or not the tag verified. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_aes_gcm_decrypt_finish(atca_aes_gcm_ctx_t* ctx, const uint8_t* tag, size_t tag_size, bool* is_verified) +{ + ATCA_STATUS status; + uint8_t calc_tag[AES_DATA_SIZE]; + + if (ctx == NULL || is_verified == NULL) + { + RETURN(ATCA_BAD_PARAM, "Null pointer"); + } + *is_verified = false; + + if (ctx->partial_aad_size > 0) + { + // Incomplete AAD with no decrypted data, need to complete AAD hash + if (ATCA_SUCCESS != (status = atcab_aes_gcm_update(ctx, NULL, 0, NULL, false))) + { + RETURN(status, "GCM - S (AAD) failed"); + } + } + + // Update hash with any partial block of ciphertext + //S = GHASH(H, C || 0^u) + if (ATCA_SUCCESS != (status = atcab_aes_ghash(ctx->h, ctx->ciphertext_block, ctx->data_size % AES_DATA_SIZE, ctx->y))) + { + RETURN(status, "GCM - S (C - encrypt update) failed"); + } + + if (ATCA_SUCCESS != (status = atcab_aes_gcm_calc_auth_tag(ctx, calc_tag, tag_size))) + { + RETURN(status, "Tag calculation failed"); + } + + *is_verified = (memcmp(calc_tag, tag, tag_size) == 0); + + return ATCA_SUCCESS; +} + +/** @} */ diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_gcm.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_gcm.h new file mode 100644 index 0000000..fce3b09 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_aes_gcm.h @@ -0,0 +1,67 @@ +/** + * \file + * \brief Unity tests for the cryptoauthlib AES GCM functions. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ +#ifndef ATCA_BASIC_AES_GCM_H_ +#define ATCA_BASIC_AES_GCM_H_ + +#include "cryptoauthlib.h" + +/** \ingroup atcab_ + * @{ + */ + +extern const char* atca_basic_aes_gcm_version; + +/** Context structure for AES GCM operations. + */ +typedef struct atca_aes_gcm_ctx +{ + uint16_t key_id; //!< Key location. Can either be a slot number or ATCA_TEMPKEY_KEYID for TempKey. + uint8_t key_block; //!< Index of the 16-byte block to use within the key location for the actual key. + uint8_t cb[AES_DATA_SIZE]; //!< Counter block, comprises of nonce + count value (16 bytes). + uint32_t data_size; //!< Size of the data being encrypted/decrypted in bytes. + uint32_t aad_size; //!< Size of the additional authenticated data in bytes. + uint8_t h[AES_DATA_SIZE]; //!< Subkey for ghash functions in GCM. + uint8_t j0[AES_DATA_SIZE]; //!< Precounter block generated from IV. + uint8_t y[AES_DATA_SIZE]; //!< Current GHASH output + uint8_t partial_aad[AES_DATA_SIZE]; //!< Partial blocks of data waiting to be processed + uint32_t partial_aad_size; //!< Amount of data in the partial block buffer + uint8_t enc_cb[AES_DATA_SIZE]; //!< Last encrypted counter block + uint8_t ciphertext_block[AES_DATA_SIZE]; //!< Last ciphertext block +} atca_aes_gcm_ctx_t; + +ATCA_STATUS atcab_aes_gcm_init(atca_aes_gcm_ctx_t* ctx, uint16_t key_id, uint8_t key_block, const uint8_t* iv, size_t iv_size); +ATCA_STATUS atcab_aes_gcm_init_rand(atca_aes_gcm_ctx_t* ctx, uint16_t key_id, uint8_t key_block, size_t rand_size, + const uint8_t* free_field, size_t free_field_size, uint8_t* iv); +ATCA_STATUS atcab_aes_gcm_aad_update(atca_aes_gcm_ctx_t* ctx, const uint8_t* aad, uint32_t aad_size); +ATCA_STATUS atcab_aes_gcm_encrypt_update(atca_aes_gcm_ctx_t* ctx, const uint8_t* plaintext, uint32_t plaintext_size, uint8_t* ciphertext); +ATCA_STATUS atcab_aes_gcm_encrypt_finish(atca_aes_gcm_ctx_t* ctx, uint8_t* tag, size_t tag_size); +ATCA_STATUS atcab_aes_gcm_decrypt_update(atca_aes_gcm_ctx_t* ctx, const uint8_t* ciphertext, uint32_t ciphertext_size, uint8_t* plaintext); +ATCA_STATUS atcab_aes_gcm_decrypt_finish(atca_aes_gcm_ctx_t* ctx, const uint8_t* tag, size_t tag_size, bool* is_verified); + +/** @} */ + +#endif \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.c new file mode 100644 index 0000000..0e70ba6 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.c @@ -0,0 +1,94 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for CheckMAC command. + * + * The CheckMac command calculates a MAC response that would have been + * generated on a different CryptoAuthentication device and then compares the + * result with input value. + * + * \note List of devices that support this command - ATSHA204A, ATECC108A, + * ATECC508A, and ATECC608A. There are differences in the modes that they + * support. Refer to device datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "atca_basic.h" +#include "atca_execution.h" + +/** \brief Compares a MAC response with input values + * \param[in] mode Controls which fields within the device are used in + * the message + * \param[in] key_id Key location in the CryptoAuth device to use for the + * MAC + * \param[in] challenge Challenge data (32 bytes) + * \param[in] response MAC response data (32 bytes) + * \param[in] other_data OtherData parameter (13 bytes) + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_checkmac(uint8_t mode, uint16_t key_id, const uint8_t *challenge, const uint8_t *response, const uint8_t *other_data) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + + // Verify the inputs + if (response == NULL || other_data == NULL) + { + return ATCA_BAD_PARAM; + } + if (!(mode & CHECKMAC_MODE_BLOCK2_TEMPKEY) && challenge == NULL) + { + return ATCA_BAD_PARAM; + } + + do + { + // build Check MAC command + packet.param1 = mode; + packet.param2 = key_id; + if (challenge != NULL) + { + memcpy(&packet.data[0], challenge, CHECKMAC_CLIENT_CHALLENGE_SIZE); + } + else + { + memset(&packet.data[0], 0, CHECKMAC_CLIENT_CHALLENGE_SIZE); + } + memcpy(&packet.data[32], response, CHECKMAC_CLIENT_RESPONSE_SIZE); + memcpy(&packet.data[64], other_data, CHECKMAC_OTHER_DATA_SIZE); + + if ((status = atCheckMAC(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command( (void*)&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + } + while (0); + + return status; +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.c new file mode 100644 index 0000000..76bd8a2 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.c @@ -0,0 +1,104 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for Counter command. + * + * The Counter command reads or increments the binary count value for one of the + * two monotonic counters + * + * \note List of devices that support this command - ATECC508A and ATECC608A. + * There are differences in the modes that they support. Refer to device + * datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ +#include "atca_basic.h" +#include "atca_execution.h" + + +/** \brief Compute the Counter functions + * \param[in] mode the mode used for the counter + * \param[in] counter_id The counter to be used + * \param[out] counter_value pointer to the counter value returned from device + * \return ATCA_SUCCESS on success, otherwise an error code. + */ + +ATCA_STATUS atcab_counter(uint8_t mode, uint16_t counter_id, uint32_t *counter_value) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + + do + { + if (counter_id > 1) + { + return ATCA_BAD_PARAM; + } + + // build a Counter command + packet.param1 = mode; + packet.param2 = counter_id; + + if ((status = atCounter(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + if (counter_value != NULL && packet.data[ATCA_COUNT_IDX] >= 7) + { + *counter_value = ((uint32_t)packet.data[ATCA_RSP_DATA_IDX + 0] << 0) | + ((uint32_t)packet.data[ATCA_RSP_DATA_IDX + 1] << 8) | + ((uint32_t)packet.data[ATCA_RSP_DATA_IDX + 2] << 16) | + ((uint32_t)packet.data[ATCA_RSP_DATA_IDX + 3] << 24); + } + } + while (0); + + return status; +} + +/** \brief Increments one of the device's monotonic counters + * \param[in] counter_id Counter to be incremented + * \param[out] counter_value New value of the counter is returned here. Can be + * NULL if not needed. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_counter_increment(uint16_t counter_id, uint32_t* counter_value) +{ + return atcab_counter(COUNTER_MODE_INCREMENT, counter_id, counter_value); +} + +/** \brief Read one of the device's monotonic counters + * \param[in] counter_id Counter to be read + * \param[out] counter_value Counter value is returned here. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_counter_read(uint16_t counter_id, uint32_t* counter_value) +{ + return atcab_counter(COUNTER_MODE_READ, counter_id, counter_value); +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.c new file mode 100644 index 0000000..af1ac69 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.c @@ -0,0 +1,79 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for DeriveKey command. + * + * The DeriveKey command combines the current value of a key with the nonce + * stored in TempKey using SHA-256 and derives a new key. + * + * \note List of devices that support this command - ATSHA204A, ATECC108A, + * ATECC508A, and ATECC608A. There are differences in the modes that they + * support. Refer to device datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "atca_basic.h" +#include "atca_execution.h" + +/** \brief Executes the DeviveKey command for deriving a new key from a + * nonce (TempKey) and an existing key. + * + * \param[in] mode Bit 2 must match the value in TempKey.SourceFlag + * \param[in] target_key Key slot to be written + * \param[in] mac Optional 32 byte MAC used to validate operation. NULL + * if not required. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_derivekey(uint8_t mode, uint16_t target_key, const uint8_t* mac) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + + do + { + // build a deriveKey command (pass through mode) + packet.param1 = mode; + packet.param2 = target_key; + + if (mac != NULL) + { + memcpy(packet.data, mac, MAC_SIZE); + } + + if ((status = atDeriveKey(ca_cmd, &packet, mac != NULL)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + } + while (0); + + return status; +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.c new file mode 100644 index 0000000..4e204b4 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.c @@ -0,0 +1,258 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for ECDH command. + * + * The ECDH command implements the Elliptic Curve Diffie-Hellman algorithm to + * combine an internal private key with an external public key to calculate a + * shared secret. + * + * \note List of devices that support this command - ATECC508A, ATECC608A. + * There are differences in the modes that they support. Refer to device + * datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "atca_basic.h" +#include "atca_execution.h" +#include "host/atca_host.h" + + +/** \brief Base function for generating premaster secret key using ECDH. + * \param[in] mode Mode to be used for ECDH computation + * \param[in] key_id Slot of key for ECDH computation + * \param[in] public_key Public key input to ECDH calculation. X and Y + * integers in big-endian format. 64 bytes for P256 + * key. + * \param[out] pms Computed ECDH pre-master secret is returned here (32 + * bytes) if returned directly. Otherwise NULL. + * \param[out] out_nonce Nonce used to encrypt pre-master secret. NULL if + * output encryption not used. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_ecdh_base(uint8_t mode, uint16_t key_id, const uint8_t* public_key, uint8_t* pms, uint8_t* out_nonce) +{ + ATCAPacket packet; + ATCA_STATUS status = ATCA_GEN_FAIL; + + do + { + // Build Command + packet.param1 = mode; + packet.param2 = key_id; + memcpy(packet.data, public_key, ATCA_PUB_KEY_SIZE); + + if ((status = atECDH(_gDevice->mCommands, &packet)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + if (pms != NULL && packet.data[ATCA_COUNT_IDX] >= (3 + ATCA_KEY_SIZE)) + { + memcpy(pms, &packet.data[ATCA_RSP_DATA_IDX], ATCA_KEY_SIZE); + } + + if (out_nonce != NULL && packet.data[ATCA_COUNT_IDX] >= (3 + ATCA_KEY_SIZE * 2)) + { + memcpy(out_nonce, &packet.data[ATCA_RSP_DATA_IDX + ATCA_KEY_SIZE], ATCA_KEY_SIZE); + } + + } + while (0); + + return status; +} + +/** \brief ECDH command with a private key in a slot and the premaster secret + * is returned in the clear. + * + * \param[in] key_id Slot of key for ECDH computation + * \param[in] public_key Public key input to ECDH calculation. X and Y + * integers in big-endian format. 64 bytes for P256 + * key. + * \param[out] pms Computed ECDH premaster secret is returned here. + * 32 bytes. + * + * \return ATCA_SUCCESS on success + */ +ATCA_STATUS atcab_ecdh(uint16_t key_id, const uint8_t* public_key, uint8_t* pms) +{ + ATCA_STATUS status; + + status = atcab_ecdh_base(ECDH_PREFIX_MODE, key_id, public_key, pms, NULL); + + return status; +} + +/** \brief ECDH command with a private key in a slot and the premaster secret + * is read from the next slot. + * + * This function only works for even numbered slots with the proper + * configuration. + * + * \param[in] key_id Slot of key for ECDH computation + * \param[in] public_key Public key input to ECDH calculation. X and Y + * integers in big-endian format. 64 bytes for P256 + * key. + * \param[out] pms Computed ECDH premaster secret is returned here + * (32 bytes). + * \param[in] read_key Read key for the premaster secret slot (key_id|1). + * \param[in] read_key_id Read key slot for read_key. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_ecdh_enc(uint16_t key_id, const uint8_t* public_key, uint8_t* pms, const uint8_t* read_key, uint16_t read_key_id) +{ + ATCA_STATUS status = ATCA_SUCCESS; + + do + { + // Check the inputs + if (public_key == NULL || pms == NULL || read_key == NULL) + { + status = ATCA_BAD_PARAM; + BREAK(status, "Bad input parameters"); + } + + // Send the ECDH command with the public key provided + if ((status = atcab_ecdh(key_id, public_key, NULL)) != ATCA_SUCCESS) + { + BREAK(status, "ECDH Failed"); + } + + if ((status = atcab_read_enc(key_id | 0x0001, 0, pms, read_key, read_key_id)) != ATCA_SUCCESS) + { + BREAK(status, "Encrypted read failed"); + } + } + while (0); + + return status; +} + +/** \brief ECDH command with a private key in a slot and the premaster secret + * is returned encrypted using the IO protection key. + * + * \param[in] key_id Slot of key for ECDH computation + * \param[in] public_key Public key input to ECDH calculation. X and Y + * integers in big-endian format. 64 bytes for P256 + * key. + * \param[out] pms Computed ECDH premaster secret is returned here + * (32 bytes). + * \param[in] io_key IO protection key. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_ecdh_ioenc(uint16_t key_id, const uint8_t* public_key, uint8_t* pms, const uint8_t* io_key) +{ + uint8_t mode = ECDH_MODE_SOURCE_EEPROM_SLOT | ECDH_MODE_OUTPUT_ENC | ECDH_MODE_COPY_OUTPUT_BUFFER; + uint8_t out_nonce[ATCA_KEY_SIZE]; + atca_io_decrypt_in_out_t io_dec_params; + ATCA_STATUS status = ATCA_GEN_FAIL; + + // Perform ECDH operation requesting output buffer encryption + status = atcab_ecdh_base(mode, key_id, public_key, pms, out_nonce); + if (status != ATCA_SUCCESS) + { + return status; + } + + // Decrypt PMS + memset(&io_dec_params, 0, sizeof(io_dec_params)); + io_dec_params.io_key = io_key; + io_dec_params.out_nonce = out_nonce; + io_dec_params.data = pms; + io_dec_params.data_size = 32; + status = atcah_io_decrypt(&io_dec_params); + if (status != ATCA_SUCCESS) + { + return status; + } + + return status; +} + +/** \brief ECDH command with a private key in TempKey and the premaster secret + * is returned in the clear. + * + * \param[in] public_key Public key input to ECDH calculation. X and Y + * integers in big-endian format. 64 bytes for P256 + * key. + * \param[out] pms Computed ECDH premaster secret is returned here + * (32 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_ecdh_tempkey(const uint8_t* public_key, uint8_t* pms) +{ + // Perform ECDH operation with TempKey + uint8_t mode = ECDH_MODE_SOURCE_TEMPKEY | ECDH_MODE_COPY_OUTPUT_BUFFER; + + return atcab_ecdh_base(mode, 0x0000, public_key, pms, NULL); +} + +/** \brief ECDH command with a private key in TempKey and the premaster secret + * is returned encrypted using the IO protection key. + * + * \param[in] public_key Public key input to ECDH calculation. X and Y + * integers in big-endian format. 64 bytes for P256 + * key. + * \param[out] pms Computed ECDH premaster secret is returned here + * (32 bytes). + * \param[in] io_key IO protection key. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_ecdh_tempkey_ioenc(const uint8_t* public_key, uint8_t* pms, const uint8_t* io_key) +{ + uint8_t mode = ECDH_MODE_SOURCE_TEMPKEY | ECDH_MODE_OUTPUT_ENC | ECDH_MODE_COPY_OUTPUT_BUFFER; + uint8_t out_nonce[ATCA_KEY_SIZE]; + atca_io_decrypt_in_out_t io_dec_params; + ATCA_STATUS status = ATCA_GEN_FAIL; + + // Perform ECDH operation requesting output buffer encryption + status = atcab_ecdh_base(mode, 0x0000, public_key, pms, out_nonce); + if (status != ATCA_SUCCESS) + { + return status; + } + + // Decrypt PMS + memset(&io_dec_params, 0, sizeof(io_dec_params)); + io_dec_params.io_key = io_key; + io_dec_params.out_nonce = out_nonce; + io_dec_params.data = pms; + io_dec_params.data_size = 32; + status = atcah_io_decrypt(&io_dec_params); + if (status != ATCA_SUCCESS) + { + return status; + } + + return status; +} + diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.c new file mode 100644 index 0000000..c8e73b4 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.c @@ -0,0 +1,91 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for GenDig command. + * + * The GenDig command uses SHA-256 to combine a stored value with the contents + * of TempKey, which must have been valid prior to the execution of this + * command. + * + * \note List of devices that support this command - ATSHA204A, ATECC108A, + * ATECC508A, and ATECC608A. There are differences in the modes that + * they support. Refer to device datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "atca_basic.h" +#include "atca_execution.h" + +/** \brief Issues a GenDig command, which performs a SHA256 hash on the source data indicated by zone with the + * contents of TempKey. See the CryptoAuth datasheet for your chip to see what the values of zone + * correspond to. + * \param[in] zone Designates the source of the data to hash with TempKey. + * \param[in] key_id Indicates the key, OTP block, or message order for shared nonce mode. + * \param[in] other_data Four bytes of data for SHA calculation when using a NoMac key, 32 bytes for + * "Shared Nonce" mode, otherwise ignored (can be NULL). + * \param[in] other_data_size Size of other_data in bytes. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_gendig(uint8_t zone, uint16_t key_id, const uint8_t *other_data, uint8_t other_data_size) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + bool is_no_mac_key = false; + + if (other_data_size > 0 && other_data == NULL) + { + return ATCA_BAD_PARAM; + } + + do + { + // build gendig command + packet.param1 = zone; + packet.param2 = key_id; + + if (packet.param1 == GENDIG_ZONE_SHARED_NONCE && other_data_size >= ATCA_BLOCK_SIZE) + { + memcpy(&packet.data[0], &other_data[0], ATCA_BLOCK_SIZE); + } + else if (packet.param1 == GENDIG_ZONE_DATA && other_data_size >= ATCA_WORD_SIZE) + { + memcpy(&packet.data[0], &other_data[0], ATCA_WORD_SIZE); + is_no_mac_key = true; + } + + if ((status = atGenDig(ca_cmd, &packet, is_no_mac_key)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + } + while (0); + + return status; +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.c new file mode 100644 index 0000000..742883a --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.c @@ -0,0 +1,122 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for GenKey command. + * + * The GenKey command is used for creating ECC private keys, generating ECC + * public keys, and for digest calculations involving public keys. + * + * \note List of devices that support this command - ATECC108A, ATECC508A, + * ATECC608A. There are differences in the modes that they support. Refer + * to device datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "atca_basic.h" +#include "atca_execution.h" + +/** \brief Issues GenKey command, which can generate a private key, compute a + * public key, nd/or compute a digest of a public key. + * + * \param[in] mode Mode determines what operations the GenKey + * command performs. + * \param[in] key_id Slot to perform the GenKey command on. + * \param[in] other_data OtherData for PubKey digest calculation. Can be set + * to NULL otherwise. + * \param[out] public_key If the mode indicates a public key will be + * calculated, it will be returned here. Format will + * be the X and Y integers in big-endian format. + * 64 bytes for P256 curve. Set to NULL if public key + * isn't required. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_genkey_base(uint8_t mode, uint16_t key_id, const uint8_t* other_data, uint8_t* public_key) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + + do + { + // Build GenKey command + packet.param1 = mode; + packet.param2 = key_id; + if (other_data) + { + memcpy(packet.data, other_data, GENKEY_OTHER_DATA_SIZE); + } + + if ((status = atGenKey(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + if (public_key && packet.data[ATCA_COUNT_IDX] > 4) + { + memcpy(public_key, &packet.data[ATCA_RSP_DATA_IDX], packet.data[ATCA_COUNT_IDX] - 3); + } + } + while (0); + + return status; +} + +/** \brief Issues GenKey command, which generates a new random private key in + * slot and returns the public key. + * + * \param[in] key_id Slot number where an ECC private key is configured. + * Can also be ATCA_TEMPKEY_KEYID to generate a private + * key in TempKey. + * \param[out] public_key Public key will be returned here. Format will be + * the X and Y integers in big-endian format. + * 64 bytes for P256 curve. Set to NULL if public key + * isn't required. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_genkey(uint16_t key_id, uint8_t *public_key) +{ + return atcab_genkey_base(GENKEY_MODE_PRIVATE, key_id, NULL, public_key); +} + +/** \brief Uses GenKey command to calculate the public key from an existing + * private key in a slot. + * + * \param[in] key_id Slot number of the private key. + * \param[out] public_key Public key will be returned here. Format will be + * the X and Y integers in big-endian format. + * 64 bytes for P256 curve. Set to NULL if public key + * isn't required. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_get_pubkey(uint16_t key_id, uint8_t *public_key) +{ + return atcab_genkey_base(GENKEY_MODE_PUBLIC, key_id, NULL, public_key); +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.c new file mode 100644 index 0000000..c40b68f --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.c @@ -0,0 +1,92 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for HMAC command. + * + * The HMAC command computes an HMAC/SHA-256 digest using a key stored in the + * device over a challenge stored in the TempKey register, and/or other + * information stored within the device. + * + * \note List of devices that support this command - ATSHA204A, ATECC108A, and + * ATECC508A . There are differences in the modes that they support. + * Refer to device datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#include "atca_basic.h" +#include "atca_execution.h" + +/** \brief Issues a HMAC command, which computes an HMAC/SHA-256 digest of a + * key stored in the device, a challenge, and other information on the + * device. + * + * \param[in] mode Controls which fields within the device are used in the + * message. + * \param[in] key_id Which key is to be used to generate the response. + * Bits 0:3 only are used to select a slot but all 16 bits + * are used in the HMAC message. + * \param[out] digest HMAC digest is returned in this buffer (32 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_hmac(uint8_t mode, uint16_t key_id, uint8_t* digest) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + + do + { + if (digest == NULL) + { + status = ATCA_BAD_PARAM; + break; + } + // build HMAC command + packet.param1 = mode; + packet.param2 = key_id; + + if ((status = atHMAC(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + if (packet.data[ATCA_COUNT_IDX] != HMAC_DIGEST_SIZE + 3) + { + status = ATCA_RX_FAIL; // Unexpected response size + break; + } + + memcpy(digest, &packet.data[ATCA_RSP_DATA_IDX], HMAC_DIGEST_SIZE); + + } + while (0); + + return status; +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.c new file mode 100644 index 0000000..85e8832 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.c @@ -0,0 +1,139 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for Info command. + * + * Info command returns a variety of static and dynamic information about the + * device and its state. Also is used to control the GPIO pin and the persistent + * latch. + * + * \note The ATSHA204A refers to this command as DevRev instead of Info, + * however, the OpCode and operation is the same. + * + * \note List of devices that support this command - ATSHA204A, ATECC108A, + * ATECC508A & ATECC608A. There are differences in the modes that they + * support. Refer to device datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ +#include "atca_basic.h" +#include "atca_execution.h" + +/** \brief Issues an Info command, which return internal device information and + * can control GPIO and the persistent latch. + * + * \param[in] mode Selects which mode to be used for info command. + * \param[in] param2 Selects the particular fields for the mode. + * \param[out] out_data Response from info command (4 bytes). Can be set to + * NULL if not required. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_info_base(uint8_t mode, uint16_t param2, uint8_t* out_data) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + + // build an info command + packet.param1 = mode; + packet.param2 = param2; + + do + { + + if ((status = atInfo(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + if (out_data != NULL && packet.data[ATCA_COUNT_IDX] >= 7) + { + memcpy(out_data, &packet.data[ATCA_RSP_DATA_IDX], 4); + } + } + while (0); + + return status; +} + +/** \brief Use the Info command to get the device revision (DevRev). + * \param[out] revision Device revision is returned here (4 bytes). + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_info(uint8_t* revision) +{ + if (revision == NULL) + { + return ATCA_BAD_PARAM; + } + + return atcab_info_base(INFO_MODE_REVISION, 0, revision); +} + +/** \brief Use the Info command to get the persistent latch current state for + * an ATECC608A device. + * + * \param[out] state The state is returned here. Set (true) or Cler (false). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ + +ATCA_STATUS atcab_info_get_latch(bool* state) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + uint8_t out_data[4]; + + if (state == NULL) + { + return ATCA_BAD_PARAM; + } + + status = atcab_info_base(INFO_MODE_VOL_KEY_PERMIT, 0, out_data); + if (status != ATCA_SUCCESS) + { + return status; + } + + *state = (out_data[0] == 1); + + return status; +} + +/** \brief Use the Info command to set the persistent latch state for an + * ATECC608A device. + * + * \param[out] state Persistent latch state. Set (true) or clear (false). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_info_set_latch(bool state) +{ + uint16_t param2 = INFO_PARAM2_SET_LATCH_STATE; + + param2 |= state ? INFO_PARAM2_LATCH_SET : INFO_PARAM2_LATCH_CLEAR; + return atcab_info_base(INFO_MODE_VOL_KEY_PERMIT, param2, NULL); +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.c new file mode 100644 index 0000000..5eaa8f5 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.c @@ -0,0 +1,136 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for KDF command. + * + * The KDF command implements one of a number of Key Derivation Functions (KDF). + * Generally this function combines a source key with an input string and + * creates a result key/digest/array. Three algorithms are currently supported: + * PRF, HKDF and AES. + * + * \note List of devices that support this command - ATECC608A. Refer to device + * datasheet for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "atca_basic.h" +#include "atca_execution.h" + +/** \brief Executes the KDF command, which derives a new key in PRF, AES, or + * HKDF modes. + * + * Generally this function combines a source key with an input string and + * creates a result key/digest/array. + * + * \param[in] mode Mode determines KDF algorithm (PRF,AES,HKDF), source + * key location, and target key locations. + * \param[in] key_id Source and target key slots if locations are in the + * EEPROM. Source key slot is the LSB and target key + * slot is the MSB. + * \param[in] details Further information about the computation, depending + * on the algorithm (4 bytes). + * \param[in] message Input value from system (up to 128 bytes). Actual size + * of message is 16 bytes for AES algorithm or is encoded + * in the MSB of the details parameter for other + * algorithms. + * \param[out] out_data Output of the KDF function is returned here. If the + * result remains in the device, this can be NULL. + * \param[out] out_nonce If the output is encrypted, a 32 byte random nonce + * generated by the device is returned here. If output + * encryption is not used, this can be NULL. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_kdf(uint8_t mode, uint16_t key_id, const uint32_t details, const uint8_t* message, uint8_t* out_data, uint8_t* out_nonce) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + uint16_t out_data_size = 0; + + do + { + if (message == NULL) + { + return ATCA_BAD_PARAM; + } + + // Build the KDF command + packet.param1 = mode; + packet.param2 = key_id; + + // Add details parameter + packet.data[0] = details; + packet.data[1] = details >> 8; + packet.data[2] = details >> 16; + packet.data[3] = details >> 24; + + // Add input message + if ((mode & KDF_MODE_ALG_MASK) == KDF_MODE_ALG_AES) + { + // AES algorithm has a fixed message size + memcpy(&packet.data[KDF_DETAILS_SIZE], message, AES_DATA_SIZE); + } + else + { + // All other algorithms encode message size in the last byte of details + memcpy(&packet.data[KDF_DETAILS_SIZE], message, packet.data[3]); + } + + // Build command + if ((status = atKDF(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + // Run command + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + if (((mode & KDF_MODE_ALG_MASK) == KDF_MODE_ALG_PRF) && (details & KDF_DETAILS_PRF_TARGET_LEN_64)) + { + out_data_size = 64; + } + else + { + out_data_size = 32; + } + + // Return OutData if possible + if (out_data != NULL && packet.data[ATCA_COUNT_IDX] >= (ATCA_PACKET_OVERHEAD + out_data_size)) + { + memcpy(out_data, &packet.data[ATCA_RSP_DATA_IDX], out_data_size); + } + + // return OutNonce if possible + if (out_nonce != NULL && packet.data[ATCA_COUNT_IDX] >= (ATCA_PACKET_OVERHEAD + out_data_size + 32)) + { + memcpy(out_nonce, &packet.data[ATCA_RSP_DATA_IDX + out_data_size], 32); + } + } + while (false); + + return status; +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.c new file mode 100644 index 0000000..e5b4b0f --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.c @@ -0,0 +1,140 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for Lock command. + * + * The Lock command prevents future modifications of the Configuration zone, + * enables configured policies for Data and OTP zones, and can render + * individual slots read-only regardless of configuration. + * + * \note List of devices that support this command - ATSHA204A, ATECC108A, + * ATECC508A, ATECC608A. There are differences in the modes that they + * support. Refer to device datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "atca_basic.h" +#include "atca_execution.h" + +/** \brief The Lock command prevents future modifications of the Configuration + * and/or Data and OTP zones. If the device is so configured, then + * this command can be used to lock individual data slots. This + * command fails if the designated area is already locked. + * + * \param[in] mode Zone, and/or slot, and summary check (bit 7). + * \param[in] summary_crc CRC of the config or data zones. Ignored for + * slot locks or when mode bit 7 is set. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_lock(uint8_t mode, uint16_t summary_crc) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + + // build command for lock zone and send + memset(&packet, 0, sizeof(packet)); + packet.param1 = mode; + packet.param2 = summary_crc; + + do + { + if ((status = atLock(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + } + while (0); + + return status; +} + +/** \brief Unconditionally (no CRC required) lock the config zone. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_lock_config_zone(void) +{ + return atcab_lock(LOCK_ZONE_NO_CRC | LOCK_ZONE_CONFIG, 0); +} + +/** \brief Lock the config zone with summary CRC. + * + * The CRC is calculated over the entire config zone contents. 88 bytes for + * ATSHA devices, 128 bytes for ATECC devices. Lock will fail if the provided + * CRC doesn't match the internally calculated one. + * + * \param[in] summary_crc Expected CRC over the config zone. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_lock_config_zone_crc(uint16_t summary_crc) +{ + return atcab_lock(LOCK_ZONE_CONFIG, summary_crc); +} + +/** \brief Unconditionally (no CRC required) lock the data zone (slots and OTP). + * + * ConfigZone must be locked and DataZone must be unlocked for the zone to be successfully locked. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_lock_data_zone(void) +{ + return atcab_lock(LOCK_ZONE_NO_CRC | LOCK_ZONE_DATA, 0); +} + +/** \brief Lock the data zone (slots and OTP) with summary CRC. + * + * The CRC is calculated over the concatenated contents of all the slots and + * OTP at the end. Private keys (KeyConfig.Private=1) are skipped. Lock will + * fail if the provided CRC doesn't match the internally calculated one. + * + * \param[in] summary_crc Expected CRC over the data zone. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_lock_data_zone_crc(uint16_t summary_crc) +{ + return atcab_lock(LOCK_ZONE_DATA, summary_crc); +} + +/** \brief Lock an individual slot in the data zone on an ATECC device. Not + * available for ATSHA devices. Slot must be configured to be slot + * lockable (KeyConfig.Lockable=1). + * + * \param[in] slot Slot to be locked in data zone. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_lock_data_slot(uint16_t slot) +{ + return atcab_lock(((uint8_t)slot << 2) | LOCK_ZONE_DATA_SLOT, 0); +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.c new file mode 100644 index 0000000..1b59602 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.c @@ -0,0 +1,93 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for MAC command. + * + * The MAC command computes a SHA-256 digest of a key stored in the device, a + * challenge, and other information on the device. The output of this command + * is the digest of this message. + * + * \note List of devices that support this command - ATSHA204A, ATECC108A, + * ATECC508A, and ATECC608A. There are differences in the modes that they + * support. Refer to device datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "atca_basic.h" +#include "atca_execution.h" + +/** \brief Executes MAC command, which computes a SHA-256 digest of a key + * stored in the device, a challenge, and other information on the + * device. + * + * \param[in] mode Controls which fields within the device are used in + * the message + * \param[in] key_id Key in the CryptoAuth device to use for the MAC + * \param[in] challenge Challenge message (32 bytes). May be NULL if mode + * indicates a challenge isn't required. + * \param[out] digest MAC response is returned here (32 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_mac(uint8_t mode, uint16_t key_id, const uint8_t* challenge, uint8_t* digest) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + + do + { + if (digest == NULL) + { + return ATCA_BAD_PARAM; + } + + // build mac command + packet.param1 = mode; + packet.param2 = key_id; + if (!(mode & MAC_MODE_BLOCK2_TEMPKEY)) + { + if (challenge == NULL) + { + return ATCA_BAD_PARAM; + } + memcpy(&packet.data[0], challenge, 32); // a 32-byte challenge + } + + if ((status = atMAC(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + memcpy(digest, &packet.data[ATCA_RSP_DATA_IDX], MAC_SIZE); + + } + while (0); + + return status; +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.c new file mode 100644 index 0000000..f6d0b73 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.c @@ -0,0 +1,205 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for Nonce command. + * + * The Nonce command generates a nonce for use by a subsequent commands of the + * device by combining an internally generated random number with an input value + * from the system. + * + * \note List of devices that support this command - ATSHA204A, ATECC108A, + * ATECC508A, and ATECC608A. There are differences in the modes that they + * support. Refer to device datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "atca_basic.h" +#include "atca_execution.h" + +/** \brief Executes Nonce command, which loads a random or fixed nonce/data + * into the device for use by subsequent commands. + * + * \param[in] mode Controls the mechanism of the internal RNG or fixed + * write. + * \param[in] zero Param2, normally 0, but can be used to indicate a + * nonce calculation mode (bit 15). + * \param[in] num_in Input value to either be included in the nonce + * calculation in random modes (20 bytes) or to be + * written directly (32 bytes or 64 bytes(ATECC608A)) + * in pass-through mode. + * \param[out] rand_out If using a random mode, the internally generated + * 32-byte random number that was used in the nonce + * calculation is returned here. Can be NULL if not + * needed. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_nonce_base(uint8_t mode, uint16_t zero, const uint8_t *num_in, uint8_t* rand_out) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + uint8_t nonce_mode = mode & NONCE_MODE_MASK; + + do + { + // build a nonce command + packet.param1 = mode; + packet.param2 = zero; + + // Copy the right amount of NumIn data + if ((nonce_mode == NONCE_MODE_SEED_UPDATE || nonce_mode == NONCE_MODE_NO_SEED_UPDATE)) + { + memcpy(packet.data, num_in, NONCE_NUMIN_SIZE); + } + else if (nonce_mode == NONCE_MODE_PASSTHROUGH) + { + if ((mode & NONCE_MODE_INPUT_LEN_MASK) == NONCE_MODE_INPUT_LEN_64) + { + memcpy(packet.data, num_in, 64); + } + else + { + memcpy(packet.data, num_in, 32); + } + } + else + { + return ATCA_BAD_PARAM; + } + + if ((status = atNonce(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + if ((rand_out != NULL) && (packet.data[ATCA_COUNT_IDX] >= 35)) + { + memcpy(&rand_out[0], &packet.data[ATCA_RSP_DATA_IDX], 32); + } + + } + while (0); + + return status; +} + + +/** \brief Execute a Nonce command in pass-through mode to initialize TempKey + * to a specified value. + * + * \param[in] num_in Data to be loaded into TempKey (32 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_nonce(const uint8_t *num_in) +{ + return atcab_nonce_base(NONCE_MODE_PASSTHROUGH, 0, num_in, NULL); +} + + +/** \brief Execute a Nonce command in pass-through mode to load one of the + * device's internal buffers with a fixed value. + * + * For the ATECC608A, available targets are TempKey (32 or 64 bytes), Message + * Digest Buffer (32 or 64 bytes), or the Alternate Key Buffer (32 bytes). For + * all other devices, only TempKey (32 bytes) is available. + * + * \param[in] target Target device buffer to load. Can be + * NONCE_MODE_TARGET_TEMPKEY, + * NONCE_MODE_TARGET_MSGDIGBUF, or + * NONCE_MODE_TARGET_ALTKEYBUF. + * \param[in] num_in Data to load into the buffer. + * \param[in] num_in_size Size of num_in in bytes. Can be 32 or 64 bytes + * depending on device and target. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_nonce_load(uint8_t target, const uint8_t *num_in, uint16_t num_in_size) +{ + uint8_t mode = NONCE_MODE_PASSTHROUGH | (NONCE_MODE_TARGET_MASK & target); + + if (num_in_size == 32) + { + mode |= NONCE_MODE_INPUT_LEN_32; + } + else if (num_in_size == 64) + { + mode |= NONCE_MODE_INPUT_LEN_64; + } + else + { + return ATCA_BAD_PARAM; + } + + return atcab_nonce_base(mode, 0, num_in, NULL); +} + +/** \brief Execute a Nonce command to generate a random nonce combining a host + * nonce (num_in) and a device random number. + * + * \param[in] num_in Host nonce to be combined with the device random + * number (20 bytes). + * \param[out] rand_out Internally generated 32-byte random number that was + * used in the nonce/challenge calculation is returned + * here. Can be NULL if not needed. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_nonce_rand(const uint8_t *num_in, uint8_t* rand_out) +{ + return atcab_nonce_base(NONCE_MODE_SEED_UPDATE, 0, num_in, rand_out); +} + +/** \brief Execute a Nonce command in pass-through mode to initialize TempKey + * to a specified value. + * + * \param[in] num_in Data to be loaded into TempKey (32 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_challenge(const uint8_t *num_in) +{ + return atcab_nonce_base(NONCE_MODE_PASSTHROUGH, 0, num_in, NULL); +} + +/** \brief Execute a Nonce command to generate a random challenge combining + * a host nonce (num_in) and a device random number. + * + * \param[in] num_in Host nonce to be combined with the device random + * number (20 bytes). + * \param[out] rand_out Internally generated 32-byte random number that was + * used in the nonce/challenge calculation is returned + * here. Can be NULL if not needed. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_challenge_seed_update(const uint8_t *num_in, uint8_t* rand_out) +{ + return atcab_nonce_base(NONCE_MODE_SEED_UPDATE, 0, num_in, rand_out); +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.c new file mode 100644 index 0000000..c2833ee --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.c @@ -0,0 +1,177 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for PrivWrite command. + * + * The PrivWrite command is used to write externally generated ECC private keys + * into the device. + * + * \note List of devices that support this command - ATECC108A, ATECC508A, and + * ATECC608A. There are differences in the modes that they support. Refer + * to device datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ +#include "atca_basic.h" +#include "atca_execution.h" +#include "host/atca_host.h" + +/** \brief Executes PrivWrite command, to write externally generated ECC + * private keys into the device. + * + * \param[in] key_id Slot to write the external private key into. + * \param[in] priv_key External private key (36 bytes) to be written. + * The first 4 bytes should be zero for P256 curve. + * \param[in] write_key_id Write key slot. Ignored if write_key is NULL. + * \param[in] write_key Write key (32 bytes). If NULL, perform an + * unencrypted PrivWrite, which is only available when + * the data zone is unlocked. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_priv_write(uint16_t key_id, const uint8_t priv_key[36], uint16_t write_key_id, const uint8_t write_key[32]) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + atca_nonce_in_out_t nonce_params; + atca_gen_dig_in_out_t gen_dig_param; + atca_write_mac_in_out_t host_mac_param; + atca_temp_key_t temp_key; + uint8_t serial_num[32]; // Buffer is larger than the 9 bytes required to make reads easier + uint8_t num_in[NONCE_NUMIN_SIZE] = { 0 }; + uint8_t rand_out[RANDOM_NUM_SIZE] = { 0 }; + uint8_t cipher_text[36] = { 0 }; + uint8_t host_mac[MAC_SIZE] = { 0 }; + uint8_t other_data[4] = { 0 }; + + if (key_id > 15 || priv_key == NULL) + { + return ATCA_BAD_PARAM; + } + + do + { + + if (write_key == NULL) + { + // Caller requested an unencrypted PrivWrite, which is only allowed when the data zone is unlocked + // build an PrivWrite command + packet.param1 = 0x00; // Mode is unencrypted write + packet.param2 = key_id; // Key ID + memcpy(&packet.data[0], priv_key, 36); // Private key + memset(&packet.data[36], 0, 32); // MAC (ignored for unencrypted write) + } + else + { + // Read the device SN + if ((status = atcab_read_zone(ATCA_ZONE_CONFIG, 0, 0, 0, serial_num, 32)) != ATCA_SUCCESS) + { + break; + } + // Make the SN continuous by moving SN[4:8] right after SN[0:3] + memmove(&serial_num[4], &serial_num[8], 5); + + // Send the random Nonce command + if ((status = atcab_nonce_rand(num_in, rand_out)) != ATCA_SUCCESS) + { + break; + } + + // Calculate Tempkey + memset(&temp_key, 0, sizeof(temp_key)); + memset(&nonce_params, 0, sizeof(nonce_params)); + nonce_params.mode = NONCE_MODE_SEED_UPDATE; + nonce_params.zero = 0; + nonce_params.num_in = num_in; + nonce_params.rand_out = rand_out; + nonce_params.temp_key = &temp_key; + if ((status = atcah_nonce(&nonce_params)) != ATCA_SUCCESS) + { + break; + } + + // Supply OtherData so GenDig behavior is the same for keys with SlotConfig.NoMac set + other_data[0] = ATCA_GENDIG; + other_data[1] = GENDIG_ZONE_DATA; + other_data[2] = (uint8_t)(write_key_id); + other_data[3] = (uint8_t)(write_key_id >> 8); + + // Send the GenDig command + if ((status = atcab_gendig(GENDIG_ZONE_DATA, write_key_id, other_data, sizeof(other_data))) != ATCA_SUCCESS) + { + break; + } + + // Calculate Tempkey + // NoMac bit isn't being considered here on purpose to remove having to read SlotConfig. + // OtherData is built to get the same result regardless of the NoMac bit. + memset(&gen_dig_param, 0, sizeof(gen_dig_param)); + gen_dig_param.zone = GENDIG_ZONE_DATA; + gen_dig_param.sn = serial_num; + gen_dig_param.key_id = write_key_id; + gen_dig_param.is_key_nomac = false; + gen_dig_param.stored_value = write_key; + gen_dig_param.other_data = other_data; + gen_dig_param.temp_key = &temp_key; + if ((status = atcah_gen_dig(&gen_dig_param)) != ATCA_SUCCESS) + { + break; + } + + // Calculate Auth MAC and cipher text + memset(&host_mac_param, 0, sizeof(host_mac_param)); + host_mac_param.zone = PRIVWRITE_MODE_ENCRYPT; + host_mac_param.key_id = key_id; + host_mac_param.sn = serial_num; + host_mac_param.input_data = &priv_key[0]; + host_mac_param.encrypted_data = cipher_text; + host_mac_param.auth_mac = host_mac; + host_mac_param.temp_key = &temp_key; + if ((status = atcah_privwrite_auth_mac(&host_mac_param)) != ATCA_SUCCESS) + { + break; + } + + // build a write command for encrypted writes + packet.param1 = PRIVWRITE_MODE_ENCRYPT; // Mode is encrypted write + packet.param2 = key_id; // Key ID + memcpy(&packet.data[0], cipher_text, sizeof(cipher_text)); + memcpy(&packet.data[sizeof(cipher_text)], host_mac, sizeof(host_mac)); + } + + if ((status = atPrivWrite(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + } + while (0); + + return status; +} + diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.c new file mode 100644 index 0000000..6a28911 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.c @@ -0,0 +1,80 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for Random command. + * + * The Random command generates a random number for use by the system. + * + * \note List of devices that support this command - ATSHA204A, ATECC108A, + * ATECC508A, ATECC608A. There are differences in the modes that they + * support. Refer to device datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ +#include "atca_basic.h" +#include "atca_execution.h" + +/** \brief Executes Random command, which generates a 32 byte random number + * from the CryptoAuth device. + * + * \param[out] rand_out 32 bytes of random data is returned here. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_random(uint8_t *rand_out) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + + do + { + // build an random command + packet.param1 = RANDOM_SEED_UPDATE; + packet.param2 = 0x0000; + + if ((status = atRandom(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + if (packet.data[ATCA_COUNT_IDX] != RANDOM_RSP_SIZE) + { + status = ATCA_RX_FAIL; + break; + } + + if (rand_out) + { + memcpy(rand_out, &packet.data[ATCA_RSP_DATA_IDX], RANDOM_NUM_SIZE); + } + } + while (0); + + + return status; +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.c new file mode 100644 index 0000000..472c7f7 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.c @@ -0,0 +1,713 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for Read command. + * + * The Read command reads words either 4-byte words or 32-byte blocks from one + * of the memory zones of the device. The data may optionally be encrypted + * before being returned to the system. + * + * \note List of devices that support this command - ATSHA204A, ATECC108A, + * ATECC508A, ATECC608A. There are differences in the modes that they + * support. Refer to device datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ +#include "atca_basic.h" +#include "atca_execution.h" +#include "host/atca_host.h" + + +/** \brief Executes Read command, which reads either 4 or 32 bytes of data from + * a given slot, configuration zone, or the OTP zone. + * + * When reading a slot or OTP, data zone must be locked and the slot + * configuration must not be secret for a slot to be successfully read. + * + * \param[in] zone Zone to be read from device. Options are + * ATCA_ZONE_CONFIG, ATCA_ZONE_OTP, or ATCA_ZONE_DATA. + * \param[in] slot Slot number for data zone and ignored for other zones. + * \param[in] block 32 byte block index within the zone. + * \param[in] offset 4 byte work index within the block. Ignored for 32 byte + * reads. + * \param[out] data Read data is returned here. + * \param[in] len Length of the data to be read. Must be either 4 or 32. + * + * returns ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_read_zone(uint8_t zone, uint16_t slot, uint8_t block, uint8_t offset, uint8_t *data, uint8_t len) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + uint16_t addr; + + do + { + // Check the input parameters + if (data == NULL) + { + return ATCA_BAD_PARAM; + } + + if (len != 4 && len != 32) + { + return ATCA_BAD_PARAM; + } + + // The get address function checks the remaining variables + if ((status = atcab_get_addr(zone, slot, block, offset, &addr)) != ATCA_SUCCESS) + { + break; + } + + // If there are 32 bytes to read, then OR the bit into the mode + if (len == ATCA_BLOCK_SIZE) + { + zone = zone | ATCA_ZONE_READWRITE_32; + } + + // build a read command + packet.param1 = zone; + packet.param2 = addr; + + if ((status = atRead(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + memcpy(data, &packet.data[1], len); + } + while (0); + + return status; +} +/** \brief Executes Read command, which reads the 9 byte serial number of the + * device from the config zone. + * + * \param[out] serial_number 9 byte serial number is returned here. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_read_serial_number(uint8_t* serial_number) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + uint8_t read_buf[ATCA_BLOCK_SIZE]; + + if (!serial_number) + { + return ATCA_BAD_PARAM; + } + + do + { + if ((status = atcab_read_zone(ATCA_ZONE_CONFIG, 0, 0, 0, read_buf, ATCA_BLOCK_SIZE)) != ATCA_SUCCESS) + { + break; + } + memcpy(&serial_number[0], &read_buf[0], 4); + memcpy(&serial_number[4], &read_buf[8], 5); + } + while (0); + + return status; +} +/** \brief Executes Read command, which reads the configuration zone to see if + * the specified slot is locked. + * + * \param[in] slot Slot to query for locked (slot 0-15) + * \param[out] is_locked Lock state returned here. True if locked. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_is_slot_locked(uint16_t slot, bool *is_locked) +{ + ATCA_STATUS ret = ATCA_GEN_FAIL; + uint8_t data[ATCA_WORD_SIZE]; + uint16_t slot_locked; + + do + { + if (slot > 15) + { + return ATCA_BAD_PARAM; + } + if (is_locked == NULL) + { + return ATCA_BAD_PARAM; + } + + // Read the word with the lock bytes ( SlotLock[2], RFU[2] ) (config block = 2, word offset = 6) + if ((ret = atcab_read_zone(ATCA_ZONE_CONFIG, 0, 2 /*block*/, 6 /*offset*/, data, ATCA_WORD_SIZE)) != ATCA_SUCCESS) + { + break; + } + + slot_locked = ((uint16_t)data[0]) | ((uint16_t)data[1] << 8); + *is_locked = ((slot_locked & (1 << slot)) == 0); + } + while (0); + + return ret; +} + +/** \brief Executes Read command, which reads the configuration zone to see if + * the specified zone is locked. + * + * \param[in] zone The zone to query for locked (use LOCK_ZONE_CONFIG or + * LOCK_ZONE_DATA). + * \param[out] is_locked Lock state returned here. True if locked. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_is_locked(uint8_t zone, bool *is_locked) +{ + ATCA_STATUS ret = ATCA_GEN_FAIL; + uint8_t data[ATCA_WORD_SIZE]; + + do + { + if (is_locked == NULL) + { + return ATCA_BAD_PARAM; + } + + // Read the word with the lock bytes (UserExtra, Selector, LockValue, LockConfig) (config block = 2, word offset = 5) + if ((ret = atcab_read_zone(ATCA_ZONE_CONFIG, 0, 2 /*block*/, 5 /*offset*/, data, ATCA_WORD_SIZE)) != ATCA_SUCCESS) + { + break; + } + + // Determine the index into the word_data based on the zone we are querying for + switch (zone) + { + case LOCK_ZONE_CONFIG: *is_locked = (data[3] != 0x55); break; + case LOCK_ZONE_DATA: *is_locked = (data[2] != 0x55); break; + default: ret = ATCA_BAD_PARAM; break; + } + } + while (0); + + return ret; +} + +/** \brief Executes Read command on a slot configured for encrypted reads and + * decrypts the data to return it as plaintext. + * + * Data zone must be locked for this command to succeed. Can only read 32 byte + * blocks. + * + * \param[in] key_id The slot ID to read from. + * \param[in] block Index of the 32 byte block within the slot to read. + * \param[out] data Decrypted (plaintext) data from the read is returned + * here (32 bytes). + * \param[in] enc_key 32 byte ReadKey for the slot being read. + * \param[in] enc_key_id KeyID of the ReadKey being used. + * + * returns ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_read_enc(uint16_t key_id, uint8_t block, uint8_t *data, const uint8_t* enc_key, const uint16_t enc_key_id) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + uint8_t zone = ATCA_ZONE_DATA | ATCA_ZONE_READWRITE_32; + atca_nonce_in_out_t nonce_params; + atca_gen_dig_in_out_t gen_dig_param; + atca_temp_key_t temp_key; + uint8_t serial_num[32]; + uint8_t num_in[NONCE_NUMIN_SIZE] = { 0 }; + uint8_t rand_out[RANDOM_NUM_SIZE] = { 0 }; + uint8_t other_data[4] = { 0 }; + int i = 0; + + do + { + // Verify inputs parameters + if (data == NULL || enc_key == NULL) + { + status = ATCA_BAD_PARAM; + break; + } + + // Read the device SN + if ((status = atcab_read_zone(ATCA_ZONE_CONFIG, 0, 0, 0, serial_num, 32)) != ATCA_SUCCESS) + { + break; + } + // Make the SN continuous by moving SN[4:8] right after SN[0:3] + memmove(&serial_num[4], &serial_num[8], 5); + + // Send the random Nonce command + if ((status = atcab_nonce_rand(num_in, rand_out)) != ATCA_SUCCESS) + { + BREAK(status, "Nonce failed"); + } + + // Calculate Tempkey + memset(&temp_key, 0, sizeof(temp_key)); + memset(&nonce_params, 0, sizeof(nonce_params)); + nonce_params.mode = NONCE_MODE_SEED_UPDATE; + nonce_params.zero = 0; + nonce_params.num_in = (uint8_t*)&num_in; + nonce_params.rand_out = (uint8_t*)&rand_out; + nonce_params.temp_key = &temp_key; + if ((status = atcah_nonce(&nonce_params)) != ATCA_SUCCESS) + { + BREAK(status, "Calc TempKey failed"); + } + + // Supply OtherData so GenDig behavior is the same for keys with SlotConfig.NoMac set + other_data[0] = ATCA_GENDIG; + other_data[1] = GENDIG_ZONE_DATA; + other_data[2] = (uint8_t)(enc_key_id); + other_data[3] = (uint8_t)(enc_key_id >> 8); + + // Send the GenDig command + if ((status = atcab_gendig(GENDIG_ZONE_DATA, enc_key_id, other_data, sizeof(other_data))) != ATCA_SUCCESS) + { + BREAK(status, "GenDig failed"); + } + + // Calculate Tempkey + // NoMac bit isn't being considered here on purpose to remove having to read SlotConfig. + // OtherData is built to get the same result regardless of the NoMac bit. + memset(&gen_dig_param, 0, sizeof(gen_dig_param)); + gen_dig_param.key_id = enc_key_id; + gen_dig_param.is_key_nomac = false; + gen_dig_param.sn = serial_num; + gen_dig_param.stored_value = enc_key; + gen_dig_param.zone = GENDIG_ZONE_DATA; + gen_dig_param.other_data = other_data; + gen_dig_param.temp_key = &temp_key; + if ((status = atcah_gen_dig(&gen_dig_param)) != ATCA_SUCCESS) + { + BREAK(status, ""); + } + + // Read Encrypted + if ((status = atcab_read_zone(zone, key_id, block, 0, data, ATCA_BLOCK_SIZE)) != ATCA_SUCCESS) + { + BREAK(status, "Read encrypted failed"); + } + + // Decrypt + for (i = 0; i < ATCA_BLOCK_SIZE; i++) + { + data[i] = data[i] ^ temp_key.value[i]; + } + + status = ATCA_SUCCESS; + + } + while (0); + + + return status; +} + +/** \brief Executes Read command to read the complete device configuration + * zone. + * + * \param[out] config_data Configuration zone data is returned here. 88 bytes + * for ATSHA devices, 128 bytes for ATECC devices. + * + * \returns ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_read_config_zone(uint8_t* config_data) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + + do + { + + // Verify the inputs + if (config_data == NULL) + { + status = ATCA_BAD_PARAM; + break; + } + + if (_gDevice->mIface->mIfaceCFG->devtype == ATSHA204A) + { + status = atcab_read_bytes_zone(ATCA_ZONE_CONFIG, 0, 0x00, config_data, ATCA_SHA_CONFIG_SIZE); + } + else + { + status = atcab_read_bytes_zone(ATCA_ZONE_CONFIG, 0, 0x00, config_data, ATCA_ECC_CONFIG_SIZE); + } + + if (status != ATCA_SUCCESS) + { + break; + } + + } + while (0); + + return status; +} + +/** \brief Compares a specified configuration zone with the configuration zone + * currently on the device. + * + * This only compares the static portions of the configuration zone and skips + * those that are unique per device (first 16 bytes) and areas that can change + * after the configuration zone has been locked (e.g. LastKeyUse). + * + * \param[in] config_data Full configuration data to compare the device + * against. + * \param[out] same_config Result is returned here. True if the static portions + * on the configuration zones are the same. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_cmp_config_zone(uint8_t* config_data, bool* same_config) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + uint8_t device_config_data[ATCA_ECC_CONFIG_SIZE]; /** Max for all configs */ + size_t config_size = 0; + + do + { + // Check the inputs + if ((config_data == NULL) || (same_config == NULL)) + { + status = ATCA_BAD_PARAM; + BREAK(status, "Invalid Parameters"); + } + // Set the boolean to false + *same_config = false; + + // Read all of the configuration bytes from the device + if ((status = atcab_read_config_zone(device_config_data)) != ATCA_SUCCESS) + { + BREAK(status, "Read config zone failed"); + } + + /* Get the config size of the device being tested */ + if (ATCA_SUCCESS != (status = atcab_get_zone_size(ATCA_ZONE_CONFIG, 0, &config_size))) + { + BREAK(status, "Failed to get config zone size"); + } + + /* Compare the lower writable bytes (16-51) */ + if (memcmp(&device_config_data[16], &config_data[16], 52 - 16)) + { + /* Difference found */ + break; + } + + if (_gDevice->mIface->mIfaceCFG->devtype == ATECC608A) + { + /* Skip Counter[0], Counter[1], which can change during operation */ + + /* Compare UseLock through Reserved (68 --> 83) */ + if (memcmp(&device_config_data[68], &config_data[68], 84 - 68)) + { + /* Difference found */ + break; + } + + /* Skip UserExtra, UserExtraAdd, LockValue, LockConfig, and SlotLocked */ + + } + else + { + /* Skip the counter & LastKeyUse bytes [52-83] */ + /* Skip User Extra & Selector [84-85] */ + /* Skip all lock bytes [86-89] */ + } + + if (90 < config_size) + { + /* Compare the upper writable bytes (90-config_size) */ + if (memcmp(&device_config_data[90], &config_data[90], config_size - 90)) + { + /* Difference found */ + break; + } + } + + /* All Matched */ + *same_config = true; + } + while (0); + + return status; +} + + +/** \brief Executes Read command to read a 64 byte ECDSA P256 signature from a + * slot configured for clear reads. + * + * \param[in] slot Slot number to read from. Only slots 8 to 15 are large + * enough for a signature. + * \param[out] sig Signature will be returned here (64 bytes). Format will be + * the 32 byte R and S big-endian integers concatenated. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_read_sig(uint16_t slot, uint8_t* sig) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + + do + { + // Check the value of the slot + if (sig == NULL || slot < 8 || slot > 15) + { + return ATCA_BAD_PARAM; + } + + // Read the first block + if ((status = atcab_read_zone(ATCA_ZONE_DATA, slot, 0, 0, &sig[0], ATCA_BLOCK_SIZE)) != ATCA_SUCCESS) + { + break; + } + + // Read the second block + if ((status = atcab_read_zone(ATCA_ZONE_DATA, slot, 1, 0, &sig[ATCA_BLOCK_SIZE], ATCA_BLOCK_SIZE)) != ATCA_SUCCESS) + { + break; + } + } + while (0); + + return status; +} + +/** \brief Executes Read command to read an ECC P256 public key from a slot + * configured for clear reads. + * + * This function assumes the public key is stored using the ECC public key + * format specified in the datasheet. + * + * \param[in] slot Slot number to read from. Only slots 8 to 15 are + * large enough for a public key. + * \param[out] public_key Public key is returned here (64 bytes). Format will + * be the 32 byte X and Y big-endian integers + * concatenated. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_read_pubkey(uint16_t slot, uint8_t *public_key) +{ + ATCA_STATUS ret = ATCA_GEN_FAIL; + uint8_t read_buf[ATCA_BLOCK_SIZE]; + uint8_t block = 0; + uint8_t offset = 0; + uint8_t cpy_index = 0; + uint8_t cpy_size = 0; + uint8_t read_index = 0; + + // Check the pointers + if (public_key == NULL) + { + return ATCA_BAD_PARAM; + } + // Check the value of the slot + if (slot < 8 || slot > 0xF) + { + return ATCA_BAD_PARAM; + } + + do + { + // The 64 byte P256 public key gets written to a 72 byte slot in the following pattern + // | Block 1 | Block 2 | Block 3 | + // | Pad: 4 Bytes | PubKey[0:27] | PubKey[28:31] | Pad: 4 Bytes | PubKey[32:55] | PubKey[56:63] | + + // Read the block + block = 0; + if ((ret = atcab_read_zone(ATCA_ZONE_DATA, slot, block, offset, read_buf, ATCA_BLOCK_SIZE)) != ATCA_SUCCESS) + { + break; + } + + // Copy. Account for 4 byte pad + cpy_size = ATCA_BLOCK_SIZE - ATCA_PUB_KEY_PAD; + read_index = ATCA_PUB_KEY_PAD; + memcpy(&public_key[cpy_index], &read_buf[read_index], cpy_size); + cpy_index += cpy_size; + + // Read the next block + block = 1; + if ((ret = atcab_read_zone(ATCA_ZONE_DATA, slot, block, offset, read_buf, ATCA_BLOCK_SIZE)) != ATCA_SUCCESS) + { + break; + } + + // Copy. First four bytes + cpy_size = ATCA_PUB_KEY_PAD; + read_index = 0; + memcpy(&public_key[cpy_index], &read_buf[read_index], cpy_size); + cpy_index += cpy_size; + // Copy. Skip four bytes + read_index = ATCA_PUB_KEY_PAD + ATCA_PUB_KEY_PAD; + cpy_size = ATCA_BLOCK_SIZE - read_index; + memcpy(&public_key[cpy_index], &read_buf[read_index], cpy_size); + cpy_index += cpy_size; + + // Read the next block + block = 2; + if ((ret = atcab_read_zone(ATCA_ZONE_DATA, slot, block, offset, read_buf, ATCA_BLOCK_SIZE)) != ATCA_SUCCESS) + { + break; + } + + // Copy. The remaining 8 bytes + cpy_size = ATCA_PUB_KEY_PAD + ATCA_PUB_KEY_PAD; + read_index = 0; + memcpy(&public_key[cpy_index], &read_buf[read_index], cpy_size); + + } + while (0); + + return ret; +} + +/** \brief Used to read an arbitrary number of bytes from any zone configured + * for clear reads. + * + * This function will issue the Read command as many times as is required to + * read the requested data. + * + * \param[in] zone Zone to read data from. Option are ATCA_ZONE_CONFIG(0), + * ATCA_ZONE_OTP(1), or ATCA_ZONE_DATA(2). + * \param[in] slot Slot number to read from if zone is ATCA_ZONE_DATA(2). + * Ignored for all other zones. + * \param[in] offset Byte offset within the zone to read from. + * \param[out] data Read data is returned here. + * \param[in] length Number of bytes to read starting from the offset. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_read_bytes_zone(uint8_t zone, uint16_t slot, size_t offset, uint8_t *data, size_t length) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + size_t zone_size = 0; + uint8_t read_buf[32]; + size_t data_idx = 0; + size_t cur_block = 0; + size_t cur_offset = 0; + uint8_t read_size = ATCA_BLOCK_SIZE; + size_t read_buf_idx = 0; + size_t copy_length = 0; + size_t read_offset = 0; + + if (zone != ATCA_ZONE_CONFIG && zone != ATCA_ZONE_OTP && zone != ATCA_ZONE_DATA) + { + return ATCA_BAD_PARAM; + } + if (zone == ATCA_ZONE_DATA && slot > 15) + { + return ATCA_BAD_PARAM; + } + if (length == 0) + { + return ATCA_SUCCESS; // Always succeed reading 0 bytes + } + if (data == NULL) + { + return ATCA_BAD_PARAM; + } + + do + { + status = atcab_get_zone_size(zone, slot, &zone_size); + if (status != ATCA_SUCCESS) + { + break; + } + if (offset + length > zone_size) + { + return ATCA_BAD_PARAM; // Can't read past the end of a zone + + } + cur_block = offset / ATCA_BLOCK_SIZE; + + while (data_idx < length) + { + if (read_size == ATCA_BLOCK_SIZE && zone_size - cur_block * ATCA_BLOCK_SIZE < ATCA_BLOCK_SIZE) + { + // We have less than a block to read and can't read past the end of the zone, switch to word reads + read_size = ATCA_WORD_SIZE; + cur_offset = ((data_idx + offset) / ATCA_WORD_SIZE) % (ATCA_BLOCK_SIZE / ATCA_WORD_SIZE); + } + + // Read next chunk of data + status = atcab_read_zone( + zone, + slot, + (uint8_t)cur_block, + (uint8_t)cur_offset, + read_buf, + read_size); + if (status != ATCA_SUCCESS) + { + break; + } + + // Calculate where in the read buffer we need data from + read_offset = cur_block * ATCA_BLOCK_SIZE + cur_offset * ATCA_WORD_SIZE; + if (read_offset < offset) + { + read_buf_idx = offset - read_offset; // Read data starts before the requested chunk + } + else + { + read_buf_idx = 0; // Read data is within the requested chunk + + } + // Calculate how much data from the read buffer we want to copy + if (length - data_idx < read_size - read_buf_idx) + { + copy_length = length - data_idx; + } + else + { + copy_length = read_size - read_buf_idx; + } + + memcpy(&data[data_idx], &read_buf[read_buf_idx], copy_length); + data_idx += copy_length; + if (read_size == ATCA_BLOCK_SIZE) + { + cur_block += 1; + } + else + { + cur_offset += 1; + } + } + if (status != ATCA_SUCCESS) + { + break; + } + } + while (false); + + return status; +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.c new file mode 100644 index 0000000..5eb1668 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.c @@ -0,0 +1,221 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for SecureBoot command. + * + * The SecureBoot command provides support for secure boot of an external MCU + * or MPU. + * + * \note List of devices that support this command - ATECC608A. Refer to device + * datasheet for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#include "atca_basic.h" +#include "atca_execution.h" +#include "host/atca_host.h" + +/** \brief Executes Secure Boot command, which provides support for secure + * boot of an external MCU or MPU. + * + * \param[in] mode Mode determines what operations the SecureBoot + * command performs. + * \param[in] param2 Not used, must be 0. + * \param[in] digest Digest of the code to be verified (32 bytes). + * \param[in] signature Signature of the code to be verified (64 bytes). Can + * be NULL when using the FullStore mode. + * \param[out] mac Validating MAC will be returned here (32 bytes). Can + * be NULL if not required. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_secureboot(uint8_t mode, uint16_t param2, const uint8_t* digest, const uint8_t* signature, uint8_t* mac) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + + if (digest == NULL) + { + return ATCA_BAD_PARAM; + } + + do + { + packet.param1 = mode; + packet.param2 = param2; + + memcpy(packet.data, digest, SECUREBOOT_DIGEST_SIZE); + + if (signature) + { + memcpy(&packet.data[SECUREBOOT_DIGEST_SIZE], signature, SECUREBOOT_SIGNATURE_SIZE); + } + + if ((status = atSecureBoot(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + if ((mac != NULL) && (packet.data[ATCA_COUNT_IDX] >= SECUREBOOT_RSP_SIZE_MAC)) + { + memcpy(mac, &packet.data[ATCA_RSP_DATA_IDX], SECUREBOOT_MAC_SIZE); + } + + } + while (0); + + return status; +} + +/** \brief Executes Secure Boot command with encrypted digest and validated + * MAC response using the IO protection key. + * + * \param[in] mode Mode determines what operations the SecureBoot + * command performs. + * \param[in] digest Digest of the code to be verified (32 bytes). + * This is the plaintext digest (not encrypted). + * \param[in] signature Signature of the code to be verified (64 bytes). Can + * be NULL when using the FullStore mode. + * \param[in] num_in Host nonce (20 bytes). + * \param[in] io_key IO protection key (32 bytes). + * \param[out] is_verified Verify result is returned here. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_secureboot_mac(uint8_t mode, const uint8_t* digest, const uint8_t* signature, const uint8_t* num_in, const uint8_t* io_key, bool* is_verified) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + atca_temp_key_t tempkey; + atca_nonce_in_out_t nonce_params; + atca_secureboot_enc_in_out_t sboot_enc_params; + atca_secureboot_mac_in_out_t sboot_mac_params; + uint8_t rand_out[RANDOM_NUM_SIZE]; + uint8_t key[ATCA_KEY_SIZE]; + uint8_t digest_enc[SECUREBOOT_DIGEST_SIZE]; + uint8_t mac[SECUREBOOT_MAC_SIZE]; + uint8_t host_mac[SECUREBOOT_MAC_SIZE]; + uint8_t buf[2]; + + do + { + if (is_verified == NULL) + { + return ATCA_BAD_PARAM; + } + + *is_verified = false; + + if (digest == NULL || num_in == NULL || io_key == NULL) + { + return ATCA_BAD_PARAM; + } + + // Setup Nonce command to create nonce combining host (num_in) and + // device (RNG) nonces + memset(&tempkey, 0, sizeof(tempkey)); + memset(&nonce_params, 0, sizeof(nonce_params)); + nonce_params.mode = NONCE_MODE_SEED_UPDATE; + nonce_params.zero = 0; + nonce_params.num_in = num_in; + nonce_params.rand_out = rand_out; + nonce_params.temp_key = &tempkey; + + // Initialize TempKey with nonce + status = atcab_nonce_base(nonce_params.mode, nonce_params.zero, nonce_params.num_in, rand_out); + if (status != ATCA_SUCCESS) + { + break; + } + + // Calculate nonce (TempKey) value + status = atcah_nonce(&nonce_params); + if (status != ATCA_SUCCESS) + { + break; + } + + // Encrypt the digest + memset(&sboot_enc_params, 0, sizeof(sboot_enc_params)); + sboot_enc_params.digest = digest; + sboot_enc_params.io_key = io_key; + sboot_enc_params.temp_key = &tempkey; + sboot_enc_params.hashed_key = key; + sboot_enc_params.digest_enc = digest_enc; + status = atcah_secureboot_enc(&sboot_enc_params); + if (status != ATCA_SUCCESS) + { + break; + } + + // Prepare MAC calculator + memset(&sboot_mac_params, 0, sizeof(sboot_mac_params)); + sboot_mac_params.mode = mode | SECUREBOOT_MODE_ENC_MAC_FLAG; + sboot_mac_params.param2 = 0; + sboot_mac_params.hashed_key = sboot_enc_params.hashed_key; + sboot_mac_params.digest = digest; + sboot_mac_params.signature = signature; + sboot_mac_params.mac = host_mac; + + // Run the SecureBoot command + status = atcab_secureboot(sboot_mac_params.mode, sboot_mac_params.param2, digest_enc, signature, mac); + if (status == ATCA_CHECKMAC_VERIFY_FAILED) + { + // Verify failed + *is_verified = false; + status = ATCA_SUCCESS; // Still consider this a command success + break; + } + if (status != ATCA_SUCCESS) + { + break; + } + + // Read the SecureBootConfig field out of the configuration zone, which + // is required to properly calculate the expected MAC + status = atcab_read_bytes_zone(ATCA_ZONE_CONFIG, 0, SECUREBOOTCONFIG_OFFSET, buf, 2); + if (status != ATCA_SUCCESS) + { + break; + } + sboot_mac_params.secure_boot_config = (uint16_t)buf[0] | ((uint16_t)buf[1] << 8); + + // Calculate the expected MAC + status = atcah_secureboot_mac(&sboot_mac_params); + if (status != ATCA_SUCCESS) + { + break; + } + + *is_verified = (memcmp(host_mac, mac, SECUREBOOT_MAC_SIZE) == 0); + } + while (0); + + return status; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.c new file mode 100644 index 0000000..01cd105 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.c @@ -0,0 +1,102 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for SelfTest command. + * + * The SelfTest command performs a test of one or more of the cryptographic + * engines within the device. + * + * \note List of devices that support this command - ATECC608A. Refer to device + * datasheet for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "atca_basic.h" +#include "atca_execution.h" + +/** \brief Executes the SelfTest command, which performs a test of one or more + * of the cryptographic engines within the ATECC608A chip. + * + * \param[in] mode Functions to test. Can be a bit field combining any + * of the following: SELFTEST_MODE_RNG, + * SELFTEST_MODE_ECDSA_VERIFY, SELFTEST_MODE_ECDSA_SIGN, + * SELFTEST_MODE_ECDH, SELFTEST_MODE_AES, + * SELFTEST_MODE_SHA, SELFTEST_MODE_ALL. + * \param[in] param2 Currently unused, should be 0. + * \param[out] result Results are returned here as a bit field. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_selftest(uint8_t mode, uint16_t param2, uint8_t* result) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + uint8_t response = 0; + + do + { + // build a SelfTest command + packet.param1 = mode; + packet.param2 = param2; + + if ((status = atSelfTest(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + status = atca_execute_command(&packet, _gDevice); + + // This command is a little awkward, because it returns its status as + // a single byte, which can be hard to differentiate from an actual + // error code. + + response = packet.data[ATCA_RSP_DATA_IDX]; + + if (response & !mode) + { + // The response has bits set outside of the bit field requested by + // the mode. This indicates an actual error rather than a self test + // failure. + return status; // Return the translated status. + } + else + { + // Here, we have the possibility of ambiguous results, where some + // error codes can't be differentiated from self test failures. + // We assume self-test failures. + if (result) + { + *result = response; + } + + // Self tests might have failed, but we returned success because + // the results are returned in result. + return ATCA_SUCCESS; + } + } + while (0); + + return status; +} + diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.c new file mode 100644 index 0000000..972a166 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.c @@ -0,0 +1,508 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for SHA command. + * + * The SHA command Computes a SHA-256 or HMAC/SHA digest for general purpose + * use by the host system. + * + * \note List of devices that support this command - ATSHA204A, ATECC108A, + * ATECC508A, and ATECC608A. There are differences in the modes that they + * support. Refer to device datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#include "atca_basic.h" +#include "atca_execution.h" + +typedef struct +{ + uint32_t total_msg_size; //!< Total number of message bytes processed + uint32_t block_size; //!< Number of bytes in current block + uint8_t block[ATCA_SHA256_BLOCK_SIZE * 2]; //!< Unprocessed message storage +} hw_sha256_ctx; + +/** \brief Executes SHA command, which computes a SHA-256 or HMAC/SHA-256 + * digest for general purpose use by the host system. + * + * Only the Start(0) and Compute(1) modes are available for ATSHA devices. + * + * \param[in] mode SHA command mode Start(0), Update/Compute(1), + * End(2), Public(3), HMACstart(4), HMACend(5), + * Read_Context(6), or Write_Context(7). Also + * message digest target location for the + * ATECC608A. + * \param[in] length Number of bytes in the message parameter or + * KeySlot for the HMAC key if Mode is + * HMACstart(4) or Public(3). + * \param[in] message Message bytes to be hashed or Write_Context if + * restoring a context on the ATECC608A. Can be + * NULL if not required by the mode. + * \param[out] data_out Data returned by the command (digest or + * context). + * \param[inout] data_out_size As input, the size of the data_out buffer. As + * output, the number of bytes returned in + * data_out. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_sha_base(uint8_t mode, uint16_t length, const uint8_t* message, uint8_t* data_out, uint16_t* data_out_size) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + uint8_t cmd_mode = (mode & SHA_MODE_MASK); + + if (cmd_mode != SHA_MODE_SHA256_PUBLIC && cmd_mode != SHA_MODE_HMAC_START && length > 0 && message == NULL) + { + return ATCA_BAD_PARAM; // message data indicated, but nothing provided + } + if (data_out != NULL && data_out_size == NULL) + { + return ATCA_BAD_PARAM; + } + + do + { + //Build Command + packet.param1 = mode; + packet.param2 = length; + + if (cmd_mode != SHA_MODE_SHA256_PUBLIC && cmd_mode != SHA_MODE_HMAC_START) + { + memcpy(packet.data, message, length); + } + + if ((status = atSHA(ca_cmd, &packet, length)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + if ((data_out != NULL) && (packet.data[ATCA_COUNT_IDX] > 4)) + { + if (packet.data[ATCA_COUNT_IDX] - ATCA_PACKET_OVERHEAD > *data_out_size) + { + status = ATCA_SMALL_BUFFER; + break; + } + *data_out_size = packet.data[ATCA_COUNT_IDX] - ATCA_PACKET_OVERHEAD; + memcpy(data_out, &packet.data[ATCA_RSP_DATA_IDX], *data_out_size); + } + } + while (0); + + return status; +} + +/** \brief Executes SHA command to initialize SHA-256 calculation engine + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_sha_start(void) +{ + return atcab_sha_base(SHA_MODE_SHA256_START, 0, NULL, NULL, NULL); +} + +/** \brief Executes SHA command to add 64 bytes of message data to the current + * context. + * + * \param[in] message 64 bytes of message data to add to add to operation. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_sha_update(const uint8_t *message) +{ + return atcab_sha_base(SHA_MODE_SHA256_UPDATE, 64, message, NULL, NULL); +} + +/** \brief Executes SHA command to complete SHA-256 or HMAC/SHA-256 operation. + * + * \param[out] digest Digest from SHA-256 or HMAC/SHA-256 will be returned + * here (32 bytes). + * \param[in] length Length of any remaining data to include in hash. Max 64 + * bytes. + * \param[in] message Remaining data to include in hash. NULL if length is 0. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_sha_end(uint8_t *digest, uint16_t length, const uint8_t *message) +{ + uint16_t digest_size = 32; + + return atcab_sha_base(SHA_MODE_SHA256_END, length, message, digest, &digest_size); +} + +/** \brief Executes SHA command to read the SHA-256 context back. Only for + * ATECC608A with SHA-256 contexts. HMAC not supported. + * + * \param[out] context Context data is returned here. + * \param[inout] context_size As input, the size of the context buffer in + * bytes. As output, the size of the returned + * context data. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_sha_read_context(uint8_t* context, uint16_t* context_size) +{ + return atcab_sha_base(SHA_MODE_READ_CONTEXT, 0, NULL, context, context_size); +} + +/** \brief Executes SHA command to write (restore) a SHA-256 context into the + * the device. Only supported for ATECC608A with SHA-256 contexts. + * + * \param[in] context Context data to be restored. + * \param[in] context_size Size of the context data in bytes. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_sha_write_context(const uint8_t* context, uint16_t context_size) +{ + return atcab_sha_base(SHA_MODE_WRITE_CONTEXT, context_size, context, NULL, NULL); +} + +/** \brief Use the SHA command to compute a SHA-256 digest. + * + * \param[in] length Size of message parameter in bytes. + * \param[in] message Message data to be hashed. + * \param[out] digest Digest is returned here (32 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_sha(uint16_t length, const uint8_t *message, uint8_t *digest) +{ + return atcab_hw_sha2_256(message, length, digest); +} + +/** \brief Initialize a SHA context for performing a hardware SHA-256 operation + * on a device. Note that only one SHA operation can be run at a time. + * + * \param[in] ctx SHA256 context + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_hw_sha2_256_init(atca_sha256_ctx_t* ctx) +{ + memset(ctx, 0, sizeof(*ctx)); + return atcab_sha_start(); +} + +/** \brief Add message data to a SHA context for performing a hardware SHA-256 + * operation on a device. + * + * \param[in] ctx SHA256 context + * \param[in] data Message data to be added to hash. + * \param[in] data_size Size of data in bytes. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_hw_sha2_256_update(atca_sha256_ctx_t* ctx, const uint8_t* data, size_t data_size) +{ + ATCA_STATUS status = ATCA_SUCCESS; + uint32_t block_count; + uint32_t rem_size = ATCA_SHA256_BLOCK_SIZE - ctx->block_size; + uint32_t copy_size = data_size > rem_size ? rem_size : (uint32_t)data_size; + uint32_t i = 0; + + // Copy data into current block + memcpy(&ctx->block[ctx->block_size], data, copy_size); + + if (ctx->block_size + data_size < ATCA_SHA256_BLOCK_SIZE) + { + // Not enough data to finish off the current block + ctx->block_size += (uint32_t)data_size; + return ATCA_SUCCESS; + } + + // Process the current block + status = atcab_sha_update(ctx->block); + if (status != ATCA_SUCCESS) + { + return status; + } + + // Process any additional blocks + data_size -= copy_size; // Adjust to the remaining message bytes + block_count = (uint32_t)(data_size / ATCA_SHA256_BLOCK_SIZE); + for (i = 0; i < block_count; i++) + { + status = atcab_sha_update(&data[copy_size + i * ATCA_SHA256_BLOCK_SIZE]); + if (status != ATCA_SUCCESS) + { + return status; + } + } + + // Save any remaining data + ctx->total_msg_size += (block_count + 1) * ATCA_SHA256_BLOCK_SIZE; + ctx->block_size = data_size % ATCA_SHA256_BLOCK_SIZE; + memcpy(ctx->block, &data[copy_size + block_count * ATCA_SHA256_BLOCK_SIZE], ctx->block_size); + + return ATCA_SUCCESS; +} + +/** \brief Finish SHA-256 digest for a SHA context for performing a hardware + * SHA-256 operation on a device. + * + * \param[in] ctx SHA256 context + * \param[out] digest SHA256 digest is returned here (32 bytes) + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_hw_sha2_256_finish(atca_sha256_ctx_t* ctx, uint8_t* digest) +{ + ATCA_STATUS status = ATCA_SUCCESS; + uint32_t msg_size_bits; + uint32_t pad_zero_count; + uint16_t digest_size; + + if (_gDevice->mIface->mIfaceCFG->devtype == ATSHA204A) + { + // ATSHA204A only implements the raw 64-byte block operation, but + // doesn't add in the final footer information. So we do that manually + // here. + + // Calculate the total message size in bits + ctx->total_msg_size += ctx->block_size; + msg_size_bits = ctx->total_msg_size * 8; + + // Calculate the number of padding zero bytes required between the 1 bit byte and the ATCA_SHA256_BLOCK_SIZEbit message size in bits. + pad_zero_count = (ATCA_SHA256_BLOCK_SIZE - ((ctx->block_size + 9) % ATCA_SHA256_BLOCK_SIZE)) % ATCA_SHA256_BLOCK_SIZE; + + // Append a single 1 bit + ctx->block[ctx->block_size++] = 0x80; + + // Add padding zeros plus upper 4 bytes of total message size in bits (only supporting 32bit message bit counts) + memset(&ctx->block[ctx->block_size], 0, pad_zero_count + 4); + ctx->block_size += pad_zero_count + 4; + + // Add the total message size in bits to the end of the current block. Technically this is + // supposed to be 8 bytes. This shortcut will reduce the max message size to 536,870,911 bytes. + ctx->block[ctx->block_size++] = (uint8_t)(msg_size_bits >> 24); + ctx->block[ctx->block_size++] = (uint8_t)(msg_size_bits >> 16); + ctx->block[ctx->block_size++] = (uint8_t)(msg_size_bits >> 8); + ctx->block[ctx->block_size++] = (uint8_t)(msg_size_bits >> 0); + + digest_size = 32; + status = atcab_sha_base(SHA_MODE_SHA256_UPDATE, ATCA_SHA256_BLOCK_SIZE, ctx->block, digest, &digest_size); + if (status != ATCA_SUCCESS) + { + return status; + } + if (ctx->block_size > ATCA_SHA256_BLOCK_SIZE) + { + digest_size = 32; + status = atcab_sha_base(SHA_MODE_SHA256_UPDATE, ATCA_SHA256_BLOCK_SIZE, &ctx->block[ATCA_SHA256_BLOCK_SIZE], digest, &digest_size); + if (status != ATCA_SUCCESS) + { + return status; + } + } + } + else + { + status = atcab_sha_end(digest, ctx->block_size, ctx->block); + if (status != ATCA_SUCCESS) + { + return status; + } + } + + return ATCA_SUCCESS; +} + +/** \brief Use the SHA command to compute a SHA-256 digest. + * + * \param[in] data Message data to be hashed. + * \param[in] data_size Size of data in bytes. + * \param[out] digest Digest is returned here (32 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_hw_sha2_256(const uint8_t * data, size_t data_size, uint8_t* digest) +{ + ATCA_STATUS status = ATCA_SUCCESS; + atca_sha256_ctx_t ctx; + + status = atcab_hw_sha2_256_init(&ctx); + if (status != ATCA_SUCCESS) + { + return status; + } + + status = atcab_hw_sha2_256_update(&ctx, data, data_size); + if (status != ATCA_SUCCESS) + { + return status; + } + + status = atcab_hw_sha2_256_finish(&ctx, digest); + if (status != ATCA_SUCCESS) + { + return status; + } + + return ATCA_SUCCESS; +} + +/** \brief Executes SHA command to start an HMAC/SHA-256 operation + * + * \param[in] ctx HMAC/SHA-256 context + * \param[in] key_slot Slot key id to use for the HMAC calculation + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_sha_hmac_init(atca_hmac_sha256_ctx_t* ctx, uint16_t key_slot) +{ + memset(ctx, 0, sizeof(*ctx)); + return atcab_sha_base(SHA_MODE_HMAC_START, key_slot, NULL, NULL, NULL); +} + +/** \brief Executes SHA command to add an arbitrary amount of message data to + * a HMAC/SHA-256 operation. + * + * \param[in] ctx HMAC/SHA-256 context + * \param[in] data Message data to add + * \param[in] data_size Size of message data in bytes + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_sha_hmac_update(atca_hmac_sha256_ctx_t* ctx, const uint8_t* data, size_t data_size) +{ + ATCA_STATUS status = ATCA_SUCCESS; + uint32_t block_count; + uint32_t rem_size = ATCA_SHA256_BLOCK_SIZE - ctx->block_size; + uint32_t copy_size = data_size > rem_size ? rem_size : (uint32_t)data_size; + uint32_t i = 0; + + // Copy data into current block + memcpy(&ctx->block[ctx->block_size], data, copy_size); + + if (ctx->block_size + data_size < ATCA_SHA256_BLOCK_SIZE) + { + // Not enough data to finish off the current block + ctx->block_size += (uint32_t)data_size; + return ATCA_SUCCESS; + } + + // Process the current block + status = atcab_sha_base(SHA_MODE_HMAC_UPDATE, ATCA_SHA256_BLOCK_SIZE, ctx->block, NULL, NULL); + if (status != ATCA_SUCCESS) + { + return status; + } + + // Process any additional blocks + data_size -= copy_size; // Adjust to the remaining message bytes + block_count = (uint32_t)(data_size / ATCA_SHA256_BLOCK_SIZE); + for (i = 0; i < block_count; i++) + { + status = atcab_sha_base(SHA_MODE_HMAC_UPDATE, ATCA_SHA256_BLOCK_SIZE, &data[copy_size + i * ATCA_SHA256_BLOCK_SIZE], NULL, NULL); + if (status != ATCA_SUCCESS) + { + return status; + } + } + + // Save any remaining data + ctx->total_msg_size += (block_count + 1) * ATCA_SHA256_BLOCK_SIZE; + ctx->block_size = data_size % ATCA_SHA256_BLOCK_SIZE; + memcpy(ctx->block, &data[copy_size + block_count * ATCA_SHA256_BLOCK_SIZE], ctx->block_size); + + return ATCA_SUCCESS; +} + +/** \brief Executes SHA command to complete a HMAC/SHA-256 operation. + * + * \param[in] ctx HMAC/SHA-256 context + * \param[out] digest HMAC/SHA-256 result is returned here (32 bytes). + * \param[in] target Where to save the digest internal to the device. + * For ATECC608A, can be SHA_MODE_TARGET_TEMPKEY, + * SHA_MODE_TARGET_MSGDIGBUF, or SHA_MODE_TARGET_OUT_ONLY. + * For all other devices, SHA_MODE_TARGET_TEMPKEY is the + * only option. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_sha_hmac_finish(atca_hmac_sha256_ctx_t *ctx, uint8_t* digest, uint8_t target) +{ + uint8_t mode = SHA_MODE_HMAC_END; + uint16_t digest_size = 32; + + if (ATECC608A == _gDevice->mIface->mIfaceCFG->devtype) + { + mode = SHA_MODE_608_HMAC_END; + } + else if (target != SHA_MODE_TARGET_TEMPKEY) + { + return ATCA_BAD_PARAM; + } + + mode |= target; + + return atcab_sha_base(mode, ctx->block_size, ctx->block, digest, &digest_size); +} + +/** \brief Use the SHA command to compute an HMAC/SHA-256 operation. + * + * \param[in] data Message data to be hashed. + * \param[in] data_size Size of data in bytes. + * \param[in] key_slot Slot key id to use for the HMAC calculation + * \param[out] digest Digest is returned here (32 bytes). + * \param[in] target Where to save the digest internal to the device. + * For ATECC608A, can be SHA_MODE_TARGET_TEMPKEY, + * SHA_MODE_TARGET_MSGDIGBUF, or + * SHA_MODE_TARGET_OUT_ONLY. For all other devices, + * SHA_MODE_TARGET_TEMPKEY is the only option. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_sha_hmac(const uint8_t * data, size_t data_size, uint16_t key_slot, uint8_t* digest, uint8_t target) +{ + ATCA_STATUS status = ATCA_SUCCESS; + atca_hmac_sha256_ctx_t ctx; + + status = atcab_sha_hmac_init(&ctx, key_slot); + if (status != ATCA_SUCCESS) + { + return status; + } + + status = atcab_sha_hmac_update(&ctx, data, data_size); + if (status != ATCA_SUCCESS) + { + return status; + } + + status = atcab_sha_hmac_finish(&ctx, digest, target); + if (status != ATCA_SUCCESS) + { + return status; + } + + return ATCA_SUCCESS; +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.c new file mode 100644 index 0000000..914e7fc --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.c @@ -0,0 +1,181 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for Sign command. + * + * The Sign command generates a signature using the private key in slot with + * ECDSA algorithm. + * + * \note List of devices that support this command - ATECC108A, ATECC508A, and + * ATECC608A. There are differences in the modes that they support. Refer + * to device datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "atca_basic.h" +#include "atca_execution.h" + +/** \brief Executes the Sign command, which generates a signature using the + * ECDSA algorithm. + * + * \param[in] mode Mode determines what the source of the message to be + * signed. + * \param[in] key_id Private key slot used to sign the message. + * \param[out] signature Signature is returned here. Format is R and S + * integers in big-endian format. 64 bytes for P256 + * curve. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_sign_base(uint8_t mode, uint16_t key_id, uint8_t *signature) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + + if (signature == NULL) + { + return ATCA_BAD_PARAM; + } + + do + { + // Build sign command + packet.param1 = mode; + packet.param2 = key_id; + if ((status = atSign(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + if (packet.data[ATCA_COUNT_IDX] > 4) + { + memcpy(signature, &packet.data[ATCA_RSP_DATA_IDX], packet.data[ATCA_COUNT_IDX] - ATCA_PACKET_OVERHEAD); + } + + } + while (0); + + return status; +} + +/** \brief Executes Sign command, to sign a 32-byte external message using the + * private key in the specified slot. The message to be signed + * will be loaded into the Message Digest Buffer to the + * ATECC608A device or TempKey for other devices. + * + * \param[in] key_id Slot of the private key to be used to sign the + * message. + * \param[in] msg 32-byte message to be signed. Typically the SHA256 + * hash of the full message. + * \param[out] signature Signature will be returned here. Format is R and S + * integers in big-endian format. 64 bytes for P256 + * curve. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_sign(uint16_t key_id, const uint8_t *msg, uint8_t *signature) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + uint8_t nonce_target = NONCE_MODE_TARGET_TEMPKEY; + uint8_t sign_source = SIGN_MODE_SOURCE_TEMPKEY; + + do + { + // Make sure RNG has updated its seed + if ((status = atcab_random(NULL)) != ATCA_SUCCESS) + { + break; + } + + // Load message into device + if (_gDevice->mCommands->dt == ATECC608A) + { + // Use the Message Digest Buffer for the ATECC608A + nonce_target = NONCE_MODE_TARGET_MSGDIGBUF; + sign_source = SIGN_MODE_SOURCE_MSGDIGBUF; + } + if ((status = atcab_nonce_load(nonce_target, msg, 32)) != ATCA_SUCCESS) + { + break; + } + + // Sign the message + if ((status = atcab_sign_base(SIGN_MODE_EXTERNAL | sign_source, key_id, signature)) != ATCA_SUCCESS) + { + break; + } + } + while (0); + + return status; +} + +/** \brief Executes Sign command to sign an internally generated message. + * + * \param[in] key_id Slot of the private key to be used to sign the + * message. + * \param[in] is_invalidate Set to true if the signature will be used with + * the Verify(Invalidate) command. false for all + * other cases. + * \param[in] is_full_sn Set to true if the message should incorporate + * the device's full serial number. + * \param[out] signature Signature is returned here. Format is R and S + * integers in big-endian format. 64 bytes for + * P256 curve. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_sign_internal(uint16_t key_id, bool is_invalidate, bool is_full_sn, uint8_t *signature) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + uint8_t mode = SIGN_MODE_INTERNAL; + + do + { + // Sign the message + if (is_invalidate) + { + mode |= SIGN_MODE_INVALIDATE; + } + + if (is_full_sn) + { + mode |= SIGN_MODE_INCLUDE_SN; + } + + if ((status = atcab_sign_base(mode, key_id, signature)) != ATCA_SUCCESS) + { + break; + } + + } + while (0); + + return status; +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.c new file mode 100644 index 0000000..2d70d8d --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.c @@ -0,0 +1,76 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for UpdateExtra command. + * + * The UpdateExtra command is used to update the values of the two extra bytes + * within the Configuration zone after the Configuration zone has been locked. + * + * \note List of devices that support this command - ATSHA204A, ATECC108A, + * ATECC508A, and ATECC608A. There are differences in the modes that they + * support. Refer to device datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ +#include "atca_basic.h" +#include "atca_execution.h" + +/** \brief Executes UpdateExtra command to update the values of the two + * extra bytes within the Configuration zone (bytes 84 and 85). + * + * Can also be used to decrement the limited use counter associated with the + * key in slot NewValue. + * + * \param[in] mode Mode determines what operations the UpdateExtra + * command performs. + * \param[in] new_value Value to be written. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_updateextra(uint8_t mode, uint16_t new_value) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + + do + { + // Build command + memset(&packet, 0, sizeof(packet)); + packet.param1 = mode; + packet.param2 = new_value; + + if ((status = atUpdateExtra(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + } + while (0); + + return status; +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.c new file mode 100644 index 0000000..b7f73da --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.c @@ -0,0 +1,495 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for Verify command. + * + * The Verify command takes an ECDSA [R,S] signature and verifies that it is + * correctly generated given an input message digest and public key. + * + * \note List of devices that support this command - ATECC108A, ATECC508A, and + * ATECC608A. There are differences in the modes that they support. Refer + * to device datasheet for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ +#include "atca_basic.h" +#include "atca_execution.h" +#include "host/atca_host.h" + + +/** \brief Executes the Verify command, which takes an ECDSA [R,S] signature + * and verifies that it is correctly generated from a given message and + * public key. In all cases, the signature is an input to the command. + * + * For the Stored, External, and ValidateExternal Modes, the contents of + * TempKey (or Message Digest Buffer in some cases for the ATECC608A) should + * contain the 32 byte message. + * + * \param[in] mode Verify command mode and options + * \param[in] key_id Stored mode, the slot containing the public key to + * be used for the verification. + * ValidateExternal mode, the slot containing the + * public key to be validated. + * External mode, KeyID contains the curve type to be + * used to Verify the signature. + * Validate or Invalidate mode, the slot containing + * the public key to be (in)validated. + * \param[in] signature Signature to be verified. R and S integers in + * big-endian format. 64 bytes for P256 curve. + * \param[in] public_key If mode is External, the public key to be used for + * verification. X and Y integers in big-endian format. + * 64 bytes for P256 curve. NULL for all other modes. + * \param[in] other_data If mode is Validate, the bytes used to generate the + * message for the validation (19 bytes). NULL for all + * other modes. + * \param[out] mac If mode indicates a validating MAC, then the MAC will + * will be returned here. Can be NULL otherwise. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_verify(uint8_t mode, uint16_t key_id, const uint8_t* signature, const uint8_t* public_key, const uint8_t* other_data, uint8_t* mac) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + uint8_t verify_mode = (mode & VERIFY_MODE_MASK); + + do + { + if (signature == NULL) + { + return ATCA_BAD_PARAM; + } + if (verify_mode == VERIFY_MODE_EXTERNAL && public_key == NULL) + { + return ATCA_BAD_PARAM; + } + if ((verify_mode == VERIFY_MODE_VALIDATE || verify_mode == VERIFY_MODE_INVALIDATE) && other_data == NULL) + { + return ATCA_BAD_PARAM; + } + + // Build the verify command + packet.param1 = mode; + packet.param2 = key_id; + memcpy(&packet.data[0], signature, ATCA_SIG_SIZE); + if (verify_mode == VERIFY_MODE_EXTERNAL) + { + memcpy(&packet.data[ATCA_SIG_SIZE], public_key, ATCA_PUB_KEY_SIZE); + } + else if (other_data) + { + memcpy(&packet.data[ATCA_SIG_SIZE], other_data, VERIFY_OTHER_DATA_SIZE); + } + + if ((status = atVerify(ca_cmd, &packet)) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + // The Verify command may return MAC if requested + if ((mac != NULL) && (packet.data[ATCA_COUNT_IDX] >= (ATCA_PACKET_OVERHEAD + MAC_SIZE))) + { + memcpy(mac, &packet.data[ATCA_RSP_DATA_IDX], MAC_SIZE); + } + + } + while (false); + + return status; +} + +/** \brief Executes the Verify command with verification MAC for the External + * or Stored Verify modes.. This function is only available on the + * ATECC608A. + * + * \param[in] mode Verify command mode. Can be VERIFY_MODE_EXTERNAL or + * VERIFY_MODE_STORED. + * \param[in] key_id For VERIFY_MODE_STORED mode, the slot containing the + * public key to be used for the verification. + * For VERIFY_MODE_EXTERNAL mode, KeyID contains the + * curve type to be used to Verify the signature. Only + * VERIFY_KEY_P256 supported. + * \param[in] message 32 byte message to be verified. Typically + * the SHA256 hash of the full message. + * \param[in] signature Signature to be verified. R and S integers in + * big-endian format. 64 bytes for P256 curve. + * \param[in] public_key For VERIFY_MODE_EXTERNAL mode, the public key to be + * used for verification. X and Y integers in + * big-endian format. 64 bytes for P256 curve. Null for + * VERIFY_MODE_STORED mode. + * \param[in] num_in System nonce (32 byte) used for the verification + * MAC. + * \param[in] io_key IO protection key for verifying the validation MAC. + * \param[out] is_verified Boolean whether or not the message, signature, + * public key verified. + * + * \return ATCA_SUCCESS on verification success or failure, because the + * command still completed successfully. + */ +static ATCA_STATUS atcab_verify_extern_stored_mac( + uint8_t mode, + uint16_t key_id, + const uint8_t* message, + const uint8_t* signature, + const uint8_t* public_key, + const uint8_t* num_in, + const uint8_t* io_key, + bool* is_verified) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + uint8_t msg_dig_buf[64]; + atca_verify_mac_in_out_t verify_mac_params; + uint8_t mac[SECUREBOOT_MAC_SIZE]; + uint8_t host_mac[SECUREBOOT_MAC_SIZE]; + + do + { + if (is_verified == NULL) + { + return ATCA_BAD_PARAM; + } + *is_verified = false; + if (signature == NULL || message == NULL || num_in == NULL || io_key == NULL) + { + return ATCA_BAD_PARAM; + } + if ((mode & VERIFY_MODE_MASK) == VERIFY_MODE_EXTERNAL && public_key == NULL) + { + return ATCA_BAD_PARAM; // Only External mode requires an external public key + + } + // When using the message digest buffer as the message source, the + // second 32 bytes in the buffer will be the MAC system nonce. + memcpy(&msg_dig_buf[0], message, 32); + memcpy(&msg_dig_buf[32], num_in, 32); + if ((status = atcab_nonce_load(NONCE_MODE_TARGET_MSGDIGBUF, msg_dig_buf, 64)) != ATCA_SUCCESS) + { + break; + } + + // Calculate the expected MAC + memset(&verify_mac_params, 0, sizeof(verify_mac_params)); + verify_mac_params.mode = mode | VERIFY_MODE_SOURCE_MSGDIGBUF | VERIFY_MODE_MAC_FLAG; + verify_mac_params.key_id = key_id; + verify_mac_params.signature = signature; + verify_mac_params.msg_dig_buf = msg_dig_buf; + verify_mac_params.io_key = io_key; + verify_mac_params.temp_key = NULL; + verify_mac_params.sn = NULL; + verify_mac_params.mac = host_mac; + status = atcah_verify_mac(&verify_mac_params); + if (status != ATCA_SUCCESS) + { + break; + } + + status = atcab_verify(verify_mac_params.mode, verify_mac_params.key_id, signature, public_key, NULL, mac); + if (status != ATCA_SUCCESS) + { + if (status == ATCA_CHECKMAC_VERIFY_FAILED) + { + status = ATCA_SUCCESS; // Verify failed, but command succeeded + } + break; + } + + *is_verified = (memcmp(host_mac, mac, MAC_SIZE) == 0); + } + while (0); + + return status; +} + +/** \brief Executes the Verify command, which verifies a signature (ECDSA + * verify operation) with all components (message, signature, and + * public key) supplied. The message to be signed will be loaded into + * the Message Digest Buffer to the ATECC608A device or TempKey for + * other devices. + * + * \param[in] message 32 byte message to be verified. Typically + * the SHA256 hash of the full message. + * \param[in] signature Signature to be verified. R and S integers in + * big-endian format. 64 bytes for P256 curve. + * \param[in] public_key The public key to be used for verification. X and + * Y integers in big-endian format. 64 bytes for + * P256 curve. + * \param[out] is_verified Boolean whether or not the message, signature, + * public key verified. + * + * \return ATCA_SUCCESS on verification success or failure, because the + * command still completed successfully. + */ +ATCA_STATUS atcab_verify_extern(const uint8_t *message, const uint8_t *signature, const uint8_t *public_key, bool *is_verified) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + uint8_t nonce_target = NONCE_MODE_TARGET_TEMPKEY; + uint8_t verify_source = VERIFY_MODE_SOURCE_TEMPKEY; + + if (is_verified == NULL) + { + return ATCA_BAD_PARAM; + } + + *is_verified = false; + + if (signature == NULL || message == NULL || public_key == NULL) + { + return ATCA_BAD_PARAM; + } + + do + { + // Load message into device + if (_gDevice->mCommands->dt == ATECC608A) + { + // Use the Message Digest Buffer for the ATECC608A + nonce_target = NONCE_MODE_TARGET_MSGDIGBUF; + verify_source = VERIFY_MODE_SOURCE_MSGDIGBUF; + } + if ((status = atcab_nonce_load(nonce_target, message, 32)) != ATCA_SUCCESS) + { + break; + } + + status = atcab_verify(VERIFY_MODE_EXTERNAL | verify_source, VERIFY_KEY_P256, signature, public_key, NULL, NULL); + *is_verified = (status == ATCA_SUCCESS); + + if (status == ATCA_CHECKMAC_VERIFY_FAILED) + { + status = ATCA_SUCCESS; // Verify failed, but command succeeded + + } + } + while (0); + + return status; +} + +/** \brief Executes the Verify command with verification MAC, which verifies a + * signature (ECDSA verify operation) with all components (message, + * signature, and public key) supplied. This function is only available + * on the ATECC608A. + * + * \param[in] message 32 byte message to be verified. Typically + * the SHA256 hash of the full message. + * \param[in] signature Signature to be verified. R and S integers in + * big-endian format. 64 bytes for P256 curve. + * \param[in] public_key The public key to be used for verification. X and + * Y integers in big-endian format. 64 bytes for + * P256 curve. + * \param[in] num_in System nonce (32 byte) used for the verification + * MAC. + * \param[in] io_key IO protection key for verifying the validation MAC. + * \param[out] is_verified Boolean whether or not the message, signature, + * public key verified. + * + * \return ATCA_SUCCESS on verification success or failure, because the + * command still completed successfully. + */ +ATCA_STATUS atcab_verify_extern_mac(const uint8_t *message, const uint8_t* signature, const uint8_t* public_key, const uint8_t* num_in, const uint8_t* io_key, bool* is_verified) +{ + return atcab_verify_extern_stored_mac( + VERIFY_MODE_EXTERNAL, + VERIFY_KEY_P256, + message, + signature, + public_key, + num_in, + io_key, + is_verified); +} + +/** \brief Executes the Verify command, which verifies a signature (ECDSA + * verify operation) with a public key stored in the device. The + * message to be signed will be loaded into the Message Digest Buffer + * to the ATECC608A device or TempKey for other devices. + * + * \param[in] message 32 byte message to be verified. Typically + * the SHA256 hash of the full message. + * \param[in] signature Signature to be verified. R and S integers in + * big-endian format. 64 bytes for P256 curve. + * \param[in] key_id Slot containing the public key to be used in the + * verification. + * \param[out] is_verified Boolean whether or not the message, signature, + * public key verified. + * + * \return ATCA_SUCCESS on verification success or failure, because the + * command still completed successfully. + */ +ATCA_STATUS atcab_verify_stored(const uint8_t *message, const uint8_t *signature, uint16_t key_id, bool *is_verified) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + uint8_t nonce_target = NONCE_MODE_TARGET_TEMPKEY; + uint8_t verify_source = VERIFY_MODE_SOURCE_TEMPKEY; + + if (is_verified == NULL) + { + return ATCA_BAD_PARAM; + } + + *is_verified = false; + + if (signature == NULL || message == NULL) + { + return ATCA_BAD_PARAM; + } + + do + { + // Load message into device + if (_gDevice->mCommands->dt == ATECC608A) + { + // Use the Message Digest Buffer for the ATECC608A + nonce_target = NONCE_MODE_TARGET_MSGDIGBUF; + verify_source = VERIFY_MODE_SOURCE_MSGDIGBUF; + } + if ((status = atcab_nonce_load(nonce_target, message, 32)) != ATCA_SUCCESS) + { + break; + } + + status = atcab_verify(VERIFY_MODE_STORED | verify_source, key_id, signature, NULL, NULL, NULL); + *is_verified = (status == ATCA_SUCCESS); + + if (status == ATCA_CHECKMAC_VERIFY_FAILED) + { + status = ATCA_SUCCESS; // Verify failed, but command succeeded + + } + } + while (0); + + return status; +} + +/** \brief Executes the Verify command with verification MAC, which verifies a + * signature (ECDSA verify operation) with a public key stored in the + * device. This function is only available on the ATECC608A. + * + * \param[in] message 32 byte message to be verified. Typically + * the SHA256 hash of the full message. + * \param[in] signature Signature to be verified. R and S integers in + * big-endian format. 64 bytes for P256 curve. + * \param[in] key_id Slot containing the public key to be used in the + * verification. + * \param[in] num_in System nonce (32 byte) used for the verification + * MAC. + * \param[in] io_key IO protection key for verifying the validation MAC. + * \param[out] is_verified Boolean whether or not the message, signature, + * public key verified. + * + * \return ATCA_SUCCESS on verification success or failure, because the + * command still completed successfully. + */ +ATCA_STATUS atcab_verify_stored_mac(const uint8_t *message, const uint8_t *signature, uint16_t key_id, const uint8_t* num_in, const uint8_t* io_key, bool* is_verified) +{ + return atcab_verify_extern_stored_mac( + VERIFY_MODE_STORED, + key_id, + message, + signature, + NULL, + num_in, + io_key, + is_verified); +} + +/** \brief Executes the Verify command in Validate mode to validate a public + * key stored in a slot. + * + * This command can only be run after GenKey has been used to create a PubKey + * digest of the public key to be validated in TempKey (mode=0x10). + * + * \param[in] key_id Slot containing the public key to be validated. + * \param[in] signature Signature to be verified. R and S integers in + * big-endian format. 64 bytes for P256 curve. + * \param[in] other_data 19 bytes of data used to build the verification + * message. + * \param[out] is_verified Boolean whether or not the message, signature, + * validation public key verified. + * + * \return ATCA_SUCCESS on verification success or failure, because the + * command still completed successfully. + */ +ATCA_STATUS atcab_verify_validate(uint16_t key_id, const uint8_t *signature, const uint8_t *other_data, bool *is_verified) +{ + ATCA_STATUS status = ATCA_SUCCESS; + + if (signature == NULL || other_data == NULL || is_verified == NULL) + { + return ATCA_BAD_PARAM; + } + + status = atcab_verify(VERIFY_MODE_VALIDATE, key_id, signature, NULL, other_data, NULL); + *is_verified = (status == ATCA_SUCCESS); + + if (status == ATCA_CHECKMAC_VERIFY_FAILED) + { + status = ATCA_SUCCESS; // Verify failed, but command succeeded + + } + return status; +} + +/** \brief Executes the Verify command in Invalidate mode which invalidates a + * previously validated public key stored in a slot. + * + * This command can only be run after GenKey has been used to create a PubKey + * digest of the public key to be invalidated in TempKey (mode=0x10). + * + * \param[in] key_id Slot containing the public key to be invalidated. + * \param[in] signature Signature to be verified. R and S integers in + * big-endian format. 64 bytes for P256 curve. + * \param[in] other_data 19 bytes of data used to build the verification + * message. + * \param[out] is_verified Boolean whether or not the message, signature, + * validation public key verified. + * + * \return ATCA_SUCCESS on verification success or failure, because the + * command still completed successfully. + */ +ATCA_STATUS atcab_verify_invalidate(uint16_t key_id, const uint8_t *signature, const uint8_t *other_data, bool *is_verified) +{ + ATCA_STATUS status = ATCA_SUCCESS; + + if (signature == NULL || other_data == NULL || is_verified == NULL) + { + return ATCA_BAD_PARAM; + } + + status = atcab_verify(VERIFY_MODE_INVALIDATE, key_id, signature, NULL, other_data, NULL); + *is_verified = (status == ATCA_SUCCESS); + + if (status == ATCA_CHECKMAC_VERIFY_FAILED) + { + status = ATCA_SUCCESS; // Verify failed, but command succeeded + + } + return status; +} + diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.c new file mode 100644 index 0000000..53a857d --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.c @@ -0,0 +1,535 @@ +/** + * \file + * \brief CryptoAuthLib Basic API methods for Write command. + * + * The Write command writes either one 4-byte word or a 32-byte block to one of + * the EEPROM zones on the device. Depending upon the value of the WriteConfig + * byte for a slot, the data may be required to be encrypted by the system prior + * to being sent to the device + * + * \note List of devices that support this command - ATSHA204A, ATECC108A, + * ATECC508A, and ATECC608A. There are differences in the modes that they + * support. Refer to device datasheets for full details. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ +#include "atca_basic.h" +#include "atca_execution.h" +#include "host/atca_host.h" + + +/** + * \brief Executes the Write command, which writes either one four byte word or + * a 32-byte block to one of the EEPROM zones on the device. Depending + * upon the value of the WriteConfig byte for this slot, the data may be + * required to be encrypted by the system prior to being sent to the + * device. This command cannot be used to write slots configured as ECC + * private keys. + * + * \param[in] zone Zone/Param1 for the write command. + * \param[in] address Address/Param2 for the write command. + * \param[in] value Plain-text data to be written or cipher-text for + * encrypted writes. 32 or 4 bytes depending on bit 7 in the + * zone. + * \param[in] mac MAC required for encrypted writes (32 bytes). Set to NULL + * if not required. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_write(uint8_t zone, uint16_t address, const uint8_t *value, const uint8_t *mac) +{ + ATCAPacket packet; + ATCACommand ca_cmd = _gDevice->mCommands; + ATCA_STATUS status = ATCA_GEN_FAIL; + + if (value == NULL) + { + return ATCA_BAD_PARAM; + } + + do + { + // Build the write command + packet.param1 = zone; + packet.param2 = address; + if (zone & ATCA_ZONE_READWRITE_32) + { + // 32-byte write + memcpy(packet.data, value, 32); + // Only 32-byte writes can have a MAC + if (mac) + { + memcpy(&packet.data[32], mac, 32); + } + } + else + { + // 4-byte write + memcpy(packet.data, value, 4); + } + + if ((status = atWrite(ca_cmd, &packet, mac && (zone & ATCA_ZONE_READWRITE_32))) != ATCA_SUCCESS) + { + break; + } + + if ((status = atca_execute_command(&packet, _gDevice)) != ATCA_SUCCESS) + { + break; + } + + } + while (0); + + return status; +} + +/** \brief Executes the Write command, which writes either 4 or 32 bytes of + * data into a device zone. + * + * \param[in] zone Device zone to write to (0=config, 1=OTP, 2=data). + * \param[in] slot If writing to the data zone, it is the slot to write to, + * otherwise it should be 0. + * \param[in] block 32-byte block to write to. + * \param[in] offset 4-byte word within the specified block to write to. If + * performing a 32-byte write, this should be 0. + * \param[in] data Data to be written. + * \param[in] len Number of bytes to be written. Must be either 4 or 32. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_write_zone(uint8_t zone, uint16_t slot, uint8_t block, uint8_t offset, const uint8_t *data, uint8_t len) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + uint16_t addr; + + // Check the input parameters + if (data == NULL) + { + return ATCA_BAD_PARAM; + } + + if (len != 4 && len != 32) + { + return ATCA_BAD_PARAM; + } + + do + { + // The get address function checks the remaining variables + if ((status = atcab_get_addr(zone, slot, block, offset, &addr)) != ATCA_SUCCESS) + { + break; + } + + // If there are 32 bytes to write, then xor the bit into the mode + if (len == ATCA_BLOCK_SIZE) + { + zone = zone | ATCA_ZONE_READWRITE_32; + } + + status = atcab_write(zone, addr, data, NULL); + + } + while (0); + + return status; +} + + +/** \brief Executes the Write command, which performs an encrypted write of + * a 32 byte block into given slot. + * + * The function takes clear text bytes and encrypts them for writing over the + * wire. Data zone must be locked and the slot configuration must be set to + * encrypted write for the block to be successfully written. + * + * \param[in] key_id Slot ID to write to. + * \param[in] block Index of the 32 byte block to write in the slot. + * \param[in] data 32 bytes of clear text data to be written to the slot + * \param[in] enc_key WriteKey to encrypt with for writing + * \param[in] enc_key_id The KeyID of the WriteKey + * + * returns ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_write_enc(uint16_t key_id, uint8_t block, const uint8_t *data, const uint8_t* enc_key, const uint16_t enc_key_id) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + uint8_t zone = ATCA_ZONE_DATA | ATCA_ZONE_READWRITE_32; + atca_nonce_in_out_t nonce_params; + atca_gen_dig_in_out_t gen_dig_param; + atca_write_mac_in_out_t write_mac_param; + atca_temp_key_t temp_key; + uint8_t serial_num[32]; + uint8_t num_in[NONCE_NUMIN_SIZE] = { 0 }; + uint8_t rand_out[RANDOM_NUM_SIZE] = { 0 }; + uint8_t cipher_text[ATCA_KEY_SIZE] = { 0 }; + uint8_t mac[WRITE_MAC_SIZE] = { 0 }; + uint8_t other_data[4] = { 0 }; + uint16_t addr; + + do + { + // Verify inputs parameters + if (data == NULL || enc_key == NULL) + { + status = ATCA_BAD_PARAM; + break; + } + + // Read the device SN + if ((status = atcab_read_zone(ATCA_ZONE_CONFIG, 0, 0, 0, serial_num, 32)) != ATCA_SUCCESS) + { + break; + } + // Make the SN continuous by moving SN[4:8] right after SN[0:3] + memmove(&serial_num[4], &serial_num[8], 5); + + + // Random Nonce inputs + memset(&temp_key, 0, sizeof(temp_key)); + memset(&nonce_params, 0, sizeof(nonce_params)); + nonce_params.mode = NONCE_MODE_SEED_UPDATE; + nonce_params.zero = 0; + nonce_params.num_in = (uint8_t*)&num_in; + nonce_params.rand_out = (uint8_t*)&rand_out; + nonce_params.temp_key = &temp_key; + + // Send the random Nonce command + if ((status = atcab_nonce_rand(num_in, rand_out)) != ATCA_SUCCESS) + { + BREAK(status, "Nonce failed"); + } + + // Calculate Tempkey + if ((status = atcah_nonce(&nonce_params)) != ATCA_SUCCESS) + { + BREAK(status, "Calc TempKey failed"); + } + + // Supply OtherData so GenDig behavior is the same for keys with SlotConfig.NoMac set + other_data[0] = ATCA_GENDIG; + other_data[1] = GENDIG_ZONE_DATA; + other_data[2] = (uint8_t)(enc_key_id); + other_data[3] = (uint8_t)(enc_key_id >> 8); + + // Send the GenDig command + if ((status = atcab_gendig(GENDIG_ZONE_DATA, enc_key_id, other_data, sizeof(other_data))) != ATCA_SUCCESS) + { + BREAK(status, "GenDig failed"); + } + + // Calculate Tempkey + // NoMac bit isn't being considered here on purpose to remove having to read SlotConfig. + // OtherData is built to get the same result regardless of the NoMac bit. + memset(&gen_dig_param, 0, sizeof(gen_dig_param)); + gen_dig_param.key_id = enc_key_id; + gen_dig_param.is_key_nomac = false; + gen_dig_param.sn = serial_num; + gen_dig_param.stored_value = enc_key; + gen_dig_param.zone = GENDIG_ZONE_DATA; + gen_dig_param.other_data = other_data; + gen_dig_param.temp_key = &temp_key; + if ((status = atcah_gen_dig(&gen_dig_param)) != ATCA_SUCCESS) + { + BREAK(status, "atcah_gen_dig() failed"); + } + + // The get address function checks the remaining variables + if ((status = atcab_get_addr(ATCA_ZONE_DATA, key_id, block, 0, &addr)) != ATCA_SUCCESS) + { + BREAK(status, "Get address failed"); + } + + // Setting bit 6 to indicate input data is encrypted + write_mac_param.zone = zone | ATCA_ZONE_ENCRYPTED; + write_mac_param.key_id = addr; + write_mac_param.sn = serial_num; + write_mac_param.input_data = data; + write_mac_param.encrypted_data = cipher_text; + write_mac_param.auth_mac = mac; + write_mac_param.temp_key = &temp_key; + + if ((status = atcah_write_auth_mac(&write_mac_param)) != ATCA_SUCCESS) + { + BREAK(status, "Calculate Auth MAC failed"); + } + + status = atcab_write(write_mac_param.zone, write_mac_param.key_id, write_mac_param.encrypted_data, write_mac_param.auth_mac); + + } + while (0); + + return status; +} + +/** \brief Executes the Write command, which writes the configuration zone. + * + * First 16 bytes are skipped as they are not writable. LockValue and + * LockConfig are also skipped and can only be changed via the Lock + * command. + * + * This command may fail if UserExtra and/or Selector bytes have + * already been set to non-zero values. + * + * \param[in] config_data Data to the config zone data. This should be 88 + * bytes for SHA devices and 128 bytes for ECC + * devices. + * + * \returns ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_write_config_zone(const uint8_t* config_data) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + size_t config_size = 0; + + if (config_data == NULL) + { + return ATCA_BAD_PARAM; + } + + do + { + // Get config zone size for the device + status = atcab_get_zone_size(ATCA_ZONE_CONFIG, 0, &config_size); + if (status != ATCA_SUCCESS) + { + break; + } + + // Write config zone excluding UserExtra and Selector + status = atcab_write_bytes_zone(ATCA_ZONE_CONFIG, 0, 16, &config_data[16], config_size - 16); + if (status != ATCA_SUCCESS) + { + break; + } + + // Write the UserExtra and Selector. This may fail if either value is already non-zero. + status = atcab_updateextra(UPDATE_MODE_USER_EXTRA, config_data[84]); + if (status != ATCA_SUCCESS) + { + break; + } + status = atcab_updateextra(UPDATE_MODE_SELECTOR, config_data[85]); + + if (status != ATCA_SUCCESS) + { + break; + } + } + while (0); + + return status; +} + +/** \brief Uses the write command to write a public key to a slot in the + * proper format. + * + * \param[in] slot Slot number to write. Only slots 8 to 15 are large + * enough to store a public key. + * \param[in] public_key Public key to write into the slot specified. X and Y + * integers in big-endian format. 64 bytes for P256 + * curve. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_write_pubkey(uint16_t slot, const uint8_t *public_key) +{ + ATCA_STATUS status = ATCA_SUCCESS; + uint8_t public_key_formatted[ATCA_BLOCK_SIZE * 3]; + int block; + + // Check the pointers + if (public_key == NULL) + { + return ATCA_BAD_PARAM; + } + + // The 64 byte P256 public key gets written to a 72 byte slot in the following pattern + // | Block 1 | Block 2 | Block 3 | + // | Pad: 4 Bytes | PubKey[0:27] | PubKey[28:31] | Pad: 4 Bytes | PubKey[32:55] | PubKey[56:63] | + + memset(public_key_formatted, 0, sizeof(public_key_formatted)); + memcpy(&public_key_formatted[4], &public_key[0], 32); // Move X to padded position + memcpy(&public_key_formatted[40], &public_key[32], 32); // Move Y to padded position + + // Using this instead of atcab_write_zone_bytes, as that function doesn't work when + // the data zone is unlocked + for (block = 0; block < 3; block++) + { + status = atcab_write_zone(ATCA_ZONE_DATA, slot, block, 0, &public_key_formatted[ATCA_BLOCK_SIZE * block], ATCA_BLOCK_SIZE); + if (status != ATCA_SUCCESS) + { + break; + } + } + + return status; +} + +/** \brief Executes the Write command, which writes data into the + * configuration, otp, or data zones with a given byte offset and + * length. Offset and length must be multiples of a word (4 bytes). + * + * Config zone must be unlocked for writes to that zone. If data zone is + * unlocked, only 32-byte writes are allowed to slots and OTP and the offset + * and length must be multiples of 32 or the write will fail. + * + * \param[in] zone Zone to write data to: ATCA_ZONE_CONFIG(0), + * ATCA_ZONE_OTP(1), or ATCA_ZONE_DATA(2). + * \param[in] slot If zone is ATCA_ZONE_DATA(2), the slot number to + * write to. Ignored for all other zones. + * \param[in] offset_bytes Byte offset within the zone to write to. Must be + * a multiple of a word (4 bytes). + * \param[in] data Data to be written. + * \param[in] length Number of bytes to be written. Must be a multiple + * of a word (4 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_write_bytes_zone(uint8_t zone, uint16_t slot, size_t offset_bytes, const uint8_t *data, size_t length) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + size_t zone_size = 0; + size_t data_idx = 0; + size_t cur_block = 0; + size_t cur_word = 0; + + if (zone != ATCA_ZONE_CONFIG && zone != ATCA_ZONE_OTP && zone != ATCA_ZONE_DATA) + { + return ATCA_BAD_PARAM; + } + if (zone == ATCA_ZONE_DATA && slot > 15) + { + return ATCA_BAD_PARAM; + } + if (length == 0) + { + return ATCA_SUCCESS; // Always succeed writing 0 bytes + } + if (data == NULL) + { + return ATCA_BAD_PARAM; + } + if (offset_bytes % ATCA_WORD_SIZE != 0 || length % ATCA_WORD_SIZE != 0) + { + return ATCA_BAD_PARAM; + } + + do + { + status = atcab_get_zone_size(zone, slot, &zone_size); + if (status != ATCA_SUCCESS) + { + break; + } + if (offset_bytes + length > zone_size) + { + return ATCA_BAD_PARAM; + } + + cur_block = offset_bytes / ATCA_BLOCK_SIZE; + cur_word = (offset_bytes % ATCA_BLOCK_SIZE) / ATCA_WORD_SIZE; + + while (data_idx < length) + { + // The last item makes sure we handle the selector, user extra, and lock bytes in the config properly + if (cur_word == 0 && length - data_idx >= ATCA_BLOCK_SIZE && !(zone == ATCA_ZONE_CONFIG && cur_block == 2)) + { + status = atcab_write_zone(zone, slot, (uint8_t)cur_block, 0, &data[data_idx], ATCA_BLOCK_SIZE); + if (status != ATCA_SUCCESS) + { + break; + } + data_idx += ATCA_BLOCK_SIZE; + cur_block += 1; + } + else + { + // Skip trying to change UserExtra, Selector, LockValue, and LockConfig which require the UpdateExtra command to change + if (!(zone == ATCA_ZONE_CONFIG && cur_block == 2 && cur_word == 5)) + { + status = atcab_write_zone(zone, slot, (uint8_t)cur_block, (uint8_t)cur_word, &data[data_idx], ATCA_WORD_SIZE); + if (status != ATCA_SUCCESS) + { + break; + } + } + data_idx += ATCA_WORD_SIZE; + cur_word += 1; + if (cur_word == ATCA_BLOCK_SIZE / ATCA_WORD_SIZE) + { + cur_block += 1; + cur_word = 0; + } + } + } + } + while (false); + + return status; +} + +/** \brief Initialize one of the monotonic counters in device with a specific + * value. + * + * The monotonic counters are stored in the configuration zone using a special + * format. This encodes a binary count value into the 8 byte encoded value + * required. Can only be set while the configuration zone is unlocked. + * + * \param[in] counter_id Counter to be written. + * \param[in] counter_value Counter value to set. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_write_config_counter(uint16_t counter_id, uint32_t counter_value) +{ + uint16_t lin_a, lin_b, bin_a, bin_b; + uint8_t bytes[8]; + uint8_t idx = 0; + ATCA_STATUS status = ATCA_GEN_FAIL; + + if (counter_id > 1 || counter_value > COUNTER_MAX_VALUE) + { + return ATCA_BAD_PARAM; + } + + lin_a = 0xFFFF >> (counter_value % 32); + lin_b = 0xFFFF >> ((counter_value >= 16) ? (counter_value - 16) % 32 : 0); + bin_a = counter_value / 32; + bin_b = (counter_value >= 16) ? ((counter_value - 16) / 32) : 0; + + bytes[idx++] = lin_a >> 8; + bytes[idx++] = lin_a & 0xFF; + bytes[idx++] = lin_b >> 8; + bytes[idx++] = lin_b & 0xFF; + + bytes[idx++] = bin_a >> 8; + bytes[idx++] = bin_a & 0xFF; + bytes[idx++] = bin_b >> 8; + bytes[idx++] = bin_b & 0xFF; + + status = atcab_write_bytes_zone(ATCA_ZONE_CONFIG, 0, 52 + counter_id * 8, bytes, sizeof(bytes)); + + return status; +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.c new file mode 100644 index 0000000..28cafc2 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.c @@ -0,0 +1,857 @@ +/** + * \file + * \brief Helpers to support the CryptoAuthLib Basic API methods + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include +#include +#include +#include "cryptoauthlib.h" +#include "atca_helpers.h" + + + +/* Ruleset: + Index - Meaning + 0 - 62 Character + 1 - 63 Character + 2 - Pad Character (none if 0) + 3 - Maximum line length (no limit if 0) */ +uint8_t atcab_b64rules_default[4] = { '+', '/', '=', 64 }; +uint8_t atcab_b64rules_mime[4] = { '+', '/', '=', 76 }; +uint8_t atcab_b64rules_urlsafe[4] = { '-', '_', 0, 0 }; + + +/** \brief Convert a binary buffer to a hex string for easy reading. + * \param[in] bin Input data to convert. + * \param[in] bin_size Size of data to convert. + * \param[out] hex Buffer that receives hex string. + * \param[inout] hex_size As input, the size of the hex buffer. + * As output, the size of the output hex. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_bin2hex(const uint8_t* bin, size_t bin_size, char* hex, size_t* hex_size) +{ + return atcab_bin2hex_(bin, bin_size, hex, hex_size, true, true, true); +} + +static void uint8_to_hex(uint8_t num, char* hex_str) +{ + uint8_t nibble = (num >> 4) & 0x0F; + + if (nibble < 10) + { + *(hex_str++) = '0' + nibble; + } + else + { + *(hex_str++) = 'A' + (nibble - 10); + } + nibble = num & 0x0F; + if (nibble < 10) + { + *(hex_str++) = '0' + nibble; + } + else + { + *(hex_str++) = 'A' + (nibble - 10); + } +} + +static void hex_to_lowercase(char *buffer, size_t length) +{ + size_t index; + + if ((buffer != NULL) && (length > 0)) + { + for (index = 0; index < length; index++) + { + buffer[index] = tolower(buffer[index]); + } + } +} + + +static void hex_to_uppercase(char *buffer, size_t length) +{ + size_t index; + + if ((buffer != NULL) && (length > 0)) + { + for (index = 0; index < length; index++) + { + buffer[index] = toupper(buffer[index]); + } + } +} + +/** \brief To reverse the input data. + * \param[in] bin Input data to reverse. + * \param[in] bin_size Size of data to reverse. + * \param[out] dest Buffer to store reversed binary data. + * \param[in] dest_size The size of the dest buffer. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_reversal(const uint8_t* bin, size_t bin_size, uint8_t* dest, size_t* dest_size) +{ + size_t last, i; + + // Verify the inputs + if ((bin == NULL) || (dest == NULL)) + { + return ATCA_BAD_PARAM; + } + + if (*dest_size < bin_size) + { + return ATCA_SMALL_BUFFER; + } + + last = bin_size - 1; + + for (i = 0; i < bin_size; i++) + { + dest[i] = bin[last]; + last--; + } + *dest_size = bin_size; + return ATCA_SUCCESS; +} + + +/** \brief Function that converts a binary buffer to a hex string suitable for + * easy reading. + * \param[in] bin Input data to convert. + * \param[in] bin_size Size of data to convert. + * \param[out] hex Buffer that receives hex string. + * \param[inout] hex_size As input, the size of the hex buffer. + * As output, the size of the output hex. + * \param[in] is_pretty Indicates whether new lines should be + * added for pretty printing. + * \param[in] is_space Convert the output hex with space between it. + * \param[in] is_upper Convert the output hex to upper case. + + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_bin2hex_(const uint8_t* bin, size_t bin_size, char* hex, size_t* hex_size, bool is_pretty, bool is_space, bool is_upper) +{ + size_t i; + size_t cur_hex_size = 0; + size_t max_hex_size; + + // Verify the inputs + if (bin == NULL || hex == NULL || hex_size == NULL) + { + return ATCA_BAD_PARAM; + } + + max_hex_size = *hex_size; + *hex_size = 0; + + // Convert one byte at a time + for (i = 0; i < bin_size; i++) + { + if (cur_hex_size > max_hex_size) + { + break; + } + if (i != 0) + { + if (is_pretty && (i % 16 == 0)) + { + if (cur_hex_size + 2 > max_hex_size) + { + return ATCA_SMALL_BUFFER; + } + memcpy(&hex[cur_hex_size], "\r\n", 2); + cur_hex_size += 2; + } + else + { + if (is_space) + { + if (cur_hex_size + 1 > max_hex_size) + { + return ATCA_SMALL_BUFFER; + } + hex[cur_hex_size] = ' '; + cur_hex_size += 1; + } + } + } + + if (cur_hex_size + 2 > max_hex_size) + { + return ATCA_SMALL_BUFFER; + } + uint8_to_hex(bin[i], &hex[cur_hex_size]); + cur_hex_size += 2; + } + + if (is_upper) + { + hex_to_uppercase(hex, cur_hex_size); + } + else + { + hex_to_lowercase(hex, cur_hex_size); + } + + *hex_size = cur_hex_size; + if (cur_hex_size < max_hex_size) + { + // Since we have room add NULL as a convenience, but don't add to the + // output size. + hex[cur_hex_size] = 0; + } + + return ATCA_SUCCESS; +} + +inline static uint8_t hex_digit_to_num(char c) +{ + if (c >= '0' && c <= '9') + { + return (uint8_t)(c - '0'); + } + if (c >= 'a' && c <= 'f') + { + return (uint8_t)(c - 'a') + 10; + } + if (c >= 'A' && c <= 'F') + { + return (uint8_t)(c - 'A') + 10; + } + return 16; +} + + +ATCA_STATUS atcab_hex2bin_(const char* hex, size_t hex_size, uint8_t* bin, size_t* bin_size, bool is_space) +{ + size_t hex_index; + size_t bin_index = 0; + bool is_upper_nibble = true; + + for (hex_index = 0; hex_index < hex_size; hex_index++) + { + if (!isHexDigit(hex[hex_index])) + { + if (((hex_index + 1) % 3 == 0) && is_space) + { + if (hex[hex_index] != ' ') + { + return ATCA_BAD_PARAM; + } + } + + continue; // Skip any non-hex character + } + if (bin_index >= *bin_size) + { + return ATCA_SMALL_BUFFER; + } + + if (is_upper_nibble) + { + // Upper nibble + bin[bin_index] = hex_digit_to_num(hex[hex_index]) << 4; + } + else + { + // Lower nibble + bin[bin_index] += hex_digit_to_num(hex[hex_index]); + bin_index++; + } + is_upper_nibble = !is_upper_nibble; + } + if (!is_upper_nibble) + { + // Didn't end with an even number of hex digits. Assume it was malformed. + return ATCA_BAD_PARAM; + } + *bin_size = bin_index; + + return ATCA_SUCCESS; +} + +/** \brief Function that converts a hex string to binary buffer + * \param[in] hex Input buffer to convert + * \param[in] hex_size Length of buffer to convert + * \param[out] bin Buffer that receives binary + * \param[inout] bin_size As input, the size of the bin buffer. + * As output, the size of the bin data. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_hex2bin(const char* hex, size_t hex_size, uint8_t* bin, size_t* bin_size) +{ + return atcab_hex2bin_(hex, hex_size, bin, bin_size, false); +} + +/** + * \brief Checks to see if a character is an ASCII representation of a digit ((c ge '0') and (c le '9')) + * \param[in] c character to check + * \return True if the character is a digit + */ +bool isDigit(char c) +{ + return (c >= '0') && (c <= '9'); +} + +/** + * \brief Checks to see if a character is whitespace + * \param[in] c character to check + * \return True if the character is whitespace + */ +bool isWhiteSpace(char c) +{ + return (c == '\n') || (c == '\r') || (c == '\t') || (c == ' '); +} + +/** + * \brief Checks to see if a character is an ASCII representation of hex ((c >= 'A') and (c <= 'F')) || ((c >= 'a') and (c <= 'f')) + * \param[in] c character to check + * \return True if the character is a hex + */ +bool isAlpha(char c) +{ + return ((c >= 'A') && (c <= 'Z')) || ((c >= 'a') && (c <= 'z')); +} + +/** + * \brief Checks to see if a character is an ASCII representation of hex ((c >= 'A') and (c <= 'F')) || ((c >= 'a') and (c <= 'f')) + * \param[in] c character to check + * \return True if the character is a hex + */ +bool isHexAlpha(char c) +{ + return ((c >= 'A') && (c <= 'F')) || ((c >= 'a') && (c <= 'f')); +} + +/** + * \brief Returns true if this character is a valid hex character or if this is whitespace (The character can be + * included in a valid hexstring). + * \param[in] c character to check + * \return True if the character can be included in a valid hexstring + */ +bool isHex(char c) +{ + return isHexDigit(c) || isWhiteSpace(c); +} + +/** + * \brief Returns true if this character is a valid hex character. + * \param[in] c character to check + * \return True if the character can be included in a valid hexstring + */ +bool isHexDigit(char c) +{ + return isDigit(c) || isHexAlpha(c); +} + +/** + * \brief Remove white space from a ASCII hex string. + * \param[in] ascii_hex Initial hex string to remove white space from + * \param[in] ascii_hex_len Length of the initial hex string + * \param[in] packed_hex Resulting hex string without white space + * \param[inout] packed_len In: Size to packed_hex buffer + * Out: Number of bytes in the packed hex string + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS packHex(const char* ascii_hex, size_t ascii_hex_len, char* packed_hex, size_t* packed_len) +{ + size_t i = 0; + size_t j = 0; + + // Verify the inputs + if ((ascii_hex == NULL) || (packed_hex == NULL) || (packed_len == NULL)) + { + return ATCA_BAD_PARAM; + } + // Loop through each character and only add the hex characters + for (i = 0; i < ascii_hex_len; i++) + { + if (isHexDigit(ascii_hex[i])) + { + if (j > *packed_len) + { + break; + } + packed_hex[j++] = ascii_hex[i]; + } + } + *packed_len = j; + + return ATCA_SUCCESS; +} + +#ifdef ATCAPRINTF +/** \brief Print each hex character in the binary buffer with spaces between bytes + * \param[in] label label to print + * \param[in] binary input buffer to print + * \param[in] bin_len length of buffer to print + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_printbin_label(const char* label, uint8_t* binary, size_t bin_len) +{ + printf("%s", label); + return atcab_printbin(binary, bin_len, true); +} + +/** \brief Print each hex character in the binary buffer with spaces between bytes + * \param[in] binary input buffer to print + * \param[in] bin_len length of buffer to print + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_printbin_sp(uint8_t* binary, size_t bin_len) +{ + return atcab_printbin(binary, bin_len, true); +} + +/** \brief Print each hex character in the binary buffer + * \param[in] binary input buffer to print + * \param[in] bin_len length of buffer to print + * \param[in] add_space indicates whether spaces and returns should be added for pretty printing + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_printbin(uint8_t* binary, size_t bin_len, bool add_space) +{ + size_t i = 0; + size_t line_len = 16; + + // Verify the inputs + if (binary == NULL) + { + return ATCA_BAD_PARAM; + } + + // Set the line length + line_len = add_space ? 16 : 32; + + // Print the bytes + for (i = 0; i < bin_len; i++) + { + // Print the byte + if (add_space) + { + printf("%02X ", binary[i]); + } + else + { + printf("%02X", binary[i]); + } + + // Break at the line_len + if ((i + 1) % line_len == 0) + { + printf("\r\n"); + } + } + // Print the last carriage return + printf("\r\n"); + + return ATCA_SUCCESS; +} +#endif + +/////////////////////////////////////////////////////////////////////////////// +// Base 64 Encode/Decode + +#define B64_IS_EQUAL (uint8_t)64 +#define B64_IS_INVALID (uint8_t)0xFF + +/** + * \brief Returns true if this character is a valid base 64 character or if this is whitespace (A character can be + * included in a valid base 64 string). + * \param[in] c character to check + * \param[in] rules base64 ruleset to use + * \return True if the character can be included in a valid base 64 string + */ +bool isBase64(char c, const uint8_t * rules) +{ + return isBase64Digit(c, rules) || isWhiteSpace(c); +} + +/** + * \brief Returns true if this character is a valid base 64 character. + * \param[in] c character to check + * \param[in] rules base64 ruleset to use + * \return True if the character can be included in a valid base 64 string + */ +bool isBase64Digit(char c, const uint8_t * rules) +{ + return isDigit(c) || isAlpha(c) || c == rules[0] || c == rules[1] || c == rules[2]; +} + +/** + * \brief Returns the base 64 index of the given character. + * \param[in] c character to check + * \param[in] rules base64 ruleset to use + * \return the base 64 index of the given character + */ +uint8_t base64Index(char c, const uint8_t * rules) +{ + if ((c >= 'A') && (c <= 'Z')) + { + return (uint8_t)(c - 'A'); + } + if ((c >= 'a') && (c <= 'z')) + { + return (uint8_t)(26 + c - 'a'); + } + if ((c >= '0') && (c <= '9')) + { + return (uint8_t)(52 + c - '0'); + } + if (c == rules[0]) + { + return (uint8_t)62; + } + if (c == rules[1]) + { + return (uint8_t)63; + } + if (c == rules[2]) + { + return B64_IS_EQUAL; + } + return B64_IS_INVALID; +} + +/** + * \brief Returns the base 64 character of the given index. + * \param[in] id index to check + * \param[in] rules base64 ruleset to use + * \return the base 64 character of the given index + */ +char base64Char(uint8_t id, const uint8_t * rules) +{ + if (id >= 0 && (id < 26)) + { + return (char)('A' + id); + } + if ((id >= 26) && (id < 52)) + { + return (char)('a' + id - 26); + } + if ((id >= 52) && (id < 62)) + { + return (char)('0' + id - 52); + } + if (id == 62) + { + return rules[0]; + } + if (id == 63) + { + return rules[1]; + } + + if (id == B64_IS_EQUAL) + { + return rules[2]; + } + return B64_IS_INVALID; +} + +static ATCA_STATUS atcab_base64decode_block(const uint8_t id[4], uint8_t* data, size_t* data_size, size_t data_max_size) +{ + ATCA_STATUS status = ATCA_SUCCESS; + size_t new_bytes = 0; + + do + { + // Make sure padding characters can only be the last two + if ((id[0] == B64_IS_EQUAL) || + (id[1] == B64_IS_EQUAL) || + (id[2] == B64_IS_EQUAL && id[3] != B64_IS_EQUAL)) + { + status = ATCA_BAD_PARAM; + BREAK(status, "Base64 chars after end padding"); + } + + // Make sure output buffer has enough space + if (id[2] == B64_IS_EQUAL) + { + new_bytes = 1; + } + else if (id[3] == B64_IS_EQUAL) + { + new_bytes = 2; + } + else + { + new_bytes = 3; + } + if ((*data_size) + new_bytes > data_max_size) + { + status = ATCA_BAD_PARAM; + BREAK(status, "decoded buffer too small"); + } + + // Decode into output buffer + data[(*data_size)++] = ((id[0] << 2) | (id[1] >> 4)); + if (id[2] == B64_IS_EQUAL) + { + break; + } + data[(*data_size)++] = ((id[1] << 4) | (id[2] >> 2)); + if (id[3] == B64_IS_EQUAL) + { + break; + } + data[(*data_size)++] = ((id[2] << 6) | id[3]); + } + while (false); + + return status; +} + +/** + * \brief Decode base64 string to data with ruleset option. + * + * \param[in] encoded Base64 string to be decoded. + * \param[in] encoded_size Size of the base64 string in bytes. + * \param[out] data Decoded data will be returned here. + * \param[inout] data_size As input, the size of the byte_array buffer. + * As output, the length of the decoded data. + * \param[in] rules base64 ruleset to use + */ +ATCA_STATUS atcab_base64decode_(const char* encoded, size_t encoded_size, uint8_t* data, size_t* data_size, const uint8_t * rules) +{ + ATCA_STATUS status = ATCA_SUCCESS; + uint8_t id[4]; + int id_index = 0; + size_t enc_index = 0; + size_t data_max_size; + bool is_done = false; + + do + { + // Check the input parameters + if (encoded == NULL || data == NULL || data_size == NULL || rules == NULL) + { + status = ATCA_BAD_PARAM; + BREAK(status, "Null input parameter"); + } + data_max_size = *data_size; + *data_size = 0; + + // Start decoding the input data + for (enc_index = 0; enc_index < encoded_size; enc_index++) + { + if (isWhiteSpace(encoded[enc_index])) + { + continue; // Skip any whitespace characters + } + if (!isBase64Digit(encoded[enc_index], rules)) + { + status = ATCA_BAD_PARAM; + BREAK(status, "Invalid base64 character"); + } + if (is_done) + { + // We found valid base64 characters after end padding (equals) + // characters + status = ATCA_BAD_PARAM; + BREAK(status, "Base64 chars after end padding"); + } + id[id_index++] = base64Index(encoded[enc_index], rules); + // Process data 4 characters at a time + if (id_index >= 4) + { + id_index = 0; + status = atcab_base64decode_block(id, data, data_size, data_max_size); + if (status != ATCA_SUCCESS) + { + break; + } + + is_done = (id[3] == B64_IS_EQUAL); + } + } + if (status != ATCA_SUCCESS) + { + break; + } + if (id_index) + { + if (id_index < 2) + { + status = ATCA_BAD_PARAM; + BREAK(status, "Invalid number of base64 chars"); + } + // End of base64 string, but no padding characters + for (; id_index < 4; id_index++) + { + id[id_index] = B64_IS_EQUAL; + } + status = atcab_base64decode_block(id, data, data_size, data_max_size); + } + } + while (false); + + return status; +} + +/** \brief Encode data as base64 string with ruleset option. */ +ATCA_STATUS atcab_base64encode_( + const uint8_t* data, /**< [in] The input byte array that will be converted to base 64 encoded characters */ + size_t data_size, /**< [in] The length of the byte array */ + char* encoded, /**< [in] The output converted to base 64 encoded characters. */ + size_t* encoded_size, /**< [inout] Input: The size of the encoded buffer, Output: The length of the encoded base 64 character string */ + const uint8_t * rules /**< [in] ruleset to use during encoding */ + ) +{ + ATCA_STATUS status = ATCA_SUCCESS; + size_t data_idx = 0; + size_t b64_idx = 0; + size_t offset = 0; + uint8_t id = 0; + size_t b64_len; + + do + { + // Check the input parameters + if (encoded == NULL || data == NULL || encoded_size == NULL || !rules) + { + status = ATCA_BAD_PARAM; + BREAK(status, "Null input parameter"); + } + + // Calculate output length for buffer size check + b64_len = (data_size / 3 + (data_size % 3 != 0)) * 4; // ceil(size/3)*4 + if (rules[3]) + { + // We add newlines to the output + if (rules[3] % 4 != 0) + { + status = ATCA_BAD_PARAM; + BREAK(status, "newline rules[3] must be multiple of 4"); + } + b64_len += (b64_len / rules[3]) * 2; + } + b64_len += 1; // terminating null + if (*encoded_size < b64_len) + { + status = ATCA_SMALL_BUFFER; + BREAK(status, "Length of encoded buffer too small"); + } + // Initialize the return length to 0 + *encoded_size = 0; + + // Loop through the byte array by 3 then map to 4 base 64 encoded characters + for (data_idx = 0; data_idx < data_size; data_idx += 3) + { + // Add \r\n every n bytes if specified + if (rules[3] && data_idx > 0 && (b64_idx - offset) % rules[3] == 0) + { + // as soon as we do this, we introduce an offset + encoded[b64_idx++] = '\r'; + encoded[b64_idx++] = '\n'; + offset += 2; + } + + id = (data[data_idx] & 0xFC) >> 2; + encoded[b64_idx++] = base64Char(id, rules); + id = (data[data_idx] & 0x03) << 4; + if (data_idx + 1 < data_size) + { + id |= (data[data_idx + 1] & 0xF0) >> 4; + encoded[b64_idx++] = base64Char(id, rules); + id = (data[data_idx + 1] & 0x0F) << 2; + if (data_idx + 2 < data_size) + { + id |= (data[data_idx + 2] & 0xC0) >> 6; + encoded[b64_idx++] = base64Char(id, rules); + id = data[data_idx + 2] & 0x3F; + encoded[b64_idx++] = base64Char(id, rules); + } + else + { + encoded[b64_idx++] = base64Char(id, rules); + encoded[b64_idx++] = base64Char(B64_IS_EQUAL, rules); + } + } + else + { + encoded[b64_idx++] = base64Char(id, rules); + encoded[b64_idx++] = base64Char(B64_IS_EQUAL, rules); + encoded[b64_idx++] = base64Char(B64_IS_EQUAL, rules); + } + } + + // Strip any trailing nulls + while (b64_idx > 1 && encoded[b64_idx - 1] == 0) + { + b64_idx--; + } + + // Null terminate end + encoded[b64_idx++] = 0; + + // Set the final encoded length (excluding terminating null) + *encoded_size = b64_idx - 1; + } + while (false); + return status; +} + + +/** + * \brief Encode data as base64 string + * + * \param[in] byte_array Data to be encode in base64. + * \param[in] array_len Size of byte_array in bytes. + * \param[in] encoded Base64 output is returned here. + * \param[inout] encoded_len As input, the size of the encoded buffer. + * As output, the length of the encoded base64 + * character string. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_base64encode(const uint8_t* byte_array, size_t array_len, char* encoded, size_t* encoded_len) +{ + return atcab_base64encode_(byte_array, array_len, encoded, encoded_len, atcab_b64rules_default); +} + +/** + * \brief Decode base64 string to data + * + * \param[in] encoded Base64 string to be decoded. + * \param[in] encoded_len Size of the base64 string in bytes. + * \param[out] byte_array Decoded data will be returned here. + * \param[inout] array_len As input, the size of the byte_array buffer. + * As output, the length of the decoded data. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcab_base64decode(const char* encoded, size_t encoded_len, uint8_t* byte_array, size_t* array_len) +{ + return atcab_base64decode_(encoded, encoded_len, byte_array, array_len, atcab_b64rules_default); +} + + + diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.h new file mode 100644 index 0000000..3ab7a0f --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.h @@ -0,0 +1,82 @@ +/** + * \file + * \brief Helpers to support the CryptoAuthLib Basic API methods + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef ATCA_HELPERS_H_ +#define ATCA_HELPERS_H_ + +#include "cryptoauthlib.h" + +/** \ingroup atcab_ + * @{ + */ + +#ifdef __cplusplus +extern "C" { +#endif + +ATCA_STATUS atcab_printbin(uint8_t* binary, size_t bin_len, bool add_space); +ATCA_STATUS atcab_bin2hex(const uint8_t* bin, size_t bin_size, char* hex, size_t* hex_size); +ATCA_STATUS atcab_bin2hex_(const uint8_t* bin, size_t bin_size, char* hex, size_t* hex_size, bool is_pretty, bool is_space, bool is_upper); +ATCA_STATUS atcab_hex2bin(const char* ascii_hex, size_t ascii_hex_len, uint8_t* binary, size_t* bin_len); +ATCA_STATUS atcab_hex2bin_(const char* hex, size_t hex_size, uint8_t* bin, size_t* bin_size, bool is_space); +ATCA_STATUS atcab_printbin_sp(uint8_t* binary, size_t bin_len); +ATCA_STATUS atcab_printbin_label(const char* label, uint8_t* binary, size_t bin_len); + + +ATCA_STATUS packHex(const char* ascii_hex, size_t ascii_hex_len, char* packed_hex, size_t* packed_len); +bool isDigit(char c); +bool isWhiteSpace(char c); +bool isAlpha(char c); +bool isHexAlpha(char c); +bool isHex(char c); +bool isHexDigit(char c); + +bool isBase64(char c, const uint8_t * rules); +bool isBase64Digit(char c, const uint8_t * rules); +uint8_t base64Index(char c, const uint8_t * rules); +char base64Char(uint8_t id, const uint8_t * rules); + +extern uint8_t atcab_b64rules_default[4]; +extern uint8_t atcab_b64rules_mime[4]; +extern uint8_t atcab_b64rules_urlsafe[4]; + +ATCA_STATUS atcab_base64decode_(const char* encoded, size_t encoded_size, uint8_t* data, size_t* data_size, const uint8_t * rules); +ATCA_STATUS atcab_base64decode(const char* encoded, size_t encoded_size, uint8_t* data, size_t* data_size); + +ATCA_STATUS atcab_base64encode_(const uint8_t* data, size_t data_size, char* encoded, size_t* encoded_size, const uint8_t * rules); +ATCA_STATUS atcab_base64encode(const uint8_t* data, size_t data_size, char* encoded, size_t* encoded_size); + + +ATCA_STATUS atcab_reversal(const uint8_t* bin, size_t bin_size, uint8_t* dest, size_t* dest_size); + + +#ifdef __cplusplus +} +#endif + +/** @} */ +#endif /* ATCA_HELPERS_H_ */ diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/README.md b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/README.md new file mode 100644 index 0000000..506c7b8 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/README.md @@ -0,0 +1,6 @@ +crypto directory - Purpose +=========================== +This directory contains software implementations of cryptographic functions. +The functions at the base level are wrappers that will point to the final +implementations of the software crypto functions. + diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw.h new file mode 100644 index 0000000..b9e5dc7 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw.h @@ -0,0 +1,33 @@ +/** + * \file + * \brief Common defines for CryptoAuthLib software crypto wrappers. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef ATCA_CRYPTO_SW_H +#define ATCA_CRYPTO_SW_H + +#include "atca_status.h" + +#endif \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.c new file mode 100644 index 0000000..448cf94 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.c @@ -0,0 +1,44 @@ +/** + * \file + * \brief API wrapper for software ECDSA verify. Currently unimplemented but could be + * implemented via a 3rd party library such as MicroECC. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#include "atca_crypto_sw_ecdsa.h" + +/** \brief return software generated ECDSA verification result and the function is currently not implemented + * \param[in] msg ptr to message or challenge + * \param[in] signature ptr to the signature to verify + * \param[in] public_key ptr to public key of device which signed the challenge + * return ATCA_UNIMPLEMENTED , as the function is currently not implemented + */ + +int atcac_sw_ecdsa_verify_p256(const uint8_t msg[ATCA_ECC_P256_FIELD_SIZE], + const uint8_t signature[ATCA_ECC_P256_SIGNATURE_SIZE], + const uint8_t public_key[ATCA_ECC_P256_PUBLIC_KEY_SIZE]) +{ + return ATCA_UNIMPLEMENTED; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.h new file mode 100644 index 0000000..fb3a781 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.h @@ -0,0 +1,62 @@ +/** + * \file + * \brief + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#ifndef ATCA_CRYPTO_SW_ECDSA_H +#define ATCA_CRYPTO_SW_ECDSA_H + +#include "atca_crypto_sw.h" +#include +#include + +/** \defgroup atcac_ Software crypto methods (atcac_) + * + * \brief + * These methods provide a software implementation of various crypto + * algorithms + * + @{ */ + +#define ATCA_ECC_P256_FIELD_SIZE (256 / 8) +#define ATCA_ECC_P256_PRIVATE_KEY_SIZE (ATCA_ECC_P256_FIELD_SIZE) +#define ATCA_ECC_P256_PUBLIC_KEY_SIZE (ATCA_ECC_P256_FIELD_SIZE * 2) +#define ATCA_ECC_P256_SIGNATURE_SIZE (ATCA_ECC_P256_FIELD_SIZE * 2) + +#ifdef __cplusplus +extern "C" { +#endif + +int atcac_sw_ecdsa_verify_p256(const uint8_t msg[ATCA_ECC_P256_FIELD_SIZE], + const uint8_t signature[ATCA_ECC_P256_SIGNATURE_SIZE], + const uint8_t public_key[ATCA_ECC_P256_PUBLIC_KEY_SIZE]); + +#ifdef __cplusplus +} +#endif + +/** @} */ +#endif \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.c new file mode 100644 index 0000000..b3e9866 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.c @@ -0,0 +1,39 @@ +/** + * \file + * \brief API wrapper for software random + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "atca_crypto_sw_rand.h" + +/** \brief return software generated random number and the function is currently not implemented + * \param[out] data ptr to space to receive the random number + * \param[in] data_size size of data buffer + * return ATCA_UNIMPLEMENTED , as the function is not implemented + */ + +int atcac_sw_random(uint8_t* data, size_t data_size) +{ + return ATCA_UNIMPLEMENTED; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.h new file mode 100644 index 0000000..4e3a74c --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.h @@ -0,0 +1,53 @@ +/** + * \file + * \brief + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef ATCA_CRYPTO_SW_RAND_H +#define ATCA_CRYPTO_SW_RAND_H + +#include "atca_crypto_sw.h" +#include +#include + +/** \defgroup atcac_ Software crypto methods (atcac_) + * + * \brief + * These methods provide a software implementation of various crypto + * algorithms + * + @{ */ +#ifdef __cplusplus +extern "C" { +#endif + +int atcac_sw_random(uint8_t* data, size_t data_size); + +#ifdef __cplusplus +} +#endif +/** @} */ + +#endif \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.c new file mode 100644 index 0000000..1165bf5 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.c @@ -0,0 +1,106 @@ +/** + * \file + * \brief Wrapper API for SHA 1 routines + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#include "atca_crypto_sw_sha1.h" +#include "hashes/sha1_routines.h" + + +/** \brief Initialize context for performing SHA1 hash in software. + * \param[in] ctx Hash context + * \return ATCA_SUCCESS on success, otherwise an error code. + */ + +int atcac_sw_sha1_init(atcac_sha1_ctx* ctx) +{ + if (sizeof(CL_HashContext) > sizeof(atcac_sha1_ctx)) + { + return ATCA_ASSERT_FAILURE; // atcac_sha1_ctx isn't large enough for this implementation + } + CL_hashInit((CL_HashContext*)ctx); + + return ATCA_SUCCESS; +} + + +/** \brief Add arbitrary data to a SHA1 hash. + \param[in] ctx Hash context + \param[in] data Data to be added to the hash + \param[in] data_size Data size in bytes + \return ATCA_SUCCESS + */ +int atcac_sw_sha1_update(atcac_sha1_ctx* ctx, const uint8_t* data, size_t data_size) +{ + CL_hashUpdate((CL_HashContext*)ctx, data, (int)data_size); + + return ATCA_SUCCESS; +} + +/** \brief Complete the SHA1 hash in software and return the digest. + * \param[in] ctx Hash context + * \param[out] digest Digest is returned here (20 bytes) + * \return ATCA_SUCCESS + */ +int atcac_sw_sha1_finish(atcac_sha1_ctx* ctx, uint8_t digest[ATCA_SHA1_DIGEST_SIZE]) +{ + CL_hashFinal((CL_HashContext*)ctx, digest); + + return ATCA_SUCCESS; +} + + +/** \brief Perform SHA1 hash of data in software. + * \param[in] data Data to be hashed + * \param[in] data_size Data size in bytes + * \param[out] digest Digest is returned here (20 bytes) + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +int atcac_sw_sha1(const uint8_t* data, size_t data_size, uint8_t digest[ATCA_SHA1_DIGEST_SIZE]) +{ + int ret; + atcac_sha1_ctx ctx; + + ret = atcac_sw_sha1_init(&ctx); + if (ret != ATCA_SUCCESS) + { + return ret; + } + + ret = atcac_sw_sha1_update(&ctx, data, data_size); + if (ret != ATCA_SUCCESS) + { + return ret; + } + + ret = atcac_sw_sha1_finish(&ctx, digest); + if (ret != ATCA_SUCCESS) + { + return ret; + } + + return ATCA_SUCCESS; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.h new file mode 100644 index 0000000..8097c46 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.h @@ -0,0 +1,64 @@ +/** + * \file + * \brief Wrapper API for SHA 1 routines + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef ATCA_CRYPTO_SW_SHA1_H +#define ATCA_CRYPTO_SW_SHA1_H + +#include "atca_crypto_sw.h" +#include +#include + +/** \defgroup atcac_ Software crypto methods (atcac_) + * + * \brief + * These methods provide a software implementation of various crypto + * algorithms + * + @{ */ + +#define ATCA_SHA1_DIGEST_SIZE (20) + +typedef struct +{ + uint32_t pad[32]; //!< Filler value to make sure the actual implementation has enough room to store its context. uint32_t is used to remove some alignment warnings. +} atcac_sha1_ctx; + +#ifdef __cplusplus +extern "C" { +#endif + +int atcac_sw_sha1_init(atcac_sha1_ctx* ctx); +int atcac_sw_sha1_update(atcac_sha1_ctx* ctx, const uint8_t* data, size_t data_size); +int atcac_sw_sha1_finish(atcac_sha1_ctx * ctx, uint8_t digest[ATCA_SHA1_DIGEST_SIZE]); +int atcac_sw_sha1(const uint8_t * data, size_t data_size, uint8_t digest[ATCA_SHA1_DIGEST_SIZE]); + +#ifdef __cplusplus +} +#endif + +/** @} */ +#endif \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.c new file mode 100644 index 0000000..bc82c0b --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.c @@ -0,0 +1,107 @@ +/** + * \file + * \brief Wrapper API for software SHA 256 routines + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "atca_crypto_sw_sha2.h" +#include "hashes/sha2_routines.h" + +/** \brief initializes the SHA256 software + * \param[in] ctx ptr to context data structure + * \return ATCA_SUCCESS on success, otherwise an error code. + */ + +int atcac_sw_sha2_256_init(atcac_sha2_256_ctx* ctx) +{ + if (sizeof(sw_sha256_ctx) > sizeof(atcac_sha2_256_ctx)) + { + return ATCA_ASSERT_FAILURE; // atcac_sha1_ctx isn't large enough for this implementation + } + sw_sha256_init((sw_sha256_ctx*)ctx); + + return ATCA_SUCCESS; +} + +/** \brief updates the running hash with the next block of data, called iteratively for the entire + stream of data to be hashed using the SHA256 software + \param[in] ctx ptr to SHA context data structure + \param[in] data ptr to next block of data to hash + \param[in] data_size size amount of data to hash in the given block, in bytes + \return ATCA_SUCCESS + */ + +int atcac_sw_sha2_256_update(atcac_sha2_256_ctx* ctx, const uint8_t* data, size_t data_size) +{ + sw_sha256_update((sw_sha256_ctx*)ctx, data, (uint32_t)data_size); + + return ATCA_SUCCESS; +} + +/** \brief completes the final SHA256 calculation and returns the final digest/hash + * \param[in] ctx ptr to context data structure + * \param[out] digest receives the computed digest of the SHA 256 + * \return ATCA_SUCCESS + */ + +int atcac_sw_sha2_256_finish(atcac_sha2_256_ctx* ctx, uint8_t digest[ATCA_SHA2_256_DIGEST_SIZE]) +{ + sw_sha256_final((sw_sha256_ctx*)ctx, digest); + + return ATCA_SUCCESS; +} + + +/** \brief single call convenience function which computes Hash of given data using SHA256 software + * \param[in] data pointer to stream of data to hash + * \param[in] data_size size of data stream to hash + * \param[out] digest result + * \return ATCA_SUCCESS on success, otherwise an error code. + */ + +int atcac_sw_sha2_256(const uint8_t* data, size_t data_size, uint8_t digest[ATCA_SHA2_256_DIGEST_SIZE]) +{ + int ret; + atcac_sha2_256_ctx ctx; + + ret = atcac_sw_sha2_256_init(&ctx); + if (ret != ATCA_SUCCESS) + { + return ret; + } + + ret = atcac_sw_sha2_256_update(&ctx, data, data_size); + if (ret != ATCA_SUCCESS) + { + return ret; + } + + ret = atcac_sw_sha2_256_finish(&ctx, digest); + if (ret != ATCA_SUCCESS) + { + return ret; + } + + return ATCA_SUCCESS; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.h new file mode 100644 index 0000000..f9d80d4 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.h @@ -0,0 +1,64 @@ +/** + * \file + * \brief Wrapper API for software SHA 256 routines + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef ATCA_CRYPTO_SW_SHA2_H +#define ATCA_CRYPTO_SW_SHA2_H + +#include "atca_crypto_sw.h" +#include +#include + +/** \defgroup atcac_ Software crypto methods (atcac_) + * + * \brief + * These methods provide a software implementation of various crypto + * algorithms + * + @{ */ + +#define ATCA_SHA2_256_DIGEST_SIZE (32) + +typedef struct +{ + uint32_t pad[48]; //!< Filler value to make sure the actual implementation has enough room to store its context. uint32_t is used to remove some alignment warnings. +} atcac_sha2_256_ctx; + +#ifdef __cplusplus +extern "C" { +#endif + +int atcac_sw_sha2_256_init(atcac_sha2_256_ctx* ctx); +int atcac_sw_sha2_256_update(atcac_sha2_256_ctx* ctx, const uint8_t* data, size_t data_size); +int atcac_sw_sha2_256_finish(atcac_sha2_256_ctx * ctx, uint8_t digest[ATCA_SHA2_256_DIGEST_SIZE]); +int atcac_sw_sha2_256(const uint8_t * data, size_t data_size, uint8_t digest[ATCA_SHA2_256_DIGEST_SIZE]); + +#ifdef __cplusplus +} +#endif + +/** @} */ +#endif \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.c new file mode 100644 index 0000000..19f08ed --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.c @@ -0,0 +1,339 @@ +/** + * \file + * \brief Software implementation of the SHA1 algorithm. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "sha1_routines.h" +#include + + +/** + * \brief Initialize context for performing SHA1 hash in software. + * + * \param[in] ctx Hash context + */ +void CL_hashInit(CL_HashContext *ctx) +{ + static const U32 hashContext_h_init[] = { + 0x67452301, + 0xefcdab89, + 0x98badcfe, + 0x10325476, + 0xc3d2e1f0 + }; + + // Initialize context + memset(ctx, 0, sizeof(*ctx)); + memcpy_P(ctx->h, hashContext_h_init, sizeof(ctx->h)); +} + + + +/** + * \brief Add arbitrary data to a SHA1 hash. + * + * \param[in] ctx Hash context + * \param[in] src Data to be added to the hash + * \param[in] nbytes Data size in bytes + */ + +void CL_hashUpdate(CL_HashContext *ctx, const U8 *src, int nbytes) +{ + + /* + Digest src bytes, updating context. + */ + + U8 i, freeBytes; + U32 temp32; + + typedef struct + { + U8 buf[64]; + } Buf64; + + // We are counting on the fact that Buf64 is 64 bytes long. In + // principle the compiler may make Buf64 bigger 64 bytes, but this + // seems unlikely. Add an assertion check to be sure. Beware that + // assert may not be active in release versions. + // + //assert(sizeof(Buf64) == 64); + + // Get number of free bytes in the buf + freeBytes = (U8)(ctx->byteCount); + freeBytes &= 63; + freeBytes = (U8)(64 - freeBytes); + + while (nbytes > 0) + { + + // Get i, number of bytes to transfer from src + i = freeBytes; + if (nbytes < i) + { + i = (U8)nbytes; + } + + // Copy src bytes to buf + if (i == 64) + { + // This seems to be much faster on IAR than memcpy(). + *(Buf64*)(ctx->buf) = *(Buf64*)src; + } + else + { + // Have to use memcpy, size is other than 64 bytes. + memcpy(((U8*)ctx->buf) + 64 - freeBytes, src, i); + } + + // Adjust for transferred bytes + src += i; + nbytes -= i; + freeBytes -= i; + + // Do SHA crunch if buf is full + if (freeBytes == 0) + { + shaEngine(ctx->buf, ctx->h); + } + + // Update 64-bit byte count + temp32 = (ctx->byteCount += i); + if (temp32 == 0) + { + ++ctx->byteCountHi; + } + + // Set up for next iteration + freeBytes = 64; + } +} + + + +/** \brief Complete the SHA1 hash in software and return the digest. + * \param[in] ctx Hash context + * \param[out] dest Digest is returned here (20 bytes) + */ +void CL_hashFinal(CL_HashContext *ctx, U8 *dest) +{ + + /* + Finish a hash calculation and put result in dest. + */ + + U8 i; + U8 nbytes; + U32 temp; + U8 *ptr; + + /* Append pad byte, clear trailing bytes */ + nbytes = (U8)(ctx->byteCount) & 63; + ((U8*)ctx->buf)[nbytes] = 0x80; + for (i = (nbytes + 1); i < 64; i++) + { + ((U8*)ctx->buf)[i] = 0; + } + + /* + If no room for an 8-byte count at end of buf, digest the buf, + then clear it + */ + if (nbytes > (64 - 9)) + { + shaEngine(ctx->buf, ctx->h); + memset(ctx->buf, 0, 64); + } + + /* + Put the 8-byte bit count at end of buf. We have been tracking + bytes, not bits, so we left-shift our byte count by 3 as we do + this. + */ + temp = ctx->byteCount << 3; // low 4 bytes of bit count + ptr = &((U8*)ctx->buf)[63]; // point to low byte of bit count + for (i = 0; i < 4; i++) + { + *ptr-- = (U8)temp; + temp >>= 8; + } + // + temp = ctx->byteCountHi << 3; + temp |= ctx->byteCount >> (32 - 3); // high 4 bytes of bit count + for (i = 0; i < 4; i++) + { + *ptr-- = (U8)temp; + temp >>= 8; + } + //show("final SHA crunch", ctx->buf, 64); + + /* Final digestion */ + shaEngine(ctx->buf, ctx->h); + + /* Unpack chaining variables to dest bytes. */ + memcpy(dest, ctx->h, 20); + for (i = 0; i < 5; i++) + { + dest[i * 4 + 0] = (ctx->h[i] >> 24) & 0xFF; + dest[i * 4 + 1] = (ctx->h[i] >> 16) & 0xFF; + dest[i * 4 + 2] = (ctx->h[i] >> 8) & 0xFF; + dest[i * 4 + 3] = (ctx->h[i] >> 0) & 0xFF; + } +} + + + +/** \brief Perform SHA1 hash of data in software. + * \param[in] msg Data to be hashed + * \param[in] msgBytes Data size in bytes + * \param[out] dest Digest is returned here (20 bytes) + */ +void CL_hash(U8 *msg, int msgBytes, U8 *dest) +{ + CL_HashContext ctx; + + CL_hashInit(&ctx); + CL_hashUpdate(&ctx, msg, msgBytes); + CL_hashFinal(&ctx, dest); +} + +void shaEngine(U32 *buf, U32 *h) +{ + + /* + SHA-1 Engine. From FIPS 180. + + On entry, buf[64] contains the 64 bytes to digest. These bytes + are destroyed. + + _H[20] contains the 5 chaining variables. They must have the + proper value on entry and are updated on exit. + + The order of bytes in buf[] and _h[] matches that used by the + hardware SHA engine. + */ + + U8 t; + U32 a, b, c, d, e; + U32 temp = 0; + U8 *p; + U32 *w = (U32*)buf; + + /* + Pack first 64 bytes of buf into w[0,...,15]. Within a word, + bytes are big-endian. Do this in place -- buf[0,...,63] + overlays w[0,...,15]. + */ + p = (U8*)w; + for (t = 0; t < 16; t++) + { + temp = (temp << 8) | *p++; + temp = (temp << 8) | *p++; + temp = (temp << 8) | *p++; + temp = (temp << 8) | *p++; + w[t] = temp; + } + + /* + Pack the 20 bytes of _h[] into h[0,...,4]. Do in place using + same convention as for buidling w[]. + */ + //p = (U8*)h; + //for (t = 0; t < 5; t++) { + //temp = (temp << 8) | *p++; + //temp = (temp << 8) | *p++; + //temp = (temp << 8) | *p++; + //temp = (temp << 8) | *p++; + //h[t] = temp; + //} + + /* Copy the chaining variables to a, b, c, d, e */ + a = h[0]; + b = h[1]; + c = h[2]; + d = h[3]; + e = h[4]; + + /* Now do the 80 rounds */ + for (t = 0; t < 80; t++) + { + + temp = a; + leftRotate(temp, 5); + temp += e; + temp += w[t & 0xf]; + + if (t < 20) + { + temp += (b & c) | (~b & d); + temp += 0x5a827999L; + } + else if (t < 40) + { + temp += b ^ c ^ d; + temp += 0x6ed9eba1L; + } + else if (t < 60) + { + temp += (b & c) | (b & d) | (c & d); + temp += 0x8f1bbcdcL; + } + else + { + temp += b ^ c ^ d; + temp += 0xca62c1d6L; + } + + e = d; + d = c; + c = b; leftRotate(c, 30); + b = a; + a = temp; + + temp = w[t & 0xf] ^ w[(t - 3) & 0xf] ^ w[(t - 8) & 0xf] ^ w[(t - 14) & 0xf]; + leftRotate(temp, 1); + w[t & 0xf] = temp; + + } + + /* Update the chaining variables */ + h[0] += a; + h[1] += b; + h[2] += c; + h[3] += d; + h[4] += e; + + /* Unpack the chaining variables into _h[] buffer. */ + //p = (U8*)h; + //for (t = 0; t < 5; t++) { + //temp = h[t]; + //p[3] = (U8)temp; temp >>= 8; + //p[2] = (U8)temp; temp >>= 8; + //p[1] = (U8)temp; temp >>= 8; + //p[0] = (U8)temp; + //p += 4; + //} + +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.h new file mode 100644 index 0000000..6a57f1e --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.h @@ -0,0 +1,94 @@ +/** + * \file + * \brief Software implementation of the SHA1 algorithm. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef __SHA1_ROUTINES_DOT_H__ +#define __SHA1_ROUTINES_DOT_H__ + +#include +#include +#include + +#ifdef WIN32 +#include +#include +#endif + +#include + + +#ifndef U8 +#define U8 uint8_t +#endif + +#ifndef U16 +#define U16 uint16_t +#endif + +#ifndef U32 +#define U32 uint32_t +#endif + + +#ifndef memcpy_P +#define memcpy_P memmove +#endif + +#ifndef strcpy_P +#define strcpy_P strcpy +#endif + +#ifndef _WDRESET +#define _WDRESET() +#define _NOP() +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct +{ + U32 h[20 / 4]; // Ensure it's word aligned + U32 buf[64 / 4]; // Ensure it's word aligned + U32 byteCount; + U32 byteCountHi; +} CL_HashContext; + +#define leftRotate(x, n) (x) = (((x) << (n)) | ((x) >> (32 - (n)))) + +void shaEngine(U32 *buf, U32 *h); +void CL_hashInit(CL_HashContext *ctx); +void CL_hashUpdate(CL_HashContext *ctx, const U8 *src, int nbytes); +void CL_hashFinal(CL_HashContext *ctx, U8 *dest); +void CL_hash(U8 *msg, int msgBytes, U8 *dest); + +#ifdef __cplusplus +} +#endif + +#endif // __SHA1_ROUTINES_DOT_H__ + diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.c new file mode 100644 index 0000000..8f0dc1a --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.c @@ -0,0 +1,255 @@ +/** + * \file + * \brief Software implementation of the SHA256 algorithm. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include +#include "sha2_routines.h" + +#define rotate_right(value, places) ((value >> places) | (value << (32 - places))) + +/** + * \brief Processes whole blocks (64 bytes) of data. + * + * \param[in] ctx SHA256 hash context + * \param[in] blocks Raw blocks to be processed + * \param[in] block_count Number of 64-byte blocks to process + */ +static void sw_sha256_process(sw_sha256_ctx* ctx, const uint8_t* blocks, uint32_t block_count) +{ + int i = 0; + uint32_t block = 0; + + union + { + uint32_t w_word[SHA256_BLOCK_SIZE]; + uint8_t w_byte[SHA256_BLOCK_SIZE * sizeof(uint32_t)]; + } w_union; + + static const uint32_t k[] = { + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 + }; + + // Loop through all the blocks to process + for (block = 0; block < block_count; block++) + { + uint32_t w_index; + uint32_t word_value; + uint32_t s0, s1; + uint32_t t1, t2; + uint32_t maj, ch; + uint32_t rotate_register[8]; + const uint8_t* cur_msg_block = &blocks[block * SHA256_BLOCK_SIZE]; + + // Swap word bytes + for (i = 0; i < SHA256_BLOCK_SIZE; i += 4) + { + w_union.w_byte[i + 3] = cur_msg_block[i + 0]; + w_union.w_byte[i + 2] = cur_msg_block[i + 1]; + w_union.w_byte[i + 1] = cur_msg_block[i + 2]; + w_union.w_byte[i + 0] = cur_msg_block[i + 3]; + } + + w_index = 16; + while (w_index < SHA256_BLOCK_SIZE) + { + // right rotate for 32-bit variable in C: (value >> places) | (value << 32 - places) + word_value = w_union.w_word[w_index - 15]; + s0 = rotate_right(word_value, 7) ^ rotate_right(word_value, 18) ^ (word_value >> 3); + + word_value = w_union.w_word[w_index - 2]; + s1 = rotate_right(word_value, 17) ^ rotate_right(word_value, 19) ^ (word_value >> 10); + + w_union.w_word[w_index] = w_union.w_word[w_index - 16] + s0 + w_union.w_word[w_index - 7] + s1; + + w_index++; + } + + // Initialize hash value for this chunk. + for (i = 0; i < 8; i++) + { + rotate_register[i] = ctx->hash[i]; + } + + // hash calculation loop + for (i = 0; i < SHA256_BLOCK_SIZE; i++) + { + s0 = rotate_right(rotate_register[0], 2) + ^ rotate_right(rotate_register[0], 13) + ^ rotate_right(rotate_register[0], 22); + maj = (rotate_register[0] & rotate_register[1]) + ^ (rotate_register[0] & rotate_register[2]) + ^ (rotate_register[1] & rotate_register[2]); + t2 = s0 + maj; + s1 = rotate_right(rotate_register[4], 6) + ^ rotate_right(rotate_register[4], 11) + ^ rotate_right(rotate_register[4], 25); + ch = (rotate_register[4] & rotate_register[5]) + ^ (~rotate_register[4] & rotate_register[6]); + t1 = rotate_register[7] + s1 + ch + k[i] + w_union.w_word[i]; + + rotate_register[7] = rotate_register[6]; + rotate_register[6] = rotate_register[5]; + rotate_register[5] = rotate_register[4]; + rotate_register[4] = rotate_register[3] + t1; + rotate_register[3] = rotate_register[2]; + rotate_register[2] = rotate_register[1]; + rotate_register[1] = rotate_register[0]; + rotate_register[0] = t1 + t2; + } + + // Add the hash of this block to current result. + for (i = 0; i < 8; i++) + { + ctx->hash[i] += rotate_register[i]; + } + } +} + +/** + * \brief Intialize the software SHA256. + * + * \param[in] ctx SHA256 hash context + */ + +void sw_sha256_init(sw_sha256_ctx* ctx) +{ + static const uint32_t hash_init[] = { + 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, + 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 + }; + int i; + + memset(ctx, 0, sizeof(*ctx)); + for (i = 0; i < 8; i++) + { + ctx->hash[i] = hash_init[i]; + } +} + +/** + * \brief updates the running hash with the next block of data, called iteratively for the entire + * stream of data to be hashed using the SHA256 software + * + * \param[in] ctx SHA256 hash context + * \param[in] msg Raw blocks to be processed + * \param[in] msg_size The size of the message passed + */ +void sw_sha256_update(sw_sha256_ctx* ctx, const uint8_t* msg, uint32_t msg_size) +{ + uint32_t block_count; + uint32_t rem_size = SHA256_BLOCK_SIZE - ctx->block_size; + uint32_t copy_size = msg_size > rem_size ? rem_size : msg_size; + + // Copy data into current block + memcpy(&ctx->block[ctx->block_size], msg, copy_size); + + if (ctx->block_size + msg_size < SHA256_BLOCK_SIZE) + { + // Not enough data to finish off the current block + ctx->block_size += msg_size; + return; + } + + // Process the current block + sw_sha256_process(ctx, ctx->block, 1); + + // Process any additional blocks + msg_size -= copy_size; // Adjust to the remaining message bytes + block_count = msg_size / SHA256_BLOCK_SIZE; + sw_sha256_process(ctx, &msg[copy_size], block_count); + + // Save any remaining data + ctx->total_msg_size += (block_count + 1) * SHA256_BLOCK_SIZE; + ctx->block_size = msg_size % SHA256_BLOCK_SIZE; + memcpy(ctx->block, &msg[copy_size + block_count * SHA256_BLOCK_SIZE], ctx->block_size); +} + + +/** \brief completes the final SHA256 calculation and returns the final digest/hash + * \param[in] ctx ptr to context data structure + * \param[out] digest receives the computed digest of the SHA 256 + */ +void sw_sha256_final(sw_sha256_ctx* ctx, uint8_t digest[SHA256_DIGEST_SIZE]) +{ + int i, j; + uint32_t msg_size_bits; + uint32_t pad_zero_count; + + // Calculate the total message size in bits + ctx->total_msg_size += ctx->block_size; + msg_size_bits = ctx->total_msg_size * 8; + + // Calculate the number of padding zero bytes required between the 1 bit byte and the 64 bit message size in bits. + pad_zero_count = (SHA256_BLOCK_SIZE - ((ctx->block_size + 9) % SHA256_BLOCK_SIZE)) % SHA256_BLOCK_SIZE; + + // Append a single 1 bit + ctx->block[ctx->block_size++] = 0x80; + + // Add padding zeros plus upper 4 bytes of total msg size in bits (only supporting 32bit message bit counts) + memset(&ctx->block[ctx->block_size], 0, pad_zero_count + 4); + ctx->block_size += pad_zero_count + 4; + + // Add the total message size in bits to the end of the current block. Technically this is + // supposed to be 8 bytes. This shortcut will reduce the max message size to 536,870,911 bytes. + ctx->block[ctx->block_size++] = (uint8_t)(msg_size_bits >> 24); + ctx->block[ctx->block_size++] = (uint8_t)(msg_size_bits >> 16); + ctx->block[ctx->block_size++] = (uint8_t)(msg_size_bits >> 8); + ctx->block[ctx->block_size++] = (uint8_t)(msg_size_bits >> 0); + + sw_sha256_process(ctx, ctx->block, ctx->block_size / SHA256_BLOCK_SIZE); + + // All blocks have been processed. + // Concatenate the hashes to produce digest, MSB of every hash first. + for (i = 0; i < 8; i++) + { + for (j = sizeof(int32_t) - 1; j >= 0; j--, ctx->hash[i] >>= 8) + { + digest[i * sizeof(int32_t) + j] = ctx->hash[i] & 0xFF; + } + } +} + +/** \brief single call convenience function which computes Hash of given data using SHA256 software + * \param[in] message pointer to stream of data to hash + * \param[in] len size of data stream to hash + * \param[out] digest result + */ + +void sw_sha256(const uint8_t* message, unsigned int len, uint8_t digest[SHA256_DIGEST_SIZE]) +{ + sw_sha256_ctx ctx; + + sw_sha256_init(&ctx); + sw_sha256_update(&ctx, message, len); + sw_sha256_final(&ctx, digest); +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.h new file mode 100644 index 0000000..f024942 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.h @@ -0,0 +1,61 @@ +/** + * \file + * \brief Software implementation of the SHA256 algorithm. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef SHA2_ROUTINES_H +#define SHA2_ROUTINES_H + +#include + +#define SHA256_DIGEST_SIZE (32) +#define SHA256_BLOCK_SIZE (64) + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct +{ + uint32_t total_msg_size; //!< Total number of message bytes processed + uint32_t block_size; //!< Number of bytes in current block + uint8_t block[SHA256_BLOCK_SIZE * 2]; //!< Unprocessed message storage + uint32_t hash[8]; //!< Hash state +} sw_sha256_ctx; + +void sw_sha256_init(sw_sha256_ctx* ctx); + +void sw_sha256_update(sw_sha256_ctx* ctx, const uint8_t* message, uint32_t len); + +void sw_sha256_final(sw_sha256_ctx * ctx, uint8_t digest[SHA256_DIGEST_SIZE]); + +void sw_sha256(const uint8_t * message, unsigned int len, uint8_t digest[SHA256_DIGEST_SIZE]); + +#ifdef __cplusplus +} +#endif + +#endif // SHA2_ROUTINES_H + diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/cryptoauthlib.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/cryptoauthlib.h new file mode 100644 index 0000000..4822d45 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/cryptoauthlib.h @@ -0,0 +1,57 @@ +/** + * \file + * \brief Single aggregation point for all CryptoAuthLib header files + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef _ATCA_LIB_H +#define _ATCA_LIB_H + +#include +#include + +#include "hal/atca_hal.h" +#include "atca_status.h" +#include "atca_device.h" +#include "atca_command.h" +#include "atca_cfgs.h" +#include "basic/atca_basic.h" +#include "basic/atca_helpers.h" + +#ifdef ATCAPRINTF + #include +//#define BREAK(status, message) {printf(__FUNCTION__": "message" -- Status: %02X\r\n", status); break;} + #define BREAK(status, message) { printf(": "message " -- Status: %02X\r\n", status); break; } + #define RETURN(status, message) { printf(": "message " -- Status: %02X\r\n", status); return status; } + #define PRINTSTAT(status, message) { printf(": "message " -- Status: %02X\r\n", status); } + #define PRINT(message) { printf(": "message "\r\n"); break; } + #define DBGOUT(message) { printf(": "message "\r\n"); break; } +#else + #define BREAK(status, message) { break; } + #define RETURN(status, message) { return status; } + #define PRINT(message) { break; } + #define DBGOUT(message) { break; } +#endif + +#endif diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/cryptoauthlib_config.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/cryptoauthlib_config.h new file mode 100644 index 0000000..a27d8e1 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/cryptoauthlib_config.h @@ -0,0 +1,62 @@ +/* + + * \file + * \brief CryptoAuthLib Basic API methods - a simple crypto authentication API. + * These methods manage a global ATCADevice object behind the scenes. They also + * manage the wake/idle state transitions so callers don't need to. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. +*/ + +#ifndef CRYPTOAUTHLIB_CONFIG_H +#define CRYPTOAUTHLIB_CONFIG_H + + +#ifndef ATCA_HAL_I2C +#define ATCA_HAL_I2C 1 +#endif + +#ifndef ATCA_NO_HEAP +#define ATCA_NO_HEAP 1 +#endif + +#ifndef ATCA_NO_POLL +#define ATCA_NO_POLL 1 +#endif + +#ifndef ATCAPRINTF +#define ATCAPRINTF 1 +#endif + +#ifndef CONF_CRYPTOAUTHLIB_DEBUG_HELPER +#define CONF_CRYPTOAUTHLIB_DEBUG_HELPER 0 +#endif + +/* Enable debug helper function */ +#if CONF_CRYPTOAUTHLIB_DEBUG_HELPER == 1 +#ifndef ATCAdebug_print +#define ATCAdebug_print 1 +#endif +#endif + +#endif // CRYPTOAUTHLIB_CONFIG_H diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.c new file mode 100644 index 0000000..fd89ee6 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.c @@ -0,0 +1,221 @@ +/** + * \file + * \brief low-level HAL - methods used to setup indirection to physical layer interface. + * this level does the dirty work of abstracting the higher level ATCAIFace methods from the + * low-level physical interfaces. Its main goal is to keep low-level details from bleeding into + * the logical interface implemetation. + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +/* when incorporating ATCA HAL into your application, you need to adjust the #defines in atca_hal.h to include + * and exclude appropriate interfaces - this optimizes memory use when not using a specific iface implementation in your application */ + +#include "cryptoauthlib.h" +#include "atca_hal.h" + +/** \brief Standard HAL API for ATCA to initialize a physical interface + * \param[in] cfg pointer to ATCAIfaceCfg object + * \param[in] hal pointer to ATCAHAL_t intermediate data structure + * \return ATCA_SUCCESS on success, otherwise an error code. + */ + +ATCA_STATUS hal_iface_init(ATCAIfaceCfg *cfg, ATCAHAL_t *hal) +{ + // Because C isn't a real object oriented language or dynamically typed, some switch in the overall system is unavoidable + // The key here is to provide the flexibility to include just the types of interfaces you want/need without breaking the + // object model. The former is needed so in an embedded, constrained memory environment, you don't have to pay the price + // (in terms of memory) for interfaces you don't use in your application. + ATCA_STATUS status = ATCA_COMM_FAIL; + + switch (cfg->iface_type) + { + case ATCA_I2C_IFACE: + #ifdef ATCA_HAL_I2C + hal->halinit = &hal_i2c_init; + hal->halpostinit = &hal_i2c_post_init; + hal->halreceive = &hal_i2c_receive; + hal->halsend = &hal_i2c_send; + hal->halsleep = &hal_i2c_sleep; + hal->halwake = &hal_i2c_wake; + hal->halidle = &hal_i2c_idle; + hal->halrelease = &hal_i2c_release; + hal->hal_data = NULL; + + status = ATCA_SUCCESS; + #endif + break; + case ATCA_SWI_IFACE: + #ifdef ATCA_HAL_SWI + hal->halinit = &hal_swi_init; + hal->halpostinit = &hal_swi_post_init; + hal->halreceive = &hal_swi_receive; + hal->halsend = &hal_swi_send; + hal->halsleep = &hal_swi_sleep; + hal->halwake = &hal_swi_wake; + hal->halidle = &hal_swi_idle; + hal->halrelease = &hal_swi_release; + hal->hal_data = NULL; + + status = ATCA_SUCCESS; + #endif + break; + case ATCA_UART_IFACE: + #ifdef ATCA_HAL_UART + // TODO - initialize UART iface + #endif + #ifdef ATCA_HAL_KIT_CDC + hal->halinit = &hal_kit_cdc_init; + hal->halpostinit = &hal_kit_cdc_post_init; + hal->halreceive = &hal_kit_cdc_receive; + hal->halsend = &hal_kit_cdc_send; + hal->halsleep = &hal_kit_cdc_sleep; + hal->halwake = &hal_kit_cdc_wake; + hal->halidle = &hal_kit_cdc_idle; + hal->halrelease = &hal_kit_cdc_release; + hal->hal_data = NULL; + + status = ATCA_SUCCESS; + #endif + break; + case ATCA_SPI_IFACE: + #ifdef ATCA_HAL_SPI + // TODO - initialize SPI iface + #endif + break; + case ATCA_HID_IFACE: + #ifdef ATCA_HAL_KIT_HID + hal->halinit = &hal_kit_hid_init; + hal->halpostinit = &hal_kit_hid_post_init; + hal->halreceive = &hal_kit_hid_receive; + hal->halsend = &hal_kit_hid_send; + hal->halsleep = &hal_kit_hid_sleep; + hal->halwake = &hal_kit_hid_wake; + hal->halidle = &hal_kit_hid_idle; + hal->halrelease = &hal_kit_hid_release; + hal->hal_data = NULL; + + status = ATCA_SUCCESS; + #endif + break; + case ATCA_CUSTOM_IFACE: + #ifdef ATCA_HAL_CUSTOM + hal->halinit = cfg->atcacustom.halinit; + hal->halpostinit = cfg->atcacustom.halpostinit; + hal->halreceive = cfg->atcacustom.halreceive; + hal->halsend = cfg->atcacustom.halsend; + hal->halsleep = cfg->atcacustom.halsleep; + hal->halwake = cfg->atcacustom.halwake; + hal->halidle = cfg->atcacustom.halidle; + hal->halrelease = cfg->atcacustom.halrelease; + hal->hal_data = NULL; + + status = ATCA_SUCCESS; + #endif + break; + default: + break; + } + return status; +} + +/** \brief releases a physical interface, HAL knows how to interpret hal_data + * \param[in] iface_type - the type of physical interface to release + * \param[in] hal_data - pointer to opaque hal data maintained by HAL implementation for this interface type + * \return ATCA_SUCCESS on success, otherwise an error code. + */ + +ATCA_STATUS hal_iface_release(ATCAIfaceType iface_type, void *hal_data) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + + switch (iface_type) + { + case ATCA_I2C_IFACE: +#ifdef ATCA_HAL_I2C + status = hal_i2c_release(hal_data); +#endif + break; + case ATCA_SWI_IFACE: + #ifdef ATCA_HAL_SWI + status = hal_swi_release(hal_data); +#endif + break; + case ATCA_UART_IFACE: + #ifdef ATCA_HAL_UART + // TODO - release HAL UART +#endif +#ifdef ATCA_HAL_KIT_CDC + status = hal_kit_cdc_release(hal_data); +#endif + break; + case ATCA_SPI_IFACE: +#ifdef ATCA_HAL_SPI + // TODO - release HAL SPI +#endif + break; + case ATCA_HID_IFACE: +#ifdef ATCA_HAL_KIT_HID + status = hal_kit_hid_release(hal_data); +#endif + break; + case ATCA_CUSTOM_IFACE: +#ifdef ATCA_HAL_CUSTOM + // Current architecture/API prevents us from accessing the custom + // release function. So we just assume success at this point. + status = ATCA_SUCCESS; +#endif + break; + default: + break; + } + + return status; +} + +/** \brief Utility function for hal_wake to check the reply. + * \param[in] response Wake response to be checked. + * \param[in] response_size Size of the response to check. + * \return ATCA_SUCCESS for expected wake, ATCA_STATUS_SELFTEST_ERROR if the + * power on self test failed, ATCA_WAKE_FAILED for other failures. + */ +ATCA_STATUS hal_check_wake(const uint8_t* response, int response_size) +{ + const uint8_t expected_response[4] = { 0x04, 0x11, 0x33, 0x43 }; + uint8_t selftest_fail_resp[4] = { 0x04, 0x07, 0xC4, 0x40 }; + + if (response_size != 4) + { + return ATCA_WAKE_FAILED; + } + if (memcmp(response, expected_response, 4) == 0) + { + return ATCA_SUCCESS; + } + if (memcmp(response, selftest_fail_resp, 4) == 0) + { + return ATCA_STATUS_SELFTEST_ERROR; + } + return ATCA_WAKE_FAILED; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.h new file mode 100644 index 0000000..9a09509 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.h @@ -0,0 +1,177 @@ +/** + * \file + * \brief low-level HAL - methods used to setup indirection to physical layer interface + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#ifndef ATCA_HAL_H_ +#define ATCA_HAL_H_ + +#include "atca_status.h" +#include "atca_iface.h" +#include "atca_start_config.h" +#include "atca_start_iface.h" + +/** \defgroup hal_ Hardware abstraction layer (hal_) + * + * \brief + * These methods define the hardware abstraction layer for communicating with a CryptoAuth device + * + @{ */ + +/** \brief an intermediary data structure to allow the HAL layer to point the standard API functions + used by the upper layers to the HAL implementation for the interface. This isolates the upper layers + and loosely couples the ATCAIface object from the physical implementation. + */ + +typedef struct +{ + // interface is a group of function pointers to a specific HAL implementation for this interface type + // so these function pointers are initialized in the HAL layer in order to help keep the ATCAIface object + // from needing to know the low-level details, including global naming of HAL methods and physical implementation. + ATCA_STATUS (*halinit)(void *hal, ATCAIfaceCfg *cfg); + ATCA_STATUS (*halpostinit)(ATCAIface iface); + ATCA_STATUS (*halsend)(ATCAIface iface, uint8_t *txdata, int txlength); + ATCA_STATUS (*halreceive)(ATCAIface iface, uint8_t* rxdata, uint16_t* rxlength); + ATCA_STATUS (*halwake)(ATCAIface iface); + ATCA_STATUS (*halidle)(ATCAIface iface); + ATCA_STATUS (*halsleep)(ATCAIface iface); + ATCA_STATUS (*halrelease)(void* hal_data); + + void *hal_data; // points to whatever the HAL implementation for this interface wants it to, HAL manages. +} ATCAHAL_t; + +#ifdef __cplusplus +extern "C" { +#endif + +extern ATCA_STATUS hal_iface_init(ATCAIfaceCfg *, ATCAHAL_t* hal); +extern ATCA_STATUS hal_iface_release(ATCAIfaceType, void* hal_data); + +ATCA_STATUS hal_check_wake(const uint8_t* response, int response_size); + +// Added one or more of the following defines to your compiler's defines to include add support for +// that particular interface in your application. For example, if you're writing an I2C to SWI +// bridge, add both ATCA_HAL_I2C and ATCA_HAL_SWI defines to your compiler settings and then +// include implementations for both interfaces in the HAL. + +// At least one of these symbols will be defined in the project or makefile for each application +//#define ATCA_HAL_I2C +//#define ATCA_HAL_SWI +//#define ATCA_HAL_SPI +//#define ATCA_HAL_UART +//#define ATCA_HAL_KIT_HID +//#define ATCA_HAL_KIT_CDC + +// forward declare known physical layer APIs that must be implemented by the HAL layer (./hal/xyz) for this interface type + +#ifdef ATCA_HAL_I2C +ATCA_STATUS hal_i2c_init(void *hal, ATCAIfaceCfg *cfg); +ATCA_STATUS hal_i2c_post_init(ATCAIface iface); +ATCA_STATUS hal_i2c_send(ATCAIface iface, uint8_t *txdata, int txlength); +ATCA_STATUS hal_i2c_receive(ATCAIface iface, uint8_t *rxdata, uint16_t *rxlength); +ATCA_STATUS hal_i2c_wake(ATCAIface iface); +ATCA_STATUS hal_i2c_idle(ATCAIface iface); +ATCA_STATUS hal_i2c_sleep(ATCAIface iface); +ATCA_STATUS hal_i2c_release(void *hal_data); +ATCA_STATUS hal_i2c_discover_buses(int i2c_buses[], int max_buses); +ATCA_STATUS hal_i2c_discover_devices(int bus_num, ATCAIfaceCfg *cfg, int *found); +#endif + +#ifdef ATCA_HAL_SWI +ATCA_STATUS hal_swi_init(void *hal, ATCAIfaceCfg *cfg); +ATCA_STATUS hal_swi_post_init(ATCAIface iface); +ATCA_STATUS hal_swi_send(ATCAIface iface, uint8_t *txdata, int txlength); +ATCA_STATUS hal_swi_receive(ATCAIface iface, uint8_t *rxdata, uint16_t *rxlength); +ATCA_STATUS hal_swi_wake(ATCAIface iface); +ATCA_STATUS hal_swi_idle(ATCAIface iface); +ATCA_STATUS hal_swi_sleep(ATCAIface iface); +ATCA_STATUS hal_swi_release(void *hal_data); +ATCA_STATUS hal_swi_discover_buses(int swi_buses[], int max_buses); +ATCA_STATUS hal_swi_discover_devices(int bus_num, ATCAIfaceCfg *cfg, int *found); +#endif + +#ifdef ATCA_HAL_UART +ATCA_STATUS hal_uart_init(void *hal, ATCAIfaceCfg *cfg); +ATCA_STATUS hal_uart_post_init(ATCAIface iface); +ATCA_STATUS hal_uart_send(ATCAIface iface, uint8_t *txdata, int txlength); +ATCA_STATUS hal_uart_receive(ATCAIface iface, uint8_t *rxdata, uint16_t *rxlength); +ATCA_STATUS hal_uart_wake(ATCAIface iface); +ATCA_STATUS hal_uart_idle(ATCAIface iface); +ATCA_STATUS hal_uart_sleep(ATCAIface iface); +ATCA_STATUS hal_uart_release(ATCAIface iface); +ATCA_STATUS hal_uart_discover_buses(int uart_buses[], int max_buses); +ATCA_STATUS hal_uart_discover_devices(int bus_num, ATCAIfaceCfg *cfg, int *found); +#endif + +#ifdef ATCA_HAL_KIT_CDC +ATCA_STATUS hal_kit_cdc_init(void *hal, ATCAIfaceCfg *cfg); +ATCA_STATUS hal_kit_cdc_post_init(ATCAIface iface); +ATCA_STATUS hal_kit_cdc_send(ATCAIface iface, uint8_t *txdata, int txlength); +ATCA_STATUS hal_kit_cdc_receive(ATCAIface iface, uint8_t *rxdata, uint16_t *rxlength); +ATCA_STATUS hal_kit_cdc_wake(ATCAIface iface); +ATCA_STATUS hal_kit_cdc_idle(ATCAIface iface); +ATCA_STATUS hal_kit_cdc_sleep(ATCAIface iface); +ATCA_STATUS hal_kit_cdc_release(void *hal_data); +ATCA_STATUS hal_kit_cdc_discover_buses(int cdc_buses[], int max_buses); +ATCA_STATUS hal_kit_cdc_discover_devices(int bus_num, ATCAIfaceCfg *cfg, int *found); +#endif + +#ifdef ATCA_HAL_KIT_HID +ATCA_STATUS hal_kit_hid_init(void *hal, ATCAIfaceCfg *cfg); +ATCA_STATUS hal_kit_hid_post_init(ATCAIface iface); +ATCA_STATUS hal_kit_hid_send(ATCAIface iface, uint8_t *txdata, int txlength); +ATCA_STATUS hal_kit_hid_receive(ATCAIface iface, uint8_t *rxdata, uint16_t *rxlength); +ATCA_STATUS hal_kit_hid_wake(ATCAIface iface); +ATCA_STATUS hal_kit_hid_idle(ATCAIface iface); +ATCA_STATUS hal_kit_hid_sleep(ATCAIface iface); +ATCA_STATUS hal_kit_hid_release(void *hal_data); +ATCA_STATUS hal_kit_hid_discover_buses(int hid_buses[], int max_buses); +ATCA_STATUS hal_kit_hid_discover_devices(int bus_num, ATCAIfaceCfg *cfg, int *found); +#endif + +/** \brief Timer API implemented at the HAL level */ +void atca_delay_us(uint32_t delay); +void atca_delay_10us(uint32_t delay); +void atca_delay_ms(uint32_t delay); + +/** \brief Optional hal interfaces */ +ATCA_STATUS hal_create_mutex(void ** ppMutex, char* pName); +ATCA_STATUS hal_destroy_mutex(void * pMutex); +ATCA_STATUS hal_lock_mutex(void * pMutex); +ATCA_STATUS hal_unlock_mutex(void * pMutex); + +/** \brief If an RTOS is being use make sure the delay definitions do not conflict */ +#ifdef ATCA_USE_RTOS_TIMER +void atca_delay_ms_internal(uint32_t delay); +#endif + +#ifdef __cplusplus +} +#endif + +/** @} */ + +#endif /* ATCA_HAL_H_ */ diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.c new file mode 100644 index 0000000..6a14263 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.c @@ -0,0 +1,179 @@ + + +#include +#include "atca_hal.h" +#include "atca_i2c_hal.h" +#include "../atca_device.h" +#include "../atca_status.h" +#include "../../mcc.h" +#include "../../../mcc_generated_files/include/twi0_master.h" +#include "../../../mcc_generated_files/drivers/i2c_simple_master.h" + + + +/** \brief initialize an I2C interface using given config + * \param[in] hal - opaque ptr to HAL data + * \param[in] cfg - interface configuration + */ +uint8_t i2c_address = 0; + +ATCA_STATUS hal_i2c_init(void *hal, ATCAIfaceCfg *cfg) +{ + i2c_address = (cfg->atcai2c.slave_address) >> 1; + I2C0_Open(i2c_address); + + return ATCA_SUCCESS; +} + + +/** \brief HAL implementation of I2C post init + * \param[in] iface instance + * \return ATCA_SUCCESS + */ +ATCA_STATUS hal_i2c_post_init(ATCAIface iface) +{ + return ATCA_SUCCESS; +} + + +/** \brief HAL implementation of I2C send over ASF + * \param[in] iface instance + * \param[in] txdata pointer to space to bytes to send + * \param[in] txlength number of bytes to send + * \return ATCA_STATUS + */ + +ATCA_STATUS hal_i2c_send(ATCAIface iface, uint8_t *txdata, int txlength) +{ + txdata[0] = 0x03; // insert the Word Address Value, Command token + txlength++; // account for word address value byte. + + i2c_writeNBytes(i2c_address, txdata, txlength); + + return ATCA_SUCCESS; +} + +/** \brief HAL implementation of I2C receive function for ASF I2C + * \param[in] iface instance + * \param[in] rxdata pointer to space to receive the data + * \param[in] rxlength ptr to expected number of receive bytes to request + * \return ATCA_STATUS + */ + +ATCA_STATUS hal_i2c_receive(ATCAIface iface, uint8_t *rxdata, uint16_t *rxlength) +{ + uint16_t rxdata_max_size = *rxlength; + + *rxlength = 0; + if (rxdata_max_size < 1) { + return ATCA_SMALL_BUFFER; + } + + *rxdata = 0; + i2c_readNBytes(i2c_address, rxdata, 1); + + if ((rxdata[0] < ATCA_RSP_SIZE_MIN) || (rxdata[0] > ATCA_RSP_SIZE_MAX)) { + return ATCA_INVALID_SIZE; + } + if (rxdata[0] > rxdata_max_size) { + return ATCA_SMALL_BUFFER; + } + + i2c_readNBytes(i2c_address, &rxdata[1], rxdata[0] - 1); + *rxlength = rxdata[0]; + + return ATCA_SUCCESS; +} + +/** \brief wake up CryptoAuth device using I2C bus + * \param[in] iface interface to logical device to wakeup + */ + +ATCA_STATUS hal_i2c_wake(ATCAIface iface) +{ + ATCAIfaceCfg *cfg = atgetifacecfg(iface); + uint32_t bdrt = cfg->atcai2c.baud; + uint8_t data[4]; + uint8_t zero_byte = 0; + + + i2c_writeNBytes(i2c_address, &zero_byte, 1); + + atca_delay_us(cfg->wake_delay); + + // receive the wake up response + i2c_readNBytes(i2c_address, data, 4); + + return hal_check_wake(data, 4); + +} + +/** \brief idle CryptoAuth device using I2C bus + * \param[in] iface interface to logical device to idle + */ + +ATCA_STATUS hal_i2c_idle(ATCAIface iface) +{ + uint8_t data = 0x02; + + i2c_writeNBytes(i2c_address, &data, 1); + + return ATCA_SUCCESS; +} + +/** \brief sleep CryptoAuth device using I2C bus + * \param[in] iface interface to logical device to sleep + */ + +ATCA_STATUS hal_i2c_sleep(ATCAIface iface) +{ + uint8_t data = 0x01; + + i2c_writeNBytes(i2c_address, &data, 1); + return ATCA_SUCCESS; +} + +/** \brief manages reference count on given bus and releases resource if no more refences exist + * \param[in] hal_data - opaque pointer to hal data structure - known only to the HAL implementation + * return ATCA_SUCCESS + */ + +ATCA_STATUS hal_i2c_release(void *hal_data) +{ + //TODO: For the moment, don't do anything + + return ATCA_SUCCESS; +} + +/** \brief discover i2c buses available for this hardware + * this maintains a list of logical to physical bus mappings freeing the application + * of the a-priori knowledge + * \param[in] i2c_buses - an array of logical bus numbers + * \param[in] max_buses - maximum number of buses the app wants to attempt to discover + * \return ATCA_SUCCESS + */ + +ATCA_STATUS hal_i2c_discover_buses(int i2c_buses[], int max_buses) +{ + + //TODO: For the moment, don't do anything + + return ATCA_SUCCESS; +} + +/** \brief discover any CryptoAuth devices on a given logical bus number + * \param[in] busNum logical bus number on which to look for CryptoAuth devices + * \param[out] cfg pointer to head of an array of interface config structures which get filled in by this method + * \param[out] found number of devices found on this bus + * \return ATCA_SUCCESS + */ + +ATCA_STATUS hal_i2c_discover_devices(int busNum, ATCAIfaceCfg cfg[], int *found) +{ + //TODO: For the moment, don't do anything + + return ATCA_SUCCESS; +} + + +/** @} */ diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.h new file mode 100644 index 0000000..280fef3 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.h @@ -0,0 +1,24 @@ + +#ifndef ATCA_I2C_HAL_H_ +#define ATCA_I2C_HAL_H_ + +/** \defgroup hal_ Hardware abstraction layer (hal_) + * + * \brief + * These methods define the hardware abstraction layer for communicating with a CryptoAuth device + * using I2C driver of ASF. + * + @{ */ + +ATCA_STATUS hal_i2c_init(void *hal, ATCAIfaceCfg *cfg); +ATCA_STATUS hal_i2c_post_init(ATCAIface iface); +ATCA_STATUS hal_i2c_send(ATCAIface iface, uint8_t *txdata, int txlength); +ATCA_STATUS hal_i2c_receive(ATCAIface iface, uint8_t *rxdata, uint16_t *rxlength); +ATCA_STATUS hal_i2c_wake(ATCAIface iface); +ATCA_STATUS hal_i2c_idle(ATCAIface iface); +ATCA_STATUS hal_i2c_sleep(ATCAIface iface); +ATCA_STATUS hal_i2c_release(void *hal_data); + + +/** @} */ +#endif /* ATCA_I2C_HAL_H_ */ diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_start_config.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_start_config.h new file mode 100644 index 0000000..0dd4ce0 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_start_config.h @@ -0,0 +1,6 @@ +/* + this is a placeholder include used to satisfy the include + + when used with Atmel START, this file will be overwritten + with the user configuration generated by Atmel START + */ diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_start_iface.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_start_iface.h new file mode 100644 index 0000000..c290da9 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_start_iface.h @@ -0,0 +1,6 @@ +/* + this is a placeholder include used to satisfy the include + + when used with Atmel START, this file will be overwritten + with the user configuration generated by Atmel START + */ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.c new file mode 100644 index 0000000..1f86b09 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.c @@ -0,0 +1,45 @@ + +#include "../../config/clock_config.h" +#include + +/** \defgroup hal_ Hardware abstraction layer (hal_) + * + * \brief + * These methods define the hardware abstraction layer for communicating with a CryptoAuth device + * + @{ */ + +/** \brief This function delays for a number of microseconds. + * + * You can override this function if you like to do + * something else in your system while delaying. + * \param[in] delay number of microseconds to delay + */ +void atca_delay_us(uint32_t delay) +{ + /*Here you can write your own delay routine*/ + while (delay) { + _delay_us(1); + delay--; + } +} + +/** \brief This function delays for a number of milliseconds. + * + * You can override this function if you like to do + * something else in your system while delaying. + * \param[in] delay number of milliseconds to delay + */ +void atca_delay_ms(uint32_t delay) +{ + /*Here you can write your own delay routine*/ + while (delay) { + _delay_ms(1); + delay--; + } +} + + + + +/** @} */ diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.c new file mode 100644 index 0000000..b465ad3 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.c @@ -0,0 +1,1464 @@ +/** + * \file + * \brief Host side methods to support CryptoAuth computations + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "atca_host.h" +#include "crypto/atca_crypto_sw_sha2.h" + + +/** \brief This function copies otp and sn data into a command buffer. + * + * \param[in, out] param pointer to parameter structure + * \return pointer to command buffer byte that was copied last + */ +uint8_t *atcah_include_data(struct atca_include_data_in_out *param) +{ + if (param->mode & MAC_MODE_INCLUDE_OTP_88) + { + memcpy(param->p_temp, param->otp, 11); // use OTP[0:10], Mode:5 is overridden + param->p_temp += 11; + } + else + { + if (param->mode & MAC_MODE_INCLUDE_OTP_64) + { + memcpy(param->p_temp, param->otp, 8); // use 8 bytes OTP[0:7] for (6) + } + else + { + memset(param->p_temp, 0, 8); // use 8 zeros for (6) + } + param->p_temp += 8; + + memset(param->p_temp, 0, 3); // use 3 zeros for (7) + param->p_temp += 3; + } + + // (8) 1 byte SN[8] + *param->p_temp++ = param->sn[8]; + + // (9) 4 bytes SN[4:7] or zeros + if (param->mode & MAC_MODE_INCLUDE_SN) + { + memcpy(param->p_temp, ¶m->sn[4], 4); //use SN[4:7] for (9) + } + else + { + memset(param->p_temp, 0, 4); //use zeros for (9) + } + param->p_temp += 4; + + // (10) 2 bytes SN[0:1] + *param->p_temp++ = param->sn[0]; + *param->p_temp++ = param->sn[1]; + + // (11) 2 bytes SN[2:3] or zeros + if (param->mode & MAC_MODE_INCLUDE_SN) + { + memcpy(param->p_temp, ¶m->sn[2], 2); //use SN[2:3] for (11) + } + else + { + memset(param->p_temp, 0, 2); //use zeros for (9) + } + param->p_temp += 2; + + return param->p_temp; +} + +/** \brief This function calculates host side nonce with the parameters passed. + * \param[in, out] param pointer to parameter structure + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_nonce(struct atca_nonce_in_out *param) +{ + uint8_t temporary[ATCA_MSG_SIZE_NONCE]; + uint8_t *p_temp; + uint8_t calc_mode = param->mode & NONCE_MODE_MASK; + + // Check parameters + if (param->temp_key == NULL || param->num_in == NULL) + { + return ATCA_BAD_PARAM; + } + + // Calculate or pass-through the nonce to TempKey->Value + if ((calc_mode == NONCE_MODE_SEED_UPDATE) || (calc_mode == NONCE_MODE_NO_SEED_UPDATE)) + { + // RandOut is only required for these modes + if (param->rand_out == NULL) + { + return ATCA_BAD_PARAM; + } + + if ((param->zero & NONCE_ZERO_CALC_MASK) == NONCE_ZERO_CALC_TEMPKEY) + { + // Nonce calculation mode. Actual value of TempKey has been returned in RandOut + memcpy(param->temp_key->value, param->rand_out, 32); + + // TempKey flags aren't changed + } + else + { + // Calculate nonce using SHA-256 (refer to data sheet) + p_temp = temporary; + + memcpy(p_temp, param->rand_out, RANDOM_NUM_SIZE); + p_temp += RANDOM_NUM_SIZE; + + memcpy(p_temp, param->num_in, NONCE_NUMIN_SIZE); + p_temp += NONCE_NUMIN_SIZE; + + *p_temp++ = ATCA_NONCE; + *p_temp++ = param->mode; + *p_temp++ = 0x00; + + // Calculate SHA256 to get the nonce + atcac_sw_sha2_256(temporary, ATCA_MSG_SIZE_NONCE, param->temp_key->value); + + // Update TempKey flags + param->temp_key->source_flag = 0; // Random + param->temp_key->key_id = 0; + param->temp_key->gen_dig_data = 0; + param->temp_key->no_mac_flag = 0; + param->temp_key->valid = 1; + } + + // Update TempKey to only 32 bytes + param->temp_key->is_64 = 0; + } + else if (param->mode == NONCE_MODE_PASSTHROUGH && (param->mode & NONCE_MODE_TARGET_MASK) != NONCE_MODE_TARGET_TEMPKEY) + { + // Pass-through mode for TempKey (other targets have no effect on TempKey) + if ((param->mode & NONCE_MODE_INPUT_LEN_MASK) == NONCE_MODE_INPUT_LEN_64) + { + memcpy(param->temp_key->value, param->num_in, 64); + param->temp_key->is_64 = 1; + } + else + { + memcpy(param->temp_key->value, param->num_in, 32); + param->temp_key->is_64 = 0; + } + + // Update TempKey flags + param->temp_key->source_flag = 1; // Not Random + param->temp_key->key_id = 0; + param->temp_key->gen_dig_data = 0; + param->temp_key->no_mac_flag = 0; + param->temp_key->valid = 1; + } + + return ATCA_SUCCESS; +} + +/** \brief Decrypt data that's been encrypted by the IO protection key. + * The ECDH and KDF commands on the ATECC608A are the only ones that + * support this operation. + * + * \param[inout] param Parameters required to perform the operation. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_io_decrypt(struct atca_io_decrypt_in_out *param) +{ + atcac_sha2_256_ctx ctx; + uint8_t key[ATCA_KEY_SIZE]; + size_t block = 0; + int i; + + if (param == NULL || param->io_key == NULL || param->out_nonce == NULL || param->data == NULL) + { + return ATCA_BAD_PARAM; + } + if (param->data_size % ATCA_BLOCK_SIZE != 0) + { + return ATCA_BAD_PARAM; + } + + for (block = 0; block < param->data_size / ATCA_BLOCK_SIZE; block++) + { + // Calculate key for block + atcac_sw_sha2_256_init(&ctx); + atcac_sw_sha2_256_update(&ctx, param->io_key, 32); + atcac_sw_sha2_256_update(&ctx, ¶m->out_nonce[block * 16], 16); + atcac_sw_sha2_256_finish(&ctx, key); + + // Decrypt block + for (i = 0; i < ATCA_BLOCK_SIZE; i++) + { + param->data[block * ATCA_BLOCK_SIZE + i] ^= key[i]; + } + } + + return ATCA_SUCCESS; +} + + +/** \brief Calculate the expected MAC on the host side for the Verify command. + * + * \param[inout] param Data required to perform the operation. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_verify_mac(atca_verify_mac_in_out_t *param) +{ + uint8_t verify_mode = (param->mode & VERIFY_MODE_MASK); + uint8_t verify_source = (param->mode & VERIFY_MODE_SOURCE_MASK); + atcac_sha2_256_ctx ctx; + uint8_t message[32]; + const uint8_t* nonce = NULL; + uint8_t input_params[4]; + const uint8_t sign_opcode = ATCA_SIGN; + + // Check parameters + if (param->signature == NULL || param->msg_dig_buf == NULL || param->io_key == NULL) + { + return ATCA_BAD_PARAM; + } + + // Get the verify message + if (verify_mode == VERIFY_MODE_VALIDATE || verify_mode == VERIFY_MODE_INVALIDATE) + { + if (param->other_data == NULL || param->temp_key == NULL || param->sn == NULL) + { + return ATCA_BAD_PARAM; + } + + // Message is calculated based on TempKey and OtherData + atcac_sw_sha2_256_init(&ctx); + atcac_sw_sha2_256_update(&ctx, param->temp_key->value, 32); + atcac_sw_sha2_256_update(&ctx, &sign_opcode, 1); + atcac_sw_sha2_256_update(&ctx, ¶m->other_data[0], 10); + atcac_sw_sha2_256_update(&ctx, ¶m->sn[8], 1); + atcac_sw_sha2_256_update(&ctx, ¶m->other_data[10], 4); + atcac_sw_sha2_256_update(&ctx, ¶m->sn[0], 2); + atcac_sw_sha2_256_update(&ctx, ¶m->other_data[14], 5); + atcac_sw_sha2_256_finish(&ctx, message); + } + else if (verify_source == VERIFY_MODE_SOURCE_MSGDIGBUF) + { + // Message source is the first 32 bytes of the message digest buffer + memcpy(message, param->msg_dig_buf, 32); + } + else + { + // Message source is the first 32 bytes of TempKey + if (param->temp_key == NULL) + { + return ATCA_BAD_PARAM; + } + memcpy(message, param->temp_key->value, 32); + } + + // Get the system nonce + if (verify_source == VERIFY_MODE_SOURCE_MSGDIGBUF) + { + nonce = ¶m->msg_dig_buf[32]; // System nonce is the second 32 bytes of the message digest buffer + } + else + { + nonce = ¶m->msg_dig_buf[0]; // System nonce is the first 32 bytes of the message digest buffer + + } + // Calculate MAC + atcac_sw_sha2_256_init(&ctx); + atcac_sw_sha2_256_update(&ctx, param->io_key, ATCA_KEY_SIZE); // IO protection key + atcac_sw_sha2_256_update(&ctx, message, 32); // Verify message + atcac_sw_sha2_256_update(&ctx, nonce, 32); // Host (system) nonce + atcac_sw_sha2_256_update(&ctx, param->signature, 64); // Signature + + // Add Verify input parameters + input_params[0] = ATCA_VERIFY; // Verify Opcode + input_params[1] = param->mode; // Verify Mode (Param1) + input_params[2] = (uint8_t)(param->key_id >> 0); // Verify Param2 (LSB) + input_params[3] = (uint8_t)(param->key_id >> 8); // Verify Param2 (MSB) + atcac_sw_sha2_256_update(&ctx, input_params, sizeof(input_params)); + + // Calculate SHA256 to get mac + atcac_sw_sha2_256_finish(&ctx, param->mac); + + return ATCA_SUCCESS; +} + +/** \brief Encrypts the digest for the SecureBoot command when using the + * encrypted digest / validating mac option. + * + * \param[inout] param Data required to perform the operation. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_secureboot_enc(atca_secureboot_enc_in_out_t* param) +{ + atcac_sha2_256_ctx ctx; + size_t i; + + // Check parameters + if (param->digest == NULL || param->temp_key == NULL || param->hashed_key == NULL || param->io_key == NULL || param->digest_enc == NULL) + { + return ATCA_BAD_PARAM; + } + + // Calculate key for encrypting digest + atcac_sw_sha2_256_init(&ctx); + atcac_sw_sha2_256_update(&ctx, param->io_key, ATCA_KEY_SIZE); + atcac_sw_sha2_256_update(&ctx, param->temp_key->value, ATCA_KEY_SIZE); + atcac_sw_sha2_256_finish(&ctx, param->hashed_key); + + // Encrypt digest (XOR with key) + for (i = 0; i < SECUREBOOT_DIGEST_SIZE; i++) + { + param->digest_enc[i] = param->digest[i] ^ param->hashed_key[i]; + } + + return ATCA_SUCCESS; +} + +/** \brief Calculates the expected MAC returned from the SecureBoot command + * when verification is a success. + * + * The result of this function (param->mac) should be compared with the actual + * MAC returned to validate the response. + * + * \param[inout] param Data required to perform the operation. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_secureboot_mac(atca_secureboot_mac_in_out_t *param) +{ + atcac_sha2_256_ctx ctx; + uint8_t input_params[4]; + + if (param->hashed_key == NULL || param->digest == NULL || param->mac == NULL) + { + return ATCA_BAD_PARAM; + } + + // Calculate MAC + atcac_sw_sha2_256_init(&ctx); + atcac_sw_sha2_256_update(&ctx, param->hashed_key, ATCA_KEY_SIZE); + atcac_sw_sha2_256_update(&ctx, param->digest, SECUREBOOT_DIGEST_SIZE); + + // Signature is only skipped when running the SecureBoot command in + // FullStore mode and SecureBootMode from the configuration zone is set to + // FullDig + if (!((param->mode & SECUREBOOT_MODE_MASK) == SECUREBOOT_MODE_FULL_STORE && + (param->secure_boot_config & SECUREBOOTCONFIG_MODE_MASK) == SECUREBOOTCONFIG_MODE_FULL_DIG)) + { + if (param->signature == NULL) + { + return ATCA_BAD_PARAM; + } + atcac_sw_sha2_256_update(&ctx, param->signature, SECUREBOOT_SIGNATURE_SIZE); + } + + // Add SecureBoot input parameters + input_params[0] = ATCA_SECUREBOOT; // SecureBoot Opcode + input_params[1] = param->mode; // SecureBoot Mode (Param1) + input_params[2] = (uint8_t)(param->param2 >> 0); // SecureBoot Param2 (LSB) + input_params[3] = (uint8_t)(param->param2 >> 8); // SecureBoot Param2 (MSB) + atcac_sw_sha2_256_update(&ctx, input_params, sizeof(input_params)); + + atcac_sw_sha2_256_finish(&ctx, param->mac); + + return ATCA_SUCCESS; +} + + + +/** \brief This function generates an SHA-256 digest (MAC) of a key, challenge, and other information. + + The resulting digest will match with the one generated by the device when executing a MAC command. + The TempKey (if used) should be valid (temp_key.valid = 1) before executing this function. + + * \param[in, out] param pointer to parameter structure + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_mac(struct atca_mac_in_out *param) +{ + uint8_t temporary[ATCA_MSG_SIZE_MAC]; + uint8_t *p_temp; + struct atca_include_data_in_out include_data; + + // Initialize struct + include_data.otp = param->otp; + include_data.sn = param->sn; + include_data.mode = param->mode; + + // Check parameters + if (!param->response + || (param->mode & ~MAC_MODE_MASK) + || (!(param->mode & MAC_MODE_BLOCK1_TEMPKEY) && !param->key) + || (!(param->mode & MAC_MODE_BLOCK2_TEMPKEY) && !param->challenge) + || ((param->mode & MAC_MODE_USE_TEMPKEY_MASK) && !param->temp_key) + || (((param->mode & MAC_MODE_INCLUDE_OTP_64) || (param->mode & MAC_MODE_INCLUDE_OTP_88)) && !param->otp) + || ((param->mode & MAC_MODE_INCLUDE_SN) && !param->sn) + ) + { + return ATCA_BAD_PARAM; + } + + // Check TempKey fields validity if TempKey is used + if (((param->mode & MAC_MODE_USE_TEMPKEY_MASK) != 0) + // TempKey.CheckFlag must be 0 and TempKey.Valid must be 1 + && (param->temp_key->no_mac_flag || (param->temp_key->valid != 1) + // If either mode parameter bit 0 or bit 1 are set, mode parameter bit 2 must match temp_key.source_flag. + // Logical not (!) is used to evaluate the expression to TRUE / FALSE first before comparison (!=). + || (!(param->mode & MAC_MODE_SOURCE_FLAG_MATCH) != !(param->temp_key->source_flag))) + ) + { + // Invalidate TempKey, then return + param->temp_key->valid = 0; + return ATCA_EXECUTION_ERROR; + } + + // Start calculation + p_temp = temporary; + + // (1) first 32 bytes + memcpy(p_temp, param->mode & MAC_MODE_BLOCK1_TEMPKEY ? param->temp_key->value : param->key, ATCA_KEY_SIZE); // use Key[KeyID] + p_temp += ATCA_KEY_SIZE; + + // (2) second 32 bytes + memcpy(p_temp, param->mode & MAC_MODE_BLOCK2_TEMPKEY ? param->temp_key->value : param->challenge, ATCA_KEY_SIZE); // use Key[KeyID] + p_temp += ATCA_KEY_SIZE; + + // (3) 1 byte opcode + *p_temp++ = ATCA_MAC; + + // (4) 1 byte mode parameter + *p_temp++ = param->mode; + + // (5) 2 bytes keyID + *p_temp++ = param->key_id & 0xFF; + *p_temp++ = (param->key_id >> 8) & 0xFF; + + include_data.p_temp = p_temp; + atcah_include_data(&include_data); + + // Calculate SHA256 to get the MAC digest + atcac_sw_sha2_256(temporary, ATCA_MSG_SIZE_MAC, param->response); + + // Update TempKey fields + if (param->temp_key) + { + param->temp_key->valid = 0; + } + + return ATCA_SUCCESS; +} + + + + +/** \brief This function performs the checkmac operation to generate client response on the host side . + * \param[inout] param Input and output parameters + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_check_mac(struct atca_check_mac_in_out *param) +{ + uint8_t msg[ATCA_MSG_SIZE_MAC]; + bool is_temp_key_req = false; + + // Check parameters + if (param == NULL || param->other_data == NULL || param->sn == NULL || param->client_resp == NULL) + { + return ATCA_BAD_PARAM; + } + + if ((param->mode & CHECKMAC_MODE_BLOCK1_TEMPKEY) || (param->mode & CHECKMAC_MODE_BLOCK2_TEMPKEY)) + { + is_temp_key_req = true; // Message uses TempKey + } + else if ((param->mode == 0x01 || param->mode == 0x05) && param->target_key != NULL) + { + is_temp_key_req = true; // CheckMac copy will be performed + + } + if (is_temp_key_req && param->temp_key == NULL) + { + return ATCA_BAD_PARAM; + } + if (!(param->mode & CHECKMAC_MODE_BLOCK1_TEMPKEY) && param->slot_key == NULL) + { + return ATCA_BAD_PARAM; + } + if (!(param->mode & CHECKMAC_MODE_BLOCK2_TEMPKEY) && param->client_chal == NULL) + { + return ATCA_BAD_PARAM; + } + if ((param->mode & CHECKMAC_MODE_INCLUDE_OTP_64) && param->otp == NULL) + { + return ATCA_BAD_PARAM; + } + + if ((param->mode & CHECKMAC_MODE_BLOCK1_TEMPKEY) || (param->mode & CHECKMAC_MODE_BLOCK2_TEMPKEY)) + { + // This will use TempKey in message, check validity + if (!param->temp_key->valid) + { + return ATCA_EXECUTION_ERROR; // TempKey is not valid + } + if (((param->mode >> 2) & 0x01) != param->temp_key->source_flag) + { + return ATCA_EXECUTION_ERROR; // TempKey SourceFlag doesn't match bit 2 of the mode + } + } + + // Build the message + memset(msg, 0, sizeof(msg)); + if (param->mode & CHECKMAC_MODE_BLOCK1_TEMPKEY) + { + memcpy(&msg[0], param->temp_key->value, 32); + } + else + { + memcpy(&msg[0], param->slot_key, 32); + } + if (param->mode & CHECKMAC_MODE_BLOCK2_TEMPKEY) + { + memcpy(&msg[32], param->temp_key->value, 32); + } + else + { + memcpy(&msg[32], param->client_chal, 32); + } + memcpy(&msg[64], ¶m->other_data[0], 4); + if (param->mode & CHECKMAC_MODE_INCLUDE_OTP_64) + { + memcpy(&msg[68], param->otp, 8); + } + memcpy(&msg[76], ¶m->other_data[4], 3); + msg[79] = param->sn[8]; + memcpy(&msg[80], ¶m->other_data[7], 4); + memcpy(&msg[84], ¶m->sn[0], 2); + memcpy(&msg[86], ¶m->other_data[11], 2); + + // Calculate the client response + atcac_sw_sha2_256(msg, sizeof(msg), param->client_resp); + + // Update TempKey fields + if ((param->mode == 0x01 || param->mode == 0x05) && param->target_key != NULL) + { + // CheckMac Copy will be performed + memcpy(param->temp_key->value, param->target_key, ATCA_KEY_SIZE); + param->temp_key->gen_dig_data = 0; + param->temp_key->source_flag = 1; + param->temp_key->valid = 1; + } + + return ATCA_SUCCESS; +} + + +/** \brief This function generates an HMAC / SHA-256 hash of a key and other information. + + The resulting hash will match with the one generated in the device by an HMAC command. + The TempKey has to be valid (temp_key.valid = 1) before executing this function. + + * \param[in, out] param pointer to parameter structure + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_hmac(struct atca_hmac_in_out *param) +{ + // Local Variables + struct atca_include_data_in_out include_data; + uint8_t temporary[HMAC_BLOCK_SIZE + ATCA_MSG_SIZE_HMAC]; + uint8_t i = 0; + uint8_t *p_temp = NULL; + + // Check parameters + if (!param->response || !param->key || !param->temp_key + || (param->mode & ~HMAC_MODE_MASK) + || (((param->mode & MAC_MODE_INCLUDE_OTP_64) || (param->mode & MAC_MODE_INCLUDE_OTP_88)) && !param->otp) + || (!param->sn) + ) + { + return ATCA_BAD_PARAM; + } + + // Check TempKey fields validity (TempKey is always used) + if ( // TempKey.CheckFlag must be 0 and TempKey.Valid must be 1 + param->temp_key->no_mac_flag || (param->temp_key->valid != 1) + // The mode parameter bit 2 must match temp_key.source_flag. + // Logical not (!) is used to evaluate the expression to TRUE / FALSE first before comparison (!=). + || (!(param->mode & MAC_MODE_SOURCE_FLAG_MATCH) != !(param->temp_key->source_flag)) + ) + { + // Invalidate TempKey, then return + param->temp_key->valid = 0; + return ATCA_EXECUTION_ERROR; + } + + // Start first calculation (inner) + p_temp = temporary; + + // XOR key with ipad + for (i = 0; i < ATCA_KEY_SIZE; i++) + { + *p_temp++ = param->key[i] ^ 0x36; + } + + // zero pad key out to block size + // Refer to fips-198 , length Key = 32 bytes, Block size = 512 bits = 64 bytes. + // So the Key must be padded with zeros. + memset(p_temp, 0x36, HMAC_BLOCK_SIZE - ATCA_KEY_SIZE); + p_temp += HMAC_BLOCK_SIZE - ATCA_KEY_SIZE; + + // Next append the stream of data 'text' + memset(p_temp, 0, ATCA_KEY_SIZE); + p_temp += ATCA_KEY_SIZE; + + memcpy(p_temp, param->temp_key->value, ATCA_KEY_SIZE); + p_temp += ATCA_KEY_SIZE; + + *p_temp++ = ATCA_HMAC; + *p_temp++ = param->mode; + *p_temp++ = (uint8_t)(param->key_id >> 0); + *p_temp++ = (uint8_t)(param->key_id >> 8); + + include_data.otp = param->otp; + include_data.sn = param->sn; + include_data.mode = param->mode; + include_data.p_temp = p_temp; + atcah_include_data(&include_data); + + // Calculate SHA256 + // H((K0^ipad):text), use param.response for temporary storage + atcac_sw_sha2_256(temporary, HMAC_BLOCK_SIZE + ATCA_MSG_SIZE_HMAC, param->response); + + + // Start second calculation (outer) + p_temp = temporary; + + // XOR K0 with opad + for (i = 0; i < ATCA_KEY_SIZE; i++) + { + *p_temp++ = param->key[i] ^ 0x5C; + } + + // zero pad key out to block size + // Refer to fips-198 , length Key = 32 bytes, Block size = 512 bits = 64 bytes. + // So the Key must be padded with zeros. + memset(p_temp, 0x5C, HMAC_BLOCK_SIZE - ATCA_KEY_SIZE); + p_temp += HMAC_BLOCK_SIZE - ATCA_KEY_SIZE; + + // Append result from last calculation H((K0 ^ ipad) || text) + memcpy(p_temp, param->response, ATCA_SHA_DIGEST_SIZE); + p_temp += ATCA_SHA_DIGEST_SIZE; + + // Calculate SHA256 to get the resulting HMAC + atcac_sw_sha2_256(temporary, HMAC_BLOCK_SIZE + ATCA_SHA_DIGEST_SIZE, param->response); + + // Update TempKey fields + param->temp_key->valid = 0; + + return ATCA_SUCCESS; +} + + +/** \brief This function combines the current TempKey with a stored value. + + The stored value can be a data slot, OTP page, configuration zone, or hardware transport key. + The TempKey generated by this function will match with the TempKey in the device generated + when executing a GenDig command. + The TempKey should be valid (temp_key.valid = 1) before executing this function. + To use this function, an application first sends a GenDig command with a chosen stored value to the device. + This stored value must be known by the application and is passed to this GenDig calculation function. + The function calculates a new TempKey and returns it. + + * \param[in, out] param pointer to parameter structure + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_gen_dig(struct atca_gen_dig_in_out *param) +{ + uint8_t temporary[ATCA_MSG_SIZE_GEN_DIG]; + uint8_t *p_temp; + + // Check parameters + if (param->sn == NULL || param->temp_key == NULL) + { + return ATCA_BAD_PARAM; + } + if (param->zone != GENDIG_ZONE_SHARED_NONCE && param->stored_value == NULL) + { + return ATCA_BAD_PARAM; // Stored value can only be null with the shared_nonce mode + } + if ((param->zone == GENDIG_ZONE_SHARED_NONCE || (param->zone == GENDIG_ZONE_DATA && param->is_key_nomac)) && param->other_data == NULL) + { + return ATCA_BAD_PARAM; // Other data is required in these cases + } + if (param->zone > 5) + { + return ATCA_BAD_PARAM; // Unknown zone + + } + // Start calculation + p_temp = temporary; + + // (1) 32 bytes inputKey + if (param->zone == GENDIG_ZONE_SHARED_NONCE && param->key_id & 0x8000) + { + memcpy(p_temp, param->other_data, ATCA_KEY_SIZE); + } + else + { + memcpy(p_temp, param->stored_value, ATCA_KEY_SIZE); + } + p_temp += ATCA_KEY_SIZE; + + if (param->zone == GENDIG_ZONE_DATA && param->is_key_nomac) + { + // If a key has the SlotConfig.NoMac bit set, then opcode and parameters come from OtherData + memcpy(p_temp, param->other_data, 4); + p_temp += 4; + } + else + { + // (2) 1 byte Opcode + *p_temp++ = ATCA_GENDIG; + + // (3) 1 byte Param1 (zone) + *p_temp++ = param->zone; + + // (4) 2 bytes Param2 (keyID) + *p_temp++ = (uint8_t)(param->key_id & 0xFF); + *p_temp++ = (uint8_t)(param->key_id >> 8); + } + + // (5) 1 byte SN[8] + *p_temp++ = param->sn[8]; + + // (6) 2 bytes SN[0:1] + *p_temp++ = param->sn[0]; + *p_temp++ = param->sn[1]; + + // (7) 25 zeros + memset(p_temp, 0, ATCA_GENDIG_ZEROS_SIZE); + p_temp += ATCA_GENDIG_ZEROS_SIZE; + + if (param->zone == GENDIG_ZONE_SHARED_NONCE && !(param->key_id & 0x8000)) + { + memcpy(p_temp, param->other_data, ATCA_KEY_SIZE); // (8) 32 bytes OtherData + } + else + { + memcpy(p_temp, param->temp_key->value, ATCA_KEY_SIZE); // (8) 32 bytes TempKey + + } + // Calculate SHA256 to get the new TempKey + atcac_sw_sha2_256(temporary, ATCA_MSG_SIZE_GEN_DIG, param->temp_key->value); + + // Update TempKey fields + param->temp_key->valid = 1; + + if ((param->zone == GENDIG_ZONE_DATA) && (param->key_id <= 15)) + { + param->temp_key->gen_dig_data = 1; + param->temp_key->key_id = (param->key_id & 0xF); // mask lower 4-bit only + } + else + { + param->temp_key->gen_dig_data = 0; + param->temp_key->key_id = 0; + } + + return ATCA_SUCCESS; +} + +/** \brief This function generates mac with session key with a plain text. + * \param[in, out] param pointer to parameter structure + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_gen_mac(struct atca_gen_dig_in_out *param) +{ + uint8_t temporary[ATCA_MSG_SIZE_GEN_DIG]; + uint8_t *p_temp; + + // Check parameters + if (!param->stored_value || !param->temp_key) + { + return ATCA_BAD_PARAM; + } + + // Check TempKey fields validity (TempKey is always used) + if ( // TempKey.CheckFlag must be 0 and TempKey.Valid must be 1 + param->temp_key->no_mac_flag || (param->temp_key->valid != 1) + ) + { + // Invalidate TempKey, then return + param->temp_key->valid = 0; + return ATCA_EXECUTION_ERROR; + } + + // Start calculation + p_temp = temporary; + + // (1) 32 bytes SessionKey + // (Config[KeyID] or OTP[KeyID] or Data.slot[KeyID] or TransportKey[KeyID]) + memcpy(p_temp, param->temp_key->value, ATCA_KEY_SIZE); + p_temp += ATCA_KEY_SIZE; + + // (2) 1 byte Opcode + *p_temp++ = ATCA_WRITE; + + // (3) 1 byte Param1 (zone) + *p_temp++ = param->zone; + + // (4) 2 bytes Param2 (keyID) + *p_temp++ = param->key_id & 0xFF; + *p_temp++ = (param->key_id >> 8) & 0xFF; + + // (5) 1 byte SN[8] + *p_temp++ = param->sn[8]; + + // (6) 2 bytes SN[0:1] + *p_temp++ = param->sn[0]; + *p_temp++ = param->sn[1]; + + // (7) 25 zeros + memset(p_temp, 0, ATCA_GENDIG_ZEROS_SIZE); + p_temp += ATCA_GENDIG_ZEROS_SIZE; + + // (8) 32 bytes PlainText + memcpy(p_temp, param->stored_value, ATCA_KEY_SIZE); + + // Calculate SHA256 to get the new TempKey + atcac_sw_sha2_256(temporary, ATCA_MSG_SIZE_GEN_DIG, param->temp_key->value); + + // Update TempKey fields + param->temp_key->valid = 1; + + if ((param->zone == GENDIG_ZONE_DATA) && (param->key_id <= 15)) + { + param->temp_key->gen_dig_data = 1; + param->temp_key->key_id = (param->key_id & 0xF); // mask lower 4-bit only + } + else + { + param->temp_key->gen_dig_data = 0; + param->temp_key->key_id = 0; + } + + return ATCA_SUCCESS; +} + +/** \brief This function calculates the input MAC for the Write command. + + The Write command will need an input MAC if SlotConfig.WriteConfig.Encrypt is set. + + * \param[in, out] param pointer to parameter structure + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_write_auth_mac(struct atca_write_mac_in_out *param) +{ + uint8_t mac_input[ATCA_MSG_SIZE_ENCRYPT_MAC]; + uint8_t i; + uint8_t *p_temp; + + // Check parameters + if (!param->input_data || !param->temp_key) + { + return ATCA_BAD_PARAM; + } + + // Check TempKey fields validity (TempKey is always used) + if ( // TempKey.CheckFlag must be 0 and TempKey.Valid must be 1 + param->temp_key->no_mac_flag || (param->temp_key->valid != 1) + ) + { + // Invalidate TempKey, then return + param->temp_key->valid = 0; + return ATCA_EXECUTION_ERROR; + } + // Encrypt by XOR-ing Data with the TempKey + for (i = 0; i < 32; i++) + { + param->encrypted_data[i] = param->input_data[i] ^ param->temp_key->value[i]; + } + + // If the pointer *mac is provided by the caller then calculate input MAC + if (param->auth_mac) + { + // Start calculation + p_temp = mac_input; + + // (1) 32 bytes TempKey + memcpy(p_temp, param->temp_key->value, ATCA_KEY_SIZE); + p_temp += ATCA_KEY_SIZE; + + // (2) 1 byte Opcode + *p_temp++ = ATCA_WRITE; + + // (3) 1 byte Param1 (zone) + *p_temp++ = param->zone; + + // (4) 2 bytes Param2 (keyID) + *p_temp++ = param->key_id & 0xFF; + *p_temp++ = (param->key_id >> 8) & 0xFF; + + // (5) 1 byte SN[8] + *p_temp++ = param->sn[8]; + + // (6) 2 bytes SN[0:1] + *p_temp++ = param->sn[0]; + *p_temp++ = param->sn[1]; + + // (7) 25 zeros + memset(p_temp, 0, ATCA_WRITE_MAC_ZEROS_SIZE); + p_temp += ATCA_WRITE_MAC_ZEROS_SIZE; + + // (8) 32 bytes PlainText + memcpy(p_temp, param->input_data, ATCA_KEY_SIZE); + + // Calculate SHA256 to get MAC + atcac_sw_sha2_256(mac_input, sizeof(mac_input), param->auth_mac); + } + + return ATCA_SUCCESS; +} + +/** \brief This function calculates the input MAC for the PrivWrite command. + + The PrivWrite command will need an input MAC if SlotConfig.WriteConfig.Encrypt is set. + + * \param[in, out] param pointer to parameter structure + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_privwrite_auth_mac(struct atca_write_mac_in_out *param) +{ + uint8_t mac_input[ATCA_MSG_SIZE_PRIVWRITE_MAC]; + uint8_t i = 0; + uint8_t *p_temp = NULL; + uint8_t session_key2[32]; + + // Check parameters + if (!param->input_data || !param->temp_key) + { + return ATCA_BAD_PARAM; + } + + // Check TempKey fields validity (TempKey is always used) + if ( // TempKey.CheckFlag must be 0 and TempKey.Valid must be 1 + param->temp_key->no_mac_flag || (param->temp_key->valid != 1) + ) + { + // Invalidate TempKey, then return + param->temp_key->valid = 0; + return ATCA_EXECUTION_ERROR; + } + + + /* Encrypt by XOR-ing Data with the TempKey + */ + + // Encrypt the next 28 bytes of the cipher text, which is the first part of the private key. + for (i = 0; i < 32; i++) + { + param->encrypted_data[i] = param->input_data[i] ^ param->temp_key->value[i]; + } + + // Calculate the new key for the last 4 bytes of the cipher text + atcac_sw_sha2_256(param->temp_key->value, 32, session_key2); + + // Encrypt the last 4 bytes of the cipher text, which is the remaining part of the private key + for (i = 32; i < 36; i++) + { + param->encrypted_data[i] = param->input_data[i] ^ session_key2[i - 32]; + } + + // If the pointer *mac is provided by the caller then calculate input MAC + if (param->auth_mac) + { + // Start calculation + p_temp = mac_input; + + // (1) 32 bytes TempKey + memcpy(p_temp, param->temp_key->value, ATCA_KEY_SIZE); + p_temp += ATCA_KEY_SIZE; + + // (2) 1 byte Opcode + *p_temp++ = ATCA_PRIVWRITE; + + // (3) 1 byte Param1 (zone) + *p_temp++ = param->zone; + + // (4) 2 bytes Param2 (keyID) + *p_temp++ = param->key_id & 0xFF; + *p_temp++ = (param->key_id >> 8) & 0xFF; + + // (5) 1 byte SN[8] + *p_temp++ = param->sn[8]; + + // (6) 2 bytes SN[0:1] + *p_temp++ = param->sn[0]; + *p_temp++ = param->sn[1]; + + // (7) 21 zeros + memset(p_temp, 0, ATCA_PRIVWRITE_MAC_ZEROS_SIZE); + p_temp += ATCA_PRIVWRITE_MAC_ZEROS_SIZE; + + // (8) 36 bytes PlainText (Private Key) + memcpy(p_temp, param->input_data, ATCA_PRIVWRITE_PLAIN_TEXT_SIZE); + + // Calculate SHA256 to get the new TempKey + atcac_sw_sha2_256(mac_input, sizeof(mac_input), param->auth_mac); + } + + return ATCA_SUCCESS; +} + +/** \brief This function derives a key with a key and TempKey. + + Used in conjunction with DeriveKey command, the key derived by this function will match the key in the device. + Two kinds of operation are supported: +
    +
  • Roll Key operation: target_key and parent_key parameters should be set to point to the same location (TargetKey).
  • +
  • Create Key operation: target_key should be set to point to TargetKey, parent_key should be set to point to ParentKey.
  • +
+ After executing this function, the initial value of target_key will be overwritten with the derived key. + The TempKey should be valid (temp_key.valid = 1) before executing this function. + + * \param[in, out] param pointer to parameter structure + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_derive_key(struct atca_derive_key_in_out *param) +{ + uint8_t temporary[ATCA_MSG_SIZE_DERIVE_KEY]; + uint8_t *p_temp; + + // Check parameters + if (!param->parent_key || !param->target_key || !param->temp_key + || (param->mode & ~DERIVE_KEY_RANDOM_FLAG) || (param->target_key_id > ATCA_KEY_ID_MAX)) + { + return ATCA_BAD_PARAM; + } + + + // Check TempKey fields validity (TempKey is always used) + if ( // TempKey.CheckFlag must be 0 and TempKey.Valid must be 1 + param->temp_key->no_mac_flag || (param->temp_key->valid != 1) + // The random parameter bit 2 must match temp_key.source_flag + // Logical not (!) is used to evaluate the expression to TRUE / FALSE first before comparison (!=). + || (!(param->mode & DERIVE_KEY_RANDOM_FLAG) != !(param->temp_key->source_flag)) + ) + { + // Invalidate TempKey, then return + param->temp_key->valid = 0; + return ATCA_EXECUTION_ERROR; + } + + // Start calculation + p_temp = temporary; + + // (1) 32 bytes parent key + memcpy(p_temp, param->parent_key, ATCA_KEY_SIZE); + p_temp += ATCA_KEY_SIZE; + + // (2) 1 byte Opcode + *p_temp++ = ATCA_DERIVE_KEY; + + // (3) 1 byte Param1 (random) + *p_temp++ = param->mode; + + // (4) 2 bytes Param2 (keyID) + *p_temp++ = param->target_key_id & 0xFF; + *p_temp++ = (param->target_key_id >> 8) & 0xFF; + + // (5) 1 byte SN[8] + *p_temp++ = param->sn[8]; + + // (6) 2 bytes SN[0:1] + *p_temp++ = param->sn[0]; + *p_temp++ = param->sn[1]; + + // (7) 25 zeros + memset(p_temp, 0, ATCA_DERIVE_KEY_ZEROS_SIZE); + p_temp += ATCA_DERIVE_KEY_ZEROS_SIZE; + + // (8) 32 bytes TempKey + memcpy(p_temp, param->temp_key->value, ATCA_KEY_SIZE); + p_temp += ATCA_KEY_SIZE; + + // Calculate SHA256 to get the derived key. + atcac_sw_sha2_256(temporary, ATCA_MSG_SIZE_DERIVE_KEY, param->target_key); + + // Update TempKey fields + param->temp_key->valid = 0; + + return ATCA_SUCCESS; +} + + +/** \brief This function calculates the input MAC for a DeriveKey command. + + The DeriveKey command will need an input MAC if SlotConfig[TargetKey].Bit15 is set. + + * \param[in, out] param pointer to parameter structure + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_derive_key_mac(struct atca_derive_key_mac_in_out *param) +{ + uint8_t temporary[ATCA_MSG_SIZE_DERIVE_KEY_MAC]; + uint8_t *p_temp; + + // Check parameters + if (!param->parent_key || !param->mac || (param->mode & ~DERIVE_KEY_RANDOM_FLAG) + || (param->target_key_id > ATCA_KEY_ID_MAX)) + { + return ATCA_BAD_PARAM; + } + + // Start calculation + p_temp = temporary; + + // (1) 32 bytes parent key + memcpy(p_temp, param->parent_key, ATCA_KEY_SIZE); + p_temp += ATCA_KEY_SIZE; + + // (2) 1 byte Opcode + *p_temp++ = ATCA_DERIVE_KEY; + + // (3) 1 byte Param1 (random) + *p_temp++ = param->mode; + + // (4) 2 bytes Param2 (keyID) + *p_temp++ = param->target_key_id & 0xFF; + *p_temp++ = (param->target_key_id >> 8) & 0xFF; + + // (5) 1 byte SN[8] + *p_temp++ = param->sn[8]; + + // (6) 2 bytes SN[0:1] + *p_temp++ = param->sn[0]; + *p_temp++ = param->sn[1]; + + // Calculate SHA256 to get the input MAC for DeriveKey command + atcac_sw_sha2_256(temporary, ATCA_MSG_SIZE_DERIVE_KEY_MAC, param->mac); + + return ATCA_SUCCESS; +} + + +/** \brief This function decrypts 32-byte encrypted data received with the Read command. + + To use this function, first the nonce must be valid and synchronized between device and application. + The application sends a GenDig command to the Device, using a key specified by SlotConfig.ReadKey. + The device updates its TempKey. + The application then updates its own TempKey using the GenDig calculation function, using the same key. + The application sends a Read command to the device for a user zone configured with EncryptRead. + The device encrypts 32-byte zone content, and outputs it to the host. + The application passes these encrypted data to this decryption function. The function decrypts the data and returns them. + TempKey must be updated by GenDig using a ParentKey as specified by SlotConfig.ReadKey before executing this function. + The decryption function does not check whether the TempKey has been generated by a correct ParentKey for the corresponding zone. + Therefore to get a correct result, the application has to make sure that prior GenDig calculation was done using correct ParentKey. + + * \param[in, out] param pointer to parameter structure + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_decrypt(struct atca_decrypt_in_out *param) +{ + uint8_t i; + + // Check parameters + if (!param->crypto_data || !param->temp_key) + { + return ATCA_BAD_PARAM; + } + + // Check TempKey fields validity + // Note that if temp_key.key_id is not checked, + // we cannot make sure if the key used in previous GenDig IS equal to + // the key pointed by SlotConfig.ReadKey in the device. + if ( // TempKey.CheckFlag must be 0 + param->temp_key->no_mac_flag + // TempKey.Valid must be 1 + || (param->temp_key->valid != 1) + // TempKey.GenData must be 1 + || (param->temp_key->gen_dig_data != 1) + // TempKey.SourceFlag must be 0 (random) + || param->temp_key->source_flag + ) + { + // Invalidate TempKey, then return + param->temp_key->valid = 0; + return ATCA_EXECUTION_ERROR; + } + + // Decrypt by XOR-ing Data with the TempKey + for (i = 0; i < ATCA_KEY_SIZE; i++) + { + param->crypto_data[i] ^= param->temp_key->value[i]; + } + + // Update TempKey fields + param->temp_key->valid = 0; + + return ATCA_SUCCESS; +} + +/** \brief This function creates a SHA256 digest on a little-endian system. + * + * \param[in] len byte length of message + * \param[in] message pointer to message + * \param[out] digest SHA256 of message + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_sha256(int32_t len, const uint8_t *message, uint8_t *digest) +{ + return atcac_sw_sha2_256(message, len, digest); +} + +/** \brief Calculate the PubKey digest created by GenKey and saved to TempKey. + * + * \param[inout] param GenKey parameters required to calculate the PubKey + * digest. Digest is return in the temp_key parameter. + * + \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_gen_key_msg(struct atca_gen_key_in_out *param) +{ + uint8_t msg[128]; + + if (param == NULL || param->public_key == NULL || param->sn == NULL || param->temp_key == NULL) + { + return ATCA_BAD_PARAM; + } + if (param->public_key_size == 0 || param->public_key_size > 88) + { + return ATCA_BAD_PARAM; + } + + memset(msg, 0, sizeof(msg)); + memcpy(&msg[0], param->temp_key->value, 32); + msg[32] = ATCA_GENKEY; + + if (param->mode & GENKEY_MODE_PUBKEY_DIGEST) + { + // Calculate PubKey digest of stored public key, takes priority over other bits + if (param->other_data == NULL) + { + return ATCA_BAD_PARAM; + } + memcpy(&msg[33], param->other_data, 3); // OtherData replaces mode and key_id in message + } + else if (param->mode & GENKEY_MODE_DIGEST) + { + msg[33] = param->mode; + msg[34] = (uint8_t)(param->key_id >> 0); + msg[35] = (uint8_t)(param->key_id >> 8); + } + else + { + // Mode indicates no PubKey digest was requested. + // No change to TempKey. + return ATCA_SUCCESS; + } + + msg[36] = param->sn[8]; + memcpy(&msg[37], ¶m->sn[0], 2); + + // Copy public key into end of message + memcpy(&msg[sizeof(msg) - param->public_key_size], param->public_key, param->public_key_size); + + atcac_sw_sha2_256(msg, sizeof(msg), param->temp_key->value); + param->temp_key->gen_dig_data = 0; + param->temp_key->gen_key_data = 1; + param->temp_key->key_id = param->key_id; + + return ATCA_SUCCESS; +} + +/** \brief Populate the slot_config, key_config, and is_slot_locked fields in + * the atca_sign_internal_in_out structure from the provided config + * zone. + * + * The atca_sign_internal_in_out structure has a number of fields + * (slot_config, key_config, is_slot_locked) that can be determined + * automatically from the current state of TempKey and the full config + * zone. + * + * \param[inout] param Sign(Internal) parameters to be filled out. Only + * slot_config, key_config, and is_slot_locked will be + * set. + * \param[in] device_type The type of the device. + * \param[in] config Full 128 byte config zone for the device. + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_config_to_sign_internal(ATCADeviceType device_type, struct atca_sign_internal_in_out *param, const uint8_t* config) +{ + const uint8_t* value = NULL; + uint16_t slot_locked = 0; + + if (param == NULL || config == NULL || param->temp_key == NULL) + { + return ATCA_BAD_PARAM; + } + + // SlotConfig[TempKeyFlags.keyId] + value = &config[20 + param->temp_key->key_id * 2]; + param->slot_config = (uint16_t)value[0] | ((uint16_t)value[1] << 8); + + // KeyConfig[TempKeyFlags.keyId] + value = &config[96 + param->temp_key->key_id * 2]; + param->key_config = (uint16_t)value[0] | ((uint16_t)value[1] << 8); + + if (device_type == ATECC108A && param->temp_key->key_id < 8) + { + value = &config[52 + param->temp_key->key_id * 2]; + param->use_flag = value[0]; + param->update_count = value[1]; + } + else + { + param->use_flag = 0x00; + param->update_count = 0x00; + } + + //SlotLocked:TempKeyFlags.keyId + slot_locked = (uint16_t)config[88] | ((uint16_t)config[89] << 8); + param->is_slot_locked = (slot_locked & (1 << param->temp_key->key_id)) ? false : true; + + return ATCA_SUCCESS; +} + +/** \brief Builds the full message that would be signed by the Sign(Internal) + * command. + * + * Additionally, the function will optionally output the OtherData data + * required by the Verify(In/Validate) command as well as the SHA256 digest of + * the full message. + * + * \param[out] device_type Device type to perform the calculation for. + * \param[out] param Input data and output buffers required. + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_sign_internal_msg(ATCADeviceType device_type, struct atca_sign_internal_in_out *param) +{ + uint8_t msg[55]; + + if (param == NULL || param->temp_key == NULL || param->sn == NULL) + { + return ATCA_BAD_PARAM; + } + + memset(msg, 0, sizeof(msg)); + memcpy(&msg[0], param->temp_key->value, 32); + msg[32] = ATCA_SIGN; // Sign OpCode + msg[33] = param->mode; // Sign Mode + msg[34] = (uint8_t)(param->key_id >> 0); // Sign KeyID + msg[35] = (uint8_t)(param->key_id >> 8); + msg[36] = (uint8_t)(param->slot_config >> 0); // SlotConfig[TempKeyFlags.keyId] + msg[37] = (uint8_t)(param->slot_config >> 8); + msg[38] = (uint8_t)(param->key_config >> 0); // KeyConfig[TempKeyFlags.keyId] + msg[39] = (uint8_t)(param->key_config >> 8); + + //TempKeyFlags (b0-3: keyId, b4: sourceFlag, b5: GenDigData, b6: GenKeyData, b7: NoMacFlag) + msg[40] |= ((param->temp_key->key_id & 0x0F) << 0); + msg[40] |= ((param->temp_key->source_flag & 0x01) << 4); + msg[40] |= ((param->temp_key->gen_dig_data & 0x01) << 5); + msg[40] |= ((param->temp_key->gen_key_data & 0x01) << 6); + msg[40] |= ((param->temp_key->no_mac_flag & 0x01) << 7); + + if (device_type == ATECC108A && param->temp_key->key_id < 8) + { + msg[41] = param->use_flag; // UseFlag[TempKeyFlags.keyId] + msg[42] = param->update_count; // UpdateCount[TempKeyFlags.keyId] + } + else + { + msg[41] = 0x00; + msg[42] = 0x00; + } + + // Serial Number + msg[43] = param->sn[8]; + memcpy(&msg[48], ¶m->sn[0], 2); + if (param->mode & SIGN_MODE_INCLUDE_SN) + { + memcpy(&msg[44], ¶m->sn[4], 4); + memcpy(&msg[50], ¶m->sn[2], 2); + } + + // The bit within the SlotLocked field corresponding to the last key used in the TempKey computation is in the LSB + msg[52] = param->is_slot_locked ? 0x00 : 0x01; + + // If the slot contains a public key corresponding to a supported curve, and if PubInfo indicates this key must be + // validated before being used by Verify, and if the validity bits have a value of 0x05, then the PubKey Valid byte + // will be 0x01. In all other cases, it will be 0. + msg[53] = param->for_invalidate ? 0x01 : 0x00; + + msg[54] = 0x00; + + if (param->message) + { + memcpy(param->message, msg, sizeof(msg)); + } + if (param->verify_other_data) + { + memcpy(¶m->verify_other_data[0], &msg[33], 10); + memcpy(¶m->verify_other_data[10], &msg[44], 4); + memcpy(¶m->verify_other_data[14], &msg[50], 5); + } + if (param->digest) + { + return atcac_sw_sha2_256(msg, sizeof(msg), param->digest); + } + else + { + return ATCA_SUCCESS; + } +} + +/** \brief Builds the counter match value that needs to be stored in a slot. + * + * \param[in] counter_value Counter value to be used for the counter + * match. This must be a multiple of 32. + * \param[out] counter_match_value Data to be stored in the beginning of a + * counter match slot will be returned here + * (8 bytes). + * + * \return ATCA_SUCCESS on success, otherwise an error code. + */ +ATCA_STATUS atcah_encode_counter_match(uint32_t counter_value, uint8_t * counter_match_value) +{ + if ((counter_value > COUNTER_MAX_VALUE) || (counter_value % 32 != 0) || (counter_match_value == NULL)) + { + return ATCA_BAD_PARAM; + } + + // Counter match value is stored in little-endian unsigned format + counter_match_value[0] = (uint8_t)((counter_value >> 0) & 0xFF); + counter_match_value[1] = (uint8_t)((counter_value >> 8) & 0xFF); + counter_match_value[2] = (uint8_t)((counter_value >> 16) & 0xFF); + counter_match_value[3] = (uint8_t)((counter_value >> 24) & 0xFF); + + // Counter match value should be repeated in the next 4 bytes + memcpy(counter_match_value + 4, counter_match_value, 4); + + return ATCA_SUCCESS; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.h new file mode 100644 index 0000000..64be091 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.h @@ -0,0 +1,443 @@ +/** + * \file + * \brief Definitions and Prototypes for ATCA Utility Functions + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + + +#ifndef ATCA_HOST_H +#define ATCA_HOST_H + +#include +#include "cryptoauthlib.h" // contains definitions used by chip and these routines + +/** \defgroup atcah Host side crypto methods (atcah_) + * + * \brief + * Use these functions if your system does not use an ATCADevice as a host but + * implements the host in firmware. The functions provide host-side cryptographic functionality + * for an ATECC client device. They are intended to accompany the CryptoAuthLib functions. + * They can be called directly from an application, or integrated into an API. + * + * Modern compilers can garbage-collect unused functions. If your compiler does not support this feature, + * you can just discard this module from your project if you do use an ATECC as a host. Or, if you don't, + * delete the functions you do not use. + @{ */ + +/** \name Definitions for ATECC Message Sizes to Calculate a SHA256 Hash + + * \brief "||" is the concatenation operator. + * The number in braces is the length of the hash input value in bytes. + @{ */ + +//! RandOut{32} || NumIn{20} || OpCode{1} || Mode{1} || LSB of Param2{1} +#define ATCA_MSG_SIZE_NONCE (55) + + +/** \brief (Key or TempKey){32} || (Challenge or TempKey){32} || OpCode{1} || Mode{1} || Param2{2} +|| (OTP0_7 or 0){8} || (OTP8_10 or 0){3} || SN8{1} || (SN4_7 or 0){4} || SN0_1{2} || (SN2_3 or 0){2} +*/ +#define ATCA_MSG_SIZE_MAC (88) +#define ATCA_MSG_SIZE_HMAC (88) + +//! KeyId{32} || OpCode{1} || Param1{1} || Param2{2} || SN8{1} || SN0_1{2} || 0{25} || TempKey{32} +#define ATCA_MSG_SIZE_GEN_DIG (96) + + +//! KeyId{32} || OpCode{1} || Param1{1} || Param2{2} || SN8{1} || SN0_1{2} || 0{25} || TempKey{32} +#define ATCA_MSG_SIZE_DERIVE_KEY (96) + + +//! KeyId{32} || OpCode{1} || Param1{1} || Param2{2} || SN8{1} || SN0_1{2} +#define ATCA_MSG_SIZE_DERIVE_KEY_MAC (39) + +//! KeyId{32} || OpCode{1} || Param1{1} || Param2{2}|| SN8{1} || SN0_1{2} || 0{25} || TempKey{32} +#define ATCA_MSG_SIZE_ENCRYPT_MAC (96) + +//! KeyId{32} || OpCode{1} || Param1{1} || Param2{2}|| SN8{1} || SN0_1{2} || 0{21} || PlainText{36} +#define ATCA_MSG_SIZE_PRIVWRITE_MAC (96) + +#define ATCA_COMMAND_HEADER_SIZE ( 4) +#define ATCA_GENDIG_ZEROS_SIZE (25) +#define ATCA_WRITE_MAC_ZEROS_SIZE (25) +#define ATCA_PRIVWRITE_MAC_ZEROS_SIZE (21) +#define ATCA_PRIVWRITE_PLAIN_TEXT_SIZE (36) +#define ATCA_DERIVE_KEY_ZEROS_SIZE (25) +#define HMAC_BLOCK_SIZE (64) +#define ENCRYPTION_KEY_SIZE (64) + +/** @} */ + +/** \name Default Fixed Byte Values of Serial Number (SN[0:1] and SN[8]) + @{ */ +#define ATCA_SN_0_DEF (0x01) +#define ATCA_SN_1_DEF (0x23) +#define ATCA_SN_8_DEF (0xEE) +/** @} */ + + +/** \name Definition for TempKey Mode + @{ */ +//! mode mask for MAC command when using TempKey +#define MAC_MODE_USE_TEMPKEY_MASK ((uint8_t)0x03) +/** @} */ + +/** \brief Structure to hold TempKey fields + */ +typedef struct atca_temp_key +{ + uint8_t value[ATCA_KEY_SIZE * 2]; //!< Value of TempKey (64 bytes for ATECC608A only) + unsigned key_id : 4; //!< If TempKey was derived from a slot or transport key (GenDig or GenKey), that key ID is saved here. + unsigned source_flag : 1; //!< Indicates id TempKey started from a random nonce (0) or not (1). + unsigned gen_dig_data : 1; //!< TempKey was derived from the GenDig command. + unsigned gen_key_data : 1; //!< TempKey was derived from the GenKey command (ATECC devices only). + unsigned no_mac_flag : 1; //!< TempKey was derived from a key that has the NoMac bit set preventing the use of the MAC command. Known as CheckFlag in ATSHA devices). + unsigned valid : 1; //!< TempKey is valid. + uint8_t is_64; //!< TempKey has 64 bytes of valid data +} atca_temp_key_t; + + +/** \struct atca_include_data_in_out + * \brief Input / output parameters for function atca_include_data(). + * \var atca_include_data_in_out::p_temp + * \brief [out] pointer to output buffer + * \var atca_include_data_in_out::otp + * \brief [in] pointer to one-time-programming data + * \var atca_include_data_in_out::sn + * \brief [in] pointer to serial number data + */ +struct atca_include_data_in_out +{ + uint8_t * p_temp; + const uint8_t *otp; + const uint8_t *sn; + uint8_t mode; +}; + + +/** \struct atca_nonce_in_out + * \brief Input/output parameters for function atca_nonce(). + * \var atca_nonce_in_out::mode + * \brief [in] Mode parameter used in Nonce command (Param1). + * \var atca_nonce_in_out::zero + * \brief [in] Zero parameter used in Nonce command (Param2). + * \var atca_nonce_in_out::num_in + * \brief [in] Pointer to 20-byte NumIn data used in Nonce command. + * \var atca_nonce_in_out::rand_out + * \brief [in] Pointer to 32-byte RandOut data from Nonce command. + * \var atca_nonce_in_out::temp_key + * \brief [in,out] Pointer to TempKey structure. + */ +typedef struct atca_nonce_in_out +{ + uint8_t mode; + uint16_t zero; + const uint8_t * num_in; + const uint8_t * rand_out; + struct atca_temp_key *temp_key; +} atca_nonce_in_out_t; + + +typedef struct atca_io_decrypt_in_out +{ + const uint8_t* io_key; //!< IO protection key (32 bytes). + const uint8_t* out_nonce; //!< OutNonce returned from command (32 bytes). + uint8_t* data; //!< As input, encrypted data. As output, decrypted data. + size_t data_size; //!< Size of data in bytes (32 or 64). +} atca_io_decrypt_in_out_t; + +typedef struct atca_verify_mac +{ + uint8_t mode; //!< Mode (Param1) parameter used in Verify command. + uint16_t key_id; //!< KeyID (Param2) used in Verify command. + const uint8_t* signature; //!< Signature used in Verify command (64 bytes). + const uint8_t* other_data; //!< OtherData used in Verify command (19 bytes). + const uint8_t* msg_dig_buf; //!< Message digest buffer (64 bytes). + const uint8_t* io_key; //!< IO protection key value (32 bytes). + const uint8_t* sn; //!< Serial number (9 bytes). + const atca_temp_key_t* temp_key; //!< TempKey + uint8_t* mac; //!< Calculated verification MAC is returned here (32 bytes). +} atca_verify_mac_in_out_t; + + +typedef struct atca_secureboot_enc_in_out +{ + const uint8_t* io_key; //!< IO protection key value (32 bytes) + const struct atca_temp_key* temp_key; //!< Current value of TempKey + const uint8_t* digest; //!< Plaintext digest as input + uint8_t* hashed_key; //!< Calculated key is returned here (32 bytes) + uint8_t* digest_enc; //!< Encrypted (ciphertext) digest is return here (32 bytes) +} atca_secureboot_enc_in_out_t; + + +typedef struct atca_secureboot_mac_in_out +{ + uint8_t mode; //!< SecureBoot mode (param1) + uint16_t param2; //!< SecureBoot param2 + uint16_t secure_boot_config; //!< SecureBootConfig value from configuration zone + const uint8_t* hashed_key; //!< Hashed key. SHA256(IO Protection Key | TempKey) + const uint8_t* digest; //!< Digest (unencrypted) + const uint8_t* signature; //!< Signature (can be NULL if not required) + uint8_t* mac; //!< MAC is returned here +} atca_secureboot_mac_in_out_t; + +/** \struct atca_mac_in_out + * \brief Input/output parameters for function atca_mac(). + * \var atca_mac_in_out::mode + * \brief [in] Mode parameter used in MAC command (Param1). + * \var atca_mac_in_out::key_id + * \brief [in] KeyID parameter used in MAC command (Param2). + * \var atca_mac_in_out::challenge + * \brief [in] Pointer to 32-byte Challenge data used in MAC command, depending on mode. + * \var atca_mac_in_out::key + * \brief [in] Pointer to 32-byte key used to generate MAC digest. + * \var atca_mac_in_out::otp + * \brief [in] Pointer to 11-byte OTP, optionally included in MAC digest, depending on mode. + * \var atca_mac_in_out::sn + * \brief [in] Pointer to 9-byte SN, optionally included in MAC digest, depending on mode. + * \var atca_mac_in_out::response + * \brief [out] Pointer to 32-byte SHA-256 digest (MAC). + * \var atca_mac_in_out::temp_key + * \brief [in,out] Pointer to TempKey structure. + */ + + + +typedef struct atca_mac_in_out +{ + uint8_t mode; + uint16_t key_id; + const uint8_t * challenge; + const uint8_t * key; + const uint8_t * otp; + const uint8_t * sn; + uint8_t * response; + struct atca_temp_key *temp_key; +} atca_mac_in_out_t; + + +/** \struct atca_hmac_in_out + * \brief Input/output parameters for function atca_hmac(). + * \var atca_hmac_in_out::mode + * \brief [in] Mode parameter used in HMAC command (Param1). + * \var atca_hmac_in_out::key_id + * \brief [in] KeyID parameter used in HMAC command (Param2). + * \var atca_hmac_in_out::key + * \brief [in] Pointer to 32-byte key used to generate HMAC digest. + * \var atca_hmac_in_out::otp + * \brief [in] Pointer to 11-byte OTP, optionally included in HMAC digest, depending on mode. + * \var atca_hmac_in_out::sn + * \brief [in] Pointer to 9-byte SN, optionally included in HMAC digest, depending on mode. + * \var atca_hmac_in_out::response + * \brief [out] Pointer to 32-byte SHA-256 HMAC digest. + * \var atca_hmac_in_out::temp_key + * \brief [in,out] Pointer to TempKey structure. + */ +struct atca_hmac_in_out +{ + uint8_t mode; + uint16_t key_id; + const uint8_t * key; + const uint8_t * otp; + const uint8_t * sn; + uint8_t * response; + struct atca_temp_key *temp_key; +}; + + +/** + * \brief Input/output parameters for function atcah_gen_dig(). + */ +typedef struct atca_gen_dig_in_out +{ + uint8_t zone; //!< [in] Zone/Param1 for the GenDig command + uint16_t key_id; //!< [in] KeyId/Param2 for the GenDig command + bool is_key_nomac; //!< [in] Set to true if the slot pointed to be key_id has the SotConfig.NoMac bit set + const uint8_t * sn; //!< [in] Device serial number SN[0:8]. Only SN[0:1] and SN[8] are required though. + const uint8_t * stored_value; //!< [in] 32-byte slot value, config block, OTP block as specified by the Zone/KeyId parameters + const uint8_t * other_data; //!< [in] 32-byte value for shared nonce zone, 4-byte value if is_key_nomac is true, ignored and/or NULL otherwise + struct atca_temp_key *temp_key; //!< [inout] Current state of TempKey +} atca_gen_dig_in_out_t; + +/** + * \brief Input/output parameters for function atcah_write_auth_mac() and atcah_privwrite_auth_mac(). + */ +typedef struct atca_write_mac_in_out +{ + uint8_t zone; //!< Zone/Param1 for the Write or PrivWrite command + uint16_t key_id; //!< KeyID/Param2 for the Write or PrivWrite command + const uint8_t * sn; //!< Device serial number SN[0:8]. Only SN[0:1] and SN[8] are required though. + const uint8_t * input_data; //!< Data to be encrypted. 32 bytes for Write command, 36 bytes for PrivWrite command. + uint8_t * encrypted_data; //!< Encrypted version of input_data will be returned here. 32 bytes for Write command, 36 bytes for PrivWrite command. + uint8_t * auth_mac; //!< Write MAC will be returned here. 32 bytes. + struct atca_temp_key *temp_key; //!< Current state of TempKey. +} atca_write_mac_in_out_t; + +/** + * \brief Input/output parameters for function atcah_derive_key(). + */ +struct atca_derive_key_in_out +{ + uint8_t mode; //!< Mode (param 1) of the derive key command + uint16_t target_key_id; //!< Key ID (param 2) of the target slot to run the command on + const uint8_t * sn; //!< Device serial number SN[0:8]. Only SN[0:1] and SN[8] are required though. + const uint8_t * parent_key; //!< Parent key to be used in the derive key calculation (32 bytes). + uint8_t * target_key; //!< Derived key will be returned here (32 bytes). + struct atca_temp_key *temp_key; //!< Current state of TempKey. +}; + + +/** + * \brief Input/output parameters for function atcah_derive_key_mac(). + */ +struct atca_derive_key_mac_in_out +{ + uint8_t mode; //!< Mode (param 1) of the derive key command + uint16_t target_key_id; //!< Key ID (param 2) of the target slot to run the command on + const uint8_t *sn; //!< Device serial number SN[0:8]. Only SN[0:1] and SN[8] are required though. + const uint8_t *parent_key; //!< Parent key to be used in the derive key calculation (32 bytes). + uint8_t * mac; //!< DeriveKey MAC will be returned here. +}; + + +/** \struct atca_decrypt_in_out + * \brief Input/output parameters for function atca_decrypt(). + * \var atca_decrypt_in_out::crypto_data + * \brief [in,out] Pointer to 32-byte data. Input encrypted data from Read command (Contents field), output decrypted. + * \var atca_decrypt_in_out::temp_key + * \brief [in,out] Pointer to TempKey structure. + */ +struct atca_decrypt_in_out +{ + uint8_t * crypto_data; + struct atca_temp_key *temp_key; +}; + + +/** \brief Input/output parameters for function atcah_check_mac(). + */ +typedef struct atca_check_mac_in_out +{ + uint8_t mode; //!< [in] CheckMac command Mode + uint16_t key_id; //!< [in] CheckMac command KeyID + const uint8_t *sn; //!< [in] Device serial number SN[0:8]. Only SN[0:1] and SN[8] are required though. + const uint8_t *client_chal; //!< [in] ClientChal data, 32 bytes. Can be NULL if mode[0] is 1. + uint8_t * client_resp; //!< [out] Calculated ClientResp will be returned here. + const uint8_t *other_data; //!< [in] OtherData, 13 bytes + const uint8_t *otp; //!< [in] First 8 bytes of the OTP zone data. Can be NULL is mode[5] is 0. + const uint8_t *slot_key; //!< [in] 32 byte key value in the slot specified by slot_id. Can be NULL if mode[1] is 1. + /// [in] If this is not NULL, it assumes CheckMac copy is enabled for the specified key_id (ReadKey=0). If key_id + /// is even, this should be the 32-byte key value for the slot key_id+1, otherwise this should be set to slot_key. + const uint8_t * target_key; + struct atca_temp_key *temp_key; //!< [in,out] Current state of TempKey. Required if mode[0] or mode[1] are 1. +} atca_check_mac_in_out_t; + + +/** \struct atca_verify_in_out + * \brief Input/output parameters for function atcah_verify(). + * \var atca_verify_in_out::curve_type + * \brief [in] Curve type used in Verify command (Param2). + * \var atca_verify_in_out::signature + * \brief [in] Pointer to ECDSA signature to be verified + * \var atca_verify_in_out::public_key + * \brief [in] Pointer to the public key to be used for verification + * \var atca_verify_in_out::temp_key + * \brief [in,out] Pointer to TempKey structure. + */ +typedef struct atca_verify_in_out +{ + uint16_t curve_type; + const uint8_t * signature; + const uint8_t * public_key; + struct atca_temp_key *temp_key; +} atca_verify_in_out_t; + +/** \brief Input/output parameters for calculating the PubKey digest put into + * TempKey by the GenKey command with the + * atcah_gen_key_msg() function. + */ +typedef struct atca_gen_key_in_out +{ + uint8_t mode; //!< [in] GenKey Mode + uint16_t key_id; //!< [in] GenKey KeyID + const uint8_t * public_key; //!< [in] Public key to be used in the PubKey digest. X and Y integers in big-endian format. 64 bytes for P256 curve. + size_t public_key_size; //!< [in] Total number of bytes in the public key. 64 bytes for P256 curve. + const uint8_t * other_data; //!< [in] 3 bytes required when bit 4 of the mode is set. Can be NULL otherwise. + const uint8_t * sn; //!< [in] Device serial number SN[0:8] (9 bytes). Only SN[0:1] and SN[8] are required though. + struct atca_temp_key *temp_key; //!< [in,out] As input the current state of TempKey. As output, the resulting PubKEy digest. +} atca_gen_key_in_out_t; + +/** \brief Input/output parameters for calculating the message and digest used + * by the Sign(internal) command. Used with the + * atcah_sign_internal_msg() function. + */ +typedef struct atca_sign_internal_in_out +{ + uint8_t mode; //!< [in] Sign Mode + uint16_t key_id; //!< [in] Sign KeyID + uint16_t slot_config; //!< [in] SlotConfig[TempKeyFlags.keyId] + uint16_t key_config; //!< [in] KeyConfig[TempKeyFlags.keyId] + uint8_t use_flag; //!< [in] UseFlag[TempKeyFlags.keyId], 0x00 for slots 8 and above and for ATECC508A + uint8_t update_count; //!< [in] UpdateCount[TempKeyFlags.keyId], 0x00 for slots 8 and above and for ATECC508A + bool is_slot_locked; //!< [in] Is TempKeyFlags.keyId slot locked. + bool for_invalidate; //!< [in] Set to true if this will be used for the Verify(Invalidate) command. + const uint8_t * sn; //!< [in] Device serial number SN[0:8] (9 bytes) + const struct atca_temp_key *temp_key; //!< [in] The current state of TempKey. + uint8_t* message; //!< [out] Full 55 byte message the Sign(internal) command will build. Can be NULL if not required. + uint8_t* verify_other_data; //!< [out] The 19 byte OtherData bytes to be used with the Verify(In/Validate) command. Can be NULL if not required. + uint8_t* digest; //!< [out] SHA256 digest of the full 55 byte message. Can be NULL if not required. +} atca_sign_internal_in_out_t; + +#ifdef __cplusplus +extern "C" { +#endif + +ATCA_STATUS atcah_nonce(struct atca_nonce_in_out *param); +ATCA_STATUS atcah_mac(struct atca_mac_in_out *param); +ATCA_STATUS atcah_check_mac(struct atca_check_mac_in_out *param); +ATCA_STATUS atcah_hmac(struct atca_hmac_in_out *param); +ATCA_STATUS atcah_gen_dig(struct atca_gen_dig_in_out *param); +ATCA_STATUS atcah_gen_mac(struct atca_gen_dig_in_out *param); +ATCA_STATUS atcah_write_auth_mac(struct atca_write_mac_in_out *param); +ATCA_STATUS atcah_privwrite_auth_mac(struct atca_write_mac_in_out *param); +ATCA_STATUS atcah_derive_key(struct atca_derive_key_in_out *param); +ATCA_STATUS atcah_derive_key_mac(struct atca_derive_key_mac_in_out *param); +ATCA_STATUS atcah_decrypt(struct atca_decrypt_in_out *param); +ATCA_STATUS atcah_sha256(int32_t len, const uint8_t *message, uint8_t *digest); +uint8_t *atcah_include_data(struct atca_include_data_in_out *param); +ATCA_STATUS atcah_gen_key_msg(struct atca_gen_key_in_out *param); +ATCA_STATUS atcah_config_to_sign_internal(ATCADeviceType device_type, struct atca_sign_internal_in_out *param, const uint8_t* config); +ATCA_STATUS atcah_sign_internal_msg(ATCADeviceType device_type, struct atca_sign_internal_in_out *param); +ATCA_STATUS atcah_verify_mac(atca_verify_mac_in_out_t *param); +ATCA_STATUS atcah_secureboot_enc(atca_secureboot_enc_in_out_t* param); +ATCA_STATUS atcah_secureboot_mac(atca_secureboot_mac_in_out_t *param); +ATCA_STATUS atcah_encode_counter_match(uint32_t counter, uint8_t * counter_match); +ATCA_STATUS atcah_io_decrypt(struct atca_io_decrypt_in_out *param); +#ifdef __cplusplus +} +#endif + +/** @} */ + +#endif //ATCA_HOST_H diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.c b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.c new file mode 100644 index 0000000..bd08d98 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.c @@ -0,0 +1,348 @@ +/** + * \file + * \brief Utilities to create and verify a JSON Web Token (JWT) + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#include "cryptoauthlib.h" +#include "basic/atca_helpers.h" +#include "crypto/atca_crypto_sw_sha2.h" +#include "jwt/atca_jwt.h" +#include + +/** \brief The only supported JWT format for this library */ +static const char g_jwt_header[] = "{\"alg\":\"ES256\",\"typ\":\"JWT\"}"; + +/** + * \brief Check the provided context to see what character needs to be added in + * order to append a claim + */ +void atca_jwt_check_payload_start( + atca_jwt_t* jwt /**< [in] JWT Context to use */ + ) +{ + /* Rationality checks: a) must be valid, b) buf must be valid, c) must not be at the start, d) must have room */ + if (jwt && jwt->buf && jwt->cur && (jwt->cur < jwt->buflen - 1)) + { + /* Check the previous */ + char c = jwt->buf[jwt->cur - 1]; + if ('.' == c) + { + jwt->buf[jwt->cur++] = '{'; + } + else if ('{' != c) + { + jwt->buf[jwt->cur++] = ','; + } + } +} + +/** + * \brief Initialize a JWT structure + */ +ATCA_STATUS atca_jwt_init( + atca_jwt_t* jwt, /**< [in] JWT Context to initialize */ + char* buf, /**< [inout] Pointer to a buffer to store the token */ + uint16_t buflen /**< [in] Length of the buffer */ + ) +{ + ATCA_STATUS ret = ATCA_BAD_PARAM; + size_t tSize; + + if (jwt && buf && buflen) + { + jwt->buf = buf; + jwt->buflen = buflen; + jwt->cur = 0; + + /* Encode the header into the buffer */ + tSize = jwt->buflen; + ret = atcab_base64encode_((const uint8_t*)g_jwt_header, strlen(g_jwt_header), jwt->buf, + &tSize, atcab_b64rules_urlsafe); + if (ATCA_SUCCESS == ret) + { + jwt->cur += (uint16_t)tSize; + + /* Check length */ + if (jwt->cur < jwt->buflen - 1) + { + /* Add the separator */ + jwt->buf[jwt->cur++] = '.'; + } + else + { + ret = ATCA_INVALID_SIZE; + } + } + } + return ret; +} + +/** + * \brief Close the claims of a token, encode them, then sign the result + */ +ATCA_STATUS atca_jwt_finalize( + atca_jwt_t* jwt, /**< [in] JWT Context to use */ + uint16_t key_id /**< [in] Key Id (Slot number) used to sign */ + ) +{ + ATCA_STATUS status; + uint16_t i; + size_t rem; + size_t tSize; + + if (!jwt || !jwt->buf || !jwt->buflen || !jwt->cur) + { + return ATCA_BAD_PARAM; + } + + /* Verify the payload is closed */ + if ('}' != jwt->buf[jwt->cur - 1]) + { + jwt->buf[jwt->cur++] = '}'; + } + + /* Find the start of the "claims" portion of the token - header should + already be encoded */ + for (i = 0; i < jwt->cur; i++) + { + if ('.' == jwt->buf[i]) + { + i++; + break; + } + } + + /* Make sure there is enough remaining buffer given base64 4/3 expansion */ + rem = (jwt->cur - i + ATCA_SIG_SIZE) * 4; + rem /= 3; + + /* Increase Count to accomodate: 1 for the '.', 1 for the null terminator, + and 1 for padding */ + rem += 3; + + if (rem > (size_t)(jwt->buflen - jwt->cur)) + { + return ATCA_INVALID_SIZE; + } + + /* Calculate the payload length */ + rem = jwt->cur - i; + /* Move the payload to make room for the encoding */ + memmove(jwt->buf + jwt->buflen - jwt->cur, &jwt->buf[i], rem); + + /* Encode the payload into the buffer */ + tSize = jwt->buflen; + status = atcab_base64encode_((uint8_t*)(jwt->buf + jwt->buflen - jwt->cur), rem, + &jwt->buf[i], &tSize, atcab_b64rules_urlsafe); + if (ATCA_SUCCESS != status) + { + return status; + } + + jwt->cur = (uint16_t)(i + tSize); + + /* Make sure there room to add the signature + ECDSA(P256) -> 64 bytes -> base64 -> 86.3 (87) -> 88 including null */ + if (jwt->cur >= jwt->buflen - 88) + { + /* Something broke */ + return ATCA_INVALID_SIZE; + } + + /* Create digest of the message store and store in the buffer */ + status = atcac_sw_sha2_256((const uint8_t*)jwt->buf, jwt->cur, (uint8_t*)(jwt->buf + jwt->buflen - 32)); + if (ATCA_SUCCESS != status) + { + return status; + } + + /* Create ECSDA signature of the digest and store it back in the buffer */ + status = atcab_sign(key_id, (const uint8_t*)(jwt->buf + jwt->buflen - ATCA_SHA_DIGEST_SIZE), + (uint8_t*)(jwt->buf + jwt->buflen - 64)); + if (ATCA_SUCCESS != status) + { + return status; + } + + /* Add the separator */ + jwt->buf[jwt->cur++] = '.'; + + /* Encode the signature and store it in the buffer */ + tSize = jwt->buflen - jwt->cur; + atcab_base64encode_((const uint8_t*)(jwt->buf + jwt->buflen - ATCA_SIG_SIZE), ATCA_SIG_SIZE, + &jwt->buf[jwt->cur], &tSize, atcab_b64rules_urlsafe); + jwt->cur += (uint16_t)tSize; + + if (jwt->cur >= jwt->buflen) + { + /* Something broke */ + return ATCA_INVALID_SIZE; + } + + /* Make sure resulting buffer is null terminated */ + jwt->buf[jwt->cur] = 0; + + return status; +} + +/** + * \brief Add a string claim to a token + * \note This function does not escape strings so the user has to ensure they + * are valid for use in a JSON string first + */ +ATCA_STATUS atca_jwt_add_claim_string( + atca_jwt_t* jwt, /**< [in] JWT Context to use */ + const char* claim, /**< [in] Name of the claim to be inserted */ + const char* value /**< [in] Null terminated string to be insterted */ + ) +{ + int32_t written; + int32_t remaining; + + if (jwt && jwt->buf && jwt->buflen && claim && value) + { + atca_jwt_check_payload_start(jwt); + + remaining = jwt->buflen - jwt->cur; + written = snprintf(&jwt->buf[jwt->cur], remaining, "\"%s\":\"%s\"", claim, value); + if (0 < written && written < remaining) + { + jwt->cur += written; + return ATCA_SUCCESS; + } + else + { + return ATCA_GEN_FAIL; + } + } + else + { + return ATCA_BAD_PARAM; + } +} + +/** + * \brief Add a numeric claim to a token + * \note This function does not escape strings so the user has to ensure the + * claim is valid first + */ +ATCA_STATUS atca_jwt_add_claim_numeric( + atca_jwt_t* jwt, /**< [in] JWT Context to use */ + const char* claim, /**< [in] Name of the claim to be inserted */ + int32_t value /**< [in] integer value to be inserted */ + ) +{ + int32_t written; + int32_t remaining; + + if (jwt && jwt->buf && jwt->buflen && claim) + { + atca_jwt_check_payload_start(jwt); + + remaining = jwt->buflen - jwt->cur; + written = snprintf(&jwt->buf[jwt->cur], remaining, "\"%s\":%ld", claim, (long)value); + if (0 < written && written < remaining) + { + jwt->cur += written; + return 0; + } + else + { + return ATCA_GEN_FAIL; + } + } + else + { + return ATCA_BAD_PARAM; + } +} + +/** + * \brief Verifies the signature of a jwt using the provided public key + */ +ATCA_STATUS atca_jwt_verify( + const char* buf, /**< [in] Buffer holding an encoded jwt */ + uint16_t buflen, /**< [in] Length of the buffer/jwt */ + const uint8_t* pubkey /**< [in] Public key (raw byte format) */ + ) +{ + ATCA_STATUS status = ATCA_GEN_FAIL; + uint8_t digest[ATCA_KEY_SIZE]; + uint8_t signature[ATCA_SIG_SIZE]; + size_t sig_len = sizeof(signature); + const char* pStr = buf; + + bool verified = false; + + if (!buf || !buflen || !pubkey) + { + return ATCA_BAD_PARAM; + } + + do + { + /* Payload */ + pStr = strchr(pStr, '.') + 1; + if (!pStr) + { + break; + } + + /* Signature */ + pStr = strchr(pStr, '.') + 1; + if (!pStr) + { + break; + } + + /* Extract the signature */ + if (ATCA_SUCCESS != (status = atcab_base64decode_(pStr, strlen(pStr), + signature, &sig_len, atcab_b64rules_urlsafe))) + { + break; + } + + /* Digest the token */ + if (ATCA_SUCCESS != (status = atcac_sw_sha2_256((const uint8_t*)buf, pStr - buf - 1, digest))) + { + break; + } + + /* Do a signature verification using the device */ + if (ATCA_SUCCESS != (status = atcab_verify_extern(digest, signature, + pubkey, &verified))) + { + break; + } + + if (!verified) + { + status = ATCA_CHECKMAC_VERIFY_FAILED; + } + } + while (0); + + return status; +} diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.h b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.h new file mode 100644 index 0000000..2118a57 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.h @@ -0,0 +1,61 @@ +/** + * \file + * \brief Utilities to create and verify a JSON Web Token (JWT) + * + * \copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, + * SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE + * OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF + * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE + * FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL + * LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED + * THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR + * THIS SOFTWARE. + */ + +#ifndef ATCA_JWT_H_ +#define ATCA_JWT_H_ + +/** \defgroup jwt JSON Web Token (JWT) methods (atca_jwt_) + * \brief Methods for signing and verifying JSON Web Token (JWT) tokens. + @{ */ + +#include "cryptoauthlib.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \brief Structure to hold metadata information about the jwt being built */ +typedef struct +{ + char* buf; /* Input buffer */ + uint16_t buflen; /* Total buffer size */ + uint16_t cur; /* Current location in the buffer */ +} atca_jwt_t; + +ATCA_STATUS atca_jwt_init(atca_jwt_t* jwt, char* buf, uint16_t buflen); +ATCA_STATUS atca_jwt_add_claim_string(atca_jwt_t* jwt, const char* claim, const char* value); +ATCA_STATUS atca_jwt_add_claim_numeric(atca_jwt_t* jwt, const char* claim, int32_t value); +ATCA_STATUS atca_jwt_finalize(atca_jwt_t* jwt, uint16_t key_id); +void atca_jwt_check_payload_start(atca_jwt_t* jwt); +ATCA_STATUS atca_jwt_verify(const char* buf, uint16_t buflen, const uint8_t* pubkey); + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif /* ATCA_JWT_H_ */ diff --git a/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/readme.md b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/readme.md new file mode 100644 index 0000000..13c49df --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/CryptoAuthenticationLibrary/readme.md @@ -0,0 +1 @@ +## This folder will contain the source and header files generated using the cryptoAuthenticationLibrary ftl files. \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/application_manager.c b/AVRIoT.X/mcc_generated_files/application_manager.c new file mode 100644 index 0000000..74e32ca --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/application_manager.c @@ -0,0 +1,399 @@ +/* +\file application_manager.c + +\brief Application Manager source file. + +(c) 2018 Microchip Technology Inc. and its subsidiaries. + +Subject to your compliance with these terms, you may use Microchip software and any +derivatives exclusively with Microchip products. It is your responsibility to comply with third party +license terms applicable to your use of third party software (including open source software) that +may accompany Microchip software. + +THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER +EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY +IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS +FOR A PARTICULAR PURPOSE. + +IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, +INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND +WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP +HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO +THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL +CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT +OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS +SOFTWARE. +*/ + +#include +#include +#include +#include "utils/atomic.h" +#include +#include "include/pin_manager.h" +#include "application_manager.h" +#include "mcc.h" +#include "config/IoT_Sensor_Node_config.h" +#include "config/conf_winc.h" +#include "config/mqtt_config.h" +#include "cloud/cloud_service.h" +#include "cloud/mqtt_service.h" +#include "cloud/crypto_client/crypto_client.h" +#include "cloud/wifi_service.h" +#include "CryptoAuthenticationLibrary/CryptoAuth_init.h" +#include "../mcc_generated_files/sensors_handling.h" +#include "credentials_storage/credentials_storage.h" +#include "led.h" +#include "debug_print.h" +#include "time_service.h" +#if CFG_ENABLE_CLI +#include "cli/cli.h" +#endif + + +#define MAIN_DATATASK_INTERVAL 100L +// The debounce time is currently close to 2 Seconds. +#define SW_DEBOUNCE_INTERVAL 1460000L +#define SW0_TOGGLE_STATE SW0_GetValue() +#define SW1_TOGGLE_STATE SW1_GetValue() +#define TOGGLE_ON 1 +#define TOGGLE_OFF 0 +#define DEVICE_SHADOW_INIT_INTERVAL 1000L +#define UPDATE_DEVICE_SHADOW_BUFFER_TIME (2) +static uint8_t toggleState = 0; + +// This will contain the device ID, before we have it this dummy value is the init value which is non-0 +char attDeviceID[20] = "BAAAAADD1DBAAADD1D"; +char mqttSubscribeTopic[SUBSCRIBE_TOPIC_SIZE]; +ATCA_STATUS retValCryptoClientSerialNumber; +static uint8_t holdCount = 0; + +uint32_t MAIN_dataTask(void *payload); +timerStruct_t MAIN_dataTasksTimer = {MAIN_dataTask}; + +static void wifiConnectionStateChanged(uint8_t status); +static void sendToCloud(void); +static void updateDeviceShadow(void); +static void subscribeToCloud(void); +static void receivedFromCloud(uint8_t *topic, uint8_t *payload); +static void setToggleState(uint8_t passedToggleState); +static uint8_t getToggleState(void); +uint32_t initDeviceShadow(void *payload); +timerStruct_t initDeviceShadowTimer = {initDeviceShadow}; + +// This will get called every 1 second only while we have a valid Cloud connection +static void sendToCloud(void) +{ + static char json[PAYLOAD_SIZE]; + static char publishMqttTopic[PUBLISH_TOPIC_SIZE]; + ledTickState_t ledState; + int rawTemperature = 0; + int light = 0; + int len = 0; + memset((void*)publishMqttTopic, 0, sizeof(publishMqttTopic)); + sprintf(publishMqttTopic, "%s/sensors", cid); + // This part runs every CFG_SEND_INTERVAL seconds + if (shared_networking_params.haveAPConnection) + { + rawTemperature = SENSORS_getTempValue(); + light = SENSORS_getLightValue(); + len = sprintf(json,"{\"Light\":%d,\"Temp\":%d.%02d}", light,rawTemperature/100,abs(rawTemperature)%100); + } + if (len >0) + { + CLOUD_publishData((uint8_t*)publishMqttTopic ,(uint8_t*)json, len); + if (holdCount) + { + holdCount--; + } + else + { + ledState.Full2Sec = LED_BLIP; + LED_modeYellow(ledState); + } + + } +} + +//This handles messages published from the MQTT server when subscribed +static void receivedFromCloud(uint8_t *topic, uint8_t *payload) +{ + char *toggleToken = "\"toggle\":"; + char *subString; + ledTickState_t ledState; + sprintf(mqttSubscribeTopic, "$aws/things/%s/shadow/update/delta", cid); + if (strncmp((void*) mqttSubscribeTopic, (void*) topic, strlen(mqttSubscribeTopic)) == 0) + { + if ((subString = strstr((char*)payload, toggleToken))) + { + if (subString[strlen(toggleToken)] == '1') + { + setToggleState(TOGGLE_ON); + ledState.Full2Sec = LED_ON_STATIC; + LED_modeYellow(ledState); + } + else + { + setToggleState(TOGGLE_OFF); + ledState.Full2Sec = LED_OFF_STATIC; + LED_modeYellow(ledState); + } + holdCount = 2; + } + } + debug_printer(SEVERITY_NONE, LEVEL_NORMAL, "topic: %s", topic); + debug_printer(SEVERITY_NONE, LEVEL_NORMAL, "payload: %s", payload); + updateDeviceShadow(); +} + +void application_init() +{ + uint8_t mode = WIFI_DEFAULT; + uint32_t sw0CurrentVal = 0; + uint32_t sw1CurrentVal = 0; + uint32_t i = 0; + ledTickState_t ledState; + + // Initialization of modules before interrupts are enabled + SYSTEM_Initialize(); + LED_test(); +#if CFG_ENABLE_CLI + CLI_init(); + CLI_setdeviceId(attDeviceID); +#endif + debug_init(attDeviceID); + + // Initialization of modules where the init needs interrupts to be enabled + if(!CryptoAuth_Initialize()) + { + debug_printError("APP: CryptoAuthInit failed"); + shared_networking_params.haveError = 1; + } + // Get serial number from the ECC608 chip + retValCryptoClientSerialNumber = CRYPTO_CLIENT_printSerialNumber(attDeviceID); + if( retValCryptoClientSerialNumber != ATCA_SUCCESS ) + { + shared_networking_params.haveError = 1; + switch(retValCryptoClientSerialNumber) + { + case ATCA_GEN_FAIL: + debug_printError("APP: DeviceID generation failed, unspecified error"); + break; + case ATCA_BAD_PARAM: + debug_printError("APP: DeviceID generation failed, bad argument"); + default: + debug_printError("APP: DeviceID generation failed"); + break; + } + + } +#if CFG_ENABLE_CLI + CLI_setdeviceId(attDeviceID); +#endif + debug_setPrefix(attDeviceID); + wifi_readThingIdFromWinc(); + wifi_readAWSEndpointFromWinc(); + timeout_create(&initDeviceShadowTimer, DEVICE_SHADOW_INIT_INTERVAL ); + // Blocking debounce + for(i = 0; i < SW_DEBOUNCE_INTERVAL; i++) + { + sw0CurrentVal += SW0_TOGGLE_STATE; + sw1CurrentVal += SW1_TOGGLE_STATE; + } + if(sw0CurrentVal < (SW_DEBOUNCE_INTERVAL/2)) + { + if(sw1CurrentVal < (SW_DEBOUNCE_INTERVAL/2)) + { + // Default Credentials + Connect to AP + strcpy(ssid, CFG_MAIN_WLAN_SSID); + strcpy(pass, CFG_MAIN_WLAN_PSK); + sprintf((char*)authType, "%d", CFG_MAIN_WLAN_AUTH); + + ledState.Full2Sec = LED_BLINK; + LED_modeGreen(ledState); + LED_modeBlue(ledState); + ledState.Full2Sec = LED_OFF_STATIC; + LED_modeYellow(ledState); + LED_modeRed(ledState); + + shared_networking_params.amConnectingAP = 1; + shared_networking_params.amSoftAP = 0; + shared_networking_params.amDefaultCred = 1; + } + else + { + // Host as SOFT AP + ledState.Full2Sec = LED_BLIP; + LED_modeBlue(ledState); + ledState.Full2Sec = LED_OFF_STATIC; + LED_modeGreen(ledState); + LED_modeYellow(ledState); + LED_modeRed(ledState); + mode = WIFI_SOFT_AP; + shared_networking_params.amConnectingAP = 0; + shared_networking_params.amSoftAP = 1; + shared_networking_params.amDefaultCred = 0; + } + } + else + { + // Connect to AP + ledState.Full2Sec = LED_BLINK; + LED_modeBlue(ledState); + ledState.Full2Sec = LED_OFF_STATIC; + LED_modeGreen(ledState); + LED_modeYellow(ledState); + LED_modeRed(ledState); + shared_networking_params.amConnectingAP = 1; + shared_networking_params.amSoftAP = 0; + shared_networking_params.amDefaultCred = 0; + } + wifi_init(wifiConnectionStateChanged, mode); + + if (mode == WIFI_DEFAULT) + { + CLOUD_setupTask(attDeviceID); + timeout_create(&MAIN_dataTasksTimer, MAIN_DATATASK_INTERVAL); + } + + LED_test(); + LED_serviceInit(); + subscribeToCloud(); +} + +static void subscribeToCloud(void) +{ + sprintf(mqttSubscribeTopic, "$aws/things/%s/shadow/update/delta", cid); + CLOUD_registerSubscription((uint8_t*)mqttSubscribeTopic,receivedFromCloud); +} + +static void setToggleState(uint8_t passedToggleState) +{ + toggleState = passedToggleState; +} + +static uint8_t getToggleState(void) +{ + return toggleState; +} + +uint32_t initDeviceShadow(void *payload) +{ + static uint32_t previousTime = 0; + if(CLOUD_checkIsConnected()) + { + // Get the current time. This uses the C standard library time functions + uint32_t timeNow = TIME_getCurrent(); + if(previousTime == 0) + { + previousTime = timeNow; + } + else if((TIME_getDiffTime(timeNow, previousTime)) >= UPDATE_DEVICE_SHADOW_BUFFER_TIME) + { + updateDeviceShadow(); + return 0; + } + } + return DEVICE_SHADOW_INIT_INTERVAL; +} + +static void updateDeviceShadow(void) +{ + static char payload[PAYLOAD_SIZE]; + static char topic[PUBLISH_TOPIC_SIZE]; + int payloadLength = 0; + + memset((void*)topic, 0, sizeof(topic)); + sprintf(topic, "$aws/things/%s/shadow/update", cid); + if (shared_networking_params.haveAPConnection) + { + payloadLength = sprintf(payload,"{\"state\":{\"reported\":{\"toggle\":%d}}}", getToggleState()); + } + if (payloadLength >0) + { + CLOUD_publishData((uint8_t*)topic,(uint8_t*)payload, payloadLength); + } +} + +// This scheduler will check all tasks and timers that are due and service them +void runScheduler(void) +{ + timeout_callNextCallback(); +} + +// This gets called by the scheduler approximately every 100ms +uint32_t MAIN_dataTask(void *payload) +{ + ledTickState_t ledState; + static uint32_t previousTransmissionTime = 0; + + // Get the current time. This uses the C standard library time functions + uint32_t timeNow = TIME_getCurrent(); + + // Example of how to send data when MQTT is connected every 1 second based on the system clock + if(CLOUD_checkIsConnected()) + { + // How many seconds since the last time this loop ran? + int32_t delta = TIME_getDiffTime(timeNow, previousTransmissionTime); + + if (delta >= CFG_SEND_INTERVAL) + { + previousTransmissionTime = timeNow; + // Call the data task in main.c + sendToCloud(); + } + } + + // Blue LED + if (!shared_networking_params.amConnectingAP) + { + if (shared_networking_params.haveAPConnection) + { + ledState.Full2Sec = LED_ON_STATIC; + LED_modeBlue(ledState); + } + + // Green LED if we are in Access Point + if (!shared_networking_params.amConnectingSocket) + { + if(CLOUD_checkIsConnected()) + { + ledState.Full2Sec = LED_ON_STATIC; + LED_modeGreen(ledState); + } + } + } + + // RED LED + if (shared_networking_params.haveError) + { + ledState.Full2Sec = LED_ON_STATIC; + LED_modeRed(ledState); + } + else + { + ledState.Full2Sec = LED_OFF_STATIC; + LED_modeRed(ledState); + } + + // This is milliseconds managed by the RTC and the scheduler, this return + // makes the timer run another time, returning 0 will make it stop + return MAIN_DATATASK_INTERVAL; +} + +void application_post_provisioning(void) +{ + CLOUD_setupTask(attDeviceID); + timeout_create(&MAIN_dataTasksTimer, MAIN_DATATASK_INTERVAL); +} + +// React to the WIFI state change here. Status of 1 means connected, Status of 0 means disconnected +static void wifiConnectionStateChanged(uint8_t status) +{ + // If we have no AP access we want to retry + if (status != 1) + { + // Restart the WIFI module if we get disconnected from the WiFi Access Point (AP) + CLOUD_setInitFlag(); + } +} diff --git a/AVRIoT.X/mcc_generated_files/application_manager.h b/AVRIoT.X/mcc_generated_files/application_manager.h new file mode 100644 index 0000000..33e219d --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/application_manager.h @@ -0,0 +1,35 @@ +/* +\file application_manager.h + +\brief Application Manager header file. + +(c) 2018 Microchip Technology Inc. and its subsidiaries. + +Subject to your compliance with these terms, you may use Microchip software and any +derivatives exclusively with Microchip products. It is your responsibility to comply with third party +license terms applicable to your use of third party software (including open source software) that +may accompany Microchip software. + +THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER +EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY +IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS +FOR A PARTICULAR PURPOSE. + +IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, +INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND +WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP +HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO +THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL +CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT +OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS +SOFTWARE. +*/ + +#ifndef APPLICATION_MANAGER_H_ +#define APPLICATION_MANAGER_H_ + +void application_init(void); +void application_post_provisioning(void); +void runScheduler(void); + +#endif /* APPLICATION_MANAGER_H_ */ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/banner.h b/AVRIoT.X/mcc_generated_files/banner.h new file mode 100644 index 0000000..f395dac --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/banner.h @@ -0,0 +1,106 @@ +/* + \file banner.h + + \brief banner text. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef BANNER_H +#define BANNER_H + +#ifdef __AVR__ +#define BANNER "\33[34m"\ +" . \r\n"\ +" ;;;;;;. ;;;;;; ;;;;;; `;;;;;;;;;: `., \r\n"\ +" `''''''; `''''', .''''', ;'''''''''''`.`, \r\n"\ +" :''''''' '''''' ;''''; ''''''''''''' ` \r\n"\ +" '''''''': ,'''''` `''''': :''''''''''''': \r\n"\ +" `''''''''' '''''; :''''' ''''': `'''''; \r\n"\ +" ;'''''''''. ;''''' '''''; .'''''` :''''' \r\n"\ +" ''''':''''; `''''': .'''''` ;''''; ,''''' \r\n"\ +" :''''; '''''` ;''''; '''''; `''''', ;''''; \r\n"\ +" '''''` ;''''; .'''''` `'''''. :''''' ;''''': \r\n"\ +" `''''' .''''' '''''; ;''''' '''''';;'''''''' \r\n"\ +" ;''''; ''''': :''''' ''''', .''''''''''''''' \r\n"\ +" '''''` :''''' '''''.,''''' ''''''''''''''; \r\n"\ +" ,''''' `'''''. ;'''';;''''; '''''''''''';, \r\n"\ +" ;''''';;;;;'''''; `''''''''''` ;''''',:''''; \r\n"\ +" `'''''''''''''''''` '''''''''; '''''; ''''' \r\n"\ +" ;''''''''''''''''': ,'''''''', :'''''` ''''': \r\n"\ +" ''''''''''''''''''' '''''''' '''''; ;''''; \r\n"\ +" .''''':,,,,,,,:'''''. ;''''''; .''''', .''''' \r\n"\ +" ;''''' '''''; `'''''' ;''''' `''''': \r\n"\ +" '''''; ,'''''` ;''''; `'''''; '''''; \r\n"\ +",'''''` '''''; `''''` ;'''''` ;'''''` \r\n"\ +" '''' \r\n"\ +" ,'', \r\n"\ +" '' \r\n"\ +" ;: \r\n"\ +" ` \r\n"\ +"\33[0m"\ +" ooooo ooooooooooooo\r\n"\ +" `888' 8' 888 `8\r\n"\ +" 888 .ooooo. 888\r\n"\ +" 888 d88' `88b 888\r\n"\ +" 888 888 888 888\r\n"\ +" 888 888 888 888\r\n"\ +" o888o `Y8bod8P' o888o\r\n" +#else +#define BANNER "\33[31m"\ +"PPPPPPPPPPPPPPPPP IIIIIIIIII CCCCCCCCCCCCC\r\n"\ +"P::::::::::::::::P I::::::::I CCC::::::::::::C\r\n"\ +"P::::::PPPPPP:::::P I::::::::I CC:::::::::::::::C\r\n"\ +"PP:::::P P:::::PII::::::IIC:::::CCCCCCCC::::C\r\n"\ +" P::::P P:::::P I::::I C:::::C CCCCCC\r\n"\ +" P::::P P:::::P I::::IC:::::C \r\n"\ +" P::::PPPPPP:::::P I::::IC:::::C \r\n"\ +" P:::::::::::::PP I::::IC:::::C \r\n"\ +" P::::PPPPPPPPP I::::IC:::::C \r\n"\ +" P::::P I::::IC:::::C \r\n"\ +" P::::P I::::IC:::::C \r\n"\ +" P::::P I::::I C:::::C CCCCCC\r\n"\ +"PP::::::PP II::::::IIC:::::CCCCCCCC::::C\r\n"\ +"P::::::::P I::::::::I CC:::::::::::::::C\r\n"\ +"P::::::::P I::::::::I CCC::::::::::::C\r\n"\ +"PPPPPPPPPP IIIIIIIIII CCCCCCCCCCCCC\r\n"\ +"\33[0m\r\n"\ +" IIIIIIIIII TTTTTTTTTTTTTTTTTTTTTTT\r\n"\ +" I::::::::I T:::::::::::::::::::::T\r\n"\ +" I::::::::I T:::::::::::::::::::::T\r\n"\ +" II::::::II T:::::TT:::::::TT:::::T\r\n"\ +" I::::I oooooooooooTTTTTT T:::::T TTTTTT\r\n"\ +" I::::I oo:::::::::::oo T:::::T \r\n"\ +" I::::I o:::::::::::::::o T:::::T \r\n"\ +" I::::I o:::::ooooo:::::o T:::::T \r\n"\ +" I::::I o::::o o::::o T:::::T \r\n"\ +" I::::I o::::o o::::o T:::::T \r\n"\ +" I::::I o::::o o::::o T:::::T \r\n"\ +" I::::I o::::o o::::o T:::::T \r\n"\ +" II::::::IIo:::::ooooo:::::o TT:::::::TT \r\n"\ +" I::::::::Io:::::::::::::::o T:::::::::T \r\n"\ +" I::::::::I oo:::::::::::oo T:::::::::T \r\n"\ +" IIIIIIIIII ooooooooooo TTTTTTTTTTT \r\n" + +#endif + +#endif //BANNER_H \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/cli/cli.c b/AVRIoT.X/mcc_generated_files/cli/cli.c new file mode 100644 index 0000000..2d71ef0 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/cli/cli.c @@ -0,0 +1,380 @@ +/* + \file cli.c + + \brief Command Line Interpreter source file. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include +#include +#include +#include + +#include "../drivers/uart.h" +#include +#include "../include/usart2.h" +#include "cli.h" +#include "../cloud/crypto_client/crypto_client.h" +#include "../credentials_storage/credentials_storage.h" +#include "../mqtt/mqtt_core/mqtt_core.h" +#include "../debug_print.h" +#include "../cloud/wifi_service.h" +#include "../mqtt/mqtt_comm_bsd/mqtt_comm_layer.h" +#include "../cloud/cloud_service.h" +#include "led.h" +#include "../cloud/cloud_interface.h" +#include "../cloud/mqtt_service.h" + +#define WIFI_PARAMS_OPEN 1 +#define WIFI_PARAMS_PSK 2 +#define WIFI_PARAMS_WEP 3 +#define MAX_COMMAND_SIZE 100 +#define MAX_PUB_KEY_LEN 200 +#define NEWLINE "\r\n" +#define KEY_OR_THING "thing" +#define UNKNOWN_CMD_MSG "--------------------------------------------" NEWLINE\ + "Unknown command. List of available commands:" NEWLINE\ + "reset"NEWLINE\ + "device"NEWLINE\ + KEY_OR_THING NEWLINE\ + "reconnect" NEWLINE\ + "version" NEWLINE\ + "cli_version" NEWLINE\ + "wifi [,,[authType]]" NEWLINE\ + "debug" NEWLINE\ + "--------------------------------------------"NEWLINE"\4" + +static char command[MAX_COMMAND_SIZE]; +static bool isCommandReceived = false; +static uint8_t index = 0; +static bool commandTooLongFlag = false; + +const char * const cli_version_number = "1.0"; +const char * const firmware_version_number = "2.0.1"; + +static void command_received(char *command_text); +static void reset_cmd(char *pArg); +static void reconnect_cmd(char *pArg); +static void set_wifi_auth(char *ssid_pwd_auth); +static void get_thing_id(char *pArg); +static void get_device_id(char *pArg); +static void get_cli_version(char *pArg); +static void get_firmware_version(char *pArg); +static void set_debug_level(char *pArg); +static bool endOfLineTest(char c); +static void enableUsartRxInterrupts(void); + +#define CLI_TASK_INTERVAL 50 + +uint32_t CLI_task(void*); +timerStruct_t CLI_task_timer = {CLI_task}; + +struct cmd +{ + const char * const command; + void (* const handler)(char *argument); +}; + +const struct cmd commands[] = +{ + { "reset", reset_cmd}, + { "reconnect", reconnect_cmd }, + { "wifi", set_wifi_auth }, + { "thing", get_thing_id }, + { "device", get_device_id }, + { "cli_version", get_cli_version }, + { "version", get_firmware_version }, + { "debug", set_debug_level } +}; + +void CLI_init(void) +{ + enableUsartRxInterrupts(); + timeout_create(&CLI_task_timer, CLI_TASK_INTERVAL); +} + +static bool endOfLineTest(char c) +{ + static char test = 0; + bool retvalue = true; + + if(c == '\n') + { + if(test == '\r') + { + retvalue = false; + } + } + test = c; + return retvalue; +} + +uint32_t CLI_task(void* param) +{ + bool cmd_rcvd = false; + char c = 0; + // read all the EUSART bytes in the queue + while(uart[CLI].DataReady() && !isCommandReceived) + { + c = uart[CLI].Read(); + // read until we get a newline + if(c == '\r' || c == '\n') + { + command[index] = 0; + + if(!commandTooLongFlag) + { + if( endOfLineTest(c) && !cmd_rcvd ) + { + command_received((char*)command); + cmd_rcvd = true; + } + } + if(commandTooLongFlag) + { + printf(NEWLINE"Command too long"NEWLINE); + } + index = 0; + commandTooLongFlag = false; + } + else // otherwise store the character + { + if(index < MAX_COMMAND_SIZE) + { + command[index++] = c; + } + else + { + commandTooLongFlag = true; + } + } + } + + return CLI_TASK_INTERVAL; +} + +static void set_wifi_auth(char *ssid_pwd_auth) +{ + char *credentials[3]; + char *pch; + uint8_t params = 0; + uint8_t i; + ledTickState_t ledState; + + for(i=0;i<=2;i++)credentials[i]='\0'; + + pch = strtok (ssid_pwd_auth, ","); + credentials[0]=pch; + + while (pch != NULL && params <= 2) + { + credentials[params] = pch; + params++; + pch = strtok (NULL, ","); + + } + + if(credentials[0]!=NULL) + { + if(credentials[1]==NULL && credentials[2]==NULL) params=1; + else if(credentials[1]!= NULL && credentials[2]== NULL) + { + params=atoi(credentials[1]);//Resuse the same variable to store the auth type + if (params==2 || params==3)params=5; + else if(params==1); + else params=2; + } + else params = atoi(credentials[2]); + } + + switch (params) + { + case WIFI_PARAMS_OPEN: + strncpy(ssid, credentials[0],MAX_WIFI_CREDENTIALS_LENGTH-1); + strcpy(pass, "\0"); + strcpy(authType, "1"); + break; + + case WIFI_PARAMS_PSK: + case WIFI_PARAMS_WEP: + strncpy(ssid, credentials[0],MAX_WIFI_CREDENTIALS_LENGTH-1); + strncpy(pass, credentials[1],MAX_WIFI_CREDENTIALS_LENGTH-1); + sprintf(authType, "%d", params); + break; + + default: + params = 0; + break; + } + if (params) + { + printf("OK\r\n\4"); + if(CLOUD_checkIsConnected()) + { + MQTT_Close(MQTT_GetClientConnectionInfo()); + } + if (shared_networking_params.haveSocket) + { // Disconnect from Socket if active + shared_networking_params.haveSocket = 0; + MQTT_Disconnect(MQTT_GetClientConnectionInfo()); + } + wifi_disconnectFromAp(); + ledState.Full2Sec = LED_OFF_STATIC; + LED_modeYellow(ledState); + LED_modeRed(ledState); + LED_modeGreen(ledState); + ledState.Full2Sec = LED_BLINK; + LED_modeBlue(ledState); + } + else + { + printf("Error. Wi-Fi command format is wifi [,,[authType]]\r\n\4"); + } +} + +static void reconnect_cmd(char *pArg) +{ + ledTickState_t ledState; + (void)pArg; + ledState.Full2Sec = LED_OFF_STATIC; + LED_modeYellow(ledState); + LED_modeRed(ledState); + ledState.Full2Sec = LED_BLINK; + LED_modeGreen(ledState); + shared_networking_params.haveSocket = 0; + MQTT_Disconnect(MQTT_GetClientConnectionInfo()); + printf("OK\r\n"); +} + +static void reset_cmd(char *pArg) +{ + (void)pArg; + wdt_enable(WDTO_30MS); + while(1) {}; +} + +static void set_debug_level(char *pArg) +{ + debug_severity_t level = SEVERITY_NONE; + if(*pArg >= '0' && *pArg <= '4') + { + level = *pArg - '0'; + debug_setSeverity(level); + printf("OK\r\n"); + } + else + { + printf("debug parameter must be between 0 (Least) and 4 (Most) \r\n"); + } +} + +static void get_thing_id(char *pArg) +{ + (void)pArg; + + if (cid != NULL) + { + printf("%s\r\n\4",cid); + } + else + { + printf("Error getting Thing ID.\r\n\4"); + } +} + +static char *ateccsn = NULL; +void CLI_setdeviceId(char *id) +{ + ateccsn = id; +} + +static void get_device_id(char *pArg) +{ + (void) pArg; + if (ateccsn) + { + printf("%s\r\n\4", ateccsn); + } + else + { + printf("Unknown.\r\n\4"); + } +} + +static void get_cli_version(char *pArg) +{ + (void)pArg; + printf("v%s\r\n\4", cli_version_number); +} + +static void get_firmware_version(char *pArg) +{ + (void)pArg; + printf("v%s\r\n\4", firmware_version_number); +} + +static void command_received(char *command_text) +{ + char *argument = strstr(command_text, " "); + uint8_t cmp; + uint8_t ct_len; + uint8_t cc_len; + uint8_t i = 0; + + if (argument != NULL) + { + /* Replace the delimiter with string terminator */ + *argument = '\0'; + /* Point after the string terminator, to the actual string */ + argument++; + } + + for (i = 0; i < sizeof(commands)/sizeof(*commands); i++) + { + cmp = strcmp(command_text, commands[i].command); + ct_len = strlen(command_text); + cc_len = strlen(commands[i].command); + + if (cmp == 0 && ct_len == cc_len) + { + if (commands[i].handler != NULL) + { + commands[i].handler(argument); + return; + } + } + } + + printf(UNKNOWN_CMD_MSG); +} + +static void enableUsartRxInterrupts(void) +{ + // Empty RX buffer + do { + (void)USART2.RXDATAL; + } while ((USART2.STATUS & USART_RXCIF_bm) != 0); + + // Enable RX interrupt + USART2.CTRLA |= 1 << USART_RXCIE_bp; +} diff --git a/AVRIoT.X/mcc_generated_files/cli/cli.h b/AVRIoT.X/mcc_generated_files/cli/cli.h new file mode 100644 index 0000000..04ebf1e --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/cli/cli.h @@ -0,0 +1,36 @@ +/* + \file cli.h + + \brief Command Line Interpreter header file. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef CLI_H +#define CLI_H + +#include "../drivers/timeout.h" + +void CLI_init(void); +void CLI_setdeviceId(char *); + +#endif /* CLI_H */ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/cloud/aws_cloud_service.c b/AVRIoT.X/mcc_generated_files/cloud/aws_cloud_service.c new file mode 100644 index 0000000..ae6a4a1 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/cloud/aws_cloud_service.c @@ -0,0 +1,210 @@ +/* + \file aws_cloud_service.c + + \brief Cloud Specific Service + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include +#include +#include +#include +#include "cloud_interface.h" +#include "../config/mqtt_config.h" +#include "../config/cloud_config.h" +#include "../mqtt/mqtt_winc_adapter.h" +#include "../mqtt/mqtt_comm_bsd/mqtt_comm_layer.h" +#include "../mqtt/mqtt_packetTransfer_interface.h" +#include "../mqtt/mqtt_core/mqtt_core.h" +#include "mqtt_service.h" +#include "../time_service.h" +#include "../cloud/crypto_client/crypto_client.h" +#include "../drivers/timeout.h" +#include "../debug_print.h" +#include "../winc/common/winc_defines.h" +#include "../winc/m2m/m2m_ssl.h" +#include "../config/cloud_config.h" + + +publishReceptionHandler_t imqtt_publishReceiveCallBackTable[NUM_TOPICS_SUBSCRIBE]; + +void NETWORK_wifiSslCallback(uint8_t u8MsgType, void *pvMsg) +{ + switch (u8MsgType) + { + case M2M_SSL_REQ_ECC: + { + tstrEccReqInfo *ecc_request = (tstrEccReqInfo*)pvMsg; + CRYPTO_CLIENT_processEccRequest(ecc_request); + + break; + } + + case M2M_SSL_RESP_SET_CS_LIST: + { + tstrSslSetActiveCsList *pstrCsList = (tstrSslSetActiveCsList *)pvMsg; + debug_printInfo("ActiveCS bitmap:%04x", pstrCsList->u32CsBMP); + + break; + } + + default: + break; + } +} + +void CLOUD_init(timerStruct_t* appProtocolTimeoutTaskTimer, timerStruct_t* cloudResetTaskTimer) +{ + atcab_lock_data_zone(); + atcab_lock_config_zone(); + cloudStatus.isResetting = true; + debug_printError("CLOUD: Cloud reset timer is set"); + timeout_delete(appProtocolTimeoutTaskTimer); + timeout_create(cloudResetTaskTimer, CLOUD_RESET_TIMEOUT); + cloudStatus.cloudResetTimerFlag = true; +} + +int8_t CLOUD_connectSocket(uint32_t ipAddress) +{ + int8_t ret = BSD_SUCCESS; + + // Abstract the SSL section into a separate function + int8_t sslInit; + + sslInit = m2m_ssl_init(NETWORK_wifiSslCallback); + if(sslInit != M2M_SUCCESS) + { + debug_printInfo("WiFi SSL Initialization failed"); + } + + sslInit = m2m_ssl_set_active_ciphersuites((uint32_t)SSL_ECC_ONLY_CIPHERS); + if(sslInit != SOCK_ERR_NO_ERROR) + { + debug_printInfo("Set active cipher suites failed"); + } + + if (ipAddress > 0) + { + struct bsd_sockaddr_in addr; + + addr.sin_family = PF_INET; + addr.sin_port = BSD_htons(CFG_MQTT_PORT); + addr.sin_addr.s_addr = ipAddress; + + mqttContext *context = MQTT_GetClientConnectionInfo(); + socketState_t socketState = BSD_GetSocketState(*context->tcpClientSocket); + + // Todo: Check - Are we supposed to call close on the socket here to ensure we do not leak ? + if (socketState == NOT_A_SOCKET) + { + *context->tcpClientSocket = BSD_socket(PF_INET, BSD_SOCK_STREAM, 1); + + if (*context->tcpClientSocket >=0) + { + packetReceptionHandler_t* sockInfo = getSocketInfo(*context->tcpClientSocket); + if (sockInfo != NULL) + { + sockInfo->socketState = SOCKET_CLOSED; + } + } + } + + socketState = BSD_GetSocketState(*context->tcpClientSocket); + if (socketState == SOCKET_CLOSED) + { + debug_print("CLOUD: Connect socket"); + ret = BSD_connect(*context->tcpClientSocket, (struct bsd_sockaddr *)&addr, sizeof(struct bsd_sockaddr_in)); + + if (ret != BSD_SUCCESS) + { + debug_printError("CLOUD connect received %d",ret); + + BSD_close(*context->tcpClientSocket); + } + } + } + return ret; +} + +void CLOUD_connectAppProtocol(void) +{ + uint32_t timeStampReference; + timeStampReference = TIME_getCurrent(); + if (timeStampReference > 0) + { + MQTT_CLIENT_connect(); + debug_print("CLOUD: MQTT Connect"); + } + // MQTT SUBSCRIBE packet will be sent after the MQTT connection is established. + cloudStatus.sendSubscribe = true; +} + +void CLOUD_subscribe(void) +{ + if(MQTT_CLIENT_subscribe()) + { + cloudStatus.sendSubscribe = false; + } +} + +void CLOUD_publish(uint8_t* refToPublishTopic, uint8_t* data, unsigned int len) +{ + MQTT_CLIENT_publish(refToPublishTopic, data, len); +} + +void CLOUD_disconnect(void) +{ + debug_printError("CLOUD: Disconnect"); + if (MQTT_GetConnectionState() == CONNECTED) + { + if (MQTT_Disconnect(MQTT_GetClientConnectionInfo()) == DISCONNECTED) + { + debug_print("MQTT: sendresult (%d)", MQTT_LastSentSize()); + } + } +} + +bool CLOUD_isConnected(void) +{ + if (MQTT_GetConnectionState() == CONNECTED) + { + return true; + } + else + { + return false; + } +} + +bool CLOUD_isDisconnected(void) +{ + if (MQTT_GetConnectionState() == DISCONNECTED) + { + return true; + } + else + { + return false; + } +} + diff --git a/AVRIoT.X/mcc_generated_files/cloud/cloud_interface.h b/AVRIoT.X/mcc_generated_files/cloud/cloud_interface.h new file mode 100644 index 0000000..56c1126 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/cloud/cloud_interface.h @@ -0,0 +1,67 @@ +/* + * cloud_type.h + * + */ + +#ifndef CLOUD_INTERFACE_H +#define CLOUD_INTERFACE_H + +#include +#include +#include "../drivers/timeout.h" +#include "mqtt_service.h" + +#define CLOUD_RESET_TIMEOUT 2000L // 2 seconds + +typedef union +{ + uint8_t allBits; + struct + { + unsigned cloudInitialized :1; + unsigned cloudResetTimerFlag :1; + unsigned isResetting :1; + unsigned waitingForMQTT :1; + unsigned sendSubscribe :1; + unsigned unassigned :3; + }; +}cloudStatus_t; + +extern cloudStatus_t cloudStatus; + +extern publishReceptionHandler_t imqtt_publishReceiveCallBackTable[]; + +/** \brief Function pointer for interaction between the cloud core and user + * application to transition through differet cloud states. + **/ +typedef void (*cloudInitPtr)(timerStruct_t*, timerStruct_t*); +typedef int8_t (*cloudConnectSocketPtr)(uint32_t); +typedef void (*cloudConnectAppProtocolPtr) (void); +typedef void (*cloudSubscribePtr) (void); +typedef void (*cloudPublishPtr) (uint8_t* , uint8_t*, uint16_t); +typedef void (*cloudDisconnectPtr) (void); +typedef bool (*cloudIsConnectedPtr) (void); +typedef bool (*cloudIsDisconnectedPtr) (void); + +typedef struct +{ + cloudInitPtr cloudInit; + cloudConnectSocketPtr cloudConnectSocket; + cloudConnectAppProtocolPtr cloudConnectAppProtocol; + cloudSubscribePtr cloudSubscribe; + cloudPublishPtr cloudPublish; + cloudDisconnectPtr cloudDisconnect; + cloudIsConnectedPtr cloudIsConnected; + cloudIsDisconnectedPtr cloudIsDisconnected; +}cloudContext_t; + +void CLOUD_init(timerStruct_t* appProtocolTimeoutTaskTimer, timerStruct_t* cloudResetTaskTimer); +int8_t CLOUD_connectSocket(uint32_t ipAddress); +void CLOUD_connectAppProtocol(void); +void CLOUD_subscribe(void); +void CLOUD_publish(uint8_t* refToPublishTopic, uint8_t* data, uint16_t len); +void CLOUD_disconnect(void); +bool CLOUD_isConnected(void); +bool CLOUD_isDisconnected(void); + +#endif /* CLOUD_INTERFACE_H */ diff --git a/AVRIoT.X/mcc_generated_files/cloud/cloud_service.c b/AVRIoT.X/mcc_generated_files/cloud/cloud_service.c new file mode 100644 index 0000000..588d5c7 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/cloud/cloud_service.c @@ -0,0 +1,455 @@ +/* + \file cloud_service.c + + \brief Cloud Service Abstraction Layer + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include +#include +#include +#include "../config/clock_config.h" +#include +#include "../utils/atomic.h" +#include "../utils/compiler.h" +#include "../config/conf_winc.h" +#include "cloud_service.h" +#include "../debug_print.h" +#include "../mqtt/mqtt_winc_adapter.h" +#include "../drivers/timeout.h" +#include "mqtt_service.h" +#include "../mqtt/mqtt_core/mqtt_core.h" +#include "wifi_service.h" +#include "../credentials_storage/credentials_storage.h" + +#include "../led.h" +#include "../time_service.h" +#include "cloud_interface.h" + + +// Scheduler Callback functions +uint32_t cloudTask(void *param); +uint32_t mqttTimeoutTask(void *payload); +uint32_t cloudResetTask(void *payload); + +static void dnsHandler(uint8_t * domainName, uint32_t serverIP); +static uint8_t reInit(void); +static int32_t getMQTT_ConnectionAge(void); +static void CLOUD_handleReceptionDebugMessage(void); +static void CLOUD_handleTransmitDebugMessage(void); +static void startMqttConnectionTimeout(); +static bool hasLostWifi(); +static void setMqttStateToDisconnected(); +static bool isTimeAvailable(); +static void setHaveSocketFor(socketState_t socketState, int32_t thisAge); +static void handleSocketConnection(); +static void handleSocketState(socketState_t socketState, int32_t thisAge); + +#define CLOUD_TASK_INTERVAL 500L +#define CLOUD_MQTT_TIMEOUT_COUNT 10000L // 10 seconds max allowed to establish a connection +#define MQTT_CONN_AGE_TIMEOUT 3600L // 3600 seconds = 60minutes + +// Create the timers for scheduler_timeout which runs these tasks +timerStruct_t cloudTaskTimer = {cloudTask}; +timerStruct_t mqttTimeoutTaskTimer = {mqttTimeoutTask}; +timerStruct_t cloudResetTaskTimer = {cloudResetTask}; + +uint32_t mqttBrokerIP; +shared_networking_params_t shared_networking_params; +cloudStatus_t cloudStatus; +packetReceptionHandler_t cloud_packetReceiveCallBackTable[CLOUD_PACKET_RECV_TABLE_SIZE]; + +cloudContext_t cloudContext = +{ + CLOUD_init, + CLOUD_connectSocket, + CLOUD_connectAppProtocol, + CLOUD_subscribe, + CLOUD_publish, + CLOUD_disconnect, + CLOUD_isConnected, + CLOUD_isDisconnected +}; + + +void CLOUD_setInitFlag(void) +{ + debug_printError("CLOUD: Cloud Reset"); + cloudStatus.cloudInitialized = false; +} + +void CLOUD_setupTask(char* attDeviceID) +{ + // Create timers for the application scheduler + timeout_create(&cloudTaskTimer, 500); +} + +void CLOUD_registerSubscription(uint8_t *topic, imqttHandlePublishDataFuncPtr subscriptionCallback) +{ + static uint8_t subscriptionTopicCount = 0; + + if(subscriptionTopicCount < NUM_TOPICS_SUBSCRIBE) + { + imqtt_publishReceiveCallBackTable[subscriptionTopicCount].topic = topic; + imqtt_publishReceiveCallBackTable[subscriptionTopicCount].mqttHandlePublishDataCallBack = subscriptionCallback; + } + subscriptionTopicCount++; + MQTT_SetPublishReceptionHandlerTable(imqtt_publishReceiveCallBackTable); +} + +void CLOUD_publishData(uint8_t* refToPublishTopic, uint8_t* data, uint16_t len) +{ + cloudContext.cloudPublish(refToPublishTopic, data, len); +} + +bool CLOUD_checkIsConnected(void) +{ + return cloudContext.cloudIsConnected(); +} + +uint32_t mqttTimeoutTask(void *payload) +{ + debug_printError("CLOUD: MQTT Connection Timeout"); + CLOUD_setInitFlag(); + + cloudStatus.waitingForMQTT = false; + + return 0; +} + +uint32_t cloudResetTask(void *payload) +{ + debug_printError("CLOUD: Reset task"); + if(reInit()) + { + cloudStatus.cloudInitialized = true; + } + else + { + cloudStatus.cloudInitialized = false; + } + return 0; +} + +uint32_t cloudTask(void *param) +{ + if ((cloudStatus.cloudInitialized == false) && (cloudStatus.isResetting == false)) + { + cloudContext.cloudInit(&mqttTimeoutTaskTimer, &cloudResetTaskTimer); + } + else if ((cloudStatus.waitingForMQTT == false) + && (!cloudContext.cloudIsConnected()) + && (cloudStatus.cloudResetTimerFlag == false)) + { + startMqttConnectionTimeout(); + } + + if(hasLostWifi()) { + setMqttStateToDisconnected(); + } + else + { + handleSocketConnection(); + } + return CLOUD_TASK_INTERVAL; +} + +static void startMqttConnectionTimeout() +{ + debug_printError("MQTT: MQTT reset timer is created"); + timeout_create(&mqttTimeoutTaskTimer, CLOUD_MQTT_TIMEOUT_COUNT); + cloudStatus.waitingForMQTT = true; +} + +static bool hasLostWifi() +{ + return shared_networking_params.haveAPConnection == 0; +} + +static void setMqttStateToDisconnected() +{ + if(cloudContext.cloudIsConnected()) + { + MQTT_initialiseState(); + } +} + +static bool isTimeAvailable() +{ + uint32_t theTime = TIME_getCurrent(); + if(theTime<=0) + { + debug_printError("CLOUD: time not ready"); + return false; + } + return true; +} + +static void setHaveSocketFor(socketState_t socketState, int32_t thisAge) +{ + static int32_t lastAge = -1; + + if(cloudContext.cloudIsConnected()) + { + shared_networking_params.haveSocket = 1; + if(lastAge != thisAge) + { + debug_printInfo("CLOUD: Uptime %lus SocketState (%d) MQTT (%d)", thisAge , socketState, MQTT_GetConnectionState()); + lastAge = thisAge; + } + } +} + +static void handleSocketConnection() +{ + mqttContext* mqttConnnectionInfo = MQTT_GetClientConnectionInfo(); + socketState_t socketState = BSD_GetSocketState(*mqttConnnectionInfo->tcpClientSocket); + + int32_t thisAge = getMQTT_ConnectionAge(); + if(isTimeAvailable()) + { + setHaveSocketFor(socketState, thisAge); + } + + handleSocketState(socketState, thisAge); +} + +static void handleSocketState(socketState_t socketState, int32_t thisAge) +{ + switch(socketState) + { + case NOT_A_SOCKET: + // Intentionally fall into Socket Closed + + case SOCKET_CLOSED: + // Reinitialize MQTT + MQTT_ClientInitialise(); + if(cloudContext.cloudConnectSocket(mqttBrokerIP) == BSD_ERROR) + { + shared_networking_params.haveError = 1; + } + else + { + // ToDo Check LED behavior + shared_networking_params.amConnectingSocket = 1; + } + break; + + case SOCKET_IN_PROGRESS: + // The TCP listen or initiate a connection + // WG Application requires no action + break; + + case SOCKET_CONNECTED: + // If MQTT was disconnected but the socket is up we retry the MQTT connection + if (cloudContext.cloudIsDisconnected()) + { + cloudContext.cloudConnectAppProtocol(); + } + else + { + mqttCurrentState receptionResponse; + mqttContext* mqttConnnectionInfo = MQTT_GetClientConnectionInfo(); + receptionResponse = MQTT_ReceptionHandler(mqttConnnectionInfo); + if (receptionResponse != MQTT_UNKNOWN_RECEIVE_STATE) + { + CLOUD_handleReceptionDebugMessage(); + } + else + { + debug_printError("MQTT: Packet type: %d. MQTT Client does not currently support the received packet type.", receptionResponse); + } + + MQTT_TransmissionHandler(mqttConnnectionInfo); + CLOUD_handleTransmitDebugMessage(); + + // Todo: We already processed the data in place using PEEK, this just flushes the buffer + BSD_recv(*MQTT_GetClientConnectionInfo()->tcpClientSocket, MQTT_GetClientConnectionInfo()->mqttDataExchangeBuffers.rxbuff.start, MQTT_GetClientConnectionInfo()->mqttDataExchangeBuffers.rxbuff.bufferLength, 0); + + if (cloudContext.cloudIsConnected()) + { + shared_networking_params.amConnectingSocket = 0; + shared_networking_params.haveError = 0; + timeout_delete(&mqttTimeoutTaskTimer); + timeout_delete(&cloudResetTaskTimer); + cloudStatus.isResetting = false; + + cloudStatus.waitingForMQTT = false; + + if(cloudStatus.sendSubscribe == true) + { + cloudContext.cloudSubscribe(); + } + + // The Authorization timeout is set to 3600, so we need to re-connect that often + if (getMQTT_ConnectionAge() > MQTT_CONN_AGE_TIMEOUT) + { + debug_printError("MQTT: Connection aged, Uptime %lus SocketState (%d) MQTT (%d)", thisAge , socketState, MQTT_GetConnectionState()); + cloudContext.cloudDisconnect(); + BSD_close(*mqttConnnectionInfo->tcpClientSocket); + } + } + } + break; + + case SOCKET_CLOSING: + // The user initiate the closing procedure for this socket + // WG Application requires no action + break; + + default: + // Unknown State + shared_networking_params.haveError = 1; + break; + } +} + +static void CLOUD_handleReceptionDebugMessage(void) +{ + uint32_t timeStampReference = 0; + mqttHandlerState_t receptionState = MQTT_NO_ERROR; + mqttHeaderFlags lastPacketHeader; + + receptionState = MQTT_GetLastHandlerState(); + + switch (receptionState) + { + case MQTT_CONNACK_TIMEOUT: + debug_printError("MQTT: CONNACK TIMEOUT"); + break; + case MQTT_INCORRECT_RESPONSE: + lastPacketHeader = MQTT_GetLastReceivedPacketHeader(); + debug_printError("MQTT: DISCONNECT (%d) from (%d)", lastPacketHeader.controlPacketType, MQTT_GetLastReceivedLength); + break; + case MQTT_CONNACK_ERROR: + debug_printError("MQTT: CONNACK DISCONNECTED :("); + break; + case MQTT_CONNACK: + timeStampReference = TIME_getCurrent(); + TIME_setStamp(timeStampReference); + debug_printGOOD("MQTT: CONNACK CONNECTED at %s", TIME_GetcTime(TIME_getStamp())); + break; + case MQTT_NO_ERROR: + // Do Nothing + break; + default: + debug_printError("MQTT: STATE ERROR_OCCURED"); + break; + } +} + +static void CLOUD_handleTransmitDebugMessage(void) +{ + mqttHandlerState_t transmitState = MQTT_NO_ERROR; + transmitState = MQTT_GetLastHandlerState(); + + switch (transmitState) + { + case MQTT_SEND_SUCCESS: + debug_print("MQTT: sendresult (%d)", MQTT_LastSentSize()); + break; + case MQTT_SEND_ERROR: + debug_printError("MQTT: Send Error"); + break; + default: + break; + } +} + +bool CLOUD_checkIsDisconnected(void) +{ + return cloudContext.cloudIsDisconnected(); +} + +static void dnsHandler(uint8_t* domainName, uint32_t serverIP) +{ + if(serverIP != 0) + { + mqttBrokerIP = serverIP; + debug_printInfo("CLOUD: mqttBrokerIP = (%lu.%lu.%lu.%lu)",(0x0FF & (serverIP)),(0x0FF & (serverIP>>8)),(0x0FF & (serverIP>>16)),(0x0FF & (serverIP>>24))); + } +} + +static uint8_t reInit(void) +{ + debug_printInfo("CLOUD: reinit"); + + mqttBrokerIP = 0; + shared_networking_params.haveAPConnection = 0; + shared_networking_params.amConnectingAP = 1; + cloudStatus.waitingForMQTT = false; + cloudStatus.isResetting = false; + uint8_t wifi_creds; + + //Re-init the WiFi + wifi_reinit(); + + registerSocketCallback(BSD_SocketHandler, dnsHandler); + + MQTT_ClientInitialise(); + memset(&cloud_packetReceiveCallBackTable, 0, sizeof(cloud_packetReceiveCallBackTable)); + BSD_SetRecvHandlerTable(cloud_packetReceiveCallBackTable); + + cloud_packetReceiveCallBackTable[0].socket = MQTT_GetClientConnectionInfo()->tcpClientSocket; + cloud_packetReceiveCallBackTable[0].recvCallBack = MQTT_CLIENT_receive; + + //When the input comes through cli/.cfg + if((strcmp(ssid,"") != 0) && (strcmp(authType,"") != 0)) + { + wifi_creds = NEW_CREDENTIALS; + debug_printInfo("Connecting to AP with new credentials"); + } + //This works provided the board had connected to the AP successfully + else + { + wifi_creds = DEFAULT_CREDENTIALS; + debug_printInfo("Connecting to AP with the last used credentials"); + } + + if(!wifi_connectToAp(wifi_creds)) + { + return false; + } + + timeout_delete(&cloudResetTaskTimer); + debug_printInfo("CLOUD: Cloud reset timer is deleted"); + timeout_create(&mqttTimeoutTaskTimer, CLOUD_MQTT_TIMEOUT_COUNT); + cloudStatus.cloudResetTimerFlag = false; + cloudStatus.waitingForMQTT = true; + + return true; +} + +static int32_t getMQTT_ConnectionAge(void) +{ + int32_t currentTime = 0; + int32_t age = 0; + int32_t lastConnectionTime = TIME_getStamp(); + if (lastConnectionTime > 0) + { + currentTime = TIME_getCurrent(); + age = TIME_getDiffTime(currentTime, lastConnectionTime); + } + return age; +} + diff --git a/AVRIoT.X/mcc_generated_files/cloud/cloud_service.h b/AVRIoT.X/mcc_generated_files/cloud/cloud_service.h new file mode 100644 index 0000000..63dc29b --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/cloud/cloud_service.h @@ -0,0 +1,44 @@ +/* + * cloud_service.h + * + * Created: 9/27/2018 2:25:12 PM + * Author: C14674 + */ + +#ifndef CLOUD_SERVICE_H_ +#define CLOUD_SERVICE_H_ + +#include +#include +#include "../utils/compiler.h" +#include "../mqtt/mqtt_packetTransfer_interface.h" + + +#define CLOUD_PACKET_RECV_TABLE_SIZE 2 + + +typedef union +{ + uint8_t allBits; + struct + { + unsigned amDisconnecting :1; + unsigned haveAPConnection :1; + unsigned haveError :1; + unsigned amConnectingAP : 1; + unsigned amConnectingSocket : 1; + unsigned amSoftAP: 1; + unsigned amDefaultCred : 1; + unsigned haveSocket : 1; + }; +} shared_networking_params_t; + +extern shared_networking_params_t shared_networking_params; + +void CLOUD_setInitFlag(void); +void CLOUD_setupTask(char* deviceId); +void CLOUD_publishData(uint8_t* refToPublishTopic, uint8_t* data, unsigned int len); +void CLOUD_registerSubscription(uint8_t *topic, imqttHandlePublishDataFuncPtr subscriptionCallback); +bool CLOUD_checkIsConnected(void); +bool CLOUD_checkIsDisconnected(void); +#endif /* CLOUD_SERVICE_H_ */ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/cloud/crypto_client/crypto_client.c b/AVRIoT.X/mcc_generated_files/cloud/crypto_client/crypto_client.c new file mode 100644 index 0000000..bd65dde --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/cloud/crypto_client/crypto_client.c @@ -0,0 +1,352 @@ +/* + \file crypto_client.c + + \brief Crypto Client source file. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ +#include +#include "../../CryptoAuthenticationLibrary/cryptoauthlib_config.h" +#include "CryptoAuthenticationLibrary/jwt/atca_jwt.h" +#include "CryptoAuthenticationLibrary/basic/atca_basic.h" +#include "crypto_client.h" +#include "../cloud_service.h" +#include "../../CryptoAuthenticationLibrary/CryptoAuth_init.h" + +#include "CryptoAuthenticationLibrary/cryptoauthlib.h" +#include "winc/m2m/m2m_ssl.h" +#include "winc/common/winc_defines.h" +#include "../debug_print.h" + + +#ifndef ATCA_NO_HEAP +#error : This project uses CryptoAuthLibrary V2. Please add "ATCA_NO_HEAP" to toolchain symbols. +#endif + +#ifndef ATCA_NO_POLL +#error : This project uses ATCA_NO_POLL option. Please add "ATCA_NO_POLL" to toolchain symbols. +#endif + +#ifndef ATCA_HAL_I2C +#error : This project uses I2C interface. Please add "ATCA_HAL_I2C" to toolchain symbols. +#endif + +#ifndef ATCAPRINTF +#error : This project uses ATCA_debug_print. Please add "ATCA_PRINTF" to toolchain symbols. +#endif + +#define DEVICE_KEY_SLOT (0) +static uint32_t g_ecdh_key_slot_index = 0; +static uint16_t g_ecdh_key_slot[] = {2}; + +const uint8_t public_key_x509_header[] = { 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2A, 0x86, + 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, + 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0x03, +0x42, 0x00, 0x04 }; + +uint8_t g_serial_number[ATCA_SERIAL_NUM_SIZE]; + +/** \brief custom configuration for an ECCx08A device */ +ATCAIfaceCfg cfg_ateccx08a_i2c_custom = { + .iface_type = ATCA_I2C_IFACE, + .devtype = ATECC608A, + .atcai2c.slave_address = 0xB0, + .atcai2c.bus = 2, + .atcai2c.baud = 100000, + .wake_delay = 1500, + .rx_retries = 20 +}; + + +//To do: Move this under Google specific section, once the CLI command "key" is handled +uint8_t CRYPTO_CLIENT_printPublicKey(char *s) +{ + char buf[128]; + uint8_t *tmp; + size_t bufferLen = sizeof(buf); + ATCA_STATUS retVal; + + if (ATCA_SUCCESS != atcab_init(&cfg_ateccx08a_i2c_custom)) + { + return ERROR; + } + + /* Calculate where the raw data will fit into the buffer */ + tmp = (uint8_t*)buf + sizeof(buf) - ATCA_PUB_KEY_SIZE - sizeof(public_key_x509_header); + + /* Copy the header */ + memcpy(tmp, public_key_x509_header, sizeof(public_key_x509_header)); + + /* Get public key without private key generation */ + retVal = atcab_get_pubkey(0, tmp + sizeof(public_key_x509_header)); + + if (ATCA_SUCCESS != retVal ) + { + return ERROR; + } + + /* Convert to base 64 */ + retVal = atcab_base64encode(tmp, ATCA_PUB_KEY_SIZE + sizeof(public_key_x509_header), buf, &bufferLen); + + if(ATCA_SUCCESS != retVal) + { + return ERROR; + } + + /* Add a null terminator */ + buf[bufferLen] = 0; + + /* Print out the key */ + sprintf(s, "-----BEGIN PUBLIC KEY-----\r\n%s\r\n-----END PUBLIC KEY-----\r\n\4", buf); + + return NO_ERROR; +} + +uint8_t CRYPTO_CLIENT_printSerialNumber(char *s) +{ + ATCA_STATUS status = ATCA_SUCCESS; + uint8_t i = 0; + + int retVal = atcab_init(&cfg_ateccx08a_i2c_custom); + + if (ATCA_SUCCESS != retVal) + { + return retVal; + } + + status = atcab_read_serial_number(g_serial_number); + if (status == ATCA_SUCCESS) + { + for (i = 0; i < ATCA_SERIAL_NUM_SIZE; i++) + { + sprintf(s, "%02X", g_serial_number[i]); + s += 2; + } + } + else{ + return ERROR; + } + + return NO_ERROR; +} + + +int8_t ecdh_derive_client_shared_secret(tstrECPoint *server_public_key, uint8_t *ecdh_shared_secret, tstrECPoint *client_public_key) +{ + int8_t status = M2M_ERR_FAIL; + uint8_t ecdh_mode; + uint16_t key_id; + + if ((g_ecdh_key_slot_index < 0) || + (g_ecdh_key_slot_index >= (sizeof(g_ecdh_key_slot) / sizeof(g_ecdh_key_slot[0])))) + { + g_ecdh_key_slot_index = 0; + } + + if(_gDevice->mIface->mIfaceCFG->devtype == ATECC608A) + { + //do special ecdh functions for the 608, keep ephemeral keys in SRAM + ecdh_mode = ECDH_MODE_SOURCE_TEMPKEY | ECDH_MODE_COPY_OUTPUT_BUFFER; + key_id = GENKEY_PRIVATE_TO_TEMPKEY; + } + else + { + //specializations for the 508, use an EEPROM key slot + ecdh_mode = ECDH_PREFIX_MODE; + key_id = g_ecdh_key_slot[g_ecdh_key_slot_index]; + g_ecdh_key_slot_index++; + } + + //generate an ephemeral key + if(atcab_genkey(key_id, client_public_key->X) == ATCA_SUCCESS) + { + client_public_key->u16Size = 32; + //do the ecdh from the private key in tempkey, results put in ecdh_shared_secret + if(atcab_ecdh_base(ecdh_mode, key_id, server_public_key->X, ecdh_shared_secret, NULL) == ATCA_SUCCESS) + { + status = M2M_SUCCESS; + } + } + + return status; +} + +int8_t ecdh_derive_key_pair(tstrECPoint *server_public_key) +{ + int8_t status = M2M_ERR_FAIL; + + if ((g_ecdh_key_slot_index < 0) || + (g_ecdh_key_slot_index >= (sizeof(g_ecdh_key_slot) / sizeof(g_ecdh_key_slot[0])))) + { + g_ecdh_key_slot_index = 0; + } + + if( (status = atcab_genkey(g_ecdh_key_slot[g_ecdh_key_slot_index], server_public_key->X) ) == ATCA_SUCCESS) + { + server_public_key->u16Size = 32; + server_public_key->u16PrivKeyID = g_ecdh_key_slot[g_ecdh_key_slot_index]; + + g_ecdh_key_slot_index++; + + status = M2M_SUCCESS; + } + + return status; +} + +int8_t ecdsa_process_sign_verify_request(uint32_t number_of_signatures) +{ + int8_t status = M2M_ERR_FAIL; + tstrECPoint Key; + uint32_t index = 0; + uint8_t signature[80]; + uint8_t hash[80] = {0}; + uint16_t curve_type = 0; + + for(index = 0; index < number_of_signatures; index++) + { + status = m2m_ssl_retrieve_cert(&curve_type, hash, signature, &Key); + + if (status != M2M_SUCCESS) + { + debug_printInfo("m2m_ssl_retrieve_cert() failed with ret=%d", status); + return status; + } + + if(curve_type == EC_SECP256R1) + { + bool is_verified = false; + + status = atcab_verify_extern(hash, signature, Key.X, &is_verified); + if(status == ATCA_SUCCESS) + { + status = (is_verified == true) ? M2M_SUCCESS : M2M_ERR_FAIL; + if(is_verified == false) + { + debug_printInfo("ECDSA SigVerif FAILED"); + } + } + else + { + status = M2M_ERR_FAIL; + } + + if(status != M2M_SUCCESS) + { + m2m_ssl_stop_processing_certs(); + break; + } + } + } + + return status; +} + +int8_t ecdsa_process_sign_gen_request(tstrEcdsaSignReqInfo *sign_request, uint8_t *signature, uint16_t *signature_size) +{ + int8_t status = M2M_ERR_FAIL; + uint8_t hash[32]; + + status = m2m_ssl_retrieve_hash(hash, sign_request->u16HashSz); + if (status != M2M_SUCCESS) + { + debug_printInfo("m2m_ssl_retrieve_hash() failed with ret=%d", status); + return status; + } + + if(sign_request->u16CurveType == EC_SECP256R1) + { + *signature_size = 64; + status = atcab_sign(DEVICE_KEY_SLOT, hash, signature); + } + + return status; +} + +int8_t ecdh_derive_server_shared_secret(uint16_t private_key_id, tstrECPoint *client_public_key, uint8_t *ecdh_shared_secret) +{ + uint16_t key_slot = private_key_id; + int8_t status = M2M_ERR_FAIL; + uint8_t atca_status = ATCA_STATUS_UNKNOWN; + + atca_status = atcab_ecdh(key_slot, client_public_key->X, ecdh_shared_secret); + if(atca_status == ATCA_SUCCESS) + { + status = M2M_SUCCESS; + } + else + { + debug_printInfo("__SLOT = %u, Err = %X", key_slot, atca_status); + } + + return status; +} + +void CRYPTO_CLIENT_processEccRequest(tstrEccReqInfo *ecc_request) +{ + tstrEccReqInfo ecc_response; + uint8_t signature[80]; + uint16_t response_data_size = 0; + uint8_t *response_data_buffer = NULL; + + ecc_response.u16Status = 1; + + switch (ecc_request->u16REQ) + { + case ECC_REQ_CLIENT_ECDH: + ecc_response.u16Status = ecdh_derive_client_shared_secret(&(ecc_request->strEcdhREQ.strPubKey), + ecc_response.strEcdhREQ.au8Key, + &ecc_response.strEcdhREQ.strPubKey); + break; + + case ECC_REQ_GEN_KEY: + ecc_response.u16Status = ecdh_derive_key_pair(&ecc_response.strEcdhREQ.strPubKey); + break; + + case ECC_REQ_SERVER_ECDH: + ecc_response.u16Status = ecdh_derive_server_shared_secret(ecc_request->strEcdhREQ.strPubKey.u16PrivKeyID, + &(ecc_request->strEcdhREQ.strPubKey), + ecc_response.strEcdhREQ.au8Key); + break; + + case ECC_REQ_SIGN_VERIFY: + ecc_response.u16Status = ecdsa_process_sign_verify_request(ecc_request->strEcdsaVerifyREQ.u32nSig); + break; + + case ECC_REQ_SIGN_GEN: + ecc_response.u16Status = ecdsa_process_sign_gen_request(&(ecc_request->strEcdsaSignREQ), signature, + &response_data_size); + response_data_buffer = signature; + break; + + default: + // Do nothing + break; + } + + ecc_response.u16REQ = ecc_request->u16REQ; + ecc_response.u32UserData = ecc_request->u32UserData; + ecc_response.u32SeqNo = ecc_request->u32SeqNo; + + m2m_ssl_ecc_process_done(); + m2m_ssl_handshake_rsp(&ecc_response, response_data_buffer, response_data_size); +} diff --git a/AVRIoT.X/mcc_generated_files/cloud/crypto_client/crypto_client.h b/AVRIoT.X/mcc_generated_files/cloud/crypto_client/crypto_client.h new file mode 100644 index 0000000..d19fa15 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/cloud/crypto_client/crypto_client.h @@ -0,0 +1,51 @@ +/* + \file crypto_client.h + + \brief Crypto Client header file. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef CRYPTO_CLIENT_H +#define CRYPTO_CLIENT_H + +#define ERROR 1 +#define NO_ERROR 0 + +#include +#include "CryptoAuthenticationLibrary/atca_iface.h" +#include "../../CryptoAuthenticationLibrary/cryptoauthlib.h" + +#include "CryptoAuthenticationLibrary/cryptoauthlib.h" +#include "winc/driver/winc_adapter.h" +#include "winc/common/ecc_types.h" + +uint8_t CRYPTO_CLIENT_printPublicKey(char *s); +uint8_t CRYPTO_CLIENT_printSerialNumber(char *s); +void CRYPTO_CLIENT_processEccRequest(tstrEccReqInfo *ecc_request); +int8_t ecdsa_process_sign_verify_request(uint32_t number_of_signatures); +int8_t ecdh_derive_key_pair(tstrECPoint *server_public_key); +int8_t ecdh_derive_client_shared_secret(tstrECPoint *server_public_key, uint8_t *ecdh_shared_secret, tstrECPoint *client_public_key); +int8_t ecdsa_process_sign_gen_request(tstrEcdsaSignReqInfo *sign_request, uint8_t *signature, uint16_t *signature_size); +int8_t ecdh_derive_server_shared_secret(uint16_t private_key_id, tstrECPoint *client_public_key, uint8_t *ecdh_shared_secret); + +#endif /* CRYPTO_CLIENT_H */ diff --git a/AVRIoT.X/mcc_generated_files/cloud/mqtt_service.c b/AVRIoT.X/mcc_generated_files/cloud/mqtt_service.c new file mode 100644 index 0000000..7729e1b --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/cloud/mqtt_service.c @@ -0,0 +1,152 @@ +/* + \file mqtt_service.c + + \brief Application MQTT Service source file. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ +#include +#include +#include +#include "mqtt_service.h" +#include "mqtt_core/mqtt_core.h" +#include "../mqtt/mqtt_packetTransfer_interface.h" +#include "../config/IoT_Sensor_Node_config.h" +#include "../debug_print.h" + +char cid[MQTT_CID_LENGTH]; +char awsEndpoint[AWS_ENDPOINT_LEN]; +static publishReceptionHandler_t *publishRecvInfo; + + +static void manageSubscriptionMessage(uint8_t *topic, uint8_t *payload); + +static void manageSubscriptionMessage(uint8_t *topic, uint8_t *payload) +{ + const publishReceptionHandler_t *publishRecvHandlerInfo; + uint8_t subTopicIndex; + const char multiLevelWildcard = '#'; + + // Direct messages published on a topic to the correct callback function. + publishRecvHandlerInfo = MQTT_GetPublishReceptionHandlerTable(); + for (subTopicIndex = 0; subTopicIndex < NUM_TOPICS_SUBSCRIBE; subTopicIndex++) + { + if (publishRecvHandlerInfo) + { + if(strchr((const char*)publishRecvHandlerInfo->topic, multiLevelWildcard)) + { + if(!strncmp(topic, publishRecvHandlerInfo->topic, (strlen(publishRecvHandlerInfo->topic) - 1))) + { + publishRecvHandlerInfo->mqttHandlePublishDataCallBack(topic, payload); + break; + } + } + else if(memcmp((void*) publishRecvHandlerInfo->topic, (void*) topic, strlen(publishRecvHandlerInfo->topic)) == 0) + { + publishRecvHandlerInfo->mqttHandlePublishDataCallBack(topic, payload); + break; + } + } + publishRecvHandlerInfo++; + } +} + +void MQTT_SetPublishReceptionHandlerTable(publishReceptionHandler_t *appPublishReceptionInfo) +{ + publishRecvInfo = appPublishReceptionInfo; +} + +publishReceptionHandler_t *MQTT_GetPublishReceptionHandlerTable() +{ + return publishRecvInfo; +} + + + +void MQTT_CLIENT_publish(uint8_t* refToPublishTopic, uint8_t *data, uint16_t len) +{ + mqttPublishPacket cloudPublishPacket; + + // Fixed header + cloudPublishPacket.publishHeaderFlags.duplicate = 0; + cloudPublishPacket.publishHeaderFlags.qos = 0; + cloudPublishPacket.publishHeaderFlags.retain = 0; + + // Variable header + cloudPublishPacket.topic = (uint8_t*)refToPublishTopic; + + // Payload + cloudPublishPacket.payload = data; + // ToDo Check whether sizeof can be used for integers and strings + cloudPublishPacket.payloadLength = len; + + if(MQTT_CreatePublishPacket(&cloudPublishPacket) != true) + { + debug_printError("MQTT: Connection lost PUBLISH failed"); + } +} + +bool MQTT_CLIENT_subscribe(void) +{ + mqttSubscribePacket cloudSubscribePacket; + uint8_t topicCount = 0; + + publishReceptionHandler_t (*subscriptionTable)[] = MQTT_GetPublishReceptionHandlerTable(); + + // Variable header + cloudSubscribePacket.packetIdentifierLSB = 1; + cloudSubscribePacket.packetIdentifierMSB = 0; + + // Payload + for(topicCount = 0; topicCount < NUM_TOPICS_SUBSCRIBE; topicCount++) + { + cloudSubscribePacket.subscribePayload[topicCount].topic = (*subscriptionTable)[topicCount].topic; + cloudSubscribePacket.subscribePayload[topicCount].topicLength = strlen((*subscriptionTable)[topicCount].topic); + cloudSubscribePacket.subscribePayload[topicCount].requestedQoS = 0; + } + + if(MQTT_CreateSubscribePacket(&cloudSubscribePacket) == true) + { + debug_printInfo("CLOUD: SUBSCRIBE packet created"); + return true; + } + return false; +} + +void MQTT_CLIENT_receive(uint8_t *data, uint8_t len) +{ + MQTT_GetReceivedData(data, len); +} + +void MQTT_CLIENT_connect(void) +{ + mqttConnectPacket cloudConnectPacket; + + memset(&cloudConnectPacket, 0, sizeof(mqttConnectPacket)); + + cloudConnectPacket.connectVariableHeader.connectFlagsByte.All = 0x02; + cloudConnectPacket.connectVariableHeader.keepAliveTimer = 10; + cloudConnectPacket.clientID = (uint8_t*)cid; + // Set the subscription callback handler here + MQTT_SetPublishReceptionCallback(manageSubscriptionMessage); + MQTT_CreateConnectPacket(&cloudConnectPacket); +} diff --git a/AVRIoT.X/mcc_generated_files/cloud/mqtt_service.h b/AVRIoT.X/mcc_generated_files/cloud/mqtt_service.h new file mode 100644 index 0000000..fddcee5 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/cloud/mqtt_service.h @@ -0,0 +1,78 @@ +/* + \file mqtt_service.h + + \brief Application MQTT Service header file. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ +#ifndef MQTT_SERVICE_H +#define MQTT_SERVICE_H + +#include +#include +#include "../mqtt/mqtt_packetTransfer_interface.h" + + +extern char cid[]; +extern char awsEndpoint[]; + +// The call back table prototype for sending the payload received as part of +// PUBLISH packet to the correct publish reception handler function defined in +// the application manager. An instance of this table needs to be initialised by +// the user application to specify the total number of topics to subscribe to, +// the path of each topic and the call back function for handling the payload +// received as part of the PUBLISH packet. +typedef struct +{ + uint8_t *topic; + imqttHandlePublishDataFuncPtr mqttHandlePublishDataCallBack; +} publishReceptionHandler_t; + + +void MQTT_CLIENT_publish(uint8_t* refToPublishTopic, uint8_t *data, uint16_t len); +bool MQTT_CLIENT_subscribe(void); +void MQTT_CLIENT_receive(uint8_t *data, uint8_t len); +void MQTT_CLIENT_connect(void); + +/** \brief Set the publish reception handler table information. + * + * This function is called by the user application to inform the MQTT core of + * the call back table defined to handler the received PUBLISH messages. + * + * @param appPublishReceptionInfo Instance of publishReceptionHandler_t with + * callback functions to handle PUBLISH messages + * received for each topic + */ +void MQTT_SetPublishReceptionHandlerTable(publishReceptionHandler_t *appPublishReceptionInfo); + +/** \brief Obtain the publishReceptionHandler_t table information defined in the + * user application that the application. + * + * Whenever a PUBLISH baclet is received by the MQTT core, the publish handlers + * returned by this function are called to process the payload of the PUBLISH + * packet. + * + * @return publish reception handler details defined in the user application + */ +publishReceptionHandler_t *MQTT_GetPublishReceptionHandlerTable(); + +#endif /* MQTT_SERVICE_H */ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/cloud/wifi_service.c b/AVRIoT.X/mcc_generated_files/cloud/wifi_service.c new file mode 100644 index 0000000..46d53b6 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/cloud/wifi_service.c @@ -0,0 +1,428 @@ +/* +\file wifi_service.c + +\brief Wifi service source file. + +(c) 2018 Microchip Technology Inc. and its subsidiaries. + +Subject to your compliance with these terms, you may use Microchip software and any +derivatives exclusively with Microchip products. It is your responsibility to comply with third party +license terms applicable to your use of third party software (including open source software) that +may accompany Microchip software. + +THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER +EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY +IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS +FOR A PARTICULAR PURPOSE. + +IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, +INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND +WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP +HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO +THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL +CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT +OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS +SOFTWARE. +*/ + +#include +#include +#include +#include +#include "../time_service.h" +#include "wifi_service.h" +#include "../winc/m2m/m2m_wifi.h" +#include "../winc/common/winc_defines.h" +#include "../winc/driver/winc_adapter.h" +#include "../drivers/timeout.h" +#include "../cloud/cloud_service.h" +#include "../debug_print.h" +#include "../config/IoT_Sensor_Node_config.h" +#include "../config/conf_winc.h" +#include "../config/mqtt_config.h" +#include "../config/cloud_config.h" +#include "../winc/socket/socket.h" +#include "../credentials_storage/credentials_storage.h" +#include "../led.h" +#include "winc/m2m/m2m_types.h" + +#include "cloud/mqtt_service.h" +#include "winc/m2m/m2m_wifi.h" +#include "winc/spi_flash/spi_flash.h" +#include "winc/spi_flash/spi_flash_map.h" +#include "winc/common/winc_defines.h" +#include "config/cloud_config.h" + + +//Flash location to read thing ID from winc +#define THING_NAME_FLASH_OFFSET (M2M_TLS_SERVER_FLASH_OFFSET + M2M_TLS_SERVER_FLASH_SIZE - FLASH_PAGE_SZ) +#define AWS_ENDPOINT_FLASH_OFFSET (THING_NAME_FLASH_OFFSET - FLASH_PAGE_SZ) +#define CLOUD_WIFI_TASK_INTERVAL 50L +#define CLOUD_NTP_TASK_INTERVAL 500L +#define SOFT_AP_CONNECT_RETRY_INTERVAL 1000L + +#define MAX_NTP_SERVER_LENGTH 20 + +char prevNTPServerName[MAX_NTP_SERVER_LENGTH]; + +// Scheduler +uint32_t ntpTimeFetchTask(void *payload); +uint32_t wifiHandlerTask(void * param); +uint32_t softApConnectTask(void* param); + +timerStruct_t softApConnectTimer = {softApConnectTask}; +timerStruct_t ntpTimeFetchTimer = {ntpTimeFetchTask}; +timerStruct_t wifiHandlerTimer = {wifiHandlerTask}; + +uint32_t checkBackTask(void * param); +timerStruct_t checkBackTimer = {checkBackTask}; + +static bool responseFromProvisionConnect = false; + +void (*callback_funcPtr)(uint8_t); + +void enable_provision_ap(void); + +// Callback function pointer for indicating status updates upwards +void (*wifiConnectionStateChangedCallback)(uint8_t status) = NULL; + +// Function to be called by WifiModule on status updates from below +static void wifiCallback(uint8_t msgType, void *pMsg); + +// This is a workaround to wifi_deinit being broken in the winc, so we can de-init without hanging up +int8_t winc_hif_deinit(void * arg); + +void wifi_reinit() +{ + tstrWifiInitParam param ; + + /* Initialize Wi-Fi parameters structure. */ + memset((uint8_t *)¶m, 0, sizeof(tstrWifiInitParam)); + + param.pfAppWifiCb = wifiCallback; + socketDeinit(); + winc_hif_deinit(NULL); + winc_adapter_deinit(); + + wifiConnectionStateChangedCallback = callback_funcPtr; + + winc_adapter_init(); + + m2m_wifi_init(¶m); + socketInit(); +} + +// funcPtr passed in here will be called indicating AP state changes with the following values +// Wi-Fi state is disconnected == 0 +// Wi-Fi state is connected == 1 +// Wi-Fi state is undefined == 0xff +void wifi_init(void (*funcPtr)(uint8_t), uint8_t mode) { + callback_funcPtr = funcPtr; + + // This uses the global ptr set above + wifi_reinit(); + + // Mode == 0 means AP configuration mode + if(mode == WIFI_SOFT_AP) + { + enable_provision_ap(); + debug_printInfo("ACCESS POINT MODE for provisioning"); + } + else + { + timeout_create(&ntpTimeFetchTimer,CLOUD_NTP_TASK_INTERVAL); + } + + + timeout_create(&wifiHandlerTimer, CLOUD_WIFI_TASK_INTERVAL); +} + +void wifi_readThingIdFromWinc(void) +{ + int8_t status; + status = m2m_wifi_download_mode(); + + if(status != M2M_SUCCESS) + { + debug_printError("WINC download mode failed - Thing ID cannot be obtained"); + } + else + { + debug_printInfo("WINC in download mode"); + + status = spi_flash_read(cid, THING_NAME_FLASH_OFFSET,MQTT_CID_LENGTH); + if(status != M2M_SUCCESS || cid[0] == 0xFF || cid[MQTT_CID_LENGTH-1] == 0xFF) + { + sprintf(cid, "%s", AWS_THING_ID); + debug_printer(SEVERITY_NONE, LEVEL_ERROR, "Thing ID is not present, error type %d, user defined thing ID is used",status); + } + else + { + debug_printer(SEVERITY_NONE, LEVEL_NORMAL,"Thing ID read from the device is %s",cid); + } + } +} + +void wifi_readAWSEndpointFromWinc(void) +{ + int8_t status; + + memset(awsEndpoint, 0, AWS_ENDPOINT_LEN); + status = m2m_wifi_download_mode(); + + if(status != M2M_SUCCESS) + { + debug_printError("WINC download mode failed - AWS Host URL cannot be obtained"); + } + else + { + debug_printInfo("WINC in download mode"); + status = spi_flash_read(awsEndpoint, AWS_ENDPOINT_FLASH_OFFSET, AWS_ENDPOINT_LEN); + if(status != M2M_SUCCESS || awsEndpoint[0] == 0xFF || awsEndpoint[AWS_ENDPOINT_LEN - 1] == 0xFF) + { + sprintf(awsEndpoint, "%s", CFG_MQTT_HOSTURL); + debug_printer(SEVERITY_NONE, LEVEL_NORMAL, "Custom endpoint not present, using the default endpoint which the hardware was pre-provisioned for : %s", awsEndpoint); + } + else + { + #if USE_MCHP_AWS_ENDPOINT + { + sprintf(awsEndpoint, "%s", CFG_MQTT_HOSTURL); + debug_printer(SEVERITY_NONE, LEVEL_NORMAL,"Using the default endpoint which the hardware was pre-provisioned for : %s", awsEndpoint); + } + #else + { + debug_printer(SEVERITY_NONE, LEVEL_NORMAL,"Using the endpoint defined for custom AWS account: %s", awsEndpoint); + } + #endif + } + } +} + + +bool wifi_connectToAp(uint8_t passed_wifi_creds) +{ + int8_t e = 0; + + if(passed_wifi_creds == NEW_CREDENTIALS) + { + e=m2m_wifi_connect((char *)ssid, sizeof(ssid), atoi((char*)authType), (char *)pass, M2M_WIFI_CH_ALL); + } + else + { + e=m2m_wifi_default_connect(); + } + + if(M2M_SUCCESS != e) + { + debug_printError("WIFI: wifi error = %d",e); + shared_networking_params.haveError = 1; + return false; + } + + return true; +} + +uint32_t softApConnectTask(void *param) +{ + if(!wifi_connectToAp((uint8_t)NEW_CREDENTIALS)) + { + debug_printError("WIFI: Soft AP Connect Failure"); + } + else + { + debug_printInfo("SOFT AP: New Connect credentials sent WINC"); + } + return SOFT_AP_CONNECT_RETRY_INTERVAL; +} + +bool wifi_disconnectFromAp(void) +{ + int8_t m2mDisconnectError; + if(shared_networking_params.haveAPConnection == 1) + { + if(M2M_SUCCESS != (m2mDisconnectError=m2m_wifi_disconnect())) + { + debug_printError("WIFI: Disconnect from AP error = %d",m2mDisconnectError); + return false; + } + } + return true; +} + +// Update the system time every CLOUD_NTP_TASK_INTERVAL milliseconds +uint32_t ntpTimeFetchTask(void *payload) +{ + // If the EEPROM is blank we use the default credentials + if (ntpServerName[0] == 0xFF) + { + strcpy(ntpServerName, CFG_NTP_SERVER); + strcpy(prevNTPServerName, CFG_NTP_SERVER); + debug_printInfo("USING default NTP server name : %s", ntpServerName); + m2m_wifi_configure_sntp(ntpServerName, sizeof(ntpServerName), SNTP_ENABLE_DHCP); + } + if(strncmp(ntpServerName, prevNTPServerName, sizeof(ntpServerName)) != 0) + { + strcpy(prevNTPServerName, ntpServerName); + debug_printInfo("Updated NTP server name: %s", ntpServerName); + m2m_wifi_configure_sntp(ntpServerName, sizeof(ntpServerName), SNTP_ENABLE_DHCP); + } + + m2m_wifi_get_system_time(); + return CLOUD_NTP_TASK_INTERVAL; +} + + +uint32_t wifiHandlerTask(void * param) +{ + m2m_wifi_handle_events(NULL); + return CLOUD_WIFI_TASK_INTERVAL; +} + +uint32_t checkBackTask(void * param) +{ + debug_printError("wifi_cb: M2M_WIFI_RESP_CON_STATE_CHANGED: DISCONNECTED"); + shared_networking_params.haveAPConnection = 0; + shared_networking_params.amDisconnecting = 0; + shared_networking_params.amConnectingSocket = 0; + shared_networking_params.amConnectingAP = 1; + return 0; +} + +static void wifiCallback(uint8_t msgType, void *pMsg) +{ + ledTickState_t ledState; + switch (msgType) { + case M2M_WIFI_RESP_CON_STATE_CHANGED: + { + tstrM2mWifiStateChanged *pstrWifiState = (tstrM2mWifiStateChanged *)pMsg; + if (pstrWifiState->u8CurrState == M2M_WIFI_CONNECTED) + { + if (responseFromProvisionConnect) + { + timeout_delete(&softApConnectTimer); + responseFromProvisionConnect = false; + + ledState.Full2Sec = LED_BLINK; + LED_modeBlue(ledState); + + timeout_create(&ntpTimeFetchTimer,CLOUD_NTP_TASK_INTERVAL); + application_post_provisioning(); + } + + if ((shared_networking_params.amConnectingAP) && (!shared_networking_params.haveAPConnection)) + { + ledState.Full2Sec = LED_BLINK; + LED_modeGreen(ledState); + shared_networking_params.haveAPConnection = 1; + shared_networking_params.amConnectingAP = 0; + shared_networking_params.amDefaultCred = 0; + shared_networking_params.amConnectingSocket = 1; + } + + if (shared_networking_params.amSoftAP) + { // Connected to AS A SOFT AP + shared_networking_params.amSoftAP = 0; + ledState.Full2Sec = LED_1_SEC_ON; + LED_modeBlue(ledState); + } + debug_printGOOD("wifi_cb: M2M_WIFI_RESP_CON_STATE_CHANGED: CONNECTED"); + CREDENTIALS_STORAGE_clearWifiCredentials(); + // We need more than AP to have an APConnection, we also need a DHCP IP address! + } + else if (pstrWifiState->u8CurrState == M2M_WIFI_DISCONNECTED) + { // Disconnected from AP + ledState.Full2Sec = LED_OFF_STATIC; + LED_modeYellow(ledState); + LED_modeRed(ledState); + if (shared_networking_params.amDefaultCred == 0) + { + LED_modeGreen(ledState); + ledState.Full2Sec = LED_BLINK; + LED_modeBlue(ledState); + } + shared_networking_params.haveAPConnection = 0; + shared_networking_params.amConnectingSocket = 0; + shared_networking_params.amConnectingAP = 1; + + timeout_create(&checkBackTimer,CLOUD_WIFI_TASK_INTERVAL); + shared_networking_params.amDisconnecting = 1; + } + + if ((wifiConnectionStateChangedCallback != NULL) && (shared_networking_params.amDisconnecting == 0)) + { + wifiConnectionStateChangedCallback(pstrWifiState->u8CurrState); + } + break; + } + + case M2M_WIFI_REQ_DHCP_CONF: + { + // Now we are really connected, we have AP and we have DHCP, start off the MQTT host lookup now, response in dnsHandler + if (gethostbyname((const char*)CFG_MQTT_HOSTURL) == M2M_SUCCESS) + { + if (shared_networking_params.amDisconnecting == 1) + { + timeout_delete(&checkBackTimer); + shared_networking_params.amDisconnecting = 0; + } + shared_networking_params.haveError = 0; + debug_printGOOD("CLOUD: DHCP CONF"); + } + break; + } + + case M2M_WIFI_RESP_GET_SYS_TIME: + { + tstrSystemTime* WINCTime = (tstrSystemTime*)pMsg; + // Convert to UNIX_EPOCH, this mktime uses years since 1900 and months are 0 based so we + // are doing a couple of adjustments here. + if(WINCTime->u16Year > 0) + { + TIME_ntpTimeStamp(WINCTime); + } + break; + } + + + case M2M_WIFI_RESP_PROVISION_INFO: + { + tstrM2MProvisionInfo *pstrProvInfo = (tstrM2MProvisionInfo*)pMsg; + if(pstrProvInfo->u8Status == M2M_SUCCESS) + { + sprintf((char*)authType, "%d", pstrProvInfo->u8SecType); + debug_printInfo("%s",pstrProvInfo->au8SSID); + strcpy(ssid, (char *)pstrProvInfo->au8SSID); + strcpy(pass, (char *)pstrProvInfo->au8Password); + debug_printInfo("SOFT AP: Connect Credentials sent to WINC"); + responseFromProvisionConnect = true; + timeout_create(&softApConnectTimer, 0); + } + break; + } + + default: + { + break; + } + } +} + + +void enable_provision_ap(void) +{ + tstrM2MAPConfig apConfig = { + CFG_WLAN_AP_NAME, // Access Point Name. + 1, // Channel to use. + 0, // Wep key index. + WEP_40_KEY_STRING_SIZE, // Wep key size. + "1234567890", // Wep key. + M2M_WIFI_SEC_OPEN, // Security mode. + SSID_MODE_VISIBLE, // SSID visible. + CFG_WLAN_AP_IP_ADDRESS + }; + static char gacHttpProvDomainName[] = CFG_WLAN_AP_NAME; + m2m_wifi_start_provision_mode(&apConfig, gacHttpProvDomainName, 1); +} + + diff --git a/AVRIoT.X/mcc_generated_files/cloud/wifi_service.h b/AVRIoT.X/mcc_generated_files/cloud/wifi_service.h new file mode 100644 index 0000000..4aecd13 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/cloud/wifi_service.h @@ -0,0 +1,47 @@ +/* +\file wifi_service.h + +\brief Wifi service header file. + +(c) 2018 Microchip Technology Inc. and its subsidiaries. + +Subject to your compliance with these terms, you may use Microchip software and any +derivatives exclusively with Microchip products. It is your responsibility to comply with third party +license terms applicable to your use of third party software (including open source software) that +may accompany Microchip software. + +THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER +EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY +IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS +FOR A PARTICULAR PURPOSE. + +IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, +INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND +WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP +HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO +THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL +CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT +OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS +SOFTWARE. +*/ + +#ifndef WIFI_SERVICE_H_ +#define WIFI_SERVICE_H_ + +#include +#include + +#define MAX_WIFI_CRED_LENGTH 31 +#define DEFAULT_CREDENTIALS 0 +#define NEW_CREDENTIALS 1 +#define WIFI_SOFT_AP 0 +#define WIFI_DEFAULT 1 + +// If you pass a callback function in here it will be called when the AP state changes. Pass NULL if you do not want that. +void wifi_init(void (*funcPtr)(uint8_t), uint8_t mode); +void wifi_reinit(); +bool wifi_connectToAp(uint8_t passed_wifi_creds); +bool wifi_disconnectFromAp(void); +void wifi_readThingIdFromWinc(void); +void wifi_readAWSEndpointFromWinc(void); +#endif /* WIFI_SERVICE_H_ */ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/config/IoT_Sensor_Node_config.h b/AVRIoT.X/mcc_generated_files/config/IoT_Sensor_Node_config.h new file mode 100644 index 0000000..bb90d87 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/config/IoT_Sensor_Node_config.h @@ -0,0 +1,14 @@ +#ifndef IOT_SENSOR_NODE_CONFIG_H +#define IOT_SENSOR_NODE_CONFIG_H + +#define CFG_SEND_INTERVAL 1 + +#define CFG_TIMEOUT 5000 + +#define CFG_DEBUG_MSG (0) + +#define CFG_ENABLE_CLI (1) + +#define CFG_NTP_SERVER ("*.pool.ntp.org") + +#endif // IOT_SENSOR_NODE_CONFIG_H diff --git a/AVRIoT.X/mcc_generated_files/config/clock_config.h b/AVRIoT.X/mcc_generated_files/config/clock_config.h new file mode 100644 index 0000000..5ce57c9 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/config/clock_config.h @@ -0,0 +1,31 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef CLOCK_CONFIG_H +#define CLOCK_CONFIG_H + +#ifndef F_CPU +#define F_CPU 10000000 +#endif + +#endif // CLOCK_CONFIG_H diff --git a/AVRIoT.X/mcc_generated_files/config/cloud_config.h b/AVRIoT.X/mcc_generated_files/config/cloud_config.h new file mode 100644 index 0000000..6958f36 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/config/cloud_config.h @@ -0,0 +1,11 @@ +#ifndef CLOUD_CONFIG_H +#define CLOUD_CONFIG_H + +//Thing ID configuration + +//Use this thing ID in the event of not reading it from WINC +#define AWS_THING_ID "" + + +// +#endif // CLOUD_CONFIG_H diff --git a/AVRIoT.X/mcc_generated_files/config/conf_winc.h b/AVRIoT.X/mcc_generated_files/config/conf_winc.h new file mode 100644 index 0000000..7576e9d --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/config/conf_winc.h @@ -0,0 +1,106 @@ +/** + * + * \file + * + * \brief WINC1500 configuration. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef CONF_WINC_H_INCLUDED +#define CONF_WINC_H_INCLUDED + +/* Define only on MCU little endian architectures */ +#define CONF_WINC_MCU_ARCH_LITTLE_ENDIAN + +/* Define if _Static_assert/static_assert is not supported on this tool chain */ +//#define CONF_WINC_HIF_STRUCT_SIZE_CHECK(STRUCTNAME) + +#include "../winc/include/conf_winc_defaults.h" +#include "../winc/m2m/m2m_wifi.h" +#include "../winc/socket/socket.h" + +/* Debug Options */ +//#define CONF_WINC_DEBUG_LEVEL 3 +//#define CONF_WINC_PRINTF printf +//#define CONF_WINC_ASSERT + +/* Define macro to swap endianness of 32-bit unsigned integer */ +#define CONF_WINC_UINT32_SWAP(U32) ((((U32) & 0x000000FF) << 24) | (((U32) & 0x0000FF00) << 8) | (((U32) & 0x00FF0000) >> 8) | (((U32) & 0xFF000000) >> 24)) + +/* Define macro to swap endianness of 16-bit unsigned integer */ +#define CONF_WINC_UINT16_SWAP(U16) ((((U16) & 0x00FF) << 8) | (((U16) & 0xFF00) >> 8)) + +/* Define to allow legacy definitions of types and preprocessor macros */ +//#define CONF_WINC_LEGACY_DEFINITIONS + +/* Define if the socket API is exposed or not to the application */ +//#define CONF_WINC_DISABLE_SOCKET_API + +// WLAN Configuration + +// SSID +// Target WLAN SSID +// main_wlan_ssid +#define CFG_MAIN_WLAN_SSID "MCHP.IOT" + +// Authentication +// Target WLAN Authentication +// Invalid security type +// Wi-Fi network is not secured +// Wi-Fi network is secured with WPA/WPA2 personal(PSK) +// Security type WEP (40 or 104) OPEN OR SHARED +// Wi-Fi network is secured with WPA/WPA2 Enterprise.IEEE802.1x user-name/password authentication +// main_wlan_auth +#define CFG_MAIN_WLAN_AUTH M2M_WIFI_SEC_WPA_PSK + +// Password +// Target WLAN password +// main_wlan_psk +#define CFG_MAIN_WLAN_PSK "microchip" + +// + +// AP Mode Configuration + +// Name +// AP name +// wlan_ap_name +#define CFG_WLAN_AP_NAME "MCHP.IOT.ACCESSPOINT" + +// IP Address +// AP IP Address +// wlan_ap_ip_address +#define CFG_WLAN_AP_IP_ADDRESS {192, 168, 1, 1} + +// + +#endif /* CONF_WINC_H_INCLUDED */ diff --git a/AVRIoT.X/mcc_generated_files/config/mqtt_config.h b/AVRIoT.X/mcc_generated_files/config/mqtt_config.h new file mode 100644 index 0000000..79a7d5b --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/config/mqtt_config.h @@ -0,0 +1,93 @@ +/* + \file mqtt_config.h + + \brief MQTT Configuration File + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef MQTT_CONFIG_H +#define MQTT_CONFIG_H + + +#include + + +/********************MQTT Client configurations***********************/ +#define SUBSCRIBE_TOPIC_SIZE 100 //Defines the topic length that is supported when we process a published packet from the cloud +#define PAYLOAD_SIZE 200 //Defines the payload size that is supported when we process a published packet +#define PUBLISH_TOPIC_SIZE 80 //Defines the topic length when we send a publish packet +//TODO: Must be configurable from GUI +// USE_MCHP_AWS_ENDPOINT macro needs to be changed to 1 if the endpoint is different than MCHP AWS account endpoint. +// This check is required only if endpoint is updated in MCC and as such can be +// easily handled by MQTT MCC backend. +#define USE_MCHP_AWS_ENDPOINT 0 +// AWS_ENDPOINT_LEN macro should be populated by MCC by dynamically calculating the endpoint length. +#define AWS_ENDPOINT_LEN 45 +#define MQTT_CID_LENGTH 41 +#define NUM_TOPICS_SUBSCRIBE 1 //Defines number of topics which can be subscribed +#define NUM_TOPICS_UNSUBSCRIBE NUM_TOPICS_SUBSCRIBE // The MQTT client can unsubscribe only from those topics to which it has already subscribed + +// MCC generated parameters +#define CFG_MQTT_PORT 8883 +#define CFG_MQTT_HOSTURL "a1gqt8sttiign3.iot.us-east-2.amazonaws.com" +#define CFG_MQTT_CONN_TIMEOUT 10 +#define CFG_MQTT_BROKERIP 0x00000000 +#define CFG_MQTT_TXBUFFER_SIZE 400 +#define CFG_MQTT_RXBUFFER_SIZE 400 +#define CFG_MQTT_USERNAME "mchpUser" +#define CFG_MQTT_PASSWORD "microchip" +#define CFG_QOS 0 +#define CFG_PUBTOPIC "mchp/iot/events" +#define CFG_SUBTOPIC "mchp/iot/config" +#define TCPIP_BSD 1 + + +/********************MQTT Client configurations*(END)***********************/ + + +/********************Timeout Driver for MQTT definitions***********************/ +#ifdef TCPIP_BSD +#include "../drivers/timeout.h" +#define timerstruct_t timerStruct_t +#define htons(a) (uint16_t)((((uint16_t) (a)) << 8) | (((uint16_t) (a)) >> 8)) +#define ntohs(a) (uint16_t)((((uint16_t) (a)) << 8) | (((uint16_t) (a)) >> 8)) // Socket.h remapped to htons + +// Timeout is calculated on the basis of clock frequency. +// This macro needs to be changed in accordance with the clock frequency. +#define SECONDS (uint32_t)1000 +#endif /* TCPIP_BSD */ + +#ifdef TCPIP_LITE +#define absolutetime_t uint32_t +#define timerstruct_t timerStruct_t + +// Timeout is calculated on the basis of clock frequency. +// This macro needs to be changed in accordance with the clock frequency. +#define SECONDS (uint32_t)1000 +#endif /* TCPIP_LITE */ + +/*******************Timeout Driver for MQTT definitions*(END)******************/ + + + +#endif /* MQTT_CONFIG_H */ diff --git a/AVRIoT.X/mcc_generated_files/credentials_storage/credentials_storage.c b/AVRIoT.X/mcc_generated_files/credentials_storage/credentials_storage.c new file mode 100644 index 0000000..a179143 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/credentials_storage/credentials_storage.c @@ -0,0 +1,47 @@ +/* + \file credentials_storage.c + + \brief Credential Storage source file. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include +#include +#include +#include +#include "credentials_storage.h" + +char ssid[MAX_WIFI_CREDENTIALS_LENGTH]; +char pass[MAX_WIFI_CREDENTIALS_LENGTH]; +char authType[2]; +char ntpServerName[MAX_NTP_SERVER_LENGTH]; + +void CREDENTIALS_STORAGE_clearWifiCredentials(void) +{ + memset(ssid, 0, sizeof(ssid)); + memset(pass, 0, sizeof(pass)); + memset(authType, 0 ,sizeof(authType)); +} + + + diff --git a/AVRIoT.X/mcc_generated_files/credentials_storage/credentials_storage.h b/AVRIoT.X/mcc_generated_files/credentials_storage/credentials_storage.h new file mode 100644 index 0000000..fb0222d --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/credentials_storage/credentials_storage.h @@ -0,0 +1,44 @@ +/* + \file credentials_storage.h + + \brief Credential Storage header file. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + + +#ifndef CREDENTIALS_STORAGE_H +#define CREDENTIALS_STORAGE_H + +#define MAX_WIFI_CREDENTIALS_LENGTH 31 +#define MAX_NTP_SERVER_LENGTH 20 + +extern char ssid[MAX_WIFI_CREDENTIALS_LENGTH]; +extern char pass[MAX_WIFI_CREDENTIALS_LENGTH]; +extern char authType[2]; +extern char ntpServerName[MAX_NTP_SERVER_LENGTH]; + +void CREDENTIALS_STORAGE_clearWifiCredentials(void); +void CREDENTIALS_STORAGE_readNTPServerName(char *serverNameBuffer); +void CREDENTIALS_STORAGE_writeNTPServerName(char *serverNameBuffer); + +#endif /* CREDENTIALS_STORAGE_H */ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/debug_print.c b/AVRIoT.X/mcc_generated_files/debug_print.c new file mode 100644 index 0000000..9c97bdc --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/debug_print.c @@ -0,0 +1,88 @@ +/* + \file debug_print.c + + \brief debug_console printer + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include +#include +#include +#include "debug_print.h" + + +static const char *severity_strings[] = { + CSI_WHITE " NONE" CSI_WHITE, + CSI_YELLOW "WARNING" CSI_WHITE, + CSI_BLUE " NOTICE" CSI_WHITE, + CSI_MAGENTA " INFO" CSI_WHITE, + CSI_RED " DEBUG" CSI_NORMAL CSI_WHITE +}; + +static const char *level_strings[] = { + CSI_WHITE "NORMAL" CSI_WHITE, + CSI_GREEN " GOOD" CSI_WHITE, + CSI_RED " BAD" CSI_WHITE, + CSI_RED CSI_INVERSE " ERROR" CSI_NORMAL CSI_WHITE +}; + +static debug_severity_t debug_severity_filter = SEVERITY_NONE; +static char debug_message_prefix[20] = ""; + +void debug_init(const char *prefix) +{ + debug_setPrefix(prefix); + debug_setSeverity(SEVERITY_NONE); +} + +void debug_setSeverity(debug_severity_t debug_level) +{ + debug_severity_filter = debug_level; +} + +void debug_setPrefix(const char *prefix) +{ + strncpy(debug_message_prefix,prefix,sizeof(debug_message_prefix)); +} + +void debug_printer(debug_severity_t debug_severity, debug_errorLevel_t error_level, char* format, ...) +{ + if(debug_severity >= SEVERITY_NONE && debug_severity <= SEVERITY_DEBUG) + { + if(debug_severity <= debug_severity_filter) + { + if(error_level < LEVEL_NORMAL) error_level = LEVEL_NORMAL; + if(error_level > LEVEL_ERROR) error_level = LEVEL_ERROR; + + printf("%s\4 %s %s ",debug_message_prefix, severity_strings[debug_severity], level_strings[error_level]); + + va_list argptr; + va_start(argptr, format); + vprintf(format , argptr); + va_end(argptr); + printf(CSI_RESET"\r\n"); + } + } +} + + diff --git a/AVRIoT.X/mcc_generated_files/debug_print.h b/AVRIoT.X/mcc_generated_files/debug_print.h new file mode 100644 index 0000000..99a1f40 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/debug_print.h @@ -0,0 +1,85 @@ +/* + \file debug_print.h + + \brief debug_console printer + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef DEBUG_PRINT_H +#define DEBUG_PRINT_H + +#include "config/IoT_Sensor_Node_config.h" + +#define CSI_RESET "\33[0m" +#define CSI_BLACK "\33[30m" +#define CSI_RED "\33[31m" +#define CSI_GREEN "\33[32m" +#define CSI_YELLOW "\33[33m" +#define CSI_BLUE "\33[34m" +#define CSI_MAGENTA "\33[35m" +#define CSI_CYAN "\33[36m" +#define CSI_WHITE "\33[37m" +#define CSI_INVERSE "\33[7m" +#define CSI_NORMAL "\33[27m" +#define CSI_CLS "\33[2J" +#define CSI_HOME "\33[1;1H" + +typedef enum +{ + SEVERITY_NONE, + SEVERITY_WARNING, + SEVERITY_NOTICE, + SEVERITY_INFO, + SEVERITY_DEBUG +} debug_severity_t; + +typedef enum +{ + LEVEL_NORMAL, + LEVEL_GOOD, + LEVEL_BAD, + LEVEL_ERROR +}debug_errorLevel_t; + +#include "banner.h" + +#define IOT_DEBUG_PRINT CFG_DEBUG_MSG + +void debug_printer(debug_severity_t debug_severity, debug_errorLevel_t error_level, char* format, ...); +void debug_setSeverity(debug_severity_t debug_level); +void debug_setPrefix(const char *prefix); +void debug_init(const char *prefix); + +#define debug_print(fmt, ...) \ +do { if (IOT_DEBUG_PRINT) debug_printer(SEVERITY_DEBUG, LEVEL_NORMAL, fmt CSI_RESET, ##__VA_ARGS__); } while (0) + +#define debug_printGOOD(fmt, ...) \ +do { if (IOT_DEBUG_PRINT) debug_printer(SEVERITY_DEBUG,LEVEL_GOOD, fmt CSI_RESET, ##__VA_ARGS__); } while (0) + +#define debug_printError(fmt, ...) \ +do { if (IOT_DEBUG_PRINT) debug_printer(SEVERITY_DEBUG,LEVEL_ERROR, fmt CSI_RESET, ##__VA_ARGS__); } while (0) + +#define debug_printInfo(fmt, ...) \ +do { if (IOT_DEBUG_PRINT) debug_printer(SEVERITY_INFO,LEVEL_NORMAL, fmt CSI_RESET, ##__VA_ARGS__); } while (0) + +#endif // DEBUG_PRINT_H diff --git a/AVRIoT.X/mcc_generated_files/delay.c b/AVRIoT.X/mcc_generated_files/delay.c new file mode 100644 index 0000000..cfe1a3b --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/delay.c @@ -0,0 +1,44 @@ +/* + (c) 2016 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#include "config/clock_config.h" +#include +#include + +void DELAY_milliseconds(uint16_t milliseconds) { + while(milliseconds--){ + _delay_ms(1); + } +} + +void DELAY_microseconds(uint16_t microseconds) { + while( microseconds >= 32) + { + _delay_us(32); + microseconds -= 32; + } + + while(microseconds--) + { + _delay_us(1); + } +} diff --git a/AVRIoT.X/mcc_generated_files/delay.h b/AVRIoT.X/mcc_generated_files/delay.h new file mode 100644 index 0000000..d985ec1 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/delay.h @@ -0,0 +1,31 @@ +/* + (c) 2016 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#ifndef _DELAY_H +#define _DELAY_H + +#include + +void DELAY_milliseconds(uint16_t milliseconds); +void DELAY_microseconds(uint16_t microseconds); + +#endif // _DELAY_H diff --git a/AVRIoT.X/mcc_generated_files/device_config.c b/AVRIoT.X/mcc_generated_files/device_config.c new file mode 100644 index 0000000..b7fda7a --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/device_config.c @@ -0,0 +1,39 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include + +/** + * \Configures Fuse bits + */ + +FUSES = +{ + .APPEND = 0, + .BODCFG = ACTIVE_DIS_gc | LVL_BODLEVEL0_gc | SAMPFREQ_1KHZ_gc | SLEEP_DIS_gc, + .BOOTEND = 0, + .OSCCFG = FREQSEL_20MHZ_gc, + .SYSCFG0 = CRCSRC_NOCRC_gc | RSTPINCFG_GPIO_gc, + .SYSCFG1 = SUT_64MS_gc, + .WDTCFG = PERIOD_OFF_gc | WINDOW_OFF_gc, +}; \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/docs/mqtt_documentation/MQTT Readme.md b/AVRIoT.X/mcc_generated_files/docs/mqtt_documentation/MQTT Readme.md new file mode 100644 index 0000000..2d6a3b4 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/docs/mqtt_documentation/MQTT Readme.md @@ -0,0 +1,397 @@ +# Microchip MQTT Library APIs + +## Introduction + +MQTT (Message Queuing Telemetry and Transport) is a publish/subscribe messaging transport protocol. It is widely used in many situations, such as communications in Machine to Machine (M2M) or Internet of Things (IoT) applications, especially in bandwidth and/or memory constrained environments. This protocol runs over TCP/IP, or can over other network protocols that provide ordered, lossless, bi-directional connections. In this implementation of MQTT is implemented over TCP. + +This MQTT implementation supports all the required features and message types of this protocol along with some optional features. + +Supported message types: +* CONNECT +* CONNACK +* PUBLISH (QoS level = 0) +* PINGREQ +* PINGRESP +* SUBSCRIBE (QoS level = 0, beta) +* DISCONNECT + +This document describes the structure and the APIs implemented as part of the MQTT library. The public APIs are used by user application for performing all the MQTT specific tasks such as establishing a MQTT connection, publishing data, sending ping requests, etc. The private APIs are used internally by the MQTT library for maintaining its modularity. + +## Core Public APIs + +##### 1. INITIALISE STATE +* MQTT_initialiseState + * **Description:** + * void MQTT_initialiseState(void) + * Returns the mqttState variable to DISCONNECTED. + * **Parameters:** + * None. + * **Return Values:** + * None. + +##### 2. GET STATE +* MQTT_GetConnectionState + * **Description:** + * mqttCurrentState MQTT_GetConnectionState (void) + * Returns the mqttState variable value. + * **Parameters:** + * None. + * **Return Values:** + * mqttState which is a type define of mqttCurrentState. + +##### 3. CREATE CONNECT PACKET +* MQTT_CreateConnectPacket + * **Description:** + * bool MQTT_CreateConnectPacket(mqttConnectPacket *newConnectPacket*) + * MQTT_CreateConnectPacket API creates a CONNECT packet structure, which follows MQTT standard. + * **Parameters:** + * A pointer that points to a MQTT CONNECT packet structure mqttConnectPacket. + * **Return Values:** + * A bool type value indicating whether a connect data packet structure is initialized successfully. A return value of â??trueâ?? implies that CONNECT packet has been successfully created. + +##### 4. CREATE PUBLISH PACKET +* MQTT_CreatePublishPacket + * **Description:** + * bool MQTT_CreatePublishPacket(mqttPublishPacket *newPublishPacket*) + * MQTT_CreatePublishPacket API creates a MQTT publish data packet structure, which follows MQTT standard. + * **Parameters:** + * A pointer that points to a MQTT PUBLISH packet structure mqttPublishPacket. + * **Return Values:** + * A bool value indicating whether a publish data packet structure is created successfully. A return value of â??trueâ?? means that the PUBLISH packet has been created correctly as per the parameters passed by the user application. + +##### 5. CREATE SUBSCRIBE PACKET +* MQTT_CreateSubscribePacket + * **Description:** + * bool MQTT_CreateSubscribePacket(mqttSubscribePacket *newSubscribePacket*) + * MQTT_CreateSubscribePacket API creates a MQTT subscribe data packet structure, which follows MQTT standard. + * **Parameters:** + * A pointer that points to a MQTT SUBSCRIBE packet structure mqttSubscribePacket. + * **Return Values:** + * A bool type value indicating whether a subscribe data packet structure is created successfully. A return value of â??trueâ?? means that the SUBSCRIBE packet has been created correctly as per the parameters passed by the user application. + +##### 6. CREATE UNSUBSCRIBE PACKET +* MQTT_CreateUnsubscribePacket + * **Description:** + * bool MQTT_CreateUnsubscribePacket(mqttUnsubscribePacket *newUnsubscribePacket*) + * MQTT_CreateUnsubscribePacket API creates a MQTT unsubscribe data packet structure, which follows MQTT standard. + * **Parameters:** + * A pointer that points to a MQTT UNSUBSCRIBE packet structure. + * **Return Values:** + * A bool type value indicating whether a subscribe data packet unstructure is created successfully. A return value of â??trueâ?? means that the UNSUBSCRIBE packet has been created correctly as per the parameters passed by the user application. + +##### 7. DISCONNECT +* MQTT_Disconnect + * **Description:** + * void MQTT_Disconnect(void) + * This API sends a MQTT DISCONNECT packet. This disconnects the client cleanly from the MQTT server. + * **Parameters:** + * None. + * **Return Values:** + * None. + +##### 8. LAST HANDLER STATE +* MQTT_GetLastHandlerState + * **Description:** + * mqttHandlerState_t MQTT_GetLastHandlerState (void); + * The function returns the last MQTT Handler State used to detect transitions by observers. + * **Parameters:** + * None. + * **Return Values:** + * Variable value of type mqttHandlerState_t. + +##### 9. LAST RECEIVED PACKET HEADER +* MQTT_GetLastReceivedPacketHeader + * **Description:** + * mqttHeaderFlags MQTT_GetLastReceivedPacketHeader (void); + * The function returns a uint16_t value representing the last received data length. + * **Parameters:** + * None. + * **Return Values:** + * Variable value of a uint16_t type. + +##### 10. TRANSMISSION HANDLER +* MQTT_TransmissionHandler + * **Description:** + * mqttCurrentState MQTT_TransmissionHandler(mqttTxRxInformation *mqttConnectionPtr*) + * MQTT_TransmissionHandler API sends out an MQTT packet based on the settings of MQTT packet transmission flags and the current MQTT state, then set the current MQTT state to a proper state. + * **Parameters:** + * A pointer to the current MQTT connection information, which is essentially a structure with relevant exchange buffer details. + * **Return Values:** + * mqttCurrentState: An enum indicating the current MQTT connection state. Possible valid values: DISCONNECTED, CONNECTING, WAITFORCONNACK, CONNECTED. + +##### 11. RECEPTION HANDLER +* MQTT_ReceptionHandler + * **Description:** + * mqttCurrentState MQTT_ReceptionHandler(mqttTxRxInformation *mqttConnectionPtr*) + * MQTT_ReceptionHandler API handles the received MQTT packet based on the MQTT state and then sets the state to a proper value based on the data received. + * **Parameters:** + * A pointer to the current MQTT connection information, which is essentially a structure with relevant exchange buffer details. + * **Return Values:** + * mqttCurrentState: An enum indicating the current MQTT connection state. Possible valid values: DISCONNECTED, CONNECTING, WAITFORCONNACK, CONNECTED. + +## Private APIs + +##### 1. SEND CONNECT +* mqttSendConnect + * **Description:** + * static bool mqttSendConnect(mqttTxRxInformation *mqttConnectionPtr*) + * mqttSendConnect API sends the MQTT CONNECT packet using the underlying TCP layer. + * **Parameters:** + * A pointer to the MQTT connection structure *mqttConnectionPtr*. + * **Return Values:** + * Boolean value indicating whether the packet has been successfully sent. The value 'true' implies that the packet has been sent successfully to the server. + +##### 2. SEND PUBLISH +* mqttSendPublish + * **Description:** + * static bool mqttSendPublish(mqttTxRxInformation *mqttConnectionPtr*) + * mqttSendPublish API sends the MQTT PUBLISH packet using the underlying TCP layer. + * **Parameters:** + * A pointer to the MQTT connection structure *mqttConnectionPtr*. + * **Return Values:** + * Boolean value indicating whether the packet has been successfully sent. The value 'true' implies that the packet has been sent successfully to the server. + +##### 3. SEND SUBSCRIBE +* mqttSendSubscribe + * **Description:** + * static bool mqttSendSubscribe (mqttContext*mqttConnectionPtr); + * mqttSendSubscribe API sends the MQTT SUBSCRIBE packet using the underlying TCP layer. + * **Parameters:** + * Pointer to the MQTT connection structure *mqttConnectionPtr*. + * **Return Values:** + * Boolean value indicating whether the packet has been successfully sent. The value â??trueâ?? implies that the packet has been sent successfully to the server. + +##### 4. SEND UNSUBSCRIBE +* mqttSendUnubscribe + * **Description:** + * static bool mqttSendUnsubscribe (mqttContext*mqttConnectionPtr); + * mqttSendUnsubscribe API sends the MQTT SUBSCRIBE packet using the underlying TCP layer. + * **Parameters:** + * Pointer to the MQTT connection structure *mqttConnectionPtr*. + * **Return Values:** + * Boolean value indicating whether the packet has been successfully sent. The value â??trueâ?? implies that the packet has been sent successfully to the server. + +##### 5. SEND PINGREQ +* mqttSendPingreq + * **Description:** + * static bool mqttSendPingreq(mqttTxRxInformation *mqttConnectionPtr*) + * mqttSendPingreq API sends the MQTT PINGREQ packet using the underlying TCP layer. + * **Parameters:** + * A pointer to the MQTT connection structure *mqttConnectionPtr*. + * **Return Values:** + * Boolean value indicating whether the packet has been successfully sent. The value 'true' implies that the packet has been sent to the server. + +##### 6. SEND DISCONNECT +* mqttSendDisconnect + * **Description:** + * static bool mqttSendDisconnect(mqttTxRxInformation *mqttConnectionPtr*) + * mqttSendDisconnect API sends the MQTT DISCONNECT packet using the underlying TCP layer. + * **Parameters:** + * A pointer to the MQTT connection structure *mqttConnectionPtr*. + * **Return Values:** + * Boolean value indicating whether the packet has been successfully sent. The value 'true' implies that the packet has been sent to the server. + +##### 7. ENCODING REMAINING LENGTH +* mqttEncodeLength + * **Description:** + * static uint8_t mqttEncodeLength(uint16_t length, uint8_t *output*) + * The function encodes the text fields in MQTT packets as UTF-8 strings. + * **Parameters:** + * uint16_t length: the number of bytes remaining within the current packet, including data in the variable header and the payload. + * uint8_t *output*: a pointer to the encoded bytes. + * **Return Values:** + * The number of bytes encoded. + +##### 8. DECODING REMAINING LENGTH +* mqttDecodeLength + * **Description:** + * static absolutetime_t mqttEncodeLength(uint8_t *encodedData*) + * The function decodes UTF-8 encoded string to text fields as per the requirement of MQTT standard. + * **Parameters:** + * uint8_t *encodedData*: a pointer to the encoded value of remaining length of a MQTT control packet. + * **Return Values:** + * The decoded value of the remaining length of an MQTT control packet header. + +##### 9. PROCESS PINGRESP +* mqttProcessPingresp + * **Description:** + * static mqttCurrentState mqttProcessPingresp(mqttTxRxInformation *mqttConnectionPtr*) + * Processes the PINGRESP packet received from the broker. + * **Parameters:** + * A pointer to the MQTT connection structure *mqttConnectionPtr*. + * **Return Values:** + * None. + +##### 10. PROCESS SUBACK +* mqttProcessSuback + * **Description:** + * static mqttCurrentState mqttProcessSuback(mqttTxRxInformation *mqttConnectionPtr*) + * Processes the PINGRESP packet received from the broker. + * **Parameters:** + * A pointer to the MQTT connection structure *mqttConnectionPtr*. + * **Return Values:** + * Pointer to the MQTT connection structure *mqttConnectionPtr*. + +##### 11. PROCESS UNSUBACK +* mqttProcessUnsuback + * **Description:** + * static mqttCurrentState mqttProcessSuback(mqttTxRxInformation *mqttConnectionPtr*); + * Processes the PINGRESP packet received from the broker. + * **Parameters:** + * Pointer to the MQTT connection structure *mqttConnectionPtr*. + * **Return Values:** + * Current state of the MQTT (CONNECTED if correct SUBACK packet is received correctly and DISCONNECTED if certain parameters in the SUBACK packet indicate that the server has acknowledged the SUBSCRIBE message completely). + +##### 12. PROCESS PUBLISH +* mqttProcessPublish + * **Description:** + * static mqttCurrentState mqttProcessPublish (mqttContext *mqttConnectionPtr*); + * Processes the PUBLISH packet received from the broker. + * **Parameters:** + * Pointer to the MQTT Context structure *mqttConnectionPtr*. + * **Return Values:** + * Current state of the MQTT (CONNECTED if correct SUBACK packet is received correctly and DISCONNECTED if certain parameters in the PUBACK packet indicate that the server has acknowledged the PUBLISH message completely). + +##### 13. PROCESS PUBACK +* mqttProcessPuback + * **Description:** + * static void mqttProcessPuback (mqttContext *mqttConnectionPtr*); + * Processes the PUBLISH ACK packet received from the broker. + * **Parameters:** + * Pointer to the MQTT Context structure *mqttConnectionPtr*. + * **Return Values:** + * None. + +##### 14. PROCESS CONNACK +* mqttProcessConnack + * **Description:** + * static mqttCurrentState mqttProcessConnack(mqttTxRxInformation *mqttConnectionPtr*) + * Processes the CONNACK packet received from the broker. + * **Parameters:** + * A pointer to the MQTT connection structure *mqttConnectionPtr*. + * **Return Values:** + * Current state of the MQTT (CONNECTED if correct CONNACK packet is received and DISCONNECTED if certain parameters in the CONNACK packet indicate that the server has not granted a connection). + +## Core Timeouts + +##### 1. CHECK CONNACK TIMEOUT STATE +* checkConnackTimeoutState + * **Description:** + * static absolutetime_t checkConnackTimeoutState (); + * checkConnackTimeoutState is a call back function that will be called when a timeout (30s) has occurred after sending the CONNECT packet, since a CONNACK packet is expected from the broker within 30s. + * **Parameters:** + * None. + * **Return Values:** + * Number of ticks until the connackTimer expires. In the current implementation it is 0, indicating that the timer function will be executed only once. + +##### 2. CHECK PING REQUEST TIMEOUT STATE +* checkPingreqTimeoutState + * **Description:** + * static absolutetime_t checkPingreqTimeoutState (); + * checkPingreqTimeoutState is a call back function that will be called when a â??keep-alive-timeoutâ?? defined in user application is near after a MQTT connection has been set up to make sure the connection keeps alive. In the current implementation it is 1 second before â??keep-alive-timeoutâ??. + * **Parameters:** + * None. + * **Return Values:** + * Number of ticks until the pingreqTimer expires. + +##### 3. CHECK PING RESPONSE TIMEOUT STATE +* checkPingrespTimeoutState + * **Description:** + * static absolutetime_t checkPingrespTimeoutState (); + * checkPingrespTimeoutState is a call back function that will be called when a timeout (30s) has occurred after sending a PINGREQ packet. In the current MQTT client implementation, the client waits for 30s after transmission of PINGREQ packet to receive a PINGRESP packet. + * **Parameters:** + * None. + * **Return Values:** + * Number of ticks until the pingrespTimer expires. + +##### 4. CHECK SUBSCRIBE ACKNOWLEDGE TIMEOUT STATE +* checkSubackTimeoutState + * **Description:** + * static absolutetime_t checkSubackTimeoutState (); + * When a SUBSCRIBE packet is sent, the ACK is expected within a timeout period. +If the SUBACK is not received in the set time, this timeout will occur; and a flag will be set as a result. Otherwise this timeout will be deleted prior to completion. + * **Parameters:** + * None. + * **Return Values:** + * Zero (0); the timer is not reloaded. + +##### 5. CHECK UNSUBSCRIBE ACKNOWLEDGE TIMEOUT STATE +* checkUnsubackTimeoutState + * **Description:** + * static absolutetime_t checkUnsubackTimeoutState (); + * When a UNSUBSCRIBE packet is sent, the ACK is expected within a timeout period. +If the SUBACK is not received in the set time, this timeout will occur; and a flag will be set as a result. Otherwise this timeout will be deleted prior to completion. + * **Parameters:** + * None. + * **Return Values:** + * Zero (0); the timer is not reloaded. + +## Dependent APIs + +###Exchange Buffers + +##### 1. EXCHANGE BUFFER INIT +* ExchangeBufferInit + * **Description:** + * void MQTT_ExchangeBufferInit(exchangeBuffer *buffer*) + * Sets the current location pointer to the beginning of the buffer and sets the length to zero. + * **Parameters:** + * A pointer to Exchange Buffer structure. + * **Return Values:** + * None. + +##### 2. EXCHANGE BUFFER WRITE +* ExchangeBufferWrite + * **Description:** + * uint16_t MQTT_ExchangeBufferWrite(exchangeBuffer *buffer*, uint8_t *data*, uint16_t length) + * Sets the current location pointer to the beginning of the buffer and sets the length to zero. + * **Parameters:** + * Copies a data buffer to the Exchange Buffer. + * **Return Values:** + * Length. + +##### 3. EXCHANGE BUFFER PEEK +* ExchangeBufferPeek + * **Description:** + * uint16_t MQTT_ExchangeBufferPeek(exchangeBuffer *buffer*, uint8_t *data*, uint16_t length) + * Copies data out of the Exchange buffer without modifying the data length or current pointer. + * **Parameters:** + * A pointer to Exchange Buffer structure, a pointer to Data Buffer, dataLength. + * **Return Values:** + * Number of bytes copied. + +##### 4. EXCHANGE BUFFER READ +* ExchangeBufferRead + * **Description:** + * uint16_t MQTT_ExchangeBufferRead(exchangeBuffer *buffer*, uint8_t *data*, uint16_t length) + * Copies the Exchange buffer to the data buffer. Exchange buffer is reset in the process. + * **Parameters:** + * Copies a data buffer to the Exchange Buffer. + * **Return Values:** + * Number of bytes copied. + +## Packet Transfer Interface + +##### 1. SET PUBLISH RECEPTION HANDLER TABLE +* MQTT_SetPublishReceptionHandlerTable + * **Description:** + * void MQTT_SetPublishReceptionHandlerTable(publishReceptionHandler_t *appPublishReceptionInfo*) + * MQTT_SetPublishReceptionHandlerTable is called by the user application to inform the MQTT core of the call back table defined to handle the PUBLISH messages received from the MQTT server. + * **Parameters:** + * A publishReceptionHandler_t table information defined in the user application, which involves a call back function pointer of a corresponding MQTT topic. + * **Return Values:** + * None. + +##### 2. GET PUBLISH RECEPTION HANDLER TABLE +* MQTT_GetPublishReceptionHandlerTable + * **Description:** + * publishReceptionHandler_t *MQTT_GetPublishReceptionHandlerTable*() + * MQTT_GetPublishReceptionHandlerTable API returns a publishReceptionHandler_t table information defined in the user application, which involves a call back function pointer of a corresponding MQTT topic. + * **Parameters:** + * None. + * **Return Values:** + * A publishReceptionHandler_t table information defined in the user application, which involves a call back function pointer of a corresponding MQTT topic. + +## References +[MQTT Standard](http://mqtt.org/documentation) +[Click the link](https://guides.github.com/features/mastering-markdown/#examples) diff --git a/AVRIoT.X/mcc_generated_files/docs/mqtt_documentation/Microchip MQTT Client Library.docx b/AVRIoT.X/mcc_generated_files/docs/mqtt_documentation/Microchip MQTT Client Library.docx new file mode 100644 index 0000000000000000000000000000000000000000..936a77109e1158376bddb22eab33a3d6374ab498 GIT binary patch literal 40827 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 literal 0 HcmV?d00001 diff --git a/AVRIoT.X/mcc_generated_files/docs/winc_documentation/WINC1500_IoT_SW_APIs.chm b/AVRIoT.X/mcc_generated_files/docs/winc_documentation/WINC1500_IoT_SW_APIs.chm new file mode 100644 index 0000000000000000000000000000000000000000..f432ed1d54707114a16bd31f23ae7ceaaf595c52 GIT binary patch literal 1393870 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

2c!4gWn&wI+G-KlBeJDyi4E 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

iC><1KeoCtvIz?uby$(?h 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

v-g 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

!EPW0%PjA_7;v_E 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 z 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

5N&69fkY&-x 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

6a=$^^7+Og?GKS1b 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 Ls-U2;(i-jh}z+V3zxjK6X#*T$UZe& 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

wdg370xz8G>M@rv; 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

$ORv8GVC3eeHQ@8!(GwVzu7( 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 z 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�)Nz7xkgrWv%l=0?cMDniQn8R*R z^AyGP3YI10{Pn$klDd20`<=}8t%Iydg>$nKcdxHd0YM;S4B;v0#R)BHeUu%?QDsyY zqH{%9rYdoetUy)Xv*K0Z0;Xz8C73iW*kqQ%-COwRLtDFrdLgvfg@x4xvGs%0D3u+4 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 lwqpO3Vg!kljD7v> 8); +} + +/****************************************************************/ +static twi0_operations_t wr2RegCompleteHandler(void *p) +{ + I2C0_SetBuffer(p,2); + I2C0_SetDataCompleteCallback(NULL,NULL); + return I2C_CONTINUE; +} + +void i2c_write2ByteRegister(twi0_address_t address, uint8_t reg, uint16_t data) +{ + while(!I2C0_Open(address)); // sit here until we get the bus.. + I2C0_SetDataCompleteCallback(wr2RegCompleteHandler,&data); + I2C0_SetBuffer(®,1); + I2C0_SetAddressNackCallback(I2C0_SetRestartWriteCallback,NULL); //NACK polling? + I2C0_MasterWrite(); + while(I2C_BUSY == I2C0_Close()); // sit here until finished. +} + +/****************************************************************/ +typedef struct +{ + size_t len; + char *data; +}buf_t; + +static twi0_operations_t rdBlkRegCompleteHandler(void *p) +{ + I2C0_SetBuffer(((buf_t *)p)->data,((buf_t*)p)->len); + I2C0_SetDataCompleteCallback(NULL,NULL); + return I2C_RESTART_READ; +} + +void i2c_readDataBlock(twi0_address_t address, uint8_t reg, void *data, size_t len) +{ + // result is little endian + buf_t d; + d.data = data; + d.len = len; + + while(!I2C0_Open(address)); // sit here until we get the bus.. + I2C0_SetDataCompleteCallback(rdBlkRegCompleteHandler,&d); + I2C0_SetBuffer(®,1); + I2C0_SetAddressNackCallback(I2C0_SetRestartWriteCallback,NULL); //NACK polling? + I2C0_MasterWrite(); + while(I2C_BUSY == I2C0_Close()); // sit here until finished. +} + +void i2c_readNBytes(twi0_address_t address, void *data, size_t len) +{ + while(!I2C0_Open(address)); // sit here until we get the bus.. + I2C0_SetBuffer(data,len); + I2C0_MasterRead(); + while(I2C_BUSY == I2C0_Close()); // sit here until finished. +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/drivers/i2c_simple_master.h b/AVRIoT.X/mcc_generated_files/drivers/i2c_simple_master.h new file mode 100644 index 0000000..c660d28 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/drivers/i2c_simple_master.h @@ -0,0 +1,40 @@ +/* + (c) 2016 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#ifndef I2C_SIMPLE_MASTER_H +#define I2C_SIMPLE_MASTER_H + +#include +#include +#include "../include/twi0_master.h" + +uint8_t i2c_read1ByteRegister(twi0_address_t address, uint8_t reg); +uint16_t i2c_read2ByteRegister(twi0_address_t address, uint8_t reg); +void i2c_write1ByteRegister(twi0_address_t address, uint8_t reg, uint8_t data); +void i2c_write2ByteRegister(twi0_address_t address, uint8_t reg, uint16_t data); + +void i2c_writeNBytes(twi0_address_t address, void* data, size_t len); +void i2c_readDataBlock(twi0_address_t address, uint8_t reg, void *data, size_t len); +void i2c_readNBytes(twi0_address_t address, void *data, size_t len); + +#endif /* I2C_SIMPLE_MASTER_H */ + diff --git a/AVRIoT.X/mcc_generated_files/drivers/spi_master.c b/AVRIoT.X/mcc_generated_files/drivers/spi_master.c new file mode 100644 index 0000000..417a884 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/drivers/spi_master.c @@ -0,0 +1,50 @@ +/* + (c) 2016 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +/** + Section: Included Files + */ + +#include "spi_master.h" + +bool WINC_open(void); + +const spi_master_functions_t spiMaster[] = { + { SPI0_Close, WINC_open, SPI0_ExchangeByte, SPI0_ExchangeBlock, SPI0_WriteBlock, SPI0_ReadBlock, SPI0_WriteByte, SPI0_ReadByte, NULL, NULL } +}; + +bool WINC_open(void){ + return SPI0_OpenConfiguration(WINC_CONFIG); +} + +//This function serves keep backwards compatibility with older api users +bool spi_master_open(spi_master_configurations_t config){ + switch(config){ + case WINC: + return WINC_open(); + default: + return 0; + } +} +/** + End of File + */ diff --git a/AVRIoT.X/mcc_generated_files/drivers/spi_master.h b/AVRIoT.X/mcc_generated_files/drivers/spi_master.h new file mode 100644 index 0000000..8a12e94 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/drivers/spi_master.h @@ -0,0 +1,53 @@ +/* + (c) 2016 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#ifndef _SPI_MASTER_H +#define _SPI_MASTER_H + +/** + Section: Included Files + */ +#include +#include +#include "../include/spi0.h" + +typedef enum { + WINC +} spi_master_configurations_t; + +typedef struct { void (*spiClose)(void); + bool (*spiOpen)(void); + uint8_t (*exchangeByte)(uint8_t b); + void (*exchangeBlock)(void * block, size_t blockSize); + void (*writeBlock)(void * block, size_t blockSize); + void (*readBlock)(void * block, size_t blockSize); + void (*writeByte)(uint8_t byte); + uint8_t (*readByte)(void); + void (*setSpiISR)(void(*handler)(void)); + void (*spiISR)(void); +} spi_master_functions_t; + +extern const spi_master_functions_t spiMaster[]; + +bool spi_master_open(spi_master_configurations_t config); //for backwards compatibility + +#endif // _SPI_MASTER_H \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/drivers/timeout.c b/AVRIoT.X/mcc_generated_files/drivers/timeout.c new file mode 100644 index 0000000..1c49f52 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/drivers/timeout.c @@ -0,0 +1,384 @@ +/* + (c) 2016 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#ifdef __XC +#include +#endif +#include +#include "timeout.h" +#include "../include/rtc.h" + + +uint32_t dummyHandler(void *payload) {return 0;}; +void startTimerAtHead(void); +INLINE void enqueueCallback(timerStruct_t* timer); +INLINE void setTimerDuration(uint32_t duration); +INLINE uint32_t makeAbsolute(uint32_t timeout); +INLINE uint32_t rebaseList(void); +INLINE void printList(void); + +timerStruct_t *listHead = NULL; +timerStruct_t * volatile executeQueueHead = NULL; + +timerStruct_t dummy = {dummyHandler}; +volatile uint32_t absoluteTimeofLastTimeout = 0; +volatile uint32_t lastTimerLoad = 0; +volatile bool isRunning = false; + +bool timeout_hasPendingTimeouts(void) +{ + return (listHead == NULL); +} + +bool timeout_hasPendingCallbacks(void) +{ + return (executeQueueHead == NULL); +} + +// Disable all the timers without deleting them from any list. Timers can be +// restarted by calling startTimerAtHead +void stopTimeouts(void) +{ + RTC_DisableOVFInterrupt(); + absoluteTimeofLastTimeout = 0; + lastTimerLoad = 0; + isRunning = false; +} + +inline void setTimerDuration(uint32_t duration) +{ + lastTimerLoad = 65535 - duration; + + RTC_WriteCounter(0); + + RTC_ClearOVFInterruptFlag(); + RTC_WriteCounter(lastTimerLoad); +} + +// Convert the time provided from a "relative to now" time to a absolute time which +// means ticks since the last timeout occurred or the timer module was started +inline uint32_t makeAbsolute(uint32_t timeout) +{ + timeout += absoluteTimeofLastTimeout; + if (isRunning) { + uint32_t timerVal = RTC_ReadCounter(); + if (timerVal < lastTimerLoad) // Timer has wrapped while we were busy + { + timerVal = 65535; + } + timeout += timerVal - lastTimerLoad; + } + return timeout; +} + +uint32_t timeout_getTimeRemaining(timerStruct_t *timer) +{ + return timer->absoluteTime - makeAbsolute(0); +} + +// Adjust the time base so that we can never wrap, saving us a lot of complications +inline uint32_t rebaseList(void) +{ + timerStruct_t *basePoint = listHead; + uint32_t baseTime = makeAbsolute(0); + while(basePoint != NULL) + { + basePoint->absoluteTime -= baseTime; + basePoint = basePoint->next; + } + absoluteTimeofLastTimeout -= baseTime; + return baseTime; +} + +inline void printList(void) +{ + timerStruct_t *basePoint = listHead; + while(basePoint != NULL) + { + printf("%ld -> ", (uint32_t)basePoint->absoluteTime); + basePoint = basePoint->next; + } + printf("NULL\n"); +} + +// Returns true if the insert was at the head, false if not +bool sortedInsert(timerStruct_t *timer) +{ + uint32_t timerAbsoluteTime = timer->absoluteTime; + uint8_t atHead = 1; + timerStruct_t *insertPoint = listHead; + timerStruct_t *prevPoint = NULL; + timer->next = NULL; + + if(timerAbsoluteTime < absoluteTimeofLastTimeout) + { + timerAbsoluteTime += 65535 - rebaseList() + 1; + timer->absoluteTime = timerAbsoluteTime; + } + + while(insertPoint != NULL) + { + if(insertPoint->absoluteTime > timerAbsoluteTime) + { + break; // found the spot + } + prevPoint = insertPoint; + insertPoint = insertPoint->next; + atHead = 0; + } + + if(atHead == 1) // the front of the list. Checking the uint8_t saves 7 instructions + { + setTimerDuration(65535); + RTC_ClearOVFInterruptFlag(); + + timer->next = (listHead==&dummy)?dummy.next: listHead; + listHead = timer; + return true; + } + else // middle of the list + { + timer->next = prevPoint->next; + } + + prevPoint->next = timer; + return false; +} + +void startTimerAtHead(void) +{ + // NOTE: listHead must NOT equal NULL at this point. + + RTC_DisableOVFInterrupt(); + + if(listHead==NULL) // no timeouts left + { + stopTimeouts(); + return; + } + + uint32_t period = listHead->absoluteTime - absoluteTimeofLastTimeout; + + // Timer is too far, insert dummy and schedule timer after the dummy + if (period > 65535) + { + dummy.absoluteTime = absoluteTimeofLastTimeout + 65535; + dummy.next = listHead; + listHead = &dummy; + period = 65535; + } + + setTimerDuration(period); + + RTC_EnableOVFInterrupt(); + isRunning = true; +} + +// Cancel and remove all active timers +void timeout_flushAll(void) +{ + stopTimeouts(); + + while (listHead != NULL) + timeout_delete(listHead); + + while (executeQueueHead != NULL) + timeout_delete(executeQueueHead); + +} + + +// Deletes a timer from a list and returns true if the timer was found and +// removed from the list specified +bool timeout_deleteHelper(timerStruct_t * volatile *list, timerStruct_t *timer) +{ + bool retVal = false; + if (*list == NULL) + return retVal; + + // Guard in case we get interrupted, we cannot safely compare/search and get interrupted + RTC_DisableOVFInterrupt(); + + // Special case, the head is the one we are deleting + if (timer == *list) + { + *list = (*list)->next; // Delete the head + retVal = true; + startTimerAtHead(); // Start the new timer at the head + } else + { // More than one timer in the list, search the list. + timerStruct_t *findTimer = *list; + timerStruct_t *prevTimer = NULL; + while(findTimer != NULL) + { + if(findTimer == timer) + { + prevTimer->next = findTimer->next; + retVal = true; + break; + } + prevTimer = findTimer; + findTimer = findTimer->next; + } + RTC_EnableOVFInterrupt(); + } + + return retVal; +} + +// This will cancel/remove a running timer. If the timer is already expired it will +// also remove it from the callback queue +void timeout_delete(timerStruct_t *timer) +{ + if (!timeout_deleteHelper(&listHead, timer)) + { + timeout_deleteHelper(&executeQueueHead, timer); + } + + timer->next = NULL; +} + +// Moves the timer from the active list to the list of timers which are expired and +// needs their callbacks called in callNextCallback +inline void enqueueCallback(timerStruct_t* timer) +{ + timerStruct_t *tmp; + timer->next = NULL; + + // Special case for empty list + if (executeQueueHead == NULL) + { + executeQueueHead = timer; + return; + } + + // Find the end of the list and insert the next expired timer at the back of the queue + tmp = executeQueueHead; + while(tmp->next != NULL) + tmp = tmp->next; + + tmp->next = timer; +} + +// This function checks the list of expired timers and calls the first one in the +// list if the list is not empty. It also reschedules the timer if the callback +// returned a value greater than 0 +// It is recommended this is called from the main superloop (while(1)) in your code +// but by design this can also be called from the timer ISR. If you wish callbacks +// to happen from the ISR context you can call this as the last action in timeout_isr +// instead. +inline void timeout_callNextCallback(void) +{ + if (executeQueueHead == NULL) + return; + + bool tempIE = RTC_IsOVFInterruptEnabled(); + RTC_DisableOVFInterrupt(); + + timerStruct_t *callBackTimer = executeQueueHead; + + // Done, remove from list + executeQueueHead = executeQueueHead->next; + // Mark the timer as not in use + callBackTimer->next = NULL; + + if(tempIE) + { + RTC_EnableOVFInterrupt(); + } + + uint32_t reschedule = callBackTimer->callbackPtr(callBackTimer->payload); + + // Do we have to reschedule it? If yes then add delta to absolute for reschedule + if(reschedule) + { + timeout_create(callBackTimer, reschedule); + } +} + +void timeout_initialize(void) +{ + RTC_SetOVFIsrCallback(timeout_isr); +} + +// This function starts the timer provided with an expiry equal to "timeout". +// If the timer was already active/running it will be replaced by this and the +// old (active) timer will be removed/cancelled first +void timeout_create(timerStruct_t *timer, uint32_t timeout) +{ + // If this timer is already active, replace it + timeout_delete(timer); + + RTC_DisableOVFInterrupt(); + + timer->absoluteTime = makeAbsolute(timeout); + + // We only have to start the timer at head if the insert was at the head + if(sortedInsert(timer)) + { + startTimerAtHead(); + } else { + if (isRunning) + RTC_EnableOVFInterrupt(); + } +} + +// NOTE: assumes the callback completes before the next timer tick +void timeout_isr(void) +{ + timerStruct_t *next = listHead->next; + absoluteTimeofLastTimeout = listHead->absoluteTime; + lastTimerLoad = 0; + + if (listHead != &dummy) { + enqueueCallback(listHead); + } + + listHead = next; + + startTimerAtHead(); +} + + +// These methods are for calculating the elapsed time in stopwatch mode. +// startTimer will start a timer with (maximum range)/2. You cannot time more than +// this and the timer will stop after this time elapses +void timeout_startTimer(timerStruct_t *timer) +{ + uint32_t i = -1; + timeout_create(timer, i>>1); +} + +// This function stops the "stopwatch" and returns the elapsed time. +uint32_t timeout_stopTimer(timerStruct_t *timer) +{ + uint32_t now = makeAbsolute(0); // Do this as fast as possible for accuracy + uint32_t i = -1; + i>>=1; + + timeout_delete(timer); + + uint32_t diff = timer->absoluteTime - now; + + // This calculates the (max range)/2 minus (remaining time) which = elapsed time + return (i - diff); +} diff --git a/AVRIoT.X/mcc_generated_files/drivers/timeout.h b/AVRIoT.X/mcc_generated_files/drivers/timeout.h new file mode 100644 index 0000000..7fcc379 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/drivers/timeout.h @@ -0,0 +1,66 @@ +/* + (c) 2016 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#ifndef __TIMEOUTDRIVER_H +#define __TIMEOUTDRIVER_H + +#include +#include + +/* +* Please note that the timer tick is different from the timer period. +* A tick occurs each time the peripheral timer increases its count +* The timer period is when the number of ticks reaches its specified maximum and +* the timer overflow interrupt occurs. +* This library sets the timer period internally as needed +*/ +#define INLINE + +// mSec to Ticks and Ticks to mSec conversion. These values are based on the minimum period of the TMRx peripheral +// Note that these values have been rounded to the nearest power of two to make the calculations faster at runtime +#define timeout_mSecToTicks(a) ( ((uint32_t)(a)) * 32UL ) +#define timeout_ticksToMsec(a) ( ((uint32_t)(a)) / 32UL ) + +typedef uint32_t (*timercallback_ptr_t)(void *payload); + +typedef struct tmrStruct { + timercallback_ptr_t callbackPtr; + void* payload; + struct tmrStruct* next; + uint32_t absoluteTime; +} timerStruct_t; + +void timeout_initialize(void); +void timeout_create(timerStruct_t *timer, uint32_t timeout); +void timeout_delete(timerStruct_t *timer); +void timeout_flushAll(void); +bool timeout_hasPendingTimeouts(void); +bool timeout_hasPendingCallbacks(void); +INLINE void timeout_callNextCallback(void); +void timeout_isr(void); + +void timeout_startTimer(timerStruct_t *timer); +uint32_t timeout_stopTimer(timerStruct_t *timer); + +uint32_t timeout_getTimeRemaining(timerStruct_t *timer); + +#endif // __TIMEOUTDRIVER_H diff --git a/AVRIoT.X/mcc_generated_files/drivers/uart.c b/AVRIoT.X/mcc_generated_files/drivers/uart.c new file mode 100644 index 0000000..c3bf0b6 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/drivers/uart.c @@ -0,0 +1,36 @@ +/* + (c) 2016 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +/** + Section: Included Files + */ + +#include "uart.h" + + +const uart_functions_t uart[] = { + {USART2_Read, USART2_Write, USART2_IsTxReady, USART2_IsRxReady, USART2_SetTXISRCb, USART2_DefaultRxIsrCb, USART2_SetRXISRCb, USART2_IsTxDone, USART2_DefaultTxIsrCb, USART2_Initialize } +}; + +/** + End of File + */ diff --git a/AVRIoT.X/mcc_generated_files/drivers/uart.h b/AVRIoT.X/mcc_generated_files/drivers/uart.h new file mode 100644 index 0000000..ac6b2e5 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/drivers/uart.h @@ -0,0 +1,45 @@ +/* + (c) 2016 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#ifndef _UART_H +#define _UART_H + + +#include +#include +#include "../include/usart2.h" + +/** +\typedef This typdef is a list of all the configuration names added/selected by the user. +*/ +typedef enum { + CLI /** +#include "port.h" + +//get/set PA2 aliases +#define PA2_SetHigh() do { PORTA_OUTSET = 0x4; } while(0) +#define PA2_SetLow() do { PORTA_OUTCLR = 0x4; } while(0) +#define PA2_Toggle() do { PORTA_OUTTGL = 0x4; } while(0) +#define PA2_GetValue() (VPORTA.IN & (0x1 << 2)) +#define PA2_SetDigitalInput() do { PORTA_DIRCLR = 0x4; } while(0) +#define PA2_SetDigitalOutput() do { PORTA_DIRSET = 0x4; } while(0) +#define PA2_SetPullUp() do { PORTA_PIN2CTRL |= PORT_PULLUPEN_bm; } while(0) +#define PA2_ResetPullUp() do { PORTA_PIN2CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define PA2_SetInverted() do { PORTA_PIN2CTRL |= PORT_INVEN_bm; } while(0) +#define PA2_ResetInverted() do { PORTA_PIN2CTRL &= ~PORT_INVEN_bm; } while(0) +#define PA2_DisableInterruptOnChange() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define PA2_EnableInterruptForBothEdges() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define PA2_EnableInterruptForRisingEdge() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define PA2_EnableInterruptForFallingEdge() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define PA2_DisableDigitalInputBuffer() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define PA2_EnableInterruptForLowLevelSensing() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set PD5 aliases +#define PD5_SetHigh() do { PORTD_OUTSET = 0x20; } while(0) +#define PD5_SetLow() do { PORTD_OUTCLR = 0x20; } while(0) +#define PD5_Toggle() do { PORTD_OUTTGL = 0x20; } while(0) +#define PD5_GetValue() (VPORTD.IN & (0x1 << 5)) +#define PD5_SetDigitalInput() do { PORTD_DIRCLR = 0x20; } while(0) +#define PD5_SetDigitalOutput() do { PORTD_DIRSET = 0x20; } while(0) +#define PD5_SetPullUp() do { PORTD_PIN5CTRL |= PORT_PULLUPEN_bm; } while(0) +#define PD5_ResetPullUp() do { PORTD_PIN5CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define PD5_SetInverted() do { PORTD_PIN5CTRL |= PORT_INVEN_bm; } while(0) +#define PD5_ResetInverted() do { PORTD_PIN5CTRL &= ~PORT_INVEN_bm; } while(0) +#define PD5_DisableInterruptOnChange() do { PORTD.PIN5CTRL = (PORTD.PIN5CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define PD5_EnableInterruptForBothEdges() do { PORTD.PIN5CTRL = (PORTD.PIN5CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define PD5_EnableInterruptForRisingEdge() do { PORTD.PIN5CTRL = (PORTD.PIN5CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define PD5_EnableInterruptForFallingEdge() do { PORTD.PIN5CTRL = (PORTD.PIN5CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define PD5_DisableDigitalInputBuffer() do { PORTD.PIN5CTRL = (PORTD.PIN5CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define PD5_EnableInterruptForLowLevelSensing() do { PORTD.PIN5CTRL = (PORTD.PIN5CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set SW0 aliases +#define SW0_SetHigh() do { PORTF_OUTSET = 0x40; } while(0) +#define SW0_SetLow() do { PORTF_OUTCLR = 0x40; } while(0) +#define SW0_Toggle() do { PORTF_OUTTGL = 0x40; } while(0) +#define SW0_GetValue() (VPORTF.IN & (0x1 << 6)) +#define SW0_SetDigitalInput() do { PORTF_DIRCLR = 0x40; } while(0) +#define SW0_SetDigitalOutput() do { PORTF_DIRSET = 0x40; } while(0) +#define SW0_SetPullUp() do { PORTF_PIN6CTRL |= PORT_PULLUPEN_bm; } while(0) +#define SW0_ResetPullUp() do { PORTF_PIN6CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define SW0_SetInverted() do { PORTF_PIN6CTRL |= PORT_INVEN_bm; } while(0) +#define SW0_ResetInverted() do { PORTF_PIN6CTRL &= ~PORT_INVEN_bm; } while(0) +#define SW0_DisableInterruptOnChange() do { PORTF.PIN6CTRL = (PORTF.PIN6CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define SW0_EnableInterruptForBothEdges() do { PORTF.PIN6CTRL = (PORTF.PIN6CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define SW0_EnableInterruptForRisingEdge() do { PORTF.PIN6CTRL = (PORTF.PIN6CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define SW0_EnableInterruptForFallingEdge() do { PORTF.PIN6CTRL = (PORTF.PIN6CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define SW0_DisableDigitalInputBuffer() do { PORTF.PIN6CTRL = (PORTF.PIN6CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define SW0_EnableInterruptForLowLevelSensing() do { PORTF.PIN6CTRL = (PORTF.PIN6CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set RST aliases +#define RST_SetHigh() do { PORTA_OUTSET = 0x2; } while(0) +#define RST_SetLow() do { PORTA_OUTCLR = 0x2; } while(0) +#define RST_Toggle() do { PORTA_OUTTGL = 0x2; } while(0) +#define RST_GetValue() (VPORTA.IN & (0x1 << 1)) +#define RST_SetDigitalInput() do { PORTA_DIRCLR = 0x2; } while(0) +#define RST_SetDigitalOutput() do { PORTA_DIRSET = 0x2; } while(0) +#define RST_SetPullUp() do { PORTA_PIN1CTRL |= PORT_PULLUPEN_bm; } while(0) +#define RST_ResetPullUp() do { PORTA_PIN1CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define RST_SetInverted() do { PORTA_PIN1CTRL |= PORT_INVEN_bm; } while(0) +#define RST_ResetInverted() do { PORTA_PIN1CTRL &= ~PORT_INVEN_bm; } while(0) +#define RST_DisableInterruptOnChange() do { PORTA.PIN1CTRL = (PORTA.PIN1CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define RST_EnableInterruptForBothEdges() do { PORTA.PIN1CTRL = (PORTA.PIN1CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define RST_EnableInterruptForRisingEdge() do { PORTA.PIN1CTRL = (PORTA.PIN1CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define RST_EnableInterruptForFallingEdge() do { PORTA.PIN1CTRL = (PORTA.PIN1CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define RST_DisableDigitalInputBuffer() do { PORTA.PIN1CTRL = (PORTA.PIN1CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define RST_EnableInterruptForLowLevelSensing() do { PORTA.PIN1CTRL = (PORTA.PIN1CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set PA4 aliases +#define PA4_SetHigh() do { PORTA_OUTSET = 0x10; } while(0) +#define PA4_SetLow() do { PORTA_OUTCLR = 0x10; } while(0) +#define PA4_Toggle() do { PORTA_OUTTGL = 0x10; } while(0) +#define PA4_GetValue() (VPORTA.IN & (0x1 << 4)) +#define PA4_SetDigitalInput() do { PORTA_DIRCLR = 0x10; } while(0) +#define PA4_SetDigitalOutput() do { PORTA_DIRSET = 0x10; } while(0) +#define PA4_SetPullUp() do { PORTA_PIN4CTRL |= PORT_PULLUPEN_bm; } while(0) +#define PA4_ResetPullUp() do { PORTA_PIN4CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define PA4_SetInverted() do { PORTA_PIN4CTRL |= PORT_INVEN_bm; } while(0) +#define PA4_ResetInverted() do { PORTA_PIN4CTRL &= ~PORT_INVEN_bm; } while(0) +#define PA4_DisableInterruptOnChange() do { PORTA.PIN4CTRL = (PORTA.PIN4CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define PA4_EnableInterruptForBothEdges() do { PORTA.PIN4CTRL = (PORTA.PIN4CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define PA4_EnableInterruptForRisingEdge() do { PORTA.PIN4CTRL = (PORTA.PIN4CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define PA4_EnableInterruptForFallingEdge() do { PORTA.PIN4CTRL = (PORTA.PIN4CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define PA4_DisableDigitalInputBuffer() do { PORTA.PIN4CTRL = (PORTA.PIN4CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define PA4_EnableInterruptForLowLevelSensing() do { PORTA.PIN4CTRL = (PORTA.PIN4CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set PA3 aliases +#define PA3_SetHigh() do { PORTA_OUTSET = 0x8; } while(0) +#define PA3_SetLow() do { PORTA_OUTCLR = 0x8; } while(0) +#define PA3_Toggle() do { PORTA_OUTTGL = 0x8; } while(0) +#define PA3_GetValue() (VPORTA.IN & (0x1 << 3)) +#define PA3_SetDigitalInput() do { PORTA_DIRCLR = 0x8; } while(0) +#define PA3_SetDigitalOutput() do { PORTA_DIRSET = 0x8; } while(0) +#define PA3_SetPullUp() do { PORTA_PIN3CTRL |= PORT_PULLUPEN_bm; } while(0) +#define PA3_ResetPullUp() do { PORTA_PIN3CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define PA3_SetInverted() do { PORTA_PIN3CTRL |= PORT_INVEN_bm; } while(0) +#define PA3_ResetInverted() do { PORTA_PIN3CTRL &= ~PORT_INVEN_bm; } while(0) +#define PA3_DisableInterruptOnChange() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define PA3_EnableInterruptForBothEdges() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define PA3_EnableInterruptForRisingEdge() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define PA3_EnableInterruptForFallingEdge() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define PA3_DisableDigitalInputBuffer() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define PA3_EnableInterruptForLowLevelSensing() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set PA6 aliases +#define PA6_SetHigh() do { PORTA_OUTSET = 0x40; } while(0) +#define PA6_SetLow() do { PORTA_OUTCLR = 0x40; } while(0) +#define PA6_Toggle() do { PORTA_OUTTGL = 0x40; } while(0) +#define PA6_GetValue() (VPORTA.IN & (0x1 << 6)) +#define PA6_SetDigitalInput() do { PORTA_DIRCLR = 0x40; } while(0) +#define PA6_SetDigitalOutput() do { PORTA_DIRSET = 0x40; } while(0) +#define PA6_SetPullUp() do { PORTA_PIN6CTRL |= PORT_PULLUPEN_bm; } while(0) +#define PA6_ResetPullUp() do { PORTA_PIN6CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define PA6_SetInverted() do { PORTA_PIN6CTRL |= PORT_INVEN_bm; } while(0) +#define PA6_ResetInverted() do { PORTA_PIN6CTRL &= ~PORT_INVEN_bm; } while(0) +#define PA6_DisableInterruptOnChange() do { PORTA.PIN6CTRL = (PORTA.PIN6CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define PA6_EnableInterruptForBothEdges() do { PORTA.PIN6CTRL = (PORTA.PIN6CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define PA6_EnableInterruptForRisingEdge() do { PORTA.PIN6CTRL = (PORTA.PIN6CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define PA6_EnableInterruptForFallingEdge() do { PORTA.PIN6CTRL = (PORTA.PIN6CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define PA6_DisableDigitalInputBuffer() do { PORTA.PIN6CTRL = (PORTA.PIN6CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define PA6_EnableInterruptForLowLevelSensing() do { PORTA.PIN6CTRL = (PORTA.PIN6CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set PA5 aliases +#define PA5_SetHigh() do { PORTA_OUTSET = 0x20; } while(0) +#define PA5_SetLow() do { PORTA_OUTCLR = 0x20; } while(0) +#define PA5_Toggle() do { PORTA_OUTTGL = 0x20; } while(0) +#define PA5_GetValue() (VPORTA.IN & (0x1 << 5)) +#define PA5_SetDigitalInput() do { PORTA_DIRCLR = 0x20; } while(0) +#define PA5_SetDigitalOutput() do { PORTA_DIRSET = 0x20; } while(0) +#define PA5_SetPullUp() do { PORTA_PIN5CTRL |= PORT_PULLUPEN_bm; } while(0) +#define PA5_ResetPullUp() do { PORTA_PIN5CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define PA5_SetInverted() do { PORTA_PIN5CTRL |= PORT_INVEN_bm; } while(0) +#define PA5_ResetInverted() do { PORTA_PIN5CTRL &= ~PORT_INVEN_bm; } while(0) +#define PA5_DisableInterruptOnChange() do { PORTA.PIN5CTRL = (PORTA.PIN5CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define PA5_EnableInterruptForBothEdges() do { PORTA.PIN5CTRL = (PORTA.PIN5CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define PA5_EnableInterruptForRisingEdge() do { PORTA.PIN5CTRL = (PORTA.PIN5CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define PA5_EnableInterruptForFallingEdge() do { PORTA.PIN5CTRL = (PORTA.PIN5CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define PA5_DisableDigitalInputBuffer() do { PORTA.PIN5CTRL = (PORTA.PIN5CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define PA5_EnableInterruptForLowLevelSensing() do { PORTA.PIN5CTRL = (PORTA.PIN5CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set nCS aliases +#define nCS_SetHigh() do { PORTA_OUTSET = 0x80; } while(0) +#define nCS_SetLow() do { PORTA_OUTCLR = 0x80; } while(0) +#define nCS_Toggle() do { PORTA_OUTTGL = 0x80; } while(0) +#define nCS_GetValue() (VPORTA.IN & (0x1 << 7)) +#define nCS_SetDigitalInput() do { PORTA_DIRCLR = 0x80; } while(0) +#define nCS_SetDigitalOutput() do { PORTA_DIRSET = 0x80; } while(0) +#define nCS_SetPullUp() do { PORTA_PIN7CTRL |= PORT_PULLUPEN_bm; } while(0) +#define nCS_ResetPullUp() do { PORTA_PIN7CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define nCS_SetInverted() do { PORTA_PIN7CTRL |= PORT_INVEN_bm; } while(0) +#define nCS_ResetInverted() do { PORTA_PIN7CTRL &= ~PORT_INVEN_bm; } while(0) +#define nCS_DisableInterruptOnChange() do { PORTA.PIN7CTRL = (PORTA.PIN7CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define nCS_EnableInterruptForBothEdges() do { PORTA.PIN7CTRL = (PORTA.PIN7CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define nCS_EnableInterruptForRisingEdge() do { PORTA.PIN7CTRL = (PORTA.PIN7CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define nCS_EnableInterruptForFallingEdge() do { PORTA.PIN7CTRL = (PORTA.PIN7CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define nCS_DisableDigitalInputBuffer() do { PORTA.PIN7CTRL = (PORTA.PIN7CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define nCS_EnableInterruptForLowLevelSensing() do { PORTA.PIN7CTRL = (PORTA.PIN7CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set PF1 aliases +#define PF1_SetHigh() do { PORTF_OUTSET = 0x2; } while(0) +#define PF1_SetLow() do { PORTF_OUTCLR = 0x2; } while(0) +#define PF1_Toggle() do { PORTF_OUTTGL = 0x2; } while(0) +#define PF1_GetValue() (VPORTF.IN & (0x1 << 1)) +#define PF1_SetDigitalInput() do { PORTF_DIRCLR = 0x2; } while(0) +#define PF1_SetDigitalOutput() do { PORTF_DIRSET = 0x2; } while(0) +#define PF1_SetPullUp() do { PORTF_PIN1CTRL |= PORT_PULLUPEN_bm; } while(0) +#define PF1_ResetPullUp() do { PORTF_PIN1CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define PF1_SetInverted() do { PORTF_PIN1CTRL |= PORT_INVEN_bm; } while(0) +#define PF1_ResetInverted() do { PORTF_PIN1CTRL &= ~PORT_INVEN_bm; } while(0) +#define PF1_DisableInterruptOnChange() do { PORTF.PIN1CTRL = (PORTF.PIN1CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define PF1_EnableInterruptForBothEdges() do { PORTF.PIN1CTRL = (PORTF.PIN1CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define PF1_EnableInterruptForRisingEdge() do { PORTF.PIN1CTRL = (PORTF.PIN1CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define PF1_EnableInterruptForFallingEdge() do { PORTF.PIN1CTRL = (PORTF.PIN1CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define PF1_DisableDigitalInputBuffer() do { PORTF.PIN1CTRL = (PORTF.PIN1CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define PF1_EnableInterruptForLowLevelSensing() do { PORTF.PIN1CTRL = (PORTF.PIN1CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set PF0 aliases +#define PF0_SetHigh() do { PORTF_OUTSET = 0x1; } while(0) +#define PF0_SetLow() do { PORTF_OUTCLR = 0x1; } while(0) +#define PF0_Toggle() do { PORTF_OUTTGL = 0x1; } while(0) +#define PF0_GetValue() (VPORTF.IN & (0x1 << 0)) +#define PF0_SetDigitalInput() do { PORTF_DIRCLR = 0x1; } while(0) +#define PF0_SetDigitalOutput() do { PORTF_DIRSET = 0x1; } while(0) +#define PF0_SetPullUp() do { PORTF_PIN0CTRL |= PORT_PULLUPEN_bm; } while(0) +#define PF0_ResetPullUp() do { PORTF_PIN0CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define PF0_SetInverted() do { PORTF_PIN0CTRL |= PORT_INVEN_bm; } while(0) +#define PF0_ResetInverted() do { PORTF_PIN0CTRL &= ~PORT_INVEN_bm; } while(0) +#define PF0_DisableInterruptOnChange() do { PORTF.PIN0CTRL = (PORTF.PIN0CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define PF0_EnableInterruptForBothEdges() do { PORTF.PIN0CTRL = (PORTF.PIN0CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define PF0_EnableInterruptForRisingEdge() do { PORTF.PIN0CTRL = (PORTF.PIN0CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define PF0_EnableInterruptForFallingEdge() do { PORTF.PIN0CTRL = (PORTF.PIN0CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define PF0_DisableDigitalInputBuffer() do { PORTF.PIN0CTRL = (PORTF.PIN0CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define PF0_EnableInterruptForLowLevelSensing() do { PORTF.PIN0CTRL = (PORTF.PIN0CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set LED_YELLOW aliases +#define LED_YELLOW_SetHigh() do { PORTD_OUTSET = 0x2; } while(0) +#define LED_YELLOW_SetLow() do { PORTD_OUTCLR = 0x2; } while(0) +#define LED_YELLOW_Toggle() do { PORTD_OUTTGL = 0x2; } while(0) +#define LED_YELLOW_GetValue() (VPORTD.IN & (0x1 << 1)) +#define LED_YELLOW_SetDigitalInput() do { PORTD_DIRCLR = 0x2; } while(0) +#define LED_YELLOW_SetDigitalOutput() do { PORTD_DIRSET = 0x2; } while(0) +#define LED_YELLOW_SetPullUp() do { PORTD_PIN1CTRL |= PORT_PULLUPEN_bm; } while(0) +#define LED_YELLOW_ResetPullUp() do { PORTD_PIN1CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define LED_YELLOW_SetInverted() do { PORTD_PIN1CTRL |= PORT_INVEN_bm; } while(0) +#define LED_YELLOW_ResetInverted() do { PORTD_PIN1CTRL &= ~PORT_INVEN_bm; } while(0) +#define LED_YELLOW_DisableInterruptOnChange() do { PORTD.PIN1CTRL = (PORTD.PIN1CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define LED_YELLOW_EnableInterruptForBothEdges() do { PORTD.PIN1CTRL = (PORTD.PIN1CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define LED_YELLOW_EnableInterruptForRisingEdge() do { PORTD.PIN1CTRL = (PORTD.PIN1CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define LED_YELLOW_EnableInterruptForFallingEdge() do { PORTD.PIN1CTRL = (PORTD.PIN1CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define LED_YELLOW_DisableDigitalInputBuffer() do { PORTD.PIN1CTRL = (PORTD.PIN1CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define LED_YELLOW_EnableInterruptForLowLevelSensing() do { PORTD.PIN1CTRL = (PORTD.PIN1CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set CE aliases +#define CE_SetHigh() do { PORTF_OUTSET = 0x8; } while(0) +#define CE_SetLow() do { PORTF_OUTCLR = 0x8; } while(0) +#define CE_Toggle() do { PORTF_OUTTGL = 0x8; } while(0) +#define CE_GetValue() (VPORTF.IN & (0x1 << 3)) +#define CE_SetDigitalInput() do { PORTF_DIRCLR = 0x8; } while(0) +#define CE_SetDigitalOutput() do { PORTF_DIRSET = 0x8; } while(0) +#define CE_SetPullUp() do { PORTF_PIN3CTRL |= PORT_PULLUPEN_bm; } while(0) +#define CE_ResetPullUp() do { PORTF_PIN3CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define CE_SetInverted() do { PORTF_PIN3CTRL |= PORT_INVEN_bm; } while(0) +#define CE_ResetInverted() do { PORTF_PIN3CTRL &= ~PORT_INVEN_bm; } while(0) +#define CE_DisableInterruptOnChange() do { PORTF.PIN3CTRL = (PORTF.PIN3CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define CE_EnableInterruptForBothEdges() do { PORTF.PIN3CTRL = (PORTF.PIN3CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define CE_EnableInterruptForRisingEdge() do { PORTF.PIN3CTRL = (PORTF.PIN3CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define CE_EnableInterruptForFallingEdge() do { PORTF.PIN3CTRL = (PORTF.PIN3CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define CE_DisableDigitalInputBuffer() do { PORTF.PIN3CTRL = (PORTF.PIN3CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define CE_EnableInterruptForLowLevelSensing() do { PORTF.PIN3CTRL = (PORTF.PIN3CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set LED_RED aliases +#define LED_RED_SetHigh() do { PORTD_OUTSET = 0x1; } while(0) +#define LED_RED_SetLow() do { PORTD_OUTCLR = 0x1; } while(0) +#define LED_RED_Toggle() do { PORTD_OUTTGL = 0x1; } while(0) +#define LED_RED_GetValue() (VPORTD.IN & (0x1 << 0)) +#define LED_RED_SetDigitalInput() do { PORTD_DIRCLR = 0x1; } while(0) +#define LED_RED_SetDigitalOutput() do { PORTD_DIRSET = 0x1; } while(0) +#define LED_RED_SetPullUp() do { PORTD_PIN0CTRL |= PORT_PULLUPEN_bm; } while(0) +#define LED_RED_ResetPullUp() do { PORTD_PIN0CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define LED_RED_SetInverted() do { PORTD_PIN0CTRL |= PORT_INVEN_bm; } while(0) +#define LED_RED_ResetInverted() do { PORTD_PIN0CTRL &= ~PORT_INVEN_bm; } while(0) +#define LED_RED_DisableInterruptOnChange() do { PORTD.PIN0CTRL = (PORTD.PIN0CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define LED_RED_EnableInterruptForBothEdges() do { PORTD.PIN0CTRL = (PORTD.PIN0CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define LED_RED_EnableInterruptForRisingEdge() do { PORTD.PIN0CTRL = (PORTD.PIN0CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define LED_RED_EnableInterruptForFallingEdge() do { PORTD.PIN0CTRL = (PORTD.PIN0CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define LED_RED_DisableDigitalInputBuffer() do { PORTD.PIN0CTRL = (PORTD.PIN0CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define LED_RED_EnableInterruptForLowLevelSensing() do { PORTD.PIN0CTRL = (PORTD.PIN0CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set INT aliases +#define INT_SetHigh() do { PORTF_OUTSET = 0x4; } while(0) +#define INT_SetLow() do { PORTF_OUTCLR = 0x4; } while(0) +#define INT_Toggle() do { PORTF_OUTTGL = 0x4; } while(0) +#define INT_GetValue() (VPORTF.IN & (0x1 << 2)) +#define INT_SetDigitalInput() do { PORTF_DIRCLR = 0x4; } while(0) +#define INT_SetDigitalOutput() do { PORTF_DIRSET = 0x4; } while(0) +#define INT_SetPullUp() do { PORTF_PIN2CTRL |= PORT_PULLUPEN_bm; } while(0) +#define INT_ResetPullUp() do { PORTF_PIN2CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define INT_SetInverted() do { PORTF_PIN2CTRL |= PORT_INVEN_bm; } while(0) +#define INT_ResetInverted() do { PORTF_PIN2CTRL &= ~PORT_INVEN_bm; } while(0) +#define INT_DisableInterruptOnChange() do { PORTF.PIN2CTRL = (PORTF.PIN2CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define INT_EnableInterruptForBothEdges() do { PORTF.PIN2CTRL = (PORTF.PIN2CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define INT_EnableInterruptForRisingEdge() do { PORTF.PIN2CTRL = (PORTF.PIN2CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define INT_EnableInterruptForFallingEdge() do { PORTF.PIN2CTRL = (PORTF.PIN2CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define INT_DisableDigitalInputBuffer() do { PORTF.PIN2CTRL = (PORTF.PIN2CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define INT_EnableInterruptForLowLevelSensing() do { PORTF.PIN2CTRL = (PORTF.PIN2CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set SW1 aliases +#define SW1_SetHigh() do { PORTF_OUTSET = 0x20; } while(0) +#define SW1_SetLow() do { PORTF_OUTCLR = 0x20; } while(0) +#define SW1_Toggle() do { PORTF_OUTTGL = 0x20; } while(0) +#define SW1_GetValue() (VPORTF.IN & (0x1 << 5)) +#define SW1_SetDigitalInput() do { PORTF_DIRCLR = 0x20; } while(0) +#define SW1_SetDigitalOutput() do { PORTF_DIRSET = 0x20; } while(0) +#define SW1_SetPullUp() do { PORTF_PIN5CTRL |= PORT_PULLUPEN_bm; } while(0) +#define SW1_ResetPullUp() do { PORTF_PIN5CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define SW1_SetInverted() do { PORTF_PIN5CTRL |= PORT_INVEN_bm; } while(0) +#define SW1_ResetInverted() do { PORTF_PIN5CTRL &= ~PORT_INVEN_bm; } while(0) +#define SW1_DisableInterruptOnChange() do { PORTF.PIN5CTRL = (PORTF.PIN5CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define SW1_EnableInterruptForBothEdges() do { PORTF.PIN5CTRL = (PORTF.PIN5CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define SW1_EnableInterruptForRisingEdge() do { PORTF.PIN5CTRL = (PORTF.PIN5CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define SW1_EnableInterruptForFallingEdge() do { PORTF.PIN5CTRL = (PORTF.PIN5CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define SW1_DisableDigitalInputBuffer() do { PORTF.PIN5CTRL = (PORTF.PIN5CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define SW1_EnableInterruptForLowLevelSensing() do { PORTF.PIN5CTRL = (PORTF.PIN5CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set LED_BLUE aliases +#define LED_BLUE_SetHigh() do { PORTD_OUTSET = 0x8; } while(0) +#define LED_BLUE_SetLow() do { PORTD_OUTCLR = 0x8; } while(0) +#define LED_BLUE_Toggle() do { PORTD_OUTTGL = 0x8; } while(0) +#define LED_BLUE_GetValue() (VPORTD.IN & (0x1 << 3)) +#define LED_BLUE_SetDigitalInput() do { PORTD_DIRCLR = 0x8; } while(0) +#define LED_BLUE_SetDigitalOutput() do { PORTD_DIRSET = 0x8; } while(0) +#define LED_BLUE_SetPullUp() do { PORTD_PIN3CTRL |= PORT_PULLUPEN_bm; } while(0) +#define LED_BLUE_ResetPullUp() do { PORTD_PIN3CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define LED_BLUE_SetInverted() do { PORTD_PIN3CTRL |= PORT_INVEN_bm; } while(0) +#define LED_BLUE_ResetInverted() do { PORTD_PIN3CTRL &= ~PORT_INVEN_bm; } while(0) +#define LED_BLUE_DisableInterruptOnChange() do { PORTD.PIN3CTRL = (PORTD.PIN3CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define LED_BLUE_EnableInterruptForBothEdges() do { PORTD.PIN3CTRL = (PORTD.PIN3CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define LED_BLUE_EnableInterruptForRisingEdge() do { PORTD.PIN3CTRL = (PORTD.PIN3CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define LED_BLUE_EnableInterruptForFallingEdge() do { PORTD.PIN3CTRL = (PORTD.PIN3CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define LED_BLUE_DisableDigitalInputBuffer() do { PORTD.PIN3CTRL = (PORTD.PIN3CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define LED_BLUE_EnableInterruptForLowLevelSensing() do { PORTD.PIN3CTRL = (PORTD.PIN3CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set LED_GREEN aliases +#define LED_GREEN_SetHigh() do { PORTD_OUTSET = 0x4; } while(0) +#define LED_GREEN_SetLow() do { PORTD_OUTCLR = 0x4; } while(0) +#define LED_GREEN_Toggle() do { PORTD_OUTTGL = 0x4; } while(0) +#define LED_GREEN_GetValue() (VPORTD.IN & (0x1 << 2)) +#define LED_GREEN_SetDigitalInput() do { PORTD_DIRCLR = 0x4; } while(0) +#define LED_GREEN_SetDigitalOutput() do { PORTD_DIRSET = 0x4; } while(0) +#define LED_GREEN_SetPullUp() do { PORTD_PIN2CTRL |= PORT_PULLUPEN_bm; } while(0) +#define LED_GREEN_ResetPullUp() do { PORTD_PIN2CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define LED_GREEN_SetInverted() do { PORTD_PIN2CTRL |= PORT_INVEN_bm; } while(0) +#define LED_GREEN_ResetInverted() do { PORTD_PIN2CTRL &= ~PORT_INVEN_bm; } while(0) +#define LED_GREEN_DisableInterruptOnChange() do { PORTD.PIN2CTRL = (PORTD.PIN2CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define LED_GREEN_EnableInterruptForBothEdges() do { PORTD.PIN2CTRL = (PORTD.PIN2CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define LED_GREEN_EnableInterruptForRisingEdge() do { PORTD.PIN2CTRL = (PORTD.PIN2CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define LED_GREEN_EnableInterruptForFallingEdge() do { PORTD.PIN2CTRL = (PORTD.PIN2CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define LED_GREEN_DisableDigitalInputBuffer() do { PORTD.PIN2CTRL = (PORTD.PIN2CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define LED_GREEN_EnableInterruptForLowLevelSensing() do { PORTD.PIN2CTRL = (PORTD.PIN2CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +//get/set WAKE aliases +#define WAKE_SetHigh() do { PORTF_OUTSET = 0x10; } while(0) +#define WAKE_SetLow() do { PORTF_OUTCLR = 0x10; } while(0) +#define WAKE_Toggle() do { PORTF_OUTTGL = 0x10; } while(0) +#define WAKE_GetValue() (VPORTF.IN & (0x1 << 4)) +#define WAKE_SetDigitalInput() do { PORTF_DIRCLR = 0x10; } while(0) +#define WAKE_SetDigitalOutput() do { PORTF_DIRSET = 0x10; } while(0) +#define WAKE_SetPullUp() do { PORTF_PIN4CTRL |= PORT_PULLUPEN_bm; } while(0) +#define WAKE_ResetPullUp() do { PORTF_PIN4CTRL &= ~PORT_PULLUPEN_bm; } while(0) +#define WAKE_SetInverted() do { PORTF_PIN4CTRL |= PORT_INVEN_bm; } while(0) +#define WAKE_ResetInverted() do { PORTF_PIN4CTRL &= ~PORT_INVEN_bm; } while(0) +#define WAKE_DisableInterruptOnChange() do { PORTF.PIN4CTRL = (PORTF.PIN4CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0) +#define WAKE_EnableInterruptForBothEdges() do { PORTF.PIN4CTRL = (PORTF.PIN4CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0) +#define WAKE_EnableInterruptForRisingEdge() do { PORTF.PIN4CTRL = (PORTF.PIN4CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0) +#define WAKE_EnableInterruptForFallingEdge() do { PORTF.PIN4CTRL = (PORTF.PIN4CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0) +#define WAKE_DisableDigitalInputBuffer() do { PORTF.PIN4CTRL = (PORTF.PIN4CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0) +#define WAKE_EnableInterruptForLowLevelSensing() do { PORTF.PIN4CTRL = (PORTF.PIN4CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0) + +void PIN_MANAGER_Initialize(); +void PORTA_PA2_DefaultInterruptHandler(void); +void PORTA_PA2_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTD_PD5_DefaultInterruptHandler(void); +void PORTD_PD5_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTF_SW0_DefaultInterruptHandler(void); +void PORTF_SW0_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTA_RST_DefaultInterruptHandler(void); +void PORTA_RST_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTA_PA4_DefaultInterruptHandler(void); +void PORTA_PA4_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTA_PA3_DefaultInterruptHandler(void); +void PORTA_PA3_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTA_PA6_DefaultInterruptHandler(void); +void PORTA_PA6_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTA_PA5_DefaultInterruptHandler(void); +void PORTA_PA5_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTA_nCS_DefaultInterruptHandler(void); +void PORTA_nCS_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTF_PF1_DefaultInterruptHandler(void); +void PORTF_PF1_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTF_PF0_DefaultInterruptHandler(void); +void PORTF_PF0_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTD_LED_YELLOW_DefaultInterruptHandler(void); +void PORTD_LED_YELLOW_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTF_CE_DefaultInterruptHandler(void); +void PORTF_CE_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTD_LED_RED_DefaultInterruptHandler(void); +void PORTD_LED_RED_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTF_INT_DefaultInterruptHandler(void); +void PORTF_INT_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTF_SW1_DefaultInterruptHandler(void); +void PORTF_SW1_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTD_LED_BLUE_DefaultInterruptHandler(void); +void PORTD_LED_BLUE_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTD_LED_GREEN_DefaultInterruptHandler(void); +void PORTD_LED_GREEN_SetInterruptHandler(void (* interruptHandler)(void)) ; +void PORTF_WAKE_DefaultInterruptHandler(void); +void PORTF_WAKE_SetInterruptHandler(void (* interruptHandler)(void)) ; +#endif /* PINS_H_INCLUDED */ diff --git a/AVRIoT.X/mcc_generated_files/include/port.h b/AVRIoT.X/mcc_generated_files/include/port.h new file mode 100644 index 0000000..dccb4ba --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/include/port.h @@ -0,0 +1,1373 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef PORT_INCLUDED +#define PORT_INCLUDED + +#ifdef __cplusplus +extern "C" { +#endif + +#include "../utils/compiler.h" + +enum port_pull_mode { + PORT_PULL_OFF, + PORT_PULL_UP, +}; + +enum port_dir { + PORT_DIR_IN, + PORT_DIR_OUT, + PORT_DIR_OFF, +}; +/** + * \brief Set port pin pull mode + * + * Configure pin to pull up, down or disable pull mode, supported pull modes are defined by device used + * + * \param[in] pin The pin number within port + * \param[in] pull_mode Pin pull mode + */ +static inline void PORTE_set_pin_pull_mode(const uint8_t pin, const enum port_pull_mode pull_mode) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTE + 0x10 + pin); + + if (pull_mode == PORT_PULL_UP) { + *port_pin_ctrl |= PORT_PULLUPEN_bm; + } else if (pull_mode == PORT_PULL_OFF) { + *port_pin_ctrl &= ~PORT_PULLUPEN_bm; + } +} + +/** + * \brief Set port pin inverted mode + * + * Configure pin invert I/O or not + * + * \param[in] pin The pin number within port + * \param[in] inverted Pin inverted mode + */ +static inline void PORTE_pin_set_inverted(const uint8_t pin, const bool inverted) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTE + 0x10 + pin); + + if (inverted) { + *port_pin_ctrl |= PORT_INVEN_bm; + } else { + *port_pin_ctrl &= ~PORT_INVEN_bm; + } +} + +/** + * \brief Set port pin input/sense configuration + * + * Enable/disable digital input buffer and pin change interrupt, + * select pin interrupt edge/level sensing mode + * + * \param[in] pin pin number within port + * \param[in] isc PORT_ISC_INTDISABLE_gc = Interrupt disabled but input buffer enabled + * PORT_ISC_BOTHEDGES_gc = Sense Both Edges + * PORT_ISC_RISING_gc = Sense Rising Edge + * PORT_ISC_FALLING_gc = Sense Falling Edge + * PORT_ISC_INPUT_DISABLE_gc = Digital Input Buffer disabled + * PORT_ISC_LEVEL_gc = Sense low Level + * + */ +static inline void PORTE_pin_set_isc(const uint8_t pin, const PORT_ISC_t isc) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTE + 0x10 + pin); + + *port_pin_ctrl = (*port_pin_ctrl & ~PORT_ISC_gm) | isc; +} + +/** + * \brief Set port data direction + * + * Select if the pin data direction is input, output or disabled. + * If disabled state is not possible, this function throws an assert. + * + * \param[in] mask Bit mask where 1 means apply direction setting to the + * corresponding pin + * \param[in] dir PORT_DIR_IN = Data direction in + * PORT_DIR_OUT = Data direction out + * PORT_DIR_OFF = Disables the pin + * (low power state) + */ +static inline void PORTE_set_port_dir(const uint8_t mask, const enum port_dir dir) +{ + switch (dir) { + case PORT_DIR_IN: + VPORTE.DIR &= ~mask; + break; + case PORT_DIR_OUT: + VPORTE.DIR |= mask; + break; + case PORT_DIR_OFF: + /*/ should activate the pullup for power saving + but a bit costly to do it here */ + { + for (uint8_t i = 0; i < 8; i++) { + if (mask & 1 << i) { + *((uint8_t *)&PORTE + 0x10 + i) |= 1 << PORT_PULLUPEN_bp; + } + } + } + break; + default: + break; + } +} + +/** + * \brief Set port pin data direction + * + * Select if the pin data direction is input, output or disabled. + * If disabled state is not possible, this function throws an assert. + * + * \param[in] pin The pin number within port + * \param[in] dir PORT_DIR_IN = Data direction in + * PORT_DIR_OUT = Data direction out + * PORT_DIR_OFF = Disables the pin + * (low power state) + */ +static inline void PORTE_set_pin_dir(const uint8_t pin, const enum port_dir dir) +{ + switch (dir) { + case PORT_DIR_IN: + VPORTE.DIR &= ~(1 << pin); + break; + case PORT_DIR_OUT: + VPORTE.DIR |= (1 << pin); + break; + case PORT_DIR_OFF: + *((uint8_t *)&PORTE + 0x10 + pin) |= 1 << PORT_PULLUPEN_bp; + break; + default: + break; + } +} + +/** + * \brief Set port level + * + * Sets output level on the pins defined by the bit mask + * + * \param[in] mask Bit mask where 1 means apply port level to the corresponding + * pin + * \param[in] level true = Pin levels set to "high" state + * false = Pin levels set to "low" state + */ +static inline void PORTE_set_port_level(const uint8_t mask, const bool level) +{ + if (level == true) { + VPORTE.OUT |= mask; + } else { + VPORTE.OUT &= ~mask; + } +} + +/** + * \brief Set port level + * + * Sets output level on a pin + * + * \param[in] pin The pin number within port + * \param[in] level true = Pin level set to "high" state + * false = Pin level set to "low" state + */ +static inline void PORTE_set_pin_level(const uint8_t pin, const bool level) +{ + if (level == true) { + VPORTE.OUT |= (1 << pin); + } else { + VPORTE.OUT &= ~(1 << pin); + } +} + +/** + * \brief Toggle out level on pins + * + * Toggle the pin levels on pins defined by bit mask + * + * \param[in] mask Bit mask where 1 means toggle pin level to the corresponding + * pin + */ +static inline void PORTE_toggle_port_level(const uint8_t mask) +{ + PORTE.OUTTGL = mask; +} + +/** + * \brief Toggle output level on pin + * + * Toggle the pin levels on pins defined by bit mask + * + * \param[in] pin The pin number within port + */ +static inline void PORTE_toggle_pin_level(const uint8_t pin) +{ + PORTE.OUTTGL = 1 << pin; +} + +/** + * \brief Get input level on pins + * + * Read the input level on pins connected to a port + * + */ +static inline uint8_t PORTE_get_port_level() +{ + return VPORTE.IN; +} + +/** + * \brief Get level on pin + * + * Reads the level on pins connected to a port + */ +static inline bool PORTE_get_pin_level(const uint8_t pin) +{ + return VPORTE.IN & (1 << pin); +} + +/** + * \brief Write value to Port + * + * Write directly to the port OUT register + * + * \param[in] value Value to write to the port register + */ +static inline void PORTE_write_port(const uint8_t value) +{ + VPORTE.OUT = value; +} +/** + * \brief Set port pin pull mode + * + * Configure pin to pull up, down or disable pull mode, supported pull modes are defined by device used + * + * \param[in] pin The pin number within port + * \param[in] pull_mode Pin pull mode + */ +static inline void PORTF_set_pin_pull_mode(const uint8_t pin, const enum port_pull_mode pull_mode) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTF + 0x10 + pin); + + if (pull_mode == PORT_PULL_UP) { + *port_pin_ctrl |= PORT_PULLUPEN_bm; + } else if (pull_mode == PORT_PULL_OFF) { + *port_pin_ctrl &= ~PORT_PULLUPEN_bm; + } +} + +/** + * \brief Set port pin inverted mode + * + * Configure pin invert I/O or not + * + * \param[in] pin The pin number within port + * \param[in] inverted Pin inverted mode + */ +static inline void PORTF_pin_set_inverted(const uint8_t pin, const bool inverted) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTF + 0x10 + pin); + + if (inverted) { + *port_pin_ctrl |= PORT_INVEN_bm; + } else { + *port_pin_ctrl &= ~PORT_INVEN_bm; + } +} + +/** + * \brief Set port pin input/sense configuration + * + * Enable/disable digital input buffer and pin change interrupt, + * select pin interrupt edge/level sensing mode + * + * \param[in] pin pin number within port + * \param[in] isc PORT_ISC_INTDISABLE_gc = Interrupt disabled but input buffer enabled + * PORT_ISC_BOTHEDGES_gc = Sense Both Edges + * PORT_ISC_RISING_gc = Sense Rising Edge + * PORT_ISC_FALLING_gc = Sense Falling Edge + * PORT_ISC_INPUT_DISABLE_gc = Digital Input Buffer disabled + * PORT_ISC_LEVEL_gc = Sense low Level + * + */ +static inline void PORTF_pin_set_isc(const uint8_t pin, const PORT_ISC_t isc) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTF + 0x10 + pin); + + *port_pin_ctrl = (*port_pin_ctrl & ~PORT_ISC_gm) | isc; +} + +/** + * \brief Set port data direction + * + * Select if the pin data direction is input, output or disabled. + * If disabled state is not possible, this function throws an assert. + * + * \param[in] mask Bit mask where 1 means apply direction setting to the + * corresponding pin + * \param[in] dir PORT_DIR_IN = Data direction in + * PORT_DIR_OUT = Data direction out + * PORT_DIR_OFF = Disables the pin + * (low power state) + */ +static inline void PORTF_set_port_dir(const uint8_t mask, const enum port_dir dir) +{ + switch (dir) { + case PORT_DIR_IN: + VPORTF.DIR &= ~mask; + break; + case PORT_DIR_OUT: + VPORTF.DIR |= mask; + break; + case PORT_DIR_OFF: + /*/ should activate the pullup for power saving + but a bit costly to do it here */ + { + for (uint8_t i = 0; i < 8; i++) { + if (mask & 1 << i) { + *((uint8_t *)&PORTF + 0x10 + i) |= 1 << PORT_PULLUPEN_bp; + } + } + } + break; + default: + break; + } +} + +/** + * \brief Set port pin data direction + * + * Select if the pin data direction is input, output or disabled. + * If disabled state is not possible, this function throws an assert. + * + * \param[in] pin The pin number within port + * \param[in] dir PORT_DIR_IN = Data direction in + * PORT_DIR_OUT = Data direction out + * PORT_DIR_OFF = Disables the pin + * (low power state) + */ +static inline void PORTF_set_pin_dir(const uint8_t pin, const enum port_dir dir) +{ + switch (dir) { + case PORT_DIR_IN: + VPORTF.DIR &= ~(1 << pin); + break; + case PORT_DIR_OUT: + VPORTF.DIR |= (1 << pin); + break; + case PORT_DIR_OFF: + *((uint8_t *)&PORTF + 0x10 + pin) |= 1 << PORT_PULLUPEN_bp; + break; + default: + break; + } +} + +/** + * \brief Set port level + * + * Sets output level on the pins defined by the bit mask + * + * \param[in] mask Bit mask where 1 means apply port level to the corresponding + * pin + * \param[in] level true = Pin levels set to "high" state + * false = Pin levels set to "low" state + */ +static inline void PORTF_set_port_level(const uint8_t mask, const bool level) +{ + if (level == true) { + VPORTF.OUT |= mask; + } else { + VPORTF.OUT &= ~mask; + } +} + +/** + * \brief Set port level + * + * Sets output level on a pin + * + * \param[in] pin The pin number within port + * \param[in] level true = Pin level set to "high" state + * false = Pin level set to "low" state + */ +static inline void PORTF_set_pin_level(const uint8_t pin, const bool level) +{ + if (level == true) { + VPORTF.OUT |= (1 << pin); + } else { + VPORTF.OUT &= ~(1 << pin); + } +} + +/** + * \brief Toggle out level on pins + * + * Toggle the pin levels on pins defined by bit mask + * + * \param[in] mask Bit mask where 1 means toggle pin level to the corresponding + * pin + */ +static inline void PORTF_toggle_port_level(const uint8_t mask) +{ + PORTF.OUTTGL = mask; +} + +/** + * \brief Toggle output level on pin + * + * Toggle the pin levels on pins defined by bit mask + * + * \param[in] pin The pin number within port + */ +static inline void PORTF_toggle_pin_level(const uint8_t pin) +{ + PORTF.OUTTGL = 1 << pin; +} + +/** + * \brief Get input level on pins + * + * Read the input level on pins connected to a port + * + */ +static inline uint8_t PORTF_get_port_level() +{ + return VPORTF.IN; +} + +/** + * \brief Get level on pin + * + * Reads the level on pins connected to a port + */ +static inline bool PORTF_get_pin_level(const uint8_t pin) +{ + return VPORTF.IN & (1 << pin); +} + +/** + * \brief Write value to Port + * + * Write directly to the port OUT register + * + * \param[in] value Value to write to the port register + */ +static inline void PORTF_write_port(const uint8_t value) +{ + VPORTF.OUT = value; +} +/** + * \brief Set port pin pull mode + * + * Configure pin to pull up, down or disable pull mode, supported pull modes are defined by device used + * + * \param[in] pin The pin number within port + * \param[in] pull_mode Pin pull mode + */ +static inline void PORTA_set_pin_pull_mode(const uint8_t pin, const enum port_pull_mode pull_mode) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTA + 0x10 + pin); + + if (pull_mode == PORT_PULL_UP) { + *port_pin_ctrl |= PORT_PULLUPEN_bm; + } else if (pull_mode == PORT_PULL_OFF) { + *port_pin_ctrl &= ~PORT_PULLUPEN_bm; + } +} + +/** + * \brief Set port pin inverted mode + * + * Configure pin invert I/O or not + * + * \param[in] pin The pin number within port + * \param[in] inverted Pin inverted mode + */ +static inline void PORTA_pin_set_inverted(const uint8_t pin, const bool inverted) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTA + 0x10 + pin); + + if (inverted) { + *port_pin_ctrl |= PORT_INVEN_bm; + } else { + *port_pin_ctrl &= ~PORT_INVEN_bm; + } +} + +/** + * \brief Set port pin input/sense configuration + * + * Enable/disable digital input buffer and pin change interrupt, + * select pin interrupt edge/level sensing mode + * + * \param[in] pin pin number within port + * \param[in] isc PORT_ISC_INTDISABLE_gc = Interrupt disabled but input buffer enabled + * PORT_ISC_BOTHEDGES_gc = Sense Both Edges + * PORT_ISC_RISING_gc = Sense Rising Edge + * PORT_ISC_FALLING_gc = Sense Falling Edge + * PORT_ISC_INPUT_DISABLE_gc = Digital Input Buffer disabled + * PORT_ISC_LEVEL_gc = Sense low Level + * + */ +static inline void PORTA_pin_set_isc(const uint8_t pin, const PORT_ISC_t isc) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTA + 0x10 + pin); + + *port_pin_ctrl = (*port_pin_ctrl & ~PORT_ISC_gm) | isc; +} + +/** + * \brief Set port data direction + * + * Select if the pin data direction is input, output or disabled. + * If disabled state is not possible, this function throws an assert. + * + * \param[in] mask Bit mask where 1 means apply direction setting to the + * corresponding pin + * \param[in] dir PORT_DIR_IN = Data direction in + * PORT_DIR_OUT = Data direction out + * PORT_DIR_OFF = Disables the pin + * (low power state) + */ +static inline void PORTA_set_port_dir(const uint8_t mask, const enum port_dir dir) +{ + switch (dir) { + case PORT_DIR_IN: + VPORTA.DIR &= ~mask; + break; + case PORT_DIR_OUT: + VPORTA.DIR |= mask; + break; + case PORT_DIR_OFF: + /*/ should activate the pullup for power saving + but a bit costly to do it here */ + { + for (uint8_t i = 0; i < 8; i++) { + if (mask & 1 << i) { + *((uint8_t *)&PORTA + 0x10 + i) |= 1 << PORT_PULLUPEN_bp; + } + } + } + break; + default: + break; + } +} + +/** + * \brief Set port pin data direction + * + * Select if the pin data direction is input, output or disabled. + * If disabled state is not possible, this function throws an assert. + * + * \param[in] pin The pin number within port + * \param[in] dir PORT_DIR_IN = Data direction in + * PORT_DIR_OUT = Data direction out + * PORT_DIR_OFF = Disables the pin + * (low power state) + */ +static inline void PORTA_set_pin_dir(const uint8_t pin, const enum port_dir dir) +{ + switch (dir) { + case PORT_DIR_IN: + VPORTA.DIR &= ~(1 << pin); + break; + case PORT_DIR_OUT: + VPORTA.DIR |= (1 << pin); + break; + case PORT_DIR_OFF: + *((uint8_t *)&PORTA + 0x10 + pin) |= 1 << PORT_PULLUPEN_bp; + break; + default: + break; + } +} + +/** + * \brief Set port level + * + * Sets output level on the pins defined by the bit mask + * + * \param[in] mask Bit mask where 1 means apply port level to the corresponding + * pin + * \param[in] level true = Pin levels set to "high" state + * false = Pin levels set to "low" state + */ +static inline void PORTA_set_port_level(const uint8_t mask, const bool level) +{ + if (level == true) { + VPORTA.OUT |= mask; + } else { + VPORTA.OUT &= ~mask; + } +} + +/** + * \brief Set port level + * + * Sets output level on a pin + * + * \param[in] pin The pin number within port + * \param[in] level true = Pin level set to "high" state + * false = Pin level set to "low" state + */ +static inline void PORTA_set_pin_level(const uint8_t pin, const bool level) +{ + if (level == true) { + VPORTA.OUT |= (1 << pin); + } else { + VPORTA.OUT &= ~(1 << pin); + } +} + +/** + * \brief Toggle out level on pins + * + * Toggle the pin levels on pins defined by bit mask + * + * \param[in] mask Bit mask where 1 means toggle pin level to the corresponding + * pin + */ +static inline void PORTA_toggle_port_level(const uint8_t mask) +{ + PORTA.OUTTGL = mask; +} + +/** + * \brief Toggle output level on pin + * + * Toggle the pin levels on pins defined by bit mask + * + * \param[in] pin The pin number within port + */ +static inline void PORTA_toggle_pin_level(const uint8_t pin) +{ + PORTA.OUTTGL = 1 << pin; +} + +/** + * \brief Get input level on pins + * + * Read the input level on pins connected to a port + * + */ +static inline uint8_t PORTA_get_port_level() +{ + return VPORTA.IN; +} + +/** + * \brief Get level on pin + * + * Reads the level on pins connected to a port + */ +static inline bool PORTA_get_pin_level(const uint8_t pin) +{ + return VPORTA.IN & (1 << pin); +} + +/** + * \brief Write value to Port + * + * Write directly to the port OUT register + * + * \param[in] value Value to write to the port register + */ +static inline void PORTA_write_port(const uint8_t value) +{ + VPORTA.OUT = value; +} +/** + * \brief Set port pin pull mode + * + * Configure pin to pull up, down or disable pull mode, supported pull modes are defined by device used + * + * \param[in] pin The pin number within port + * \param[in] pull_mode Pin pull mode + */ +static inline void PORTB_set_pin_pull_mode(const uint8_t pin, const enum port_pull_mode pull_mode) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTB + 0x10 + pin); + + if (pull_mode == PORT_PULL_UP) { + *port_pin_ctrl |= PORT_PULLUPEN_bm; + } else if (pull_mode == PORT_PULL_OFF) { + *port_pin_ctrl &= ~PORT_PULLUPEN_bm; + } +} + +/** + * \brief Set port pin inverted mode + * + * Configure pin invert I/O or not + * + * \param[in] pin The pin number within port + * \param[in] inverted Pin inverted mode + */ +static inline void PORTB_pin_set_inverted(const uint8_t pin, const bool inverted) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTB + 0x10 + pin); + + if (inverted) { + *port_pin_ctrl |= PORT_INVEN_bm; + } else { + *port_pin_ctrl &= ~PORT_INVEN_bm; + } +} + +/** + * \brief Set port pin input/sense configuration + * + * Enable/disable digital input buffer and pin change interrupt, + * select pin interrupt edge/level sensing mode + * + * \param[in] pin pin number within port + * \param[in] isc PORT_ISC_INTDISABLE_gc = Interrupt disabled but input buffer enabled + * PORT_ISC_BOTHEDGES_gc = Sense Both Edges + * PORT_ISC_RISING_gc = Sense Rising Edge + * PORT_ISC_FALLING_gc = Sense Falling Edge + * PORT_ISC_INPUT_DISABLE_gc = Digital Input Buffer disabled + * PORT_ISC_LEVEL_gc = Sense low Level + * + */ +static inline void PORTB_pin_set_isc(const uint8_t pin, const PORT_ISC_t isc) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTB + 0x10 + pin); + + *port_pin_ctrl = (*port_pin_ctrl & ~PORT_ISC_gm) | isc; +} + +/** + * \brief Set port data direction + * + * Select if the pin data direction is input, output or disabled. + * If disabled state is not possible, this function throws an assert. + * + * \param[in] mask Bit mask where 1 means apply direction setting to the + * corresponding pin + * \param[in] dir PORT_DIR_IN = Data direction in + * PORT_DIR_OUT = Data direction out + * PORT_DIR_OFF = Disables the pin + * (low power state) + */ +static inline void PORTB_set_port_dir(const uint8_t mask, const enum port_dir dir) +{ + switch (dir) { + case PORT_DIR_IN: + VPORTB.DIR &= ~mask; + break; + case PORT_DIR_OUT: + VPORTB.DIR |= mask; + break; + case PORT_DIR_OFF: + /*/ should activate the pullup for power saving + but a bit costly to do it here */ + { + for (uint8_t i = 0; i < 8; i++) { + if (mask & 1 << i) { + *((uint8_t *)&PORTB + 0x10 + i) |= 1 << PORT_PULLUPEN_bp; + } + } + } + break; + default: + break; + } +} + +/** + * \brief Set port pin data direction + * + * Select if the pin data direction is input, output or disabled. + * If disabled state is not possible, this function throws an assert. + * + * \param[in] pin The pin number within port + * \param[in] dir PORT_DIR_IN = Data direction in + * PORT_DIR_OUT = Data direction out + * PORT_DIR_OFF = Disables the pin + * (low power state) + */ +static inline void PORTB_set_pin_dir(const uint8_t pin, const enum port_dir dir) +{ + switch (dir) { + case PORT_DIR_IN: + VPORTB.DIR &= ~(1 << pin); + break; + case PORT_DIR_OUT: + VPORTB.DIR |= (1 << pin); + break; + case PORT_DIR_OFF: + *((uint8_t *)&PORTB + 0x10 + pin) |= 1 << PORT_PULLUPEN_bp; + break; + default: + break; + } +} + +/** + * \brief Set port level + * + * Sets output level on the pins defined by the bit mask + * + * \param[in] mask Bit mask where 1 means apply port level to the corresponding + * pin + * \param[in] level true = Pin levels set to "high" state + * false = Pin levels set to "low" state + */ +static inline void PORTB_set_port_level(const uint8_t mask, const bool level) +{ + if (level == true) { + VPORTB.OUT |= mask; + } else { + VPORTB.OUT &= ~mask; + } +} + +/** + * \brief Set port level + * + * Sets output level on a pin + * + * \param[in] pin The pin number within port + * \param[in] level true = Pin level set to "high" state + * false = Pin level set to "low" state + */ +static inline void PORTB_set_pin_level(const uint8_t pin, const bool level) +{ + if (level == true) { + VPORTB.OUT |= (1 << pin); + } else { + VPORTB.OUT &= ~(1 << pin); + } +} + +/** + * \brief Toggle out level on pins + * + * Toggle the pin levels on pins defined by bit mask + * + * \param[in] mask Bit mask where 1 means toggle pin level to the corresponding + * pin + */ +static inline void PORTB_toggle_port_level(const uint8_t mask) +{ + PORTB.OUTTGL = mask; +} + +/** + * \brief Toggle output level on pin + * + * Toggle the pin levels on pins defined by bit mask + * + * \param[in] pin The pin number within port + */ +static inline void PORTB_toggle_pin_level(const uint8_t pin) +{ + PORTB.OUTTGL = 1 << pin; +} + +/** + * \brief Get input level on pins + * + * Read the input level on pins connected to a port + * + */ +static inline uint8_t PORTB_get_port_level() +{ + return VPORTB.IN; +} + +/** + * \brief Get level on pin + * + * Reads the level on pins connected to a port + */ +static inline bool PORTB_get_pin_level(const uint8_t pin) +{ + return VPORTB.IN & (1 << pin); +} + +/** + * \brief Write value to Port + * + * Write directly to the port OUT register + * + * \param[in] value Value to write to the port register + */ +static inline void PORTB_write_port(const uint8_t value) +{ + VPORTB.OUT = value; +} +/** + * \brief Set port pin pull mode + * + * Configure pin to pull up, down or disable pull mode, supported pull modes are defined by device used + * + * \param[in] pin The pin number within port + * \param[in] pull_mode Pin pull mode + */ +static inline void PORTC_set_pin_pull_mode(const uint8_t pin, const enum port_pull_mode pull_mode) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTC + 0x10 + pin); + + if (pull_mode == PORT_PULL_UP) { + *port_pin_ctrl |= PORT_PULLUPEN_bm; + } else if (pull_mode == PORT_PULL_OFF) { + *port_pin_ctrl &= ~PORT_PULLUPEN_bm; + } +} + +/** + * \brief Set port pin inverted mode + * + * Configure pin invert I/O or not + * + * \param[in] pin The pin number within port + * \param[in] inverted Pin inverted mode + */ +static inline void PORTC_pin_set_inverted(const uint8_t pin, const bool inverted) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTC + 0x10 + pin); + + if (inverted) { + *port_pin_ctrl |= PORT_INVEN_bm; + } else { + *port_pin_ctrl &= ~PORT_INVEN_bm; + } +} + +/** + * \brief Set port pin input/sense configuration + * + * Enable/disable digital input buffer and pin change interrupt, + * select pin interrupt edge/level sensing mode + * + * \param[in] pin pin number within port + * \param[in] isc PORT_ISC_INTDISABLE_gc = Interrupt disabled but input buffer enabled + * PORT_ISC_BOTHEDGES_gc = Sense Both Edges + * PORT_ISC_RISING_gc = Sense Rising Edge + * PORT_ISC_FALLING_gc = Sense Falling Edge + * PORT_ISC_INPUT_DISABLE_gc = Digital Input Buffer disabled + * PORT_ISC_LEVEL_gc = Sense low Level + * + */ +static inline void PORTC_pin_set_isc(const uint8_t pin, const PORT_ISC_t isc) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTC + 0x10 + pin); + + *port_pin_ctrl = (*port_pin_ctrl & ~PORT_ISC_gm) | isc; +} + +/** + * \brief Set port data direction + * + * Select if the pin data direction is input, output or disabled. + * If disabled state is not possible, this function throws an assert. + * + * \param[in] mask Bit mask where 1 means apply direction setting to the + * corresponding pin + * \param[in] dir PORT_DIR_IN = Data direction in + * PORT_DIR_OUT = Data direction out + * PORT_DIR_OFF = Disables the pin + * (low power state) + */ +static inline void PORTC_set_port_dir(const uint8_t mask, const enum port_dir dir) +{ + switch (dir) { + case PORT_DIR_IN: + VPORTC.DIR &= ~mask; + break; + case PORT_DIR_OUT: + VPORTC.DIR |= mask; + break; + case PORT_DIR_OFF: + /*/ should activate the pullup for power saving + but a bit costly to do it here */ + { + for (uint8_t i = 0; i < 8; i++) { + if (mask & 1 << i) { + *((uint8_t *)&PORTC + 0x10 + i) |= 1 << PORT_PULLUPEN_bp; + } + } + } + break; + default: + break; + } +} + +/** + * \brief Set port pin data direction + * + * Select if the pin data direction is input, output or disabled. + * If disabled state is not possible, this function throws an assert. + * + * \param[in] pin The pin number within port + * \param[in] dir PORT_DIR_IN = Data direction in + * PORT_DIR_OUT = Data direction out + * PORT_DIR_OFF = Disables the pin + * (low power state) + */ +static inline void PORTC_set_pin_dir(const uint8_t pin, const enum port_dir dir) +{ + switch (dir) { + case PORT_DIR_IN: + VPORTC.DIR &= ~(1 << pin); + break; + case PORT_DIR_OUT: + VPORTC.DIR |= (1 << pin); + break; + case PORT_DIR_OFF: + *((uint8_t *)&PORTC + 0x10 + pin) |= 1 << PORT_PULLUPEN_bp; + break; + default: + break; + } +} + +/** + * \brief Set port level + * + * Sets output level on the pins defined by the bit mask + * + * \param[in] mask Bit mask where 1 means apply port level to the corresponding + * pin + * \param[in] level true = Pin levels set to "high" state + * false = Pin levels set to "low" state + */ +static inline void PORTC_set_port_level(const uint8_t mask, const bool level) +{ + if (level == true) { + VPORTC.OUT |= mask; + } else { + VPORTC.OUT &= ~mask; + } +} + +/** + * \brief Set port level + * + * Sets output level on a pin + * + * \param[in] pin The pin number within port + * \param[in] level true = Pin level set to "high" state + * false = Pin level set to "low" state + */ +static inline void PORTC_set_pin_level(const uint8_t pin, const bool level) +{ + if (level == true) { + VPORTC.OUT |= (1 << pin); + } else { + VPORTC.OUT &= ~(1 << pin); + } +} + +/** + * \brief Toggle out level on pins + * + * Toggle the pin levels on pins defined by bit mask + * + * \param[in] mask Bit mask where 1 means toggle pin level to the corresponding + * pin + */ +static inline void PORTC_toggle_port_level(const uint8_t mask) +{ + PORTC.OUTTGL = mask; +} + +/** + * \brief Toggle output level on pin + * + * Toggle the pin levels on pins defined by bit mask + * + * \param[in] pin The pin number within port + */ +static inline void PORTC_toggle_pin_level(const uint8_t pin) +{ + PORTC.OUTTGL = 1 << pin; +} + +/** + * \brief Get input level on pins + * + * Read the input level on pins connected to a port + * + */ +static inline uint8_t PORTC_get_port_level() +{ + return VPORTC.IN; +} + +/** + * \brief Get level on pin + * + * Reads the level on pins connected to a port + */ +static inline bool PORTC_get_pin_level(const uint8_t pin) +{ + return VPORTC.IN & (1 << pin); +} + +/** + * \brief Write value to Port + * + * Write directly to the port OUT register + * + * \param[in] value Value to write to the port register + */ +static inline void PORTC_write_port(const uint8_t value) +{ + VPORTC.OUT = value; +} +/** + * \brief Set port pin pull mode + * + * Configure pin to pull up, down or disable pull mode, supported pull modes are defined by device used + * + * \param[in] pin The pin number within port + * \param[in] pull_mode Pin pull mode + */ +static inline void PORTD_set_pin_pull_mode(const uint8_t pin, const enum port_pull_mode pull_mode) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTD + 0x10 + pin); + + if (pull_mode == PORT_PULL_UP) { + *port_pin_ctrl |= PORT_PULLUPEN_bm; + } else if (pull_mode == PORT_PULL_OFF) { + *port_pin_ctrl &= ~PORT_PULLUPEN_bm; + } +} + +/** + * \brief Set port pin inverted mode + * + * Configure pin invert I/O or not + * + * \param[in] pin The pin number within port + * \param[in] inverted Pin inverted mode + */ +static inline void PORTD_pin_set_inverted(const uint8_t pin, const bool inverted) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTD + 0x10 + pin); + + if (inverted) { + *port_pin_ctrl |= PORT_INVEN_bm; + } else { + *port_pin_ctrl &= ~PORT_INVEN_bm; + } +} + +/** + * \brief Set port pin input/sense configuration + * + * Enable/disable digital input buffer and pin change interrupt, + * select pin interrupt edge/level sensing mode + * + * \param[in] pin pin number within port + * \param[in] isc PORT_ISC_INTDISABLE_gc = Interrupt disabled but input buffer enabled + * PORT_ISC_BOTHEDGES_gc = Sense Both Edges + * PORT_ISC_RISING_gc = Sense Rising Edge + * PORT_ISC_FALLING_gc = Sense Falling Edge + * PORT_ISC_INPUT_DISABLE_gc = Digital Input Buffer disabled + * PORT_ISC_LEVEL_gc = Sense low Level + * + */ +static inline void PORTD_pin_set_isc(const uint8_t pin, const PORT_ISC_t isc) +{ + volatile uint8_t *port_pin_ctrl = ((uint8_t *)&PORTD + 0x10 + pin); + + *port_pin_ctrl = (*port_pin_ctrl & ~PORT_ISC_gm) | isc; +} + +/** + * \brief Set port data direction + * + * Select if the pin data direction is input, output or disabled. + * If disabled state is not possible, this function throws an assert. + * + * \param[in] mask Bit mask where 1 means apply direction setting to the + * corresponding pin + * \param[in] dir PORT_DIR_IN = Data direction in + * PORT_DIR_OUT = Data direction out + * PORT_DIR_OFF = Disables the pin + * (low power state) + */ +static inline void PORTD_set_port_dir(const uint8_t mask, const enum port_dir dir) +{ + switch (dir) { + case PORT_DIR_IN: + VPORTD.DIR &= ~mask; + break; + case PORT_DIR_OUT: + VPORTD.DIR |= mask; + break; + case PORT_DIR_OFF: + /*/ should activate the pullup for power saving + but a bit costly to do it here */ + { + for (uint8_t i = 0; i < 8; i++) { + if (mask & 1 << i) { + *((uint8_t *)&PORTD + 0x10 + i) |= 1 << PORT_PULLUPEN_bp; + } + } + } + break; + default: + break; + } +} + +/** + * \brief Set port pin data direction + * + * Select if the pin data direction is input, output or disabled. + * If disabled state is not possible, this function throws an assert. + * + * \param[in] pin The pin number within port + * \param[in] dir PORT_DIR_IN = Data direction in + * PORT_DIR_OUT = Data direction out + * PORT_DIR_OFF = Disables the pin + * (low power state) + */ +static inline void PORTD_set_pin_dir(const uint8_t pin, const enum port_dir dir) +{ + switch (dir) { + case PORT_DIR_IN: + VPORTD.DIR &= ~(1 << pin); + break; + case PORT_DIR_OUT: + VPORTD.DIR |= (1 << pin); + break; + case PORT_DIR_OFF: + *((uint8_t *)&PORTD + 0x10 + pin) |= 1 << PORT_PULLUPEN_bp; + break; + default: + break; + } +} + +/** + * \brief Set port level + * + * Sets output level on the pins defined by the bit mask + * + * \param[in] mask Bit mask where 1 means apply port level to the corresponding + * pin + * \param[in] level true = Pin levels set to "high" state + * false = Pin levels set to "low" state + */ +static inline void PORTD_set_port_level(const uint8_t mask, const bool level) +{ + if (level == true) { + VPORTD.OUT |= mask; + } else { + VPORTD.OUT &= ~mask; + } +} + +/** + * \brief Set port level + * + * Sets output level on a pin + * + * \param[in] pin The pin number within port + * \param[in] level true = Pin level set to "high" state + * false = Pin level set to "low" state + */ +static inline void PORTD_set_pin_level(const uint8_t pin, const bool level) +{ + if (level == true) { + VPORTD.OUT |= (1 << pin); + } else { + VPORTD.OUT &= ~(1 << pin); + } +} + +/** + * \brief Toggle out level on pins + * + * Toggle the pin levels on pins defined by bit mask + * + * \param[in] mask Bit mask where 1 means toggle pin level to the corresponding + * pin + */ +static inline void PORTD_toggle_port_level(const uint8_t mask) +{ + PORTD.OUTTGL = mask; +} + +/** + * \brief Toggle output level on pin + * + * Toggle the pin levels on pins defined by bit mask + * + * \param[in] pin The pin number within port + */ +static inline void PORTD_toggle_pin_level(const uint8_t pin) +{ + PORTD.OUTTGL = 1 << pin; +} + +/** + * \brief Get input level on pins + * + * Read the input level on pins connected to a port + * + */ +static inline uint8_t PORTD_get_port_level() +{ + return VPORTD.IN; +} + +/** + * \brief Get level on pin + * + * Reads the level on pins connected to a port + */ +static inline bool PORTD_get_pin_level(const uint8_t pin) +{ + return VPORTD.IN & (1 << pin); +} + +/** + * \brief Write value to Port + * + * Write directly to the port OUT register + * + * \param[in] value Value to write to the port register + */ +static inline void PORTD_write_port(const uint8_t value) +{ + VPORTD.OUT = value; +} +#ifdef __cplusplus +} +#endif + +#endif /* PORT_INCLUDED */ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/include/protected_io.h b/AVRIoT.X/mcc_generated_files/include/protected_io.h new file mode 100644 index 0000000..891631c --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/include/protected_io.h @@ -0,0 +1,85 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +/** + * \defgroup doc_driver_system_protected_io Protected IO + * \ingroup doc_driver_system + * + * \section doc_driver_protected_io_rev Revision History + * - v0.0.0.1 Initial Commit + * + *@{ + */ + +#ifndef PROTECTED_IO_H +#define PROTECTED_IO_H + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(__DOXYGEN__) +//! \name IAR Memory Model defines. +//@{ + +/** + * \def CONFIG_MEMORY_MODEL_TINY + * \brief Configuration symbol to enable 8 bit pointers. + * + */ +#define CONFIG_MEMORY_MODEL_TINY + +/** + * \def CONFIG_MEMORY_MODEL_SMALL + * \brief Configuration symbol to enable 16 bit pointers. + * \note If no memory model is defined, SMALL is default. + * + */ +#define CONFIG_MEMORY_MODEL_SMALL + +/** + * \def CONFIG_MEMORY_MODEL_LARGE + * \brief Configuration symbol to enable 24 bit pointers. + * + */ +#define CONFIG_MEMORY_MODEL_LARGE + +//@} +#endif + +/** + * \brief Write to am 8-bit I/O register protected by CCP or a protection bit + * + * \param addr Address of the I/O register + * \param magic CCP magic value or Mask for protection bit + * \param value Value to be written + * + * \note Using IAR Embedded workbench, the choice of memory model has an impact + * on calling convention. The memory model is not visible to the + * preprocessor, so it must be defined in the Assembler preprocessor directives. + */ +extern void protected_write_io(void *addr, uint8_t magic, uint8_t value); + +/** @} */ + +#endif /* PROTECTED_IO_H */ diff --git a/AVRIoT.X/mcc_generated_files/include/rstctrl.h b/AVRIoT.X/mcc_generated_files/include/rstctrl.h new file mode 100644 index 0000000..66e805f --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/include/rstctrl.h @@ -0,0 +1,54 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef RSTCTRL_INCLUDED +#define RSTCTRL_INCLUDED + +#ifdef __cplusplus +extern "C" { +#endif + +#include "ccp.h" + +static inline void RSTCTRL_reset(void) +{ + /* SWRR is protected with CCP */ +// ccp_write_io((void *)&RSTCTRL.SWRR, 0x1); +} + +static inline uint8_t RSTCTRL_get_reset_cause(void) +{ + return RSTCTRL.RSTFR; +} + +static inline void RSTCTRL_clear_reset_cause(void) +{ + RSTCTRL.RSTFR + = RSTCTRL_UPDIRF_bm | RSTCTRL_SWRF_bm | RSTCTRL_WDRF_bm | RSTCTRL_EXTRF_bm | RSTCTRL_BORF_bm | RSTCTRL_PORF_bm; +} + +#ifdef __cplusplus +} +#endif + +#endif /* RSTCTRL_INCLUDED */ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/include/rtc.h b/AVRIoT.X/mcc_generated_files/include/rtc.h new file mode 100644 index 0000000..1911d2d --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/include/rtc.h @@ -0,0 +1,53 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef RTCDRIVER_H +#define RTCDRIVER_H + +#include "../utils/compiler.h" +#include +#include + +/** Datatype used to hold the number of ticks until a timer expires */ + +typedef void (*RTC_cb_t)(void); +void RTC_SetOVFIsrCallback(RTC_cb_t cb); +void RTC_SetCMPIsrCallback(RTC_cb_t cb); +int8_t RTC_Initialize(); +void RTC_WriteCounter(uint16_t timerVal); +void RTC_WritePeroid(uint16_t timerVal); +uint16_t RTC_ReadCounter(); +uint16_t RTC_ReadPeriod(); +void RTC_EnableCMPInterrupt(); +void RTC_DisableCMPInterrupt(); +void RTC_EnableOVFInterrupt(); +void RTC_DisableOVFInterrupt(); +void RTC_EnablePITInterrupt(); +void RTC_DisablePITInterrupt(); +void RTC_ClearOVFInterruptFlag(); +bool RTC_IsOVFInterruptEnabled(); + + +#endif /* RTCDRIVER_H */ + +/** @}*/ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/include/spi0.h b/AVRIoT.X/mcc_generated_files/include/spi0.h new file mode 100644 index 0000000..b476aaf --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/include/spi0.h @@ -0,0 +1,228 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef SPI_BASIC_H_INCLUDED +#define SPI_BASIC_H_INCLUDED + +#include "../utils/compiler.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** Function pointer to callback function called by SPI IRQ. + NULL=default value: No callback function is to be used. +*/ +typedef void (*spi0_TRANSFER_DONE_CB)(void); + +typedef struct { + // hardware stuff that controls SPI mode + // hardware stuff that controls SPI baud rate + uint8_t CTRLAvalue; + uint8_t CTRLBvalue; +} spi0_configuration_t; + +/** Specify whether the SPI transfer is to be uni- or bidirectional. + A bidirectional transfer (=SPI_EXCHANGE) causes the received data + to overwrite the buffer with the data to transmit. +*/ +typedef enum spi_transfer_type { + SPI_EXCHANGE, ///< SPI transfer is bidirectional + SPI_READ, ///< SPI transfer reads, writes only 0s + SPI_WRITE ///< SPI transfer writes, discards read data +} spi0_transfer_type_t; + +/** Status of the SPI hardware and SPI bus.*/ +typedef enum spi_transfer_status { + SPI_FREE, ///< SPI hardware is not open, bus is free. + SPI_IDLE, ///< SPI hardware has been opened, no transfer ongoing. + SPI_BUSY, ///< SPI hardware has been opened, transfer ongoing. + SPI_DONE ///< SPI hardware has been opened, transfer complete. +} spi0_transfer_status_t; + +/** Enumeration of the different configurations supported by the driver. + A configuration is specified as parameter to SPI0_open(), + and is used by the function to set SPI parameters as specified by the + configuration. A user may specify a configuration, e.g. SLAVE_A, used when + communication over SPI with SLAVE_A, and another configuration, SLAVE_B, + used when communication with SLAVE_B. The configurations may use different + SPI configuration such as polarity or SCK frequency. +*/ +typedef enum { + WINC_CONFIG, + SPI0_DEFAULT +} SPI0_configuration_name_t; + +/** + * \brief Initialize SPI interface + * If module is configured to disabled state, the clock to the SPI is disabled + * if this is supported by the device's clock system. + * + * \return Initialization status. + * \retval 0 the SPI init was successful + * \retval 1 the SPI init was not successful + */ +uint8_t SPI0_Initialize(void); + +/** + * \brief Enable SPI0 + * 1. If supported by the clock system, enables the clock to the SPI + * 2. Enables the SPI module by setting the enable-bit in the SPI control register + * + * \return Nothing + */ +void SPI0_Enable(); + +/** + * \brief Disable SPI0 + * 1. Disables the SPI module by clearing the enable-bit in the SPI control register + * 2. If supported by the clock system, disables the clock to the SPI + * + * \return Nothing + */ +void SPI0_Disable(); + +/** + * \brief Open the SPI SPI0 for communication + * + * \param[in] spiUniqueconfiguration The configuration to use in the transfer + * + * \return Initialization status. + * \retval false The SPI open was successful + * \retval true The SPI open was successful + */ +bool SPI0_Open(spi0_configuration_t spiUniqueConfiguration); + +/** + * \brief Sets the index of Configuration to use in the transfer + * + * \param[in] spiUniqueconfiguration The configuration index + * + * \return Setting status. + */ + +bool SPI0_OpenConfiguration(uint8_t spiUniqueConfiguration); + + +/** + * \brief Close the SPI SPI0 for communication + * + * \return Nothing + */ +void SPI0_Close(void); + +/** + * \brief Exchange one byte over SPI SPI0. Blocks until done. + * + * \param[in] data The byte to transfer + * + * \return Received data byte. + */ +uint8_t SPI0_ExchangeByte(uint8_t data); + +/** + * \brief Exchange a buffer over SPI SPI0. Blocks if using polled driver. + * + * \param[inout] block The buffer to transfer. Received data is returned here. + * \param[in] size The size of buffer to transfer + * + * \return Nothing. + */ +void SPI0_ExchangeBlock(void *block, size_t size); + +/** + * \brief Write a buffer over SPI SPI0. Blocks if using polled driver. + * + * \param[in] block The buffer to transfer + * \param[in] size The size of buffer to transfer + * + * \return Nothing. + */ +void SPI0_WriteBlock(void *block, size_t size); + +/** + * \brief Read a buffer over SPI SPI0. Blocks if using polled driver. + * + * Zeros are transmitted out of the SPI. + * + * \param[out] block Received data is written here. + * \param[in] size The size of buffer to transfer + * + * \return Nothing. + */ +void SPI0_ReadBlock(void *block, size_t size); + +/** + * \brief Write a buffer over SPI SPI0. Blocks if using polled driver. + * + * \param[in] data The byte to transfer + * + * \return Nothing. + */ +void SPI0_WriteByte(uint8_t data); + +/** + * \brief Read a buffer over SPI SPI0. Blocks if using polled driver. + * + * \return The received data. + */ +uint8_t SPI0_ReadByte(); + +/** + * \brief Check if SPI slave is selected, i.e. its SS has been asserted. + * + * \return SPI SS status + * \retval true SPI is selected + * \retval false SPI is not selected + */ +bool SPI0_Selected(void); + +/** + * \brief Get received data byte from SPI + * + * \return Received data byte + */ +uint8_t SPI0_GetRxData(void); + +/** + * \brief Write data byte to SPI + * + * \param[in] data The data to transfer + * + * \return Nothing + */ +void SPI0_WriteTxData(uint8_t data); + +/** + * \brief Wait until SPI has recaived a data byte + * + * \return Nothing + */ +void SPI0_WaitDataready(void); + +#ifdef __cplusplus +} +#endif + +#endif /* SPI_BASIC_H_INCLUDED */ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/include/twi0_master.h b/AVRIoT.X/mcc_generated_files/include/twi0_master.h new file mode 100644 index 0000000..8d02c73 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/include/twi0_master.h @@ -0,0 +1,210 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef TWI0_MASTER_H +#define TWI0_MASTER_H + +#include +#include +#include +#include "../utils/compiler.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define TWI0_BAUD(F_SCL, T_RISE) \ + ((((((float)10000000 / (float)F_SCL)) - 10 - ((float)10000000 * T_RISE / 1000000))) / 2) + + +typedef enum { + I2C_NOERR, // The message was sent. + I2C_BUSY, // Message was NOT sent, bus was busy. + I2C_FAIL // Message was NOT sent, bus failure + // If you are interested in the failure reason, + // Sit on the event call-backs. +} twi0_error_t; + +typedef enum { I2C_STOP = 1, I2C_RESTART_READ, I2C_RESTART_WRITE, I2C_CONTINUE, I2C_RESET_LINK } twi0_operations_t; + +typedef twi0_operations_t (*twi0_callback_t)(void *funPtr); + +typedef uint8_t twi0_address_t; +typedef twi0_address_t i2c_address_t; +// common callback responses +twi0_operations_t I2C0_SetReturnStopCallback(void *funPtr); +twi0_operations_t I2C0_SetReturnResetCallback(void *funPtr); +twi0_operations_t I2C0_SetRestartWriteCallback(void *funPtr); +twi0_operations_t I2C0_SetRestartReadCallback(void *funPtr); + +/** + * \brief Initialize I2C interface + * If module is configured to disabled state, the clock to the I2C is disabled + * if this is supported by the device's clock system. + * + * \return Initialization status. + * \retval 0 the init was successful + * \retval 1 the init was not successful + */ +uint8_t I2C0_Initialize(void); + +/** + * \brief Open the I2C for communication + * + * \param[in] address The slave address to use in the transfer + * + * \return Initialization status. + * \retval I2C_NOERR The I2C open was successful + * \retval I2C_BUSY The I2C open failed because the interface is busy + * \retval I2C_FAIL The I2C open failed with an error + */ +twi0_error_t I2C0_Open(twi0_address_t address); + +/** + * \brief Close the I2C interface + * + * \return Status of close operation. + * \retval I2C_NOERR The I2C open was successful + * \retval I2C_BUSY The I2C open failed because the interface is busy + * \retval I2C_FAIL The I2C open failed with an error + */ +twi0_error_t I2C0_Close(void); + +/** + * \brief Start an operation on an opened I2C interface + * + * \param[in] read Set to true for read, false for write + * + * \return Status of operation + * \retval I2C_NOERR The I2C open was successful + * \retval I2C_BUSY The I2C open failed because the interface is busy + * \retval I2C_FAIL The I2C open failed with an error + */ +twi0_error_t I2C0_MasterOperation(bool read); + +/** + * \brief Identical to I2C0_MasterOperation(false); + */ + +twi0_error_t I2C0_MasterWrite(void); // to be depreciated + + +/** + * \brief Identical to I2C0_MasterOperation(true); + */ + + +twi0_error_t I2C0_MasterRead(void); // to be depreciated + +/** + * \brief Set timeout to be used for I2C operations. Uses the Timeout driver. + * + * \param[in] to Timeout in ticks + * + * \return Nothing + */ +void I2C0_SetTimeout(uint8_t to); + +/** + * \brief Sets up the data buffer to use, and number of bytes to transfer + * + * \param[in] buffer Pointer to data buffer to use for read or write data + * \param[in] bufferSize Number of bytes to read or write from slave + * + * \return Nothing + */ +void I2C0_SetBuffer(void *buffer, size_t bufferSize); + +// Event Callback functions. + +/** + * \brief Set callback to be called when all specifed data has been transferred. + * + * \param[in] cb Pointer to callback function + * \param[in] p Pointer to the callback function's parameters + * + * \return Nothing + */ +void I2C0_SetDataCompleteCallback(twi0_callback_t cb, void *funPtr); + +/** + * \brief Set callback to be called when there has been a bus collision and arbitration was lost. + * + * \param[in] cb Pointer to callback function + * \param[in] p Pointer to the callback function's parameters + * + * \return Nothing + */ +void I2C0_SetWriteCollisionCallback(twi0_callback_t cb, void *funPtr); + +/** + * \brief Set callback to be called when the transmitted address was NACK'ed. + * + * \param[in] cb Pointer to callback function + * \param[in] p Pointer to the callback function's parameters + * + * \return Nothing + */ +void I2C0_SetAddressNackCallback(twi0_callback_t cb, void *funPtr); + +/** + * \brief Set callback to be called when the transmitted data was NACK'ed. + * + * \param[in] cb Pointer to callback function + * \param[in] p Pointer to the callback function's parameters + * + * \return Nothing + */ +void I2C0_SetDataNackCallback(twi0_callback_t cb, void *funPtr); + +/** + * \brief Set callback to be called when there was a bus timeout. + * + * \param[in] cb Pointer to callback function + * \param[in] p Pointer to the callback function's parameters + * + * \return Nothing + */ +void I2C0_SetTimeoutCallback(twi0_callback_t cb, void *funPtr); + +/** + * \brief In a polled implementation, call this function in a loop to execute the FSM + * + * \return Nothing + */ +void I2C0_Poller(void); + +/** + * \brief Set Address to be called when there was aa address reception. + * + * \param[in] address Loads the address of the master + * + * \return Nothing + */ +void I2C0_SetAddress(twi0_address_t address); + +#ifdef __cplusplus +} +#endif + +#endif /* TWI0_MASTER_H */ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/include/usart2.h b/AVRIoT.X/mcc_generated_files/include/usart2.h new file mode 100644 index 0000000..86eefe2 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/include/usart2.h @@ -0,0 +1,178 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef USART2_H_INCLUDED +#define USART2_H_INCLUDED + +#include +#include +#include "../utils/compiler.h" +#include "../utils/atomic.h" +#include "../config/clock_config.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Normal Mode, Baud register value */ +#define USART2_BAUD_RATE(BAUD_RATE) (((float)10000000 * 64 / (16 * (float)BAUD_RATE)) + 0.5) + +/* USART2 Ringbuffer */ + +#define USART2_RX_BUFFER_SIZE 64 +#define USART2_TX_BUFFER_SIZE 64 +#define USART2_RX_BUFFER_MASK (USART2_RX_BUFFER_SIZE - 1) +#define USART2_TX_BUFFER_MASK (USART2_TX_BUFFER_SIZE - 1) + +typedef enum { USART2_RX_CB = 1, USART2_TX_CB } usart2_cb_t; +typedef void (*usart_callback)(void); + +/** + * \brief Initialize USART interface + * If module is configured to disabled state, the clock to the USART is disabled + * if this is supported by the device's clock system. + * + * \return Initialization status. + * \retval 0 the USART init was successful + * \retval 1 the USART init was not successful + */ +void USART2_Initialize(); + +/** + * \brief Enable RX and TX in USART2 + * 1. If supported by the clock system, enables the clock to the USART + * 2. Enables the USART module by setting the RX and TX enable-bits in the USART control register + * + * \return Nothing + */ +void USART2_Enable(); + +/** + * \brief Enable RX in USART2 + * 1. If supported by the clock system, enables the clock to the USART + * 2. Enables the USART module by setting the RX enable-bit in the USART control register + * + * \return Nothing + */ +void USART2_EnableRx(); + +/** + * \brief Enable TX in USART2 + * 1. If supported by the clock system, enables the clock to the USART + * 2. Enables the USART module by setting the TX enable-bit in the USART control register + * + * \return Nothing + */ +void USART2_EnableTx(); + +/** + * \brief Disable USART2 + * 1. Disables the USART module by clearing the enable-bit(s) in the USART control register + * 2. If supported by the clock system, disables the clock to the USART + * + * \return Nothing + */ +void USART2_Disable(); + +/** + * \brief Get recieved data from USART2 + * + * \return Data register from USART2 module + */ +uint8_t USART2_GetData(); + +/** + * \brief Check if the usart can accept data to be transmitted + * + * \return The status of USART TX data ready check + * \retval false The USART can not receive data to be transmitted + * \retval true The USART can receive data to be transmitted + */ +bool USART2_IsTxReady(); + +/** + * \brief Check if the USART has received data + * + * \return The status of USART RX data ready check + * \retval true The USART has received data + * \retval false The USART has not received data + */ +bool USART2_IsRxReady(); + +/** + * \brief Check if USART2 data is transmitted + * + * \return Receiver ready status + * \retval true Data is not completely shifted out of the shift register + * \retval false Data completely shifted out if the USART shift register + */ +bool USART2_IsTxBusy(); + + + +bool USART2_IsTxDone(); +/** + * \brief Read one character from USART2 + * + * Function will block if a character is not available. + * + * \return Data read from the USART2 module + */ +uint8_t USART2_Read(void); + +/** + * \brief Write one character to USART2 + * + * Function will block until a character can be accepted. + * + * \param[in] data The character to write to the USART + * + * \return Nothing + */ +void USART2_Write(const uint8_t data); + +/** + * \brief Set call back function for USART2 + * + * \param[in] cb The call back function to set + * + * \param[in] type The type of ISR to be set + * + * \return Nothing + */ + +void USART2_DefaultRxIsrCb(void); + +void USART2_DefaultTxIsrCb(void); + +void USART2_SetISRCb(usart_callback cb, usart2_cb_t type); + +void USART2_SetRXISRCb(usart_callback cb); + +void USART2_SetTXISRCb(usart_callback cb); + +#ifdef __cplusplus +} +#endif + +#endif /* USART2_H_INCLUDED */ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/led.c b/AVRIoT.X/mcc_generated_files/led.c new file mode 100644 index 0000000..b3ee716 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/led.c @@ -0,0 +1,341 @@ +/* + \file led.c + + \brief Manage board LED's + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include +#include "mcc.h" +#include "config/clock_config.h" +#include +#include "led.h" +#include "drivers/timeout.h" +#include "config/mqtt_config.h" + +#define LED_ON false +#define LED_OFF true +#define LEDS_TEST_INTERVAL 50L +#define LED_SERVICE_INTERVAL 250L + +static ledTickState_t redLed_2SecLoop; +static ledTickState_t yellowLed_2SecLoop; +static ledTickState_t greenLed_2SecLoop; +static ledTickState_t blueLed_2SecLoop; + +static uint8_t redTicker = 0; +static uint8_t yellowTicker = 0; +static uint8_t greenTicker = 0; +static uint8_t blueTicker = 0; + +static uint32_t LED_service(void *payload); +static timerstruct_t LED_service_timer = {LED_service}; + + + +void LED_modeRed(ledTickState_t configLed_2SecLoop) +{ + redLed_2SecLoop.Full2Sec = configLed_2SecLoop.Full2Sec; + redTicker = 0; + } + +void LED_modeBlue(ledTickState_t configLed_2SecLoop) +{ + blueLed_2SecLoop.Full2Sec = configLed_2SecLoop.Full2Sec; + blueTicker = 0; +} + +void LED_modeGreen(ledTickState_t configLed_2SecLoop) +{ + greenLed_2SecLoop.Full2Sec = configLed_2SecLoop.Full2Sec; + greenTicker = 0; +} + +void LED_modeYellow(ledTickState_t configLed_2SecLoop) +{ + yellowLed_2SecLoop.Full2Sec = configLed_2SecLoop.Full2Sec; + yellowTicker = 0; +} + +static void LED_redService(void) +{ + static bool ledStatus = LED_OFF; + switch(redTicker) + { + case 0: + ledStatus = redLed_2SecLoop.tick0; + break; + case 1: + ledStatus = redLed_2SecLoop.tick1; + break; + case 2: + ledStatus = redLed_2SecLoop.tick2; + break; + case 3: + ledStatus = redLed_2SecLoop.tick3; + break; + case 4: + ledStatus = redLed_2SecLoop.tick4; + break; + case 5: + ledStatus = redLed_2SecLoop.tick5; + break; + case 6: + ledStatus = redLed_2SecLoop.tick6; + break; + case 7: + ledStatus = redLed_2SecLoop.tick7; + break; + default: + // This should never be true + break; +} + + // Manage LED State + if (ledStatus == LED_ON) +{ + LED_RED_SetLow(); +} + else + { + LED_RED_SetHigh(); + } + + // Reset Ticker + if (redTicker >= 7) +{ + redTicker = 0; + } + else + { + redTicker++; + } +} + +static void LED_yellowService(void) +{ + static bool ledStatus = LED_OFF; + switch(yellowTicker) + { + case 0: + ledStatus = yellowLed_2SecLoop.tick0; + break; + case 1: + ledStatus = yellowLed_2SecLoop.tick1; + break; + case 2: + ledStatus = yellowLed_2SecLoop.tick2; + break; + case 3: + ledStatus = yellowLed_2SecLoop.tick3; + break; + case 4: + ledStatus = yellowLed_2SecLoop.tick4; + break; + case 5: + ledStatus = yellowLed_2SecLoop.tick5; + break; + case 6: + ledStatus = yellowLed_2SecLoop.tick6; + break; + case 7: + ledStatus = yellowLed_2SecLoop.tick7; + break; + default: + // This should never be true + break; +} + + // Manage LED State + if (ledStatus == LED_ON) +{ + LED_YELLOW_SetLow(); + } + else + { + LED_YELLOW_SetHigh(); + } + + // Reset Ticker + if (yellowTicker >= 7) + { + yellowTicker = 0; +} + else + { + yellowTicker++; + } +} + +static void LED_greenService(void) +{ + static bool ledStatus = LED_OFF; + switch(greenTicker) + { + case 0: + ledStatus = greenLed_2SecLoop.tick0; + break; + case 1: + ledStatus = greenLed_2SecLoop.tick1; + break; + case 2: + ledStatus = greenLed_2SecLoop.tick2; + break; + case 3: + ledStatus = greenLed_2SecLoop.tick3; + break; + case 4: + ledStatus = greenLed_2SecLoop.tick4; + break; + case 5: + ledStatus = greenLed_2SecLoop.tick5; + break; + case 6: + ledStatus = greenLed_2SecLoop.tick6; + break; + case 7: + ledStatus = greenLed_2SecLoop.tick7; + break; + default: + // This should never be true + break; +} + + // Manage LED State + if (ledStatus == LED_ON) +{ + LED_GREEN_SetLow(); + } + else + { + LED_GREEN_SetHigh(); + } + + // Reset Ticker + if (greenTicker >= 7) + { + greenTicker = 0; + } + else + { + greenTicker++; + } +} + +static void LED_blueService(void) +{ + static bool ledStatus = LED_OFF; + switch(blueTicker) + { + case 0: + ledStatus = blueLed_2SecLoop.tick0; + break; + case 1: + ledStatus = blueLed_2SecLoop.tick1; + break; + case 2: + ledStatus = blueLed_2SecLoop.tick2; + break; + case 3: + ledStatus = blueLed_2SecLoop.tick3; + break; + case 4: + ledStatus = blueLed_2SecLoop.tick4; + break; + case 5: + ledStatus = blueLed_2SecLoop.tick5; + break; + case 6: + ledStatus = blueLed_2SecLoop.tick6; + break; + case 7: + ledStatus = blueLed_2SecLoop.tick7; + break; + default: + // This should never be true + break; +} + + // Manage LED State + if (ledStatus == LED_ON) +{ + LED_BLUE_SetLow(); + } + else + { + LED_BLUE_SetHigh(); + } + + // Reset Ticker + if (blueTicker >= 7) + { + blueTicker = 0; +} + else + { + blueTicker++; + } +} + +static uint32_t LED_service(void *payload) +{ + LED_redService(); + LED_blueService(); + LED_greenService(); + LED_yellowService(); + return LED_SERVICE_INTERVAL; +} + +static void testSequence (uint8_t ledState) +{ + if(LED_OFF == ledState){ + LED_BLUE_SetHigh(); + _delay_ms(LEDS_TEST_INTERVAL); + LED_GREEN_SetHigh(); + _delay_ms(LEDS_TEST_INTERVAL); + LED_YELLOW_SetHigh(); + _delay_ms(LEDS_TEST_INTERVAL); + LED_RED_SetHigh(); + _delay_ms(LEDS_TEST_INTERVAL); + } else { + LED_BLUE_SetLow(); + _delay_ms(LEDS_TEST_INTERVAL); + LED_GREEN_SetLow(); + _delay_ms(LEDS_TEST_INTERVAL); + LED_YELLOW_SetLow(); + _delay_ms(LEDS_TEST_INTERVAL); + LED_RED_SetLow(); + _delay_ms(LEDS_TEST_INTERVAL); + } +} + +void LED_test(void) +{ + testSequence(LED_ON); + testSequence(LED_OFF); +} + +void LED_serviceInit(void) +{ + timeout_create(&LED_service_timer, LED_SERVICE_INTERVAL); +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/led.h b/AVRIoT.X/mcc_generated_files/led.h new file mode 100644 index 0000000..dfe8708 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/led.h @@ -0,0 +1,63 @@ +/* + \file led.h + + \brief led header file. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + + +#ifndef LED_H_ +#define LED_H_ +#include +#include + +#define LED_ON_STATIC 0x00 // OFF +#define LED_BLINK 0x55 // On-Off @ 250 mSec Interval +#define LED_BLIP 0x33 // On 500 @ mSec mSec Interval +#define LED_1_SEC_ON 0x0F // On 1 Sec, Off Remaining +#define LED_OFF_STATIC 0xFF + +typedef union +{ + uint8_t Full2Sec; + struct + { + unsigned tick0 : 1; + unsigned tick1 : 1; + unsigned tick2 : 1; + unsigned tick3 : 1; + unsigned tick4 : 1; + unsigned tick5 : 1; + unsigned tick6 : 1; + unsigned tick7 : 1; + }; +} ledTickState_t; + +void LED_serviceInit(); +void LED_test(void); + +void LED_modeRed(ledTickState_t configLed_2SecLoop); +void LED_modeBlue(ledTickState_t configLed_2SecLoop); +void LED_modeGreen(ledTickState_t configLed_2SecLoop); +void LED_modeYellow(ledTickState_t configLed_2SecLoop); +#endif /* LED_H_ */ diff --git a/AVRIoT.X/mcc_generated_files/mcc.c b/AVRIoT.X/mcc_generated_files/mcc.c new file mode 100644 index 0000000..96ffc94 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mcc.c @@ -0,0 +1,118 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include "mcc.h" + +/** + * Initializes MCU, drivers and middleware in the project +**/ +void SYSTEM_Initialize(void) +{ + PIN_MANAGER_Initialize(); + BOD_Initialize(); + WDT_Initialize(); + SLPCTRL_Initialize(); + CLKCTRL_Initialize(); + I2C0_Initialize(); + ADC0_Initialize(); + RTC_Initialize(); + SPI0_Initialize(); + USART2_Initialize(); + CPUINT_Initialize(); + CryptoAuth_Initialize(); + timeout_initialize(); +} + +/** + * \brief Initialize bod interface + */ +int8_t BOD_Initialize() +{ + //SLEEP DIS; + ccp_write_io((void*)&(BOD.CTRLA),0x00); + + //VLMCFG BELOW; VLMIE disabled; + BOD.INTCTRL = 0x00; + + //VLMLVL 5ABOVE; + BOD.VLMCTRLA = 0x00; + + return 0; +} + +ISR(BOD_VLM_vect) +{ + /* Insert your AC interrupt handling code here */ + + /* The interrupt flag has to be cleared manually */ + BOD.INTFLAGS = BOD_VLMIE_bm; +} + +/** + * \brief Initialize clkctrl interface + */ +int8_t CLKCTRL_Initialize() +{ + //RUNSTDBY disabled; + ccp_write_io((void*)&(CLKCTRL.OSC32KCTRLA),0x00); + + //CSUT 1K; SEL disabled; RUNSTDBY disabled; ENABLE disabled; + ccp_write_io((void*)&(CLKCTRL.XOSC32KCTRLA),0x00); + + //RUNSTDBY disabled; + ccp_write_io((void*)&(CLKCTRL.OSC20MCTRLA),0x00); + + //PDIV 2X; PEN enabled; + ccp_write_io((void*)&(CLKCTRL.MCLKCTRLB),0x01); + + //CLKOUT disabled; CLKSEL OSC20M; + ccp_write_io((void*)&(CLKCTRL.MCLKCTRLA),0x00); + + //LOCKEN disabled; + ccp_write_io((void*)&(CLKCTRL.MCLKLOCK),0x00); + + return 0; +} + +/** + * \brief Initialize slpctrl interface + */ +int8_t SLPCTRL_Initialize() +{ + //SMODE IDLE; SEN disabled; + ccp_write_io((void*)&(SLPCTRL.CTRLA),0x00); + + return 0; +} + +/** + * \brief Initialize wdt interface + */ + +int8_t WDT_Initialize() +{ + //WINDOW OFF; PERIOD OFF; + ccp_write_io((void*)&(WDT.CTRLA),0x00); + + return 0; +} diff --git a/AVRIoT.X/mcc_generated_files/mcc.h b/AVRIoT.X/mcc_generated_files/mcc.h new file mode 100644 index 0000000..96f72f6 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mcc.h @@ -0,0 +1,58 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef MCC_H +#define MCC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "utils/compiler.h" +#include "include/pin_manager.h" +#include "CryptoAuth_init.h" +#include "drivers/i2c_simple_master.h" +#include "delay.h" +#include "include/twi0_master.h" +#include "include/spi0.h" +#include "include/rtc.h" +#include "include/cpuint.h" +#include "include/usart2.h" +#include "include/adc0.h" +#include "drivers/spi_master.h" +#include "drivers/timeout.h" +#include "config/clock_config.h" + +/** + * Initializes MCU, drivers and middleware in the project +**/ +void SYSTEM_Initialize(void); +int8_t BOD_Initialize(); +int8_t CLKCTRL_Initialize(); +int8_t SLPCTRL_Initialize(); +int8_t WDT_Initialize(); + +#ifdef __cplusplus +} +#endif +#endif /* MCC_H */ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.c b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.c new file mode 100644 index 0000000..eded5df --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.c @@ -0,0 +1,92 @@ +/* + \file mqtt_comm_layer.c + + \brief MQTT Communication layer source file. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ +#include +#include +#include "mqtt_comm_layer.h" +#include "../mqtt_core/mqtt_core.h" +#include "../mqtt_winc_adapter.h" + +static mqttContext mqttConn; +static uint8_t mqttTxBuff[CFG_MQTT_TXBUFFER_SIZE]; +static uint8_t mqttRxBuff[CFG_MQTT_RXBUFFER_SIZE]; +static int8_t mqqtSocket = -1; + +static int lastSentSize; + +void MQTT_ClientInitialise(void) +{ + MQTT_initialiseState(); + memset(mqttTxBuff, 0 , sizeof(CFG_MQTT_TXBUFFER_SIZE)); + memset(mqttRxBuff, 0 , sizeof(CFG_MQTT_RXBUFFER_SIZE)); + mqttConn.mqttDataExchangeBuffers.txbuff.start = mqttTxBuff; + mqttConn.mqttDataExchangeBuffers.txbuff.bufferLength = CFG_MQTT_TXBUFFER_SIZE; + mqttConn.mqttDataExchangeBuffers.txbuff.currentLocation = mqttConn.mqttDataExchangeBuffers.txbuff.start; + mqttConn.mqttDataExchangeBuffers.txbuff.dataLength = 0; + mqttConn.mqttDataExchangeBuffers.rxbuff.start = mqttRxBuff; + mqttConn.mqttDataExchangeBuffers.rxbuff.bufferLength = CFG_MQTT_RXBUFFER_SIZE; + mqttConn.mqttDataExchangeBuffers.rxbuff.currentLocation = mqttConn.mqttDataExchangeBuffers.rxbuff.start; + mqttConn.mqttDataExchangeBuffers.rxbuff.dataLength = 0; + + mqttConn.tcpClientSocket = &mqqtSocket; +} + +mqttContext* MQTT_GetClientConnectionInfo() +{ + return &mqttConn; +} + + +bool MQTT_Send(mqttContext *connectionPtr) +{ + bool ret = false; + if((lastSentSize = BSD_send(*connectionPtr->tcpClientSocket, connectionPtr->mqttDataExchangeBuffers.txbuff.start, connectionPtr->mqttDataExchangeBuffers.txbuff.dataLength, 0)) > BSD_SUCCESS) + { + ret = true; + } + return ret; +} + +int MQTT_LastSentSize (void) +{ + return lastSentSize; +} + +bool MQTT_Close(mqttContext *connectionPtr) +{ + bool ret = false; + if(BSD_close(*connectionPtr->tcpClientSocket) == BSD_SUCCESS) + { + ret = true; + } + return ret; +} + +void MQTT_GetReceivedData(uint8_t *pData, uint8_t len) +{ + MQTT_ExchangeBufferInit(&mqttConn.mqttDataExchangeBuffers.rxbuff); + MQTT_ExchangeBufferWrite(&mqttConn.mqttDataExchangeBuffers.rxbuff, pData, len); +} diff --git a/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.h b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.h new file mode 100644 index 0000000..1f6fa92 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.h @@ -0,0 +1,59 @@ +/* + \file mqtt_comm_layer.h + + \brief MQTT Communication layer header file. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef MQTT_COMM_LAYER_H +#define MQTT_COMM_LAYER_H + +#include +#include +#include "../mqtt_exchange_buffer/mqtt_exchange_buffer.h" + +/** \brief MQTT connection information + * + * This is used by the application to store TCB, transmit buffer and receive + * buffer information. + */ +typedef struct +{ + // Todo: The MQTTSTATE variable should be in the context. We have one state in the lib now with many buffer contexts. +#ifdef TCPIP_LITE + tcpTCB_t tcbInfo; +#endif /* TCPIP_LITE */ + mqttBuffers mqttDataExchangeBuffers; + int8_t* tcpClientSocket; +} mqttContext; + + +void MQTT_ClientInitialise(void); +mqttContext* MQTT_GetClientConnectionInfo(); + +bool MQTT_Send(mqttContext *connectionPtr); +bool MQTT_Close(mqttContext *connectionPtr); +void MQTT_GetReceivedData(uint8_t *pData, uint8_t len); + +int MQTT_LastSentSize (void); +#endif /* MQTT_COMM_LAYER_H */ diff --git a/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_tcpipLite/mqtt_comm_layer.c b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_tcpipLite/mqtt_comm_layer.c new file mode 100644 index 0000000..10d58d8 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_tcpipLite/mqtt_comm_layer.c @@ -0,0 +1,132 @@ +/******************************************************************** + * + © [2018] Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR + * PURPOSE. + * + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + * ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + ************************************************************************* + * + * mqtt_comm_layer.c + * + * About: + * MQTT communication layer to abstract the TCP function calls. Intermediate + * layer linking the core of the MQTT Client to the MQTT TCP Connection + * handler. It is this layer that provides the abstracted APIs for sending and + * receiving TCP packets to the MQTT Client on one side, and for establishing + * TCP communication to the MQTT Connection Handler on the other. If a + * different TCP library usage than the one being currently used (TCPIP Lite + * library) is required, this is the only layer which will need changes thus + * keeping the MQTT Client core independent of the underlying TCP library being + * used. + * + * + ******************************************************************************/ + +#include +#include +#include +#include "mqtt_comm_layer.h" + + +/**********************Function implementations********************************/ + +socketState_t MQTT_SocketPoll(mqttContext *connectionPtr) +{ + socketState_t ret; + + ret = TCP_SocketPoll(&connectionPtr->tcbInfo); + + return ret; +} + + +error_msg MQTT_SocketInit(mqttContext *connectionPtr) +{ + error_msg ret = ERROR; + + ret = TCP_SocketInit(&connectionPtr->tcbInfo); + + return ret; +} + + +error_msg MQTT_InsertRxBuffer(mqttContext *connectionPtr) +{ + error_msg ret = ERROR; + + ret = TCP_InsertRxBuffer(&connectionPtr->tcbInfo, connectionPtr->mqttDataExchangeBuffers.rxbuff.start, connectionPtr->mqttDataExchangeBuffers.rxbuff.bufferLength); + + return ret; +} + + +error_msg MQTT_SocketConnect(mqttContext *connectionPtr, sockaddr_in4_t *srvaddr) +{ + error_msg ret = ERROR; + + ret = TCP_Connect(&connectionPtr->tcbInfo, srvaddr); + + return ret; +} + + +error_msg MQTT_Close(mqttContext *connectionPtr) +{ + error_msg ret = ERROR; + + ret = TCP_Close(&connectionPtr->tcbInfo); + + return ret; +} + + +int16_t MQTT_GetReceivedData(mqttContext *connectionPtr) +{ + int16_t length = 0; + + length = TCP_GetReceivedData(&connectionPtr->tcbInfo); + + return length; +} + + + +bool MQTT_Send(mqttContext *connectionPtr) +{ + bool ret = false; + + if(TCP_Send(&connectionPtr->tcbInfo, connectionPtr->mqttDataExchangeBuffers.txbuff.start, connectionPtr->mqttDataExchangeBuffers.txbuff.dataLength) == SUCCESS) + { + ret = true; + } + return ret; +} + + +error_msg MQTT_SocketRemove(mqttContext *connectionPtr) +{ + error_msg ret = ERROR; + + ret = TCP_SocketRemove(&connectionPtr->tcbInfo); + + return ret; +} + + + +/**********************Function implementations*(END)**************************/ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_tcpipLite/mqtt_comm_layer.h b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_tcpipLite/mqtt_comm_layer.h new file mode 100644 index 0000000..4765e58 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_tcpipLite/mqtt_comm_layer.h @@ -0,0 +1,175 @@ +/******************************************************************** + * + © [2018] Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR + * PURPOSE. + * + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + * ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + ************************************************************************* + * + * mqtt_comm_layer.h + * + * About: + * Definition of the MQTT Communication Layer which provides abstraction of TCP + * communication APIs for MQTT client. + * + * + ******************************************************************************/ + +#ifndef MQTT_CONNECTION_LAYER_H +#define MQTT_CONNECTION_LAYER_H + +#include +#include +#include "tcpv4.h" +#include "tcpip_types.h" +#include "mac_address.h" +#include "../mqtt_exchange_buffer/mqtt_exchange_buffer.h" + +/** \brief MQTT connection information + * + * This is used by the application to store TCB, transmit buffer and receive + * buffer information. + */ +typedef struct +{ + tcpTCB_t tcbInfo; + mqttBuffers mqttDataExchangeBuffers; +} mqttContext; + + +/** The function will provide an interface to read the status of the socket. + * This function internally calls the TCP_SocketPoll() from the TCPIP Lite + * library. + * + * @param connectionPtr + * pointer to MQTT connection information + * + * @return + * the socket state + */ +socketState_t MQTT_SocketPoll(mqttContext *connectionPtr); + + +/** Initialize the TCB for MQTT communication. This function internally calls + * the TCP_SocketInit() from TCPIP Lite library which in turn puts the socket + * in the CLOSED state. + * + * The user is responsible to manage allocation and releasing of the memory. + * + * @param connectionPtr + * pointer to MQTT connection information + * + * @return + * ERROR if socket is not initialised for MQTT TCP connection + * @return + * SUCCESS if the socket initialisation for MQTT was successful + */ +error_msg MQTT_SocketInit(mqttContext *connectionPtr); + + +/** Add the RX buffer to the socket for receiving MQTT packets. This function + * internally calls the TCP_InsertRxBuffer() function from the TCPIP Lite + * library + * + * @param connectionPtr + * pointer to MQTT connection information + * + * @return + * SUCCESS - The RX buffer was passed to socket successfully + * @return + * ERROR - passing of the RX buffer to the socket failed. + */ +error_msg MQTT_InsertRxBuffer(mqttContext *connectionPtr); + + +/** Start the MQTT client for a specific socket. This function internally calls + * TCP_Connect() from the TCPIP Lite library. + * + * @param connectionPtr + * pointer to MQTT connection information + * + * @param srvaddr + * port number and address used for establishing MQTT connection. + * + * @return + * SUCCESS - The server was started successfully + * @return + * ERROR - The starting of the server fails + */ +error_msg MQTT_SocketConnect(mqttContext *connectionPtr, sockaddr_in4_t *srvaddr); + + +/** Close the MQTT connection. This function internally calls + * TCP_Close() from the TCPIP Lite library. This will initiate the closing + * sequence for the TCP connection being used for MQTT. + * + * @param connectionPtr + * pointer to MQTT connection information + * + * @return + * SUCCESS - The close procedure was started successfully + * @return + * ERROR - The close procedure failed + */ +error_msg MQTT_Close(mqttContext *connectionPtr); + + +/** This function reads the available data from the MQTT socket. This function + * internally calls TCP_GetReceivedData() from the TCPIP Lite library. + * + * @param connectionPtr + * pointer to MQTT connection information + * + * @return + * Number of bytes received in the MQTT packet + * + */ +int16_t MQTT_GetReceivedData(mqttContext *connectionPtr); + + +/** Send a data to MQTT server using TCP connection.This function + * internally calls TCP_Send() from the TCPIP Lite library. + * + * @param connectionPtr + * pointer to MQTT connection information + * + * @return + * true - The data buffer was added to the socket/TCB successfully + * @return + * false - Adding the data buffer to the socket failed + */ +bool MQTT_Send(mqttContext *connectionPtr); + + +/** Remove the socket pointer being used for MQTT connection from the TCP Stack. + * This function internally calls TCP_SocketRemove() from the TCPIP Lite + * library. + * + * @param connectionPtr + * pointer to MQTT connection information + * + * @return + * ERROR if there was any problems + * @return + * SUCCESS if the socket removal was successful + */ +error_msg MQTT_SocketRemove(mqttContext *connectionPtr); + + +#endif /* MQTT_CONNECTION_LAYER_H */ + diff --git a/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_tcpipLite/mqtt_connection_handler.c b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_tcpipLite/mqtt_connection_handler.c new file mode 100644 index 0000000..6baec92 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_tcpipLite/mqtt_connection_handler.c @@ -0,0 +1,144 @@ +/******************************************************************** + * + © [2018] Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR + * PURPOSE. + * + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + * ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + ************************************************************************* + * + * mqtt_connection_handler.c + * + * About: + * MQTT Connection Handler to maintain TCP connection for MQTT communication. + * + * + ******************************************************************************/ +#include +#include "mqtt_connection_handler.h" +#include "../mqtt_core/mqtt_core.h" +#include "../mqtt_comm_tcpipLite/mqtt_comm_layer.h" +#include "tcpip_config.h" + + +/********************MQTT Connection Handler definitions**********************/ +//Consider enough time for both broker to send an SYNACK after client sends out +// a SYN packet, and client to send an ACK to broder, we take 60 seconds as +// timeout +#define MQTT_SOCKETCONNECT_TIMEOUT 60 + +/*****************MQTT Connection Handler definitions*(END)********************/ + + +/******************MQTT Connection Handler variables***************************/ +// Create the socket for the TCP Client +volatile sockaddr_in4_t mqttSocket; + + +mqttContext mqttConn; + + +/*****************MQTT Connection Handler variables*(END)**********************/ + + +/**********************Function implementations********************************/ +void MQTT_ClientInitialise(mqttConnectionInfo *mqttClientInfo) +{ + mqttSocket.addr.s_addr = MAKE_IPV4_ADDRESS(mqttClientInfo->ipAddress[0], mqttClientInfo->ipAddress[1], mqttClientInfo->ipAddress[2], mqttClientInfo->ipAddress[3]); + mqttSocket.port = mqttClientInfo->mqttTCPCommunicationPortNumber; + mqttConn.mqttDataExchangeBuffers.txbuff.start = mqttClientInfo->txDataBuffer; + mqttConn.mqttDataExchangeBuffers.txbuff.bufferLength = mqttClientInfo->txDataBufferLength; + mqttConn.mqttDataExchangeBuffers.rxbuff.start = mqttClientInfo->rxDataBuffer; + mqttConn.mqttDataExchangeBuffers.rxbuff.bufferLength = mqttClientInfo->rxDataBufferLength; +} + + +// ToDo Maintain prevState and currState of MQTT_Handler() to close the TCP +// connection in the event of MQTT DISCONNECT. +void MQTT_Manage(void) +{ + static time_t t_client; + static time_t socketTimeout; + static bool mqtt_conn_sent = false; + uint16_t rxLength; + socketState_t socketState; + rxLength = 0; + + socketState = MQTT_SocketPoll(&mqttConn); + + time(&t_client); + + switch(socketState) + { + case NOT_A_SOCKET: + //Try to send out MQTT connect request after MQTT_SOCKETCONNECT_TIMEOUT + socketTimeout = t_client + MQTT_SOCKETCONNECT_TIMEOUT; + MQTT_SocketInit(&mqttConn); + break; + case SOCKET_CLOSED: + // If the socket is closed we will try to connect again + MQTT_InsertRxBuffer(&mqttConn); + if (!mqtt_conn_sent) + { + MQTT_initialiseState(); + MQTT_SocketConnect(&mqttConn, &mqttSocket); + mqtt_conn_sent = true; + } + else + { + if(t_client > socketTimeout) + { + socketTimeout = t_client + MQTT_SOCKETCONNECT_TIMEOUT; + MQTT_SocketConnect(&mqttConn, &mqttSocket); + } + } + + // ToDo Update the MQTT handler state here + // If the MQTT state is DISCONNECTED, the TCP connection needs to be + // closed. + break; + case SOCKET_IN_PROGRESS: + // If the socket is closed try to connect again + // ToDo This might require some modifications + if(t_client >= socketTimeout) + { + MQTT_Close(&mqttConn); + } + break; + case SOCKET_CONNECTED: + // ToDo Maintain prevState and currState of MQTT_Handler() to + // close the TCP connection in the event of MQTT DISCONNECT. + rxLength = MQTT_GetReceivedData(&mqttConn); + if(rxLength > 0) + { + MQTT_ExchangeBufferWrite(&mqttConn.mqttDataExchangeBuffers.rxbuff, mqttConn.tcbInfo.rxBufferStart, rxLength); + MQTT_ReceptionHandler(&mqttConn); + MQTT_InsertRxBuffer(&mqttConn); + } + MQTT_TransmissionHandler(&mqttConn); + break; + case SOCKET_CLOSING: + MQTT_SocketRemove(&mqttConn); + mqtt_conn_sent = false; + break; + default: + break; + } +} + +/**********************Function implementations********************************/ + diff --git a/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_tcpipLite/mqtt_connection_handler.h b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_tcpipLite/mqtt_connection_handler.h new file mode 100644 index 0000000..dcadc14 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_comm_tcpipLite/mqtt_connection_handler.h @@ -0,0 +1,71 @@ +/******************************************************************** + * + * Copyright (C) 2014 Microchip Technology Inc. and its subsidiaries + * (Microchip). All rights reserved. + * + * You are permitted to use the software and its derivatives with Microchip + * products. See the license agreement accompanying this software, if any, for + * more info about your rights and obligations. + * + * SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF + * MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR + * PURPOSE. IN NO EVENT SHALL MICROCHIP, SMSC, OR ITS LICENSORS BE LIABLE OR + * OBLIGATED UNDER CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH + * OF WARRANTY, OR OTHER LEGAL EQUITABLE THEORY FOR ANY DIRECT OR INDIRECT + * DAMAGES OR EXPENSES INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES, OR OTHER SIMILAR COSTS. To the fullest + * extend allowed by law, Microchip and its licensors liability will not exceed + * the amount of fees, if any, that you paid directly to Microchip to use this + * software. + ************************************************************************* + * + * mqtt_connection_handler.h + * + * About: + * Definition of the MQTT TCP Connection + * + * + ******************************************************************************/ +#ifndef MQTT_CONNECTION_HANDLER_H +#define MQTT_CONNECTION_HANDLER_H + +#include + + +typedef struct +{ + uint8_t *ipAddress; + uint16_t mqttTCPCommunicationPortNumber; + uint8_t *txDataBuffer; + uint8_t txDataBufferLength; + uint8_t *rxDataBuffer; + uint8_t rxDataBufferLength; +} mqttConnectionInfo; + + +// ToDo Add description of APIs +void MQTT_ClientInitialise(mqttConnectionInfo *mqttClientInfo); + + +void MQTT_SetBrokerIPAddr(uint8_t *ipAddress); + + +void MQTT_SetTCPConnectionPort(uint16_t mqttTCPCommunicationPort); + + +void MQTT_SetTxDataBuffer(uint8_t *txDataBuffer, uint8_t txDataBufferLength); + + +void MQTT_SetRxDataBuffer(uint8_t *rxDataBuffer, uint8_t rxDataBufferLength); + + +void MQTT_Manage(void); + + +void DEMO_TCP_Client(void); + + +void TCP_Client_Initialize(); + +#endif /* MQTT_CONNECTION_HANDLER_H */ diff --git a/AVRIoT.X/mcc_generated_files/mqtt/mqtt_core/mqtt_core.c b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_core/mqtt_core.c new file mode 100644 index 0000000..5b40d27 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_core/mqtt_core.c @@ -0,0 +1,1436 @@ +/******************************************************************** + * + * (c) [2018] Microchip Technology Inc. and its subsidiaries. + * + * Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR + * PURPOSE. + * + * IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + * ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + ************************************************************************* + * + * mqtt_core.c + * + * About: + * MQTT client implementation. This is the core of the MQTT client protocol + * implementation. The aim of this file is to implement a hardware-independent + * subsystem that complies with [mqtt-v3.1.1-plus-errata01]. + * + * + ******************************************************************************/ +#include +#include +#include +#include +#include +#include "../../drivers/timeout.h" +#include "mqtt_core.h" +#include "../mqtt_packetTransfer_interface.h" +#include "../../config/mqtt_config.h" + +/***********************MQTT Client definitions********************************/ + +#define MQTT_TX_PACKET_DECISION_CONSTANT 0x01 +#define KEEP_ALIVE_CALCULATION_CONSTANT 0x01 +#define CONNECT_CLEAN_SESSION_MASK 0x02 + +// MQTT packet transmission flags. The creation and transmission processes of +// MQTT control packets uses a set of flags to indicate that a new packet is +// created and available for transmission. These flags are defined here. + +typedef union +{ + uint8_t All; + struct + { + unsigned newTxConnectPacket : 1; // Indicates new CONNECT packet available for transmission + unsigned newTxDisconnectPacket : 1; // Indicates new DISCONNECT packet available for transmission + unsigned newTxPublishPacket : 1; // Indicates new PUBLISH packet available for transmission + unsigned newTxSubscribePacket : 1; // Indicates new SUBSCRIBE packet available for transmission + unsigned newTxUnsubscribePacket : 1; // Indicates new UNSUBSCRIBE packet available for transmission + unsigned newTxPingreqPacket : 1; // Indicates new PINGREQ packet available for transmission + unsigned : 2; // Reserved + }; +} newTxDataFlags; + + +// MQTT packet reception flags. The reception processes of MQTT control packets +// uses a set of flags to identify the received packet type in order to +// correctly process it. These flags are defined here. +typedef union +{ + uint8_t All; + struct + { + unsigned newRxConnackPacket : 1; // Indicates new CONNACK packet has been received + unsigned newRxPublishPacket : 1; // Indicates new PUBLISH packet has been received + unsigned newRxSubackPacket : 1; // Indicates new SUBACK packet has been received + unsigned newRxUnsubackPacket : 1; // Indicates new UNSUBACK packet has been received + unsigned newRxPingrespPacket : 1; // Indicates new PINGRESP packet has been received + unsigned newRxPubackPacket : 1; // Indicates new PUBACK packet has been received + unsigned : 2; // Reserved + }; +} newRxDataFlags; + + +// MQTT packet transmission states. The transmission of MQTT control packets is +// performed inside the CONNECTED state. The Tx state machine states are defined +// here. These need to correspond to the respective flags in the union +// newTxDataFlags. +typedef enum +{ + SENDDISCONNECT = 2, + SENDPUBLISH = 4, + SENDSUBSCRIBE = 8, + SENDUNSUBSCRIBE = 16, + SENDPINGREQ = 32, +} mqttConnectCurrentTxSubstate; + + +// Function pointer for handling QoS levels. +typedef void (*qosLevelHandler)(uint8_t); + + +// The QoS levels in PUBLISH message are 0, 1 and 2 with quality of service +// increasing from QoS level 0 to 2. QoS level processing needs information +// about the QoS level and the appropriate callback function. The call back +// table type for determining whether the correct callback function for the QoS +// level under consideration is defined here. +typedef struct +{ + uint8_t qosLevel; + qosLevelHandler qosLevelHandlerFunction; +} qosLevelHandler_t; + + +/** \brief mqttTimeouts holds the flags to indicate timeouts for various MQTT packets. */ +typedef union +{ + uint8_t All; + struct + { + unsigned connackTimeOutOccured : 1; + unsigned pingreqTimeoutOccured : 1; + unsigned pingrespTimeoutOccured : 1; + unsigned subackTimeoutOccured : 1; + unsigned unsubackTimeoutOccured : 1; + unsigned unassigned : 3; + }; +}mqttTimeouts_t; + +/***********************MQTT Client definitions*(END)**************************/ + + +/***********************MQTT Client variables**********************************/ + +/** \brief MQTT packet transmission flags. */ +static newTxDataFlags mqttTxFlags; + + +/** \brief MQTT packet reception flags. */ +static newRxDataFlags mqttRxFlags; + + +/** \brief CONNECT packet to be transmitted. */ +static mqttConnectPacket txConnectPacket; + + +/** \brief PUBLISH packet to be transmitted. */ +static mqttPublishPacket txPublishPacket; + + +/** \brief SUBSCRIBE packet to be transmitted. */ +static mqttSubscribePacket txSubscribePacket; + + +/** \brief UNSUBSCRIBE packet to be transmitted. */ +static mqttUnsubscribePacket txUnsubscribePacket; + + +static volatile mqttTimeouts_t mqttTimeouts = {0}; + + +/** \brief Informs later up what the last State we changed from was*/ +static mqttHandlerState_t lastMQTTHandlerState = MQTT_NO_ERROR; + + +/** \brief Allows reference to be pased layer up what last receieve Header type was*/ +static mqttHeaderFlags lastReceivedPacketHeader; + + +/** \brief Used to allow reference of packet size layer up */ +static uint16_t lastReceivedLength; + + +/** \brief QoS level call back table. + * + * This callback table lists the callback functions for 3 different QoS levels + * of the MQTT PUBLISH message. For each QoS level there needs to be a + * corresponding callback function. + * Currently only QoS level 0 is supported. + * + */ +static const qosLevelHandler_t mqtt_qosLevelCallBackTable[] = +{ + // {0x00, handleQoSLevel0} +}; + + +/** \brief Current state of MQTT Client state machine. */ +static mqttCurrentState mqttState = DISCONNECTED; + + +/** \brief Tx substate for the state machine inside the CONNECTED state. */ +static mqttConnectCurrentTxSubstate mqttConnectTxSubstate; + +/***********************MQTT Client variables*(END)****************************/ + + +/**********************Local function definitions******************************/ + +/** \brief Encode the MQTT packet length. + * + * This function encodes the MQTT packet length. + * + * @param length + * @param *output + * + * @return + * - The number of bytes encoded + */ +static uint8_t mqttEncodeLength(uint16_t length, uint8_t *output); + + +/** \brief Decode the MQTT packet length. + * + * This function decodes the MQTT packet length available in the remainingLength + * field of the received packet. + * + * @param *data + * + * @return + * - The number of bytes decoded + */ +static uint32_t mqttDecodeLength(uint8_t *encodedData); + + +/** \brief Send the MQTT CONNECT packet. + * + * This function sends the MQTT CONNECT packet using the underlying +TCP layer. + * + * @param mqttConnectionPtr + * + * @return + * - The return code indicating success/failure of CONNECT packet +transmission. + */ +static bool mqttSendConnect(mqttContext *mqttConnectionPtr); + + +/** \brief Send the MQTT PUBLISH packet. + * + * This function sends the MQTT PUBLISH packet using the underlying +TCP layer. + * + * @param mqttConnectionPtr + * + * @return + * - The return code indicating success/failure of PUBLISH packet +transmission. + */ +static bool mqttSendPublish(mqttContext *mqttConnectionPtr); + + +/** \brief Send the MQTT SUBSCRIBE packet. + * + * This function sends the MQTT SUBSCRIBE packet using the underlying +TCP layer. + * + * @param mqttConnectionPtr + * + * @return + * - The return code indicating success/failure of SUBSCRIBE packet +transmission. + */ +static bool mqttSendSubscribe(mqttContext *mqttConnectionPtr); + + +/** \brief Send the MQTT UNSUBSCRIBE packet. + * + * This function sends the MQTT UNSUBSCRIBE packet using the underlying +TCP layer. + * + * @param mqttConnectionPtr + * + * @return + * - The return code indicating success/failure of UNSUBSCRIBE packet +transmission. + */ +static bool mqttSendUnsubscribe(mqttContext *mqttConnectionPtr); + + +/** \brief Send the MQTT PINGREQ packet. + * + * This function sends the MQTT PINGREQ packet using the underlying +TCP layer. + * + * @param mqttConnectionPtr + * + * @return + * - The return code indicating success/failure of PINGREQ packet +transmission. + */ +static bool mqttSendPingreq(mqttContext *mqttConnectionPtr); + + +/** \brief Send the MQTT DISCONNECT packet. + * + * This function sends the MQTT DISCONNECT packet using the underlying +TCP layer. + * + * @param mqttConnectionPtr + * + * @return + * - The return code indicating success/failure of DISCONNECT packet +transmission. + */ +static bool mqttSendDisconnect(mqttContext *mqttConnectionPtr); + + +/** \brief Process the MQTT CONNACK packet. + * + * This function processes the CONNACK packet received from the +broker. + * + * @param mqttConnectionPtr + * + * @return + * - The state of MQTT Tx and Rx handlers depending on whether the CONNACK +packet was received and processed correctly. + */ +static mqttCurrentState mqttProcessConnack(mqttContext *mqttConnectionPtr); + + +/** \brief Process the MQTT PINGRESP packet. + * + * This function processes the PINGRESP packet received from the +broker. + * + * @param mqttConnectionPtr + * + */ +static void mqttProcessPingresp(mqttContext *mqttConnectionPtr); + + +/** \brief Process the MQTT SUBACK packet. + * + * This function processes the SUBACK packet received from the +broker. + * + * @param mqttConnectionPtr + * + * @return + * - The state of MQTT Tx and Rx handlers depending on whether the mqttProcessSuback +packet was received and processed correctly. + */ +static mqttCurrentState mqttProcessSuback(mqttContext *mqttConnectionPtr); + + +/** \brief Process the MQTT UNSUBACK packet. + * + * This function processes the UNSUBACK packet received from the +broker. + * + * @param mqttConnectionPtr + * + * @return + * - The state of MQTT Tx and Rx handlers depending on whether the mqttProcessUnsuback +packet was received and processed correctly. + */ +static mqttCurrentState mqttProcessUnsuback(mqttContext *mqttConnectionPtr); + + +/** \brief Process the MQTT PUBLISH packet. + * + * This function processes the PUBLISH packet received from the +broker. + * + * @param mqttConnectionPtr + * + */ +static mqttCurrentState mqttProcessPublish(mqttContext *mqttConnectionPtr); + + +/** \brief Check whether timeout has occurred after sending CONNECT +packet. + * + * This function checks whether a timeout (30s) has occurred after sending +CONNECT packet, since a CONNACK packet is expected from the broker +within 30s. + * + * @param none + * + * @return + * - The number of ticks till the connackTimer expires. + */ +static uint32_t checkConnackTimeoutState(); +timerstruct_t connackTimer = {checkConnackTimeoutState, NULL}; + + +/** \brief Check whether timeout has occurred after receiving CONNACK +or PINGRESP packet. + * + * This function checks whether a timeout of (keepAliveTime)s has occurred after +receiving CONNACK or PINGRESP packet, since a client is expected to send some +packet to the broker within (keepAliveTime)s time period. + * + * @param none + * + * @return + * - The number of ticks till the connackTimer or pingrespTimer expires. + */ +static uint32_t checkPingreqTimeoutState(); +timerstruct_t pingreqTimer = {checkPingreqTimeoutState, NULL}; + + +/** \brief Check whether timeout has occurred after sending PINGREQ +packet. + * + * This function checks whether a timeout (30s) has occurred after sending +PINGREQ packet. In the current MQTT client implementation, the client +waits for 30s after transmission of PINGREQ packet to receive a PINGRESP +packet. + * + * @param none + * + * @return + * - The number of ticks till the pingreq expires. + */ +static uint32_t checkPingrespTimeoutState(); +timerstruct_t pingrespTimer = {checkPingrespTimeoutState, NULL}; + + +/** \brief Check whether timeout has occurred after sending SUBSCRIBE +packet. + * + * This function checks whether a timeout (30s) has occurred after sending +SUBSCRIBE packet. In the current MQTT client implementation, the client +waits for 30s after transmission of SUBSCRIBE packet to receive a SUBACK +packet. +* If the client does not receive a SUBACK packet from the server in a +reasonable period of time (currently set to 30s), it is treated as a +protocol violation. The client therefore will close the Network +Connection by checking subackTimeoutOccured flag (MQTT RFC, section 4.8). + * + * @param none + * + * @return + * - The number of ticks till the suback expires. + */ +static uint32_t checkSubackTimeoutState(); +timerstruct_t subackTimer = {checkSubackTimeoutState, NULL}; + + +/** \brief Check whether timeout has occurred after sending UNSUBSCRIBE +packet. + * + * This function checks whether a timeout (30s) has occurred after sending +UNSUBSCRIBE packet. In the current MQTT client implementation, the client +waits for 30s after transmission of UNSUBSCRIBE packet to receive a UNSUBACK +packet. +* If the client does not receive a UNSUBACK packet from the server in a +reasonable period of time (currently set to 30s), it is treated as a +protocol violation. The client therefore will close the Network +Connection by checking unsubackTimeoutOccured flag (MQTT RFC, section 4.8). + * + * @param none + * + * @return + * - The number of ticks till the unsuback expires. + */ +static uint32_t checkUnsubackTimeoutState(); +timerstruct_t unsubackTimer = {checkUnsubackTimeoutState, NULL}; + +/**********************Local function definitions*(END)************************/ + +/**********************Function implementations********************************/ +static uint32_t checkConnackTimeoutState() +{ + mqttTimeouts.connackTimeOutOccured = 1; // Mark that timer has executed + return 0; // Stop the timer +} + +static uint32_t checkPingreqTimeoutState() +{ + mqttTimeouts.pingreqTimeoutOccured = 1; // Mark that timer has executed + return ((ntohs(txConnectPacket.connectVariableHeader.keepAliveTimer) - KEEP_ALIVE_CALCULATION_CONSTANT) * SECONDS); +} + + +static uint32_t checkPingrespTimeoutState() +{ + mqttTimeouts.pingrespTimeoutOccured = 1; // Mark that timer has executed + return (WAITFORPINGRESP_TIMEOUT); +} + + +static uint32_t checkSubackTimeoutState() +{ + mqttTimeouts.subackTimeoutOccured = 1; // Mark that timer has executed + return 0; // Stop the timer +} + + +static uint32_t checkUnsubackTimeoutState() +{ + mqttTimeouts.unsubackTimeoutOccured = 1; // Mark that timer has executed + return 0; // Stop the timer +} + + +void MQTT_initialiseState(void) +{ + mqttState = DISCONNECTED; +} + + +mqttCurrentState MQTT_GetConnectionState(void) +{ + return mqttState; +} + + +bool MQTT_CreateConnectPacket(mqttConnectPacket *newConnectPacket) +{ + uint16_t payloadLength = 0; + memset(&txConnectPacket, 0, sizeof (txConnectPacket)); + + // Fixed header + txConnectPacket.connectFixedHeaderFlags.controlPacketType = CONNECT; + txConnectPacket.connectFixedHeaderFlags.duplicate = 0; + txConnectPacket.connectFixedHeaderFlags.qos = 0; + txConnectPacket.connectFixedHeaderFlags.retain = 0; + + // Variable header + txConnectPacket.connectVariableHeader.protocolName[0] = 0x00; + txConnectPacket.connectVariableHeader.protocolName[1] = 0x04; + txConnectPacket.connectVariableHeader.protocolName[2] = 'M'; + txConnectPacket.connectVariableHeader.protocolName[3] = 'Q'; + txConnectPacket.connectVariableHeader.protocolName[4] = 'T'; + txConnectPacket.connectVariableHeader.protocolName[5] = 'T'; + txConnectPacket.connectVariableHeader.protocolLevel = 0x04; + if ((newConnectPacket->passwordLength > 0) || (newConnectPacket->usernameLength > 0)) + { + txConnectPacket.connectVariableHeader.connectFlagsByte.All = 0xC2; + } + else + { + txConnectPacket.connectVariableHeader.connectFlagsByte.All = 0x02; + } + txConnectPacket.connectVariableHeader.keepAliveTimer = htons(newConnectPacket->connectVariableHeader.keepAliveTimer); + + // Payload + txConnectPacket.clientID = newConnectPacket->clientID; + txConnectPacket.clientIDLength = strlen((char*) txConnectPacket.clientID); + if (txConnectPacket.connectVariableHeader.connectFlagsByte.passwordFlag == 1) + { + txConnectPacket.password = newConnectPacket->password; + txConnectPacket.passwordLength = newConnectPacket->passwordLength; + } + if (txConnectPacket.connectVariableHeader.connectFlagsByte.usernameFlag == 1) + { + txConnectPacket.username = newConnectPacket->username; + txConnectPacket.usernameLength = newConnectPacket->usernameLength; + } + if (txConnectPacket.connectVariableHeader.connectFlagsByte.usernameFlag == 0) + { + payloadLength = txConnectPacket.clientIDLength; + } + else + { + payloadLength = txConnectPacket.clientIDLength + txConnectPacket.passwordLength + txConnectPacket.usernameLength + 4; + } + txConnectPacket.totalLength = sizeof (txConnectPacket.connectVariableHeader) + sizeof (payloadLength) + payloadLength; + if (txConnectPacket.connectVariableHeader.connectFlagsByte.usernameFlag == 1 || txConnectPacket.connectVariableHeader.connectFlagsByte.passwordFlag == 1) + { + txConnectPacket.passwordLength = htons(txConnectPacket.passwordLength); + txConnectPacket.usernameLength = htons(txConnectPacket.usernameLength); + } + txConnectPacket.clientIDLength = htons(txConnectPacket.clientIDLength); + + // Clear all pending transmissions first + mqttTxFlags.All = 0; + + // Now mark the Connect for sending + mqttTxFlags.newTxConnectPacket = 1; + mqttState = CONNECTING; + + return true; +} + + +bool MQTT_CreatePublishPacket(mqttPublishPacket *newPublishPacket) +{ + bool ret; + + ret = false; + + memset(&txPublishPacket, 0, sizeof (txPublishPacket)); + + if (mqttState == CONNECTED) + { + // Fixed header + txPublishPacket.publishHeaderFlags.controlPacketType = PUBLISH; + txPublishPacket.publishHeaderFlags.duplicate = newPublishPacket->publishHeaderFlags.duplicate; + txPublishPacket.publishHeaderFlags.qos = newPublishPacket->publishHeaderFlags.qos; + if ((txPublishPacket.publishHeaderFlags.qos == 0) && (txPublishPacket.publishHeaderFlags.duplicate != 0)) + { + txPublishPacket.publishHeaderFlags.duplicate = 0; + } + txPublishPacket.publishHeaderFlags.retain = newPublishPacket->publishHeaderFlags.retain; + + // Variable header + txPublishPacket.topic = newPublishPacket->topic; + txPublishPacket.topicLength = strlen((char*) newPublishPacket->topic); + if (newPublishPacket->publishHeaderFlags.qos > 0) + { + txPublishPacket.packetIdentifierLSB = newPublishPacket->packetIdentifierLSB; + txPublishPacket.packetIdentifierMSB = newPublishPacket->packetIdentifierMSB; + txPublishPacket.totalLength += sizeof (txPublishPacket.packetIdentifierLSB) + sizeof (txPublishPacket.packetIdentifierMSB); + } + + // Payload + txPublishPacket.payload = newPublishPacket->payload; + txPublishPacket.payloadLength = newPublishPacket->payloadLength; + txPublishPacket.totalLength += sizeof (txPublishPacket.topicLength) + txPublishPacket.topicLength + txPublishPacket.payloadLength; + txPublishPacket.topicLength = htons(txPublishPacket.topicLength); + + mqttTxFlags.newTxPublishPacket = 1; + ret = true; + } + return ret; +} + + +bool MQTT_CreateSubscribePacket(mqttSubscribePacket *newSubscribePacket) +{ + bool ret; + uint8_t topicCount = 0; + + ret = false; + + // The library is capable of handling only one SUBSCRIBE request at a time. + // A new SUBSCRIBE packet can be created only after reception of SUBACK for + // the previous SUBSCRIBE packet has been received. This condition is + // checked by checking the value of newRxSubackPacket flag. + if (mqttState == CONNECTED && mqttRxFlags.newRxSubackPacket == 0) + { + memset(&txSubscribePacket, 0, sizeof (txSubscribePacket)); + + // Fixed header + // MQTT-3.8.1-1: Bits 3,2,1,0 of fixed header MUST be set as 0010, else Server MUST treat as malformed + txSubscribePacket.subscribeHeaderFlags.controlPacketType = SUBSCRIBE; + txSubscribePacket.subscribeHeaderFlags.duplicate = 0; + txSubscribePacket.subscribeHeaderFlags.qos = 1; + txSubscribePacket.subscribeHeaderFlags.retain = 0; + + // Variable header + txSubscribePacket.packetIdentifierLSB = newSubscribePacket->packetIdentifierLSB; + txSubscribePacket.packetIdentifierMSB = newSubscribePacket->packetIdentifierMSB; + + // Payload + for (topicCount = 0; topicCount < NUM_TOPICS_SUBSCRIBE; topicCount++) + { + txSubscribePacket.subscribePayload[topicCount].topicLength = htons(newSubscribePacket->subscribePayload[topicCount].topicLength); + txSubscribePacket.subscribePayload[topicCount].topic = newSubscribePacket->subscribePayload[topicCount].topic; + txSubscribePacket.subscribePayload[topicCount].requestedQoS = newSubscribePacket->subscribePayload[topicCount].requestedQoS; + txSubscribePacket.totalLength += sizeof (txSubscribePacket.subscribePayload[topicCount].topicLength) + ntohs(txSubscribePacket.subscribePayload[topicCount].topicLength) + + sizeof (txSubscribePacket.subscribePayload[topicCount].requestedQoS); + } + + // The totalLength field is not essentially a part of the SUBSCRIBE + // packet. It is used for calculation of the remaining length field. + txSubscribePacket.totalLength += sizeof (txSubscribePacket.packetIdentifierLSB) + sizeof (txSubscribePacket.packetIdentifierMSB); + + mqttTxFlags.newTxSubscribePacket = 1; + ret = true; + } + return ret; +} + +bool MQTT_CreateUnsubscribePacket(mqttUnsubscribePacket *newUnsubscribePacket) +{ + bool ret; + uint8_t topicCount = 0; + + ret = false; + + // The library is capable of handling only one UNSUBSCRIBE request at a time. + // A new UNSUBSCRIBE packet can be created only after reception of UNSUBACK for + // the previous UNSUBSCRIBE packet has been received. This condition is + // checked by checking the value of newRxUnubackPacket flag. + if (mqttState == CONNECTED && mqttRxFlags.newRxUnsubackPacket == 0) + { + memset(&txUnsubscribePacket, 0, sizeof (txUnsubscribePacket)); + + // Fixed header + // MQTT-3.8.1-1: Bits 3,2,1,0 of fixed header MUST be set as 0010, else Server MUST treat as malformed + txUnsubscribePacket.unsubscribeHeaderFlags.controlPacketType = UNSUBSCRIBE; + txUnsubscribePacket.unsubscribeHeaderFlags.duplicate = 0; + txUnsubscribePacket.unsubscribeHeaderFlags.qos = 1; + txUnsubscribePacket.unsubscribeHeaderFlags.retain = 0; + + // Variable header + txUnsubscribePacket.packetIdentifierLSB = newUnsubscribePacket->packetIdentifierLSB; + txUnsubscribePacket.packetIdentifierMSB = newUnsubscribePacket->packetIdentifierMSB; + + // Payload + for (topicCount = 0; topicCount < NUM_TOPICS_UNSUBSCRIBE; topicCount++) + { + txUnsubscribePacket.unsubscribePayload[topicCount].topicLength = htons(newUnsubscribePacket->unsubscribePayload[topicCount].topicLength); + txUnsubscribePacket.unsubscribePayload[topicCount].topic = newUnsubscribePacket->unsubscribePayload[topicCount].topic; + txUnsubscribePacket.totalLength += sizeof (txUnsubscribePacket.unsubscribePayload[topicCount].topicLength) + ntohs(txUnsubscribePacket.unsubscribePayload[topicCount].topicLength); + } + + // The totalLength field is not essentially a part of the UNSUBSCRIBE + // packet. It is used for calculation of the remaining length field. + txUnsubscribePacket.totalLength += sizeof (txUnsubscribePacket.packetIdentifierLSB) + sizeof (txUnsubscribePacket.packetIdentifierMSB); + + mqttTxFlags.newTxUnsubscribePacket = 1; + ret = true; + } + return ret; +} + + +static bool mqttSendConnect(mqttContext *mqttConnectionPtr) +{ + bool ret = false; + + MQTT_ExchangeBufferInit(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff); + MQTT_ExchangeBufferInit(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff); + + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, (uint8_t*) & txConnectPacket.connectFixedHeaderFlags.All, sizeof (txConnectPacket.connectFixedHeaderFlags.All)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, (uint8_t*) txConnectPacket.remainingLength, mqttEncodeLength(txConnectPacket.totalLength, txConnectPacket.remainingLength)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, (uint8_t*) & txConnectPacket.connectVariableHeader, sizeof (txConnectPacket.connectVariableHeader)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, (uint8_t*) & txConnectPacket.clientIDLength, sizeof (txConnectPacket.clientIDLength)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, (uint8_t*) txConnectPacket.clientID, strlen((char*) txConnectPacket.clientID)); + + if ((txConnectPacket.passwordLength > 0) || (txConnectPacket.usernameLength > 0)) + { + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, (uint8_t*) & txConnectPacket.usernameLength, sizeof (txConnectPacket.usernameLength)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, (uint8_t*) txConnectPacket.username, ntohs(txConnectPacket.usernameLength)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, (uint8_t*) & txConnectPacket.passwordLength, sizeof (txConnectPacket.passwordLength)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, (uint8_t*) txConnectPacket.password, ntohs(txConnectPacket.passwordLength)); + } + + ret = MQTT_Send(mqttConnectionPtr); + + if (ret == true) + { + mqttTxFlags.newTxConnectPacket = 0; + } + return ret; +} + + +static bool mqttSendPublish(mqttContext *mqttConnectionPtr) +{ + bool ret = false; + + MQTT_ExchangeBufferInit(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff); + MQTT_ExchangeBufferInit(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff); + + // Copy the txPublishPacket data in TCP Tx buffer + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, &txPublishPacket.publishHeaderFlags.All, sizeof (txPublishPacket.publishHeaderFlags.All)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, txPublishPacket.remainingLength, mqttEncodeLength(txPublishPacket.totalLength, txPublishPacket.remainingLength)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, (uint8_t*) & txPublishPacket.topicLength, sizeof (txPublishPacket.topicLength)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, txPublishPacket.topic, ntohs(txPublishPacket.topicLength)); + + if (txPublishPacket.publishHeaderFlags.qos == 1) + { + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, &txPublishPacket.packetIdentifierMSB, sizeof (txPublishPacket.packetIdentifierMSB)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, &txPublishPacket.packetIdentifierLSB, sizeof (txPublishPacket.packetIdentifierLSB)); + } + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, txPublishPacket.payload, txPublishPacket.payloadLength); + + // Function call to TCP_Send() is abstracted + if (mqttTxFlags.newTxPublishPacket == 1 || txPublishPacket.publishHeaderFlags.duplicate == 1) + { + ret = MQTT_Send(mqttConnectionPtr); + + if (ret == true) + { + mqttTxFlags.newTxPublishPacket = 0; + if (txPublishPacket.publishHeaderFlags.qos == 1) + { + mqttRxFlags.newRxPubackPacket = 1; + } + } + } + return ret; +} + + +static uint8_t mqttEncodeLength(uint16_t length, uint8_t *output) +{ + uint8_t encodedByte; + uint8_t i = 0; + + do + { + encodedByte = length % 128; + length /= 128; + // if there are more data to encode, set the top bit of this byte + if (length > 0) + { + encodedByte |= 0x80; + } + output[i] = encodedByte; + i++; + } while (length); + + return i; /* Return the amount of bytes used */ +} + + +static uint32_t mqttDecodeLength(uint8_t *encodedData) +{ + uint32_t multiplier; + uint32_t value; + uint32_t i; + + multiplier = 1; + value = 0; + + for (i = 0; i == 0 || (encodedData[i - 1] & 0x80); i++) + { + value += (encodedData[i] & 0x7f) * multiplier; + multiplier *= 0x80; + } + + return value; +} + + +mqttCurrentState MQTT_Disconnect(mqttContext* connectionInfo) +{ + if ((mqttState == CONNECTED) || (mqttState == WAITFORCONNACK)) + { + timeout_delete(&pingreqTimer); + mqttSendDisconnect(connectionInfo); + mqttState = DISCONNECTED; + } + + return mqttState; +} + +static void mqttProcessPingresp(mqttContext *mqttConnectionPtr) +{ + mqttPingPacket txPingrespPacket; + + memset(&txPingrespPacket, 0, sizeof (txPingrespPacket)); + + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &txPingrespPacket.pingFixedHeader.All, sizeof (txPingrespPacket.pingFixedHeader.All)); + // Reload timeout for keepAliveTimer + // The timeout should be reloaded only if the keepAliveTimer is set + // to a non-zero value. + if (ntohs(txConnectPacket.connectVariableHeader.keepAliveTimer) != 0) + { + mqttTxFlags.newTxPingreqPacket = 1; + } + // Re-initialise the RX exchange buffer to be able to process the + // next incoming MQTT packet + MQTT_ExchangeBufferInit(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff); +} + + +static mqttCurrentState mqttProcessSuback(mqttContext *mqttConnectionPtr) +{ + mqttCurrentState ret; + mqttSubackPacket rxSubackPacket; + uint8_t topicNumbers = 0; + uint8_t topicCount = 0; + + memset(&rxSubackPacket, 0, sizeof (rxSubackPacket)); + + ret = CONNECTED; + + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &rxSubackPacket.subscribeAckHeaderFlags.All, sizeof (rxSubackPacket.subscribeAckHeaderFlags.All)); + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &rxSubackPacket.remainingLength[0], sizeof (rxSubackPacket.remainingLength[0])); + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &rxSubackPacket.packetIdentifierMSB, sizeof (rxSubackPacket.packetIdentifierMSB)); + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &rxSubackPacket.packetIdentifierLSB, sizeof (rxSubackPacket.packetIdentifierLSB)); + // The packetIdentifier of the SUBACK packet must match the + // packetIdentifier of the SUBSCRIBE packet. Since the library allows + // the application to create only one SUBSCRIBE packet at a time, + // checking this condition becomes simple. + if ((rxSubackPacket.packetIdentifierLSB != txSubscribePacket.packetIdentifierLSB) || (rxSubackPacket.packetIdentifierMSB != txSubscribePacket.packetIdentifierMSB)) { + // Change state appropriately + ret = DISCONNECTED; + } + else + { + // ToDo remove hardcoding + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, rxSubackPacket.returnCode, 1); + // ToDo This calculation needs to be modified after removing + // hardcoding + topicNumbers = (sizeof (rxSubackPacket.returnCode) / sizeof (rxSubackPacket.returnCode[0])); + for (topicCount = 0; topicCount < topicNumbers; topicCount++) + { + if (rxSubackPacket.returnCode[topicCount] == SUBSCRIBE_FAILURE) + { + // Change state appropriately + ret = DISCONNECTED; + break; + } + } + } + + mqttRxFlags.newRxSubackPacket = 0; + // Re-initialize the RX exchange buffer to be able to process the + // next incoming MQTT packet + MQTT_ExchangeBufferInit(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff); + return ret; +} + + +static mqttCurrentState mqttProcessUnsuback(mqttContext *mqttConnectionPtr) +{ + mqttCurrentState ret; + mqttUnsubackPacket rxUnsubackPacket; + + memset(&rxUnsubackPacket, 0, sizeof (rxUnsubackPacket)); + + ret = CONNECTED; + + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &rxUnsubackPacket.unsubAckHeaderFlags.All, sizeof (rxUnsubackPacket.unsubAckHeaderFlags.All)); + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &rxUnsubackPacket.remainingLength, sizeof (rxUnsubackPacket.remainingLength)); + if(rxUnsubackPacket.remainingLength != 2) + { + // The length of the variable header for UNSUBACK Packet has to be 2 + // according to MQTT RFC, section 3.11.1. + ret = DISCONNECTED; + } + else + { + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &rxUnsubackPacket.packetIdentifierMSB, sizeof (rxUnsubackPacket.packetIdentifierMSB)); + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &rxUnsubackPacket.packetIdentifierLSB, sizeof (rxUnsubackPacket.packetIdentifierLSB)); + // The packetIdentifier of the UNSUBACK packet must match the + // packetIdentifier of the UNSUBSCRIBE packet. Since the library allows + // the application to create only one UNSUBSCRIBE packet at a time, + // checking this condition becomes simple. + if ((rxUnsubackPacket.packetIdentifierLSB != txUnsubscribePacket.packetIdentifierLSB) || (rxUnsubackPacket.packetIdentifierMSB != txUnsubscribePacket.packetIdentifierMSB)) + { + // Change state appropriately + ret = DISCONNECTED; + } + } + + mqttRxFlags.newRxUnsubackPacket = 0; + // Re-initialize the RX exchange buffer to be able to process the + // next incoming MQTT packet + MQTT_ExchangeBufferInit(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff); + return ret; +} + + +static mqttCurrentState mqttProcessPublish(mqttContext *mqttConnectionPtr) +{ + mqttCurrentState ret; + uint32_t decodedLength; + mqttPublishPacket rxPublishPacket; + imqttHandlePublishDataFuncPtr publishRecvHandler; + uint8_t remainingLengthIndex; + + uint8_t mqttTopic[SUBSCRIBE_TOPIC_SIZE]; + uint8_t mqttPayload[PAYLOAD_SIZE]; + + decodedLength = 0; + + memset(&rxPublishPacket, 0, sizeof (rxPublishPacket)); + memset(mqttTopic, 0, sizeof (mqttTopic)); + memset(mqttPayload, 0, sizeof (mqttPayload)); + + // Fixed header + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &rxPublishPacket.publishHeaderFlags.All, sizeof (rxPublishPacket.publishHeaderFlags.All)); + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &rxPublishPacket.remainingLength[0], sizeof (rxPublishPacket.remainingLength[0])); + for (remainingLengthIndex = 1; rxPublishPacket.remainingLength[remainingLengthIndex - 1] & 0x80 && remainingLengthIndex < sizeof (rxPublishPacket.remainingLength); remainingLengthIndex++) + { + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &rxPublishPacket.remainingLength[remainingLengthIndex], 1); + } + decodedLength = mqttDecodeLength(&rxPublishPacket.remainingLength[0]); + + // Variable header + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, (uint8_t*) & rxPublishPacket.topicLength, sizeof (rxPublishPacket.topicLength)); + decodedLength -= sizeof (rxPublishPacket.topicLength); + rxPublishPacket.topic = (uint8_t*) mqttTopic; + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, rxPublishPacket.topic, ntohs(rxPublishPacket.topicLength)); + decodedLength -= ntohs(rxPublishPacket.topicLength); + + // Payload + rxPublishPacket.payload = (uint8_t*) mqttPayload; + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, rxPublishPacket.payload, decodedLength); + + // Send publish packet information to the application + publishRecvHandler = MQTT_GetPublishReceptionCallback(); + if(publishRecvHandler) + { + publishRecvHandler(rxPublishPacket.topic, rxPublishPacket.payload); + } + + // Re-initialize the RX exchange buffer to be able to process the + // next incoming MQTT packet + MQTT_ExchangeBufferInit(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff); + ret = CONNECTED; + return ret; +} + + +static void mqttProcessPuback(mqttContext *mqttConnectionPtr) +{ + mqttPubackPacket rxPubackPacket; + memset(&rxPubackPacket, 0, sizeof (rxPubackPacket)); + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, (uint8_t*) & rxPubackPacket.pubackFixedHeader, sizeof (rxPubackPacket.pubackFixedHeader)); + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &rxPubackPacket.remainingLength, sizeof (rxPubackPacket.remainingLength)); + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &rxPubackPacket.packetIdentifierMSB, sizeof (rxPubackPacket.packetIdentifierMSB)); + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &rxPubackPacket.packetIdentifierLSB, sizeof (rxPubackPacket.packetIdentifierLSB)); + + if (rxPubackPacket.packetIdentifierLSB == txPublishPacket.packetIdentifierLSB && rxPubackPacket.packetIdentifierMSB == txPublishPacket.packetIdentifierMSB) + { + mqttRxFlags.newRxPubackPacket = 0; + } +} + + +mqttHandlerState_t MQTT_GetLastHandlerState(void) +{ + return lastMQTTHandlerState; +} + + +mqttHeaderFlags MQTT_GetLastReceivedPacketHeader(void) +{ + return lastReceivedPacketHeader; +} + + +uint16_t MQTT_GetLastReceivedLength(void) +{ + return lastReceivedLength; +} + + +mqttCurrentState MQTT_TransmissionHandler(mqttContext *mqttConnectionPtr) +{ + bool packetSent = false; + uint8_t getSetFlag = 0; + uint16_t keepAliveTimeout = 0; + lastMQTTHandlerState = MQTT_NO_ERROR; + + switch (mqttState) + { + case CONNECTING: + case DISCONNECTED: + if (mqttTxFlags.newTxConnectPacket == 1) + { + packetSent = mqttSendConnect(mqttConnectionPtr); + + if (packetSent == true) + { + lastMQTTHandlerState = MQTT_SEND_SUCCESS; + } + else + { + lastMQTTHandlerState = MQTT_SEND_ERROR; + } + } + if (packetSent == true) + { + // The timeout API names are different in MCC foundation + // services timeout driver and START timeout driver + timeout_create(&connackTimer, WAITFORCONNACK_TIMEOUT); + mqttState = WAITFORCONNACK; + mqttTimeouts.connackTimeOutOccured = 0; + } + break; + + case CONNECTED: + // ToDo Find out ways to improve this logic + if (mqttTxFlags.All > 0) + { + while ((mqttTxFlags.All & (MQTT_TX_PACKET_DECISION_CONSTANT << getSetFlag)) == 0) + { + getSetFlag++; + } + mqttConnectTxSubstate = (MQTT_TX_PACKET_DECISION_CONSTANT << getSetFlag); + switch (mqttConnectTxSubstate) + { + case SENDPINGREQ: + if (mqttTimeouts.pingreqTimeoutOccured == 1) + { + // Change state for the next timeout to occur correctly + mqttTimeouts.pingreqTimeoutOccured = 0; + // Periodic sending of PINGREQ packet + if (mqttSendPingreq(mqttConnectionPtr)) + { + lastMQTTHandlerState = MQTT_SEND_SUCCESS; + } + } + break; + case SENDPUBLISH: + timeout_delete(&pingreqTimer); + packetSent = mqttSendPublish(mqttConnectionPtr); + if (packetSent == true) + { + lastMQTTHandlerState = MQTT_SEND_SUCCESS; + keepAliveTimeout = ntohs(txConnectPacket.connectVariableHeader.keepAliveTimer); + if (txConnectPacket.connectVariableHeader.keepAliveTimer > 0) + { + timeout_create(&pingreqTimer, ((keepAliveTimeout - KEEP_ALIVE_CALCULATION_CONSTANT) * SECONDS)); + } + } + else + { + mqttState = DISCONNECTED; + } + break; + case SENDSUBSCRIBE: + if (mqttSendSubscribe(mqttConnectionPtr)) + { + lastMQTTHandlerState = MQTT_SEND_SUCCESS; + } + keepAliveTimeout = ntohs(txConnectPacket.connectVariableHeader.keepAliveTimer); + if (txConnectPacket.connectVariableHeader.keepAliveTimer > 0) + { + timeout_create(&pingreqTimer, ((keepAliveTimeout - KEEP_ALIVE_CALCULATION_CONSTANT) * SECONDS)); + } + break; + case SENDUNSUBSCRIBE: + if (mqttSendUnsubscribe(mqttConnectionPtr)) + { + lastMQTTHandlerState = MQTT_SEND_SUCCESS; + } + keepAliveTimeout = ntohs(txConnectPacket.connectVariableHeader.keepAliveTimer); + if (txConnectPacket.connectVariableHeader.keepAliveTimer > 0) + { + timeout_create(&pingreqTimer, ((keepAliveTimeout - KEEP_ALIVE_CALCULATION_CONSTANT) * SECONDS)); + } + break; + default: + break; + } + } + break; + default: + // Go to DISCONNECTED? + break; + } + return mqttState; +} + + +mqttCurrentState MQTT_ReceptionHandler(mqttContext *mqttConnectionPtr) +{ + uint16_t keepAliveTimeout; + mqttHeaderFlags receivedPacketHeader; + lastMQTTHandlerState = MQTT_NO_ERROR; + + keepAliveTimeout = 0; + receivedPacketHeader.All = 0; + + if(mqttTimeouts.pingrespTimeoutOccured == 1 || mqttTimeouts.subackTimeoutOccured == 1 || mqttTimeouts.unsubackTimeoutOccured == 1) + { + // This implies that expected response has not been received from + // the server in a reasonable period of time (currently set to 30s). + // This is treated as a protocol violation. The client therefore + // will close the Network Connection (MQTT RFC, section 4.8). + mqttState = DISCONNECTED; + MQTT_Close(mqttConnectionPtr); + } + // If nothing to process + if (mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff.dataLength == 0) + return mqttState; + + switch (mqttState) + { + case WAITFORCONNACK: + keepAliveTimeout = ntohs(txConnectPacket.connectVariableHeader.keepAliveTimer); + if (mqttTimeouts.connackTimeOutOccured == 0) + { + // The timeout API names are different in MCC foundation + // services timeout driver and START timeout driver + timeout_delete(&connackTimer); + // Check the type of packet + uint16_t len = MQTT_ExchangeBufferPeek(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &receivedPacketHeader.All, sizeof (receivedPacketHeader.All)); + + if (receivedPacketHeader.controlPacketType == CONNACK) + { + mqttState = mqttProcessConnack(mqttConnectionPtr); + if (mqttState == CONNECTED) + { + if (keepAliveTimeout != 0) + { + // Send a PINGREQ packet after (keepAliveTimer - KEEP_ALIVE_CALCULATION_CONSTANT)s + // if keepAliveTime is non-zero + mqttTxFlags.newTxPingreqPacket = 1; + // The timeout API names are different in MCC foundation + // services timeout driver and START timeout driver + timeout_create(&pingreqTimer, ((keepAliveTimeout - KEEP_ALIVE_CALCULATION_CONSTANT) * SECONDS)); + } + lastMQTTHandlerState = MQTT_CONNACK; + } + else + { + lastMQTTHandlerState = MQTT_CONNACK_ERROR; + } + } + else + { + lastMQTTHandlerState = MQTT_INCORRECT_RESPONSE; + lastReceivedPacketHeader = receivedPacketHeader; + lastReceivedLength = len; + + //If the Client does not receive a CONNACK Packet from the Server within a reasonable amount of time, + //the Client SHOULD close the Network Connection. + mqttState = DISCONNECTED; + MQTT_Close(mqttConnectionPtr); + } + } + else + { + mqttState = DISCONNECTED; + MQTT_Close(mqttConnectionPtr); + + lastMQTTHandlerState = MQTT_CONNACK_TIMEOUT; + } + break; + + case CONNECTED: + // Check the type of packet + MQTT_ExchangeBufferPeek(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &receivedPacketHeader.All, sizeof (receivedPacketHeader.All)); + + switch (receivedPacketHeader.controlPacketType) + { + case PINGRESP: + // PINGRESP received + if ((mqttRxFlags.newRxPingrespPacket == 1) && (mqttTimeouts.pingrespTimeoutOccured == 0)) + { + timeout_delete(&pingrespTimer); + mqttProcessPingresp(mqttConnectionPtr); + } + break; + case SUBACK: + // SUBACK received + if ((mqttRxFlags.newRxSubackPacket == 1) && (mqttTimeouts.subackTimeoutOccured == 0)) + { + timeout_delete(&subackTimer); + mqttState = mqttProcessSuback(mqttConnectionPtr); + } + break; + case UNSUBACK: + // UNSUBACK received + if ((mqttRxFlags.newRxUnsubackPacket == 1) && (mqttTimeouts.unsubackTimeoutOccured == 0)) + { + timeout_delete(&unsubackTimer); + mqttState = mqttProcessUnsuback(mqttConnectionPtr); + } + break; + case PUBLISH: + // PUBLISH received + mqttProcessPublish(mqttConnectionPtr); + break; + case PUBACK: + mqttProcessPuback(mqttConnectionPtr); + break; + default: + break; + } + break; + + case CONNECTING: + break; + + default: + mqttState = MQTT_UNKNOWN_RECEIVE_STATE; + break; + } + + return mqttState; +} + + +static bool mqttSendSubscribe(mqttContext *mqttConnectionPtr) +{ + bool ret = false; + uint8_t topicCount = 0; + + MQTT_ExchangeBufferInit(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff); + MQTT_ExchangeBufferInit(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff); + + // Copy the txSubscribePacket data in TCP Tx buffer + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, &txSubscribePacket.subscribeHeaderFlags.All, sizeof (txSubscribePacket.subscribeHeaderFlags.All)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, txSubscribePacket.remainingLength, mqttEncodeLength(txSubscribePacket.totalLength, txSubscribePacket.remainingLength)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, &txSubscribePacket.packetIdentifierMSB, sizeof (txSubscribePacket.packetIdentifierMSB)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, &txSubscribePacket.packetIdentifierLSB, sizeof (txSubscribePacket.packetIdentifierLSB)); + + for (topicCount = 0; topicCount < NUM_TOPICS_SUBSCRIBE; topicCount++) + { + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, (uint8_t*) & txSubscribePacket.subscribePayload[topicCount].topicLength, sizeof (txSubscribePacket.subscribePayload[topicCount].topicLength)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, txSubscribePacket.subscribePayload[topicCount].topic, ntohs(txSubscribePacket.subscribePayload[topicCount].topicLength)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, &txSubscribePacket.subscribePayload[topicCount].requestedQoS, sizeof (txSubscribePacket.subscribePayload[topicCount].requestedQoS)); + } + + ret = MQTT_Send(mqttConnectionPtr); + + if (ret == true) + { + mqttTxFlags.newTxSubscribePacket = 0; + mqttRxFlags.newRxSubackPacket = 1; + + //The timeout API names are different in MCC foundation + //services timeout driver and START timeout driver + mqttTimeouts.subackTimeoutOccured = 0; + timeout_create(&subackTimer, (WAITFORSUBACK_TIMEOUT)); + } + + return ret; +} + + +static bool mqttSendUnsubscribe(mqttContext *mqttConnectionPtr) +{ + bool ret = false; + uint8_t topicCount = 0; + + MQTT_ExchangeBufferInit(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff); + MQTT_ExchangeBufferInit(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff); + + // Copy the txUnsubscribePacket data in TCP Tx buffer + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, &txUnsubscribePacket.unsubscribeHeaderFlags.All, sizeof(txUnsubscribePacket.unsubscribeHeaderFlags.All)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, txUnsubscribePacket.remainingLength, mqttEncodeLength(txUnsubscribePacket.totalLength, txUnsubscribePacket.remainingLength)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, &txUnsubscribePacket.packetIdentifierMSB, sizeof(txUnsubscribePacket.packetIdentifierMSB)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, &txUnsubscribePacket.packetIdentifierLSB, sizeof(txUnsubscribePacket.packetIdentifierLSB)); + + for (topicCount = 0; topicCount < NUM_TOPICS_UNSUBSCRIBE; topicCount++) + { + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, (uint8_t*)&txUnsubscribePacket.unsubscribePayload[topicCount].topicLength, sizeof(txUnsubscribePacket.unsubscribePayload[topicCount].topicLength)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, txUnsubscribePacket.unsubscribePayload[topicCount].topic, ntohs(txUnsubscribePacket.unsubscribePayload[topicCount].topicLength)); + } + + ret = MQTT_Send(mqttConnectionPtr); + + if (ret == true) + { + mqttTxFlags.newTxUnsubscribePacket = 0; + mqttRxFlags.newRxUnsubackPacket = 1; + + //The timeout API names are different in MCC foundation + //services timeout driver and START timeout driver + mqttTimeouts.unsubackTimeoutOccured = 0; + timeout_create(&unsubackTimer, (WAITFORUNSUBACK_TIMEOUT)); + } + + return ret; +} + + +static bool mqttSendPingreq(mqttContext *mqttConnectionPtr) +{ + bool ret; + mqttPingPacket txPingreqPacket; + + ret = false; + memset(&txPingreqPacket, 0, sizeof (txPingreqPacket)); + MQTT_ExchangeBufferInit(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff); + MQTT_ExchangeBufferInit(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff); + + // Send a PINGREQ packet here + txPingreqPacket.pingFixedHeader.controlPacketType = PINGREQ; + txPingreqPacket.pingFixedHeader.duplicate = 0; + txPingreqPacket.pingFixedHeader.qos = 0; + txPingreqPacket.pingFixedHeader.retain = 0; + txPingreqPacket.remainingLength = 0; + + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, &txPingreqPacket.pingFixedHeader.All, sizeof (txPingreqPacket.pingFixedHeader.All)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, &txPingreqPacket.remainingLength, sizeof (txPingreqPacket.remainingLength)); + + ret = MQTT_Send(mqttConnectionPtr); + + if (ret == true) + { + mqttTxFlags.newTxPingreqPacket = 0; + // Expect a PINGRESP packet + mqttRxFlags.newRxPingrespPacket = 1; + // The client expects the server to send a PINGRESP within + // keepAliveTimer value. + + //The timeout API names are different in MCC foundation + //services timeout driver and START timeout driver + timeout_create(&pingrespTimer, (WAITFORPINGRESP_TIMEOUT)); + } + + return ret; +} + + +static bool mqttSendDisconnect(mqttContext *mqttConnectionPtr) +{ + bool ret = false; + mqttDisconnectPacket txDisconnectPacket; + + memset(&txDisconnectPacket, 0, sizeof (txDisconnectPacket)); + MQTT_ExchangeBufferInit(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff); + MQTT_ExchangeBufferInit(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff); + + txDisconnectPacket.disconnectFixedHeader.controlPacketType = DISCONNECT; + txDisconnectPacket.disconnectFixedHeader.retain = 0; + txDisconnectPacket.disconnectFixedHeader.qos = 0; + txDisconnectPacket.disconnectFixedHeader.duplicate = 0; + + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, &txDisconnectPacket.disconnectFixedHeader.All, sizeof (txDisconnectPacket.disconnectFixedHeader.All)); + MQTT_ExchangeBufferWrite(&mqttConnectionPtr->mqttDataExchangeBuffers.txbuff, &txDisconnectPacket.remainingLength, sizeof (txDisconnectPacket.remainingLength)); + + ret = MQTT_Send(mqttConnectionPtr); + + if (ret == true) + { + mqttTxFlags.All = 0; + } + return ret; +} + + +static mqttCurrentState mqttProcessConnack(mqttContext *mqttConnectionPtr) +{ + mqttConnackPacket_t mqttConnackPacket; + + memset(&mqttConnackPacket, 0, sizeof (mqttConnackPacket)); + + // Check 1st (4) bytes in Rx MQTT Packet + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &mqttConnackPacket.connackFixedHeader.All, sizeof (mqttConnackPacket.connackFixedHeader.All)); + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &mqttConnackPacket.remainingLength, sizeof (mqttConnackPacket.remainingLength)); + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &mqttConnackPacket.connackVariableHeader.connackAcknowledgeFlags.All, sizeof (mqttConnackPacket.connackVariableHeader.connackAcknowledgeFlags.All)); + MQTT_ExchangeBufferRead(&mqttConnectionPtr->mqttDataExchangeBuffers.rxbuff, &mqttConnackPacket.connackVariableHeader.connackReturnCode, sizeof (mqttConnackPacket.connackVariableHeader.connackReturnCode)); + + if (mqttConnackPacket.connackVariableHeader.connackReturnCode == CONN_ACCEPTED) + { + return CONNECTED; + } + else + { + return DISCONNECTED; + } +} diff --git a/AVRIoT.X/mcc_generated_files/mqtt/mqtt_core/mqtt_core.h b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_core/mqtt_core.h new file mode 100644 index 0000000..311b1fb --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_core/mqtt_core.h @@ -0,0 +1,409 @@ +/* + \file mqtt_core.h + + \brief MQTT CORE source file. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef MQTT_CORE_H +#define MQTT_CORE_H + +#include "../../config/mqtt_config.h" + +#if !defined(TCPIP_BSD) && !defined(TCPIP_LITE) +#error : This project uses TCPIP BSD / LITE. Please add "TCPIP_BSD" or "TCPIP_LITE" to toolchain symbols. +#endif + +#include +#include +#ifdef TCPIP_BSD +#include "../mqtt_comm_bsd/mqtt_comm_layer.h" +#include "../winc/socket/socket.h" +#elif TCPIP_LITE +#include "../mqtt_comm_tcpipLite/mqtt_comm_layer.h" +#include "network.h" +#endif + + +/********************Timeout for MQTT packets***********************/ + +#define WAITFORCONNACK_TIMEOUT (30 * SECONDS) +#define WAITFORPINGRESP_TIMEOUT (30 * SECONDS) +#define WAITFORSUBACK_TIMEOUT (30 * SECONDS) +#define WAITFORUNSUBACK_TIMEOUT (30 * SECONDS) + +/*******************Timeout for MQTT packets*(END)******************/ + +#pragma pack(push,1) + +/** \brief Basic MQTT states + * + * The application uses these states to manage state transitions in the MQTT Tx + * and Rx handlers. + */ +typedef enum +{ + DISCONNECTED = 0, + CONNECTING = 1, + WAITFORCONNACK = 2, + CONNECTED = 3, +} mqttCurrentState; + +/** \brief MQTT Control Packet types, as dictated by the MQTT standard + * + * The application uses these to determine the packet type of MQTT message. + */ +typedef enum +{ + RESERVED = 0, + CONNECT = 1, + CONNACK = 2, + PUBLISH = 3, + PUBACK = 4, + SUBSCRIBE = 8, + SUBACK = 9, + UNSUBSCRIBE = 10, + UNSUBACK = 11, + PINGREQ = 12, + PINGRESP = 13, + DISCONNECT = 14 +} mqttControlPacketType_t; + +// MQTT packet CONNACK return codes. These are defined in the MQTT documentation +// and indicate the success/ failure of establishing a connection with the +// broker. +typedef enum +{ + CONN_ACCEPTED = 0, + CONN_REFUSED_PROTOCOL_VER = 1, + CONN_REFUSED_ID_REJECTED = 2, + CONN_REFUSED_SERV_UNAVAILABLE = 3, + CONN_REFUSED_USERNAME_OR_PASSWORD = 4, + CONN_REFUSED_NOT_AUTHORIZED = 5 +} connectReturnCode; + +// MQTT SUBACK return codes are defined in MQTT documentation. The return code indicates the success/failure +// and QoS level in case of success. The order of return codes must match the order of Topic Filters. +typedef enum +{ + SUBSCRIBE_SUCCESS_QoS0 = 0x00, + SUBSCRIBE_SUCCESS_QoS1 = 0x01, + SUBSCRIBE_SUCCESS_QoS2 = 0x02, + SUBSCRIBE_FAILURE = 0x80, +} subscribeAckReturnCode; + +// MQTT handler return codes. Use to inform layer of current state of MQTT operation. +typedef enum +{ + MQTT_NO_ERROR = 0, + MQTT_CONNACK_TIMEOUT = 1, + MQTT_INCORRECT_RESPONSE = 2, + MQTT_CONNACK_ERROR = 3, + MQTT_CONNACK = 4, + MQTT_SEND_SUCCESS = 5, + MQTT_SEND_ERROR = 6, + MQTT_UNKNOWN_RECEIVE_STATE = 7, +}mqttHandlerState_t; +/** \brief MQTT Fixed header format + * + * These are used by the application to handle the fixed header section of MQTT + * control packet. + */ +typedef union +{ + uint8_t All; + struct + { + unsigned retain : 1; // Retain flag // byte0, bit0 + unsigned qos : 2; // Quality of Service flag // byte0, bits 1, 2 + unsigned duplicate : 1; // Duplicate delivery flag // byte0, bit3 + unsigned controlPacketType : 4; // MQTT Control Packet type // byte0, bits 4, 5, 6, 7 + }; +} mqttHeaderFlags; + + +/** \brief MQTT CONNECT packet + * + * This is used by the application to form a CONNECT packet. + */ +typedef struct +{ + // Fixed header + mqttHeaderFlags connectFixedHeaderFlags; + uint8_t remainingLength[4]; // Remaining length a part of fixed header + + struct + { + // Variable header + uint8_t protocolName[6]; + uint8_t protocolLevel; + union + { + uint8_t All; + struct + { + unsigned reserved : 1; // Reserved // bit0 + unsigned cleanSession : 1; // "0" = Store session, "1" = Start new session // bit1 + unsigned willFlag : 1; // "0" = Will message absent, "1" = Will message present // bit2 + unsigned willQoS : 2; // "00" = Will flag reset (0), QoS = 0 or Will flag set (1), QoS = 0 + // "01" = Will flag set (1), QoS = 1 + // "10" = Will flag set (1), QoS = 2 //bits 3, 4 + unsigned willRetain : 1; // Retain flag // bit5 + unsigned passwordFlag : 1; // "0" = Username absent, "1" = Username present // bit6 + unsigned usernameFlag : 1; // "0" = Password absent, "1" = Password present // bit7 + }; + } connectFlagsByte; + uint16_t keepAliveTimer; + } connectVariableHeader; + + // Payload + uint16_t clientIDLength; + uint8_t *clientID; +// uint16_t willTopicLength; +// uint8_t *willTopic; +// uint16_t willMessageLength; +// uint8_t *willMessage; + uint16_t usernameLength; + uint8_t *username; + uint16_t passwordLength; + uint8_t *password; + + // The variables defined in this section are not defined in the MQTT RFC as + // members of CONNECT packet but are required nevertheless for correct + // formatting of the CONNECT packet. + uint16_t totalLength; +} mqttConnectPacket; + +/** \brief MQTT CONNACK packet + * + * This is used by the application to process a CONNACK packet. + */ +typedef struct +{ + // Fixed header + mqttHeaderFlags connackFixedHeader; + uint8_t remainingLength; + + // Variable header + struct + { + union + { + uint8_t All; + struct + { + unsigned sessionPresent : 1; // "0" = Store session, "1" = Start new session // bit0 + unsigned reserved : 7; // Reserved // bits 1-7 + }connackFlagBits; + }connackAcknowledgeFlags; + connectReturnCode connackReturnCode; + } connackVariableHeader; + +} mqttConnackPacket_t; + +/** \brief MQTT PUBLISH packet + * + * This is used by the application to form and process a PUBLISH packet. + */ +typedef struct +{ + // Fixed header + mqttHeaderFlags publishHeaderFlags; + uint8_t remainingLength[4]; + + // Variable header + // Topic name + uint16_t topicLength; + uint8_t *topic; + // Packet identifier present only when QoS level = 1 or QoS level = 2 + uint8_t packetIdentifierLSB; + uint8_t packetIdentifierMSB; + + // Payload + uint8_t payloadLength; + uint8_t *payload; + + uint16_t totalLength; +} mqttPublishPacket; + +/** \brief MQTT PUBACK packet + * + * This is used by the application to process a PUBACK packet. + */ +typedef struct +{ + mqttHeaderFlags pubackFixedHeader; + uint8_t remainingLength; + uint8_t packetIdentifierLSB; + uint8_t packetIdentifierMSB; +}mqttPubackPacket; + + +/** \brief MQTT PING packet + * + * This is used by the application to form and process a PINGREQ/PINGRESP packet. + */ +typedef struct +{ + // Fixed header + mqttHeaderFlags pingFixedHeader; + uint8_t remainingLength; +} mqttPingPacket; + +/** \brief MQTT DISCONNECT packet + * + * This is used by the application to form and send a DISCONNECT packet. + */ + +typedef struct +{ + // Fixed Header + mqttHeaderFlags disconnectFixedHeader; + uint8_t remainingLength; +} mqttDisconnectPacket; + + +/** \brief MQTT SUBSCRIBE Payload format + * + * These are used by the application to handle the payload section of MQTT + * subscribe packet. + */ +typedef struct +{ + // Topic name + uint16_t topicLength; + uint8_t *topic; + // A valid SUBSCRIBE Packet should contain QoS level = 0 or QoS level = 1 or QoS level = 2 + uint8_t requestedQoS; +} mqttSubscribePayload; + +/** \brief MQTT SUBSCRIBE packet + * + * This is used by the application to form and send a SUBSCRIBE packet. + */ +typedef struct +{ + // Fixed header + mqttHeaderFlags subscribeHeaderFlags; + uint8_t remainingLength[4]; + + // Variable header + uint8_t packetIdentifierLSB; + uint8_t packetIdentifierMSB; + + // Payload + // The payload of a SUBSCRIBE packet MUST contain at least one Topic Filter / QoS pair. + mqttSubscribePayload subscribePayload[NUM_TOPICS_SUBSCRIBE]; + + uint16_t totalLength; +} mqttSubscribePacket; + +/** \brief MQTT SUBACK packet + * + * This is used by the application to process a SUBACK packet. + */ +typedef struct +{ + // Fixed header + mqttHeaderFlags subscribeAckHeaderFlags; + uint8_t remainingLength[4]; + + //variable header + uint8_t packetIdentifierMSB; + uint8_t packetIdentifierLSB; + + //payload + subscribeAckReturnCode returnCode[NUM_TOPICS_SUBSCRIBE]; +} mqttSubackPacket; + + + +/** \brief MQTT UNSUBSCRIBE Payload format + * + * These are used by the application to handle the payload section of MQTT + * unsubscribe packet. + */ +typedef struct +{ + // Topic name + uint16_t topicLength; + uint8_t *topic; +} mqttUnsubscribePayload; + + +/** \brief MQTT UNSUBSCRIBE packet + * + * This is used by the application to form and send an UNSUBSCRIBE packet. + */ +typedef struct +{ + // Fixed header + mqttHeaderFlags unsubscribeHeaderFlags; + uint8_t remainingLength[4]; + + // Variable header + uint8_t packetIdentifierLSB; + uint8_t packetIdentifierMSB; + + // Payload + // The payload of a UNSUBSCRIBE packet MUST contain at least one Topic Filter / QoS pair. + mqttUnsubscribePayload unsubscribePayload[NUM_TOPICS_UNSUBSCRIBE]; + + uint16_t totalLength; +} mqttUnsubscribePacket; + + +/** \brief MQTT UNSUBACK packet + * + * This is used by the application to process a UNSUBACK packet. + */ +typedef struct +{ + // Fixed header + mqttHeaderFlags unsubAckHeaderFlags; + uint8_t remainingLength; + + //variable header + uint8_t packetIdentifierMSB; + uint8_t packetIdentifierLSB; + +} mqttUnsubackPacket; + +#pragma pack(pop) + + +/***********************MQTT Client definitions*(END)**************************/ +bool MQTT_CreateConnectPacket(mqttConnectPacket *newConnectPacket); +bool MQTT_CreatePublishPacket(mqttPublishPacket *newPublishPacket); +bool MQTT_CreateSubscribePacket(mqttSubscribePacket *newSubscribePacket); +bool MQTT_CreateUnsubscribePacket(mqttUnsubscribePacket *newUnsubscribePacket); +void MQTT_initialiseState(void); +mqttCurrentState MQTT_Disconnect(mqttContext *mqttContextPtr); +mqttCurrentState MQTT_TransmissionHandler(mqttContext *mqttContextPtr); +mqttCurrentState MQTT_ReceptionHandler(mqttContext *mqttContextPtr); +mqttCurrentState MQTT_GetConnectionState(void); +mqttHandlerState_t MQTT_GetLastHandlerState(void); +mqttHeaderFlags MQTT_GetLastReceivedPacketHeader(void); +uint16_t MQTT_GetLastReceivedLength(void); +#endif /* MQTT_CORE_H */ + diff --git a/AVRIoT.X/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.c b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.c new file mode 100644 index 0000000..7b80144 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.c @@ -0,0 +1,94 @@ +/* + \file mqtt_exchange_buffer.c + + \brief MQTT buffer handling source file. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ +#include "mqtt_exchange_buffer.h" + +void MQTT_ExchangeBufferInit(exchangeBuffer *buffer) +{ + buffer->currentLocation = buffer->start; + buffer->dataLength = 0; +} + +uint16_t MQTT_ExchangeBufferWrite(exchangeBuffer *buffer, uint8_t *data, uint16_t length) +{ + uint8_t *bend = buffer->start + buffer->bufferLength - 1; + uint8_t *dend = (buffer->currentLocation - buffer->start + buffer->dataLength) % buffer->bufferLength + buffer->start; + uint16_t i = 0; + + for (i = length; i > 0; i--) + { + if (dend > bend) + { + dend = buffer->start; + } + if (buffer->dataLength != 0 && dend == buffer->currentLocation) + { + break; + } + *dend = *data; + dend++; + data++; + buffer->dataLength++; + } + + return length; +} + +uint16_t MQTT_ExchangeBufferPeek(exchangeBuffer *buffer, uint8_t *data, uint16_t length) +{ + uint8_t *ptr = buffer->currentLocation; + uint8_t *bend = buffer->start + buffer->bufferLength - 1; + uint16_t i = 0; + + for (i = 0; i < length && i < buffer->dataLength; i++) + { + data[i] = ptr[i]; + if (ptr > bend) + { + ptr = buffer->start; + } + } + + return i; +} + +uint16_t MQTT_ExchangeBufferRead(exchangeBuffer *buffer, uint8_t *data, uint16_t length) +{ + uint8_t *bend = buffer->start + buffer->bufferLength - 1; + uint16_t i = 0; + + for (i = 0; i < length && buffer->dataLength > 0; i++) + { + data[i] = *buffer->currentLocation; + buffer->currentLocation++; + buffer->dataLength--; + if (buffer->currentLocation > bend) + { + buffer->currentLocation = buffer->start; + } + } + return i; +} diff --git a/AVRIoT.X/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.h b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.h new file mode 100644 index 0000000..ee81531 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.h @@ -0,0 +1,50 @@ + +/* + \file mqtt_exchange_buffer.h + + \brief MQTT buffer handling header file. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include + +typedef struct +{ + uint8_t *start; + uint8_t *currentLocation; + uint16_t bufferLength; + uint16_t dataLength; +} exchangeBuffer; + + +typedef struct +{ + exchangeBuffer txbuff; + exchangeBuffer rxbuff; +} mqttBuffers; + + +void MQTT_ExchangeBufferInit(exchangeBuffer *buffer); +uint16_t MQTT_ExchangeBufferPeek(exchangeBuffer *buffer, uint8_t *data, uint16_t length); +uint16_t MQTT_ExchangeBufferWrite(exchangeBuffer *buffer, uint8_t *data, uint16_t length); +uint16_t MQTT_ExchangeBufferRead(exchangeBuffer *buffer, uint8_t *data, uint16_t length); diff --git a/AVRIoT.X/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.c b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.c new file mode 100644 index 0000000..b8a5e8b --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.c @@ -0,0 +1,61 @@ +/******************************************************************** + * + (c) [2018] Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR + * PURPOSE. + * + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + * ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + ************************************************************************* + * + * mqtt_packetTransfer_interface.c + * + * About: + * Interface layer between MQTT core and application. The aim of this file is + * provide information about the user application to the MQTT core while + * keeping the MQTT core independent of the details specified in the user + * application. + * + * + ******************************************************************************/ +#include +#include +#include "mqtt_packetTransfer_interface.h" + +/**********************MQTT Interface layer variables**************************/ + +/** \brief Publish handler function pointer instance. + * + * This information obtained is used by the MQTT core to send the PUBLISH message + * received for a particular subscribed topic to the application for further + * processing. + */imqttHandlePublishDataFuncPtr publishRecvCallback; +/*******************MQTT Interface layer variables*(END)***********************/ + +/**********************Function implementations********************************/ + +void MQTT_SetPublishReceptionCallback(imqttHandlePublishDataFuncPtr appPublishReceptionCallback) +{ + publishRecvCallback = appPublishReceptionCallback; +} + +imqttHandlePublishDataFuncPtr MQTT_GetPublishReceptionCallback(void) +{ + return publishRecvCallback; +} + + +/**********************Function implementations*(END)**************************/ diff --git a/AVRIoT.X/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.h b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.h new file mode 100644 index 0000000..bd64c70 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.h @@ -0,0 +1,64 @@ +/* + \file mqtt_packetTransfer_interface.h + + \brief MQTT Packet Transfer Interface header file. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ +#ifndef MQTT_PACKET_TRANSFER_INTERFACE_H +#define MQTT_PACKET_TRANSFER_INTERFACE_H + +#include + +/*********************MQTT Interface layer definitions*************************/ +/** \brief Function pointer for interaction between the MQTT core and user + * application to transfer the information received as part of the published + * packet to the application. + **/ +typedef void (*imqttHandlePublishDataFuncPtr)(uint8_t *topic, uint8_t *payload); + +/*******************MQTT Interface layer definitions*(END)*********************/ + +/** \brief Set the publish reception handler information. + * + * This function is called by the user application to inform the MQTT core of + * the call back table defined to handle the received PUBLISH messages. + * + * @param appPublishReceptionCallback Instance of imqttHandlePublishDataFuncPtr + * to handle PUBLISH messages received for + * each topic. + */ +void MQTT_SetPublishReceptionCallback(imqttHandlePublishDataFuncPtr appPublishReceptionCallback); + +/** \brief Obtain the imqttHandlePublishDataFuncPtr callback information defined + * in the user application for processing messages received over the subscribed + * topic. + * + * Whenever a PUBLISH packet is received by the MQTT core, the publish handler + * returned by this function is called to process the PUBLISH packet. + * + * @return generic publish reception handler defined in the user application + */ +imqttHandlePublishDataFuncPtr MQTT_GetPublishReceptionCallback(void); + +#endif /* MQTT_PACKET_TRANSFER_INTERFACE_H */ + diff --git a/AVRIoT.X/mcc_generated_files/mqtt/mqtt_winc_adapter.c b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_winc_adapter.c new file mode 100644 index 0000000..2ac39eb --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_winc_adapter.c @@ -0,0 +1,847 @@ +/******************************************************************** + * + (c) [2018] Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR + * PURPOSE. + * + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + * ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + ************************************************************************* + * + * bsdWinc.c + * + * About: + * + * + ******************************************************************************/ +#include +#include +#include +#include +#include "mqtt_winc_adapter.h" + +#define MAX_SUPPORTED_SOCKETS 2 +/**********************BSD (WINC) Enumerator Translators ********************************/ +typedef enum +{ + WINC_AF_INET = 2, +}wincSupportedDomains_t; + +typedef enum +{ + WINC_STREAM = 1, + WINC_DGRAM = 2, +}wincSupportedTypes_t; + +typedef enum +{ + WINC_NON_TLS = 0, + WINC_TLS = 0x01, +}wincSupportedProtocol_t; + +typedef enum +{ + WINC_SOCK_ERR_NO_ERROR = 0, + WINC_SOCK_ERR_INVALID_ADDRESS = -1, + WINC_SOCK_ERR_ADDR_ALREADY_IN_USE = -2, + WINC_SOCK_ERR_MAX_TCP_SOCK = -3, + WINC_SOCK_ERR_MAX_UDP_SOCK = -4, + WINC_SOCK_ERR_INVALID_ARG = -6, + WINC_SOCK_ERR_MAX_LISTEN_SOCK = -7, + WINC_SOCK_ERR_INVALID = -9, + WINC_SOCK_ERR_ADDR_IS_REQUIRED = -11, + WINC_SOCK_ERR_CONN_ABORTED = -12, + WINC_SOCK_ERR_TIMEOUT = -13, + WINC_SOCK_ERR_BUFFER_FULL = -14, +}wincSocketResponses_t; + +typedef enum +{ + WINC_SO_SSL_BYPASS_X509_VERIF = 1, + WINC_SO_SSL_SNI = 2, + WINC_SO_SSL_ENABLE_SESSION_CACHING = 3, + WINC_SO_SSL_ENABLE_SNI_VALIDATION = 4, +}wincSupportedSockOptions; + +typedef enum +{ + WINC_SOL_SOCKET = 1, + WINC_SOL_SSL_SOCKET = 2, +}wincSupportedSockLevel; + +/*******************WINC specific socket address structure***************************/ +typedef struct { + uint16_t sa_family; //Socket address + uint8_t sa_data[14]; // Maximum size of all the different socket address structures. +}wincSupported_sockaddr; + +/**********************BSD (Private) Global Variables ********************************/ +static bsdErrno_t bsdErrorNumber; + +static packetReceptionHandler_t *packetRecvInfo; + +/**********************BSD (Private) Function Prototypes *****************************/ +static void bsd_setErrNo (bsdErrno_t errorNumber); + +/**********************BSD (Private) Function Implementations ************************/ +static void bsd_setErrNo (bsdErrno_t errorNumber) +{ + bsdErrorNumber = errorNumber; +} + +/**********************BSD (Public) Function Implementations **************************/ +bsdErrno_t BSD_GetErrNo(void) +{ + return bsdErrorNumber; +} + +packetReceptionHandler_t* getSocketInfo(uint8_t sock) +{ + uint8_t i = 0; + if (sock >= 0) + { + packetReceptionHandler_t *bsdSocketInfo = BSD_GetRecvHandlerTable(); + for(i = 0; i < MAX_SUPPORTED_SOCKETS; i++) + { + if(bsdSocketInfo) + { + if(*(bsdSocketInfo->socket) == sock) + { + return bsdSocketInfo; + } + } + bsdSocketInfo++; + } + } + return NULL; +} + +int BSD_socket(int domain, int type, int protocol) +{ + wincSupportedDomains_t wincDomain; + wincSupportedTypes_t wincType; + wincSupportedProtocol_t wincProtocol; + int8_t wincSocketReturn; + + switch ((bsdDomain_t)domain) + { + case PF_INET: + wincDomain = WINC_AF_INET; + break; + default: // Domain Not Implemented by WINC + bsd_setErrNo(EAFNOSUPPORT); + return BSD_ERROR; + } + + switch ((bsdTypes_t)type) + { + case BSD_SOCK_STREAM: + wincType = WINC_STREAM; + break; + case BSD_SOCK_DGRAM: + wincType = WINC_DGRAM; + break; + default: // Type Not Implemented by WINC + bsd_setErrNo(EAFNOSUPPORT); + return BSD_ERROR; + } + + switch ((wincSupportedProtocol_t)protocol) + { + case WINC_NON_TLS: + case WINC_TLS: + wincProtocol = protocol; + break; + default: // Protocol Not Implemented by WINC + bsd_setErrNo(EINVAL); + return BSD_ERROR; + } + + wincSocketReturn = socket((uint16_t)wincDomain, (uint8_t)wincType, (uint8_t)wincProtocol); + if (wincSocketReturn < 0) // WINC Socket Access Denied always returns -1 for failure to get socket + { + bsd_setErrNo(EACCES); + return BSD_ERROR; + } + + return wincSocketReturn; // >= 0 represents SUCCESS +} + +int BSD_connect(int socket, const struct bsd_sockaddr *name, socklen_t namelen) +{ + int returnValue = BSD_ERROR; + wincSocketResponses_t wincConnectReturn = WINC_SOCK_ERR_INVALID; + wincSupported_sockaddr winc_sockaddr; + + packetReceptionHandler_t *bsdSocket = getSocketInfo(socket); + if(!bsdSocket) + { + + } + else + { + winc_sockaddr.sa_family = name->sa_family; + memcpy(winc_sockaddr.sa_data, name->sa_data, sizeof(winc_sockaddr.sa_data)); + + if(winc_sockaddr.sa_family == PF_INET) + { + winc_sockaddr.sa_family = AF_INET; + wincConnectReturn = connect(socket, (struct sockaddr*)&winc_sockaddr, (uint8_t)namelen); + if(wincConnectReturn != WINC_SOCK_ERR_NO_ERROR) + { + + switch(wincConnectReturn) + { + case WINC_SOCK_ERR_INVALID_ARG: + if(socket < 0) + { + bsd_setErrNo(ENOTSOCK); + } + else if(name == NULL) + { + bsd_setErrNo(EADDRNOTAVAIL); + } + else if(namelen == 0) + { + bsd_setErrNo(EINVAL); + } else + { + bsd_setErrNo(ENOTSOCK); + } + break; + case WINC_SOCK_ERR_INVALID: + bsd_setErrNo(EIO); + break; + default: + break; + } + } + else + { + + bsdSocket->socketState = SOCKET_IN_PROGRESS; + returnValue = BSD_SUCCESS; + } + } + else + { + bsd_setErrNo(EAFNOSUPPORT); + } + } + return returnValue; +} + +void BSD_SetRecvHandlerTable(packetReceptionHandler_t *appRecvInfo) +{ + packetRecvInfo = appRecvInfo; +} + +packetReceptionHandler_t *BSD_GetRecvHandlerTable() +{ + return packetRecvInfo; +} + +int BSD_recv(int socket, const void *buf, size_t len, int flags) +{ + wincSocketResponses_t wincRecvReturn; + + if (flags != 0) + { // Flag Not Support by WINC implementation + bsd_setErrNo(EINVAL); + return BSD_ERROR; + } + + wincRecvReturn = recv((SOCKET)socket, (void*)buf, (uint16_t)len, (uint32_t)flags); + if(wincRecvReturn != WINC_SOCK_ERR_NO_ERROR) + { + switch(wincRecvReturn) + { + case WINC_SOCK_ERR_INVALID_ARG: + if(socket < 0) + { + + bsd_setErrNo(ENOTSOCK); + } + else if(buf == NULL) + { + + bsd_setErrNo(EFAULT); + } + else if(len == 0) + { + + bsd_setErrNo(EMSGSIZE); + } + else + { + + bsd_setErrNo(EINVAL); + } + break; + case WINC_SOCK_ERR_BUFFER_FULL: + + bsd_setErrNo(ENOBUFS); + break; + default: + + break; + } + return BSD_ERROR; + } + else + { + // The socket.c send() API only returns (0) to indicate No Error + // Current WINC implementation doesn't use returned value per BSD. + // debug_printGOOD("BSD: Recv Success"); + + // TODO: Number of Bytes received should be returned in correct implementation. + return BSD_SUCCESS; + } +} + +int BSD_close(int socket) +{ + wincSocketResponses_t wincCloseReturn; + + packetReceptionHandler_t* sock = getSocketInfo(socket); + if (sock != NULL) + { + sock->socketState = NOT_A_SOCKET; + } + + wincCloseReturn = close((SOCKET)socket); + + if (wincCloseReturn!= WINC_SOCK_ERR_NO_ERROR) + { + switch(wincCloseReturn) + { + case WINC_SOCK_ERR_INVALID_ARG: + bsd_setErrNo(EBADF); + break; + case WINC_SOCK_ERR_INVALID: + bsd_setErrNo(EIO); + break; + default: + break; + } + return BSD_ERROR; + } + else + { + return BSD_SUCCESS; + } +} + +uint32_t BSD_htonl(uint32_t hostlong) +{ + return _htonl(hostlong); +} + +uint16_t BSD_htons(uint16_t hostshort) +{ + return _htons(hostshort); +} + +uint32_t BSD_ntohl(uint32_t netlong) +{ + return _ntohl(netlong); +} + +uint16_t BSD_ntohs(uint16_t netshort) +{ + return _ntohs(netshort); +} + +int BSD_bind(int socket, const struct bsd_sockaddr *addr, socklen_t addrlen) +{ + wincSocketResponses_t wincBindReturn; + static wincSupported_sockaddr winc_sockaddr; + + winc_sockaddr.sa_family = addr->sa_family; + memcpy((void*)winc_sockaddr.sa_data, (const void *)addr->sa_data, sizeof(winc_sockaddr.sa_data)); + + switch(winc_sockaddr.sa_family) + { + case PF_INET: + winc_sockaddr.sa_family = AF_INET; + wincBindReturn = bind((int8_t)socket, (struct sockaddr*)&winc_sockaddr, (uint8_t)addrlen); + break; + default: //Address family not supported by WINC + bsd_setErrNo(EAFNOSUPPORT); + return BSD_ERROR; + } + + if (wincBindReturn != WINC_SOCK_ERR_NO_ERROR) + { + switch(wincBindReturn) + { + case WINC_SOCK_ERR_INVALID_ARG: + if(socket < 0) + { + bsd_setErrNo(ENOTSOCK); + } + else if(addr != NULL) + { + bsd_setErrNo(EFAULT); + } + else if(addrlen == 0) + { + bsd_setErrNo(EINVAL); + } + break; + case WINC_SOCK_ERR_INVALID: + bsd_setErrNo(EIO); + break; + default: + break; + } + return BSD_ERROR; + } + else + { + return BSD_SUCCESS; + } +} + +int BSD_recvfrom(int socket, void *buf, size_t len, int flags, struct bsd_sockaddr *from, socklen_t *fromlen) +{ + wincSocketResponses_t wincRecvFromReturn; + wincSupported_sockaddr winc_sockaddr; + + if (flags != 0) + { // Flag Not Support by WINC implementation + bsd_setErrNo(EINVAL); + return BSD_ERROR; + } + + winc_sockaddr.sa_family = from->sa_family; + memcpy((void*)winc_sockaddr.sa_data, (const void *)from->sa_data, sizeof(winc_sockaddr.sa_data)); + + switch(winc_sockaddr.sa_family) + { + case PF_INET: + winc_sockaddr.sa_family = AF_INET; + wincRecvFromReturn = recvfrom((SOCKET)socket, buf, (uint16_t)len, (uint32_t)flags); + break; + default: //Address family not supported by WINC + bsd_setErrNo(EAFNOSUPPORT); + return BSD_ERROR; + } + + if(wincRecvFromReturn != WINC_SOCK_ERR_NO_ERROR) + { + switch(wincRecvFromReturn) + { + case WINC_SOCK_ERR_INVALID_ARG: + if(socket < 0) + { + bsd_setErrNo(ENOTSOCK); + } + else if(buf == NULL) + { + bsd_setErrNo(EFAULT); + } + else if(len == 0) + { + bsd_setErrNo(EMSGSIZE); + } + else + { + bsd_setErrNo(EINVAL); + } + break; + case WINC_SOCK_ERR_BUFFER_FULL: + bsd_setErrNo(ENOBUFS); + break; + default: + break; + } + return BSD_ERROR; + } + else + { + // The socket.c send() API only returns (0) to indicate No Error + // Current WINC implementation doesn't use returned value per BSD. + + // TODO: Number of Bytes received should be returned in correct implementation. + return BSD_SUCCESS; + } +} + +int BSD_listen(int socket, int backlog) +{ + wincSocketResponses_t wincListenResponse; + + wincListenResponse = listen ((SOCKET)socket, (uint8_t)backlog); + + if (wincListenResponse != WINC_SOCK_ERR_NO_ERROR) + { + switch(wincListenResponse) + { + case SOCK_ERR_INVALID_ARG: + if (socket < 0) + { + bsd_setErrNo(ENOTSOCK); + } + else + { + bsd_setErrNo(EINVAL); + } + break; + case SOCK_ERR_INVALID: + bsd_setErrNo(EIO); + break; + default: + break; + } + return BSD_ERROR; + } + else + { + return BSD_SUCCESS; + } +} + +int BSD_accept(int socket, struct bsd_sockaddr * addr, socklen_t * addrlen) +{ + wincSocketResponses_t wincAcceptReturn; + wincSupported_sockaddr winc_sockaddr; + + winc_sockaddr.sa_family = addr->sa_family; + memcpy((void*)winc_sockaddr.sa_data, (const void *)addr->sa_data, sizeof(winc_sockaddr.sa_data)); + + switch(winc_sockaddr.sa_family) + { + case PF_INET: + winc_sockaddr.sa_family = AF_INET; + wincAcceptReturn = accept((SOCKET)socket, (struct sockaddr*)&winc_sockaddr, (uint8_t *)addrlen); + break; + default: //Address family not supported by WINC + bsd_setErrNo(EAFNOSUPPORT); + return BSD_ERROR; + } + + if (wincAcceptReturn != WINC_SOCK_ERR_NO_ERROR) + { + if (socket < 0) + { + bsd_setErrNo(ENOTSOCK); + } + else + { + bsd_setErrNo(EINVAL); + } + return BSD_ERROR; + } + else + { + return BSD_SUCCESS; + } +} + +int BSD_getsockopt(int socket, int level, int optname, void * optval, socklen_t * optlen) +{ + bsd_setErrNo(ENOSYS); + return BSD_ERROR; +} + +int BSD_setsockopt(int socket, int level, int optname, const void *optval, socklen_t optlen) +{ + wincSocketResponses_t wincSockOptResponse; + wincSupportedSockLevel wincSockLevel; + wincSupportedSockOptions wincSockOptions; + + switch((wincSupportedSockLevel)level) + { + case WINC_SOL_SOCKET: + case WINC_SOL_SSL_SOCKET: + wincSockLevel = level; + break; + default: + bsd_setErrNo(EIO); + return BSD_ERROR; + + } + switch((wincSupportedSockOptions)optname) + { + case WINC_SO_SSL_BYPASS_X509_VERIF: + case WINC_SO_SSL_SNI: + case WINC_SO_SSL_ENABLE_SESSION_CACHING: + case WINC_SO_SSL_ENABLE_SNI_VALIDATION: + wincSockOptions = optname; + break; + default: + bsd_setErrNo(EIO); + return BSD_ERROR; + } + wincSockOptResponse = setsockopt((SOCKET)socket, (uint8_t) wincSockLevel, (uint8_t) wincSockOptions, optval, (uint16_t)optlen); + if (wincSockOptResponse != WINC_SOCK_ERR_NO_ERROR) + { + switch(wincSockOptResponse) + { + case SOCK_ERR_INVALID_ARG: + if (socket < 0) + { + bsd_setErrNo(ENOTSOCK); + } + else if (optval == NULL) + { + bsd_setErrNo(EFAULT); + } + else + { + bsd_setErrNo(EINVAL); + } + break; + case SOCK_ERR_INVALID: + bsd_setErrNo(EIO); + break; + default: + break; + } + return BSD_ERROR; + } + else + { + return BSD_SUCCESS; + } +} + +int BSD_write(int fd, const void *buf, size_t nbytes) +{ + bsd_setErrNo(ENOSYS); + return BSD_ERROR; +} + +int BSD_read(int fd, void *buf, size_t nbytes) +{ + bsd_setErrNo(ENOSYS); + return BSD_ERROR; +} + +int BSD_poll(struct pollfd *ufds, unsigned int nfds, int timeout) +{ + bsd_setErrNo(ENOSYS); + return BSD_ERROR; +} + +socketState_t BSD_GetSocketState(int sock) +{ + socketState_t sockState; + packetReceptionHandler_t *bsdSocketInfo; + + sockState = NOT_A_SOCKET; + bsdSocketInfo = getSocketInfo(sock); + + if(bsdSocketInfo) + { + sockState = bsdSocketInfo->socketState; + } + + return sockState; +} + +int BSD_send(int socket, const void *msg, size_t len, int flags) +{ + wincSocketResponses_t wincSendReturn; + + if (flags != 0) + { // Flag Not Support by WINC implementation + bsd_setErrNo(EINVAL); + return BSD_ERROR; + } + + wincSendReturn = send((SOCKET)socket, (void*)msg, (uint16_t)len, (uint16_t)flags); + if(wincSendReturn != WINC_SOCK_ERR_NO_ERROR) + { + + // Most likely in this case we HAVE to update the socket state, especially if we get ENOTSOCK !!! + switch(wincSendReturn) + { + case WINC_SOCK_ERR_INVALID_ARG: + if(socket < 0) + { + bsd_setErrNo(ENOTSOCK); + } + else if(msg == NULL) + { + bsd_setErrNo(EFAULT); + } + else if(len > SOCKET_BUFFER_MAX_LENGTH) + { + bsd_setErrNo(EMSGSIZE); + } + else + { + bsd_setErrNo(EINVAL); + } + break; + case WINC_SOCK_ERR_BUFFER_FULL: + bsd_setErrNo(ENOBUFS); + break; + default: + break; + } + return BSD_ERROR; + } + else + { + // The socket.c send() API either sends the entire packet or + // does not send the packet at all. Therefore, if it does + // successfully send the packet, 'len' number of bytes will + // be transmitted. In this case, it is safe to return the + // value of 'len' as the number of bytes sent. + return len; + } +} + +int BSD_sendto(int socket, const void *msg, size_t len, int flags, const struct bsd_sockaddr *to, socklen_t tolen) +{ + wincSocketResponses_t wincSendToResponse; + wincSupported_sockaddr winc_sockaddr; + + if (flags != 0) + { // Flag Not Support by WINC implementation + bsd_setErrNo(EINVAL); + return BSD_ERROR; + } + + winc_sockaddr.sa_family = to->sa_family; + memcpy((void*)winc_sockaddr.sa_data, (const void *)to->sa_data, sizeof(winc_sockaddr.sa_data)); + + switch(winc_sockaddr.sa_family) + { + case PF_INET: + winc_sockaddr.sa_family = AF_INET; + + wincSendToResponse = sendto((SOCKET)socket, (void *)msg, (uint16_t)(len), (uint16_t)flags, (struct sockaddr *)&winc_sockaddr, (uint8_t)tolen); + break; + default: //Address family not supported by WINC + bsd_setErrNo(EAFNOSUPPORT); + return BSD_ERROR; + } + + if (wincSendToResponse != WINC_SOCK_ERR_NO_ERROR) + { + switch(wincSendToResponse) + { + case SOCK_ERR_INVALID_ARG: + if(socket < 0) + { + bsd_setErrNo(ENOTSOCK); + } + else if(msg == NULL) + { + bsd_setErrNo(EFAULT); + } + else if(len > SOCKET_BUFFER_MAX_LENGTH) + { + bsd_setErrNo(EMSGSIZE); + } + else + { + bsd_setErrNo(EINVAL); + } + break; + case SOCK_ERR_BUFFER_FULL: + bsd_setErrNo(ENOBUFS); + break; + default: + break; + } + return BSD_ERROR; + } + else + { + // The socket.c send() API either sends the entire packet or + // does not send the packet at all. Therefore, if it does + // successfully send the packet, 'len' number of bytes will + // be transmitted. In this case, it is safe to return the + // value of 'len' as the number of bytes sent. + return len; + } +} + +void BSD_SocketHandler(int8_t sock, uint8_t msgType, void *pMsg) +{ + packetReceptionHandler_t *bsdSocketInfo; + + bsdSocketInfo = getSocketInfo(sock); + if(bsdSocketInfo == NULL) { + + return; + } + switch (msgType) + { + case SOCKET_MSG_CONNECT: + if(pMsg) + { + tstrSocketConnectMsg *pstrConnect = (tstrSocketConnectMsg *)pMsg; + if (pstrConnect->s8Error >= 0) + { + + bsdSocketInfo->socketState = SOCKET_CONNECTED; + } + else + { + + BSD_close(sock); + } + } + break; + + case SOCKET_MSG_SEND: + bsdSocketInfo->socketState = SOCKET_CONNECTED; + break; + + case SOCKET_MSG_RECV: + if(pMsg) + { + tstrSocketRecvMsg *pstrRecv = (tstrSocketRecvMsg *)pMsg; + if (pstrRecv->s16BufferSize > 0) + { + bsdSocketInfo->recvCallBack(pstrRecv->pu8Buffer, pstrRecv->s16BufferSize); + bsdSocketInfo->socketState = SOCKET_CONNECTED; + + } else { + + BSD_close(sock); + } + } + break; + + case SOCKET_MSG_RECVFROM: + { + if(pMsg) + { + tstrSocketRecvMsg *pstrRecv = (tstrSocketRecvMsg *)pMsg; + if (pstrRecv->pu8Buffer && pstrRecv->s16BufferSize) + { + bsdSocketInfo->recvCallBack(pstrRecv->pu8Buffer, pstrRecv->s16BufferSize); + bsdSocketInfo->socketState = SOCKET_CONNECTED; + } else { + BSD_close(sock); + } + } + } + break; + + default: + + break; + } + +} diff --git a/AVRIoT.X/mcc_generated_files/mqtt/mqtt_winc_adapter.h b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_winc_adapter.h new file mode 100644 index 0000000..4d7706f --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mqtt/mqtt_winc_adapter.h @@ -0,0 +1,294 @@ +/******************************************************************** + * + (c) [2018] Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR + * PURPOSE. + * + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + * ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + ************************************************************************* + * + * bsdWINC.h + * + * About: + * + * + ******************************************************************************/ +#ifndef BSD_WINC_H +#define BSD_WINC_H + +#include +#include +#include +#include "../winc/socket/socket.h" + +/***************** BSD Generic Defines **********************/ +#define BSD_SUCCESS 0 +#define BSD_ERROR -1 + +/************* (END) BSD Generic Defines (END) *****************/ + +/***************** BSD Type Defined Enumerators **********************/ +// ToDo Check whether this enum can be moved to some other appropriate location +// This enum currently uses the same values as the TCPIPLite stack +typedef enum +{ + NOT_A_SOCKET = 0, // This is not a socket + SOCKET_CLOSED, // Socket closed + SOCKET_IN_PROGRESS, // The TCP listen or initiate a connection + SOCKET_CONNECTED, // The TCP is in established state user can send/receive data + SOCKET_CLOSING // The user initiate the closing procedure for this socket +} socketState_t; + +typedef enum +{ + PF_UNIX = 0, + PF_LOCAL, + PF_INET, // IPv4 + PF_INET6, + PF_IPX, + PF_NETLINK, // Kernel UI + PF_X25, + PF_AX25, + PF_ATMPVC, + PF_APPLETALK, + PF_PACKET, +}bsdDomain_t; + +typedef enum +{ + BSD_SOCK_STREAM = 1, + BSD_SOCK_DGRAM, + BSD_SOCK_SEQPACKET, + BSD_SOCK_RAW, + BSD_SOCK_RDM, + BSD_SOCK_PACKET, +}bsdTypes_t; + +/************** (END) BSD Type Defined Enumerators (END) *******************/ + +/***************** Error Number Defined Enumerators **********************/ +typedef enum +{ + ERROR0 = 0, + EPERM, + ENOENT, + ESRCH, + EINTR, + EIO, + ENXIO, + E2BIG, + ENOEXEC, + EBADF, + ECHILD, + EDEADLK, + ENOMEM, + EACCES, + EFAULT, + ENOTBLK, + EBUSY, + EEXIST, + EXDEV, + ENODEV, + ENOTDIR, + EISDIR, + EINVAL, + ENFILE, + EMFILE, + ENOTTY, + ETXTBSY, + EFBIG, + ENOSPC, + ESPIPE, + EROFS, + EMLINK, + EPIPE, + EDOM, // C99 + ERANGE, // C99 + EAGAIN, + EINPROGRESS, + EALREADY, + ENOTSOCK, + EDESTADDRREQ, + EMSGSIZE, + EPROTOTYPE, + ENOPROTOOPT, + EPROTONOSUPPORT, + ESOCKTNOSUPPORT, + EOPNOTSUPP, + EPFNOSUPPORT, + EAFNOSUPPORT, + EADDRINUSE, + EADDRNOTAVAIL, + ENETDOWN, + ENETUNREACH, + ENETRESET, + ECONNABORTED, + ECONNRESET, + ENOBUFS, + EISCONN, + ENOTCONN, + ESHUTDOWN, + ETIMEDOUT, + ECONNREFUSED, + ELOOP, + ENAMETOOLONG, + EHOSTDOWN, + EHOSTUNREACH, + ENOTEMPTY, + EPROCLIM, + EUSERS, + EDQUOT, + ESTALE, + EBADRPC, + ERPCMISMATCH, + EPROGUNAVAIL, + EPROGMISMATCH, + EPROCUNAVAIL, + ENOLCK, + ENOSYS, + EFTYPE, + EAUTH, + ENEEDAUTH, + EIDRM, + ENOMSG, + EOVERFLOW, + ECANCELED, + EILSEQ, // C99 + ENOATTR, + EDOOFUS, + EBADMSG, + EMULTIHOP, + ENOLINK, + EPROTO, + ENOTCAPABLE, + ECAPMODE, + ENOTRECOVERABLE, + EOWNERDEAD, +}bsdErrno_t; + +/***************** (END) BSD Type Defined Enumerators (END) **********************/ + +/***************** BSD Typedefs and Structures **********************/ + +typedef int socklen_t; + +typedef uint16_t sa_family_t; + +typedef uint16_t in_port_t; + +struct bsd_in_addr{ + in_addr_t s_addr; +}; + +struct bsd_sockaddr{ /* Socket address structure */ + sa_family_t sa_family; /* address family */ + char sa_data[14]; /* actually longer; address value */ +}; + +struct bsd_sockaddr_in{ /* Socket address internet style */ + sa_family_t sin_family; + in_port_t sin_port; + struct bsd_in_addr sin_addr; + char sin_zero[8]; +}; + +struct pollfd { + int fd; /* file descriptor */ + short events; /* events to look for */ + short revents; /* events returned */ +}; + +/***************** (END) BSD Typedefs and Structures (END) **************************************/ + +/*********************** BSD Adapter Definitions ********************************/ +/** \brief Function pointer for interaction between the WINC1500 BSD library + * and user application to transfer the information received over a socket to + * the application. + **/ +typedef void (*bsdRecvFuncPtr)(uint8_t *data, uint8_t length); + +// The call back table prototype for sending the packet received over a socket +// to the correct reception handler function defined in the user application. +// An instance of this table needs to be initialized by the user application to +// to specify the recv callback function for each socket. +typedef struct +{ + int8_t *socket; + bsdRecvFuncPtr recvCallBack; + socketState_t socketState; +} packetReceptionHandler_t; + + +/*********************** (END) BSD Adapter definitions (END) **************************/ + +/***************** BSD Public Functions **************************************/ +void BSD_SetRecvHandlerTable(packetReceptionHandler_t *appRecvInfo); + +packetReceptionHandler_t *BSD_GetRecvHandlerTable(); + +bsdErrno_t BSD_GetErrNo(void); + +int BSD_socket(int domain, int type, int protocol); + +int BSD_connect(int socket, const struct bsd_sockaddr *name, socklen_t namelen); + +int BSD_send(int socket, const void *msg, size_t len, int flags); + +int BSD_recv(int socket, const void *msg, size_t len, int flags); + +int BSD_close(int socket); + +uint32_t BSD_htonl(uint32_t hostlong); + +uint16_t BSD_htons(uint16_t hostshort); + +uint32_t BSD_ntohl(uint32_t netlong); + +uint16_t BSD_ntohs(uint16_t netshort); + +int BSD_bind(int socket, const struct bsd_sockaddr *addr, socklen_t addrlen); + +int BSD_recvfrom(int socket, void *buf, size_t len, int flags, struct bsd_sockaddr *from, socklen_t *fromlen); + +int BSD_listen(int socket, int backlog); + +int BSD_accept(int socket, struct bsd_sockaddr * addr, socklen_t * addrlen); + +int BSD_getsockopt(int socket, int level, int optname, void * optval, socklen_t * optlen); + +int BSD_setsockopt(int socket, int level, int optname, const void *optval, socklen_t optlen); + +int BSD_write(int fd, const void *buf, size_t nbytes); + +int BSD_read(int fd, void *buf, size_t nbytes); + +int BSD_poll(struct pollfd *ufds, unsigned int nfds, int timeout); + +int BSD_sendto(int socket, const void *msg, size_t len, int flags, const struct bsd_sockaddr *to, socklen_t tolen); + +void BSD_SocketHandler(int8_t sock, uint8_t msgType, void *pMsg); + +// ToDo This is not a true BSD_poll(). The actual BSD_poll() requires a +// structures and returns values which are not currently supported by WINC1500. +socketState_t BSD_GetSocketState(int sock); + +packetReceptionHandler_t* getSocketInfo(uint8_t sock); + +/************ (END) BSD Public Functions (END) *********************************/ + +#endif /* BSD_WINC */ + diff --git a/AVRIoT.X/mcc_generated_files/mqtt/nvmem_abstractionLayer/nvmem_hwLibInteraction.c b/AVRIoT.X/mcc_generated_files/mqtt/nvmem_abstractionLayer/nvmem_hwLibInteraction.c new file mode 100644 index 0000000..edaf841 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mqtt/nvmem_abstractionLayer/nvmem_hwLibInteraction.c @@ -0,0 +1,84 @@ +/******************************************************************** + * + ? [2018] Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR + * PURPOSE. + * + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + * ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + ************************************************************************* + * + * nvmem_hwLibInteraction.c + * + * About: + * MQTT hardware abstraction layer implementation. This file implements the + * APIs for handling the hardware dependent sections of the library. The + * function calls inside these APIs need to be replaced with hardware specific + * function calls depending on the device being used. + * + * + ******************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include "nvmem_hwLibInteraction.h" +#include "memory.h" + +/**********************Function implementations********************************/ + +uint8_t nvmem_readByte(uint32_t location) +{ + return DATAEE_ReadByte(location); +} + + +void nvmem_writeByte(uint32_t location, uint8_t value) +{ + DATAEE_WriteByte(location, value); +} + + +void nvmem_readBlock(uint32_t location, uint8_t *data, uint8_t numOfBytes) +{ + uint8_t i; + + for(i = 0; i < numOfBytes; i++) + { + data[i] = nvmem_readByte(location); + location++; + } +} + + +void nvmem_writeBlock(uint32_t location, uint8_t *data, uint8_t numOfBytes) +{ + uint8_t i; + + for(i = 0; i < numOfBytes; i++) + { + nvmem_writeByte(location, data[i]); + location++; + } +} + + + +/**********************Function implementations*(END)**************************/ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/mqtt/nvmem_abstractionLayer/nvmem_hwLibInteraction.h b/AVRIoT.X/mcc_generated_files/mqtt/nvmem_abstractionLayer/nvmem_hwLibInteraction.h new file mode 100644 index 0000000..7b2c65f --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mqtt/nvmem_abstractionLayer/nvmem_hwLibInteraction.h @@ -0,0 +1,81 @@ +/******************************************************************** + * + ? [2018] Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software + * and any derivatives exclusively with Microchip products. It is your + * responsibility to comply with third party license terms applicable to your + * use of third party software (including open source software) that may + * accompany Microchip software. + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR + * PURPOSE. + * + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + * ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + ************************************************************************* + * + * nvmem_hwLibInteraction.h + * + * About: + * Abstraction layer for non-volatile memory usage between MQTT client and the + * hardware platform being used. + * + ******************************************************************************/ + +#ifndef MQTT_HW_LIB_INTERACTION_H +#define MQTT_HW_LIB_INTERACTION_H + +#include + + +/***********************MQTT Client definitions********************************/ + +#define MQTT_VALIDITY_CHECK_ADDR 0x00 +#define MQTT_CLIENT_ID_ADDR 0x01 +#define MQTT_CLIENT_ID_CREATED 0xAA + +/** \brief Read a byte from non-volatile memory. + * + * @param location Location of the byte, in the range [0..(last memory location in device EEPROM/ external EEPROM)-1]. + * @return Value read from non-volatile memory. + */ +uint8_t nvmem_readByte(uint32_t location); + + +/** \brief Write a byte to non-volatile memory. + * + * @param location Location of the byte, in the range [0..(last memory location in device EEPROM/ external EEPROM)-1]. + * @param value Value that needs to be written to non-volatile memory. + */ +void nvmem_writeByte(uint32_t location, uint8_t value); + + +/** \brief Read a block of data from non-volatile memory. + * + * @param location Location of the byte, in the range [0..(last memory location in device EEPROM/ external EEPROM)-1]. + * @param data Pointer to the buffer location created for storing the read data. + * @param numOfBytes Total number of bytes to read from non-volatile memory. + */ +void nvmem_readBlock(uint32_t location, uint8_t *data, uint8_t numOfBytes); + + +/** \brief Write a block of data to non-volatile memory. + * + * @param location Location of the byte, in the range [0..(last memory location in device EEPROM/ external EEPROM)-1]. + * @param data Pointer to the buffer location created for storing the data to be written. + * @param numOfBytes Total number of bytes to be written to non-volatile memory. + */ +void nvmem_writeBlock(uint32_t location, uint8_t *data, uint8_t numOfBytes); + + + + +#endif /* MQTT_HW_LIB_INTERACTION_H */ + diff --git a/AVRIoT.X/mcc_generated_files/mqtt/readme.md b/AVRIoT.X/mcc_generated_files/mqtt/readme.md new file mode 100644 index 0000000..8e44be6 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/mqtt/readme.md @@ -0,0 +1 @@ +## This folder will contain the source and header files generated using the MQTT library ftl files. \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/sensors_handling.c b/AVRIoT.X/mcc_generated_files/sensors_handling.c new file mode 100644 index 0000000..17f4f45 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/sensors_handling.c @@ -0,0 +1,55 @@ +/* + \file sensors_handling.c + + \brief Sensors handling handler source file. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include +#include "sensors_handling.h" +#include "include/adc0.h" +#include "drivers/i2c_simple_master.h" + +#define MCP9809_ADDR 0x18 +#define MCP9808_REG_TA 0x05 +#define LIGHT_SENSOR_ADC_CHANNEL 5 + +uint16_t SENSORS_getLightValue(void) +{ + return ADC0_GetConversion(LIGHT_SENSOR_ADC_CHANNEL); +} + +int16_t SENSORS_getTempValue (void) +{ + int32_t temperature; + + temperature = i2c_read2ByteRegister(MCP9809_ADDR, MCP9808_REG_TA); + + temperature = temperature << 19; + temperature = temperature >> 19; + + temperature *= 100; + temperature /= 16; + + return temperature; +} diff --git a/AVRIoT.X/mcc_generated_files/sensors_handling.h b/AVRIoT.X/mcc_generated_files/sensors_handling.h new file mode 100644 index 0000000..0bbc950 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/sensors_handling.h @@ -0,0 +1,34 @@ +/* + \file sensors_handling.h + + \brief Sensors handler header file. + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef SENSORS_HANDLING_H +#define SENSORS_HANDLING_H + +uint16_t SENSORS_getLightValue(void); +int16_t SENSORS_getTempValue (void); + +#endif /* SENSORS_HANDLING_H*/ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/src/adc0.c b/AVRIoT.X/mcc_generated_files/src/adc0.c new file mode 100644 index 0000000..2525bdd --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/src/adc0.c @@ -0,0 +1,178 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include "../include/adc0.h" + +adc_irq_cb_t ADC0_window_cb = NULL; + +/** + * \brief Initialize ADC interface + */ +int8_t ADC0_Initialize() +{ + + //DUTYCYC DUTY25; + ADC0.CALIB = 0x01; + + //SAMPNUM ACC1; + ADC0.CTRLB = 0x00; + + //SAMPCAP disabled; REFSEL VDDREF; PRESC DIV16; + ADC0.CTRLC = 0x13; + + //INITDLY DLY0; ASDV ASVOFF; SAMPDLY 0; + ADC0.CTRLD = 0x00; + + //WINCM NONE; + ADC0.CTRLE = 0x00; + + //DBGRUN disabled; + ADC0.DBGCTRL = 0x00; + + //STARTEI disabled; + ADC0.EVCTRL = 0x00; + + //WCMP disabled; RESRDY disabled; + ADC0.INTCTRL = 0x00; + + //MUXPOS AIN5; + ADC0.MUXPOS = 0x05; + + //SAMPLEN 0; + ADC0.SAMPCTRL = 0x00; + + // Window comparator high threshold + ADC0.WINHT = 0x00; + + // Window comparator low threshold + ADC0.WINLT = 0x00; + + //RUNSTBY disabled; RESSEL 10BIT; FREERUN disabled; ENABLE enabled; + ADC0.CTRLA = 0x01; + + + return 0; +} + +void ADC0_Enable() +{ + ADC0.CTRLA |= ADC_ENABLE_bm; +} + +void ADC0_Disable() +{ + ADC0.CTRLA &= ~ADC_ENABLE_bm; +} + +void ADC0_EnableAutoTrigger() +{ + ADC0.EVCTRL |= ADC_STARTEI_bm; +} + +void ADC0_DisableAutoTrigger() +{ + ADC0.EVCTRL &= ~ADC_STARTEI_bm; +} + +void ADC0_SetWindowHigh(adc_result_t high) +{ + ADC0.WINHT = high; +} + +void ADC0_SetWindowLow(adc_result_t low) +{ + ADC0.WINLT = low; +} + +void ADC0_SetWindowMode(adc0_window_mode_t mode) +{ + ADC0.CTRLE = mode; +} + +void ADC0_SetWindowChannel(adc_0_channel_t channel) +{ + ADC0.MUXPOS = channel; +} + +void ADC0_StartConversion(adc_0_channel_t channel) +{ + ADC0.MUXPOS = channel; + ADC0.COMMAND = ADC_STCONV_bm; +} + +bool ADC0_IsConversionDone() +{ + return (ADC0.INTFLAGS & ADC_RESRDY_bm); +} + +adc_result_t ADC0_GetConversionResult(void) +{ + return (ADC0.RES); +} + +bool ADC0_GetWindowResult(void) +{ + bool temp = (ADC0.INTFLAGS & ADC_WCMP_bm); + ADC0.INTFLAGS = ADC_WCMP_bm; // Clear intflag if set + return temp; +} + +adc_result_t ADC0_GetConversion(adc_0_channel_t channel) +{ + adc_result_t res; + + ADC0_StartConversion(channel); + while (!ADC0_IsConversionDone()); + res = ADC0_GetConversionResult(); + ADC0.INTFLAGS = ADC_RESRDY_bm; + return res; +} + +uint8_t ADC0_GetResolution() +{ + return (ADC0.CTRLA & ADC_RESSEL_bm) ? 8 : 10; +} + +void ADC0_RegisterWindowCallback(adc_irq_cb_t f) +{ + ADC0_window_cb = f; +} + +ISR(ADC0_WCOMP_vect) +{ + + if (ADC0_window_cb != NULL) { + ADC0_window_cb(); + } + + // Clear the interrupt flag + ADC0.INTFLAGS = ADC_WCMP_bm; +} + +ISR(ADC0_RESRDY_vect) +{ + /* Insert your ADC result ready interrupt handling code here */ + + /* The interrupt flag has to be cleared manually */ + ADC0.INTFLAGS = ADC_RESRDY_bm; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/src/cpuint.c b/AVRIoT.X/mcc_generated_files/src/cpuint.c new file mode 100644 index 0000000..f733275 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/src/cpuint.c @@ -0,0 +1,45 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include "../include/cpuint.h" + +/** + * \brief Initialize cpuint interface + */ +int8_t CPUINT_Initialize() +{ + /* IVSEL and CVT are Configuration Change Protected */ + + //IVSEL disabled; CVT disabled; LVL0RR disabled; + ccp_write_io((void*)&(CPUINT.CTRLA),0x00); + + //LVL0PRI 0; + CPUINT.LVL0PRI = 0x00; + + //USART2 RX Interrupt vector number provided to give it the highest priority + CPUINT.LVL1VEC = 0x1F; + + ENABLE_INTERRUPTS(); + + return 0; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/src/pin_manager.c b/AVRIoT.X/mcc_generated_files/src/pin_manager.c new file mode 100644 index 0000000..9a25ad0 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/src/pin_manager.c @@ -0,0 +1,462 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include "../include/pin_manager.h" +static void (*PORTA_PA2_InterruptHandler)(void); +static void (*PORTD_PD5_InterruptHandler)(void); +static void (*PORTF_SW0_InterruptHandler)(void); +static void (*PORTA_RST_InterruptHandler)(void); +static void (*PORTA_PA4_InterruptHandler)(void); +static void (*PORTA_PA3_InterruptHandler)(void); +static void (*PORTA_PA6_InterruptHandler)(void); +static void (*PORTA_PA5_InterruptHandler)(void); +static void (*PORTA_nCS_InterruptHandler)(void); +static void (*PORTF_PF1_InterruptHandler)(void); +static void (*PORTF_PF0_InterruptHandler)(void); +static void (*PORTD_LED_YELLOW_InterruptHandler)(void); +static void (*PORTF_CE_InterruptHandler)(void); +static void (*PORTD_LED_RED_InterruptHandler)(void); +static void (*PORTF_INT_InterruptHandler)(void); +static void (*PORTF_SW1_InterruptHandler)(void); +static void (*PORTD_LED_BLUE_InterruptHandler)(void); +static void (*PORTD_LED_GREEN_InterruptHandler)(void); +static void (*PORTF_WAKE_InterruptHandler)(void); + +void PORT_Initialize(void); + +void PIN_MANAGER_Initialize() +{ + PORT_Initialize(); + + /* DIR Registers Initialization */ + PORTA.DIR = 0xD2; + PORTB.DIR = 0x00; + PORTC.DIR = 0x00; + PORTD.DIR = 0x0F; + PORTE.DIR = 0x00; + PORTF.DIR = 0x19; + + /* OUT Registers Initialization */ + PORTA.OUT = 0x80; + PORTB.OUT = 0x00; + PORTC.OUT = 0x00; + PORTD.OUT = 0x0F; + PORTE.OUT = 0x00; + PORTF.OUT = 0x00; + + /* PINxCTRL registers Initialization */ + PORTA.PIN0CTRL = 0x00; + PORTA.PIN1CTRL = 0x00; + PORTA.PIN2CTRL = 0x00; + PORTA.PIN3CTRL = 0x00; + PORTA.PIN4CTRL = 0x00; + PORTA.PIN5CTRL = 0x00; + PORTA.PIN6CTRL = 0x00; + PORTA.PIN7CTRL = 0x00; + PORTB.PIN0CTRL = 0x00; + PORTB.PIN1CTRL = 0x00; + PORTB.PIN2CTRL = 0x00; + PORTB.PIN3CTRL = 0x00; + PORTB.PIN4CTRL = 0x00; + PORTB.PIN5CTRL = 0x00; + PORTB.PIN6CTRL = 0x00; + PORTB.PIN7CTRL = 0x00; + PORTC.PIN0CTRL = 0x00; + PORTC.PIN1CTRL = 0x00; + PORTC.PIN2CTRL = 0x00; + PORTC.PIN3CTRL = 0x00; + PORTC.PIN4CTRL = 0x00; + PORTC.PIN5CTRL = 0x00; + PORTC.PIN6CTRL = 0x00; + PORTC.PIN7CTRL = 0x00; + PORTD.PIN0CTRL = 0x00; + PORTD.PIN1CTRL = 0x00; + PORTD.PIN2CTRL = 0x00; + PORTD.PIN3CTRL = 0x00; + PORTD.PIN4CTRL = 0x00; + PORTD.PIN5CTRL = 0x00; + PORTD.PIN6CTRL = 0x00; + PORTD.PIN7CTRL = 0x00; + PORTE.PIN0CTRL = 0x00; + PORTE.PIN1CTRL = 0x00; + PORTE.PIN2CTRL = 0x00; + PORTE.PIN3CTRL = 0x00; + PORTE.PIN4CTRL = 0x00; + PORTE.PIN5CTRL = 0x00; + PORTE.PIN6CTRL = 0x00; + PORTE.PIN7CTRL = 0x00; + PORTF.PIN0CTRL = 0x00; + PORTF.PIN1CTRL = 0x00; + PORTF.PIN2CTRL = 0x0B; + PORTF.PIN3CTRL = 0x00; + PORTF.PIN4CTRL = 0x00; + PORTF.PIN5CTRL = 0x08; + PORTF.PIN6CTRL = 0x08; + PORTF.PIN7CTRL = 0x00; + + /* PORTMUX Initialization */ + PORTMUX.CCLROUTEA = 0x00; + PORTMUX.EVSYSROUTEA = 0x00; + PORTMUX.TCAROUTEA = 0x00; + PORTMUX.TCBROUTEA = 0x00; + PORTMUX.TWISPIROUTEA = 0x00; + PORTMUX.USARTROUTEA = 0x00; + + // register default ISC callback functions at runtime; use these methods to register a custom function + PORTA_PA2_SetInterruptHandler(PORTA_PA2_DefaultInterruptHandler); + PORTD_PD5_SetInterruptHandler(PORTD_PD5_DefaultInterruptHandler); + PORTF_SW0_SetInterruptHandler(PORTF_SW0_DefaultInterruptHandler); + PORTA_RST_SetInterruptHandler(PORTA_RST_DefaultInterruptHandler); + PORTA_PA4_SetInterruptHandler(PORTA_PA4_DefaultInterruptHandler); + PORTA_PA3_SetInterruptHandler(PORTA_PA3_DefaultInterruptHandler); + PORTA_PA6_SetInterruptHandler(PORTA_PA6_DefaultInterruptHandler); + PORTA_PA5_SetInterruptHandler(PORTA_PA5_DefaultInterruptHandler); + PORTA_nCS_SetInterruptHandler(PORTA_nCS_DefaultInterruptHandler); + PORTF_PF1_SetInterruptHandler(PORTF_PF1_DefaultInterruptHandler); + PORTF_PF0_SetInterruptHandler(PORTF_PF0_DefaultInterruptHandler); + PORTD_LED_YELLOW_SetInterruptHandler(PORTD_LED_YELLOW_DefaultInterruptHandler); + PORTF_CE_SetInterruptHandler(PORTF_CE_DefaultInterruptHandler); + PORTD_LED_RED_SetInterruptHandler(PORTD_LED_RED_DefaultInterruptHandler); + PORTF_INT_SetInterruptHandler(PORTF_INT_DefaultInterruptHandler); + PORTF_SW1_SetInterruptHandler(PORTF_SW1_DefaultInterruptHandler); + PORTD_LED_BLUE_SetInterruptHandler(PORTD_LED_BLUE_DefaultInterruptHandler); + PORTD_LED_GREEN_SetInterruptHandler(PORTD_LED_GREEN_DefaultInterruptHandler); + PORTF_WAKE_SetInterruptHandler(PORTF_WAKE_DefaultInterruptHandler); +} + +void PORT_Initialize(void) +{ + /* On AVR devices all peripherals are enable from power on reset, this + * disables all peripherals to save power. Driver shall enable + * peripheral if used */ + + /* Set all pins to low power mode */ + for (uint8_t i = 0; i < 8; i++) { + *((uint8_t *)&PORTE + 0x10 + i) |= 1 << PORT_PULLUPEN_bp; + } + + for (uint8_t i = 0; i < 8; i++) { + *((uint8_t *)&PORTF + 0x10 + i) |= 1 << PORT_PULLUPEN_bp; + } + + for (uint8_t i = 0; i < 8; i++) { + *((uint8_t *)&PORTA + 0x10 + i) |= 1 << PORT_PULLUPEN_bp; + } + + for (uint8_t i = 0; i < 8; i++) { + *((uint8_t *)&PORTB + 0x10 + i) |= 1 << PORT_PULLUPEN_bp; + } + + for (uint8_t i = 0; i < 8; i++) { + *((uint8_t *)&PORTC + 0x10 + i) |= 1 << PORT_PULLUPEN_bp; + } + + for (uint8_t i = 0; i < 8; i++) { + *((uint8_t *)&PORTD + 0x10 + i) |= 1 << PORT_PULLUPEN_bp; + } + +} + +/** + Allows selecting an interrupt handler for PORTA_PA2 at application runtime +*/ +void PORTA_PA2_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTA_PA2_InterruptHandler = interruptHandler; +} + +void PORTA_PA2_DefaultInterruptHandler(void) +{ + // add your PORTA_PA2 interrupt custom code + // or set custom function using PORTA_PA2_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTD_PD5 at application runtime +*/ +void PORTD_PD5_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTD_PD5_InterruptHandler = interruptHandler; +} + +void PORTD_PD5_DefaultInterruptHandler(void) +{ + // add your PORTD_PD5 interrupt custom code + // or set custom function using PORTD_PD5_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTF_SW0 at application runtime +*/ +void PORTF_SW0_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTF_SW0_InterruptHandler = interruptHandler; +} + +void PORTF_SW0_DefaultInterruptHandler(void) +{ + // add your PORTF_SW0 interrupt custom code + // or set custom function using PORTF_SW0_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTA_RST at application runtime +*/ +void PORTA_RST_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTA_RST_InterruptHandler = interruptHandler; +} + +void PORTA_RST_DefaultInterruptHandler(void) +{ + // add your PORTA_RST interrupt custom code + // or set custom function using PORTA_RST_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTA_PA4 at application runtime +*/ +void PORTA_PA4_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTA_PA4_InterruptHandler = interruptHandler; +} + +void PORTA_PA4_DefaultInterruptHandler(void) +{ + // add your PORTA_PA4 interrupt custom code + // or set custom function using PORTA_PA4_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTA_PA3 at application runtime +*/ +void PORTA_PA3_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTA_PA3_InterruptHandler = interruptHandler; +} + +void PORTA_PA3_DefaultInterruptHandler(void) +{ + // add your PORTA_PA3 interrupt custom code + // or set custom function using PORTA_PA3_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTA_PA6 at application runtime +*/ +void PORTA_PA6_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTA_PA6_InterruptHandler = interruptHandler; +} + +void PORTA_PA6_DefaultInterruptHandler(void) +{ + // add your PORTA_PA6 interrupt custom code + // or set custom function using PORTA_PA6_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTA_PA5 at application runtime +*/ +void PORTA_PA5_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTA_PA5_InterruptHandler = interruptHandler; +} + +void PORTA_PA5_DefaultInterruptHandler(void) +{ + // add your PORTA_PA5 interrupt custom code + // or set custom function using PORTA_PA5_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTA_nCS at application runtime +*/ +void PORTA_nCS_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTA_nCS_InterruptHandler = interruptHandler; +} + +void PORTA_nCS_DefaultInterruptHandler(void) +{ + // add your PORTA_nCS interrupt custom code + // or set custom function using PORTA_nCS_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTF_PF1 at application runtime +*/ +void PORTF_PF1_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTF_PF1_InterruptHandler = interruptHandler; +} + +void PORTF_PF1_DefaultInterruptHandler(void) +{ + // add your PORTF_PF1 interrupt custom code + // or set custom function using PORTF_PF1_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTF_PF0 at application runtime +*/ +void PORTF_PF0_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTF_PF0_InterruptHandler = interruptHandler; +} + +void PORTF_PF0_DefaultInterruptHandler(void) +{ + // add your PORTF_PF0 interrupt custom code + // or set custom function using PORTF_PF0_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTD_LED_YELLOW at application runtime +*/ +void PORTD_LED_YELLOW_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTD_LED_YELLOW_InterruptHandler = interruptHandler; +} + +void PORTD_LED_YELLOW_DefaultInterruptHandler(void) +{ + // add your PORTD_LED_YELLOW interrupt custom code + // or set custom function using PORTD_LED_YELLOW_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTF_CE at application runtime +*/ +void PORTF_CE_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTF_CE_InterruptHandler = interruptHandler; +} + +void PORTF_CE_DefaultInterruptHandler(void) +{ + // add your PORTF_CE interrupt custom code + // or set custom function using PORTF_CE_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTD_LED_RED at application runtime +*/ +void PORTD_LED_RED_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTD_LED_RED_InterruptHandler = interruptHandler; +} + +void PORTD_LED_RED_DefaultInterruptHandler(void) +{ + // add your PORTD_LED_RED interrupt custom code + // or set custom function using PORTD_LED_RED_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTF_INT at application runtime +*/ +void PORTF_INT_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTF_INT_InterruptHandler = interruptHandler; +} + +void PORTF_INT_DefaultInterruptHandler(void) +{ + // add your PORTF_INT interrupt custom code + // or set custom function using PORTF_INT_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTF_SW1 at application runtime +*/ +void PORTF_SW1_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTF_SW1_InterruptHandler = interruptHandler; +} + +void PORTF_SW1_DefaultInterruptHandler(void) +{ + // add your PORTF_SW1 interrupt custom code + // or set custom function using PORTF_SW1_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTD_LED_BLUE at application runtime +*/ +void PORTD_LED_BLUE_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTD_LED_BLUE_InterruptHandler = interruptHandler; +} + +void PORTD_LED_BLUE_DefaultInterruptHandler(void) +{ + // add your PORTD_LED_BLUE interrupt custom code + // or set custom function using PORTD_LED_BLUE_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTD_LED_GREEN at application runtime +*/ +void PORTD_LED_GREEN_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTD_LED_GREEN_InterruptHandler = interruptHandler; +} + +void PORTD_LED_GREEN_DefaultInterruptHandler(void) +{ + // add your PORTD_LED_GREEN interrupt custom code + // or set custom function using PORTD_LED_GREEN_SetInterruptHandler() +} +/** + Allows selecting an interrupt handler for PORTF_WAKE at application runtime +*/ +void PORTF_WAKE_SetInterruptHandler(void (* interruptHandler)(void)) +{ + PORTF_WAKE_InterruptHandler = interruptHandler; +} + +void PORTF_WAKE_DefaultInterruptHandler(void) +{ + // add your PORTF_WAKE interrupt custom code + // or set custom function using PORTF_WAKE_SetInterruptHandler() +} +ISR(PORTF_PORT_vect) +{ + // Call the interrupt handler for the callback registered at runtime + if(VPORTF.INTFLAGS & PORT_INT6_bm) + { + PORTF_SW0_InterruptHandler(); + } + if(VPORTF.INTFLAGS & PORT_INT1_bm) + { + PORTF_PF1_InterruptHandler(); + } + if(VPORTF.INTFLAGS & PORT_INT0_bm) + { + PORTF_PF0_InterruptHandler(); + } + if(VPORTF.INTFLAGS & PORT_INT3_bm) + { + PORTF_CE_InterruptHandler(); + } + if(VPORTF.INTFLAGS & PORT_INT2_bm) + { + PORTF_INT_InterruptHandler(); + } + if(VPORTF.INTFLAGS & PORT_INT5_bm) + { + PORTF_SW1_InterruptHandler(); + } + if(VPORTF.INTFLAGS & PORT_INT4_bm) + { + PORTF_WAKE_InterruptHandler(); + } + + /* Clear interrupt flags */ + VPORTF.INTFLAGS = 0xff; +} + diff --git a/AVRIoT.X/mcc_generated_files/src/protected_io.S b/AVRIoT.X/mcc_generated_files/src/protected_io.S new file mode 100644 index 0000000..705b7da --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/src/protected_io.S @@ -0,0 +1,80 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include "../utils/assembler.h" + +/* + * GNU and IAR use different calling conventions. Since this is + * a very small and simple function to begin with, it's easier + * to implement it twice than to deal with the differences + * within a single implementation. + */ + + PUBLIC_FUNCTION(protected_write_io) + +#if defined(__GNUC__) + +#ifdef RAMPZ + out _SFR_IO_ADDR(RAMPZ), r1 // Clear bits 23:16 of Z +#endif + movw r30, r24 // Load addr into Z + out CCP, r22 // Start CCP handshake + st Z, r20 // Write value to I/O register + ret // Return to caller + +#elif defined(__IAR_SYSTEMS_ASM__) + +# if !defined(CONFIG_MEMORY_MODEL_TINY) && !defined(CONFIG_MEMORY_MODEL_SMALL) \ + && !defined(CONFIG_MEMORY_MODEL_LARGE) +# define CONFIG_MEMORY_MODEL_SMALL +# endif +# if defined(CONFIG_MEMORY_MODEL_LARGE) + ldi r20, 0 + out RAMPZ, r20 // Reset bits 23:16 of Z + movw r30, r16 // Load addr into Z +# elif defined(CONFIG_MEMORY_MODEL_TINY) + ldi r31, 0 // Reset bits 8:15 of Z + mov r30, r16 // Load addr into Z +# else + movw r30, r16 // Load addr into Z +# endif +# if defined(CONFIG_MEMORY_MODEL_TINY) + out CCP, r17 // Start CCP handshake + st Z, r18 // Write value to I/O register +# elif defined(CONFIG_MEMORY_MODEL_SMALL) + out CCP, r18 // Start CCP handshake + st Z, r19 // Write value to I/O register +# elif defined(CONFIG_MEMORY_MODEL_LARGE) + out CCP, r19 // Start CCP handshake + st Z, r20 // Write value to I/O register +# else +# error Unknown memory model in use, no idea how registers should be accessed +# endif + ret +#else +# error Unknown assembler +#endif + + END_FUNC(protected_write_io) + END_FILE() + diff --git a/AVRIoT.X/mcc_generated_files/src/rtc.c b/AVRIoT.X/mcc_generated_files/src/rtc.c new file mode 100644 index 0000000..4e29483 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/src/rtc.c @@ -0,0 +1,175 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include "../include/rtc.h" + +/** + * \brief Initialize rtc interface + * + * \return Initialization status. + */ + +void (*RTC_OVF_isr_cb)(void) = NULL; +void (*RTC_CMP_isr_cb)(void) = NULL; +void (*RTC_PIT_isr_cb)(void) = NULL; + +/** + * \brief Initialize RTC interface + */ +int8_t RTC_Initialize() +{ + while (RTC.STATUS > 0) { /* Wait for all register to be synchronized */ + } + //Compare + RTC.CMP = 0x00; + + //Count + RTC.CNT = 0x00; + + //Period + RTC.PER = 0xFFFF; + + //Clock selection + RTC.CLKSEL = 0x01; + + //DBGRUN disabled; + RTC.DBGCTRL = 0x00; + + //CMP disabled; OVF enabled; + RTC.INTCTRL = 0x01; + + //PERIOD OFF; PITEN disabled; + RTC.PITCTRLA = 0x00; + + //DBGRUN disabled; + RTC.PITDBGCTRL = 0x00; + + //PI disabled; + RTC.PITINTCTRL = 0x00; + + //RUNSTDBY disabled; PRESCALER DIV1; CORREN disabled; RTCEN enabled; + RTC.CTRLA = 0x01; + + return 0; +} + +void RTC_SetOVFIsrCallback(RTC_cb_t cb) +{ + RTC_OVF_isr_cb = cb; +} + +void RTC_SetCMPIsrCallback(RTC_cb_t cb) +{ + RTC_CMP_isr_cb = cb; +} + +ISR(RTC_CNT_vect) +{ + if (RTC.INTFLAGS & RTC_OVF_bm ) + { + if (RTC_OVF_isr_cb != NULL) + { + (*RTC_OVF_isr_cb)(); + } + } + + if (RTC.INTFLAGS & RTC_CMP_bm ) + { + if (RTC_CMP_isr_cb != NULL) + { + (*RTC_CMP_isr_cb)(); + } + } + RTC.INTFLAGS = (RTC_OVF_bm | RTC_CMP_bm); +} + +ISR(RTC_PIT_vect) +{ + if (RTC_PIT_isr_cb != NULL) + { + (*RTC_PIT_isr_cb)(); + } + RTC.INTFLAGS = RTC_PI_bm; +} + +inline void RTC_WriteCounter(uint16_t timerVal) +{ + while (RTC.STATUS & RTC_CNTBUSY_bm); + RTC.CNT = timerVal; +} + +inline uint16_t RTC_ReadCounter(void) +{ + return RTC.CNT; +} + +inline void RTC_WritePeroid(uint16_t timerVal) +{ + while (RTC.STATUS & RTC_PERBUSY_bm); + RTC.PER = timerVal; +} + +inline uint16_t RTC_ReadPeriod(void) +{ + return RTC.PER; +} + +inline void RTC_EnableCMPInterrupt(void) +{ + RTC.INTCTRL |= RTC_CMP_bm; +} + +inline void RTC_DisableCMPInterrupt(void) +{ + RTC.INTCTRL &= ~RTC_CMP_bm; +} + +inline void RTC_EnableOVFInterrupt(void) +{ + RTC.INTCTRL |= RTC_OVF_bm; +} + +inline void RTC_DisableOVFInterrupt(void) +{ + RTC.INTCTRL &= ~RTC_OVF_bm; +} + +inline void RTC_EnablePITInterrupt(void) +{ + RTC.INTCTRL |= RTC_PI_bm; +} + +inline void RTC_DisablePITInterrupt(void) +{ + RTC.INTCTRL &= ~RTC_PI_bm; +} + +inline void RTC_ClearOVFInterruptFlag(void) +{ + RTC.INTFLAGS &= ~RTC_OVF_bm; +} + +inline bool RTC_IsOVFInterruptEnabled(void) +{ + return ((RTC.INTCTRL & RTC_OVF_bm) > 0); +} diff --git a/AVRIoT.X/mcc_generated_files/src/spi0.c b/AVRIoT.X/mcc_generated_files/src/spi0.c new file mode 100644 index 0000000..d7b95ed --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/src/spi0.c @@ -0,0 +1,168 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include "../include/spi0.h" +#include "../include/pin_manager.h" + +typedef struct spi0_descriptor_s { + spi0_transfer_status_t status; +} spi0_descriptor_t; + +spi0_configuration_t spi0_configurations[] = { + { 0x23, 0x0 }, + { 0x31, 0x0 } +}; + +static spi0_descriptor_t spi0_desc; + +uint8_t SPI0_Initialize() +{ + //DORD disabled; MASTER enabled; CLK2X enabled; PRESC DIV64; ENABLE enabled; + SPI0.CTRLA = 0x35; + + //BUFEN disabled; BUFWR disabled; SSD disabled; MODE 0; + SPI0.CTRLB = 0x00; + + //RXCIE disabled; TXCIE disabled; DREIE disabled; SSIE disabled; IE disabled; + SPI0.INTCTRL = 0x00; + + spi0_desc.status = SPI_FREE; + + //RXCIF disabled; IF disabled; TXCIF disabled; WRCOL disabled; DREIF disabled; SSIF disabled; BUFOVF disabled; + SPI0.INTFLAGS = 0x00; + + return 0; +} + +void SPI0_Enable() +{ + SPI0.CTRLA |= SPI_ENABLE_bm; +} + +void SPI0_Disable() +{ + SPI0.CTRLA &= ~SPI_ENABLE_bm; +} + +bool SPI0_OpenConfiguration(uint8_t spiUniqueConfiguration){ + return SPI0_Open(spi0_configurations[spiUniqueConfiguration]); +} + +bool SPI0_Open(spi0_configuration_t spiUniqueConfiguration) +{ + if (spi0_desc.status == SPI_FREE) { + spi0_desc.status = SPI_IDLE; + SPI0.CTRLA = spiUniqueConfiguration.CTRLAvalue; + SPI0.CTRLB = spiUniqueConfiguration.CTRLBvalue; + return true; + } else { + return false; + } +} + +void SPI0_Close(void) +{ + spi0_desc.status = SPI_FREE; +} + +uint8_t SPI0_ExchangeByte(uint8_t data) +{ + SPI0.DATA = data; + while (!(SPI0.INTFLAGS & SPI_RXCIF_bm)) + ; + return SPI0.DATA; +} + +bool SPI0_Selected() +{ +/** + * \brief returns true if SS pin is selected + * TODO: Place your code + */ +return true; +} + +uint8_t SPI0_GetRxData() +{ + return SPI0.DATA; +} + +void SPI0_WriteTxData(uint8_t data) +{ + SPI0.DATA = data; +} + +void SPI0_WaitDataready() +{ + while (!(SPI0.INTFLAGS & SPI_RXCIF_bm)) + ; +} + +void SPI0_ExchangeBlock(void *block, size_t size) +{ + uint8_t *b = (uint8_t *)block; + while (size--) { + SPI0.DATA = *b; + while (!(SPI0.INTFLAGS & SPI_RXCIF_bm)) + ; + *b = SPI0.DATA; + b++; + } +} + +void SPI0_WriteBlock(void *block, size_t size) +{ + uint8_t *b = (uint8_t *)block; + uint8_t rdata; + while (size--) { + SPI0.DATA = *b; + while (!(SPI0.INTFLAGS & SPI_RXCIF_bm)) + ; + rdata = SPI0.DATA; + (void)(rdata); // Silence compiler warning + b++; + } +} + +void SPI0_ReadBlock(void *block, size_t size) +{ + uint8_t *b = (uint8_t *)block; + while (size--) { + SPI0.DATA = 0; + while (!(SPI0.INTFLAGS & SPI_RXCIF_bm)) + ; + *b = SPI0.DATA; + b++; + } +} + +void SPI0_WriteByte(uint8_t data) +{ + + SPI0.DATA = data; +} + +uint8_t SPI0_ReadByte() +{ + return SPI0.DATA; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/src/twi0_master.c b/AVRIoT.X/mcc_generated_files/src/twi0_master.c new file mode 100644 index 0000000..06a6a1b --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/src/twi0_master.c @@ -0,0 +1,696 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include "../include/twi0_master.h" +#include +#include + +/***************************************************************************/ +// I2C STATES +typedef enum { + I2C_IDLE = 0, + I2C_SEND_ADR_READ, + I2C_SEND_ADR_WRITE, + I2C_TX, + I2C_RX, + I2C_TX_EMPTY, + I2C_SEND_RESTART_READ, + I2C_SEND_RESTART_WRITE, + I2C_SEND_RESTART, + I2C_SEND_STOP, + I2C_RX_DO_ACK, + I2C_TX_DO_ACK, + I2C_RX_DO_NACK_STOP, + I2C_RX_DO_NACK_RESTART, + I2C_RESET, + I2C_ADDRESS_NACK, + I2C_BUS_COLLISION, + I2C_BUS_ERROR +} twi0_fsm_states_t; + +// I2C Event Callback List +typedef enum { + I2C_DATA_COMPLETE = 0, + I2C_WRITE_COLLISION, + I2C_ADDRESSNACK, + I2C_DATA_NACK, + I2C_TIMEOUT, + I2C_NULL +} I2C0_callbackIndex_t; + +// I2C Status Structure +typedef struct { + twi0_callback_t callbackTable[6]; + void * callbackPayload[6]; + uint16_t timeout; + uint16_t timeout_value; + twi0_address_t address; + uint8_t * data_ptr; + size_t data_length; + twi0_fsm_states_t state; + twi0_error_t error; + unsigned addressNACKCheck : 1; + unsigned busy : 1; + unsigned inUse : 1; + unsigned bufferFree : 1; + /*if timeoutDriverEnabled + timerStruct_t timeout; + */ +} I2C0_status_t; +I2C0_status_t I2C0_status = {0}; +typedef twi0_fsm_states_t(stateHandlerFunction)(void); + +/* I2C Interfaces */ +void I2C0_Poller(void); + +/* I2C Internal API's */ +/* Master */ +void I2C0_MasterOpen(void); +void I2C0_MasterClose(void); +char I2C0_MasterGetRxData(void); +void I2C0_MasterTxData(char d); +void I2C0_MasterTxAddr(char d); +void I2C0_MasterResetBus(void); +void I2C0_MasterIsRxOrTx(void); +void I2C0_MasterStop(void); +bool I2C0_MasterIsNack(void); +void I2C0_MasterSendAck(void); +void I2C0_MasterSendNack(void); +void I2C0_MasterClearBusCollision(void); +bool I2C0_MasterBusErrorOverride(); +bool I2C0_MasterArbitrationlostOverride(void); +void I2C0_MasterEnableIrq(void); +bool I2C0_MasterIsIrqEnabled(void); +void I2C0_MasterDisableIrq(void); +void I2C0_MasterClearIrq(void); +void I2C0_MasterWaitForEvent(void); +static void I2C0_set_callback(I2C0_callbackIndex_t idx, twi0_callback_t cb, void *funPtr); +static twi0_operations_t I2C0_RETURN_STOP(void *funPtr); +static twi0_operations_t I2C0_RETURN_RESET(void *funPtr); +static void I2C0_MasterIsr(void); + +/* Helper Functions */ +static twi0_fsm_states_t I2C0_DO_IDLE(void); +static twi0_fsm_states_t I2C0_DO_SEND_ADR_READ(void); +static twi0_fsm_states_t I2C0_DO_SEND_ADR_WRITE(void); +static twi0_fsm_states_t I2C0_DO_TX(void); +static twi0_fsm_states_t I2C0_DO_RX(void); +static twi0_fsm_states_t I2C0_DO_TX_EMPTY(void); +static twi0_fsm_states_t I2C0_DO_SEND_RESTART_READ(void); +static twi0_fsm_states_t I2C0_DO_SEND_RESTART_WRITE(void); +static twi0_fsm_states_t I2C0_DO_SEND_RESTART(void); +static twi0_fsm_states_t I2C0_DO_SEND_STOP(void); +static twi0_fsm_states_t I2C0_DO_RX_ACK(void); +static twi0_fsm_states_t I2C0_DO_TX_ACK(void); +static twi0_fsm_states_t I2C0_DO_RX_NACK_STOP(void); +static twi0_fsm_states_t I2C0_DO_RX_NACK_RESTART(void); +static twi0_fsm_states_t I2C0_DO_RESET(void); +static twi0_fsm_states_t I2C0_DO_ADDRESS_NACK(void); +static twi0_fsm_states_t I2C0_DO_BUS_COLLISION(void); +static twi0_fsm_states_t I2C0_DO_BUS_ERROR(void); + +typedef twi0_fsm_states_t(stateHandlerFunction)(void); +stateHandlerFunction *I2C0_fsmStateTable[] = { + I2C0_DO_IDLE, // I2C_IDLE + I2C0_DO_SEND_ADR_READ, // I2C_SEND_ADR_READ + I2C0_DO_SEND_ADR_WRITE, // I2C_SEND_ADR_WRITE + I2C0_DO_TX, // I2C_TX + I2C0_DO_RX, // I2C_RX + I2C0_DO_TX_EMPTY, // I2C_TX_EMPTY + I2C0_DO_SEND_RESTART_READ, // I2C_SEND_RESTART_READ + I2C0_DO_SEND_RESTART_WRITE, // I2C_SEND_RESTART_WRITE + I2C0_DO_SEND_RESTART, // I2C_SEND_RESTART + I2C0_DO_SEND_STOP, // I2C_SEND_STOP + I2C0_DO_RX_ACK, // I2C_RX_DO_ACK + I2C0_DO_TX_ACK, // I2C_TX_DO_ACK + I2C0_DO_RX_NACK_STOP, // I2C_RX_DO_NACK_STOP + I2C0_DO_RX_NACK_RESTART, // I2C_RX_DO_NACK_RESTART + I2C0_DO_RESET, // I2C_RESET + I2C0_DO_ADDRESS_NACK, // I2C_ADDRESS_NACK + I2C0_DO_BUS_COLLISION, // I2C_BUS_COLLISION + I2C0_DO_BUS_ERROR // I2C_BUS_ERROR +}; + +void I2C0_SetDataCompleteCallback(twi0_callback_t cb, void *funPtr) +{ + I2C0_set_callback(I2C_DATA_COMPLETE, cb, funPtr); +} + +void I2C0_SetWriteCollisionCallback(twi0_callback_t cb, void *funPtr) +{ + I2C0_set_callback(I2C_WRITE_COLLISION, cb, funPtr); +} + +void I2C0_SetAddressNackCallback(twi0_callback_t cb, void *funPtr) +{ + I2C0_set_callback(I2C_ADDRESSNACK, cb, funPtr); +} + +void I2C0_SetDataNackCallback(twi0_callback_t cb, void *funPtr) +{ + I2C0_set_callback(I2C_DATA_NACK, cb, funPtr); +} + +void I2C0_SetTimeoutCallback(twi0_callback_t cb, void *funPtr) +{ + I2C0_set_callback(I2C_TIMEOUT, cb, funPtr); +} + +uint8_t I2C0_Initialize() +{ + //SDASETUP 4CYC; SDAHOLD OFF; FMPEN disabled; + TWI0.CTRLA = 0x00; + + //Debug Run + TWI0.DBGCTRL = 0x00; + + //Master Baud Rate Control + TWI0.MBAUD = (uint8_t)TWI0_BAUD(100000, 0); + + //RIEN disabled; WIEN disabled; QCEN disabled; TIMEOUT DISABLED; SMEN disabled; ENABLE enabled; + TWI0.MCTRLA = 0x01; + + //RIF disabled; WIF disabled; CLKHOLD disabled; ARBLOST disabled; BUSERR disabled; BUSSTATE UNKNOWN; + TWI0.MSTATUS = 0x00; + + //Master Address + TWI0.MADDR = 0x00; + + //FLUSH disabled; ACKACT ACK; MCMD NOACT; + TWI0.MCTRLB = 0x00; + + //Master Data + TWI0.MDATA = 0x00; + + return 0; +} + +// when you call open, you supply a device address. +// if you get the bus, the function returns true +twi0_error_t I2C0_Open(twi0_address_t address) +{ + twi0_error_t ret = I2C_BUSY; + + if (!I2C0_status.inUse) { + I2C0_status.address = address; + I2C0_status.busy = 0; + I2C0_status.inUse = 1; + I2C0_status.addressNACKCheck = 0; + I2C0_status.state = I2C_RESET; + I2C0_status.timeout_value = 500; // MCC should determine a reasonable starting value here. + I2C0_status.bufferFree = 1; + + // set all the call backs to a default of sending stop + I2C0_status.callbackTable[I2C_DATA_COMPLETE] = I2C0_RETURN_STOP; + I2C0_status.callbackPayload[I2C_DATA_COMPLETE] = NULL; + I2C0_status.callbackTable[I2C_WRITE_COLLISION] = I2C0_RETURN_STOP; + I2C0_status.callbackPayload[I2C_WRITE_COLLISION] = NULL; + I2C0_status.callbackTable[I2C_ADDRESSNACK] = I2C0_RETURN_STOP; + I2C0_status.callbackPayload[I2C_ADDRESSNACK] = NULL; + I2C0_status.callbackTable[I2C_DATA_NACK] = I2C0_RETURN_STOP; + I2C0_status.callbackPayload[I2C_DATA_NACK] = NULL; + I2C0_status.callbackTable[I2C_TIMEOUT] = I2C0_RETURN_RESET; + I2C0_status.callbackPayload[I2C_TIMEOUT] = NULL; + + I2C0_MasterResetBus(); + // Reset module + I2C0_MasterClearIrq(); + + ret = I2C_NOERR; + } + return ret; +} + +void I2C0_SetAddress(twi0_address_t address) +{ + I2C0_status.address = address; +} + +// close the bus if it is not busy +twi0_error_t I2C0_Close(void) +{ + twi0_error_t ret = I2C_BUSY; + // Bus is in error state, reset I2C hardware and report error + if (I2C0_MasterBusErrorOverride()) { + I2C0_status.busy = false; + I2C0_status.error = I2C_FAIL; + } + if (!I2C0_status.busy) { + I2C0_status.inUse = 0; + // close it down + I2C0_status.address = 0xff; // 8-bit address is invalid so this is FREE + I2C0_MasterClearIrq(); + I2C0_MasterDisableIrq(); + ret = I2C0_status.error; + } + return ret; +} + +void I2C0_SetTimeout(uint8_t to) +{ + I2C0_MasterDisableIrq(); + I2C0_status.timeout_value = to; + I2C0_MasterEnableIrq(); +} + +void I2C0_SetBuffer(void *buffer, size_t bufferSize) +{ + if (I2C0_status.bufferFree) { + I2C0_status.data_ptr = buffer; + I2C0_status.data_length = bufferSize; + I2C0_status.bufferFree = false; + } +} +twi0_error_t I2C0_MasterOperation(bool read) +{ + twi0_error_t ret = I2C_BUSY; + if (!I2C0_status.busy) { + I2C0_status.busy = true; + ret = I2C_NOERR; + + if (read) { + I2C0_status.state = I2C_SEND_ADR_READ; + } else { + I2C0_status.state = I2C_SEND_ADR_WRITE; + } + I2C0_MasterIsr(); + + I2C0_Poller(); + } + return ret; +} + +twi0_error_t I2C0_MasterRead(void) + +{ + return I2C0_MasterOperation(true); +} + + + +twi0_error_t I2C0_MasterWrite(void) +{ + return I2C0_MasterOperation(false); +} + +/************************************************************************/ +/* Helper Functions */ +/************************************************************************/ + +void I2C0_Poller(void) +{ + while (I2C0_status.busy) + { + I2C0_MasterWaitForEvent(); + I2C0_MasterIsr(); + } +} + +static twi0_fsm_states_t I2C0_DO_RESET(void) +{ + I2C0_MasterResetBus(); + I2C0_status.busy = false; // Bus Free + I2C0_status.error = I2C_NOERR; + return I2C_RESET; // park the FSM on reset +} + +static twi0_fsm_states_t I2C0_DO_IDLE(void) +{ + I2C0_status.busy = false; // Bus Free + I2C0_status.error = I2C_NOERR; + return I2C_IDLE; // park the FSM on IDLE +} + +static twi0_fsm_states_t I2C0_DO_SEND_RESTART_READ(void) +{ + return I2C0_DO_SEND_ADR_READ(); +} + +static twi0_fsm_states_t I2C0_DO_SEND_RESTART_WRITE(void) +{ + return I2C0_DO_SEND_ADR_WRITE(); +} + +static twi0_fsm_states_t I2C0_DO_SEND_RESTART(void) +{ + return I2C0_DO_SEND_ADR_READ(); +} + +static twi0_fsm_states_t I2C0_DO_SEND_STOP(void) +{ + I2C0_MasterStop(); + return I2C0_DO_IDLE(); +} + +// TODO: probably need 2 addressNACK's one from read and one from write. +// the do NACK before RESTART or STOP is a special case that a new state simplifies. +static twi0_fsm_states_t I2C0_DO_ADDRESS_NACK(void) +{ + I2C0_status.addressNACKCheck = 0; + I2C0_status.error = I2C_FAIL; + switch (I2C0_status.callbackTable[I2C_ADDRESSNACK](I2C0_status.callbackPayload[I2C_ADDRESSNACK])) { + case I2C_RESTART_READ: + return I2C0_DO_SEND_RESTART_READ(); + case I2C_RESTART_WRITE: + return I2C0_DO_SEND_RESTART_WRITE(); + default: + return I2C0_DO_SEND_STOP(); + } +} + +static twi0_fsm_states_t I2C0_DO_SEND_ADR_READ(void) +{ + + I2C0_status.addressNACKCheck = 1; + I2C0_MasterTxAddr(I2C0_status.address << 1 | 1); + return I2C_RX; +} + +static twi0_fsm_states_t I2C0_DO_SEND_ADR_WRITE(void) +{ + + I2C0_status.addressNACKCheck = 1; + I2C0_MasterTxAddr(I2C0_status.address << 1); + return I2C_TX; +} + +static twi0_fsm_states_t I2C0_DO_RX_ACK(void) +{ + I2C0_MasterSendAck(); + return I2C_RX; +} + +static twi0_fsm_states_t I2C0_DO_TX_ACK(void) +{ + I2C0_MasterSendAck(); + return I2C_TX; +} + +static twi0_fsm_states_t I2C0_DO_RX_NACK_STOP(void) +{ + I2C0_MasterSendNack(); + I2C0_MasterStop(); + return I2C0_DO_IDLE(); +} + +static twi0_fsm_states_t I2C0_DO_RX_NACK_RESTART(void) +{ + I2C0_MasterSendNack(); + return I2C_SEND_RESTART; +} + +static twi0_fsm_states_t I2C0_DO_TX(void) +{ + if (I2C0_MasterIsNack()) // Slave replied with NACK + { + switch (I2C0_status.callbackTable[I2C_DATA_NACK](I2C0_status.callbackPayload[I2C_DATA_NACK])) { + case I2C_RESTART_READ: + return I2C0_DO_SEND_RESTART_READ(); + case I2C_RESTART_WRITE: + return I2C0_DO_SEND_RESTART_WRITE(); + default: + case I2C_CONTINUE: + case I2C_STOP: + return I2C0_DO_SEND_STOP(); + } + } else { + I2C0_status.addressNACKCheck = 0; + I2C0_MasterTxData(*I2C0_status.data_ptr++); + return (--I2C0_status.data_length) ? I2C_TX : I2C_TX_EMPTY; + } +} + +static twi0_fsm_states_t I2C0_DO_RX(void) +{ + I2C0_status.addressNACKCheck = 0; + + if (I2C0_status.data_length == 1) + I2C0_MasterSendNack(); // Next byte will be last to be received, setup NACK + else + I2C0_MasterSendAck(); // More bytes to receive, setup ACK + + if (--I2C0_status.data_length) { + *I2C0_status.data_ptr = I2C0_MasterGetRxData(); + I2C0_status.data_ptr++; + I2C0_MasterIsRxOrTx(); + return I2C_RX; + } else { + *I2C0_status.data_ptr = I2C0_MasterGetRxData(); + I2C0_status.data_ptr++; + I2C0_status.bufferFree = true; + switch (I2C0_status.callbackTable[I2C_DATA_COMPLETE](I2C0_status.callbackPayload[I2C_DATA_COMPLETE])) { + case I2C_RESTART_WRITE: + case I2C_RESTART_READ: + return I2C0_DO_RX_NACK_RESTART(); + default: + case I2C_CONTINUE: + case I2C_STOP: + return I2C0_DO_RX_NACK_STOP(); + } + } +} + +static twi0_fsm_states_t I2C0_DO_TX_EMPTY(void) +{ + if (I2C0_MasterIsNack()) // Slave replied with NACK + { + switch (I2C0_status.callbackTable[I2C_DATA_NACK](I2C0_status.callbackPayload[I2C_DATA_NACK])) { + case I2C_RESTART_READ: + return I2C0_DO_SEND_RESTART_READ(); + case I2C_RESTART_WRITE: + return I2C0_DO_SEND_RESTART_WRITE(); + default: + case I2C_CONTINUE: + case I2C_STOP: + return I2C0_DO_SEND_STOP(); + } + } else { + I2C0_status.bufferFree = true; + switch (I2C0_status.callbackTable[I2C_DATA_COMPLETE](I2C0_status.callbackPayload[I2C_DATA_COMPLETE])) { + case I2C_RESTART_READ: + return I2C0_DO_SEND_RESTART_READ(); + case I2C_RESTART_WRITE: + return I2C0_DO_SEND_RESTART_WRITE(); + case I2C_CONTINUE: + return I2C0_DO_TX(); + default: + case I2C_STOP: + return I2C0_DO_SEND_STOP(); + } + } +} + +static twi0_fsm_states_t I2C0_DO_BUS_COLLISION(void) +{ + // Clear bus collision status flag + I2C0_MasterClearBusCollision(); + + I2C0_status.error = I2C_FAIL; + switch (I2C0_status.callbackTable[I2C_WRITE_COLLISION](I2C0_status.callbackPayload[I2C_WRITE_COLLISION])) { + case I2C_RESTART_READ: + return I2C0_DO_SEND_RESTART_READ(); + case I2C_RESTART_WRITE: + return I2C0_DO_SEND_RESTART_WRITE(); + default: + return I2C0_DO_RESET(); + } +} + +static twi0_fsm_states_t I2C0_DO_BUS_ERROR(void) +{ + I2C0_MasterResetBus(); + I2C0_status.busy = false; + I2C0_status.error = I2C_FAIL; + return I2C_RESET; // park the FSM on reset +} + + + +void I2C0_MasterIsr(void) +{ + I2C0_MasterClearIrq(); + + // NOTE: We are ignoring the Write Collision flag. + + // Address phase received NACK from slave, override next state + if (I2C0_status.addressNACKCheck && I2C0_MasterIsNack()) { + I2C0_status.state = I2C_ADDRESS_NACK; // State Override + } + + // Bus arbitration lost to another master, override next state + if (I2C0_MasterArbitrationlostOverride()) { + I2C0_status.state = I2C_BUS_COLLISION; // State Override + } + + // Bus error, override next state + if (I2C0_MasterBusErrorOverride()) { + I2C0_status.state = I2C_BUS_ERROR; // State Override + } + + I2C0_status.state = I2C0_fsmStateTable[I2C0_status.state](); +} + +/************************************************************************/ +/* Helper Functions */ +/************************************************************************/ +static twi0_operations_t I2C0_RETURN_STOP(void *p) +{ + return I2C_STOP; +} + +static twi0_operations_t I2C0_RETURN_RESET(void *p) +{ + return I2C_RESET_LINK; +} + +static void I2C0_set_callback(I2C0_callbackIndex_t idx, twi0_callback_t cb, void *funPtr) +{ + if (cb) { + I2C0_status.callbackTable[idx] = cb; + I2C0_status.callbackPayload[idx] = funPtr; + } else { + I2C0_status.callbackTable[idx] = I2C0_RETURN_STOP; + I2C0_status.callbackPayload[idx] = NULL; + } +} + +/* Master Definitions */ + +void I2C0_MasterOpen(void) +{ + TWI0.MCTRLA = 1 << TWI_ENABLE_bp; +} + +void I2C0_MasterClose(void) +{ + TWI0.MCTRLA = 0 << TWI_ENABLE_bp; +} + +/* Interrupt Control */ +void I2C0_MasterEnableIrq(void) +{ + TWI0.MCTRLA |= (TWI_RIEN_bm | TWI_WIEN_bm); +} + +bool I2C0_MasterIsIrqEnabled(void) +{ + return ((TWI0.MCTRLA & TWI_WIEN_bm) && (TWI0.MCTRLA & TWI_RIEN_bm)); +} + +void I2C0_MasterDisableIrq(void) +{ + TWI0.MCTRLA &= ~(TWI_RIEN_bm | TWI_WIEN_bm); +} + +void I2C0_MasterClearIrq(void) +{ + TWI0.MSTATUS |= (TWI_RIF_bm | TWI_WIF_bm); +} + +bool I2C0_MasterBusErrorOverride(void) +{ + return TWI0.MSTATUS & TWI_BUSERR_bm; +} + +bool I2C0_MasterArbitrationlostOverride(void) +{ + return TWI0.MSTATUS & TWI_ARBLOST_bm; +} + +void I2C0_MasterResetBus(void) +{ + TWI0.MCTRLB |= TWI_FLUSH_bm; + TWI0.MSTATUS |= TWI_BUSSTATE_IDLE_gc; +} + +void I2C0_MasterIsRxOrTx(void) +{ + TWI0.MCTRLB |= TWI_MCMD_RECVTRANS_gc; +} + +void I2C0_MasterClearBusCollision(void) +{ + TWI0.MSTATUS |= TWI_ARBLOST_bm; +} + +void I2C0_MasterWaitForEvent(void) +{ + while (!(TWI0.MSTATUS & TWI_RIF_bm) && !(TWI0.MSTATUS & TWI_WIF_bm)) + { + }; +} + +void I2C0_MasterStop(void) +{ + TWI0.MCTRLB |= TWI_MCMD_STOP_gc; +} + +bool I2C0_MasterIsNack(void) +{ + return TWI0.MSTATUS & TWI_RXACK_bm; +} + +char I2C0_MasterGetRxData(void) +{ + return TWI0.MDATA; +} + +void I2C0_MasterTxData(char d) +{ + TWI0.MDATA = d; +} + +void I2C0_MasterTxAddr(char d) +{ + TWI0.MADDR = d; +} + +void I2C0_MasterSendAck(void) +{ + TWI0.MCTRLB &= ~(1 << TWI_ACKACT_bp); +} + +void I2C0_MasterSendNack(void) +{ + TWI0.MCTRLB |= TWI_ACKACT_NACK_gc; +} + +twi0_operations_t I2C0_SetReturnStopCallback(void *funPtr) +{ + return I2C_STOP; +} + +twi0_operations_t I2C0_SetReturnResetCallback(void *funPtr) +{ + return I2C_RESET_LINK; +} + +twi0_operations_t I2C0_SetRestartWriteCallback(void *funPtr) +{ + return I2C_RESTART_WRITE; +} + +twi0_operations_t I2C0_SetRestartReadCallback(void *funPtr) +{ + return I2C_RESTART_READ; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/src/usart2.c b/AVRIoT.X/mcc_generated_files/src/usart2.c new file mode 100644 index 0000000..7b18b84 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/src/usart2.c @@ -0,0 +1,278 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include "../include/usart2.h" + +#if defined(__GNUC__) + +int USART2_printCHAR(char character, FILE *stream) +{ + USART2_Write(character); + return 0; +} + +FILE USART2_stream = FDEV_SETUP_STREAM(USART2_printCHAR, NULL, _FDEV_SETUP_WRITE); + +#elif defined(__ICCAVR__) + +int putchar(int outChar) +{ + USART2_Write(outChar); + return outChar; +} +#endif + +/* Static Variables holding the ringbuffer used in IRQ mode */ +static uint8_t USART2_rxbuf[USART2_RX_BUFFER_SIZE]; +static volatile uint8_t USART2_rx_head; +static volatile uint8_t USART2_rx_tail; +static volatile uint8_t USART2_rx_elements; +static uint8_t USART2_txbuf[USART2_TX_BUFFER_SIZE]; +static volatile uint8_t USART2_tx_head; +static volatile uint8_t USART2_tx_tail; +static volatile uint8_t USART2_tx_elements; + +void (*USART2_rx_isr_cb)(void) = &USART2_DefaultRxIsrCb; + +void (*USART2_tx_isr_cb)(void) = &USART2_DefaultTxIsrCb; + +void USART2_DefaultRxIsrCb(void) +{ + uint8_t data; + uint8_t tmphead; + + /* Read the received data */ + data = USART2.RXDATAL; + /* Calculate buffer index */ + tmphead = (USART2_rx_head + 1) & USART2_RX_BUFFER_MASK; + + if (tmphead == USART2_rx_tail) { + /* ERROR! Receive buffer overflow */ + }else { + /*Store new index*/ + USART2_rx_head = tmphead; + + /* Store received data in buffer */ + USART2_rxbuf[tmphead] = data; + USART2_rx_elements++; + } +} + +void USART2_DefaultTxIsrCb(void) +{ + uint8_t tmptail; + + /* Check if all data is transmitted */ + if (USART2_tx_elements != 0) { + /* Calculate buffer index */ + tmptail = (USART2_tx_tail + 1) & USART2_TX_BUFFER_MASK; + /* Store new index */ + USART2_tx_tail = tmptail; + /* Start transmission */ + USART2.TXDATAL = USART2_txbuf[tmptail]; + + USART2_tx_elements--; + } + + if (USART2_tx_elements == 0) { + /* Disable Tx interrupt */ + USART2.CTRLA &= ~(1 << USART_DREIE_bp); + } +} + +void USART2_SetISRCb(usart_callback cb, usart2_cb_t type) +{ + switch (type) { + case USART2_RX_CB: + USART2_rx_isr_cb = cb; + break; + case USART2_TX_CB: + USART2_tx_isr_cb = cb; + break; + default: + // do nothing + break; + } +} + +void USART2_SetRXISRCb(usart_callback cb) +{ + USART2_SetISRCb(cb,USART2_RX_CB); +} + +void USART2_SetTXISRCb(usart_callback cb) +{ + USART2_SetISRCb(cb,USART2_TX_CB); +} + +/* Interrupt service routine for RX complete */ +ISR(USART2_RXC_vect) +{ + if (USART2_rx_isr_cb != NULL) + { + (*USART2_rx_isr_cb)(); + } +} + +/* Interrupt service routine for Data Register Empty */ +ISR(USART2_DRE_vect) +{ + if (USART2_tx_isr_cb != NULL) + { + (*USART2_tx_isr_cb)(); + } +} + +ISR(USART2_TXC_vect) +{ + USART2.STATUS |= USART_TXCIF_bm; +} + +bool USART2_IsTxReady() +{ + return (USART2_tx_elements != USART2_TX_BUFFER_SIZE); +} + +bool USART2_IsRxReady() +{ + return (USART2_rx_elements != 0); +} + +bool USART2_IsTxBusy() +{ + return (!(USART2.STATUS & USART_TXCIF_bm)); +} + +bool USART2_IsTxDone() +{ + return (USART2.STATUS & USART_TXCIF_bm); +} + +uint8_t USART2_Read(void) +{ + uint8_t tmptail; + + /* Wait for incoming data */ + while (USART2_rx_elements == 0) + ; + /* Calculate buffer index */ + tmptail = (USART2_rx_tail + 1) & USART2_RX_BUFFER_MASK; + /* Store new index */ + USART2_rx_tail = tmptail; + ENTER_CRITICAL(R); + USART2_rx_elements--; + EXIT_CRITICAL(R); + + /* Return data */ + return USART2_rxbuf[tmptail]; +} + +void USART2_Write(const uint8_t data) +{ + uint8_t tmphead; + + /* Calculate buffer index */ + tmphead = (USART2_tx_head + 1) & USART2_TX_BUFFER_MASK; + /* Wait for free space in buffer */ + while (USART2_tx_elements == USART2_TX_BUFFER_SIZE) + ; + /* Store data in buffer */ + USART2_txbuf[tmphead] = data; + /* Store new index */ + USART2_tx_head = tmphead; + ENTER_CRITICAL(W); + USART2_tx_elements++; + EXIT_CRITICAL(W); + /* Enable Tx interrupt */ + USART2.CTRLA |= (1 << USART_DREIE_bp); +} + +void USART2_Initialize() +{ + //set baud rate register + USART2.BAUD = (uint16_t)USART2_BAUD_RATE(9600); + + //RXCIE enabled; TXCIE enabled; DREIE disabled; RXSIE enabled; LBME disabled; ABEIE disabled; RS485 OFF; + USART2.CTRLA = 0xD0; + + //RXEN enabled; TXEN enabled; SFDEN disabled; ODME disabled; RXMODE NORMAL; MPCM disabled; + USART2.CTRLB = 0xC0; + + //CMODE ASYNCHRONOUS; PMODE DISABLED; SBMODE 1BIT; CHSIZE 8BIT; UDORD disabled; UCPHA disabled; + USART2.CTRLC = 0x03; + + //DBGCTRL_DBGRUN + USART2.DBGCTRL = 0x00; + + //EVCTRL_IREI + USART2.EVCTRL = 0x00; + + //RXPLCTRL_RXPL + USART2.RXPLCTRL = 0x00; + + //TXPLCTRL_TXPL + USART2.TXPLCTRL = 0x00; + + + uint8_t x; + + /* Initialize ringbuffers */ + x = 0; + + USART2_rx_tail = x; + USART2_rx_head = x; + USART2_rx_elements = x; + USART2_tx_tail = x; + USART2_tx_head = x; + USART2_tx_elements = x; + +#if defined(__GNUC__) + stdout = &USART2_stream; +#endif + +} + +void USART2_Enable() +{ + USART2.CTRLB |= USART_RXEN_bm | USART_TXEN_bm; +} + +void USART2_EnableRx() +{ + USART2.CTRLB |= USART_RXEN_bm; +} + +void USART2_EnableTx() +{ + USART2.CTRLB |= USART_TXEN_bm; +} + +void USART2_Disable() +{ + USART2.CTRLB &= ~(USART_RXEN_bm | USART_TXEN_bm); +} + +uint8_t USART2_GetData() +{ + return USART2.RXDATAL; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/time_service.c b/AVRIoT.X/mcc_generated_files/time_service.c new file mode 100644 index 0000000..8fcde54 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/time_service.c @@ -0,0 +1,110 @@ +/* + \file time_service.c + + \brief Manage Application's Time Service Requirements + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ +#include +#include "time_service.h" +//#include "timeout.h" +#include "drivers/timeout.h" + +static uint32_t timeTicker(void *payload); +static timerStruct_t timeTask = {timeTicker}; + +static uint32_t currentTime = 0; +static uint32_t stampTime = 0; + +#define ONE_SECOND_TICKER 1000L +#define TIME_OFFSET UNIX_OFFSET + +void TIME_setCurrent(uint32_t newTime) +{ + currentTime = newTime; +} + +uint32_t TIME_getCurrent(void) +{ + return currentTime; +} + +void TIME_setStamp(uint32_t newStamp) +{ + stampTime = newStamp; +} + +uint32_t TIME_getStamp(void) +{ + return stampTime; +} + +static uint32_t timeTicker(void *payload) +{ + currentTime++; // Increment Reference each Second + return ONE_SECOND_TICKER; // Reload to call self +} + +void TIME_startTask(void) +{ + timeout_create(&timeTask, ONE_SECOND_TICKER); +} + +void TIME_endTask(void) +{ + timeout_delete(&timeTask); +} + +uint32_t TIME_getOffset_UNIX(void) +{ + return TIME_OFFSET; +} + +char *TIME_GetcTime(uint32_t timeToConvert) +{ + return ctime((time_t)&timeToConvert); +} + +int32_t TIME_getDiffTime(int32_t diffTime1, int32_t diffTime0) +{ + return difftime((time_t)diffTime1, (time_t)diffTime0); +} + +uint32_t TIME_ntpTimeStamp(tstrSystemTime* WINCTime) +{ + struct tm theTime; + uint32_t mkTimeResult = 0; +// Convert to UNIX_EPOCH, this mktime uses years since 1900 and months are 0 based so we +// are doing a couple of adjustments here. + theTime.tm_hour = WINCTime->u8Hour; + theTime.tm_min = WINCTime->u8Minute; + theTime.tm_sec = WINCTime->u8Second; + theTime.tm_year = WINCTime->u16Year-1900; + theTime.tm_mon = WINCTime->u8Month-1; + theTime.tm_mday = WINCTime->u8Day; + theTime.tm_isdst = 0; +// Capture and Store + mkTimeResult = mktime(&theTime); + TIME_setCurrent(mkTimeResult); +// AVR set Time(null) value + set_system_time(mkTimeResult); +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/time_service.h b/AVRIoT.X/mcc_generated_files/time_service.h new file mode 100644 index 0000000..8585d7f --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/time_service.h @@ -0,0 +1,44 @@ +/* + \file time_service.h + + \brief Manage Application's Time Service Requirements + + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ +#ifndef TIME_SERVICE_H_ +#define TIME_SERVICE_H_ +#include + +#include "winc/m2m/m2m_types.h" + +void TIME_setCurrent(uint32_t); +uint32_t TIME_getCurrent(void); +void TIME_setStamp(uint32_t); +uint32_t TIME_getStamp(void); +void Time_startTask(void); +void Time_endTask(void); +uint32_t TIME_getOffset_UNIX(void); +char *TIME_GetcTime(uint32_t timeToConvert); +int32_t TIME_getDiffTime(int32_t diffTime1, int32_t diffTime0); +uint32_t TIME_ntpTimeStamp(tstrSystemTime* WINCTime); + +#endif /* TIME_SERVICE_H_ */ diff --git a/AVRIoT.X/mcc_generated_files/utils/assembler.h b/AVRIoT.X/mcc_generated_files/utils/assembler.h new file mode 100644 index 0000000..6a321d5 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/utils/assembler.h @@ -0,0 +1,39 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef ASSEMBLER_H_INCLUDED +#define ASSEMBLER_H_INCLUDED + +#if !defined(__ASSEMBLER__) && !defined(__IAR_SYSTEMS_ASM__) && !defined(__DOXYGEN__) +#error This file may only be included from assembly files +#endif + +#if defined(__ASSEMBLER__) +#include "assembler/gas.h" +#include +#elif defined(__IAR_SYSTEMS_ASM__) +#include "assembler/iar.h" +#include +#endif + +#endif /* ASSEMBLER_H_INCLUDED */ diff --git a/AVRIoT.X/mcc_generated_files/utils/assembler/gas.h b/AVRIoT.X/mcc_generated_files/utils/assembler/gas.h new file mode 100644 index 0000000..9913032 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/utils/assembler/gas.h @@ -0,0 +1,106 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef ASSEMBLER_GAS_H_INCLUDED +#define ASSEMBLER_GAS_H_INCLUDED + +#ifndef __DOXYGEN__ + +/* clang-format off */ + + /* IAR doesn't accept dots in macro names */ + .macro ld_addr, reg, sym + lda.w \reg, \sym + .endm + + /* Define a function \a name that is either globally visible or only + * file-local. + */ + .macro gas_begin_func name, is_public + .if \is_public + .global \name + .endif + .section .text.\name, "ax", @progbits + .type \name, @function + \name : + .endm + + /* Define a function \a name that is either globally visible or only + * file-local in a given segment. + */ + .macro gas_begin_func_segm name, is_public, segment + .if \is_public + .global \name + .endif + .section .\segment, "ax", @progbits + .type \name, @function + \name : + .endm + + /* Define \a name as a weak alias for the function \a strong_name */ + .macro gas_weak_function_alias name, strong_name + .global \name + .weak \name + .type \name, @function + .set \name, \strong_name + .endm + + /* Define a weak function called \a name */ + .macro gas_weak_function name + .weak \name + gas_begin_func \name 1 + .endm + +#define REPEAT(count) .rept count +#define END_REPEAT() .endr +#define FILL_BYTES(count) .fill count +#define SET_LOC(offset) .org offset +#define L(name) .L##name +#define EXTERN_SYMBOL(name) + +#define TEXT_SECTION(name) \ + .section name, "ax", @progbits +#define RODATA_SECTION(name) \ + .section name, "a", @progbits +#define DATA_SECTION(name) \ + .section name, "aw", @progbits +#define BSS_SECTION(name) \ + .section name, "aw", @nobits + +#define FUNCTION(name) gas_begin_func name 0 +#define PUBLIC_FUNCTION(name) gas_begin_func name 1 +#define PUBLIC_FUNCTION_SEGMENT(name, segment) \ + gas_begin_func_segm name 1 segment +#define WEAK_FUNCTION(name) gas_weak_function name +#define WEAK_FUNCTION_ALIAS(name, strong_name) \ + gas_weak_function_alias name strong_name +#define END_FUNC(name) \ + .size name, . - name + +#define END_FILE() + +/* clang-format on */ + +#endif /* __DOXYGEN__ */ + +#endif /* ASSEMBLER_GAS_H_INCLUDED */ diff --git a/AVRIoT.X/mcc_generated_files/utils/assembler/iar.h b/AVRIoT.X/mcc_generated_files/utils/assembler/iar.h new file mode 100644 index 0000000..12a3cee --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/utils/assembler/iar.h @@ -0,0 +1,94 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef ASSEMBLER_IAR_H_INCLUDED +#define ASSEMBLER_IAR_H_INCLUDED + +/* clang-format off */ + +ld_addr MACRO reg, sym + mov reg, LWRD sym + orh reg, HWRD sym + ENDM + +call MACRO sym + rcall sym + ENDM + +iar_begin_func MACRO name, sect, is_public, is_weak + MODULE name + RSEG CODE:CODE:NOROOT(1) + IF is_weak == 1 + PUBWEAK name + ELSEIF is_public + PUBLIC name + ENDIF +name: + ENDM + +iar_begin_func_segm MACRO name, sect, is_public, is_weak, segment + MODULE name + RSEG segment:CODE:NOROOT(1) + IF is_weak == 1 + PUBWEAK name + ELSEIF is_public + PUBLIC name + ENDIF +name: + ENDM + +iar_weak_alias MACRO name, strong_name + PUBWEAK name +name: + rjmp strong_name + ENDM + +#define lo(x) LWRD x +#define hi(x) HWRD x + +#define REPEAT(count) REPT count +#define END_REPEAT() ENDR +#define SET_LOC(offset) ORG offset +#define END_FILE() END + +#define FILL_BYTES(count) DS8 count + +#define L(name) name +#define EXTERN_SYMBOL(name) EXTERN name +#define FUNCTION(name) iar_begin_func name, text_##name, 0, 0 +#define PUBLIC_FUNCTION(name) iar_begin_func name, text_##name, 1, 0 +#define PUBLIC_FUNCTION_SEGMENT(name, segment) \ + iar_begin_func_segm name, text_##name, 1, 0, segment +#define WEAK_FUNCTION(name) iar_begin_func name, text_##name, 1, 1 +#define WEAK_FUNCTION_ALIAS(name, strong_name) \ + iar_weak_alias name, strong_name +#define END_FUNC(name) ENDMOD + +#define TEXT_SECTION(name) RSEG name:CODE:NOROOT +#define RODATA_SECTION(name) RSEG name:CONST:NOROOT +#define DATA_SECTION(name) RSEG name:DATA:NOROOT +#define BSS_SECTION(name) RSEG name:DATA:NOROOT + +/* clang-format on */ + +#endif /* ASSEMBLER_IAR_H_INCLUDED */ diff --git a/AVRIoT.X/mcc_generated_files/utils/atomic.h b/AVRIoT.X/mcc_generated_files/utils/atomic.h new file mode 100644 index 0000000..b3d1526 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/utils/atomic.h @@ -0,0 +1,103 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef ATOMIC_H +#define ATOMIC_H + +/** + * \defgroup doc_driver_utils_atomic Atomic memory access and critical sections + * \ingroup doc_driver_utils + * + * Atomic memory access and critical sections + * + * \{ + */ + +/* clang-format off */ + +#if defined(__GNUC__) || defined (__DOXYGEN__) + +/** + * \brief Enter a critical region + * + * Saves the contents of the status register, including the Global + * Interrupt Enable bit, so that it can be restored upon leaving the + * critical region. Thereafter, clears the Global Interrupt Enable Bit. + * This macro takes a parameter P that is unused for the GCC compiler, + * but necessary for code compatibility with the IAR compiler. The IAR + * compiler declares a variable with the name of the parameter for + * holding the SREG value. Since a variable is declared in the macro, + * this variable must have a name that is unique within the scope + * that the critical region is declared within, otherwise compilation + * will fail. + * + * \param[in] UNUSED(GCC)/P(IAR) Name of variable storing SREG + * + */ + +#define ENTER_CRITICAL(UNUSED) __asm__ __volatile__ ( \ + "in __tmp_reg__, __SREG__" "\n\t" \ + "cli" "\n\t" \ + "push __tmp_reg__" "\n\t" \ + ::: "memory" \ + ) + +/** + * \brief Exit a critical region + * + * Restores the contents of the status register, including the Global + * Interrupt Enable bit, as it was when entering the critical region. + * This macro takes a parameter P that is unused for the GCC compiler, + * but necessary for code compatibility with the IAR compiler. The IAR + * compiler uses this parameter as the name of a variable that holds + * the SREG value. The parameter must be identical to the parameter + * used in the corresponding ENTER_CRITICAL(). + * + * \param[in] UNUSED(GCC)/P(IAR) Name of variable storing SREG + * + */ + +#define EXIT_CRITICAL(UNUSED) __asm__ __volatile__ ( \ + "pop __tmp_reg__" "\n\t" \ + "out __SREG__, __tmp_reg__" "\n\t" \ + ::: "memory" \ + ) + +#define DISABLE_INTERRUPTS() __asm__ __volatile__ ( "cli" ::: "memory") +#define ENABLE_INTERRUPTS() __asm__ __volatile__ ( "sei" ::: "memory") + +#elif defined(__ICCAVR__) + +#define ENTER_CRITICAL(P) unsigned char P = __save_interrupt();__disable_interrupt(); +#define EXIT_CRITICAL(P) __restore_interrupt(P); + +#define DISABLE_INTERRUPTS() __disable_interrupt(); +#define ENABLE_INTERRUPTS() __enable_interrupt(); + +#else +# error Unsupported compiler. +#endif + +/* clang-format on */ + +#endif /* ATOMIC_H */ diff --git a/AVRIoT.X/mcc_generated_files/utils/compiler.h b/AVRIoT.X/mcc_generated_files/utils/compiler.h new file mode 100644 index 0000000..1f5ca8f --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/utils/compiler.h @@ -0,0 +1,70 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef UTILS_COMPILER_H +#define UTILS_COMPILER_H + +/** + * \defgroup doc_driver_utils_compiler Compiler abstraction + * \ingroup doc_driver_utils + * + * Compiler abstraction layer and code utilities for 8-bit AVR. + * This module provides various abstraction layers and utilities + * to make code compatible between different compilers. + * + * \{ + */ + +#if defined(__GNUC__) +#include +#include +#elif defined(__ICCAVR__) +#define ENABLE_BIT_DEFINITIONS 1 +#include +#include + +#ifndef CCP_IOREG_gc +#define CCP_IOREG_gc 0xD8 /* CPU_CCP_IOREG_gc */ +#endif +#ifndef CCP_SPM_gc +#define CCP_SPM_gc 0x9D /* CPU_CCP_SPM_gc */ +#endif + +#else +#error Unsupported compiler. +#endif + +#include +#include +#include +#include + +#include "interrupt_avr8.h" + +/** + * \def UNUSED + * \brief Marking \a v as a unused parameter or value. + */ +#define UNUSED(v) (void)(v) + +#endif /* UTILS_COMPILER_H */ diff --git a/AVRIoT.X/mcc_generated_files/utils/interrupt_avr8.h b/AVRIoT.X/mcc_generated_files/utils/interrupt_avr8.h new file mode 100644 index 0000000..5502ef1 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/utils/interrupt_avr8.h @@ -0,0 +1,90 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +/** + * \defgroup doc_driver_utils_interrupts ISR abstraction + * \ingroup doc_driver_utils + * + * Interrupt-related functionality. + * + * \{ + */ + +#ifndef UTILS_INTERRUPT_AVR8_H +#define UTILS_INTERRUPT_AVR8_H + +/** + * \weakgroup interrupt_group + * + * @{ + */ + +#ifdef ISR_CUSTOM_H +#include ISR_CUSTOM_H +#else + +/** + * \def ISR + * \brief Define service routine for specified interrupt vector + * + * Usage: + * \code + ISR(FOO_vect) + { + ... + } +\endcode + * + * \param vect Interrupt vector name as found in the device header files. + */ +#if defined(__DOXYGEN__) +#define ISR(vect) +#elif defined(__GNUC__) +#include +#elif defined(__ICCAVR__) +#define __ISR(x) _Pragma(#x) +#define ISR(vect) __ISR(vector = vect) __interrupt void handler_##vect(void) +#endif +#endif // ISR_CUSTOM_H + +#ifdef __GNUC__ +#define cpu_irq_enable() sei() +#define cpu_irq_disable() cli() +#else +#define cpu_irq_enable() __enable_interrupt() +#define cpu_irq_disable() __disable_interrupt() +#endif + +//! @} + +/** + * \weakgroup interrupt_deprecated_group + * @{ + */ +// Deprecated definitions. +#define Enable_global_interrupt() cpu_irq_enable() +#define Disable_global_interrupt() cpu_irq_disable() +#define Is_global_interrupt_enabled() cpu_irq_is_enabled() +//! @} + +#endif /* UTILS_INTERRUPT_AVR8_H */ diff --git a/AVRIoT.X/mcc_generated_files/utils/utils.h b/AVRIoT.X/mcc_generated_files/utils/utils.h new file mode 100644 index 0000000..4dd41b5 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/utils/utils.h @@ -0,0 +1,51 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +/** + * \defgroup doc_driver_utils AVR Code utility functions + * + * Compiler abstraction layer and code utilities for AVR. + * This module provides various abstraction layers and utilities + * to make code compatible between different compilers. + * + * \{ + */ + +#ifndef UTILS_H_INCLUDED +#define UTILS_H_INCLUDED + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Retrieve array size + */ +#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) + +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif /* UTILS_H_INCLUDED */ diff --git a/AVRIoT.X/mcc_generated_files/utils/utils_assert.h b/AVRIoT.X/mcc_generated_files/utils/utils_assert.h new file mode 100644 index 0000000..830b74c --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/utils/utils_assert.h @@ -0,0 +1,62 @@ +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +/** + * \defgroup doc_driver_utils_assert Functionality for assert. + * \ingroup doc_driver_utils + * + * \{ + */ + +#ifndef _ASSERT_H_INCLUDED +#define _ASSERT_H_INCLUDED + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/** + * \brief Assert macro + * + * This macro is used to throw asserts. It can be mapped to different function + * based on debug level. + * + * \param[in] condition A condition to be checked; + * assert is thrown if the given condition is false + */ + +#ifdef DEBUG +#define ASSERT(condition) \ + if (!(condition)) \ + while (true) \ + ; +#else +#define ASSERT(condition) ((void)0) +#endif + +#ifdef __cplusplus +} +#endif +#endif /* _ASSERT_H_INCLUDED */ diff --git a/AVRIoT.X/mcc_generated_files/winc/common/ecc_types.h b/AVRIoT.X/mcc_generated_files/winc/common/ecc_types.h new file mode 100644 index 0000000..fda9255 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/common/ecc_types.h @@ -0,0 +1,199 @@ +/** + * + * \file + * + * \brief Elliptic Curve Cryptography Module Interface. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef __ECC_TYPES_H__ +#define __ECC_TYPES_H__ + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +MACROS +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + + + +#define ECC_LARGEST_CURVE_SIZE (32) +/*!< + The size of the the largest supported EC. For now, assuming + the 256-bit EC is the largest supported curve type. +*/ + + +#define ECC_POINT_MAX_SIZE ECC_LARGEST_CURVE_SIZE +/*!< + Maximum size of one coordinate of an EC point. +*/ + + +#define ECC_POINT_MAX_SIZE_WORDS (ECC_POINT_MAX_SIZE / 4) +/*!< + SIZE in 32-bit words. +*/ + + +#define ECC_NUM_SUPP_CURVES ((sizeof(gastrECCSuppList)) / (sizeof(tstrEllipticCurve))) +/*!< +*/ + + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +DATA TYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + + +/*! +@enum \ + tenuEcNamedCurve + +@brief EC Named Curves + + Defines a list of supported ECC named curves. +*/ +typedef enum EcNamedCurve{ + EC_SECP192R1 = 19, + /*!< + It is defined by NIST as P192 and by the SEC Group as secp192r1. + */ + EC_SECP256R1 = 23, + /*!< + It is defined by NIST as P256 and by the SEC Group as secp256r1. + */ + EC_SECP384R1 = 24, + /*!< + It is defined by NIST as P384 and by the SEC Group as secp384r1. + */ + EC_SECP521R1 = 25, + /*!< + It is defined by NIST as P521 and by the SEC Group as secp521r1. + */ + EC_UNKNOWN = 255 +}tenuEcNamedCurve; + + +/*! +@struct \ + tstrECPoint + +@brief Elliptic Curve point representation +*/ +typedef struct EcPoint{ + uint8_t X[ECC_POINT_MAX_SIZE]; + /*!< + The X-coordinate of the ec point. + */ + uint8_t Y[ECC_POINT_MAX_SIZE]; + /*!< + The Y-coordinate of the ec point. + */ + uint16_t u16Size; + /*!< + Point size in bytes (for each of the coordinates). + */ + uint16_t u16PrivKeyID; + /*!< + ID for the corresponding private key. + */ +}tstrECPoint; + + +/*! +@struct \ + tstrECDomainParam + +@brief ECC Curve Domain Parameters + + The structure defines the ECC domain parameters for curves defined over prime finite fields. +*/ +typedef struct EcDomainParam{ + uint32_t p[ECC_POINT_MAX_SIZE_WORDS]; + uint32_t a[ECC_POINT_MAX_SIZE_WORDS]; + uint32_t b[ECC_POINT_MAX_SIZE_WORDS]; + tstrECPoint G; +}tstrECDomainParam; + + +/*! +@struct \ + tstrEllipticCurve + +@brief + Definition of an elliptic curve +*/ +typedef struct{ + tenuEcNamedCurve enuType; + tstrECDomainParam strParam; +}tstrEllipticCurve; + + +typedef enum{ + ECC_REQ_NONE, + ECC_REQ_CLIENT_ECDH, + ECC_REQ_SERVER_ECDH, + ECC_REQ_GEN_KEY, + ECC_REQ_SIGN_GEN, + ECC_REQ_SIGN_VERIFY +}tenuEccREQ; + + +typedef struct{ + tstrECPoint strPubKey; + uint8_t au8Key[ECC_POINT_MAX_SIZE]; +}tstrEcdhReqInfo; + + +typedef struct{ + uint32_t u32nSig; +}tstrEcdsaVerifyReqInfo; + + +typedef struct{ + uint16_t u16CurveType; + uint16_t u16HashSz; +}tstrEcdsaSignReqInfo; + + +typedef struct{ + uint16_t u16REQ; + uint16_t u16Status; + uint32_t u32UserData; + uint32_t u32SeqNo; + union{ + tstrEcdhReqInfo strEcdhREQ; + tstrEcdsaSignReqInfo strEcdsaSignREQ; + tstrEcdsaVerifyReqInfo strEcdsaVerifyREQ; + }; +}tstrEccReqInfo; + +#endif /* __ECC_TYPES_H__ */ diff --git a/AVRIoT.X/mcc_generated_files/winc/common/winc_1500_3A0_registers.h b/AVRIoT.X/mcc_generated_files/winc/common/winc_1500_3A0_registers.h new file mode 100644 index 0000000..36b0a02 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/common/winc_1500_3A0_registers.h @@ -0,0 +1,103 @@ +/** + * + * \file + * + * \brief WINC Driver WINC1500 3A0 Hardware Registers. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _WINC_1500_3A0_REGISTERS_H_ +#define _WINC_1500_3A0_REGISTERS_H_ + +#define NMI_CLOCKLESS_REG_BASE (0x00) +#define NMI_PERIPH_REG_BASE (0x1000) +#define NMI_INTR_REG_BASE (0x1A00) +#define NMI_SPI_REG_BASE (0xE800) +#define SPI_FLASH_BASE (0x10200) + +#define WAKE_CLK_REG (NMI_CLOCKLESS_REG_BASE + 0x01) +#define HOST_CORT_COMM (NMI_CLOCKLESS_REG_BASE + 0x0B) +#define CLOCKS_EN_REG (NMI_CLOCKLESS_REG_BASE + 0x0F) +#define CORT_HOST_COMM (NMI_CLOCKLESS_REG_BASE + 0x10) + +#define NMI_CHIPID (NMI_PERIPH_REG_BASE + 0x000) +#define NMI_EFUSE_0_CONTROL (NMI_PERIPH_REG_BASE + 0x014) +#define NMI_REV_REG_ATE (NMI_PERIPH_REG_BASE + 0x048) /*Revision info register in case of ATE firmware*/ +#define WIFI_HOST_RCV_CTRL_3 (NMI_PERIPH_REG_BASE + 0x06C) +#define WIFI_HOST_RCV_CTRL_0 (NMI_PERIPH_REG_BASE + 0x070) +#define WIFI_HOST_RCV_CTRL_2 (NMI_PERIPH_REG_BASE + 0x078) +#define WIFI_HOST_RCV_CTRL_1 (NMI_PERIPH_REG_BASE + 0x084) +#define DUMMY_REGISTER WIFI_HOST_RCV_CTRL_1 +#define WIFI_HOST_RCV_CTRL_5 (NMI_PERIPH_REG_BASE + 0x088) +#define NMI_STATE_REG (NMI_PERIPH_REG_BASE + 0x08C) +#define NMI_CORTUS_BOOT_RESET_MUXSEL (NMI_PERIPH_REG_BASE + 0x118) +#define NMI_RF_REVID (NMI_PERIPH_REG_BASE + 0x3F4) +#define NMI_GLB_RESET_0 (NMI_PERIPH_REG_BASE + 0x400) +#define NMI_PIN_MUX_0 (NMI_PERIPH_REG_BASE + 0x408) +#define NMI_PIN_MUX_1 (NMI_PERIPH_REG_BASE + 0x410) +#define NMI_PLL_INTERNAL_3 (NMI_PERIPH_REG_BASE + 0x41C) +#define MMI_MISC_CTRL (NMI_PERIPH_REG_BASE + 0x428) +#define NMI_GP_REG_0 (NMI_PERIPH_REG_BASE + 0x49C) +#define NMI_GP_REG_1 (NMI_PERIPH_REG_BASE + 0x4A0) + +#define NMI_INTR_ENABLE (NMI_INTR_REG_BASE + 0x000) + +#define NMI_SPI_CTL (NMI_SPI_REG_BASE + 0x000) +#define NMI_SPI_MASTER_DMA_ADDR (NMI_SPI_REG_BASE + 0x004) +#define NMI_SPI_MASTER_DMA_COUNT (NMI_SPI_REG_BASE + 0x008) +#define NMI_SPI_SLAVE_DMA_ADDR (NMI_SPI_REG_BASE + 0x00C) +#define NMI_SPI_SLAVE_DMA_COUNT (NMI_SPI_REG_BASE + 0x010) +#define NMI_SPI_TX_MODE (NMI_SPI_REG_BASE + 0x020) +#define NMI_SPI_PROTOCOL_CONFIG (NMI_SPI_REG_BASE + 0x024) +#define NMI_SPI_INTR_CTL (NMI_SPI_REG_BASE + 0x02C) +#define NMI_SPI_MISC_CTRL (NMI_SPI_REG_BASE + 0x048) + +#define SPI_FLASH_MODE (SPI_FLASH_BASE + 0x00) +#define SPI_FLASH_CMD_CNT (SPI_FLASH_BASE + 0x04) +#define SPI_FLASH_DATA_CNT (SPI_FLASH_BASE + 0x08) +#define SPI_FLASH_BUF1 (SPI_FLASH_BASE + 0x0C) +#define SPI_FLASH_BUF2 (SPI_FLASH_BASE + 0x10) +#define SPI_FLASH_BUF_DIR (SPI_FLASH_BASE + 0x14) +#define SPI_FLASH_TR_DONE (SPI_FLASH_BASE + 0x18) +#define SPI_FLASH_DMA_ADDR (SPI_FLASH_BASE + 0x1C) +#define SPI_FLASH_MSB_CTL (SPI_FLASH_BASE + 0x20) +#define SPI_FLASH_TX_CTL (SPI_FLASH_BASE + 0x24) + +#define NMI_REV_REG (0x207AC) /*Also, Used to load ATE firmware from SPI Flash and to ensure that it is running too*/ +#define M2M_WAIT_FOR_HOST_REG (0x207BC) + +#define NMI_GP_REG_2 (0xC0008) +#define BOOTROM_REG (0xC000C) + +#define WIFI_HOST_RCV_CTRL_4 (0x150400) + +#endif /* _WINC_1500_3A0_REGISTERS_H_ */ diff --git a/AVRIoT.X/mcc_generated_files/winc/common/winc_debug.h b/AVRIoT.X/mcc_generated_files/winc/common/winc_debug.h new file mode 100644 index 0000000..99f1534 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/common/winc_debug.h @@ -0,0 +1,73 @@ +/** + * + * \file + * + * \brief This module contains debug APIs declarations. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _WINC_DEBUG_H_ +#define _WINC_DEBUG_H_ + +#define WINC_LOG_LEVEL_NONE 0 +#define WINC_LOG_LEVEL_ERROR 1 +#define WINC_LOG_LEVEL_INFO 2 +#define WINC_LOG_LEVEL_DEBUG 3 + +#define WINC_LOG_ERROR(...) +#define WINC_LOG_INFO(...) +#define WINC_LOG_DEBUG(...) + +#if defined(CONF_WINC_PRINTF) && defined(CONF_WINC_DEBUG_LEVEL) && (CONF_WINC_DEBUG_LEVEL > 0) + +#if (CONF_WINC_DEBUG_LEVEL >= WINC_LOG_LEVEL_ERROR) +#undef WINC_LOG_ERROR +#define WINC_LOG_ERROR(...) do { CONF_WINC_PRINTF("[error][%s][%u]", __FUNCTION__, (uint16_t)__LINE__); CONF_WINC_PRINTF(__VA_ARGS__); CONF_WINC_PRINTF("\r\n"); } while(0) +#if (CONF_WINC_DEBUG_LEVEL >= WINC_LOG_LEVEL_INFO) +#undef WINC_LOG_INFO +#define WINC_LOG_INFO(...) do { CONF_WINC_PRINTF("[info]" __VA_ARGS__); CONF_WINC_PRINTF("\r\n"); } while(0) +#if (CONF_WINC_DEBUG_LEVEL >= WINC_LOG_LEVEL_DEBUG) +#undef WINC_LOG_DEBUG +#define WINC_LOG_DEBUG(...) do { CONF_WINC_PRINTF("[debug]" __VA_ARGS__); CONF_WINC_PRINTF("\r\n"); } while(0) +#endif /* WINC_LOG_LEVEL_DEBUG */ +#endif /* WINC_LOG_LEVEL_INFO */ +#endif /* WINC_LOG_LEVEL_ERROR */ + +#endif + +#ifdef CONF_WINC_ASSERT +#define WINC_ASSERT(condition) CONF_WINC_ASSERT(condition) +#else +#define WINC_ASSERT(condition) +#endif + +#endif /* _WINC_DEBUG_H_ */ diff --git a/AVRIoT.X/mcc_generated_files/winc/common/winc_defines.h b/AVRIoT.X/mcc_generated_files/winc/common/winc_defines.h new file mode 100644 index 0000000..e7c9afd --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/common/winc_defines.h @@ -0,0 +1,126 @@ +/** + * + * \file + * + * \brief WINC Driver Common API Definitions. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +/** @defgroup COMMON Common + @{ + @defgroup COMMONDEF Defines + @} + */ + +#ifndef _WINC_DEFINES_H_ +#define _WINC_DEFINES_H_ + +/**@addtogroup COMMONDEF + * @{ + */ +#define M2M_SUCCESS (0) +#define M2M_ERR_SEND (-1) +#define M2M_ERR_RCV (-2) +#define M2M_ERR_MEM_ALLOC (-3) +#define M2M_ERR_TIME_OUT (-4) +#define M2M_ERR_INIT (-5) +#define M2M_ERR_BUS_FAIL (-6) +#define M2M_NOT_YET (-7) +#define M2M_ERR_FIRMWARE (-8) +#define M2M_SPI_FAIL (-9) +#define M2M_ERR_FIRMWARE_bURN (-10) +#define M2M_ACK (-11) +#define M2M_ERR_FAIL (-12) +#define M2M_ERR_FW_VER_MISMATCH (-13) +#define M2M_ERR_SCAN_IN_PROGRESS (-14) +#define M2M_ERR_INVALID_ARG (-15) + +#define NBIT31 (0x80000000) +#define NBIT30 (0x40000000) +#define NBIT29 (0x20000000) +#define NBIT28 (0x10000000) +#define NBIT27 (0x08000000) +#define NBIT26 (0x04000000) +#define NBIT25 (0x02000000) +#define NBIT24 (0x01000000) +#define NBIT23 (0x00800000) +#define NBIT22 (0x00400000) +#define NBIT21 (0x00200000) +#define NBIT20 (0x00100000) +#define NBIT19 (0x00080000) +#define NBIT18 (0x00040000) +#define NBIT17 (0x00020000) +#define NBIT16 (0x00010000) +#define NBIT15 (0x00008000) +#define NBIT14 (0x00004000) +#define NBIT13 (0x00002000) +#define NBIT12 (0x00001000) +#define NBIT11 (0x00000800) +#define NBIT10 (0x00000400) +#define NBIT9 (0x00000200) +#define NBIT8 (0x00000100) +#define NBIT7 (0x00000080) +#define NBIT6 (0x00000040) +#define NBIT5 (0x00000020) +#define NBIT4 (0x00000010) +#define NBIT3 (0x00000008) +#define NBIT2 (0x00000004) +#define NBIT1 (0x00000002) +#define NBIT0 (0x00000001) + +#ifdef CONF_WINC_MCU_ARCH_LITTLE_ENDIAN +/*! Most significant byte of 32bit word (LE) */ +#define BYTE_0(word) ((uint8_t)(((word) >> 0 ) & 0xFF)) +/*! Second most significant byte of 32bit word (LE) */ +#define BYTE_1(word) ((uint8_t)(((word) >> 8 ) & 0xFF)) +/*! Third most significant byte of 32bit word (LE) */ +#define BYTE_2(word) ((uint8_t)(((word) >> 16) & 0xFF)) +/*! Least significant byte of 32bit word (LE) */ +#define BYTE_3(word) ((uint8_t)(((word) >> 24) & 0xFF)) +#endif + +#ifdef CONF_WINC_MCU_ARCH_BIG_ENDIAN +/*! Most significant byte of 32bit word (BE) */ +#define BYTE_0(word) ((uint8_t)(((word) >> 24) & 0xFF)) +/*! Second most significant byte of 32bit word (BE) */ +#define BYTE_1(word) ((uint8_t)(((word) >> 16) & 0xFF)) +/*! Third most significant byte of 32bit word (BE) */ +#define BYTE_2(word) ((uint8_t)(((word) >> 8 ) & 0xFF)) +/*! Least significant byte of 32bit word (BE) */ +#define BYTE_3(word) ((uint8_t)(((word) >> 0 ) & 0xFF)) +#endif + +#define UNUSED_VAR(VAR) (void)(VAR) + +/**@}*/ + +#endif /*_WINC_DEFINES_H_*/ diff --git a/AVRIoT.X/mcc_generated_files/winc/common/winc_registers.h b/AVRIoT.X/mcc_generated_files/winc/common/winc_registers.h new file mode 100644 index 0000000..a38e29c --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/common/winc_registers.h @@ -0,0 +1,43 @@ +/** + * + * \file + * + * \brief WINC Driver Common Hardware Registers. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _WINC_REGISTERS_H_ +#define _WINC_REGISTERS_H_ + +#include "winc_1500_3A0_registers.h" + +#endif /* _WINC_REGISTERS_H_ */ diff --git a/AVRIoT.X/mcc_generated_files/winc/driver/winc_adapter.c b/AVRIoT.X/mcc_generated_files/winc/driver/winc_adapter.c new file mode 100644 index 0000000..0f6d5f7 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/driver/winc_adapter.c @@ -0,0 +1,169 @@ +/** + * + * \file + * + * \brief This module contains WINC ADAPTER APIs implementation. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "../../mcc.h" +#include "../../delay.h" +#include "winc_adapter.h" + +static int_fast8_t serviceRequest; + +static void winc_interrupt_handler(void) +{ + if (!(INT_GetValue())) + { + serviceRequest++; + } +} + +int_fast8_t winc_adapter_interrupt_request_pending(void) +{ + return serviceRequest ? 1 : 0; +} + +int_fast8_t winc_adapter_interrupt_serviced(bool bEdgeInt) +{ + if (bEdgeInt) + { + INT_DisableInterruptOnChange(); + + if(serviceRequest) + { + serviceRequest--; + } + + INT_EnableInterruptForFallingEdge(); + } + + return 1; +} + +int_fast8_t winc_adapter_init(void) +{ + serviceRequest = 0; + PORTF_INT_SetInterruptHandler(winc_interrupt_handler); + + cpu_irq_enable(); + + + return 1; +} + +int_fast8_t winc_adapter_deinit(void) +{ + return 1; +} + +void winc_adapter_sleep(uint32_t u32TimeMsec) +{ + while (u32TimeMsec--) { + DELAY_milliseconds(1); + } +} + +void winc_adapter_chip_enable_assert(void) +{ + CE_SetHigh(); +} + +void winc_adapter_chip_enable_deassert(void) +{ + CE_SetLow(); +} + +void winc_adapter_reset_assert(void) +{ + RST_SetLow(); +} + +void winc_adapter_reset_deassert(void) +{ + RST_SetHigh(); +} + +int_fast8_t winc_adapter_spi_open(void) +{ + return 1; +} + +int_fast8_t winc_adapter_spi_write(const uint8_t *puBuf, size_t size) +{ + if (puBuf == NULL) + return 0; + + spiMaster[WINC].spiOpen(); + nCS_SetLow(); + + while(size >= 128) + { + spiMaster[WINC].writeBlock((uint8_t *)puBuf, 128); + size -= 128; + puBuf += 128; + } + spiMaster[WINC].writeBlock((uint8_t *)puBuf, size); + + nCS_SetHigh(); + spiMaster[WINC].spiClose(); + + return 1; +} + +int_fast8_t winc_adapter_spi_read(uint8_t *puBuf, size_t size) +{ + if (puBuf == NULL) + return 0; + + spiMaster[WINC].spiOpen(); + nCS_SetLow(); + + while(size >= 128) + { + spiMaster[WINC].readBlock(puBuf, 128); + size -= 128; + puBuf += 128; + } + spiMaster[WINC].readBlock(puBuf, size); + + nCS_SetHigh(); + spiMaster[WINC].spiClose(); + + return 1; +} + +int_fast8_t winc_adapter_spi_close(void) +{ + return 1; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/winc/driver/winc_adapter.h b/AVRIoT.X/mcc_generated_files/winc/driver/winc_adapter.h new file mode 100644 index 0000000..fd9f685 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/driver/winc_adapter.h @@ -0,0 +1,445 @@ +/** + * + * \file + * + * \brief WINC ADAPTER API Declarations. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +/** @defgroup winc_adapter + @brief + The ADAPTER is an architecture specific package implemented to support the common WINC driver. When + porting the driver to a new architecture this package will need to be written to provide the + functionality described here. + @{ + @defgroup ADAPTERDefine Defines + @defgroup ADAPTERInit Initialization and de-initialization functions + @defgroup ADAPTERSleep Sleep/delay functions + @defgroup ADAPTERInt Interrupt handling functions + @defgroup ADAPTERSPI SPI interface functions + @defgroup ADAPTERGPIO GPIO control functions + @defgroup ADAPTERUART UART interface functions + @note + These functions are only required for supporting the serial bridge functionality of the + driver. + @} + */ + +#ifndef _WINC_ADAPTER_H_ +#define _WINC_ADAPTER_H_ + +#include +#include +#include +#include +#include +#include +#include +#include "../../config/conf_winc.h" + +/**@addtogroup ADAPTERDefine + * @{ + */ +#if defined(CONF_WINC_MCU_ARCH_LITTLE_ENDIAN) +#define HOST_TO_WINC_U32(U32) (U32) +#define HOST_TO_WINC_U16(U16) (U16) +#elif defined(CONF_WINC_MCU_ARCH_BIG_ENDIAN) +#define HOST_TO_WINC_U32(U32) CONF_WINC_UINT32_SWAP(U32) +#define HOST_TO_WINC_U16(U16) CONF_WINC_UINT16_SWAP(U16) +#endif + +#define WINC_TO_HOST_U32 HOST_TO_WINC_U32 +#define WINC_TO_HOST_U16 HOST_TO_WINC_U16 +/**@}*/ // ADAPTERDefine + +#ifdef __cplusplus +extern "C" { +#endif + +/**@addtogroup ADAPTERInit + * @{ + */ +/*! + @fn \ + int_fast8_t winc_adapter_init(void); + + @brief + This function is used to initialize the ADAPTER in order to prepare the WINC before any + WINC API calls. + + @details + The winc_adapter_init function is the first function that should be called at the beginning of + every application to initialize the ADAPTER and the WINC board. Otherwise, the rest of the ADAPTER + function calls will return with failure. This function should also be called after the WINC + has been switched off with a successful call to @ref winc_adapter_deinit in order to reinitialize + the ADAPTER before the Application can use any of the WINC APIs again. After the function + initializes the WINC. + +@note + Implementation of this function is host dependent. + +@warning + Omitting this function will lead to unavailability of host-chip communication. + +@see winc_adapter_deinit + +@return + The function returns a value of 1 for successful operations and a 0 value otherwise. +*/ +int_fast8_t winc_adapter_init(void); + +/*! +@fn \ + int_fast8_t winc_adapter_deinit(void); + +@brief + This function is used to de-initialize the ADAPTER and turn off the WINC board. + +@details + The winc_adapter_deinit is the last function that should be called after the application has + finished and before the WINC is switched off. Every function call of @ref winc_adapter_init + should be matched with a call to winc_adapter_deinit. Failure to do so may result in the WINC + consuming higher power than expected, since it won't be properly de-initialized. + +@pre + The ADAPTER should be initialized through @ref winc_adapter_init first. + +@note + Implementation of this function is host dependent. + +@warning + Omitting this function may lead to unknown behavior in case of soft reset. + +@see winc_adapter_init + +@return + The function returns a value of 1 for successful operations and a 0 value otherwise. +*/ +int_fast8_t winc_adapter_deinit(void); + +/**@}*/ // ADAPTERInit +/**@addtogroup ADAPTERSleep + * @{ + */ +/*! +@fn \ + void winc_adapter_sleep(uint32_t u32TimeMsec); + +@brief + Used to put the host to sleep for the specified duration (in milliseconds). + Forcing the host to sleep for extended period may lead to host not being able to respond + to WINC board events. It is important to be considerate while choosing the sleep period. + +@param[in] u32TimeMsec + Time unit in milliseconds. + +@pre + Initialize @ref winc_adapter_init first. + +@note + Implementation of this function is host dependent. + +@see winc_adapter_init +*/ +void winc_adapter_sleep(uint32_t u32TimeMsec); + +/**@}*/ // ADAPTERSleep +/**@addtogroup ADAPTERInt + * @{ + */ +/*! +@fn \ + int_fast8_t winc_adapter_interrupt_request_pending(void); + +@brief + Indicates to the WINC driver is an interrupt request has been received. This function will be + called by the WINC driver during @ref m2m_wifi_handle_events to determine if the WINC should be + queried for possible messages. + +@pre + Initialize @ref winc_adapter_init first. + +@note + Implementation of this function is host dependent. + +@see winc_adapter_init + +@return + The functions returns a non-zero value to indicate if an interrupt has been received, otherwise zero. +*/ +int_fast8_t winc_adapter_interrupt_request_pending(void); + +/*! +@fn \ + int_fast8_t winc_adapter_interrupt_serviced(bool bEdgeInt); + +@brief + Indicates to the ADAPTER that a pending interrupt has been processed by the driver. The WINC driver + will call this function to indicate that a message has been received from the WINC. @p bEdgeInt + indicates if an edge interrupt should be serviced (true) or a level interrupt (false). + + If the ADAPTER is managing the WINC devices IRQn line as an edge interrupt then when @p bEdgeInt is true + the ADAPTER should consider a pending interrupt has been serviced. If @p bEdgeInt is false the ADAPTER must + ignore it. This ensures the interrupt is serviced before the WINC re-activates the IRQn line and thus + before another interrupt can be received. + + If the ADAPTER is managing the WINC devices IRQn line as a level interrupt then when @p bEdgeInt is false + the ADAPTER should consider a pending interrupt has been serviced. If @p bEdgeInt is true the ADAPTER must + ignore it. This ensures the interrupt is serviced after the WINC re-activates the IRQn line and thus + ensures any previous interrupt level has been de-asserted by the WINC. + +@pre + Initialize @ref winc_adapter_init first. + +@note + Implementation of this function is host dependent. + +@see winc_adapter_init + +@return + The functions returns a non-zero value to indicate if an interrupt service has been acknowledged by the ADAPTER. +*/ +int_fast8_t winc_adapter_interrupt_serviced(bool bEdgeInt); + +/**@}*/ // ADAPTERInt +/**@addtogroup ADAPTERSPI + * @{ + */ +/*! +@fn \ + int_fast8_t winc_adapter_spi_open(void); + +@brief + Called by the driver to open the SPI bus for use. + +@pre + Initialize @ref winc_adapter_init first. + +@note + Implementation of this function is host dependent. + +@see winc_adapter_init + +@return + The function returns a value of 1 for successful operations and a 0 value otherwise. +*/ +int_fast8_t winc_adapter_spi_open(void); + +/*! +@fn \ + int_fast8_t winc_adapter_spi_close(void); + +@brief + Called by the driver to close the SPI bus. @ref winc_adapter_spi_open should have been called before this. + +@pre + Initialize @ref winc_adapter_init first and @ref winc_adapter_spi_open must have been called. + +@note + Implementation of this function is host dependent. + +@see winc_adapter_init +@see winc_adapter_spi_open + +@return + The function returns a value of 1 for successful operations and a 0 value otherwise. +*/ +int_fast8_t winc_adapter_spi_close(void); + +/*! +@fn \ + int_fast8_t winc_adapter_spi_write(const uint8_t *puBuf, size_t size); + +@brief + Called by the driver to write data to the SPI bus. + +@param[in] puBuf + A pointer to the data to be written to the SPI bus. + +@param[in] size + The number of bytes to be written. + +@pre + Initialize @ref winc_adapter_init first and @ref winc_adapter_spi_open must have been called. + +@note + Implementation of this function is host dependent. + +@see winc_adapter_init +@see winc_adapter_spi_open + +@return + The function returns a value of 1 for successful operations and a 0 value otherwise. +*/ +int_fast8_t winc_adapter_spi_write(const uint8_t *puBuf, size_t size); + +/*! +@fn \ + int_fast8_t winc_adapter_spi_read(uint8_t *puBuf, size_t size); + +@brief + Called by the driver to read data from the SPI bus. + +@param[in] puBuf + A pointer to a buffer to which the data should be written. + +@param[in] size + The number of bytes to be read. + +@pre + Initialize @ref winc_adapter_init first and @ref winc_adapter_spi_open must have been called. + +@note + Implementation of this function is host dependent. + +@see winc_adapter_init +@see winc_adapter_spi_open + +@return + The function returns a value of 1 for successful operations and a 0 value otherwise. +*/ +int_fast8_t winc_adapter_spi_read(uint8_t *puBuf, size_t size); + +/**@}*/ // ADAPTERSPI +/**@addtogroup ADAPTERGPIO + * @{ + */ +/*! +@fn \ + void winc_adapter_chip_enable_assert(void); + +@brief + Called by the driver when the chip enable line should be asserted. +*/ +void winc_adapter_chip_enable_assert(void); + +/*! +@fn \ + void winc_adapter_chip_enable_deassert(void); + +@brief + Called by the driver when the chip enable line should be de-asserted. +*/ +void winc_adapter_chip_enable_deassert(void); + +/*! +@fn \ + void winc_adapter_reset_assert(void); + +@brief + Called by the driver when the WINC reset line should be asserted. +*/ +void winc_adapter_reset_assert(void); + +/*! +@fn \ + void winc_adapter_reset_deassert(void); + +@brief + Called by the driver when the WINC reset line should be de-asserted. +*/ +void winc_adapter_reset_deassert(void); + +/**@}*/ // ADAPTERGPIO +/**@addtogroup ADAPTERUART + * @{ + */ +/*! +@fn \ + int_fast8_t winc_adapter_uart_open(uint32_t u32BaudRate); + +@brief + Called by the driver to open the UART. + +@return + The function returns a value of 1 for successful operations and a 0 value otherwise. +*/ +int_fast8_t winc_adapter_uart_open(uint32_t u32BaudRate); + +/*! +@fn \ + int_fast8_t winc_adapter_uart_close(void); + +@brief + Called by the driver to close the UART. + +@return + The function returns a value of 1 for successful operations and a 0 value otherwise. +*/ +int_fast8_t winc_adapter_uart_close(void); + +/*! +@fn \ + int_fast8_t winc_adapter_uart_set_baudrate(uint32_t u32BaudRate); + +@brief + Called by the driver to set the UART baud rate. + +@return + The function returns a value of 1 for successful operations and a 0 value otherwise. +*/ +int_fast8_t winc_adapter_uart_set_baudrate(uint32_t u32BaudRate); + +/*! +@fn \ + size_t winc_adapter_uart_write(const uint8_t *pu8Buf, size_t szLength); + +@brief + Called by the driver to write data to the UART. + +@note + This function must either indicate all bytes were accepted or an error occurred. + +@return + The number of bytes written to the UART or zero for no data/error. +*/ +size_t winc_adapter_uart_write(const uint8_t *pu8Buf, size_t szLength); + +/*! +@fn \ + size_t winc_adapter_uart_read(uint8_t *pu8Buf, size_t szLength); + +@brief + Called by the driver to read data from the UART. + +@return + The number of bytes read, this may be less than \p szLength +*/ +size_t winc_adapter_uart_read(uint8_t *pu8Buf, size_t szLength); + +/**@}*/ // ADAPTERUART + +#ifdef __cplusplus +} +#endif + +#endif /*_WINC_ADAPTER_H_*/ diff --git a/AVRIoT.X/mcc_generated_files/winc/driver/winc_asic.c b/AVRIoT.X/mcc_generated_files/winc/driver/winc_asic.c new file mode 100644 index 0000000..852f7ab --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/driver/winc_asic.c @@ -0,0 +1,493 @@ +/** + * + * \file + * + * \brief This module contains WINC ASIC specific internal API implementation. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "../common/winc_defines.h" +#include "../common/winc_registers.h" +#include "../common/winc_debug.h" +#include "winc_adapter.h" +#include "winc_spi.h" +#include "winc_asic.h" + +#define M2M_FINISH_INIT_STATE 0x02532636UL +#define M2M_FINISH_BOOT_ROM 0x10add09eUL +#define M2M_START_FIRMWARE 0xef522f61UL + +#define TIMEOUT (2000) +#define WAKUP_TRAILS_TIMEOUT (4) + +#define rHAVE_SDIO_IRQ_GPIO_BIT (NBIT0) +#define rHAVE_USE_PMU_BIT (NBIT1) +#define rHAVE_SLEEP_CLK_SRC_RTC_BIT (NBIT2) +#define rHAVE_SLEEP_CLK_SRC_XO_BIT (NBIT3) +#define rHAVE_EXT_PA_INV_TX_RX (NBIT4) +#define rHAVE_LEGACY_RF_SETTINGS (NBIT5) +#define rHAVE_LOGS_DISABLED_BIT (NBIT6) +#define rHAVE_ETHERNET_MODE_BIT (NBIT7) +#define rHAVE_RESERVED1_BIT (NBIT8) +#define rHAVE_RESERVED2_BIT (NBIT9) +#define rHAVE_XO_XTALGM2_DIS_BIT (NBIT10) + +static bool chip_apply_conf(const uint32_t u32Conf) +{ + uint32_t u32Reg; + + do + { + winc_bus_write_reg(NMI_GP_REG_1, u32Conf); + + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(NMI_GP_REG_1, &u32Reg)) + return false; + + if (u32Reg == u32Conf) + return true; + } + while (1); + + return false; +} + +bool winc_chip_interrupts_enable(void) +{ + // interrupt pin mux select + if (WINC_BUS_SUCCESS != winc_bus_set_reg_bits(NMI_PIN_MUX_0, (uint32_t)1 << 8)) + return false; + + // interrupt enable + if (WINC_BUS_SUCCESS != winc_bus_set_reg_bits(NMI_INTR_ENABLE, (uint32_t)1 << 16)) + return false; + + return true; +} + +uint32_t winc_chip_get_id(void) +{ + static uint32_t gu32ChipID = 0; + uint32_t u32RevID; + + if (gu32ChipID) + return gu32ChipID; + + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(NMI_RF_REVID, &u32RevID)) + return 0; + + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(NMI_CHIPID, &gu32ChipID)) + return 0; + + if (gu32ChipID == 0x1002a0) + { + if (u32RevID == 0x1) + { + /* 1002A0 */ + } + else /* if (u32RevID == 0x2) */ + { + /* 1002A1 */ + gu32ChipID = 0x1002a1; + } + } + else if (gu32ChipID == 0x1002b0) + { + if (u32RevID == 3) + { + /* 1002B0 */ + } + else if (u32RevID == 4) + { + /* 1002B1 */ + gu32ChipID = 0x1002b1; + } + else /* if(u32RevID == 5) */ + { + /* 1002B2 */ + gu32ChipID = 0x1002b2; + } + } + else if (gu32ChipID == 0x1000f0) + { +#ifdef BT_CHIP_ID_REG + if ((WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(BT_CHIP_ID_REG, &gu32ChipID))) + { + gu32ChipID = 0; + return 0; + } +#endif + } + + gu32ChipID &= ~(0x0f0000); + gu32ChipID |= 0x050000; + + return gu32ChipID; +} + +bool winc_chip_sleep(void) +{ + uint32_t u32Reg; + + if (winc_bus_error()) + return false; + + do + { + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(CORT_HOST_COMM, &u32Reg)) + return false; + } + while (u32Reg & NBIT0); + + /* Clear bit 1 */ + winc_bus_clear_reg_bits(WAKE_CLK_REG, NBIT1); + winc_bus_clear_reg_bits(HOST_CORT_COMM, NBIT0); + + return !winc_bus_error(); +} + +bool winc_chip_wake(void) +{ + uint32_t u32ClkStatusReg; + int_fast8_t i8Trials; + + /* Use bit 0 to indicate host wakeup*/ + winc_bus_set_reg_bits(HOST_CORT_COMM, NBIT0); + winc_bus_set_reg_bits(WAKE_CLK_REG, NBIT1); + + if (winc_bus_error()) + return false; + + i8Trials = WAKUP_TRAILS_TIMEOUT; + + while(i8Trials--) + { + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(CLOCKS_EN_REG, &u32ClkStatusReg)) + { + WINC_LOG_ERROR("Reading clock status register"); + return false; + } + + if (u32ClkStatusReg & NBIT2) + { + winc_bus_reset(); + + return true; + } + + winc_adapter_sleep(2); + } + + WINC_LOG_ERROR("Failed to wake up the chip"); + + winc_bus_reset(); + + return false; +} + +bool winc_chip_halt(void) +{ + if (WINC_BUS_SUCCESS != winc_bus_set_reg_bits(NMI_CORTUS_BOOT_RESET_MUXSEL, (uint32_t)1 << 0)) + return false; + + if (WINC_BUS_SUCCESS != winc_bus_clear_reg_bits(NMI_GLB_RESET_0, (uint32_t)1 << 10)) + return false; + + return true; +} + +void winc_chip_reset(void) +{ + winc_bus_write_reg_no_rsp(NMI_GLB_RESET_0, 0); + /* Don't check return, write will fail as WINC will not respond for 50ms */ + + winc_adapter_sleep(50); +} + +bool winc_chip_init(bool bBootATE, bool bEthMode, uint32_t u32StateRegVal) +{ + uint32_t u32GpReg1; + uint_fast16_t u16Timeout; + + winc_bus_write_reg(BOOTROM_REG, 0); + winc_bus_write_reg(NMI_STATE_REG, 0); + winc_bus_write_reg(NMI_REV_REG, 0); + + if (WINC_BUS_SUCCESS != winc_bus_set_reg_bits(NMI_CORTUS_BOOT_RESET_MUXSEL, (uint32_t)1 << 0)) + return false; + + /* release cortus CPU from reset */ + if (WINC_BUS_SUCCESS != winc_bus_set_reg_bits(NMI_GLB_RESET_0, (uint32_t)1 << 10)) + return false; + + while(1) + { + /* wait for efuse loading done */ + if (winc_bus_read_reg(NMI_EFUSE_0_CONTROL) & 0x80000000) + break; + } + + /* check if waiting for the host will be skipped or not */ + if(!(winc_bus_read_reg(M2M_WAIT_FOR_HOST_REG) & 1)) + { + u16Timeout = TIMEOUT; + + while(u16Timeout--) + { + winc_adapter_sleep(1); + if (M2M_FINISH_BOOT_ROM == winc_bus_read_reg(BOOTROM_REG)) + break; + } + + if (!u16Timeout) + { + WINC_LOG_DEBUG("failed to load firmware from flash"); + return false; + } + } + + u32GpReg1 = 0 +#if (defined __ENABLE_PMU__) || (defined CONF_WINC_INT_PMU) + | rHAVE_USE_PMU_BIT +#endif +#ifdef __ENABLE_SLEEP_CLK_SRC_RTC__ + | rHAVE_SLEEP_CLK_SRC_RTC_BIT +#elif defined __ENABLE_SLEEP_CLK_SRC_XO__ + | rHAVE_SLEEP_CLK_SRC_XO_BIT +#endif +#ifdef __ENABLE_EXT_PA_INV_TX_RX__ + | rHAVE_EXT_PA_INV_TX_RX +#endif +#ifdef __ENABLE_LEGACY_RF_SETTINGS__ + | rHAVE_LEGACY_RF_SETTINGS +#endif +#ifdef __DISABLE_FIRMWARE_LOGS__ + | rHAVE_LOGS_DISABLED_BIT +#endif +#if defined CONF_WINC_XO_XTALGM2_DIS + | rHAVE_XO_XTALGM2_DIS_BIT +#endif + | rHAVE_RESERVED1_BIT; + + if (bBootATE) + { + winc_bus_write_reg(NMI_REV_REG, M2M_ATE_FW_START_VALUE); + } + else if (bEthMode) + { + u32GpReg1 |= rHAVE_ETHERNET_MODE_BIT; + } + + winc_bus_write_reg(NMI_STATE_REG, u32StateRegVal); + + if (REV(winc_chip_get_id()) >= REV_3A0) + { + u32GpReg1 |= rHAVE_USE_PMU_BIT; + } + + chip_apply_conf(u32GpReg1); + + winc_bus_write_reg(BOOTROM_REG, M2M_START_FIRMWARE); + + u16Timeout = TIMEOUT; + while(u16Timeout--) + { + winc_adapter_sleep(2); + + if (!bBootATE) + { + if (M2M_FINISH_INIT_STATE == winc_bus_read_reg(NMI_STATE_REG)) + { + winc_bus_write_reg(NMI_STATE_REG, 0); + + if (!winc_chip_interrupts_enable()) + { + WINC_LOG_ERROR("failed to enable interrupts.."); + return false; + } + + return true; + } + } + else + { + if (M2M_ATE_FW_IS_UP_VALUE == winc_bus_read_reg(NMI_REV_REG)) + { + return true; + } + } + } + + WINC_LOG_DEBUG("Time out for wait firmware Run"); + + return false; +} + +bool winc_chip_deinit(void) +{ + if (WINC_BUS_SUCCESS != winc_bus_clear_reg_bits(NMI_GLB_RESET_0, (uint32_t)1 << 10)) + { + WINC_LOG_ERROR("Failed to de-initialize"); + return false; + } + + return true; +} + +#ifdef CONF_PERIPH + +bool winc_chip_set_gpio_dir(uint_fast8_t u8GPIO, bool bDirOut) +{ + int_fast8_t i8Ret; + + WINC_ASSERT(u8GPIO < 32); + + if (bDirOut) + { + i8Ret = winc_bus_set_reg_bits(0x20108, 1UL << u8GPIO); + } + else + { + i8Ret = winc_bus_clear_reg_bits(0x20108, 1UL << u8GPIO); + } + + if (WINC_BUS_SUCCESS != i8Ret) + return false; + + return true; +} + +bool winc_chip_set_gpio_val(uint_fast8_t u8GPIO, bool bBitSet) +{ + int_fast8_t i8Ret; + + WINC_ASSERT(u8GPIO < 32); + + if (bBitSet) + { + i8Ret = winc_bus_set_reg_bits(0x20100, 1UL << u8GPIO); + } + else + { + i8Ret = winc_bus_clear_reg_bits(0x20100, 1UL << u8GPIO); + } + + if (WINC_BUS_SUCCESS != i8Ret) + return false; + + return true; +} + +bool winc_chip_get_gpio_val(uint_fast8_t u8GPIO, uint8_t *pu8Val) +{ + uint32_t u32Val; + + WINC_ASSERT(u8GPIO < 32); + WINC_ASSERT(pu8Val != NULL); + + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(0x20104, &u32Val)) + return false; + + *pu8Val = (uint8_t)((u32Val >> u8GPIO) & 1); + + return true; +} + +bool winc_chip_pullup_ctrl(uint32_t u32PinMask, bool bEnable) +{ + int_fast8_t i8Ret; + + if (bEnable) + { + i8Ret = winc_bus_clear_reg_bits(0x142c, u32PinMask); + } + else + { + i8Ret = winc_bus_set_reg_bits(0x142c, u32PinMask); + } + + if (WINC_BUS_SUCCESS != i8Ret) + return false; + + return true; +} + +#endif /* CONF_PERIPH */ + +bool winc_chip_get_otp_mac_address(uint8_t *pu8MacAddr) +{ + uint32_t u32RegValue; + tstrGpRegs strGpRegs; + + WINC_ASSERT(pu8MacAddr != NULL); + + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(NMI_GP_REG_2, &u32RegValue)) + return false; + + if (WINC_BUS_SUCCESS != winc_bus_read_block(u32RegValue|0x30000, (uint8_t*)&strGpRegs, sizeof(tstrGpRegs))) + return false; + + if((strGpRegs.u32Mac_efuse_mib & 0xffff0000) == 0) + { + WINC_LOG_DEBUG("Default MAC"); + memset(pu8MacAddr, 0, 6); + + return false; + } + + WINC_LOG_DEBUG("OTP MAC"); + strGpRegs.u32Mac_efuse_mib >>=16; + if (WINC_BUS_SUCCESS != winc_bus_read_block(strGpRegs.u32Mac_efuse_mib|0x30000, pu8MacAddr, 6)) + return false; + + return true; +} + +bool winc_chip_get_mac_address(uint8_t *pu8MacAddr) +{ + uint32_t u32RegValue; + tstrGpRegs strGpRegs; + + WINC_ASSERT(pu8MacAddr != NULL); + + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(NMI_GP_REG_2, &u32RegValue)) + return false; + + if (WINC_BUS_SUCCESS != winc_bus_read_block(u32RegValue|0x30000, (uint8_t*)&strGpRegs, sizeof(tstrGpRegs))) + return false; + + strGpRegs.u32Mac_efuse_mib &= 0x0000ffff; + + if (WINC_BUS_SUCCESS != winc_bus_read_block(strGpRegs.u32Mac_efuse_mib|0x30000, pu8MacAddr, 6)) + return false; + + return true; +} diff --git a/AVRIoT.X/mcc_generated_files/winc/driver/winc_asic.h b/AVRIoT.X/mcc_generated_files/winc/driver/winc_asic.h new file mode 100644 index 0000000..994741b --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/driver/winc_asic.h @@ -0,0 +1,90 @@ +/** + * + * \file + * + * \brief This module contains WINC ASIC specific internal API declarations. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _WINC_ASIC_H_ +#define _WINC_ASIC_H_ + +#define M2M_ATE_FW_START_VALUE (0x3C1CD57D) /*Also, Change this value in boot_firmware if it will be changed here*/ +#define M2M_ATE_FW_IS_UP_VALUE (0xD75DC1C3) /*Also, Change this value in ATE (Burst) firmware if it will be changed here*/ + +#define REV_3A0 (0x3A0) + +#define REV(id) ( ((id) & 0x00000fff ) ) + +typedef struct +{ + uint32_t u32Mac_efuse_mib; + uint32_t u32Firmware_Ota_rev; +} tstrGpRegs; + +#ifdef __cplusplus + extern "C" { +#endif + +bool winc_chip_interrupts_enable(void); + +uint32_t winc_chip_get_id(void); + +bool winc_chip_sleep(void); + +bool winc_chip_wake(void); + +bool winc_chip_halt(void); + +void winc_chip_reset(void); + +bool winc_chip_init(bool bBootATE, bool bEthMode, uint32_t u32StateRegVal); + +bool winc_chip_deinit(void); + +bool winc_chip_set_gpio_dir(uint_fast8_t u8GPIO, bool bDirOut); + +bool winc_chip_set_gpio_val(uint_fast8_t u8GPIO, bool bBitSet); + +bool winc_chip_get_gpio_val(uint_fast8_t u8GPIO, uint8_t *pu8Val); + +bool winc_chip_pullup_ctrl(uint32_t u32PinMask, bool bEnable); + +bool winc_chip_get_otp_mac_address(uint8_t *pu8MacAddr); + +bool winc_chip_get_mac_address(uint8_t *pu8MacAddr); + +#ifdef __cplusplus + } +#endif + +#endif /*_WINC_ASIC_H_*/ diff --git a/AVRIoT.X/mcc_generated_files/winc/driver/winc_drv.c b/AVRIoT.X/mcc_generated_files/winc/driver/winc_drv.c new file mode 100644 index 0000000..d8683b4 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/driver/winc_drv.c @@ -0,0 +1,120 @@ +/** + * + * \file + * + * \brief This module contains WINC driver API implementation. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "../common/winc_defines.h" +#include "../common/winc_debug.h" +#include "../common/winc_registers.h" +#include "winc_adapter.h" +#include "winc_drv.h" +#include "winc_asic.h" +#include "winc_spi.h" +#include "../spi_flash/spi_flash.h" + +int_fast8_t winc_drv_init(bool bHold) +{ + if (!winc_adapter_spi_open()) + { + WINC_LOG_ERROR("Failed to open bus"); + return WINC_DRV_FAIL; + } + + winc_adapter_chip_enable_deassert(); + winc_adapter_reset_assert(); + winc_adapter_sleep(CONF_WINC_RESET_ASSERT_TIME); + winc_adapter_chip_enable_assert(); + winc_adapter_sleep(10); + winc_adapter_reset_deassert(); + + winc_adapter_sleep(10); + + if (WINC_BUS_SUCCESS != winc_bus_init()) + return WINC_DRV_FAIL; + + WINC_LOG_INFO("Chip ID %" PRIx32, winc_chip_get_id()); + + if (bHold) + { + if (!winc_chip_halt()) + return WINC_DRV_FAIL; + + /*disable all interrupt in ROM (to disable uart) in 2b0 chip*/ + winc_bus_write_reg(0x20300,0); + } + + return WINC_DRV_SUCCESS; +} + +int_fast8_t winc_drv_start(bool bBootATE, bool bEthMode, uint32_t u32StateRegVal) +{ + if (winc_chip_init(bBootATE, bEthMode, u32StateRegVal)) + return WINC_DRV_SUCCESS; + + if (!winc_adapter_spi_close()) + { + WINC_LOG_ERROR("Failed to close bus"); + } + + winc_bus_deinit(); + + return WINC_DRV_FAIL; +} + +int_fast8_t winc_drv_deinit(void) +{ + if (!winc_chip_deinit()) + { + WINC_LOG_ERROR("winc_chip_deinit failed"); + return WINC_DRV_FAIL; + } + + /* Disable SPI flash to save power when the chip is off */ + if (M2M_SUCCESS != spi_flash_enable(0)) + { + WINC_LOG_ERROR("SPI flash disable failed"); + return WINC_DRV_FAIL; + } + + if (!winc_adapter_spi_close()) + { + WINC_LOG_ERROR("Failed to close bus"); + return WINC_DRV_FAIL; + } + + winc_bus_deinit(); + + return WINC_DRV_SUCCESS; +} diff --git a/AVRIoT.X/mcc_generated_files/winc/driver/winc_drv.h b/AVRIoT.X/mcc_generated_files/winc/driver/winc_drv.h new file mode 100644 index 0000000..4c889a3 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/driver/winc_drv.h @@ -0,0 +1,58 @@ +/** + * + * \file + * + * \brief This module contains WINC driver API declarations. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _WINC_DRV_H_ +#define _WINC_DRV_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#define WINC_DRV_SUCCESS 0 +#define WINC_DRV_FAIL 1 + +int_fast8_t winc_drv_init(bool bHold); + +int_fast8_t winc_drv_start(bool bBootATE, bool bEthMode, uint32_t u32StateRegVal); + +int_fast8_t winc_drv_deinit(void); + +#ifdef __cplusplus +} +#endif + +#endif /*_WINC_DRV_H_*/ diff --git a/AVRIoT.X/mcc_generated_files/winc/driver/winc_hif.c b/AVRIoT.X/mcc_generated_files/winc/driver/winc_hif.c new file mode 100644 index 0000000..20b2157 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/driver/winc_hif.c @@ -0,0 +1,364 @@ +/** + * + * \file + * + * \brief This module contains host interface APIs implementation. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "../common/winc_defines.h" +#include "../common/winc_registers.h" +#include "../common/winc_debug.h" +#include "winc_adapter.h" +#include "winc_spi.h" +#include "winc_hif.h" +#include "winc_asic.h" + +static uint_fast8_t gu8ChipSleep; +static uint32_t gu32RxAddr; +static uint_fast16_t gu16RxSize; +static bool gbChipPwrSave; + +static void hif_null_cb(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr) +{ + UNUSED_VAR(u8OpCode); + UNUSED_VAR(u16DataSize); + UNUSED_VAR(u32Addr); +} + +static const tpfHifCallBack gHifCallbacks[] = { + CONF_WINC_HIF_CB_WIFI_HANDLER, + CONF_WINC_HIF_CB_IP_HANDLER, + CONF_WINC_HIF_CB_HIF_HANDLER, + CONF_WINC_HIF_CB_OTA_HANDLER, + CONF_WINC_HIF_CB_SSL_HANDLER, + CONF_WINC_HIF_CB_CRYPTO_HANDLER, + CONF_WINC_HIF_CB_SIGMA_HANDLER, +}; + +#define WINC_HIF_CB_HIGHEST_GID (sizeof(gHifCallbacks)/sizeof(tpfHifCallBack)) + +int8_t winc_hif_chip_wake(void) +{ + if (gu8ChipSleep++ == 0) + { + if (gbChipPwrSave) + { + if (!winc_chip_wake()) + return M2M_ERR_FAIL; + } + } + + return M2M_SUCCESS; +} + +void winc_hif_set_power_save(bool bPwrSave) +{ + gbChipPwrSave = bPwrSave; +} + +int8_t winc_hif_chip_sleep(void) +{ + if (gu8ChipSleep) + { + gu8ChipSleep--; + } + + if (gu8ChipSleep == 0) + { + if (gbChipPwrSave) + { + if (!winc_chip_sleep()) + return M2M_ERR_FAIL; + } + } + + return M2M_SUCCESS; +} + +int8_t winc_hif_init(void) +{ + gu8ChipSleep = 0; + gbChipPwrSave = false; + + WINC_CRIT_SEC_HIF_INIT; + + return M2M_SUCCESS; +} + +int8_t winc_hif_deinit(void) +{ + WINC_CRIT_SEC_HIF_DEINIT; + + return winc_hif_chip_wake(); +} + +int8_t winc_hif_send(uint8_t u8Gid, uint8_t u8Opcode, const void *pvCtrlBuf, uint16_t u16CtrlBufSize, + const void *pvDataBuf, uint16_t u16DataSize, uint16_t u16DataOffset) +{ + tstrHifHdr strHif; + uint32_t u32Reg; + uint32_t u32DMAAddr; + uint_fast16_t u16Count; + uint32_t u32CurrAddr; + + strHif.u8Opcode = u8Opcode & (~NBIT7); + strHif.u8Gid = u8Gid; + strHif.u16Length = M2M_HIF_HDR_OFFSET; + + if (pvDataBuf != NULL) + { + strHif.u16Length += u16DataOffset + u16DataSize; + } + else + { + strHif.u16Length += u16CtrlBufSize; + } + + if (strHif.u16Length > M2M_HIF_MAX_PACKET_SIZE) + { + WINC_LOG_ERROR("HIF message length (%u) exceeds max length (%d)", strHif.u16Length, M2M_HIF_MAX_PACKET_SIZE); + return M2M_ERR_SEND; + } + + WINC_CRIT_SEC_HIF_ENTER; + + if (M2M_SUCCESS != winc_hif_chip_wake()) + { + WINC_LOG_ERROR("Failed to wakeup the chip"); + + WINC_CRIT_SEC_HIF_LEAVE; + return M2M_ERR_SEND; + } + + u32Reg = (uint32_t)u8Gid; + u32Reg |= ((uint32_t)u8Opcode<<8); + u32Reg |= ((uint32_t)strHif.u16Length<<16); + winc_bus_write_reg(NMI_STATE_REG,u32Reg); + + winc_bus_write_reg(WIFI_HOST_RCV_CTRL_2, NBIT1); + + u32DMAAddr = 0; + + u16Count = 1000; + while(u16Count--) + { + winc_bus_read_reg_with_ret(WIFI_HOST_RCV_CTRL_2, &u32Reg); + + if (winc_bus_error()) + { + winc_hif_chip_sleep(); + + WINC_CRIT_SEC_HIF_LEAVE; + return M2M_ERR_SEND; + } + + if (!(u32Reg & NBIT1)) + { + winc_bus_read_reg_with_ret(WIFI_HOST_RCV_CTRL_4, &u32DMAAddr); + break; + } + + /* + * If it takes too long to get a response, the slow down to + * avoid back-to-back register read operations. + */ + if (u16Count <= 500) + { + if (u16Count == 500) + { + WINC_LOG_INFO("Slowing down..."); + } + + winc_adapter_sleep(1); + } + } + + if (winc_bus_error() || !u32DMAAddr) + { + winc_hif_chip_sleep(); + WINC_LOG_DEBUG("Failed to receive DMA address"); + + WINC_CRIT_SEC_HIF_LEAVE; + return M2M_ERR_MEM_ALLOC; + } + + u32CurrAddr = u32DMAAddr; + strHif.u16Length = HOST_TO_WINC_U16(strHif.u16Length); + + winc_bus_write_block(u32CurrAddr, (uint8_t*)&strHif, M2M_HIF_HDR_OFFSET); + + u32CurrAddr += M2M_HIF_HDR_OFFSET; + + if (pvCtrlBuf != NULL) + { + winc_bus_write_block(u32CurrAddr, pvCtrlBuf, u16CtrlBufSize); + } + + if (pvDataBuf != NULL) + { + u32CurrAddr += u16DataOffset; + winc_bus_write_block(u32CurrAddr, pvDataBuf, u16DataSize); + } + + winc_bus_write_reg(WIFI_HOST_RCV_CTRL_3, (u32DMAAddr << 2) | NBIT1); + + winc_hif_chip_sleep(); + + WINC_CRIT_SEC_HIF_LEAVE; + + if (winc_bus_error()) + return M2M_ERR_SEND; + + return M2M_SUCCESS; +} + +int8_t winc_hif_send_no_data(uint8_t u8Gid, uint8_t u8Opcode, const void *pvCtrlBuf, uint16_t u16CtrlBufSize) +{ + return winc_hif_send(u8Gid, u8Opcode, pvCtrlBuf, u16CtrlBufSize, NULL, 0, 0); +} + +int8_t winc_hif_handle_isr(void) +{ + uint32_t u32Reg; + tstrHifHdr strHif; + + if (!winc_adapter_interrupt_request_pending()) + return M2M_SUCCESS; + + WINC_CRIT_SEC_HIF_ENTER; + + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(WIFI_HOST_RCV_CTRL_0, &u32Reg)) + { + WINC_LOG_ERROR("Failed to read interrupt register"); + + WINC_CRIT_SEC_HIF_LEAVE; + return M2M_ERR_FAIL; + } + + if (!(u32Reg & NBIT0)) + { + WINC_LOG_ERROR("False interrupt %" PRIx32, u32Reg); + + WINC_CRIT_SEC_HIF_LEAVE; + return M2M_ERR_FAIL; + } + + /* New interrupt has been received */ + /*Clearing RX interrupt*/ + u32Reg &= ~NBIT0; + if (WINC_BUS_SUCCESS != winc_bus_write_reg(WIFI_HOST_RCV_CTRL_0, u32Reg)) + { + WINC_CRIT_SEC_HIF_LEAVE; + return M2M_ERR_FAIL; + } + + gu16RxSize = (uint_fast16_t)((u32Reg >> 2) & 0xfff); + + if (!gu16RxSize) + { + WINC_LOG_ERROR("Wrong size"); + WINC_CRIT_SEC_HIF_LEAVE; + return M2M_ERR_RCV; + } + + /** + start bus transfer + **/ + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(WIFI_HOST_RCV_CTRL_1, &gu32RxAddr)) + { + WINC_LOG_ERROR("WIFI_HOST_RCV_CTRL_1 bus fail"); + WINC_CRIT_SEC_HIF_LEAVE; + return M2M_ERR_FAIL; + } + + if (WINC_BUS_SUCCESS != winc_bus_read_block(gu32RxAddr, (uint8_t*)&strHif, sizeof(tstrHifHdr))) + { + WINC_LOG_ERROR("Read HIF header failed"); + WINC_CRIT_SEC_HIF_LEAVE; + return M2M_ERR_FAIL; + } + + WINC_CRIT_SEC_HIF_LEAVE; + + strHif.u16Length = WINC_TO_HOST_U16(strHif.u16Length); + + if ((gu16RxSize - strHif.u16Length) > 4) + { + WINC_LOG_ERROR("Invalid packet Size = %u ", + gu16RxSize, strHif.u16Length, strHif.u8Gid, strHif.u8Opcode); + + return M2M_ERR_BUS_FAIL; + } + + if ((strHif.u8Gid == 0) || (strHif.u8Gid > WINC_HIF_CB_HIGHEST_GID)) + { + WINC_LOG_ERROR("Invalid group ID"); + + return M2M_ERR_FAIL; + } + + gHifCallbacks[strHif.u8Gid-1](strHif.u8Opcode, strHif.u16Length - M2M_HIF_HDR_OFFSET, gu32RxAddr + M2M_HIF_HDR_OFFSET); + + winc_adapter_interrupt_serviced(true); + + /* Set RX Done */ + winc_bus_set_reg_bits(WIFI_HOST_RCV_CTRL_0, NBIT1); + + winc_adapter_interrupt_serviced(false); + + if (winc_bus_error()) + return M2M_ERR_FAIL; + + return M2M_SUCCESS; +} + +int8_t winc_hif_receive(uint32_t u32Addr, const void *pvBuf, uint_fast16_t u16Sz) +{ + if (u16Sz > gu16RxSize) + { + WINC_LOG_ERROR("APP requested size is larger than the received buffer size <%u><%u>", u16Sz, gu16RxSize); + return M2M_ERR_FAIL; + } + + if ((u32Addr < gu32RxAddr) || ((u32Addr + u16Sz) > (gu32RxAddr + gu16RxSize))) + { + WINC_LOG_ERROR("APP requested address beyond the received buffer address and length"); + return M2M_ERR_FAIL; + } + + /* Receive the payload */ + if (WINC_BUS_SUCCESS != winc_bus_read_block(u32Addr, (void*)pvBuf, u16Sz)) + return M2M_ERR_FAIL; + + return M2M_SUCCESS; +} diff --git a/AVRIoT.X/mcc_generated_files/winc/driver/winc_hif.h b/AVRIoT.X/mcc_generated_files/winc/driver/winc_hif.h new file mode 100644 index 0000000..03cdaab --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/driver/winc_hif.h @@ -0,0 +1,185 @@ +/** + * + * \file + * + * \brief This module contains host interface APIs implementation. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _WINC_HIF_H_ +#define _WINC_HIF_H_ + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +MACROS +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +#define M2M_HIF_MAX_PACKET_SIZE (1600 - 4) +/*!< Maximum size of the buffer could be transferred between Host and Firmware. +*/ + +#define M2M_HIF_HDR_OFFSET (sizeof(tstrHifHdr) + 4) + +/** +* @struct tstrHifHdr +* @brief Structure to hold HIF header +*/ +typedef struct +{ + uint8_t u8Gid; /*!< Group ID */ + uint8_t u8Opcode; /*!< OP code */ + uint16_t u16Length; /*!< Payload length */ +}tstrHifHdr; + +#ifdef __cplusplus + extern "C" { +#endif + +/*! +@typedef typedef void (*tpfHifCallBack)(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr); +@brief used to point to Wi-Fi call back function depend on Arduino project or other projects. +@param [in] u8OpCode + HIF Opcode type. +@param [in] u16DataSize + HIF data length. +@param [in] u32Addr + HIF address. +@param [in] grp + HIF group type. +*/ +typedef void (*tpfHifCallBack)(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr); +/** +* @fn int8_t winc_hif_init(void); +* @brief + To initialize HIF layer. +* @return + The function shall return ZERO for successful operation and a negative value otherwise. +*/ +int8_t winc_hif_init(void); +/** +* @fn int8_t winc_hif_deinit(void); +* @brief + To Deinitialize HIF layer. +* @return + The function shall return ZERO for successful operation and a negative value otherwise. +*/ +int8_t winc_hif_deinit(void); +/** +* @fn int8_t winc_hif_send(uint8_t u8Gid, uint8_t u8Opcode, const void *pvCtrlBuf, uint16_t u16CtrlBufSize, + const void *pvDataBuf, uint16_t u16DataSize, uint16_t u16DataOffset) +* @brief Send packet using host interface. + +* @param [in] u8Gid +* Group ID. +* @param [in] u8Opcode +* Operation ID. +* @param [in] pvCtrlBuf +* Pointer to the Control buffer. +* @param [in] u16CtrlBufSize + Control buffer size. +* @param [in] u16DataOffset + Packet Data offset. +* @param [in] pvDataBuf +* Packet buffer Allocated by the caller. +* @param [in] u16DataSize + Packet buffer size (including the HIF header). +* @return The function shall return ZERO for successful operation and a negative value otherwise. +*/ +int8_t winc_hif_send(uint8_t u8Gid, uint8_t u8Opcode, const void *pvCtrlBuf, uint16_t u16CtrlBufSize, + const void *pvDataBuf, uint16_t u16DataSize, uint16_t u16DataOffset); +/** +* @fn int8_t winc_hif_send_no_data(uint8_t u8Gid, uint8_t u8Opcode, const void *pvCtrlBuf, uint16_t u16CtrlBufSize) +* @brief Send packet using host interface. + +* @param [in] u8Gid +* Group ID. +* @param [in] u8Opcode +* Operation ID. +* @param [in] pvCtrlBuf +* Pointer to the Control buffer. +* @param [in] u16CtrlBufSize + Control buffer size. +* @return The function shall return ZERO for successful operation and a negative value otherwise. +*/ +int8_t winc_hif_send_no_data(uint8_t u8Gid, uint8_t u8Opcode, const void *pvCtrlBuf, uint16_t u16CtrlBufSize); +/* +* @fn winc_hif_receive +* @brief Host interface interrupt service routine +* @param [in] u32Addr +* Receive start address +* @param [out] pvBuf +* Pointer to receive buffer. Allocated by the caller +* @param [in] u16Sz +* Receive buffer size +* @return + The function shall return ZERO for successful operation and a negative value otherwise. +*/ +int8_t winc_hif_receive(uint32_t u32Addr, const void *pvBuf, uint_fast16_t u16Sz); +/** +* @fn int8_t winc_hif_chip_sleep(void); +* @brief + To make the chip sleep. +* @return + The function shall return ZERO for successful operation and a negative value otherwise. +*/ +int8_t winc_hif_chip_sleep(void); +/** +* @fn int8_t winc_hif_chip_wake(void); +* @brief + To Wakeup the chip. +* @return + The function shall return ZERO for successful operation and a negative value otherwise. +*/ +int8_t winc_hif_chip_wake(void); +/*! +@fn \ + void winc_hif_set_power_save(bool bPwrSave); + +@brief + Set the sleep mode of the HIF layer. + +@param [in] bPwrSave + Is power save active. +*/ +void winc_hif_set_power_save(bool bPwrSave); +/** +* @fn winc_hif_handle_isr(void) +* @brief + Handle interrupt received from WINC firmware. +* @return + The function SHALL return 0 for success and a negative value otherwise. +*/ +int8_t winc_hif_handle_isr(void); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/AVRIoT.X/mcc_generated_files/winc/driver/winc_spi.c b/AVRIoT.X/mcc_generated_files/winc/driver/winc_spi.c new file mode 100644 index 0000000..dc9c426 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/driver/winc_spi.c @@ -0,0 +1,700 @@ +/** + * + * \file + * + * \brief This module contains SPI protocol bus API implementation. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "../common/winc_debug.h" +#include "../common/winc_registers.h" +#include "winc_adapter.h" +#include "winc_spi.h" + +#define CMD_INTERNAL_WRITE 0xc3 +#define CMD_INTERNAL_READ 0xc4 +#define CMD_DMA_EXT_WRITE 0xc7 +#define CMD_DMA_EXT_READ 0xc8 +#define CMD_SINGLE_WRITE 0xc9 +#define CMD_SINGLE_READ 0xca +#define CMD_RESET 0xcf + +#define SPI_RESP_RETRY_COUNT (10) +#define DATA_PKT_SZ (8*1024) + +static bool bSPIBusError = true; + +static uint8_t spi_rsp(const uint8_t u8Type) +{ + int_fast8_t i = SPI_RESP_RETRY_COUNT; + uint8_t u8Rsp; + + WINC_ASSERT( ((u8Type & 0xf0) == 0xc0) || (u8Type == 0xf0) ); + + do + { + // Read single byte from SPI + if (!winc_adapter_spi_read(&u8Rsp, 1)) + { + WINC_LOG_ERROR("Failed response type read"); + return 0xff; + } + + if ((0xf0 == u8Type) && ((u8Rsp & 0xf0) == 0xf0)) + { + // If type is 0xf0 this is a data start header + // so just return the packet order in the lower nibble + return u8Rsp & 0xf0; + } + else if (u8Rsp == u8Type) + { + // Command response must match command type requested + // to be valid. Proceed to read the state value + if (!winc_adapter_spi_read(&u8Rsp, 1)) + { + WINC_LOG_ERROR("Failed response state read"); + return 0xff; + } + + return u8Rsp; + } + + // SPI bus must be idle while not receiving valid response + // only wait for number of bytes before failing response + } + while (!u8Rsp && i--); + + return 0xff; +} + +static int_fast8_t spi_cmd_send(const uint8_t *pu8Buf, const uint_fast8_t u8Sz) +{ + WINC_ASSERT(pu8Buf != NULL); + WINC_ASSERT(u8Sz >= 4); + + // Write command buffer to SPI + if (!winc_adapter_spi_write(pu8Buf, u8Sz)) + { + WINC_ASSERT(0); + WINC_LOG_ERROR("Failed command write"); + return WINC_BUS_FAIL; + } + + // Read back command response + if (spi_rsp(pu8Buf[0]) != 0) + { + WINC_ASSERT(0); + WINC_LOG_ERROR("Failed command response"); + return WINC_BUS_FAIL; + } + + // Response was valid and indicated no error condition + + return WINC_BUS_SUCCESS; +} + +static int_fast8_t spi_data_read(uint8_t *pu8Buf, uint_fast16_t u16Sz) +{ + uint_fast16_t u16NumBytes; + + WINC_ASSERT(pu8Buf != NULL); + WINC_ASSERT(u16Sz > 0); + + while (u16Sz) + { + // Limit size of a single transfer to DATA_PKT_SZ bytes + if (u16Sz <= DATA_PKT_SZ) + { + u16NumBytes = u16Sz; + } + else + { + u16NumBytes = DATA_PKT_SZ; + } + + // Get the data start byte and check for error in lower nibble + if (spi_rsp(0xf0) & 0x0c) + { + WINC_ASSERT(0); + WINC_LOG_ERROR("Failed data response read"); + return WINC_BUS_FAIL; + } + + // Read data packet + if (!winc_adapter_spi_read(pu8Buf, u16NumBytes)) + { + WINC_ASSERT(0); + WINC_LOG_ERROR("Failed data block read"); + return WINC_BUS_FAIL; + } + + pu8Buf += u16NumBytes; + u16Sz -= u16NumBytes; + } + + return WINC_BUS_SUCCESS; +} + +static int_fast8_t spi_data_write(const uint8_t *pu8Buf, uint_fast16_t u16Sz) +{ + uint_fast16_t u16NumBytes; + uint8_t u8Cmd; + + WINC_ASSERT(pu8Buf != NULL); + WINC_ASSERT(u16Sz > 0); + + // Default to data start as first packet in sequence + u8Cmd = 0xf1; + + while (u16Sz) + { + // Limit size of a single transfer to DATA_PKT_SZ bytes + if (u16Sz <= DATA_PKT_SZ) + { + u16NumBytes = u16Sz; + } + else + { + u16NumBytes = DATA_PKT_SZ; + } + + // Calculate remaining data size, if there is no more data after + // this packet then change the packet order to last in sequence + + u16Sz -= u16NumBytes; + + if (!u16Sz) + u8Cmd = 0xf3; + + // Write data start and packet order values + if (!winc_adapter_spi_write(&u8Cmd, 1)) + { + WINC_ASSERT(0); + WINC_LOG_ERROR("Failed data block command write"); + return WINC_BUS_FAIL; + } + + // Write data packet to SPI + if (!winc_adapter_spi_write(pu8Buf, u16NumBytes)) + { + WINC_ASSERT(0); + WINC_LOG_ERROR("Failed data block write"); + return WINC_BUS_FAIL; + } + + // Change default packet order to not first or last in sequence + u8Cmd = 0xf2; + + pu8Buf += u16NumBytes; + } + + return WINC_BUS_SUCCESS; +} + +static int_fast8_t spi_read_reg(uint32_t u32Addr, uint32_t *pu32RetVal) +{ + uint8_t u8TmpBuf[4]; + uint8_t u8CmdBuf[4]; + + WINC_ASSERT(pu32RetVal != NULL); + + if (u32Addr <= 0xff) + { + // Read is from clockless registers so setup command for internal read + u8CmdBuf[0] = CMD_INTERNAL_READ; + u8CmdBuf[1] = (1 << 7); + + // Shift register address up so following address buffer store puts the + // address in the right place + u32Addr <<= 8; + } + else + { + // Read is from clocked registers so setup command for normal read + u8CmdBuf[0] = CMD_SINGLE_READ; + + // Store first byte of register address before continuing below + u8CmdBuf[1] = (uint8_t)(u32Addr >> 16); + } + + // For clockless register addresses only the first store here is used which + // undoes the shift done above. For clocked registers the remaining two bytes + // of the address are stored and used. + u8CmdBuf[2] = (uint8_t)(u32Addr >> 8); + u8CmdBuf[3] = (uint8_t)u32Addr; + + // Send command buffer via SPI bus + if (WINC_BUS_SUCCESS != spi_cmd_send(u8CmdBuf, 4)) + { + WINC_ASSERT(0); + WINC_LOG_ERROR("Failed command, read reg (%08" PRIx32 ")", u32Addr); + return WINC_BUS_FAIL; + } + + // Read data, to avoid endianness issue use a temporary buffer to receive the + // bytes in WINC order. + if (WINC_BUS_SUCCESS != spi_data_read(&u8TmpBuf[0], 4)) + { + WINC_ASSERT(0); + WINC_LOG_ERROR("Failed data read"); + return WINC_BUS_FAIL; + } + + // Translate received bytes into 32-bit value + *pu32RetVal = u8TmpBuf[0] | + ((uint32_t)u8TmpBuf[1] << 8) | + ((uint32_t)u8TmpBuf[2] << 16) | + ((uint32_t)u8TmpBuf[3] << 24); + + return WINC_BUS_SUCCESS; +} + +static int_fast8_t spi_write_reg(const uint32_t u32Addr, const uint32_t u32Val, bool bCheckRsp) +{ + uint_fast8_t cmd_sz; + uint8_t u8CmdBuf[8]; + uint8_t *pu8CmdBuf = u8CmdBuf; + + if (u32Addr <= 0x30) + { + // Write is to clockless registers so setup command for internal write + u8CmdBuf[0] = CMD_INTERNAL_WRITE; + + u8CmdBuf[1] = (1 << 7); + + cmd_sz = 7; + pu8CmdBuf += 2; + } + else + { + // Write is to clocked registers so setup command for normal write + u8CmdBuf[0] = CMD_SINGLE_WRITE; + + // Store first two bytes of address, the last is completed below in + // common with clockless write. + u8CmdBuf[1] = (uint8_t)(u32Addr >> 16); + u8CmdBuf[2] = (uint8_t)(u32Addr >> 8); + + cmd_sz = 8; + pu8CmdBuf += 3; + } + + // Store last byte of address (only byte for clockless registers) + pu8CmdBuf[0] = (uint8_t)(u32Addr); + + // Store new register value in WINC order + pu8CmdBuf[1] = (uint8_t)(u32Val >> 24); + pu8CmdBuf[2] = (uint8_t)(u32Val >> 16); + pu8CmdBuf[3] = (uint8_t)(u32Val >> 8); + pu8CmdBuf[4] = (uint8_t)(u32Val); + + if (bCheckRsp) + { + // Send command and check for valid response + if (WINC_BUS_SUCCESS != spi_cmd_send(u8CmdBuf, cmd_sz)) + { + WINC_ASSERT(0); + WINC_LOG_ERROR("Failed command, write reg (%08" PRIx32 ")", u32Addr); + return WINC_BUS_FAIL; + } + } + else + { + // Send command but don't look for a response + if (!winc_adapter_spi_write(u8CmdBuf, cmd_sz)) + { + WINC_ASSERT(0); + WINC_LOG_ERROR("Failed command write"); + return WINC_BUS_FAIL; + } + } + + return WINC_BUS_SUCCESS; +} + +int_fast8_t winc_bus_write_reg(const uint32_t u32Addr, const uint32_t u32Val) +{ + // External API: Don't run if bus error is present, preset error so only + // successful path leads to clearing the error condition + WINC_CRIT_SEC_BUS_ENTER; + if (bSPIBusError) + { + WINC_ASSERT(0); + return WINC_BUS_FAIL; + } + bSPIBusError = true; + + if (WINC_BUS_SUCCESS != spi_write_reg(u32Addr, u32Val, 1)) + { + WINC_ASSERT(0); + return WINC_BUS_FAIL; + } + + // Clear bus error condition as operation was successful + bSPIBusError = false; + WINC_CRIT_SEC_BUS_LEAVE; + return WINC_BUS_SUCCESS; +} + +int_fast8_t winc_bus_write_reg_no_rsp(const uint32_t u32Addr, const uint32_t u32Val) +{ + // External API: Don't run if bus error is present, preset error so only + // successful path leads to clearing the error condition + WINC_CRIT_SEC_BUS_ENTER; + if (bSPIBusError) + { + WINC_ASSERT(0); + return WINC_BUS_FAIL; + } + bSPIBusError = true; + + if (WINC_BUS_SUCCESS != spi_write_reg(u32Addr, u32Val, 0)) + { + WINC_ASSERT(0); + return WINC_BUS_FAIL; + } + + // Clear bus error condition as operation was successful + bSPIBusError = false; + WINC_CRIT_SEC_BUS_LEAVE; + return WINC_BUS_SUCCESS; +} + +int_fast8_t winc_bus_write_block(uint32_t u32Addr, const uint8_t *pu8Buf, uint_fast16_t u16Sz) +{ + uint8_t u8CmdBuf[7] = {CMD_DMA_EXT_WRITE}; + + WINC_ASSERT(pu8Buf != NULL); + WINC_ASSERT(u16Sz > 0); + + // External API: Don't run if bus error is present, preset error so only + // successful path leads to clearing the error condition + WINC_CRIT_SEC_BUS_ENTER; + if (bSPIBusError) + { + WINC_ASSERT(0); + return WINC_BUS_FAIL; + } + bSPIBusError = true; + + //Workaround hardware problem with single byte transfers over SPI bus + if (u16Sz == 1) + u16Sz = 2; + + // Store destination address and transfer size into buffer + u8CmdBuf[1] = (uint8_t)(u32Addr >> 16); + u8CmdBuf[2] = (uint8_t)(u32Addr >> 8); + u8CmdBuf[3] = (uint8_t)u32Addr; + u8CmdBuf[4] = 0; + u8CmdBuf[5] = (uint8_t)(u16Sz >> 8); + u8CmdBuf[6] = (uint8_t)(u16Sz); + + // Send command buffer + if (WINC_BUS_SUCCESS != spi_cmd_send(u8CmdBuf, 7)) + { + WINC_ASSERT(0); + WINC_LOG_ERROR("Failed command, write block (%08" PRIx32 ")", u32Addr); + return WINC_BUS_FAIL; + } + + // Send data packet + if (WINC_BUS_SUCCESS != spi_data_write(pu8Buf, u16Sz)) + { + WINC_ASSERT(0); + WINC_LOG_ERROR("Failed block data write"); + return WINC_BUS_FAIL; + } + + // Check data response + if (spi_rsp(0xc3) != 0) + { + WINC_ASSERT(0); + WINC_LOG_ERROR("Failed block data response"); + return WINC_BUS_FAIL; + } + + // Clear bus error condition as operation was successful + bSPIBusError = false; + WINC_CRIT_SEC_BUS_LEAVE; + return WINC_BUS_SUCCESS; +} + +int_fast8_t winc_bus_read_block(const uint32_t u32Addr, uint8_t *pu8Buf, uint_fast16_t u16Sz) +{ + int_fast8_t i8Result; + uint8_t u8TmpBuf[2]; + uint8_t u8CmdBuf[7] = {CMD_DMA_EXT_READ}; + + WINC_ASSERT(pu8Buf != NULL); + WINC_ASSERT(u16Sz > 0); + + // External API: Don't run if bus error is present, preset error so only + // successful path leads to clearing the error condition + WINC_CRIT_SEC_BUS_ENTER; + if (bSPIBusError) + { + WINC_ASSERT(0); + return WINC_BUS_FAIL; + } + bSPIBusError = true; + + // Store address into buffer + u8CmdBuf[1] = (uint8_t)(u32Addr >> 16); + u8CmdBuf[2] = (uint8_t)(u32Addr >> 8); + u8CmdBuf[3] = (uint8_t)u32Addr; + + // Store first byte of transfer size into buffer + u8CmdBuf[4] = 0; + + if (u16Sz == 1) + { + // Possible issue with single byte transfers, request two bytes instead + u8CmdBuf[5] = 0; + u8CmdBuf[6] = 2; + } + else + { + // Store remaining bytes of transfer size into buffer + u8CmdBuf[5] = (uint8_t)(u16Sz >> 8); + u8CmdBuf[6] = (uint8_t)(u16Sz); + } + + // Send command buffer + if (WINC_BUS_SUCCESS != spi_cmd_send(u8CmdBuf, 7)) + { + WINC_ASSERT(0); + WINC_LOG_ERROR("Failed command, read block (%08" PRIx32 ")", u32Addr); + return WINC_BUS_FAIL; + } + + // Read data packet + if (u16Sz == 1) + { + // For single byte transfer go via a temporary buffer to + // ensure second byte requested doesn't trash memory if caller + // only supplied a single byte buffer + i8Result = spi_data_read(u8TmpBuf, 2); + pu8Buf[0] = u8TmpBuf[0]; + } + else + { + i8Result = spi_data_read(pu8Buf, u16Sz); + } + + if (WINC_BUS_SUCCESS != i8Result) + { + WINC_ASSERT(0); + WINC_LOG_ERROR("Failed block data read"); + return WINC_BUS_FAIL; + } + + // Clear bus error condition as operation was successful + bSPIBusError = false; + WINC_CRIT_SEC_BUS_LEAVE; + return WINC_BUS_SUCCESS; +} + +int_fast8_t winc_bus_init(void) +{ + static const uint8_t u8CmdBuf[9] = + { + CMD_SINGLE_WRITE, + 0x00, + (NMI_SPI_PROTOCOL_CONFIG >> 8) & 0xff, + (NMI_SPI_PROTOCOL_CONFIG) & 0xff, + 0x00, + 0x00, + 0x00, + 0x52, + 0x5c + }; + + WINC_CRIT_SEC_BUS_INIT; + + // Initialize bus error to clear, send SPI protocol configuration + // as first test of SPI bus. + bSPIBusError = false; + + return spi_cmd_send(u8CmdBuf, 9); +} + +int_fast8_t winc_bus_reset(void) +{ + static const uint8_t u8CmdBuf[5] = {CMD_RESET, 0xff, 0xff, 0xff, 0x00/*, 0xaa*/}; + + // Clear bus error condition to allow command send to work + bSPIBusError = false; + +#ifdef WINC_CRIT_SEC_BUS + if (WINC_BUS_SUCCESS != spi_cmd_send(u8CmdBuf, 5)) + { + WINC_ASSERT(0); + return WINC_BUS_FAIL; + } + + WINC_CRIT_SEC_BUS_LEAVE; + + return WINC_BUS_SUCCESS; +#else + // Send command to reset SPI + return spi_cmd_send(u8CmdBuf, 5); +#endif +} + +int_fast8_t winc_bus_deinit(void) +{ + WINC_CRIT_SEC_BUS_DEINIT; + + // Set bus error condition so all external APIs related to actual SPI use + // effectively become NOPs + bSPIBusError = true; + + return WINC_BUS_SUCCESS; +} + +uint32_t winc_bus_read_reg(const uint32_t u32Addr) +{ + uint32_t u32Val; + + // External API: Don't run if bus error is present, preset error so only + // successful path leads to clearing the error condition + WINC_CRIT_SEC_BUS_ENTER; + if (bSPIBusError) + { + WINC_ASSERT(0); + return 0; + } + bSPIBusError = true; + + if (WINC_BUS_SUCCESS != spi_read_reg(u32Addr, &u32Val)) + { + WINC_ASSERT(0); + return 0; + } + + // Clear bus error condition as operation was successful + bSPIBusError = false; + WINC_CRIT_SEC_BUS_LEAVE; + return u32Val; +} + +int_fast8_t winc_bus_read_reg_with_ret(const uint32_t u32Addr, uint32_t *pu32RetVal) +{ + WINC_ASSERT(pu32RetVal != NULL); + + // External API: Don't run if bus error is present, preset error so only + // successful path leads to clearing the error condition + WINC_CRIT_SEC_BUS_ENTER; + if (bSPIBusError) + { + WINC_ASSERT(0); + return WINC_BUS_FAIL; + } + bSPIBusError = true; + + if (WINC_BUS_SUCCESS != spi_read_reg(u32Addr, pu32RetVal)) + { + WINC_ASSERT(0); + return WINC_BUS_FAIL; + } + + // Clear bus error condition as operation was successful + bSPIBusError = false; + WINC_CRIT_SEC_BUS_LEAVE; + return WINC_BUS_SUCCESS; +} + +int_fast8_t winc_bus_set_reg_bits(uint32_t u32Addr, uint32_t u32Bits) +{ + uint32_t u32Reg; + + // External API: Only calls other external APIs so if bus error is present + // this function becomes NOP + + // Read the current value of the register + winc_bus_read_reg_with_ret(u32Addr, &u32Reg); + + if ((u32Reg & u32Bits) != u32Bits) + { + // Only set the bits request if they are not already set + u32Reg |= u32Bits; + + winc_bus_write_reg(u32Addr, u32Reg); + } + + if (winc_bus_error()) + { + return WINC_BUS_FAIL; + } + + return WINC_BUS_SUCCESS; +} + +int_fast8_t winc_bus_clear_reg_bits(uint32_t u32Addr, uint32_t u32Bits) +{ + uint32_t u32Reg; + + // External API: Only calls other external APIs so if bus error is present + // this function becomes NOP + + // Read the current value of the register + winc_bus_read_reg_with_ret(u32Addr, &u32Reg); + + if (u32Reg & u32Bits) + { + // Only clear the bits request if some of them are actually set + u32Reg &= ~u32Bits; + + winc_bus_write_reg(u32Addr, u32Reg); + } + + if (winc_bus_error()) + { + return WINC_BUS_FAIL; + } + + return WINC_BUS_SUCCESS; +} + +bool winc_bus_error(void) +{ + bool bRetErrorStatus; + + WINC_CRIT_SEC_BUS_ENTER; + WINC_ASSERT(bSPIBusError == false); + + bRetErrorStatus = bSPIBusError; + WINC_CRIT_SEC_BUS_LEAVE; + + // Return current bus error condition + return bRetErrorStatus; +} diff --git a/AVRIoT.X/mcc_generated_files/winc/driver/winc_spi.h b/AVRIoT.X/mcc_generated_files/winc/driver/winc_spi.h new file mode 100644 index 0000000..44a43de --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/driver/winc_spi.h @@ -0,0 +1,65 @@ +/** + * + * \file + * + * \brief This module contains SPI protocol bus API declarations. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _WINC_SPI_H_ +#define _WINC_SPI_H_ + +#ifdef __cplusplus + extern "C" { +#endif + +#define WINC_BUS_SUCCESS 0 +#define WINC_BUS_FAIL 1 + +int_fast8_t winc_bus_init(void); +int_fast8_t winc_bus_reset(void); +int_fast8_t winc_bus_deinit(void); +uint32_t winc_bus_read_reg(const uint32_t u32Addr); +int_fast8_t winc_bus_read_reg_with_ret(const uint32_t u32Addr, uint32_t *pu32RetVal); +int_fast8_t winc_bus_write_reg(const uint32_t u32Addr, const uint32_t u32Val); +int_fast8_t winc_bus_write_reg_no_rsp(const uint32_t u32Addr, const uint32_t u32Val); +int_fast8_t winc_bus_read_block(const uint32_t u32Addr, uint8_t *pu8Buf, uint_fast16_t u16Sz); +int_fast8_t winc_bus_write_block(uint32_t u32Addr, const uint8_t *pu8Buf, uint_fast16_t u16Sz); +int_fast8_t winc_bus_set_reg_bits(uint32_t u32Addr, uint32_t u32Bits); +int_fast8_t winc_bus_clear_reg_bits(uint32_t u32Addr, uint32_t u32Bits); +bool winc_bus_error(void); + +#ifdef __cplusplus + } +#endif + +#endif /* _WINC_SPI_H_ */ diff --git a/AVRIoT.X/mcc_generated_files/winc/include/conf_winc_defaults.h b/AVRIoT.X/mcc_generated_files/winc/include/conf_winc_defaults.h new file mode 100644 index 0000000..a3544ea --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/include/conf_winc_defaults.h @@ -0,0 +1,123 @@ +/** + * + * \file + * + * \brief Default WINC configuration. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include + +#ifndef CONF_WINC_DEFAULTS_H_INCLUDED +#define CONF_WINC_DEFAULTS_H_INCLUDED + +#ifndef CONF_WINC_PRINTF +#define CONF_WINC_PRINTF printf +#endif + +#ifndef CONF_WINC_RESET_ASSERT_TIME +#define CONF_WINC_RESET_ASSERT_TIME 50 +#endif + + +/* Define to allow callback macros */ +#define CONF_WINC_HIF_CB_WIFI_HANDLER m2m_wifi_cb +#define CONF_WINC_HIF_CB_IP_HANDLER m2m_ip_cb +#define CONF_WINC_HIF_CB_SSL_HANDLER m2m_ssl_cb + +#ifdef CONF_WINC_HIF_CB_IP_HANDLER +void CONF_WINC_HIF_CB_IP_HANDLER(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr); +#else +#define CONF_WINC_HIF_CB_IP_HANDLER hif_null_cb +#endif + +#ifdef CONF_WINC_HIF_CB_HIF_HANDLER +void CONF_WINC_HIF_CB_HIF_HANDLER(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr); +#else +#define CONF_WINC_HIF_CB_HIF_HANDLER hif_null_cb +#endif + +#ifdef CONF_WINC_HIF_CB_OTA_HANDLER +void CONF_WINC_HIF_CB_OTA_HANDLER(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr); +#else +#define CONF_WINC_HIF_CB_OTA_HANDLER hif_null_cb +#endif + +#ifdef CONF_WINC_HIF_CB_SSL_HANDLER +void CONF_WINC_HIF_CB_SSL_HANDLER(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr); +#else +#define CONF_WINC_HIF_CB_SSL_HANDLER hif_null_cb +#endif + +#ifdef CONF_WINC_HIF_CB_CRYPTO_HANDLER +void CONF_WINC_HIF_CB_CRYPTO_HANDLER(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr); +#else +#define CONF_WINC_HIF_CB_CRYPTO_HANDLER hif_null_cb +#endif + +#ifdef CONF_WINC_HIF_CB_SIGMA_HANDLER +void CONF_WINC_HIF_CB_SIGMA_HANDLER(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr); +#else +#define CONF_WINC_HIF_CB_SIGMA_HANDLER hif_null_cb +#endif + +#if defined(CONF_WINC_MCU_ARCH_LITTLE_ENDIAN) +#elif defined(CONF_WINC_MCU_ARCH_BIG_ENDIAN) +#else +#error Please define MCU endianness +#endif + +#ifndef CONF_WINC_HIF_STRUCT_SIZE_CHECK +#ifdef __GNUC__ +#define CONF_WINC_HIF_STRUCT_SIZE_CHECK(STRUCTNAME) _Static_assert((sizeof(STRUCTNAME)%4)==0, "Structure alignment error"); +#elif !defined(_WIN32) && !defined(_STDC_) +#define CONF_WINC_HIF_STRUCT_SIZE_CHECK(STRUCTNAME) static_assert((sizeof(STRUCTNAME)%4)==0, "Structure alignment error"); +#else +#define CONF_WINC_HIF_STRUCT_SIZE_CHECK(STRUCTNAME) +#endif +#endif + +#ifndef WINC_CRIT_SEC_HIF +#define WINC_CRIT_SEC_HIF_INIT +#define WINC_CRIT_SEC_HIF_DEINIT +#define WINC_CRIT_SEC_HIF_ENTER +#define WINC_CRIT_SEC_HIF_LEAVE +#endif + +#ifndef WINC_CRIT_SEC_BUS +#define WINC_CRIT_SEC_BUS_INIT +#define WINC_CRIT_SEC_BUS_DEINIT +#define WINC_CRIT_SEC_BUS_ENTER +#define WINC_CRIT_SEC_BUS_LEAVE +#endif + +#endif /* CONF_WINC_DEFAULTS_H_INCLUDED */ diff --git a/AVRIoT.X/mcc_generated_files/winc/include/winc.h b/AVRIoT.X/mcc_generated_files/winc/include/winc.h new file mode 100644 index 0000000..3c41471 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/include/winc.h @@ -0,0 +1,64 @@ +/** + * + * \file + * + * \brief Primary include file for applications. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _WINC_H_ +#define _WINC_H_ + +#include + +#include "../driver/winc_adapter.h" + +#ifdef CONF_WINC_LEGACY_DEFINITIONS +#include "winc_legacy.h" +#endif + +#include "../common/winc_defines.h" +#include "../common/winc_debug.h" +#include "../m2m/m2m_types.h" +#include "../m2m/m2m_wifi.h" +#include "../m2m/m2m_periph.h" +#ifndef CONF_WINC_DISABLE_SOCKET_API +#include "../m2m/m2m_ota.h" +#include "../common/ecc_types.h" +#include "../m2m/m2m_ssl.h" +#include "../socket/socket.h" +#endif +#include "../spi_flash/flexible_flash.h" +#include "../spi_flash/spi_flash_map.h" +#include "../spi_flash/spi_flash.h" + +#endif diff --git a/AVRIoT.X/mcc_generated_files/winc/include/winc_legacy.h b/AVRIoT.X/mcc_generated_files/winc/include/winc_legacy.h new file mode 100644 index 0000000..7c98d95 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/include/winc_legacy.h @@ -0,0 +1,60 @@ +/** + * + * \file + * + * \brief Legacy Adaption Layer. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _WINC_LEGACY_H_ +#define _WINC_LEGACY_H_ + +#define NMI_API + +#define CONST const + +#define uint8 uint8_t +#define uint16 uint16_t +#define uint32 uint32_t +#define sint8 int8_t +#define sint16 int16_t +#define sint32 int32_t + +#define m2m_strlen strlen +#define m2m_memcpy memcpy +#define m2m_memset memset +#define m2m_memcmp memcmp +#define m2m_strstr strstr + +#define m2m_wifi_yield() + +#endif /* _WINC_LEGACY_H_ */ \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_crypto.c b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_crypto.c new file mode 100644 index 0000000..d26a6d0 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_crypto.c @@ -0,0 +1,1012 @@ +/** + * + * \file + * + * \brief WINC Crypto module. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +INCLUDES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +#include "../driver/winc_adapter.h" +#include "../common/winc_defines.h" +#include "../common/winc_debug.h" +#include "m2m_types.h" +#include "m2m_crypto.h" +#include "../driver/winc_hif.h" +#include "../driver/winc_asic.h" +#include "../driver/winc_spi.h" + +#ifdef CONF_CRYPTO_HW + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +MACROS +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +/*======*======*======*======*======*=======* +* WINC SHA256 HW Engine Register Definition * +*======*======*======*======*======*========*/ + +#define SHA_BLOCK_SIZE (64) + +#define SHARED_MEM_BASE (0xd0000) + + +#define SHA256_MEM_BASE (0x180000UL) +#define SHA256_ENGINE_ADDR (0x180000ul) + +/* SHA256 Registers */ +#define SHA256_CTRL (SHA256_MEM_BASE+0x00) +#define SHA256_CTRL_START_CALC_MASK (NBIT0) +#define SHA256_CTRL_START_CALC_SHIFT (0) +#define SHA256_CTRL_PREPROCESS_MASK (NBIT1) +#define SHA256_CTRL_PREPROCESS_SHIFT (1) +#define SHA256_CTRL_HASH_HASH_MASK (NBIT2) +#define SHA256_CTRL_HASH_HASH_SHIFT (2) +#define SHA256_CTRL_INIT_SHA256_STATE_MASK (NBIT3) +#define SHA256_CTRL_INIT_SHA256_STATE_SHIFT (3) +#define SHA256_CTRL_WR_BACK_HASH_VALUE_MASK (NBIT4) +#define SHA256_CTRL_WR_BACK_HASH_VALUE_SHIFT (4) +#define SHA256_CTRL_FORCE_SHA256_QUIT_MASK (NBIT5) +#define SHA256_CTRL_FORCE_SHA256_QUIT_SHIFT (5) + +#define SHA256_REGS_SHA256_CTRL_AHB_BYTE_REV_EN (NBIT6) +#define SHA256_REGS_SHA256_CTRL_RESERVED (NBIT7) +#define SHA256_REGS_SHA256_CTRL_CORE_TO_AHB_CLK_RATIO (NBIT8+ NBIT9+ NBIT10) +#define SHA256_REGS_SHA256_CTRL_CORE_TO_AHB_CLK_RATIO_MASK (NBIT2+ NBIT1+ NBIT0) +#define SHA256_REGS_SHA256_CTRL_CORE_TO_AHB_CLK_RATIO_SHIFT (8) +#define SHA256_REGS_SHA256_CTRL_RESERVED_11 (NBIT11) +#define SHA256_REGS_SHA256_CTRL_SHA1_CALC (NBIT12) +#define SHA256_REGS_SHA256_CTRL_PBKDF2_SHA1_CALC (NBIT13) + + +#define SHA256_START_RD_ADDR (SHA256_MEM_BASE+0x04UL) +#define SHA256_DATA_LENGTH (SHA256_MEM_BASE+0x08UL) +#define SHA256_START_WR_ADDR (SHA256_MEM_BASE+0x0cUL) +#define SHA256_COND_CHK_CTRL (SHA256_MEM_BASE+0x10) +#define SHA256_COND_CHK_CTRL_HASH_VAL_COND_CHK_MASK (NBIT1 | NBIT0) +#define SHA256_COND_CHK_CTRL_HASH_VAL_COND_CHK_SHIFT (0) +#define SHA256_COND_CHK_CTRL_STEP_VAL_MASK (NBIT6 | NBIT5 | NBIT4 | NBIT3 | NBIT2) +#define SHA256_COND_CHK_CTRL_STEP_VAL_SHIFT (2) +#define SHA256_COND_CHK_CTRL_COND_CHK_RESULT_MASK (NBIT7) +#define SHA256_COND_CHK_CTRL_COND_CHK_RESULT_SHIFT (7) + +#define SHA256_MOD_DATA_RANGE (SHA256_MEM_BASE+0x14) +#define SHA256_MOD_DATA_RANGE_ST_BYTE_2_ADD_STP_MASK (NBIT24-1) +#define SHA256_MOD_DATA_RANGE_ST_BYTE_2_ADD_STP_SHIFT (0) +#define SHA256_MOD_DATA_RANGE_MOD_DATA_LEN_MASK (NBIT24 | NBIT25| NBIT26) +#define SHA256_MOD_DATA_RANGE_MOD_DATA_LEN_SHIFT (24) + + +#define SHA256_COND_CHK_STS_1 (SHA256_MEM_BASE+0x18) +#define SHA256_COND_CHK_STS_2 (SHA256_MEM_BASE+0x1c) +#define SHA256_DONE_INTR_ENABLE (SHA256_MEM_BASE+0x20) +#define SHA256_DONE_INTR_STS (SHA256_MEM_BASE+0x24) +#define SHA256_TARGET_HASH_H1 (SHA256_MEM_BASE+0x28) +#define SHA256_TARGET_HASH_H2 (SHA256_MEM_BASE+0x2c) +#define SHA256_TARGET_HASH_H3 (SHA256_MEM_BASE+0x30) +#define SHA256_TARGET_HASH_H4 (SHA256_MEM_BASE+0x34) +#define SHA256_TARGET_HASH_H5 (SHA256_MEM_BASE+0x38) +#define SHA256_TARGET_HASH_H6 (SHA256_MEM_BASE+0x3c) +#define SHA256_TARGET_HASH_H7 (SHA256_MEM_BASE+0x40) +#define SHA256_TARGET_HASH_H8 (SHA256_MEM_BASE+0x44) + +/*======*======*======*======*======*=======* +* WINC BIGINT HW Engine Register Definition * +*======*======*======*======*======*========*/ + + +#define BIGINT_ENGINE_ADDR (0x180080ul) +#define BIGINT_VERSION (BIGINT_ENGINE_ADDR + 0x00) + +#define BIGINT_MISC_CTRL (BIGINT_ENGINE_ADDR + 0x04) +#define BIGINT_MISC_CTRL_CTL_START (NBIT0) +#define BIGINT_MISC_CTRL_CTL_RESET (NBIT1) +#define BIGINT_MISC_CTRL_CTL_MSW_FIRST (NBIT2) +#define BIGINT_MISC_CTRL_CTL_SWAP_BYTE_ORDER (NBIT3) +#define BIGINT_MISC_CTRL_CTL_FORCE_BARRETT (NBIT4) +#define BIGINT_MISC_CTRL_CTL_M_PRIME_VALID (NBIT5) + +#define BIGINT_M_PRIME (BIGINT_ENGINE_ADDR + 0x08) + +#define BIGINT_STATUS (BIGINT_ENGINE_ADDR + 0x0C) +#define BIGINT_STATUS_STS_DONE (NBIT0) + +#define BIGINT_CLK_COUNT (BIGINT_ENGINE_ADDR + 0x10) +#define BIGINT_ADDR_X (BIGINT_ENGINE_ADDR + 0x14) +#define BIGINT_ADDR_E (BIGINT_ENGINE_ADDR + 0x18) +#define BIGINT_ADDR_M (BIGINT_ENGINE_ADDR + 0x1C) +#define BIGINT_ADDR_R (BIGINT_ENGINE_ADDR + 0x20) +#define BIGINT_LENGTH (BIGINT_ENGINE_ADDR + 0x24) + +#define BIGINT_IRQ_STS (BIGINT_ENGINE_ADDR + 0x28) +#define BIGINT_IRQ_STS_DONE (NBIT0) +#define BIGINT_IRQ_STS_CHOOSE_MONT (NBIT1) +#define BIGINT_IRQ_STS_M_READ (NBIT2) +#define BIGINT_IRQ_STS_X_READ (NBIT3) +#define BIGINT_IRQ_STS_START (NBIT4) +#define BIGINT_IRQ_STS_PRECOMP_FINISH (NBIT5) + +#define BIGINT_IRQ_MASK (BIGINT_ENGINE_ADDR + 0x2C) +#define BIGINT_IRQ_MASK_CTL_IRQ_MASK_START (NBIT4) + +#define ENABLE_FLIPPING 1 + + + + +#define GET_UINT32(BUF,OFFSET) ((((uint32_t)(BUF)[OFFSET])) | ((((uint32_t)(BUF)[OFFSET + 1]) << 8)) | \ +((((uint32_t)(BUF)[OFFSET + 2]) << 16)) | ((((uint32_t)(BUF)[OFFSET + 3]) << 24))) + +#define PUTU32(VAL32,BUF,OFFSET) \ +do \ +{ \ + (BUF)[OFFSET ] = BYTE_3((VAL32)); \ + (BUF)[OFFSET +1 ] = BYTE_2((VAL32)); \ + (BUF)[OFFSET +2 ] = BYTE_1((VAL32)); \ + (BUF)[OFFSET +3 ] = BYTE_0((VAL32)); \ +}while(0) + + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +DATA TYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +/*! +@struct \ + tstrHashContext + +@brief +*/ +typedef struct{ + uint32_t au32HashState[M2M_SHA256_DIGEST_LEN/4]; + uint8_t au8CurrentBlock[64]; + uint32_t u32TotalLength; + uint8_t u8InitHashFlag; +}tstrSHA256HashCtxt; + + + +/*======*======*======*======*======*=======* +* SHA256 IMPLEMENTATION * +*======*======*======*======*======*========*/ + +int8_t m2m_crypto_sha256_hash_init(tstrM2mSha256Ctxt *pstrSha256Ctxt) +{ + tstrSHA256HashCtxt *pstrSHA256 = (tstrSHA256HashCtxt*)pstrSha256Ctxt; + if(pstrSHA256 != NULL) + { + memset(pstrSha256Ctxt, 0, sizeof(tstrM2mSha256Ctxt)); + pstrSHA256->u8InitHashFlag = 1; + } + return 0; +} + +int8_t m2m_crypto_sha256_hash_update(tstrM2mSha256Ctxt *pstrSha256Ctxt, uint8_t *pu8Data, uint16_t u16DataLength) +{ + int8_t s8Ret = M2M_ERR_FAIL; + tstrSHA256HashCtxt *pstrSHA256 = (tstrSHA256HashCtxt*)pstrSha256Ctxt; + if(pstrSHA256 != NULL) + { + uint32_t u32ReadAddr; + uint32_t u32WriteAddr = SHARED_MEM_BASE; + uint32_t u32Addr = u32WriteAddr; + uint32_t u32ResidualBytes; + uint32_t u32NBlocks; + uint32_t u32Offset; + uint32_t u32CurrentBlock = 0; + uint8_t u8IsDone = 0; + + /* Get the remaining bytes from the previous update (if the length is not block aligned). */ + u32ResidualBytes = pstrSHA256->u32TotalLength % SHA_BLOCK_SIZE; + + /* Update the total data length. */ + pstrSHA256->u32TotalLength += u16DataLength; + + if(u32ResidualBytes != 0) + { + if((u32ResidualBytes + u16DataLength) >= SHA_BLOCK_SIZE) + { + u32Offset = SHA_BLOCK_SIZE - u32ResidualBytes; + memcpy(&pstrSHA256->au8CurrentBlock[u32ResidualBytes], pu8Data, u32Offset); + pu8Data += u32Offset; + u16DataLength -= u32Offset; + + winc_bus_write_block(u32Addr, pstrSHA256->au8CurrentBlock, SHA_BLOCK_SIZE); + u32Addr += SHA_BLOCK_SIZE; + u32CurrentBlock = 1; + } + else + { + memcpy(&pstrSHA256->au8CurrentBlock[u32ResidualBytes], pu8Data, u16DataLength); + u16DataLength = 0; + } + } + + /* Get the number of HASH BLOCKs and the residual bytes. */ + u32NBlocks = u16DataLength / SHA_BLOCK_SIZE; + u32ResidualBytes = u16DataLength % SHA_BLOCK_SIZE; + + if(u32NBlocks != 0) + { + winc_bus_write_block(u32Addr, pu8Data, (uint16_t)(u32NBlocks * SHA_BLOCK_SIZE)); + pu8Data += (u32NBlocks * SHA_BLOCK_SIZE); + } + + u32NBlocks += u32CurrentBlock; + if(u32NBlocks != 0) + { + uint32_t u32RegVal = 0; + + winc_bus_write_reg(SHA256_CTRL, u32RegVal); + u32RegVal |= SHA256_CTRL_FORCE_SHA256_QUIT_MASK; + winc_bus_write_reg(SHA256_CTRL, u32RegVal); + + if(pstrSHA256->u8InitHashFlag) + { + pstrSHA256->u8InitHashFlag = 0; + u32RegVal |= SHA256_CTRL_INIT_SHA256_STATE_MASK; + } + + u32ReadAddr = u32WriteAddr + (u32NBlocks * SHA_BLOCK_SIZE); + winc_bus_write_reg(SHA256_DATA_LENGTH, (u32NBlocks * SHA_BLOCK_SIZE)); + winc_bus_write_reg(SHA256_START_RD_ADDR, u32WriteAddr); + winc_bus_write_reg(SHA256_START_WR_ADDR, u32ReadAddr); + + u32RegVal |= SHA256_CTRL_START_CALC_MASK; + + u32RegVal &= ~(0x7 << 8); + u32RegVal |= (2 << 8); + + winc_bus_write_reg(SHA256_CTRL, u32RegVal); + + /* 5. Wait for done_intr */ + while(!u8IsDone) + { + u32RegVal = winc_bus_read_reg(SHA256_DONE_INTR_STS); + u8IsDone = u32RegVal & NBIT0; + } + } + if(u32ResidualBytes != 0) + { + memcpy(pstrSHA256->au8CurrentBlock, pu8Data, u32ResidualBytes); + } + s8Ret = M2M_SUCCESS; + } + return s8Ret; +} + + +int8_t m2m_crypto_sha256_hash_finish(tstrM2mSha256Ctxt *pstrSha256Ctxt, uint8_t *pu8Sha256Digest) +{ + int8_t s8Ret = M2M_ERR_FAIL; + tstrSHA256HashCtxt *pstrSHA256 = (tstrSHA256HashCtxt*)pstrSha256Ctxt; + if(pstrSHA256 != NULL) + { + uint32_t u32ReadAddr; + uint32_t u32WriteAddr = SHARED_MEM_BASE; + uint32_t u32Addr = u32WriteAddr; + uint16_t u16Offset; + uint16_t u16PaddingLength; + uint16_t u16NBlocks = 1; + uint32_t u32RegVal = 0; + uint32_t u32Idx,u32ByteIdx; + uint32_t au32Digest[M2M_SHA256_DIGEST_LEN / 4]; + uint8_t u8IsDone = 0; + + winc_bus_write_reg(SHA256_CTRL,u32RegVal); + u32RegVal |= SHA256_CTRL_FORCE_SHA256_QUIT_MASK; + winc_bus_write_reg(SHA256_CTRL,u32RegVal); + + if(pstrSHA256->u8InitHashFlag) + { + pstrSHA256->u8InitHashFlag = 0; + u32RegVal |= SHA256_CTRL_INIT_SHA256_STATE_MASK; + } + + /* Calculate the offset of the last data byte in the current block. */ + u16Offset = (uint16_t)(pstrSHA256->u32TotalLength % SHA_BLOCK_SIZE); + + /* Add the padding byte 0x80. */ + pstrSHA256->au8CurrentBlock[u16Offset ++] = 0x80; + + /* Calculate the required padding to complete + one Hash Block Size. + */ + u16PaddingLength = SHA_BLOCK_SIZE - u16Offset; + memset(&pstrSHA256->au8CurrentBlock[u16Offset], 0, u16PaddingLength); + + /* If the padding count is not enough to hold 64-bit representation of + the total input message length, one padding block is required. + */ + if(u16PaddingLength < 8) + { + winc_bus_write_block(u32Addr, pstrSHA256->au8CurrentBlock, SHA_BLOCK_SIZE); + u32Addr += SHA_BLOCK_SIZE; + memset(pstrSHA256->au8CurrentBlock, 0, SHA_BLOCK_SIZE); + u16NBlocks ++; + } + + /* pack the length at the end of the padding block */ + PUTU32(pstrSHA256->u32TotalLength << 3, pstrSHA256->au8CurrentBlock, (SHA_BLOCK_SIZE - 4)); + + u32ReadAddr = u32WriteAddr + (u16NBlocks * SHA_BLOCK_SIZE); + winc_bus_write_block(u32Addr, pstrSHA256->au8CurrentBlock, SHA_BLOCK_SIZE); + winc_bus_write_reg(SHA256_DATA_LENGTH, (u16NBlocks * SHA_BLOCK_SIZE)); + winc_bus_write_reg(SHA256_START_RD_ADDR, u32WriteAddr); + winc_bus_write_reg(SHA256_START_WR_ADDR, u32ReadAddr); + + u32RegVal |= SHA256_CTRL_START_CALC_MASK; + u32RegVal |= SHA256_CTRL_WR_BACK_HASH_VALUE_MASK; + u32RegVal &= ~(0x7UL << 8); + u32RegVal |= (0x2UL << 8); + + winc_bus_write_reg(SHA256_CTRL,u32RegVal); + + + /* 5. Wait for done_intr */ + while(!u8IsDone) + { + u32RegVal = winc_bus_read_reg(SHA256_DONE_INTR_STS); + u8IsDone = u32RegVal & NBIT0; + } + winc_bus_read_block(u32ReadAddr, (uint8_t*)au32Digest, 32); + + /* Convert the output words to an array of bytes. + */ + u32ByteIdx = 0; + for(u32Idx = 0; u32Idx < (M2M_SHA256_DIGEST_LEN / 4); u32Idx ++) + { + pu8Sha256Digest[u32ByteIdx ++] = BYTE_3(au32Digest[u32Idx]); + pu8Sha256Digest[u32ByteIdx ++] = BYTE_2(au32Digest[u32Idx]); + pu8Sha256Digest[u32ByteIdx ++] = BYTE_1(au32Digest[u32Idx]); + pu8Sha256Digest[u32ByteIdx ++] = BYTE_0(au32Digest[u32Idx]); + } + s8Ret = M2M_SUCCESS; + } + return s8Ret; +} + + +/*======*======*======*======*======*=======* +* RSA IMPLEMENTATION * +*======*======*======*======*======*========*/ + +static void FlipBuffer(uint8_t *pu8InBuffer, uint8_t *pu8OutBuffer, uint16_t u16BufferSize) +{ + uint16_t u16Idx; + for(u16Idx = 0; u16Idx < u16BufferSize; u16Idx ++) + { +#if ENABLE_FLIPPING == 1 + pu8OutBuffer[u16Idx] = pu8InBuffer[u16BufferSize - u16Idx - 1]; +#else + pu8OutBuffer[u16Idx] = pu8InBuffer[u16Idx]; +#endif + } +} + +void BigInt_ModExp +( + uint8_t *pu8X, uint16_t u16XSize, + uint8_t *pu8E, uint16_t u16ESize, + uint8_t *pu8M, uint16_t u16MSize, + uint8_t *pu8R, uint16_t u16RSize + ) +{ + uint32_t u32Reg; + uint8_t au8Tmp[780] = {0}; + uint32_t u32XAddr = SHARED_MEM_BASE; + uint32_t u32MAddr; + uint32_t u32EAddr; + uint32_t u32RAddr; + uint8_t u8EMswBits = 32; + uint32_t u32Mprime = 0x7F; + uint16_t u16XSizeWords,u16ESizeWords; + uint32_t u32Exponent; + + u16XSizeWords = (u16XSize + 3) / 4; + u16ESizeWords = (u16ESize + 3) / 4; + + u32MAddr = u32XAddr + (u16XSizeWords * 4); + u32EAddr = u32MAddr + (u16XSizeWords * 4); + u32RAddr = u32EAddr + (u16ESizeWords * 4); + + /* Reset the core. + */ + u32Reg = 0; + u32Reg |= BIGINT_MISC_CTRL_CTL_RESET; + u32Reg = winc_bus_read_reg(BIGINT_MISC_CTRL); + u32Reg &= ~BIGINT_MISC_CTRL_CTL_RESET; + u32Reg = winc_bus_read_reg(BIGINT_MISC_CTRL); + + winc_bus_write_block(u32RAddr,au8Tmp, u16RSize); + + /* Write Input Operands to Chip Memory. + */ + /*------- X -------*/ + FlipBuffer(pu8X,au8Tmp,u16XSize); + winc_bus_write_block(u32XAddr,au8Tmp,u16XSizeWords * 4); + + /*------- E -------*/ + memset(au8Tmp, 0, sizeof(au8Tmp)); + FlipBuffer(pu8E, au8Tmp, u16ESize); + winc_bus_write_block(u32EAddr, au8Tmp, u16ESizeWords * 4); + u32Exponent = GET_UINT32(au8Tmp, (u16ESizeWords * 4) - 4); + while((u32Exponent & NBIT31)== 0) + { + u32Exponent <<= 1; + u8EMswBits --; + } + + /*------- M -------*/ + memset(au8Tmp, 0, sizeof(au8Tmp)); + FlipBuffer(pu8M, au8Tmp, u16XSize); + winc_bus_write_block(u32MAddr, au8Tmp, u16XSizeWords * 4); + + /* Program the addresses of the input operands. + */ + winc_bus_write_reg(BIGINT_ADDR_X, u32XAddr); + winc_bus_write_reg(BIGINT_ADDR_E, u32EAddr); + winc_bus_write_reg(BIGINT_ADDR_M, u32MAddr); + winc_bus_write_reg(BIGINT_ADDR_R, u32RAddr); + + /* Mprime. + */ + winc_bus_write_reg(BIGINT_M_PRIME,u32Mprime); + + /* Length. + */ + u32Reg = (u16XSizeWords & 0xFF); + u32Reg += ((u16ESizeWords & 0xFF) << 8); + u32Reg += ((uint32_t)u8EMswBits << 16); + winc_bus_write_reg(BIGINT_LENGTH,u32Reg); + + /* CTRL Register. + */ + u32Reg = winc_bus_read_reg(BIGINT_MISC_CTRL); + u32Reg ^= BIGINT_MISC_CTRL_CTL_START; + u32Reg |= BIGINT_MISC_CTRL_CTL_FORCE_BARRETT; + //u32Reg |= BIGINT_MISC_CTRL_CTL_M_PRIME_VALID; +#if ENABLE_FLIPPING == 0 + u32Reg |= BIGINT_MISC_CTRL_CTL_MSW_FIRST; +#endif + winc_bus_write_reg(BIGINT_MISC_CTRL,u32Reg); + + /* Wait for computation to complete. */ + while(1) + { + u32Reg = winc_bus_read_reg(BIGINT_IRQ_STS); + if(u32Reg & BIGINT_IRQ_STS_DONE) + { + break; + } + } + winc_bus_write_reg(BIGINT_IRQ_STS,0); + memset(au8Tmp, 0, sizeof(au8Tmp)); + winc_bus_read_block(u32RAddr, au8Tmp, u16RSize); + FlipBuffer(au8Tmp, pu8R, u16RSize); +} + + + +#define MD5_DIGEST_SIZE (16) +#define SHA1_DIGEST_SIZE (20) + +static const uint8_t au8TEncodingMD5[] = +{ + 0x30, 0x20, 0x30, 0x0C, 0x06, 0x08, 0x2A, 0x86, + 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x05, 0x05, 0x00, + 0x04 +}; +/*!< Fixed part of the Encoding T for the MD5 hash algorithm. +*/ + + +static const uint8_t au8TEncodingSHA1[] = +{ + 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, + 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04 +}; +/*!< Fixed part of the Encoding T for the SHA-1 hash algorithm. +*/ + + +static const uint8_t au8TEncodingSHA2[] = +{ + 0x30, 0x31, 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, + 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, + 0x00, 0x04 +}; +/*!< Fixed part of the Encoding T for the SHA-2 hash algorithm. +*/ + + +int8_t m2m_crypto_rsa_sign_verify(uint8_t *pu8N, uint16_t u16NSize, uint8_t *pu8E, uint16_t u16ESize, uint8_t *pu8SignedMsgHash, + uint16_t u16HashLength, uint8_t *pu8RsaSignature) +{ + int8_t s8Ret = M2M_RSA_SIGN_FAIL; + + if((pu8N != NULL) && (pu8E != NULL) && (pu8RsaSignature != NULL) && (pu8SignedMsgHash != NULL)) + { + uint16_t u16TLength, u16TEncodingLength; + uint8_t *pu8T; + uint8_t au8EM[512]; + + /* Selection of correct T Encoding based on the hash size. + */ + if(u16HashLength == MD5_DIGEST_SIZE) + { + pu8T = (uint8_t*)au8TEncodingMD5; + u16TEncodingLength = sizeof(au8TEncodingMD5); + } + else if(u16HashLength == SHA1_DIGEST_SIZE) + { + pu8T = (uint8_t*)au8TEncodingSHA1; + u16TEncodingLength = sizeof(au8TEncodingSHA1); + } + else + { + pu8T = (uint8_t*)au8TEncodingSHA2; + u16TEncodingLength = sizeof(au8TEncodingSHA2); + } + u16TLength = u16TEncodingLength + 1 + u16HashLength; + + /* If emLen < tLen + 11. + */ + if(u16NSize >= (u16TLength + 11)) + { + uint32_t u32PSLength,u32Idx = 0; + + /* + RSA verification + */ + BigInt_ModExp(pu8RsaSignature, u16NSize, pu8E, u16ESize, pu8N, u16NSize, au8EM, u16NSize); + + u32PSLength = u16NSize - u16TLength - 3; + + /* + The calculated EM must match the following pattern. + *======*======*======*======*======* + * 0x00 || 0x01 || PS || 0x00 || T * + *======*======*======*======*======* + Where PS is all 0xFF + T is defined based on the hash algorithm. + */ + if((au8EM[0] == 0x00) && (au8EM[1] == 0x01)) + { + for(u32Idx = 2; au8EM[u32Idx] == 0xFF; u32Idx ++); + if(u32Idx == (u32PSLength + 2)) + { + if(au8EM[u32Idx ++] == 0x00) + { + if(!memcmp(&au8EM[u32Idx], pu8T, u16TEncodingLength)) + { + u32Idx += u16TEncodingLength; + if(au8EM[u32Idx ++] == u16HashLength) + s8Ret = memcmp(&au8EM[u32Idx], pu8SignedMsgHash, u16HashLength); + } + } + } + } + } + } + return s8Ret; +} + + +int8_t m2m_crypto_rsa_sign_gen(uint8_t *pu8N, uint16_t u16NSize, uint8_t *pu8d, uint16_t u16dSize, uint8_t *pu8SignedMsgHash, + uint16_t u16HashLength, uint8_t *pu8RsaSignature) +{ + int8_t s8Ret = M2M_RSA_SIGN_FAIL; + + if((pu8N != NULL) && (pu8d != NULL) && (pu8RsaSignature != NULL) && (pu8SignedMsgHash != NULL)) + { + uint16_t u16TLength, u16TEncodingLength; + uint8_t *pu8T; + uint8_t au8EM[512]; + + /* Selection of correct T Encoding based on the hash size. + */ + if(u16HashLength == MD5_DIGEST_SIZE) + { + pu8T = (uint8_t*)au8TEncodingMD5; + u16TEncodingLength = sizeof(au8TEncodingMD5); + } + else if(u16HashLength == SHA1_DIGEST_SIZE) + { + pu8T = (uint8_t*)au8TEncodingSHA1; + u16TEncodingLength = sizeof(au8TEncodingSHA1); + } + else + { + pu8T = (uint8_t*)au8TEncodingSHA2; + u16TEncodingLength = sizeof(au8TEncodingSHA2); + } + u16TLength = u16TEncodingLength + 1 + u16HashLength; + + /* If emLen < tLen + 11. + */ + if(u16NSize >= (u16TLength + 11)) + { + uint16_t u16PSLength = 0; + uint16_t u16Offset = 0; + + /* + The calculated EM must match the following pattern. + *======*======*======*======*======* + * 0x00 || 0x01 || PS || 0x00 || T * + *======*======*======*======*======* + Where PS is all 0xFF + T is defined based on the hash algorithm. + */ + au8EM[u16Offset ++] = 0; + au8EM[u16Offset ++] = 1; + u16PSLength = u16NSize - u16TLength - 3; + memset(&au8EM[u16Offset], 0xFF, u16PSLength); + u16Offset += u16PSLength; + au8EM[u16Offset ++] = 0; + memcpy(&au8EM[u16Offset], pu8T, u16TEncodingLength); + u16Offset += u16TEncodingLength; + au8EM[u16Offset ++] = u16HashLength; + memcpy(&au8EM[u16Offset], pu8SignedMsgHash, u16HashLength); + + /* + RSA Signature Generation + */ + BigInt_ModExp(au8EM, u16NSize, pu8d, u16dSize, pu8N, u16NSize, pu8RsaSignature, u16NSize); + s8Ret = M2M_RSA_SIGN_OK; + } + } + return s8Ret; +} + +#endif /* CONF_CRYPTO */ + +#ifdef CONF_CRYPTO_SOFT + +typedef struct { + tpfAppCryproCb pfAppCryptoCb; + uint8_t * pu8Digest; + uint8_t * pu8Rsa; + uint8_t u8CryptoBusy; +}tstrCryptoCtxt; + +typedef struct { + uint8_t au8N[M2M_MAX_RSA_LEN]; + uint8_t au8E[M2M_MAX_RSA_LEN]; + uint8_t au8Hash[M2M_SHA256_DIGEST_LEN]; + uint16_t u16Nsz; + uint16_t u16Esz; + uint16_t u16Hsz; + uint8_t _pad16_[2]; +}tstrRsaPayload; + +static tstrCryptoCtxt gstrCryptoCtxt; + + +/** +* @fn m2m_crypto_cb(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr) +* @brief WiFi call back function +* @param [in] u8OpCode +* HIF Opcode type. +* @param [in] u16DataSize +* HIF data length. +* @param [in] u32Addr +* HIF address. +* @author +* @date +* @version 1.0 +*/ +void m2m_crypto_cb(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr) +{ + UNUSED_VAR(u16DataSize); + + gstrCryptoCtxt.u8CryptoBusy = 0; + if(u8OpCode == M2M_CRYPTO_RESP_SHA256_INIT) + { + tstrM2mSha256Ctxt strCtxt; + if (winc_hif_receive(u32Addr, &strCtxt, sizeof(tstrM2mSha256Ctxt)) == M2M_SUCCESS) + { + tstrCyptoResp strResp; + if(winc_hif_receive(u32Addr + sizeof(tstrM2mSha256Ctxt), &strResp, sizeof(tstrCyptoResp)) == M2M_SUCCESS) + { + if (gstrCryptoCtxt.pfAppCryptoCb) + gstrCryptoCtxt.pfAppCryptoCb(u8OpCode,&strResp,&strCtxt); + } + } + } + else if(u8OpCode == M2M_CRYPTO_RESP_SHA256_UPDATE) + { + tstrM2mSha256Ctxt strCtxt; + if (winc_hif_receive(u32Addr, &strCtxt, sizeof(tstrM2mSha256Ctxt)) == M2M_SUCCESS) + { + tstrCyptoResp strResp; + if (winc_hif_receive(u32Addr + sizeof(tstrM2mSha256Ctxt), &strResp, sizeof(tstrCyptoResp)) == M2M_SUCCESS) + { + if (gstrCryptoCtxt.pfAppCryptoCb) + gstrCryptoCtxt.pfAppCryptoCb(u8OpCode,&strResp,&strCtxt); + } + } + + } + else if(u8OpCode == M2M_CRYPTO_RESP_SHA256_FINISH) + { + tstrCyptoResp strResp; + if (winc_hif_receive(u32Addr + sizeof(tstrM2mSha256Ctxt), &strResp, sizeof(tstrCyptoResp)) == M2M_SUCCESS) + { + if (winc_hif_receive(u32Addr + sizeof(tstrM2mSha256Ctxt) + sizeof(tstrCyptoResp), gstrCryptoCtxt.pu8Digest, M2M_SHA256_DIGEST_LEN) == M2M_SUCCESS) + { + if (gstrCryptoCtxt.pfAppCryptoCb) + gstrCryptoCtxt.pfAppCryptoCb(u8OpCode,&strResp,gstrCryptoCtxt.pu8Digest); + + } + } + } + else if(u8OpCode == M2M_CRYPTO_RESP_RSA_SIGN_GEN) + { + tstrCyptoResp strResp; + if (winc_hif_receive(u32Addr + sizeof(tstrRsaPayload), &strResp, sizeof(tstrCyptoResp)) == M2M_SUCCESS) + { + if (winc_hif_receive(u32Addr + sizeof(tstrRsaPayload) + sizeof(tstrCyptoResp), gstrCryptoCtxt.pu8Rsa, M2M_MAX_RSA_LEN) == M2M_SUCCESS) + { + if (gstrCryptoCtxt.pfAppCryptoCb) + gstrCryptoCtxt.pfAppCryptoCb(u8OpCode,&strResp,gstrCryptoCtxt.pu8Rsa); + } + } + } + else if(u8OpCode == M2M_CRYPTO_RESP_RSA_SIGN_VERIFY) + { + tstrCyptoResp strResp; + if (winc_hif_receive(u32Addr + sizeof(tstrRsaPayload), &strResp, sizeof(tstrCyptoResp)) == M2M_SUCCESS) + { + if (gstrCryptoCtxt.pfAppCryptoCb) + gstrCryptoCtxt.pfAppCryptoCb(u8OpCode,&strResp,NULL); + } + } + else + { + WINC_LOG_ERROR("u8Code %d ??",u8OpCode); + } + +} +/*! +@fn \ + int8_t m2m_crypto_init(); + +@brief crypto initialization + +@param[in] pfAppCryproCb + +*/ +int8_t m2m_crypto_init(tpfAppCryproCb pfAppCryproCb) +{ + memset(&gstrCryptoCtxt, 0, sizeof(tstrCryptoCtxt)); + + if(pfAppCryproCb != NULL) + { + gstrCryptoCtxt.pfAppCryptoCb = pfAppCryproCb; + } + + return M2M_SUCCESS; +} +/*! +@fn \ + int8_t m2m_sha256_hash_init(tstrM2mSha256Ctxt *psha256Ctxt); + +@brief SHA256 hash initialization + +@param[in] psha256Ctxt + Pointer to a sha256 context allocated by the caller. +*/ +int8_t m2m_crypto_sha256_hash_init(tstrM2mSha256Ctxt *psha256Ctxt) +{ + int8_t ret = M2M_ERR_FAIL; + if((psha256Ctxt != NULL)&&(!gstrCryptoCtxt.u8CryptoBusy)) + { + ret = winc_hif_send_no_data(M2M_REQ_GROUP_CRYPTO, M2M_CRYPTO_REQ_SHA256_INIT|M2M_REQ_DATA_PKT, psha256Ctxt, sizeof(tstrM2mSha256Ctxt)); + } + return ret; +} + + +/*! +@fn \ + int8_t m2m_sha256_hash_update(tstrM2mSha256Ctxt *psha256Ctxt, uint8_t *pu8Data, uint16_t u16DataLength); + +@brief SHA256 hash update + +@param [in] psha256Ctxt + Pointer to the sha256 context. + +@param [in] pu8Data + Buffer holding the data submitted to the hash. + +@param [in] u16DataLength + Size of the data buffer in bytes. +*/ +int8_t m2m_crypto_sha256_hash_update(tstrM2mSha256Ctxt *psha256Ctxt, uint8_t *pu8Data, uint16_t u16DataLength) +{ + int8_t ret = M2M_ERR_FAIL; + if((!gstrCryptoCtxt.u8CryptoBusy) && (psha256Ctxt != NULL) && (pu8Data != NULL) && (u16DataLength < M2M_SHA256_MAX_DATA)) + { + ret = winc_hif_send(M2M_REQ_GROUP_CRYPTO, M2M_CRYPTO_REQ_SHA256_UPDATE|M2M_REQ_DATA_PKT, psha256Ctxt, sizeof(tstrM2mSha256Ctxt), pu8Data, u16DataLength, sizeof(tstrM2mSha256Ctxt) + sizeof(tstrCyptoResp)); + } + return ret; + +} + + +/*! +@fn \ + int8_t m2m_sha256_hash_finish(tstrM2mSha256Ctxt *psha256Ctxt, uint8_t *pu8Sha256Digest); + +@brief SHA256 hash finalization + +@param[in] psha256Ctxt + Pointer to a sha256 context allocated by the caller. + +@param [in] pu8Sha256Digest + Buffer allocated by the caller which will hold the resultant SHA256 Digest. It must be allocated no less than M2M_SHA256_DIGEST_LEN. +*/ +int8_t m2m_crypto_sha256_hash_finish(tstrM2mSha256Ctxt *psha256Ctxt, uint8_t *pu8Sha256Digest) +{ + int8_t ret = M2M_ERR_FAIL; + if((!gstrCryptoCtxt.u8CryptoBusy) && (psha256Ctxt != NULL) && (pu8Sha256Digest != NULL)) + { + gstrCryptoCtxt.pu8Digest = pu8Sha256Digest; + ret = winc_hif_send_no_data(M2M_REQ_GROUP_CRYPTO, M2M_CRYPTO_REQ_SHA256_FINISH|M2M_REQ_DATA_PKT, psha256Ctxt, sizeof(tstrM2mSha256Ctxt)); + } + return ret; +} + + + + +/*! +@fn \ + int8_t m2m_rsa_sign_verify(uint8_t *pu8N, uint16_t u16NSize, uint8_t *pu8E, uint16_t u16ESize, uint8_t *pu8SignedMsgHash, \ + uint16_t u16HashLength, uint8_t *pu8RsaSignature); + +@brief RSA Signature Verification + + The function shall request the RSA Signature verification from the WINC Firmware for the given message. The signed message shall be + compressed to the corresponding hash algorithm before calling this function. + The hash type is identified by the given hash length. For example, if the hash length is 32 bytes, then it is SHA256. + +@param[in] pu8N + RSA Key modulus n. + +@param[in] u16NSize + Size of the RSA modulus n in bytes. + +@param[in] pu8E + RSA public exponent. + +@param[in] u16ESize + Size of the RSA public exponent in bytes. + +@param[in] pu8SignedMsgHash + The hash digest of the signed message. + +@param[in] u16HashLength + The length of the hash digest. + +@param[out] pu8RsaSignature + Signature value to be verified. +*/ + + +int8_t m2m_crypto_rsa_sign_verify(uint8_t *pu8N, uint16_t u16NSize, uint8_t *pu8E, uint16_t u16ESize, uint8_t *pu8SignedMsgHash, + uint16_t u16HashLength, uint8_t *pu8RsaSignature) +{ + int8_t ret = M2M_ERR_FAIL; + if((!gstrCryptoCtxt.u8CryptoBusy) && (pu8N != NULL) && (pu8E != NULL) && (pu8RsaSignature != NULL) && (pu8SignedMsgHash != NULL) + && (u16NSize != 0) && (u16ESize != 0) && (u16HashLength != 0) && (pu8RsaSignature != NULL) ) + + { + tstrRsaPayload strRsa = {0}; + + memcpy(strRsa.au8N,pu8N,u16NSize); + memcpy(strRsa.au8E,pu8E,u16ESize); + memcpy(strRsa.au8Hash,pu8SignedMsgHash,u16HashLength); + + strRsa.u16Esz = u16ESize; + strRsa.u16Hsz = u16HashLength; + strRsa.u16Nsz = u16NSize; + + ret = winc_hif_send_no_data(M2M_REQ_GROUP_CRYPTO, M2M_CRYPTO_REQ_RSA_SIGN_VERIFY|M2M_REQ_DATA_PKT, &strRsa, sizeof(tstrRsaPayload)); + + } + return ret; +} + + +/*! +@fn \ + int8_t m2m_rsa_sign_gen(uint8_t *pu8N, uint16_t u16NSize, uint8_t *pu8d, uint16_t u16dSize, uint8_t *pu8SignedMsgHash, \ + uint16_t u16HashLength, uint8_t *pu8RsaSignature); + +@brief RSA Signature Generation + + The function shall request the RSA Signature generation from the WINC Firmware for the given message. The signed message shall be + compressed to the corresponding hash algorithm before calling this function. + The hash type is identified by the given hash length. For example, if the hash length is 32 bytes, then it is SHA256. + +@param[in] pu8N + RSA Key modulus n. + +@param[in] u16NSize + Size of the RSA modulus n in bytes. + +@param[in] pu8d + RSA private exponent. + +@param[in] u16dSize + Size of the RSA private exponent in bytes. + +@param[in] pu8SignedMsgHash + The hash digest of the signed message. + +@param[in] u16HashLength + The length of the hash digest. + +@param[out] pu8RsaSignature + Pointer to a user buffer allocated by the caller shall hold the generated signature. +*/ +int8_t m2m_crypto_rsa_sign_gen(uint8_t *pu8N, uint16_t u16NSize, uint8_t *pu8d, uint16_t u16dSize, uint8_t *pu8SignedMsgHash, + uint16_t u16HashLength, uint8_t *pu8RsaSignature) +{ + int8_t ret = M2M_ERR_FAIL; + if((!gstrCryptoCtxt.u8CryptoBusy) && (pu8N != NULL) && (pu8d != NULL) && (pu8RsaSignature != NULL) && (pu8SignedMsgHash != NULL) + && (u16NSize != 0) && (u16dSize != 0) && (u16HashLength != 0) && (pu8RsaSignature != NULL)) + + { + tstrRsaPayload strRsa = {0}; + + memcpy(strRsa.au8N,pu8N,u16NSize); + memcpy(strRsa.au8E,pu8d,u16dSize); + memcpy(strRsa.au8Hash,pu8SignedMsgHash,u16HashLength); + + strRsa.u16Esz = u16dSize; + strRsa.u16Hsz = u16HashLength; + strRsa.u16Nsz = u16NSize; + + gstrCryptoCtxt.pu8Rsa = pu8RsaSignature; + ret = winc_hif_send_no_data(M2M_REQ_GROUP_CRYPTO, M2M_CRYPTO_REQ_RSA_SIGN_GEN|M2M_REQ_DATA_PKT, &strRsa, sizeof(tstrRsaPayload)); + + } + return ret; +} + +#endif \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_crypto.h b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_crypto.h new file mode 100644 index 0000000..ae0281e --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_crypto.h @@ -0,0 +1,272 @@ +/** + * + * \file + * + * \brief WINC Crypto Application Interface. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef __M2M_CRYPTO_H__ +#define __M2M_CRYPTO_H__ + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +MACROS +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ +#define M2M_MAX_RSA_LEN (256) +#define M2M_SHA256_DIGEST_LEN 32 +#define M2M_SHA256_MAX_DATA (M2M_BUFFER_MAX_SIZE - M2M_SHA256_CONTEXT_BUFF_LEN - M2M_HIF_HDR_OFFSET) +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +DATA TYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +/*! +@struct \ + tstrM2mSha256Ctxt + +@brief + SHA256 context data +*/ +typedef struct sha256ctxt{ + uint32_t au32Sha256CtxtBuff[M2M_SHA256_CONTEXT_BUFF_LEN/sizeof(uint32_t)]; +} tstrM2mSha256Ctxt; + + +/*! +@enum \ + tenuRsaSignStatus + +@brief + RSA Signature status: pass or fail. + +@see + m2m_crypto_rsa_sign_gen +*/ +typedef enum { + M2M_RSA_SIGN_OK, + M2M_RSA_SIGN_FAIL +} tenuRsaSignStatus; + +/*! +@typedef \ + tpfAppCryproCb + +@brief Crypto Callback function receiving the crypto related messages +@param [in] u8MsgType + Crypto command about which the notification is received. +@param [in] pvResp + A pointer to the result associated with the notification. +@param [in] pvMsg + A pointer to a buffer containing the notification parameters (if any). It should be + Casted to the correct data type corresponding to the notification type. +@see + m2m_crypto_init + tenuM2mCryptoCmd +*/ +typedef void (*tpfAppCryproCb) (uint8_t u8MsgType,void * pvResp, void * pvMsg); +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +FUNCTION PROTOTYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + + +#ifdef __cplusplus +extern "C" { +#endif + +/** +* @fn m2m_crypto_cb(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr) +* @brief WiFi call back function +* @param [in] u8OpCode +* HIF Opcode type. +* @param [in] u16DataSize +* HIF data length. +* @param [in] u32Addr +* HIF address. +* @author +* @date +* @version 1.0 +*/ +void m2m_crypto_cb(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr); + +/*! +@fn \ + int8_t m2m_crypto_init(); + +@brief crypto initialization. + +@param[in] pfAppCryproCb + Pointer to the Crypto Callback function receiving the crypto related messages. +@see + tpfAppCryproCb + +@return + The function returns @ref M2M_SUCCESS for successful operation and a negative value otherwise. +*/ +int8_t m2m_crypto_init(tpfAppCryproCb pfAppCryproCb); +/*! +@fn \ + int8_t m2m_sha256_hash_init(tstrM2mSha256Ctxt *psha256Ctxt); + +@brief SHA256 hash initialization + +@param[in] psha256Ctxt + Pointer to a sha256 context allocated by the caller. +@return + The function returns @ref M2M_SUCCESS for successful operation and a negative value otherwise. +*/ +int8_t m2m_crypto_sha256_hash_init(tstrM2mSha256Ctxt *psha256Ctxt); + + +/*! +@fn \ + int8_t m2m_sha256_hash_update(tstrM2mSha256Ctxt *psha256Ctxt, uint8_t *pu8Data, uint16_t u16DataLength); + +@brief SHA256 hash update + +@param [in] psha256Ctxt + Pointer to the sha256 context. + +@param [in] pu8Data + Buffer holding the data submitted to the hash. + +@param [in] u16DataLength + Size of the data buffer in bytes. +@pre SHA256 module should be initialized first through m2m_crypto_sha256_hash_init function. + +@see m2m_crypto_sha256_hash_init + +@return + The function returns @ref M2M_SUCCESS for successful operation and a negative value otherwise. + +*/ +int8_t m2m_crypto_sha256_hash_update(tstrM2mSha256Ctxt *psha256Ctxt, uint8_t *pu8Data, uint16_t u16DataLength); + + +/*! +@fn \ + int8_t m2m_sha256_hash_finish(tstrM2mSha256Ctxt *psha256Ctxt, uint8_t *pu8Sha256Digest); + +@brief SHA256 hash finalization + +@param[in] psha256Ctxt + Pointer to a sha256 context allocated by the caller. + +@param [in] pu8Sha256Digest + Buffer allocated by the caller which will hold the resultant SHA256 Digest. It must be allocated no less than M2M_SHA256_DIGEST_LEN. + +@return + The function returns @ref M2M_SUCCESS for successful operation and a negative value otherwise. +*/ +int8_t m2m_crypto_sha256_hash_finish(tstrM2mSha256Ctxt *psha256Ctxt, uint8_t *pu8Sha256Digest); + + +/*! +@fn \ + int8_t m2m_rsa_sign_verify(uint8_t *pu8N, uint16_t u16NSize, uint8_t *pu8E, uint16_t u16ESize, uint8_t *pu8SignedMsgHash, \ + uint16_t u16HashLength, uint8_t *pu8RsaSignature); + +@brief RSA Signature Verification + + The function shall request the RSA Signature verification from the WINC Firmware for the given message. The signed message shall be + compressed to the corresponding hash algorithm before calling this function. + The hash type is identified by the given hash length. For example, if the hash length is 32 bytes, then it is SHA256. + +@param[in] pu8N + RSA Key modulus n. + +@param[in] u16NSize + Size of the RSA modulus n in bytes. + +@param[in] pu8E + RSA public exponent. + +@param[in] u16ESize + Size of the RSA public exponent in bytes. + +@param[in] pu8SignedMsgHash + The hash digest of the signed message. + +@param[in] u16HashLength + The length of the hash digest. + +@param[out] pu8RsaSignature + Signature value to be verified. + +@return + The function returns @ref M2M_SUCCESS for successful operation and a negative value otherwise. +*/ +int8_t m2m_crypto_rsa_sign_verify(uint8_t *pu8N, uint16_t u16NSize, uint8_t *pu8E, uint16_t u16ESize, uint8_t *pu8SignedMsgHash, + uint16_t u16HashLength, uint8_t *pu8RsaSignature); + + +/*! +@fn \ + int8_t m2m_rsa_sign_gen(uint8_t *pu8N, uint16_t u16NSize, uint8_t *pu8d, uint16_t u16dSize, uint8_t *pu8SignedMsgHash, \ + uint16_t u16HashLength, uint8_t *pu8RsaSignature); + +@brief RSA Signature Generation + + The function shall request the RSA Signature generation from the WINC Firmware for the given message. The signed message shall be + compressed to the corresponding hash algorithm before calling this function. + The hash type is identified by the given hash length. For example, if the hash length is 32 bytes, then it is SHA256. + +@param[in] pu8N + RSA Key modulus n. + +@param[in] u16NSize + Size of the RSA modulus n in bytes. + +@param[in] pu8d + RSA private exponent. + +@param[in] u16dSize + Size of the RSA private exponent in bytes. + +@param[in] pu8SignedMsgHash + The hash digest of the signed message. + +@param[in] u16HashLength + The length of the hash digest. + +@param[out] pu8RsaSignature + Pointer to a user buffer allocated by the caller shall hold the generated signature. + +@return + The function returns @ref M2M_SUCCESS for successful operation and a negative value otherwise. +*/ +int8_t m2m_crypto_rsa_sign_gen(uint8_t *pu8N, uint16_t u16NSize, uint8_t *pu8d, uint16_t u16dSize, uint8_t *pu8SignedMsgHash, + uint16_t u16HashLength, uint8_t *pu8RsaSignature); +#ifdef __cplusplus +} +#endif + + +#endif /* __M2M_CRYPTO_H__ */ diff --git a/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_fwinfo.c b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_fwinfo.c new file mode 100644 index 0000000..6b3a767 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_fwinfo.c @@ -0,0 +1,133 @@ +/** + * + * \file + * + * \brief This module contains WINC firmware information APIs implementation. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "../driver/winc_adapter.h" +#include "../common/winc_defines.h" +#include "../common/winc_debug.h" +#include "../common/winc_registers.h" +#include "m2m_types.h" +#include "m2m_fwinfo.h" +#include "../driver/winc_asic.h" +#include "../driver/winc_spi.h" +#include "../spi_flash/spi_flash.h" + +static uint32_t winc_firmware_version_read_addr(void) +{ + uint32_t u32Reg; + tstrGpRegs strgp; + + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(NMI_GP_REG_2, &u32Reg)) + { + return 0; + } + + if (!u32Reg) + { + return 0; + } + + if (WINC_BUS_SUCCESS != winc_bus_read_block(u32Reg|0x30000, (uint8_t*)&strgp, sizeof(tstrGpRegs))) + { + return 0; + } + + return strgp.u32Firmware_Ota_rev; +} + +int_fast8_t m2m_fwinfo_version_check(tstrM2mRev* pstrRev) +{ + uint16_t curr_drv_ver, min_req_drv_ver, curr_firm_ver; + + if (NULL == pstrRev) + { + return M2M_ERR_INVALID_ARG; + } + + curr_firm_ver = M2M_MAKE_VERSION(pstrRev->u8FirmwareMajor, pstrRev->u8FirmwareMinor,pstrRev->u8FirmwarePatch); + curr_drv_ver = M2M_MAKE_VERSION(M2M_RELEASE_VERSION_MAJOR_NO, M2M_RELEASE_VERSION_MINOR_NO, M2M_RELEASE_VERSION_PATCH_NO); + min_req_drv_ver = M2M_MAKE_VERSION(pstrRev->u8DriverMajor, pstrRev->u8DriverMinor,pstrRev->u8DriverPatch); + + if ((curr_firm_ver == 0) || (min_req_drv_ver == 0)) + { + return M2M_ERR_INVALID_ARG; + } + + if(curr_drv_ver < min_req_drv_ver) + { + /*The current driver version should be larger or equal + than the min driver that the current firmware support */ + return M2M_ERR_FW_VER_MISMATCH; + } + + if(curr_drv_ver > curr_firm_ver) + { + /*The current driver should be equal or less than the firmware version*/ + return M2M_ERR_FW_VER_MISMATCH; + } + + return M2M_SUCCESS; +} + +int_fast8_t m2m_fwinfo_get_firmware_info(bool bMainImage, tstrM2mRev* pstrRev) +{ + uint32_t u32Reg; + + if (NULL == pstrRev) + { + return M2M_ERR_INVALID_ARG; + } + + memset(pstrRev, 0, sizeof(tstrM2mRev)); + + u32Reg = winc_firmware_version_read_addr() & 0xffff; + + if (!u32Reg) + { + return M2M_ERR_FAIL; + } + + if (bMainImage) + u32Reg &= 0xffff; + else u32Reg >>= 16; + + if (WINC_BUS_SUCCESS != winc_bus_read_block(u32Reg|0x30000, (uint8_t*)pstrRev, sizeof(tstrM2mRev))) + { + return M2M_ERR_FAIL; + } + + return M2M_SUCCESS; +} diff --git a/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_fwinfo.h b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_fwinfo.h new file mode 100644 index 0000000..de03bba --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_fwinfo.h @@ -0,0 +1,53 @@ +/** + * + * \file + * + * \brief This module contains WINC firmware information APIs declarations. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + + #ifndef _M2M_FWINFO_H_ + #define _M2M_FWINFO_H_ + +#ifdef __cplusplus + extern "C" { +#endif + +int_fast8_t m2m_fwinfo_version_check(tstrM2mRev* pstrRev); + +int_fast8_t m2m_fwinfo_get_firmware_info(bool bMainImage, tstrM2mRev* pstrRev); + +#ifdef __cplusplus + } +#endif + +#endif /* _WINCVER_H_ */ diff --git a/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_ota.c b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_ota.c new file mode 100644 index 0000000..d0970c4 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_ota.c @@ -0,0 +1,555 @@ +/** + * + * \file + * + * \brief WINC IoT OTA Interface. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +INCLUDES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +#include "../driver/winc_adapter.h" +#include "../common/winc_defines.h" +#include "../common/winc_debug.h" +#include "m2m_types.h" +#include "m2m_wifi.h" +#include "m2m_ota.h" +#include "m2m_fwinfo.h" +#include "../driver/winc_hif.h" +#include "../spi_flash/spi_flash.h" +#include "../spi_flash/spi_flash_map.h" +#include "../spi_flash/flexible_flash.h" + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +MACROS +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +DATA TYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ +static tpfOtaUpdateCb gpfOtaUpdateCb = NULL; +static tpfOtaNotifCb gpfOtaNotifCb = NULL; +static tpfFileGetCb gpfHFDGetCb = NULL; +static tpfFileReadCb gpfHFDReadCb = NULL; +static tpfFileEraseCb gpfHFDEraseCb = NULL; + +typedef struct { + uint32_t u32Offset; + uint32_t u32Size; +} FileBlockDescriptor; + +static FileBlockDescriptor FileBlock; + +static uint8_t gu8CurrFileHandlerID = HFD_INVALID_HANDLER; + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +FUNCTION PROTOTYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +/** +* @fn m2m_ota_cb(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr) +* @brief OTA call back function +* @param [in] u8OpCode +* HIF Opcode type. +* @param [in] u16DataSize +* HIF data length. +* @param [in] u32Addr +* HIF address. +*/ +void m2m_ota_cb(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr) +{ + UNUSED_VAR(u16DataSize); + + int8_t s8Ret = M2M_SUCCESS; + if(u8OpCode == M2M_OTA_RESP_NOTIF_UPDATE_INFO) + { + tstrOtaUpdateInfo strOtaUpdateInfo; + memset(&strOtaUpdateInfo,0,sizeof(tstrOtaUpdateInfo)); + s8Ret = winc_hif_receive(u32Addr, &strOtaUpdateInfo, sizeof(tstrOtaUpdateInfo)); + if(s8Ret == M2M_SUCCESS) + { + if(gpfOtaNotifCb) + gpfOtaNotifCb(&strOtaUpdateInfo); + } + } + else if (u8OpCode == M2M_OTA_RESP_UPDATE_STATUS) + { + tstrOtaUpdateStatusResp strOtaUpdateStatusResp; + memset(&strOtaUpdateStatusResp,0,sizeof(tstrOtaUpdateStatusResp)); + s8Ret = winc_hif_receive(u32Addr, &strOtaUpdateStatusResp, sizeof(tstrOtaUpdateStatusResp)); + if(s8Ret == M2M_SUCCESS) + { + if(gpfOtaUpdateCb) + gpfOtaUpdateCb(strOtaUpdateStatusResp.u8OtaUpdateStatusType,strOtaUpdateStatusResp.u8OtaUpdateStatus); + } + } + else if (u8OpCode == M2M_OTA_RESP_HOST_FILE_STATUS) + { + tstrOtaHostFileGetStatusResp strOtaHostFileGetStatusResp = {0}; + s8Ret = winc_hif_receive(u32Addr, &strOtaHostFileGetStatusResp, sizeof(tstrOtaHostFileGetStatusResp)); + if(M2M_SUCCESS == s8Ret) + { + if(strOtaHostFileGetStatusResp.u8OtaFileGetStatus == OTA_STATUS_SUCCESS) { + gu8CurrFileHandlerID = strOtaHostFileGetStatusResp.u8CFHandler; + } + } + } + else if (u8OpCode == M2M_OTA_RESP_HOST_FILE_DOWNLOAD) + { + tstrOtaHostFileGetStatusResp strOtaHostFileGetStatusResp = {0}; + s8Ret = winc_hif_receive(u32Addr, &strOtaHostFileGetStatusResp, sizeof(tstrOtaHostFileGetStatusResp)); + if(M2M_SUCCESS == s8Ret) + { + if(strOtaHostFileGetStatusResp.u8OtaFileGetStatus == OTA_STATUS_SUCCESS) { + gu8CurrFileHandlerID = strOtaHostFileGetStatusResp.u8CFHandler; + WINC_LOG_INFO("Generated HostFileHandlerID is %u", gu8CurrFileHandlerID); + } + + if(gpfHFDGetCb) { + gpfHFDGetCb(strOtaHostFileGetStatusResp.u8OtaFileGetStatus, gu8CurrFileHandlerID, strOtaHostFileGetStatusResp.u32OtaFileSize); + gpfHFDGetCb = NULL; + } + } + } + else if (u8OpCode == M2M_OTA_RESP_HOST_FILE_READ) + { + tstrOtaHostFileReadStatusResp strOtaHostFileReadStatusResp; + memset(&strOtaHostFileReadStatusResp, 0, sizeof(tstrOtaHostFileReadStatusResp)); + s8Ret = winc_hif_receive(u32Addr, &strOtaHostFileReadStatusResp, sizeof(tstrOtaHostFileReadStatusResp)); + if(M2M_SUCCESS == s8Ret) + if(gpfHFDReadCb) + gpfHFDReadCb(strOtaHostFileReadStatusResp.u8OtaFileReadStatus, strOtaHostFileReadStatusResp.pFileBuf, strOtaHostFileReadStatusResp.u16FileBlockSz); + } + else if (u8OpCode == M2M_OTA_RESP_HOST_FILE_ERASE) + { + tstrOtaHostFileEraseStatusResp strOtaHostFileEraseStatusResp = {0}; + s8Ret = winc_hif_receive(u32Addr, &strOtaHostFileEraseStatusResp, sizeof(tstrOtaHostFileEraseStatusResp)); + if(M2M_SUCCESS == s8Ret) + { + if(gpfHFDEraseCb) + { + gpfHFDEraseCb(strOtaHostFileEraseStatusResp.u8OtaFileEraseStatus); + gpfHFDEraseCb = NULL; + } + } + } + else + { + WINC_LOG_ERROR("Invalid OTA resp %u",u8OpCode); + } +} +/*! +@fn \ + int8_t m2m_ota_init(tpfOtaUpdateCb pfOtaUpdateCb, tpfOtaNotifCb pfOtaNotifCb); + +@brief + Initialize the OTA layer. + +@param [in] pfOtaUpdateCb + OTA Update callback function + +@param [in] pfOtaNotifCb + OTA Notify callback function + +@return + The function SHALL return 0 for success and a negative value otherwise. +*/ +int8_t m2m_ota_init(tpfOtaUpdateCb pfOtaUpdateCb, tpfOtaNotifCb pfOtaNotifCb) +{ + gpfOtaUpdateCb = pfOtaUpdateCb; + gpfOtaNotifCb = pfOtaNotifCb; + + return winc_hif_send_no_data(M2M_REQ_GROUP_OTA, M2M_OTA_REQ_HOST_FILE_STATUS, NULL, 0); +} +/*! +@fn \ + int8_t m2m_ota_notif_set_url(uint8_t * u8Url); + +@brief + Set the OTA url + +@param [in] u8Url + The url server address + +@return + The function SHALL return 0 for success and a negative value otherwise. +*/ +int8_t m2m_ota_notif_set_url(uint8_t * u8Url) +{ + int8_t ret = M2M_SUCCESS; + uint16_t u16UrlSize = (uint16_t)strlen((const char*)u8Url) + 1; + /*Todo: we may change it to data pkt but we need to give it higher priority + but the priority is not implemented yet in data pkt + */ + ret = winc_hif_send_no_data(M2M_REQ_GROUP_OTA, M2M_OTA_REQ_NOTIF_SET_URL, u8Url, u16UrlSize); + return ret; + +} + +/*! +@fn \ + int8_t m2m_ota_notif_check_for_update(void); + +@brief + check for OTA update + +@return + The function SHALL return 0 for success and a negative value otherwise. +*/ +int8_t m2m_ota_notif_check_for_update(void) +{ + int8_t ret = M2M_SUCCESS; + ret = winc_hif_send_no_data(M2M_REQ_GROUP_OTA, M2M_OTA_REQ_NOTIF_CHECK_FOR_UPDATE, NULL, 0); + return ret; +} + +/*! +@fn \ + int8_t m2m_ota_notif_sched(uint32_t u32Period); + +@brief + Schedule OTA update + +@param [in] u32Period + Period in days + +@return + The function SHALL return 0 for success and a negative value otherwise. +*/ +int8_t m2m_ota_notif_sched(uint32_t u32Period) +{ + UNUSED_VAR(u32Period); + + int8_t ret = M2M_SUCCESS; + ret = winc_hif_send_no_data(M2M_REQ_GROUP_OTA, M2M_OTA_REQ_NOTIF_CHECK_FOR_UPDATE, NULL, 0); + return ret; +} + +/*! +@fn \ + int8_t m2m_ota_start_update(unsigned char * pcDownloadUrl); + +@brief + Request OTA start update using the downloaded url + +@param [in] pcDownloadUrl + The download firmware url, you get it from device info + +@return + The function SHALL return 0 for success and a negative value otherwise. + +*/ +int8_t m2m_ota_start_update(unsigned char * pcDownloadUrl) +{ + int8_t ret = M2M_SUCCESS; + uint16_t u16DurlSize = (uint16_t)strlen((const char*)pcDownloadUrl) + 1; + /*Todo: we may change it to data pkt but we need to give it higher priority + but the priority is not implemented yet in data pkt + */ + ret = winc_hif_send_no_data(M2M_REQ_GROUP_OTA, M2M_OTA_REQ_START_FW_UPDATE, pcDownloadUrl, u16DurlSize); + return ret; +} + +/*! +@fn \ + int8_t m2m_ota_rollback(void); + +@brief + Request OTA Rollback image + +@return + The function SHALL return 0 for success and a negative value otherwise. +*/ +int8_t m2m_ota_rollback(void) +{ + int8_t ret = M2M_SUCCESS; + ret = winc_hif_send_no_data(M2M_REQ_GROUP_OTA, M2M_OTA_REQ_ROLLBACK_FW, NULL, 0); + return ret; +} + +/*! +@fn \ + int8_t m2m_ota_abort(void); + +@brief + Request OTA Abort + +@return + The function SHALL return 0 for success and a negative value otherwise. +*/ +int8_t m2m_ota_abort(void) +{ + int8_t ret = M2M_SUCCESS; + ret = winc_hif_send_no_data(M2M_REQ_GROUP_OTA, M2M_OTA_REQ_ABORT, NULL, 0); + return ret; +} + + +/*! +@fn \ + int8_t m2m_ota_switch_firmware(void); + +@brief + Switch to the upgraded Firmware + +@return + The function SHALL return 0 for success and a negative value otherwise. +*/ +int8_t m2m_ota_switch_firmware(void) +{ + int8_t ret = M2M_SUCCESS; + ret = winc_hif_send_no_data(M2M_REQ_GROUP_OTA, M2M_OTA_REQ_SWITCH_FIRMWARE, NULL, 0); + return ret; +} + +/*! +@fn \ + int8_t m2m_ota_get_firmware_version(tstrM2mRev * pstrRev); + +@brief + Get the OTA Firmware version. + +@return + The function SHALL return 0 for success and a negative value otherwise. +*/ +int8_t m2m_ota_get_firmware_version(tstrM2mRev * pstrRev) +{ + int8_t ret; + + ret = winc_hif_chip_wake(); + if(ret != M2M_SUCCESS) + return ret; + + ret = m2m_fwinfo_get_firmware_info(false, pstrRev); + winc_hif_chip_sleep(); + + if(ret != M2M_SUCCESS) + return ret; + + return m2m_fwinfo_version_check(pstrRev); +} +/*! +@fn \ + m2m_ota_host_file_get(unsigned char *pcDownloadUrl, tpfFileGetCb pfHFDGetCb); + +@brief + Download a file from a remote location and store it in the WINC's Flash. + +@param[in] pcDownloadUrl + Url pointing to the remote file. HTTP/HTTPS only. + +@param[in] pfHFDGetCb + Pointer to a callback to be executed when the download finishes. + +@return + Status of the get operation + +@warning 1. Providing a callback is mandatory. + 2. This functionality is only supported from WINC release 19.6.0 onwards. +*/ +int8_t m2m_ota_host_file_get(unsigned char *pcDownloadUrl, tpfFileGetCb pfHFDGetCb) +{ + int8_t s8Ret = M2M_ERR_FAIL; + uint16_t u16DUrlSize = (uint16_t)strlen((const char*)pcDownloadUrl); + + if((NULL == pfHFDGetCb) || (0 == u16DUrlSize)) + { + WINC_LOG_ERROR("Invalid parameters."); + goto EXIT; + } + + if('\0' != pcDownloadUrl[u16DUrlSize]) + pcDownloadUrl[u16DUrlSize] = '\0'; + else + u16DUrlSize++; + + WINC_LOG_INFO("GetHostFile - URL: %s, urlSize: %u", pcDownloadUrl, u16DUrlSize); + + s8Ret = winc_hif_send_no_data(M2M_REQ_GROUP_OTA, M2M_OTA_REQ_HOST_FILE_DOWNLOAD, pcDownloadUrl, u16DUrlSize); + if(s8Ret == M2M_SUCCESS) + { + gpfHFDGetCb = pfHFDGetCb; + gu8CurrFileHandlerID = HFD_INVALID_HANDLER; + } + +EXIT: + return s8Ret; +} + +/*! +@fn \ + m2m_ota_host_file_read_hif(uint8_t u8Handler, uint32_t u32Offset, uint32_t u32Size, tpfFileReadCb pfHFDReadCb); +@brief + Read a certain amount of bytes from a file in WINC's Flash using HIF transfer. + +@param[in] u8Handler + ID of the file we are trying to read from. Must be valid. + +@param[in] u32Offset + Offset from start of the file to read from (in bytes). + +@param[in] u32Size + The amount of data to read (in bytes). + +@param[in] pfHFDReadCb + Callback to be executed when the read operation completes. + +@return + Status of the read operation + +@warning 1. Providing a callback is mandatory. + 2. This functionality is only supported from WINC release 19.6.0 onwards. +*/ +int8_t m2m_ota_host_file_read_hif(uint8_t u8Handler, uint32_t u32Offset, uint32_t u32Size, tpfFileReadCb pfHFDReadCb) +{ + int8_t s8Ret = M2M_ERR_INVALID_ARG; + FileBlock.u32Offset = u32Offset; + FileBlock.u32Size = u32Size; + + if((u8Handler != gu8CurrFileHandlerID) || (HFD_INVALID_HANDLER == gu8CurrFileHandlerID) || (NULL == pfHFDReadCb)) goto EXIT; + s8Ret = winc_hif_send_no_data(M2M_REQ_GROUP_OTA, M2M_OTA_REQ_HOST_FILE_READ, &FileBlock, sizeof(FileBlockDescriptor)); + + if(M2M_SUCCESS == s8Ret) + gpfHFDReadCb = pfHFDReadCb; +EXIT: + return s8Ret; +} + +/*! +@fn \ + m2m_ota_host_file_read_spi(uint8_t u8Handler, uint8_t *pu8Buff, uint32_t u32Offset, uint32_t u32Size); +@brief + Read a certain amount of bytes from a file in WINC's Flash using SPI transfer. + +@param[in] u8Handler + ID of the file we are trying to read from. Must be valid. + +@param[in] pu8Buff + Pointer to a buffer to store the data being read. Must be valid. + +@param[in] u32Offset + Offset from start of the file to read from (in bytes). + +@param[in] u32Size + The amount of data to read (in Bytes). + +@return + Status of the read operation + +@warning 1. Before using m2m_ota_host_file_read_spi, the WINC needs to be put in a special + mode to allow for a safe access to the Flash. This can be done by calling + @ref m2m_wifi_download_mode or @ref m2m_wifi_reinit_hold before trying to read. + + 2. This functionality is only supported from WINC release 19.6.0 onwards. +*/ +int8_t m2m_ota_host_file_read_spi(uint8_t u8Handler, uint8_t *pu8Buff, uint32_t u32Offset, uint32_t u32Size) +{ + static uint32_t u32FlashHFDStart = 0; + static uint32_t u32FlashHFDSize = 0; + int8_t s8Ret = M2M_ERR_INVALID_ARG; + if((u8Handler == HFD_INVALID_HANDLER) || (NULL == pu8Buff)) goto EXIT; + + if(WIFI_STATE_INIT != m2m_wifi_get_state()) + { + s8Ret = M2M_ERR_FAIL; + WINC_LOG_ERROR("WINC is not in an appropriate state for this operation!"); + goto EXIT; + } + + if((u32FlashHFDStart == 0) || (u32FlashHFDSize == 0)) + { + s8Ret = spi_flexible_flash_find_section(ENTRY_ID_HOSTFILE, &u32FlashHFDStart, &u32FlashHFDSize); + if(M2M_SUCCESS != s8Ret) goto EXIT; + } + + s8Ret = spi_flash_read(pu8Buff, u32FlashHFDStart, 4); + + if((M2M_SUCCESS != s8Ret) || (pu8Buff[0] != u8Handler)) goto EXIT; + + if((u32Offset >= u32FlashHFDSize) || + (u32Size > u32FlashHFDSize) || + ((u32Offset + u32Size) >= u32FlashHFDSize)) + { + s8Ret = M2M_ERR_FAIL; + goto EXIT; + } + + s8Ret = spi_flash_read(pu8Buff, u32FlashHFDStart + FLASH_SECTOR_SZ + u32Offset, u32Size); + + if(M2M_SUCCESS != s8Ret) + { + WINC_LOG_ERROR("Unable to read SPI Flash"); + } + +EXIT: + return s8Ret; +} + +/*! +@fn \ + m2m_ota_host_file_erase(uint8_t u8Handler, tpfFileEraseCb pfHFDEraseCb); +@brief + Erase any traces of an existing file, this means from host driver and WINC firmware. + +@param[in] u8Handler + ID of the file we are trying to erase. Must be valid. + +@param[in] pfHFDEraseCb + Pointer to callback to execute when the file erase in the WINC completes. + +@return + Status of the erase operation + +@note Providing a callback is optional. + If the current handler is invalid at this point, it means one of the three: + 1. The file never existed; + 2. The file has already been already deleted; + 3. The request to get the file hasn't fully completed. + For 1. and 2. there is no need to signal the WINC to erase the file in Flash. + For 3. the Flash can't be erased while a file download is ongoing. + +@warning This functionality is only supported from WINC release 19.6.0 onwards. +*/ +int8_t m2m_ota_host_file_erase(uint8_t u8Handler, tpfFileEraseCb pfHFDEraseCb) +{ + int8_t s8Ret = M2M_ERR_INVALID_ARG; + if((u8Handler != gu8CurrFileHandlerID) || (HFD_INVALID_HANDLER == gu8CurrFileHandlerID)) goto EXIT; + + gu8CurrFileHandlerID = HFD_INVALID_HANDLER; + gpfHFDReadCb = NULL; + gpfHFDEraseCb = pfHFDEraseCb; + + s8Ret = winc_hif_send_no_data(M2M_REQ_GROUP_OTA, M2M_OTA_REQ_HOST_FILE_ERASE, NULL, 0); +EXIT: + return s8Ret; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_ota.h b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_ota.h new file mode 100644 index 0000000..449bc7f --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_ota.h @@ -0,0 +1,797 @@ +/** + * + * \file + * + * \brief WINC OTA Upgrade API Interface. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +/**@defgroup OTAAPI OTA + @brief + The WINC supports OTA (Over-The-Air) updates. Using the APIs described in this module, + it is possible to request an ATWINC15x0 to update its firmware, or safely rollback to + the previous firmware version.\n There are also APIs to download files and store them in + the WINC's Flash (supported by ATWINC1510 only), which can be used for Host MCU OTA + updates or accessing information stored remotely. + @{ + @defgroup OTACALLBACKS Callbacks + @brief + Lists the different callbacks that can be used during OTA updates.\n + Callbacks of type @ref tpfOtaNotifCb and @ref tpfOtaUpdateCb should be passed + onto @ref m2m_ota_init at system initialization. Other callbacks are provided + to handle the various steps of Host File Download. + + @defgroup OTADEFINE Defines + @brief + Specifies the macros and defines used by the OTA APIs. + + @defgroup OTATYPEDEF Enumerations and Typedefs + @brief + Specifies the enums and Data Structures used by the OTA APIs. + + @defgroup OTAFUNCTIONS Functions + @brief + Lists the full set of available APIs to manage OTA updates and Host File Downloads. + @{ + @defgroup OTACOMMON Common + @defgroup WINCOTA WINC + @defgroup HFD HFD + @} + @} +*/ + +#ifndef __M2M_OTA_H__ +#define __M2M_OTA_H__ + + +/**@addtogroup OTACALLBACKS + * @{ + */ +/*! +@typedef void (*tpfOtaNotifCb) (tstrOtaUpdateInfo *pstrOtaUpdateInfo); + +@brief + A callback to get notification about a potential OTA update. + +@param[in] pstrOtaUpdateInfo + A structure to provide notification payload. + +@sa + tstrOtaUpdateInfo + +@warning + The notification is not supported (Not implemented yet) +*/ +typedef void (*tpfOtaNotifCb)(tstrOtaUpdateInfo *pstrOtaUpdateInfo); + +/*! +@typedef void (*tpfOtaUpdateCb)(uint8_t u8OtaUpdateStatusType, uint8_t u8OtaUpdateStatus); + +@brief + A callback to get OTA status update, the callback provides the status type and its status.\n + The OTA callback provides the download status, the switch to the downloaded firmware status, + roll-back status and Host File Download status. + +@param[in] u8OtaUpdateStatusType + Possible values are listed in @ref tenuOtaUpdateStatusType. + +@param[in] u8OtaUpdateStatus + Possible values are listed as enumerated by @ref tenuOtaUpdateStatus. + +@note + Executes other callbacks passed to the OTA module. + +@see + tenuOtaUpdateStatusType + tenuOtaUpdateStatus + */ +typedef void (*tpfOtaUpdateCb)(uint8_t u8OtaUpdateStatusType, uint8_t u8OtaUpdateStatus); + +/*! +@typedef void (*tpfFileGetCb) (uint8_t u8Status, uint8_t u8Handler, uint32_t u32Size); + +@brief + A callback to notify the application of the result of the download (success/fail), + the generated handler ID and the size of the file which has just finished + downloading (size expressed in bytes). + +@param[in] u8Status + Status of the operation (see @ref tenuOtaUpdateStatus). + +@param[in] u8Handler + Generated handler ID for the new file. + +@param[in] u32Size + Total size of the downloaded file (in bytes). + +@warning + The file handler passed onto this callback will be the valid file handler generated + by the WINC when the download finished successfully. This handler will be required + for all operations on the file like read and erase. + */ +typedef void (*tpfFileGetCb)(uint8_t u8Status, uint8_t u8Handler, uint32_t u32Size); + +/*! +@typedef void (*tpfFileReadCb) (uint8_t u8Status, void *pBuff, uint32_t u32Size); + +@brief + A callback to handle a buffer of data after requesting a Host File read. + The callback will provide the status of the read operation and if successful, + a pointer to a valid placeholder containing the data read and the amount of + data available. Such callback is required when using Host File read via the HIF. + +@param[in] u8Status + Status of the operation (see @ref tenuOtaUpdateStatus). + +@param[in] pBuff + Pointer to a placeholder where the data can be retrieved from. + +@param[in] u32Size + Amount of data available after reading (in bytes). + +@warning + After the callback is executed, pBuff will be freed. + */ +typedef void (*tpfFileReadCb)(uint8_t u8Status, void *pBuff, uint32_t u32Size); + +/*! +@typedef void (*tpfFileEraseCb) (uint8_t u8Status); + +@brief + A callback executed when the file erase has been completed. + +@param[in] u8Status + Status of the operation (see @ref tenuOtaUpdateStatus). + */ +typedef void (*tpfFileEraseCb)(uint8_t u8Status); +/**@}*/ //OTACALLBACKS + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +FUNCTION PROTOTYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +#ifdef __cplusplus +extern "C" { +#endif + +/** +* @fn m2m_ota_cb(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr) +* @brief OTA call back function +* @param [in] u8OpCode +* HIF Opcode type. +* @param [in] u16DataSize +* HIF data length. +* @param [in] u32Addr +* HIF address. +*/ +void m2m_ota_cb(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr); + +/*! +@ingroup OTACOMMON +@fn \ + int8_t m2m_ota_init(tpfOtaUpdateCb pfOtaUpdateCb, tpfOtaNotifCb pfOtaNotifCb); + +@brief + Synchronous initialization function for the OTA layer by registering the update callback.\n + The notification callback is not supported at the current version. Calling this API is a + MUST for all the OTA API's. + +@param[in] pfOtaUpdateCb + OTA Update callback function. + +@param[in] pfOtaNotifCb + OTA Notify callback function. + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. +*/ +int8_t m2m_ota_init(tpfOtaUpdateCb pfOtaUpdateCb, tpfOtaNotifCb pfOtaNotifCb); + +/*! +@ingroup WINCOTA +@fn \ + int8_t m2m_ota_notif_set_url(uint8_t *u8Url); + +@brief + Set the OTA notification server URL, the function needs to be called before any check for update.\n + This functionality is not supported by WINC firmware. + +@param[in] u8Url + Set the OTA notification server URL, the function needs to be called before any check for update. + +@pre + Prior calling of @ref m2m_ota_init is required. + +@warning + Notification Server is not supported in the current version (function is not implemented). + +@see + m2m_ota_init + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. +*/ +int8_t m2m_ota_notif_set_url(uint8_t *u8Url); + +/*! +@ingroup WINCOTA +@fn \ + int8_t m2m_ota_notif_check_for_update(void); + +@brief + Synchronous function to check for the OTA update using the Notification Server URL.\n + Function is not implemented (not supported at the current version). + +@warning + Function is not implemented (not supported at the current version). + +@sa + m2m_ota_init + m2m_ota_notif_set_url + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. +*/ +int8_t m2m_ota_notif_check_for_update(void); + +/*! +@ingroup WINCOTA +@fn \ + int8_t m2m_ota_notif_sched(uint32_t u32Period); + +@brief + Schedule OTA notification Server check for update request after specific number of days.\n + Function is not implemented (not supported at the current version). + +@param[in] u32Period + Period in days + +@warning + Function is not implemented (not supported at the current version). + +@sa + m2m_ota_init + m2m_ota_notif_check_for_update + m2m_ota_notif_set_url + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. +*/ +int8_t m2m_ota_notif_sched(uint32_t u32Period); + +/*! +@ingroup WINCOTA +@fn \ + int8_t m2m_ota_start_update(unsigned char *pcDownloadUrl); + +@brief + Request OTA start update using the download URL. The OTA module will download the OTA image, ensure integrity of the image + and update the validity of the image in the control structure. On completion, a callback of type @ref tpfOtaUpdateCb is called + (callback previously provided via @ref m2m_ota_init). Switching to the updated image additionally requires completion of + @ref m2m_ota_switch_firmware, followed by a WINC reset. + +@param[in] pcDownloadUrl + The download firmware URL, according to the application server. + +@warning + Calling this API does not guarantee OTA WINC image update, it depends on the connection with the + download server and the validity of the image.\n + Calling this API invalidates any previous valid rollback image, irrespective of the result, but when + the OTA succeeds, the current image will become the rollback image after @ref m2m_ota_switch_firmware. + +@pre + @ref m2m_ota_init is a prerequisite and must have been called before using @ref m2m_ota_start_update.\n + Switching to the newly downloaded image requires calling @ref m2m_ota_switch_firmware API. + +@sa + @ref m2m_ota_init + @ref m2m_ota_switch_firmware + @ref tpfOtaUpdateCb + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. + Note that successful operation in this context means the OTA update request has reached the firmware OTA module. + It does not indicate whether or not the image update succeeded. + +@section OTAExample Example + This example shows how an OTA image update and switch is carried out. + It demonstrates use of the following OTA APIs: + - @ref m2m_ota_init + - @ref tpfOtaUpdateCb + - @ref m2m_ota_start_update + - @ref m2m_ota_switch_firmware + - @ref m2m_ota_rollback + +@code +static void OtaUpdateCb(uint8_t u8OtaUpdateStatusType, uint8_t u8OtaUpdateStatus) +{ + WINC_LOG_INFO("%d %d", u8OtaUpdateStatusType, u8OtaUpdateStatus); + switch(u8OtaUpdateStatusType) + { + case DL_STATUS: + if(u8OtaUpdateStatus == OTA_STATUS_SUCCESS) + { + WINC_LOG_INFO("OTA download succeeded"); + + // In this case the application MAY WANT TO update the host driver before calling + // @ref m2m_ota_switch_firmware(). Switching firmware image and resetting without + // updating host driver may lead to suboptimal functionality. + + // Switch to the upgraded firmware + WINC_LOG_INFO("Now switching active partition..."); + m2m_ota_switch_firmware(); + } + break; + case SW_STATUS: + case RB_STATUS: + if(u8OtaUpdateStatus == OTA_STATUS_SUCCESS) + { + WINC_LOG_INFO("Switch/Rollback succeeded"); + + // Start the host SW upgrade if required, then system reset is required (Reinitialize the driver) + + WINC_LOG_INFO("Now resetting the system..."); + } + break; + } +} + +static void wifi_event_cb(uint8_t u8WiFiEvent, const void *const pvMsg) +{ + // ... + case M2M_WIFI_REQ_DHCP_CONF: + { + // After successful connection, start the OTA upgrade + m2m_ota_start_update(OTA_URL); + } + break; + default: + break; + // ... +} + +int main(void) +{ + tstrWifiInitParam param; + int8_t s8Ret = M2M_SUCCESS; + bool rollback_required = false; + tstr1xAuthCredentials gstrCred1x = AUTH_CREDENTIALS; + + // System init, etc should be here... + + memset(¶m, 0, sizeof(param)); + param.pfAppWifiCb = wifi_event_cb; + + // Initialize the WINC Driver + s8Ret = m2m_wifi_init(¶m); + if(s8Ret == M2M_ERR_FW_VER_MISMATCH) + { + WINC_LOG_ERROR("Firmware version mismatch"); + } + if (M2M_SUCCESS != s8Ret) + { + WINC_LOG_ERROR("Driver Init Failed <%d>", s8Ret); + while(1); + } + // Initialize the OTA module + m2m_ota_init(OtaUpdateCb, NULL); + + // Connect to AP that provides connection to the OTA server + m2m_wifi_default_connect(); + + while(1) + { + // Handle the app state machine plus the WINC event handler + while(m2m_wifi_handle_events(NULL) != M2M_SUCCESS) { + } + } +} +@endcode +*/ +int8_t m2m_ota_start_update(unsigned char *pcDownloadUrl); + +/*! +@ingroup WINCOTA +@fn \ + int8_t m2m_ota_rollback(void); + +@brief + Request OTA Roll-back to the old (inactive) WINC image, the WINC firmware will check the validity of the inactive image + and activate it if valid. On completion, a callback of type @ref tpfOtaUpdateCb is called (application must previously have + provided the callback via @ref m2m_ota_init). If the callback indicates successful activation, the newly-activated image + will start running after next system reset. + +@warning + If rollback requires a host driver update in order to maintain HIF compatibility (HIF + major value change), then it is recommended to update the host driver prior to calling this API.\n + In the event of system reset with incompatible driver/firmware, compatibility can be + recovered by calling @ref m2m_ota_rollback or @ref m2m_ota_switch_firmware. See @ref OTAExample. + +@sa + m2m_ota_init + m2m_ota_start_update + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. +*/ +int8_t m2m_ota_rollback(void); + +/*! +@ingroup OTACOMMON +@fn \ + int8_t m2m_ota_abort(void); + +@brief + Request the WINC to abort an OTA or Host File download in progress.\n + If no download is in progress, the API will respond with failure. + +@sa + m2m_ota_init + m2m_ota_start_update + +@return + The function returns @ref M2M_SUCCESS for a successful operation and a negative value otherwise. +*/ +int8_t m2m_ota_abort(void); + +/*! +@ingroup WINCOTA +@fn \ + int8_t m2m_ota_switch_firmware(void); + +@brief + Request switch to the updated WINC image. The WINC firmware will check the validity of the + inactive image and activate it if valid. On completion, a callback of type @ref tpfOtaUpdateCb + is called (application must previously have provided the callback via @ref m2m_ota_init). + If the callback indicates successful activation, the newly-activated image will start running + after next system reset. + +@warning + If switch requires a host driver update in order to maintain HIF compatibility (HIF + major value change), then it is recommended to update the host driver prior to calling this API.\n + In the event of system reset with incompatible driver/firmware, compatibility can be + recovered by calling @ref m2m_ota_rollback or @ref m2m_ota_switch_firmware. See @ref OTAExample. + +@sa + m2m_ota_init + m2m_ota_start_update + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. +*/ +int8_t m2m_ota_switch_firmware(void); + +/*! +@ingroup HFD +@fn \ + int8_t m2m_ota_host_file_get(unsigned char *pcDownloadUrl, tpfFileGetCb pfHFDGetCb); + +@brief + Download a file from a remote location and store it in WINC's Flash. + +@param[in] pcDownloadUrl + Url pointing to the remote file. HTTP/HTTPS only. + +@param[in] pfHFDGetCb + Pointer to a callback (see @ref tpfFileGetCb) to be executed when the download finishes. + +@return + The function SHALL return @ref M2M_SUCCESS for success and a negative value otherwise. + +@pre + Requires @ref m2m_ota_init to be called before a download can start. + +@warning + This functionality is only supported from WINC release 19.6.1 onwards. + The maximum file size that can be stored in WINC1510 is 508KB, the + WINC1500 variant is not supported for Host File Download.\n + Concurrent use of Host File Get and WINC OTA is not possible.\n + Providing a callback is mandatory. + +@sa + m2m_ota_init + tpfFileGetCb +*/ +int8_t m2m_ota_host_file_get(unsigned char *pcDownloadUrl, tpfFileGetCb pfHFDGetCb); + +/*! +@ingroup HFD +@fn \ + int8_t m2m_ota_host_file_read_hif(uint8_t u8Handler, uint32_t u32Offset, uint32_t u32Size, tpfFileReadCb pfHFDReadCb); + +@brief + Read a certain amount of bytes from a file previously stored in WINC's Flash using HIF transfer. + +@param[in] u8Handler + Handler of the file we are trying to read from. Must be valid. + +@param[in] u32Offset + Offset from start of the file to read from (in bytes). + +@param[in] u32Size + The amount of data to read (in bytes). + +@param[in] pfHFDReadCb + Callback (see @ref tpfFileReadCb) to be executed when the read operation completes. + +@return + The function SHALL return @ref M2M_SUCCESS for success and a negative value otherwise. + +@pre + Requires @ref m2m_ota_init to be called before a read via HIF can be requested. + +@warning + There is a limitation on how much data can be transferred at a time using HIF read, which is 128 bytes. + The limitation described above can potentially reduce the speed of the read due to extra overhead, but + using the HIF is non-blocking and therefore the Application can continue execution as normal, being + interrupted only when data is available. Another advantage is that it does not require the WINC to be + reset or put in download mode, as it is the case for reading the file via SPI (see @ref m2m_ota_host_file_read_spi).\n + A valid file handler must be provided, this means that it needs to match the handler internally stored + by the WINC and must not be @ref HFD_INVALID_HANDLER.\n + Providing a callback is mandatory. + +@note + When calling this API while specifying a size > 128 bytes, the read will be limited to the first 128 bytes + starting at the read offset. It it recommended that a read for sizes above 128 bytes is performed in + multiple steps, using the callback to advance the offset and request another read of 128 bytes (or less) each time. + +@sa + m2m_ota_init + m2m_ota_host_file_get + tpfFileReadCb +*/ +int8_t m2m_ota_host_file_read_hif(uint8_t u8Handler, uint32_t u32Offset, uint32_t u32Size, tpfFileReadCb pfHFDReadCb); + +/*! +@ingroup HFD +@fn \ + int8_t m2m_ota_host_file_read_spi(uint8_t u8Handler, uint8_t *pu8Buff, uint32_t u32Offset, uint32_t u32Size); + +@brief + Read a certain amount of bytes from a file in WINC's Flash using SPI transfer. + +@param[in] u8Handler + Handler of the file we are trying to read from. Must be valid. + +@param[in] pu8Buff + Pointer to a buffer to store the data being read. Must not be NULL. + +@param[in] u32Offset + Offset from start of the file to read from (in bytes). + +@param[in] u32Size + The amount of data to read (in Bytes). + +@return + The function SHALL return @ref M2M_SUCCESS for success and a negative value otherwise. + +@warning + Reading of a file via SPI can be much faster than by reading it via the HIF. However, the read will + be blocking and it will require the WINC to be put into download mode prior to the read, the download + mode means that the WINC will act as Flash device and not as a Wifi device. So, before using + m2m_ota_host_file_read_spi, the Application should call @ref m2m_wifi_download_mode before trying to + read. After the read finishes, the WINC needs to be reset.\n + A valid file handler must be provided, this means that it needs to match the handler internally stored + by the WINC and must not be @ref HFD_INVALID_HANDLER. + +@sa + m2m_ota_init + m2m_ota_host_file_get + +\section Host File Download SPI Read Example +The following is an example of how to perform a read file from the WINC via SPI. +@code +typedef struct { + uint8_t u8Handler; + uint32_t u32Offset; + uint32_t u32Size; + uint8_t au8Buff[200]; +}FileDescriptor; + +tstrWifiInitParam gstrWifiParam; +static FileDescriptor gstrAppFile; + +char *acURL = "http://www.microchip.com/_images/ics/medium-ATWINC1500-MODULE-28.png"; + +static void ReadFileSPI(void); +static void wifi_event_cb(uint8_t u8WiFiEvent, void * pvMsg); +static void FileGetCallback(uint8_t u8Status, uint8_t u8Handler, uint32_t u32Size); +static void OtaUpdateCb(uint8_t u8OtaUpdateStatusType ,uint8_t u8OtaUpdateStatus); + +static void wifi_event_cb(uint8_t u8WiFiEvent, void * pvMsg) +{ + case M2M_WIFI_REQ_DHCP_CONF: + { + // After successfully connection, start the File Download + gstrAppFile.u32Offset = 0; + s8Ret = m2m_ota_host_file_get(acURL, FileGetCallback); + if(s8Ret != M2M_SUCCESS) + { + WINC_LOG_ERROR("File Download Failed!"); + } + } + break; + default: + break; +} + +static void OtaUpdateCb(uint8_t u8OtaUpdateStatusType ,uint8_t u8OtaUpdateStatus) +{ + WINC_LOG_INFO("%d %d",u8OtaUpdateStatusType,u8OtaUpdateStatus); + + if(u8OtaUpdateStatus == OTA_STATUS_SUCCESS) + { + if(u8OtaUpdateStatusType == HFD_STATUS) + { + // Read the file and process it + ReadFileSPI(); + } + } +} + +static void FileGetCallback(uint8_t u8Status, uint8_t u8Handler, uint32_t u32Size) +{ + if(OTA_STATUS_SUCCESS == u8Status) + { + gstrAppFile.u8Handler = u8Handler; + gstrAppFile.u32Size = u32Size; + // File Get Successful + } + else + { + WINC_LOG_ERROR("File Get Failed!"); + // File Get Failed + } +} + +static void ReadFileSPI(void) +{ + int8_t s8Ret = M2M_ERR_FAIL; + + if(WIFI_STATE_DEINIT != m2m_wifi_get_state()) + m2m_wifi_deinit(NULL); + + s8Ret = m2m_wifi_download_mode(); + if(M2M_SUCCESS != s8Ret) goto EXIT; + + // gstrAppFile.u32Offset can be changed to define a starting point for the read, + // in which case the size of the requested read should be adjusted to accommodate for this. + // This call assumes that m2m_ota_host_file_get was called earlier, in this example it is fine + // since ReadFileSPI is only called from the within OtaUpdateCb + // This example simply reads the first 200 bytes of the file. + uint32_t u32AmountToRead = 200; + s8Ret = m2m_ota_host_file_read_spi(gstrAppFile.u8Handler, gstrAppFile.au8Buff, gstrAppFile.u32Offset, u32AmountToRead); + + if(M2M_SUCCESS == s8Ret) + WINC_LOG_INFO("\nFile Read completed, Offset: %lu, Size of Read: %lu.", gstrAppFile.u32Offset, u32AmountToRead); + + // *** Do something with the contents of gstrAppFile.au8Buff *** + + s8Ret = m2m_wifi_deinit(NULL); + if(M2M_SUCCESS != s8Ret) goto EXIT; + + s8Ret = m2m_wifi_init_hold(); + if(M2M_SUCCESS != s8Ret) goto EXIT; + + s8Ret = m2m_wifi_init_start(&gstrWifiParam); + if(M2M_SUCCESS != s8Ret) goto EXIT; + + // Initialize the OTA again and reconnect to the previously connected SSID + m2m_ota_init(OtaUpdateCb, NULL); + m2m_wifi_default_connect(); + +EXIT: + return; +} + +void main(void) +{ + winc_adapter_init(); + + memset(&gstrWifiParam, 0, sizeof(gstrWifiParam)); + gstrWifiParam.pfAppWifiCb = wifi_event_cb; + + // Initialize the WINC Driver + int8_t s8Ret = m2m_wifi_init(&gstrWifiParam); + if (M2M_SUCCESS != s8Ret) + { + WINC_LOG_ERROR("Driver Init Failed <%d>",s8Ret); + while(1); + } + + // Initialize the OTA module + m2m_ota_init(OtaUpdateCb, NULL); + + // *** Connect to a wifi network by calling m2m_wifi_connect() *** + + while(1) m2m_wifi_handle_events(NULL); +} +@endcode +*/ +int8_t m2m_ota_host_file_read_spi(uint8_t u8Handler, uint8_t *pu8Buff, uint32_t u32Offset, uint32_t u32Size); + +/*! +@ingroup HFD +@fn \ + int8_t m2m_ota_host_file_erase(uint8_t u8Handler, tpfFileEraseCb pfHFDEraseCb); + +@brief + Erase any traces of file stored in WINC's Flash. + +@param[in] u8Handler + Handler of the file we are trying to erase. Must be valid. + +@param[in] pfHFDEraseCb + Pointer to callback (see @ref tpfFileEraseCb) to execute when the file erase is completed by the WINC. + +@return + The function SHALL return @ref M2M_SUCCESS for success and a negative value otherwise. + +@pre + In order to execute the callback, @ref m2m_ota_init must be called before requesting the erase. + +@note + Providing a callback is optional. + If the current handler is invalid at this point, it means one of the three: + 1. The file never existed; + 2. The file has already been already deleted; + 3. The request to get the file hasn't fully completed. + \par + For 1. and 2. there is no need to signal the WINC to erase the file in Flash.\n + For 3. the Flash can't be erased while a file download is ongoing. + +@warning + A valid file handler must be provided, this means that it needs to match the handler internally stored + by the WINC and must not be @ref HFD_INVALID_HANDLER.\n + The handlers will be destroyed regardless of the call returning success or not. + +@sa + m2m_ota_init + m2m_ota_host_file_get +*/ +int8_t m2m_ota_host_file_erase(uint8_t u8Handler, tpfFileEraseCb pfHFDEraseCb); + +/*! +@ingroup VERSIONAPI +@fn int8_t m2m_ota_get_firmware_version(tstrM2mRev* pstrRev); +@brief Get the OTA Firmware version. +@details Get OTA Firmware version info from the inactive partition, as defined in the structure tstrM2mRev. +@param[out] pstrRev + Pointer to the structure tstrM2mRev that contains the firmware version parameters. +@return The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. +*/ +int8_t m2m_ota_get_firmware_version(tstrM2mRev *pstrRev); + +#ifdef __cplusplus +} +#endif +#endif /* __M2M_OTA_H__ */ diff --git a/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_periph.c b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_periph.c new file mode 100644 index 0000000..c5caeda --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_periph.c @@ -0,0 +1,123 @@ +/** + * + * \file + * + * \brief WINC Peripherals Application Interface. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +INCLUDES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +#include "../driver/winc_adapter.h" +#include "../common/winc_defines.h" +#include "m2m_periph.h" +#include "../driver/winc_hif.h" +#include "../driver/winc_asic.h" + +#ifdef CONF_PERIPH + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +MACROS +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ +#define GPIO_OP_DIR 0 +#define GPIO_OP_SET 1 +#define GPIO_OP_GET 2 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +DATA TYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +STATIC FUNCTIONS +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ +/* + * GPIO read/write skeleton with wakeup/sleep capability. + */ +static int8_t gpio_ioctl(uint8_t op, uint8_t u8GpioNum, uint8_t u8InVal, uint8_t *pu8OutVal) +{ + int8_t i8Ret; + + i8Ret = winc_hif_chip_wake(); + if (i8Ret != M2M_SUCCESS) goto _EXIT; + + if (u8GpioNum >= M2M_PERIPH_GPIO_MAX) goto _EXIT1; + + if (op == GPIO_OP_DIR) + { + if (!winc_chip_set_gpio_dir((uint_fast8_t)u8GpioNum, u8InVal)) + i8Ret = M2M_ERR_FAIL; + } + else if (op == GPIO_OP_SET) + { + if (!winc_chip_set_gpio_val((uint_fast8_t)u8GpioNum, u8InVal)) + i8Ret = M2M_ERR_FAIL; + } + else if (op == GPIO_OP_GET) + { + if (!winc_chip_get_gpio_val((uint_fast8_t)u8GpioNum, pu8OutVal)) + i8Ret = M2M_ERR_FAIL; + } + +_EXIT1: + i8Ret = winc_hif_chip_sleep(); +_EXIT: + return i8Ret; +} +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +FUNCTION IMPLEMENTATION +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +int8_t m2m_periph_gpio_set_dir(uint8_t u8GpioNum, uint8_t u8GpioDir) +{ + return gpio_ioctl(GPIO_OP_DIR, u8GpioNum, u8GpioDir, NULL); +} + +int8_t m2m_periph_gpio_set_val(uint8_t u8GpioNum, uint8_t u8GpioVal) +{ + return gpio_ioctl(GPIO_OP_SET, u8GpioNum, u8GpioVal, NULL); +} + +int8_t m2m_periph_gpio_get_val(uint8_t u8GpioNum, uint8_t * pu8GpioVal) +{ + return gpio_ioctl(GPIO_OP_GET, u8GpioNum, 0, pu8GpioVal); +} + +int8_t m2m_periph_pullup_ctrl(uint32_t pinmask, uint8_t enable) +{ + if (!winc_chip_pullup_ctrl(pinmask, enable)) + return M2M_ERR_FAIL; + + return M2M_SUCCESS; +} + +#endif /* CONF_PERIPH */ diff --git a/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_periph.h b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_periph.h new file mode 100644 index 0000000..7ceea33 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_periph.h @@ -0,0 +1,195 @@ +/** + * + * \file + * + * \brief WINC Peripherals Application Interface. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _M2M_PERIPH_H_ +#define _M2M_PERIPH_H_ + + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +MACROS +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +DATA TYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +/*! +@enum \ + tenuGpioNum + +@brief + A list of GPIO numbers configurable through the m2m_periph module. +*/ +typedef enum { + M2M_PERIPH_GPIO0 = 0, /*!< GPIO0 pad */ + M2M_PERIPH_GPIO1 = 1, /*!< GPIO1 pad */ + M2M_PERIPH_GPIO2 = 2, /*!< GPIO2 pad */ + M2M_PERIPH_GPIO3 = 3, /*!< GPIO3 pad */ + M2M_PERIPH_GPIO4 = 4, /*!< GPIO4 pad */ + M2M_PERIPH_GPIO5 = 5, /*!< GPIO5 pad */ + M2M_PERIPH_GPIO6 = 6, /*!< GPIO6 pad */ + M2M_PERIPH_GPIO_MAX +} tenuGpioNum; + +#define M2M_PERIPH_PULLUP_DIS_HOST_WAKEUP (1ul << 0) +#define M2M_PERIPH_PULLUP_DIS_RTC_CLK (1ul << 1) +#define M2M_PERIPH_PULLUP_DIS_IRQN (1ul << 2) +#define M2M_PERIPH_PULLUP_DIS_GPIO_3 (1ul << 3) +#define M2M_PERIPH_PULLUP_DIS_GPIO_4 (1ul << 4) +#define M2M_PERIPH_PULLUP_DIS_GPIO_5 (1ul << 5) +#define M2M_PERIPH_PULLUP_DIS_SD_DAT3 (1ul << 6) +#define M2M_PERIPH_PULLUP_DIS_SD_DAT2_SPI_RXD (1ul << 7) +#define M2M_PERIPH_PULLUP_DIS_SD_DAT1_SPI_SSN (1ul << 9) +#define M2M_PERIPH_PULLUP_DIS_SD_CMD_SPI_SCK (1ul << 10) +#define M2M_PERIPH_PULLUP_DIS_SD_DAT0_SPI_TXD (1ul << 11) +#define M2M_PERIPH_PULLUP_DIS_GPIO_6 (1ul << 12) +#define M2M_PERIPH_PULLUP_DIS_SD_CLK (1ul << 13) +#define M2M_PERIPH_PULLUP_DIS_I2C_SCL (1ul << 14) +#define M2M_PERIPH_PULLUP_DIS_I2C_SDA (1ul << 15) +#define M2M_PERIPH_PULLUP_DIS_GPIO_11 (1ul << 16) +#define M2M_PERIPH_PULLUP_DIS_GPIO_12 (1ul << 17) +#define M2M_PERIPH_PULLUP_DIS_GPIO_13 (1ul << 18) +#define M2M_PERIPH_PULLUP_DIS_GPIO_14 (1ul << 19) +#define M2M_PERIPH_PULLUP_DIS_GPIO_15 (1ul << 20) +#define M2M_PERIPH_PULLUP_DIS_GPIO_16 (1ul << 21) +#define M2M_PERIPH_PULLUP_DIS_GPIO_17 (1ul << 22) +#define M2M_PERIPH_PULLUP_DIS_GPIO_18 (1ul << 23) +#define M2M_PERIPH_PULLUP_DIS_GPIO_19 (1ul << 24) +#define M2M_PERIPH_PULLUP_DIS_GPIO_20 (1ul << 25) +#define M2M_PERIPH_PULLUP_DIS_GPIO_21 (1ul << 26) +#define M2M_PERIPH_PULLUP_DIS_GPIO_22 (1ul << 27) +#define M2M_PERIPH_PULLUP_DIS_GPIO_23 (1ul << 28) +#define M2M_PERIPH_PULLUP_DIS_GPIO_24 (1ul << 29) + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +FUNCTION PROTOTYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + + +#ifdef __cplusplus +extern "C" { +#endif + +/*! +@fn \ + int8_t m2m_periph_gpio_set_dir(uint8_t u8GpioNum, uint8_t u8GpioDir); + +@brief + Configure a specific WINC pad as a GPIO and sets its direction (input or output). + +@param[in] u8GpioNum + GPIO number. Allowed values are defined in @ref tenuGpioNum. + +@param[in] u8GpioDir + GPIO direction: Zero = input. Non-zero = output. + +@return + The function returns 0 for success and a negative value otherwise. + +@sa + tenuGpioNum +*/ +int8_t m2m_periph_gpio_set_dir(uint8_t u8GpioNum, uint8_t u8GpioDir); + +/*! +@fn \ + int8_t m2m_periph_gpio_set_val(uint8_t u8GpioNum, uint8_t u8GpioVal); + +@brief + Set an WINC GPIO output level high or low. + +@param[in] u8GpioNum + GPIO number. Allowed values are defined in @ref tenuGpioNum. + +@param[in] u8GpioVal + GPIO output value. Zero = low, non-zero = high. + +@return + The function returns 0 for success and a negative value otherwise. + +@sa + tenuGpioNum +*/ +int8_t m2m_periph_gpio_set_val(uint8_t u8GpioNum, uint8_t u8GpioVal); + +/*! +@fn \ + int8_t m2m_periph_gpio_get_val(uint8_t u8GpioNum, uint8_t * pu8GpioVal); + +@brief + Read an WINC GPIO input level. + +@param[in] u8GpioNum + GPIO number. Allowed values are defined in @ref tenuGpioNum. + +@param [out] pu8GpioVal + GPIO input value. Zero = low, non-zero = high. + +@return + The function returns 0 for success and a negative value otherwise. + +@sa + tenuGpioNum +*/ +int8_t m2m_periph_gpio_get_val(uint8_t u8GpioNum, uint8_t * pu8GpioVal); + +/*! +@fn \ + int8_t m2m_periph_pullup_ctrl(uint32_t pinmask, uint8_t enable); + +@brief + Control the programmable pull-up resistor on the chip pads . + +@param[in] pinmask + Write operation bitwise-ORed mask for which pads to control. Allowed values are defined in @ref tenuPullupMask. + +@param[in] enable + Set to 0 to disable pull-up resistor. Non-zero will enable the pull-up. + +@return + The function returns 0 for success and a negative value otherwise. + +@sa + tenuPullupMask +*/ +int8_t m2m_periph_pullup_ctrl(uint32_t pinmask, uint8_t enable); + +#ifdef __cplusplus +} +#endif + +#endif /* _M2M_PERIPH_H_ */ diff --git a/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_socket_host_if.h b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_socket_host_if.h new file mode 100644 index 0000000..a623841 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_socket_host_if.h @@ -0,0 +1,430 @@ +/** + * + * \file + * + * \brief Socket interface internal types. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef __M2M_SOCKET_HOST_IF_H__ +#define __M2M_SOCKET_HOST_IF_H__ + + +#ifdef __cplusplus +extern "C" { +#endif + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +MACROS +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +#define SSL_MAX_OPT_LEN HOSTNAME_MAX_SIZE + + + +#define SOCKET_CMD_INVALID 0x00 +/*!< + Invalid Socket command value. +*/ + + +#define SOCKET_CMD_BIND 0x41 +/*!< + Socket Binding command value. +*/ + + +#define SOCKET_CMD_LISTEN 0x42 +/*!< + Socket Listening command value. +*/ + + +#define SOCKET_CMD_ACCEPT 0x43 +/*!< + Socket Accepting command value. +*/ + + +#define SOCKET_CMD_CONNECT 0x44 +/*!< + Socket Connecting command value. +*/ + + +#define SOCKET_CMD_SEND 0x45 +/*!< + Socket send command value. +*/ + + +#define SOCKET_CMD_RECV 0x46 +/*!< + Socket Receive command value. +*/ + + +#define SOCKET_CMD_SENDTO 0x47 +/*!< + Socket sendTo command value. +*/ + + +#define SOCKET_CMD_RECVFROM 0x48 +/*!< + Socket ReceiveFrom command value. +*/ + + +#define SOCKET_CMD_CLOSE 0x49 +/*!< + Socket Close command value. +*/ + + +#define SOCKET_CMD_DNS_RESOLVE 0x4A +/*!< + Socket DNS Resolve command value. +*/ + + +#define SOCKET_CMD_SSL_CONNECT 0x4B +/*!< + SSL-Socket Connect command value. +*/ + + +#define SOCKET_CMD_SSL_SEND 0x4C +/*!< + SSL-Socket Send command value. +*/ + + +#define SOCKET_CMD_SSL_RECV 0x4D +/*!< + SSL-Socket Receive command value. +*/ + + +#define SOCKET_CMD_SSL_CLOSE 0x4E +/*!< + SSL-Socket Close command value. +*/ + + +#define SOCKET_CMD_SET_SOCKET_OPTION 0x4F +/*!< + Set Socket Option command value. +*/ + + +#define SOCKET_CMD_SSL_CREATE 0x50 +/*!< +*/ + + +#define SOCKET_CMD_SSL_SET_SOCK_OPT 0x51 +/*!< +*/ + + +#define SOCKET_CMD_PING 0x52 +/*!< +*/ + + +#define SOCKET_CMD_SSL_SET_CS_LIST 0x53 +/*!< + Recommend instead using @ref M2M_SSL_REQ_SET_CS_LIST and + associated response @ref M2M_SSL_RESP_SET_CS_LIST +*/ + + +#define SOCKET_CMD_SSL_BIND 0x54 +/*!< +*/ + + +#define SOCKET_CMD_SSL_EXP_CHECK 0x55 +/*!< +*/ + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +DATA TYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + + +/*! +* @brief +*/ +typedef struct{ + uint16_t u16Family; + uint16_t u16Port; + uint32_t u32IPAddr; +}tstrSockAddr; + +typedef tstrSockAddr tstrUIPSockAddr; + + +/*! +@struct \ + tstrDnsReply + +@brief + DNS Reply, contains hostName and HostIP. +*/ +typedef struct { + char acHostName[HOSTNAME_MAX_SIZE]; + uint32_t u32HostIP; +} tstrDnsReply; + + +/*! +@brief +*/ +typedef struct { + tstrSockAddr strAddr; + SOCKET sock; + uint8_t u8Void; + uint16_t u16SessionID; +} tstrBindCmd; + + +/*! +@brief +*/ +typedef struct { + SOCKET sock; + int8_t s8Status; + uint16_t u16SessionID; +} tstrBindReply; + + +/*! +* @brief +*/ +typedef struct { + SOCKET sock; + uint8_t u8BackLog; + uint16_t u16SessionID; +} tstrListenCmd; + + +/*! +@struct \ + tstrSocketRecvMsg + +@brief Socket recv status. + + It is passed to the APPSocketEventHandler with SOCKET_MSG_RECV or SOCKET_MSG_RECVFROM message type + in a response to a user call to the recv or recvfrom. + If the received data from the remote peer is larger than the USER Buffer size (given at recv call), the data is + delivered to the user in a number of consecutive chunks according to the USER Buffer size. +*/ +typedef struct { + SOCKET sock; + int8_t s8Status; + uint16_t u16SessionID; +} tstrListenReply; + + +/*! +* @brief +*/ +typedef struct { + tstrSockAddr strAddr; + SOCKET sListenSock; + SOCKET sConnectedSock; + uint16_t u16AppDataOffset; + /*!< + In further packet send requests the host interface should put the user application + data at this offset in the allocated shared data packet. + */ +} tstrAcceptReply; + + +/*! +* @brief +*/ +typedef struct { + tstrSockAddr strAddr; + SOCKET sock; + uint8_t u8SslFlags; + uint16_t u16SessionID; +} tstrConnectCmd; + + +/*! +@struct \ + tstrConnectReply + +@brief + Connect Reply, contains sock number and error value +*/ +typedef struct { + SOCKET sock; + int8_t s8Error; + uint16_t u16AppDataOffset; + /*!< + In further packet send requests the host interface should put the user application + data at this offset in the allocated shared data packet. + */ +} tstrConnectReply; + + +/*! +@brief +*/ +typedef struct { + SOCKET sock; + uint8_t u8Void; + uint16_t u16DataSize; + tstrSockAddr strAddr; + uint16_t u16SessionID; + uint16_t u16Void; +} tstrSendCmd; + + +/*! +@struct \ + tstrSendReply + +@brief + Send Reply, contains socket number and number of sent bytes. +*/ +typedef struct { + SOCKET sock; + uint8_t u8Void; + int16_t s16SentBytes; + uint16_t u16SessionID; + uint16_t u16Void; +} tstrSendReply; + + +/*! +* @brief +*/ +typedef struct { + uint32_t u32Timeoutmsec; + SOCKET sock; + uint8_t u8Void; + uint16_t u16SessionID; +} tstrRecvCmd; + + +/*! +@struct \ + tstrRecvReply +@brief +*/ +typedef struct { + tstrSockAddr strRemoteAddr; + int16_t s16RecvStatus; + uint16_t u16DataOffset; + SOCKET sock; + uint8_t u8Void; + uint16_t u16SessionID; +} tstrRecvReply; + + +/*! +* @brief +*/ +typedef struct { + uint32_t u32OptionValue; + SOCKET sock; + uint8_t u8Option; + uint16_t u16SessionID; +} tstrSetSocketOptCmd; + + +typedef struct { + SOCKET sslSock; + uint8_t __PAD24__[3]; +} tstrSSLSocketCreateCmd; + + +/*! +* @brief +*/ +typedef struct { + SOCKET sock; + uint8_t u8Option; + uint16_t u16SessionID; + uint32_t u32OptLen; + uint8_t au8OptVal[SSL_MAX_OPT_LEN]; +} tstrSSLSetSockOptCmd; + + +/*! +*/ +typedef struct { + uint32_t u32DestIPAddr; + uint32_t u32CmdPrivate; + uint16_t u16PingCount; + uint8_t u8TTL; + uint8_t __PAD8__; +} tstrPingCmd; + + +typedef struct { + uint32_t u32IPAddr; + uint32_t u32CmdPrivate; + uint32_t u32RTT; + uint16_t u16Success; + uint16_t u16Fail; + uint8_t u8ErrorCode; + uint8_t __PAD24__[3]; +} tstrPingReply; + + +/*! +@struct\ + tstrSslCertExpSettings + +@brief SSL Certificate Expiry Validation Settings + +@sa tenuSslCertExpSettings +*/ +typedef struct{ + uint32_t u32CertExpValidationOpt; + /*!< + See @tenuSslCertExpSettings for possible values. + */ +}tstrSslCertExpSettings; + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __M2M_SOCKET_HOST_IF_H__ */ diff --git a/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_ssl.c b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_ssl.c new file mode 100644 index 0000000..3c6d971 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_ssl.c @@ -0,0 +1,413 @@ +/** + * + * \file + * + * \brief WINC SSL Interface. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +INCLUDES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +#include "../driver/winc_adapter.h" +#include "../common/winc_defines.h" +#include "../common/ecc_types.h" +#include "../common/winc_debug.h" +#include "m2m_types.h" +#include "m2m_ssl.h" +#include "../driver/winc_hif.h" +#include "../driver/winc_asic.h" +#include "../socket/socket.h" + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +MACROS +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +DATA TYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ +static tpfAppSSLCb gpfAppSSLCb = NULL; +static uint32_t gu32HIFAddr = 0; +static tenuTlsFlashStatus genuStatus = TLS_FLASH_ERR_UNKNOWN; + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +FUNCTION PROTOTYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +/*! +@fn \ void m2m_ssl_cb(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr) +@brief Internal SSL callback function. +@param [in] u8OpCode + HIF Opcode type. +@param [in] u16DataSize + HIF data length. +@param [in] u32Addr + HIF address. +*/ +void m2m_ssl_cb(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr) +{ + UNUSED_VAR(u16DataSize); + + int8_t s8tmp = M2M_SUCCESS; + switch(u8OpCode) + { + case M2M_SSL_REQ_ECC: + { + tstrEccReqInfo strEccREQ; + s8tmp = winc_hif_receive(u32Addr, &strEccREQ, sizeof(tstrEccReqInfo)); + if(s8tmp == M2M_SUCCESS) + { + if (gpfAppSSLCb) + { + gu32HIFAddr = u32Addr + sizeof(tstrEccReqInfo); + gpfAppSSLCb(M2M_SSL_REQ_ECC, &strEccREQ); + } + } + } + break; + case M2M_SSL_RESP_SET_CS_LIST: + { + tstrSslSetActiveCsList strCsList; + s8tmp = winc_hif_receive(u32Addr, &strCsList, sizeof(tstrSslSetActiveCsList)); + if(s8tmp == M2M_SUCCESS) + { + if (gpfAppSSLCb) + gpfAppSSLCb(M2M_SSL_RESP_SET_CS_LIST, &strCsList); + } + } + break; + case M2M_SSL_RESP_WRITE_OWN_CERTS: + { + tstrTlsSrvChunkHdr strTlsSrvChunkRsp; + uint8_t bCallApp = 1; + + s8tmp = winc_hif_receive(u32Addr, &strTlsSrvChunkRsp, sizeof(tstrTlsSrvChunkHdr)); + if(s8tmp == M2M_SUCCESS) + { + uint16_t offset = strTlsSrvChunkRsp.u16Offset32; + uint16_t chunk_size = strTlsSrvChunkRsp.u16Size32; + uint16_t total_size = strTlsSrvChunkRsp.u16TotalSize32; + tenuTlsFlashStatus status = (tenuTlsFlashStatus)(strTlsSrvChunkRsp.u16Sig); + + /* If first chunk, reset status. */ + if (offset == 0) + genuStatus = TLS_FLASH_OK_NO_CHANGE; + /* Only send status to app when processing last chunk. */ + if (offset + chunk_size != total_size) + bCallApp = 0; + + switch (status) + { + case TLS_FLASH_OK: + // Good flash write. Update status if no errors yet. + if (genuStatus == TLS_FLASH_OK_NO_CHANGE) + genuStatus = status; + break; + case TLS_FLASH_OK_NO_CHANGE: + // No change, don't update status. + break; + case TLS_FLASH_ERR_CORRUPT: + // Corrupt. Always update status. + genuStatus = status; + break; + case TLS_FLASH_ERR_NO_CHANGE: + // Failed flash write. Update status if no more serious error. + if ((genuStatus != TLS_FLASH_ERR_CORRUPT) && (genuStatus != TLS_FLASH_ERR_UNKNOWN)) + genuStatus = status; + break; + default: + // Don't expect any other case. Ensure we don't mask a previous corrupt error. + if (genuStatus != TLS_FLASH_ERR_CORRUPT) + genuStatus = TLS_FLASH_ERR_UNKNOWN; + break; + } + } + if (bCallApp && gpfAppSSLCb) + gpfAppSSLCb(M2M_SSL_RESP_WRITE_OWN_CERTS, &genuStatus); + } + break; + } + if(s8tmp != M2M_SUCCESS) + { + WINC_LOG_ERROR("Error receiving SSL from the HIF"); + } +} + +/*! +@fn \ int8_t m2m_ssl_init(tpfAppSslCb pfAppSslCb); +@brief Initializes the SSL layer. +@param [in] pfAppSslCb + Application SSL callback function. +@return The function returns @ref M2M_SUCCESS for success and a negative value otherwise. +*/ +int8_t m2m_ssl_init(tpfAppSSLCb pfAppSSLCb) +{ + gpfAppSSLCb = pfAppSSLCb; + gu32HIFAddr = 0; + genuStatus = TLS_FLASH_ERR_UNKNOWN; + + return M2M_SUCCESS; +} + +/*! +@fn \ int8_t m2m_ssl_handshake_rsp(tstrEccReqInfo* strECCResp, uint8_t* pu8RspDataBuff, uint16_t u16RspDataSz) +@brief Sends ECC responses to the WINC. +@param[in] strECCResp + ECC Response struct. +@param[in] pu8RspDataBuff + Pointer of the response data to be sent. +@param[in] u16RspDataSz + Response data size. +@return The function returns @ref M2M_SUCCESS for success and a negative value otherwise. +*/ +int8_t m2m_ssl_handshake_rsp(tstrEccReqInfo* strECCResp, uint8_t* pu8RspDataBuff, uint16_t u16RspDataSz) +{ + int8_t s8Ret = M2M_SUCCESS; + + s8Ret = winc_hif_send(M2M_REQ_GROUP_SSL, (M2M_SSL_RESP_ECC | M2M_REQ_DATA_PKT), strECCResp, sizeof(tstrEccReqInfo), pu8RspDataBuff, u16RspDataSz, sizeof(tstrEccReqInfo)); + + return s8Ret; +} + +/*! +@fn \ int8_t m2m_ssl_send_certs_to_winc(uint8_t* sector_buffer, uint32_t sector_size) +@brief Sends certificates to the WINC +@param[in] pu8Buffer + Pointer to the certificates. +@param[in] u32BufferSz + Size of the certificates. +@return The function returns @ref M2M_SUCCESS for success and a negative value otherwise. +*/ +#define TXLIMIT (256 * 6) +#define CHUNKHDRSZ (sizeof(tstrTlsSrvChunkHdr)) +#define CHUNKSZ (TXLIMIT - 256) // divisible by 4 + +int8_t m2m_ssl_send_certs_to_winc(uint8_t *pu8Buffer, uint32_t u32BufferSz) +{ + tstrTlsSrvChunkHdr strChkHdr; + + strChkHdr.u16Sig = TLS_CERTS_CHUNKED_SIG_VALUE; + strChkHdr.u16TotalSize32 = (uint16_t)((u32BufferSz + 3) >> 2); + strChkHdr.u16Offset32 = 0; + + if(u32BufferSz <= TXLIMIT) + { + // set chunk header for one chunk + + strChkHdr.u16Size32 = strChkHdr.u16TotalSize32; + + memcpy(pu8Buffer, &strChkHdr, CHUNKHDRSZ); + + if (M2M_SUCCESS != winc_hif_send(M2M_REQ_GROUP_SSL, (M2M_SSL_REQ_WRITE_OWN_CERTS | M2M_REQ_DATA_PKT), NULL, 0, pu8Buffer, (uint16_t)u32BufferSz, 0)) + return M2M_ERR_FAIL; + + WINC_LOG_INFO("Transferred %" PRIu32 " bytes of cert data NON-CHUNKED", u32BufferSz); + } + else + { + // chunk it + // We are sneaking in a header - tstrTlsSrvChunkHdr + uint8_t u8BackupBufData[CHUNKHDRSZ]; + uint16_t u16ThisChunkSz = CHUNKSZ; + uint32_t u32BufRemain; + + memcpy(u8BackupBufData, pu8Buffer, CHUNKHDRSZ); + + // CHUNKSZ is always less than TXLIMIT, so u32BufferSz is always greater than CHUNKSZ, therefore u16ThisChunkSz = CHUNKSZ + + strChkHdr.u16Size32 = (CHUNKSZ >> 2); + + memcpy(pu8Buffer, &strChkHdr, CHUNKHDRSZ); + + if (M2M_SUCCESS != winc_hif_send(M2M_REQ_GROUP_SSL, (M2M_SSL_REQ_WRITE_OWN_CERTS | M2M_REQ_DATA_PKT), NULL, 0, pu8Buffer, CHUNKSZ, 0)) + return M2M_ERR_FAIL; + + WINC_LOG_INFO("Transferred %" PRIu16 " bytes of cert data CHUNKED to offset 0 total %" PRIu32, CHUNKSZ, u32BufferSz); + memcpy(pu8Buffer, u8BackupBufData, CHUNKHDRSZ); + + pu8Buffer += (CHUNKSZ - CHUNKHDRSZ); + strChkHdr.u16Offset32 += (CHUNKSZ >> 2); + + u32BufRemain = u32BufferSz - CHUNKSZ; + + while (u32BufRemain) + { + // pu8Buffer points to next chunk data - CHUNKHDRSZ + + memcpy(u8BackupBufData, pu8Buffer, CHUNKHDRSZ); + + if (u32BufRemain < CHUNKSZ) + { + u16ThisChunkSz = (uint16_t)u32BufRemain; + u16ThisChunkSz = (u16ThisChunkSz + 3) & 0xFFFC; // needs to round up to quad word length + + strChkHdr.u16Size32 = (u16ThisChunkSz >> 2); + } + + memcpy(pu8Buffer, &strChkHdr, CHUNKHDRSZ); + + if (M2M_SUCCESS != winc_hif_send(M2M_REQ_GROUP_SSL, (M2M_SSL_REQ_WRITE_OWN_CERTS | M2M_REQ_DATA_PKT), NULL, 0, pu8Buffer, u16ThisChunkSz + CHUNKHDRSZ, 0)) + return M2M_ERR_FAIL; + + WINC_LOG_INFO("Transferred %" PRIu16 " bytes of cert data CHUNKED to offset %d total %" PRIu32, u16ThisChunkSz, (strChkHdr.u16Offset32 << 2), u32BufferSz); + memcpy(pu8Buffer, u8BackupBufData, CHUNKHDRSZ); + + pu8Buffer += CHUNKSZ; + strChkHdr.u16Offset32 += (CHUNKSZ >> 2); + + u32BufRemain -= u16ThisChunkSz; + } + } + + return M2M_SUCCESS; +} + +/*! +@fn \ int8_t m2m_ssl_retrieve_cert(uint32_t u32ReadAddr, uint16_t* pu16CurveType, uint8_t* pu8Hash, uint8_t* pu8Sig, tstrECPoint* pu8Key) +@brief Retrieve the certificate to be verified from the WINC +@param[in] pu16CurveType + Pointer to the certificate curve type. +@param[in] pu8Hash + Pointer to the certificate hash. +@param[in] pu8Sig + Pointer to the certificate signature. +@param[in] pu8Key + Pointer to the certificate Key. +@return The function returns @ref M2M_SUCCESS for success and a negative value otherwise. +*/ +int8_t m2m_ssl_retrieve_cert(uint16_t* pu16CurveType, uint8_t* pu8Hash, uint8_t* pu8Sig, tstrECPoint* pu8Key) +{ + uint16_t u16HashSz, u16SigSz, u16KeySz; + + if (gu32HIFAddr == 0) + return M2M_ERR_FAIL; + + if (winc_hif_receive(gu32HIFAddr, pu16CurveType, 2) != M2M_SUCCESS) + return M2M_ERR_FAIL; + gu32HIFAddr += 2; + + if (winc_hif_receive(gu32HIFAddr, &u16KeySz, 2) != M2M_SUCCESS) + return M2M_ERR_FAIL; + gu32HIFAddr += 2; + + if (winc_hif_receive(gu32HIFAddr, &u16HashSz, 2) != M2M_SUCCESS) + return M2M_ERR_FAIL; + gu32HIFAddr += 2; + + if (winc_hif_receive(gu32HIFAddr, &u16SigSz, 2) != M2M_SUCCESS) + return M2M_ERR_FAIL; + gu32HIFAddr += 2; + + (*pu16CurveType)= _htons((*pu16CurveType)); + pu8Key->u16Size = _htons(u16KeySz); + u16HashSz = _htons(u16HashSz); + u16SigSz = _htons(u16SigSz); + + if (winc_hif_receive(gu32HIFAddr, pu8Key->X, pu8Key->u16Size * 2) != M2M_SUCCESS) + return M2M_ERR_FAIL; + gu32HIFAddr += (pu8Key->u16Size * 2); + + if (winc_hif_receive(gu32HIFAddr, pu8Hash, u16HashSz) != M2M_SUCCESS) + return M2M_ERR_FAIL; + gu32HIFAddr += u16HashSz; + + if (winc_hif_receive(gu32HIFAddr, pu8Sig, u16SigSz) != M2M_SUCCESS) + return M2M_ERR_FAIL; + gu32HIFAddr += u16SigSz; + + return M2M_SUCCESS; +} + +/*! +@fn \ int8_t m2m_ssl_retrieve_hash(uint32_t u32ReadAddr, uint8_t* pu8Hash, uint16_t u16HashSz) +@brief Retrieve the certificate hash. +@param[in] pu8Hash + Pointer to the certificate hash. +@param[in] u16HashSz + Hash size. +@return The function returns @ref M2M_SUCCESS for success and a negative value otherwise. +*/ +int8_t m2m_ssl_retrieve_hash(uint8_t* pu8Hash, uint16_t u16HashSz) +{ + if (gu32HIFAddr == 0) + return M2M_ERR_FAIL; + + if (winc_hif_receive(gu32HIFAddr, pu8Hash, u16HashSz) != M2M_SUCCESS) + return M2M_ERR_FAIL; + + return M2M_SUCCESS; +} + +/*! +@fn \ void m2m_ssl_stop_processing_certs(void) +@brief Stops receiving from the HIF. +*/ +void m2m_ssl_stop_processing_certs(void) +{ +} + +/*! +@fn \ void m2m_ssl_ecc_process_done(void) +@brief Stops receiving from the HIF. +*/ +void m2m_ssl_ecc_process_done(void) +{ + gu32HIFAddr = 0; +} + +/*! +@fn int8_t m2m_ssl_set_active_ciphersuites(uint32_t u32SslCsBMP); +@brief Sets the active cipher suites. + +@param [in] u32SslCsBMP + Bitmap containing the desired ciphers to be enabled for the SSL module. The cipher suites are defined in + @ref SSLCipherSuiteID. + The default cipher suites are all cipher suites supported by the firmware with the exception of ECC cipher suites. + The caller can override the default with any desired combination, except for combinations involving both RSA + and ECC; if any RSA ciphersuite is enabled, then firmware will disable all ECC cipher suites. + If u32SslCsBMP does not contain any cipher suites supported by firmware, then the current active list will not + change. + +@return + - @ref SOCK_ERR_NO_ERROR + - @ref SOCK_ERR_INVALID_ARG +*/ +int8_t m2m_ssl_set_active_ciphersuites(uint32_t u32SslCsBMP) +{ + int8_t s8Ret = M2M_SUCCESS; + tstrSslSetActiveCsList strCsList; + + strCsList.u32CsBMP = u32SslCsBMP; + s8Ret = winc_hif_send_no_data(M2M_REQ_GROUP_SSL, M2M_SSL_REQ_SET_CS_LIST, &strCsList, sizeof(tstrSslSetActiveCsList)); + return s8Ret; +} diff --git a/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_ssl.h b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_ssl.h new file mode 100644 index 0000000..a21a218 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_ssl.h @@ -0,0 +1,357 @@ +/** + * + * \file + * + * \brief WINC SSL Interface. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +/** @defgroup SSLAPI SSL + @brief + Provides a description of the SSL Layer. + @{ + @defgroup SSLCallbacks Callbacks + @brief + Provides detail on the available callbacks for the SSL Layer. + + @defgroup SSLEnums Enumerations and Typedefs + @brief + Specifies the enums and Data Structures used by the SSL APIs. + + @defgroup SSLFUNCTIONS Functions + @brief + Provides detail on the available APIs for the SSL Layer. + + @defgroup TLSDefines TLS Defines + @brief + The following list of macros are used to define constants used in the SSL layer. + @{ + @defgroup SSLSocketOptions TLS Socket Options + @brief + The following list of macros are used to define SSL Socket options. + + @see setsockopt + @} + @} +*/ + +#ifndef __M2M_SSL_H__ +#define __M2M_SSL_H__ + +/**@defgroup LegacySSLCipherSuite Legacy names for TLS Cipher Suite IDs + * @ingroup TLSDefines + * The following list of macros MUST NOT be used. Instead use the new names under SSLCipherSuiteID + * @sa m2m_ssl_set_active_ciphersuites + * @{ + */ + +#define SSL_ENABLE_RSA_SHA_SUITES 0x01 +/*!< + Enable RSA Hmac_SHA based Cipher suites. For example, + TLS_RSA_WITH_AES_128_CBC_SHA +*/ + +#define SSL_ENABLE_RSA_SHA256_SUITES 0x02 +/*!< + Enable RSA Hmac_SHA256 based Cipher suites. For example, + TLS_RSA_WITH_AES_128_CBC_SHA256 +*/ + +#define SSL_ENABLE_DHE_SHA_SUITES 0x04 +/*!< + Enable DHE Hmac_SHA based Cipher suites. For example, + TLS_DHE_RSA_WITH_AES_128_CBC_SHA +*/ + +#define SSL_ENABLE_DHE_SHA256_SUITES 0x08 +/*!< + Enable DHE Hmac_SHA256 based Cipher suites. For example, + TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 +*/ + +#define SSL_ENABLE_RSA_GCM_SUITES 0x10 +/*!< + Enable RSA AEAD based Cipher suites. For example, + TLS_RSA_WITH_AES_128_GCM_SHA256 +*/ + +#define SSL_ENABLE_DHE_GCM_SUITES 0x20 +/*!< + Enable DHE AEAD based Cipher suites. For example, + TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 +*/ + +#define SSL_ENABLE_ALL_SUITES 0x0000003F +/*!< + Enable all possible supported cipher suites. +*/ +/**@}*/ //LegacySSLCipherSuite + +/**@defgroup SSLCipherSuiteID TLS Cipher Suite IDs + * @ingroup TLSDefines + * The following list of macros defined the list of supported TLS Cipher suites. + * Each MACRO defines a single Cipher suite. + * @sa m2m_ssl_set_active_ciphersuites + * @{ + */ + +#define SSL_CIPHER_RSA_WITH_AES_128_CBC_SHA NBIT0 +#define SSL_CIPHER_RSA_WITH_AES_128_CBC_SHA256 NBIT1 +#define SSL_CIPHER_DHE_RSA_WITH_AES_128_CBC_SHA NBIT2 +#define SSL_CIPHER_DHE_RSA_WITH_AES_128_CBC_SHA256 NBIT3 +#define SSL_CIPHER_RSA_WITH_AES_128_GCM_SHA256 NBIT4 +#define SSL_CIPHER_DHE_RSA_WITH_AES_128_GCM_SHA256 NBIT5 +#define SSL_CIPHER_RSA_WITH_AES_256_CBC_SHA NBIT6 +#define SSL_CIPHER_RSA_WITH_AES_256_CBC_SHA256 NBIT7 +#define SSL_CIPHER_DHE_RSA_WITH_AES_256_CBC_SHA NBIT8 +#define SSL_CIPHER_DHE_RSA_WITH_AES_256_CBC_SHA256 NBIT9 +#define SSL_CIPHER_ECDHE_RSA_WITH_AES_128_CBC_SHA NBIT10 +#define SSL_CIPHER_ECDHE_RSA_WITH_AES_256_CBC_SHA NBIT11 +#define SSL_CIPHER_ECDHE_RSA_WITH_AES_128_CBC_SHA256 NBIT12 +#define SSL_CIPHER_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 NBIT13 +#define SSL_CIPHER_ECDHE_RSA_WITH_AES_128_GCM_SHA256 NBIT14 +#define SSL_CIPHER_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 NBIT15 + +#define SSL_ECC_ONLY_CIPHERS \ +(\ + SSL_CIPHER_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | \ + SSL_CIPHER_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 \ +) +/*!< + All ciphers that use ECC crypto only. This excludes ciphers that use RSA. They use ECDSA instead. + These ciphers are turned off by default at startup. + The application may enable them if it has an ECC math engine (like ATECC508). +*/ +#define SSL_ECC_ALL_CIPHERS \ +(\ + SSL_CIPHER_ECDHE_RSA_WITH_AES_128_CBC_SHA | \ + SSL_CIPHER_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | \ + SSL_CIPHER_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | \ + SSL_CIPHER_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | \ + SSL_CIPHER_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 \ +) +/*!< + All supported ECC Ciphers including those ciphers that depend on RSA and ECC. + These ciphers are turned off by default at startup. + The application may enable them if it has an ECC math engine (like ATECC508). +*/ + +#define SSL_NON_ECC_CIPHERS_AES_128 \ +(\ + SSL_CIPHER_RSA_WITH_AES_128_CBC_SHA | \ + SSL_CIPHER_RSA_WITH_AES_128_CBC_SHA256 | \ + SSL_CIPHER_DHE_RSA_WITH_AES_128_CBC_SHA | \ + SSL_CIPHER_DHE_RSA_WITH_AES_128_CBC_SHA256 | \ + SSL_CIPHER_RSA_WITH_AES_128_GCM_SHA256 | \ + SSL_CIPHER_DHE_RSA_WITH_AES_128_GCM_SHA256 \ +) +/*!< + All supported AES-128 Ciphers (ECC ciphers are not counted). This is the default active group after startup. +*/ + +#define SSL_ECC_CIPHERS_AES_256 \ +(\ + SSL_CIPHER_ECDHE_RSA_WITH_AES_256_CBC_SHA \ +) +/*!< + ECC AES-256 supported ciphers. +*/ + +#define SSL_NON_ECC_CIPHERS_AES_256 \ +(\ + SSL_CIPHER_RSA_WITH_AES_256_CBC_SHA | \ + SSL_CIPHER_RSA_WITH_AES_256_CBC_SHA256 | \ + SSL_CIPHER_DHE_RSA_WITH_AES_256_CBC_SHA | \ + SSL_CIPHER_DHE_RSA_WITH_AES_256_CBC_SHA256 \ +) +/*!< + AES-256 Ciphers. + This group is disabled by default at startup because the WINC HW Accelerator + supports only AES-128. If the application needs to force AES-256 cipher support, + it could enable them (or any of them) explicitly by calling m2m_ssl_set_active_ciphersuites. +*/ + +#define SSL_CIPHER_ALL \ +(\ + SSL_CIPHER_RSA_WITH_AES_128_CBC_SHA | \ + SSL_CIPHER_RSA_WITH_AES_128_CBC_SHA256 | \ + SSL_CIPHER_DHE_RSA_WITH_AES_128_CBC_SHA | \ + SSL_CIPHER_DHE_RSA_WITH_AES_128_CBC_SHA256 | \ + SSL_CIPHER_RSA_WITH_AES_128_GCM_SHA256 | \ + SSL_CIPHER_DHE_RSA_WITH_AES_128_GCM_SHA256 | \ + SSL_CIPHER_RSA_WITH_AES_256_CBC_SHA | \ + SSL_CIPHER_RSA_WITH_AES_256_CBC_SHA256 | \ + SSL_CIPHER_DHE_RSA_WITH_AES_256_CBC_SHA | \ + SSL_CIPHER_DHE_RSA_WITH_AES_256_CBC_SHA256 | \ + SSL_CIPHER_ECDHE_RSA_WITH_AES_128_CBC_SHA | \ + SSL_CIPHER_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | \ + SSL_CIPHER_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | \ + SSL_CIPHER_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | \ + SSL_CIPHER_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 | \ + SSL_CIPHER_ECDHE_RSA_WITH_AES_256_CBC_SHA \ +) +/*!< + Turn On All TLS Ciphers. +*/ +/**@}*/ // SSLCipherSuiteID + +/*! +@ingroup SSLCallbacks +@typedef void (*tpfAppSSLCb)(uint8_t u8MsgType, void *pvMsg); +@brief A callback to get SSL notifications. +@param[in] u8MsgType + The type of the message received. +@param[in] pvMsg + A structure to provide notification payload. +*/ +typedef void (*tpfAppSSLCb)(uint8_t u8MsgType, void *pvMsg); + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +FUNCTION PROTOTYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +/*! +@fn \ void m2m_ssl_cb(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr) +@brief Internal SSL callback function. +@param [in] u8OpCode + HIF Opcode type. +@param [in] u16DataSize + HIF data length. +@param [in] u32Addr + HIF address. +*/ +void m2m_ssl_cb(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr); + +/*! +@ingroup SSLFUNCTIONS +@fn int8_t m2m_ssl_init(tpfAppSSLCb pfAppSSLCb); +@brief Initializes the SSL layer. +@param[in] pfAppSSLCb + Application SSL callback function. +@return The function returns @ref M2M_SUCCESS for success and a negative value otherwise. +*/ +int8_t m2m_ssl_init(tpfAppSSLCb pfAppSSLCb); + +/*! +@ingroup SSLFUNCTIONS +@fn int8_t m2m_ssl_handshake_rsp(tstrEccReqInfo *pstrECCResp, uint8_t *pu8RspDataBuff, uint16_t u16RspDataSz); +@brief Sends ECC responses to the WINC. +@param[in] pstrECCResp + ECC Response struct. +@param[in] pu8RspDataBuff + Pointer of the response data to be sent. +@param[in] u16RspDataSz + Response data size. +@return The function returns @ref M2M_SUCCESS for success and a negative value otherwise. +*/ +int8_t m2m_ssl_handshake_rsp(tstrEccReqInfo *pstrECCResp, uint8_t *pu8RspDataBuff, uint16_t u16RspDataSz); + +/*! +@ingroup SSLFUNCTIONS +@fn int8_t m2m_ssl_send_certs_to_winc(uint8_t *pu8Buffer, uint32_t u32BufferSz); +@brief Sends certificates to the WINC. +@param[in] pu8Buffer + Pointer to the certificates. The buffer format must match the format of @ref tstrTlsSrvSecHdr. +@param[in] u32BufferSz + Size of the certificates. +@return The function returns @ref M2M_SUCCESS for success and a negative value otherwise. +*/ +int8_t m2m_ssl_send_certs_to_winc(uint8_t *pu8Buffer, uint32_t u32BufferSz); + +/*! +@ingroup SSLFUNCTIONS +@fn int8_t m2m_ssl_retrieve_cert(uint16_t *pu16CurveType, uint8_t *pu8Hash, uint8_t *pu8Sig, tstrECPoint *pu8Key); +@brief Retrieve the certificate to be verified from the WINC. +@param[in] pu16CurveType + Pointer to the certificate curve type. +@param[in] pu8Hash + Pointer to the certificate hash. +@param[in] pu8Sig + Pointer to the certificate signature. +@param[in] pu8Key + Pointer to the certificate Key. +@return The function returns @ref M2M_SUCCESS for success and a negative value otherwise. +*/ +int8_t m2m_ssl_retrieve_cert(uint16_t *pu16CurveType, uint8_t *pu8Hash, uint8_t *pu8Sig, tstrECPoint *pu8Key); + +/*! +@ingroup SSLFUNCTIONS +@fn int8_t m2m_ssl_retrieve_hash(uint8_t *pu8Hash, uint16_t u16HashSz); +@brief Retrieve the certificate hash. +@param[in] pu8Hash + Pointer to the certificate hash. +@param[in] u16HashSz + Hash size. +@return The function returns @ref M2M_SUCCESS for success and a negative value otherwise. +*/ +int8_t m2m_ssl_retrieve_hash(uint8_t *pu8Hash, uint16_t u16HashSz); + +/*! +@ingroup SSLFUNCTIONS +@fn void m2m_ssl_stop_processing_certs(void); +@brief Allow SSL driver to tidy up in case application does not read all available certificates. +@warning This API must only be called if some certificates are left unread. +@return None. +*/ +void m2m_ssl_stop_processing_certs(void); + +/*! +@ingroup SSLFUNCTIONS +@fn void m2m_ssl_ecc_process_done(void); +@brief Allow SSL driver to tidy up after application has finished processing ECC message. +@warning This API must be called after receiving a SSL callback with message type @ref M2M_SSL_REQ_ECC. +@return None. +*/ +void m2m_ssl_ecc_process_done(void); + +/*! +@ingroup SSLFUNCTIONS +@fn int8_t m2m_ssl_set_active_ciphersuites(uint32_t u32SslCsBMP); +@brief Sets the active cipher suites. +@details Override the default Active SSL ciphers in the SSL module with a certain combination selected by + the caller in the form of a bitmap containing the required ciphers to be on.\n + There is no need to call this function if the application will not change the default cipher suites. +@param[in] u32SslCsBMP + Bitmap containing the desired ciphers to be enabled for the SSL module. The cipher suites are defined in + @ref SSLCipherSuiteID. + The default cipher suites are all cipher suites supported by the firmware with the exception of ECC cipher suites. + The caller can override the default with any desired combination, except for combinations involving both RSA + and ECC; if any RSA ciphersuite is enabled, then firmware will disable all ECC cipher suites. + If u32SslCsBMP does not contain any cipher suites supported by firmware, then the current active list will not + change. +@return + - @ref SOCK_ERR_NO_ERROR + - @ref SOCK_ERR_INVALID_ARG +*/ +int8_t m2m_ssl_set_active_ciphersuites(uint32_t u32SslCsBMP); + +#endif /* __M2M_SSL_H__ */ diff --git a/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_types.h b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_types.h new file mode 100644 index 0000000..1b40eba --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_types.h @@ -0,0 +1,2815 @@ +/** + * + * \file + * + * \brief WINC Application Interface Types. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _M2M_TYPES_H_ +#define _M2M_TYPES_H_ + +#include + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +MACROS +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ +/**@addtogroup VERSIONDEF + */ +/**@{*/ +#define M2M_MAJOR_SHIFT (8) +#define M2M_MINOR_SHIFT (4) +#define M2M_PATCH_SHIFT (0) + +#define M2M_DRV_VERSION_SHIFT (16) +#define M2M_FW_VERSION_SHIFT (0) + +#define M2M_GET_MAJOR(ver_info_hword) ((uint8_t)((ver_info_hword) >> M2M_MAJOR_SHIFT) & 0xff) +#define M2M_GET_MINOR(ver_info_hword) ((uint8_t)((ver_info_hword) >> M2M_MINOR_SHIFT) & 0x0f) +#define M2M_GET_PATCH(ver_info_hword) ((uint8_t)((ver_info_hword) >> M2M_PATCH_SHIFT) & 0x0f) + +#define M2M_GET_FW_VER(ver_info_word) ((uint16_t) ((ver_info_word) >> M2M_FW_VERSION_SHIFT)) +#define M2M_GET_DRV_VER(ver_info_word) ((uint16_t) ((ver_info_word) >> M2M_DRV_VERSION_SHIFT)) + +#define M2M_GET_DRV_MAJOR(ver_info_word) M2M_GET_MAJOR(M2M_GET_DRV_VER(ver_info_word)) +#define M2M_GET_DRV_MINOR(ver_info_word) M2M_GET_MINOR(M2M_GET_DRV_VER(ver_info_word)) +#define M2M_GET_DRV_PATCH(ver_info_word) M2M_GET_PATCH(M2M_GET_DRV_VER(ver_info_word)) + +#define M2M_GET_FW_MAJOR(ver_info_word) M2M_GET_MAJOR(M2M_GET_FW_VER(ver_info_word)) +#define M2M_GET_FW_MINOR(ver_info_word) M2M_GET_MINOR(M2M_GET_FW_VER(ver_info_word)) +#define M2M_GET_FW_PATCH(ver_info_word) M2M_GET_PATCH(M2M_GET_FW_VER(ver_info_word)) + +#define M2M_MAKE_VERSION(major, minor, patch) ( \ + ((uint16_t)((major) & 0xff) << M2M_MAJOR_SHIFT) | \ + ((uint16_t)((minor) & 0x0f) << M2M_MINOR_SHIFT) | \ + ((uint16_t)((patch) & 0x0f) << M2M_PATCH_SHIFT)) + +#define M2M_MAKE_VERSION_INFO(fw_major, fw_minor, fw_patch, drv_major, drv_minor, drv_patch) \ + ( \ + ( ((uint32_t)M2M_MAKE_VERSION((fw_major), (fw_minor), (fw_patch))) << M2M_FW_VERSION_SHIFT) | \ + ( ((uint32_t)M2M_MAKE_VERSION((drv_major), (drv_minor), (drv_patch))) << M2M_DRV_VERSION_SHIFT)) + +/*======*======*======*======* + FIRMWARE VERSION NO INFO + *======*======*======*======*/ + +#define M2M_RELEASE_VERSION_MAJOR_NO (19) +/*!< Firmware Major release version number. +*/ + +#define M2M_RELEASE_VERSION_MINOR_NO (6) +/*!< Firmware Minor release version number. +*/ + +#define M2M_RELEASE_VERSION_PATCH_NO (1) +/*!< Firmware patch release version number. +*/ + +/*======*======*======*======* + SUPPORTED DRIVER VERSION NO INFO + *======*======*======*======*/ + +#define M2M_MIN_REQ_DRV_VERSION_MAJOR_NO (19) +/*!< Driver Major release version number. +*/ + + +#define M2M_MIN_REQ_DRV_VERSION_MINOR_NO (3) +/*!< Driver Minor release version number. +*/ + +#define M2M_MIN_REQ_DRV_VERSION_PATCH_NO (0) +/*!< Driver patch release version number. +*/ + +#if !defined(M2M_RELEASE_VERSION_MAJOR_NO) || !defined(M2M_RELEASE_VERSION_MINOR_NO) +#error Undefined version number +#endif + +/**@}*/ // VERSIONDEF + +/**@addtogroup WLANDefines + * @{ + */ + +#define M2M_BUFFER_MAX_SIZE (1600UL - 4) +/*!< Maximum size for the shared packet buffer. + */ + +#define M2M_MAC_ADDRES_LEN 6 +/*!< The size of the 802 MAC address. + */ + +#define M2M_ETHERNET_HDR_OFFSET 34 +/*!< The offset of the Ethernet header within the WLAN Tx Buffer. + */ + + +#define M2M_ETHERNET_HDR_LEN 14 +/*!< Length of the Ethernet header in bytes. +*/ + + +#define M2M_MAX_SSID_LEN 33 +/*!< 1 more than the max SSID length. + This matches the size of SSID buffers (max SSID length + 1-byte length field). + */ + + +#define M2M_MAX_PSK_LEN 65 +/*!< 1 more than the WPA PSK length (in ASCII format). + This matches the size of the WPA PSK/Passphrase buffer (max ASCII contents + 1-byte length field). + Alternatively it matches the WPA PSK length (in ASCII format) + 1 byte NULL termination. + */ + +#define M2M_MIN_PSK_LEN 9 +/*!< 1 more than the minimum WPA PSK Passphrase length. + It matches the minimum WPA PSK Passphrase length + 1 byte NULL termination. + */ + +#define M2M_DEVICE_NAME_MAX 48 +/*!< Maximum Size for the device name including the NULL termination. + */ + +#define M2M_NTP_MAX_SERVER_NAME_LENGTH 32 +/*!< Maximum NTP server name length +*/ + +#define M2M_LISTEN_INTERVAL 1 +/*!< The STA uses the Listen Interval parameter to indicate to the AP how + many beacon intervals it shall sleep before it retrieves the queued frames + from the AP. +*/ + +#define MAX_HIDDEN_SITES 4 +/*!< + max number of hidden SSID supported by scan request +*/ + +#define M2M_CUST_IE_LEN_MAX 252 +/*!< The maximum size of IE (Information Element). +*/ + +#define M2M_CRED_STORE_FLAG 0x01 +/*!< Flag used in @ref tstrM2mConnCredHdr to indicate that Wi-Fi connection + credentials should be stored in WINC flash. +*/ +#define M2M_CRED_ENCRYPT_FLAG 0x02 +/*!< Flag used in @ref tstrM2mConnCredHdr to indicate that Wi-Fi connection + credentials should be encrypted when stored in WINC flash. +*/ +#define M2M_CRED_IS_STORED_FLAG 0x10 +/*!< Flag used in @ref tstrM2mConnCredHdr to indicate that Wi-Fi connection + credentials are stored in WINC flash. May only be set by WINC firmware. +*/ +#define M2M_CRED_IS_ENCRYPTED_FLAG 0x20 +/*!< Flag used in @ref tstrM2mConnCredHdr to indicate that Wi-Fi connection + credentials are encrypted in WINC flash. May only be set by WINC firmware. +*/ + +#define M2M_WIFI_CONN_BSSID_FLAG 0x01 +/*!< Flag used in @ref tstrM2mConnCredCmn to indicate that Wi-Fi connection + must be restricted to an AP with a certain BSSID. +*/ + +#define M2M_AUTH_1X_USER_LEN_MAX 132 +/*!< The maximum length (in ASCII characters) of domain name + username (including '@' or '\') + for authentication with Enterprise methods. +*/ +#define M2M_AUTH_1X_PASSWORD_LEN_MAX 256 +/*!< The maximum length (in ASCII characters) of password for authentication with Enterprise MSCHAPv2 methods. +*/ +#define M2M_AUTH_1X_PRIVATEKEY_LEN_MAX 256 +/*!< The maximum length (in bytes) of private key modulus for authentication with Enterprise TLS methods. + Private key exponent must be the same length as modulus, pre-padded with 0s if necessary. +*/ +#define M2M_AUTH_1X_CERT_LEN_MAX 1584 +/*!< The maximum length (in bytes) of certificate for authentication with Enterprise TLS methods. +*/ +#define M2M_802_1X_UNENCRYPTED_USERNAME_FLAG 0x80 +/*!< Flag to indicate that the 802.1x user-name should be sent (unencrypted) in the initial EAP + identity response. Intended for use with EAP-TLS only. +*/ +#define M2M_802_1X_PREPEND_DOMAIN_FLAG 0x40 +/*!< Flag to indicate that the 802.1x domain name should be prepended to the user-name: + "Domain\Username". If the flag is not set then domain name is appended to the user-name: + "Username@Domain". (Note that the '@' or '\' must be included in the domain name.) +*/ +#define M2M_802_1X_MSCHAP2_FLAG 0x01 +/*!< Flag to indicate 802.1x MsChapV2 credentials: domain/user-name/password. +*/ +#define M2M_802_1X_TLS_FLAG 0x02 +/*!< Flag to indicate 802.1x TLS credentials: domain/user-name/private-key/certificate. +*/ +#define M2M_802_1X_TLS_CLIENT_CERTIFICATE 1 +/*!< Info type used in @ref tstrM2mWifiAuthInfoHdr to indicate Enterprise TLS client certificate. +*/ + +#define PSK_CALC_LEN 40 +/*!< PSK is 32 bytes generated either: + - from 64 ASCII characters + - by SHA1 operations on up to 63 ASCII characters + 40 byte array is required during SHA1 operations, so we define PSK_CALC_LEN as 40. +*/ + +/********************* + * + * WIFI GROUP requests + */ + +#define M2M_CONFIG_CMD_BASE 1 +/*!< The base value of all the Host configuration commands opcodes. +*/ +#define M2M_STA_CMD_BASE 40 +/*!< The base value of all the Station mode host commands opcodes. +*/ +#define M2M_AP_CMD_BASE 70 +/*!< The base value of all the Access Point mode host commands opcodes. +*/ + +/**@cond P2P_DOC + */ +#define M2M_P2P_CMD_BASE 90 +/*!< The base value of all the P2P mode host commands opcodes. +*/ +/**@endcond*/ //P2P_DOC + +#define M2M_SERVER_CMD_BASE 100 +/*!< The base value of all the power save mode host commands codes. +*/ +#define M2M_GEN_CMD_BASE 105 +/*!< The base value of additional host wifi command opcodes. + * Usage restrictions (eg STA mode only) should always be made clear at the API layer in any case. +*/ +/********************** + * OTA GROUP requests + */ +#define M2M_OTA_CMD_BASE 100 +/*!< The base value of all the OTA mode host commands opcodes. + * The OTA Have special group so can extended from 1-M2M_MAX_GRP_NUM_REQ +*/ +/*********************** + * + * CRYPTO group requests + */ +#define M2M_CRYPTO_CMD_BASE 1 +/*!< The base value of all the crypto mode host commands opcodes. + * The crypto Have special group so can extended from 1-M2M_MAX_GRP_NUM_REQ +*/ + +#define M2M_MAX_GRP_NUM_REQ (127) +/*!< max number of request in one group equal to 127 as the last bit reserved for config or data pkt +*/ + +#define WEP_40_KEY_SIZE (5) +/*!< The size in bytes of a 40-bit wep key. +*/ +#define WEP_104_KEY_SIZE (13) +/*!< The size in bytes of a 104-bit wep key. +*/ + +#define WEP_40_KEY_STRING_SIZE (10) +/*!< The string length of a 40-bit wep key. +*/ +#define WEP_104_KEY_STRING_SIZE (26) +/*!< The string length of a 104-bit wep key. +*/ + +#define WEP_KEY_MAX_INDEX (4) +/*!< WEP key index is in the range 1 to 4 inclusive. (This is decremented to + * result in an index in the range 0 to 3 on air.) +*/ +#define M2M_SHA256_CONTEXT_BUFF_LEN (128) +/*!< sha256 context size +*/ +#define M2M_SCAN_DEFAULT_NUM_SLOTS (2) +/*!< The default number of scan slots used by the WINC board. +*/ +#define M2M_SCAN_DEFAULT_SLOT_TIME (30) +/*!< The default duration in milliseconds of an active scan slot used by the WINC board. +*/ +#define M2M_SCAN_DEFAULT_PASSIVE_SLOT_TIME (300) +/*!< The passive scan slot default duration in ms. +*/ +#define M2M_SCAN_DEFAULT_NUM_PROBE (2) +/*!< The default number of probes per scan slot. +*/ +#define M2M_FASTCONNECT_DEFAULT_RSSI_THRESH (-45) +/*!< The default threshold RSSI for fast reconnection to an AP. +*/ + +/*======*======*======*======* + TLS DEFINITIONS + *======*======*======*======*/ +#define TLS_FILE_NAME_MAX 48 +/*!< Maximum length for each TLS certificate file name including null terminator. +*/ +#define TLS_SRV_SEC_MAX_FILES 8 +/*!< Maximum number of certificates allowed in TLS_SRV section. +*/ +#define TLS_SRV_SEC_START_PATTERN_LEN 8 +/*!< Length of certificate struct start pattern. +*/ + +/*======*======*======*======* + SSL DEFINITIONS + *======*======*======*======*/ + +#define TLS_CRL_DATA_MAX_LEN 64 +/* Every bit have 3dB gain control each. + for example: + 1 ->3db + 3 ->6db + 7 ->9db + */ + uint16_t u8PPAGFor11GN; + /*!< PPA gain for 11GN (as the RF document represented) + PPA_AGC<0:2> Every bit have 3dB gain control each. + for example: + 1 ->3db + 3 ->6db + 7 ->9db + */ +} tstrM2mWifiGainsParams; + +/*! +@struct \ + tstrM2mConnCredHdr + +@brief + Wi-Fi Connect Credentials Header +*/ +typedef struct { + uint16_t u16CredSize; + /*!< Total size of connect credentials, not including tstrM2mConnCredHdr: + tstrM2mConnCredCmn + Auth details (variable size) + */ + uint8_t u8CredStoreFlags; + /*!< Credential storage options represented with flags: + @ref M2M_CRED_STORE_FLAG + @ref M2M_CRED_ENCRYPT_FLAG + @ref M2M_CRED_IS_STORED_FLAG + @ref M2M_CRED_IS_ENCRYPTED_FLAG + */ + uint8_t u8Channel; + /*!< Wi-Fi channel(s) on which to attempt connection. */ +} tstrM2mConnCredHdr; + +/*! +@struct \ + tstrM2mConnCredCmn + +@brief + Wi-Fi Connect Credentials Common section + */ +typedef struct { + uint8_t u8SsidLen; + /*!< SSID length. */ + uint8_t au8Ssid[M2M_MAX_SSID_LEN-1]; + /*!< SSID. */ + uint8_t u8Options; + /*!< Common flags: + @ref M2M_WIFI_CONN_BSSID_FLAG + */ + uint8_t au8Bssid[M2M_MAC_ADDRES_LEN]; + /*!< BSSID to restrict on, or all 0 if M2M_WIFI_CONN_BSSID_FLAG is not set in u8Options. */ + uint8_t u8AuthType; + /*!< Connection auth type. See @ref tenuM2mSecType. */ + uint8_t au8Rsv[3]; + /*!< Reserved for future use. Set to 0. */ +} tstrM2mConnCredCmn; + +/*! +@struct \ + tstrM2mWifiWep + +@brief + WEP security key header. +*/ +typedef struct { + uint8_t u8KeyIndex; + /*!< WEP Key Index. */ + uint8_t u8KeyLen; + /*!< WEP Key Size. */ + uint8_t au8WepKey[WEP_104_KEY_SIZE]; + /*!< WEP Key represented in bytes (padded with 0's if WEP-40). */ + uint8_t u8Rsv; + /*!< Reserved for future use. Set to 0. */ +} tstrM2mWifiWep; + +/*! +@struct \ + tstrM2mWifiPsk + +@brief + Passphrase and PSK for WPA(2) PSK. +*/ +typedef struct { + uint8_t u8PassphraseLen; + /*!< Length of passphrase (8 to 63) or 64 if au8Passphrase contains ASCII representation of PSK. */ + uint8_t au8Passphrase[M2M_MAX_PSK_LEN-1]; + /*!< Passphrase, or ASCII representation of PSK if u8PassphraseLen is 64. */ + uint8_t au8Psk[PSK_CALC_LEN]; + /*!< PSK calculated by firmware. Driver sets this to 0. */ + uint8_t u8PskCalculated; + /*!< Flag used by firmware to avoid unnecessary recalculation of PSK. Driver sets this to 0. */ + uint8_t au8Rsv[2]; + /*!< Reserved for future use. Set to 0. */ +} tstrM2mWifiPsk; + +/*! +@struct \ + tstrM2mWifi1xHdr + +@brief + Wi-Fi Authentication 802.1x header for parameters. + The parameters (Domain, UserName, PrivateKey/Password) are appended to this structure. +*/ +typedef struct { + uint8_t u8Flags; + /*!< 802.1x-specific flags: + @ref M2M_802_1X_MSCHAP2_FLAG + @ref M2M_802_1X_TLS_FLAG + @ref M2M_802_1X_UNENCRYPTED_USERNAME_FLAG + @ref M2M_802_1X_PREPEND_DOMAIN_FLAG + */ + uint8_t u8DomainLength; + /*!< Length of Domain. (Offset of Domain understood to be 0.) */ + uint16_t u16UserNameLength; + /*!< Length of UserName. (Offset of UserName understood to be u8DomainLength.) */ + uint16_t u16PrivateKeyOffset; + /*!< Offset within au81xAuthDetails of PrivateKey/Password. */ + uint16_t u16PrivateKeyLength; + /*!< Length of PrivateKey/Password. In the case of PrivateKey, this is the length of the modulus. */ + uint16_t u16CertificateOffset; + /*!< Offset within au81xAuthDetails of Certificate. */ + uint16_t u16CertificateLength; + /*!< Length of Certificate. */ + uint8_t au81xAuthDetails[]; + /*!< Placeholder for concatenation of Domain, UserName, PrivateKey/Password, Certificate. + Padding (0s) is placed between UserName and PrivateKey/Password so that + PrivateKey/Password begins on a 4-byte boundary. + Certificate (for 1x Tls only) is sent over HIF separately from the other parameters. */ +} tstrM2mWifi1xHdr; + +/*! +@struct \ + tstrM2mWifiAuthInfoHdr + +@brief + Generic Wi-Fi authentication information to be sent in a separate HIF message of type + @ref M2M_WIFI_IND_CONN_PARAM (preceding @ref M2M_WIFI_REQ_CONN). +*/ +typedef struct { + uint8_t u8Type; + /*!< Type of info: + @ref M2M_802_1X_TLS_CLIENT_CERTIFICATE + */ + uint8_t au8Rsv[3]; + /*!< Reserved for future use. Set to 0. */ + uint16_t u16InfoPos; + /*!< Information about positioning of the Info. The interpretation depends on u8Type. */ + uint16_t u16InfoLen; + /*!< Info length (not including this header). */ + uint8_t au8Info[]; + /*!< Placeholder for info. */ +} tstrM2mWifiAuthInfoHdr; + +/*! +@struct \ + tstrM2mWifiConnHdr + +@brief + Wi-Fi Connect Request (new format) for use with @ref M2M_WIFI_REQ_CONN. + This structure is sent across the HIF along with the relevant auth details. One of: + @ref tstrM2mWifiPsk + @ref tstrM2mWifiWep + @ref tstrM2mWifi1xHdr + If further authentication details need to be sent (such as client certificate for 1x TLS), they + are sent with header @ref tstrM2mWifiAuthInfoHdr in a preceding HIF message of type + @ref M2M_WIFI_IND_CONN_PARAM +*/ +typedef struct { + tstrM2mConnCredHdr strConnCredHdr; + /*!< Credentials header. */ + tstrM2mConnCredCmn strConnCredCmn; + /*!< Credentials common section, including auth type and SSID. */ +} tstrM2mWifiConnHdr; + +/*! +@struct \ + tstrM2mWifiApId + +@brief + Specify an access point (by SSID) +*/ +typedef struct { + uint8_t au8SSID[M2M_MAX_SSID_LEN]; + /*!< + SSID of the desired AP, prefixed by length byte. + First byte 0xFF used to mean all access points. + */ + uint8_t __PAD__[3]; + /*!< Padding bytes for forcing 4-byte alignment + */ +} tstrM2mWifiApId; + +/*! +@struct \ + tstrM2MGenericResp + +@brief + Generic success/error response +*/ +typedef struct { + int8_t s8ErrorCode; + /*!< + Generic success/error code. Possible values are: + - @ref M2M_SUCCESS + - @ref M2M_ERR_FAIL + */ + uint8_t __PAD24__[3]; +} tstrM2MGenericResp; + +/*! +@struct \ + tstrM2MWPSConnect + +@brief + This struct stores the WPS configuration parameters. + +@sa + tenuWPSTrigger +*/ +typedef struct { + uint8_t u8TriggerType; + /*!< WPS triggering method (Push button or PIN) */ + char acPinNumber[8]; + /*!< WPS PIN No (for PIN method) */ + uint8_t __PAD24__[3]; + /*!< Padding bytes for forcing 4-byte alignment */ +} tstrM2MWPSConnect; + +/*! +@struct \ + tstrM2MWPSInfo + +@brief WPS Result + + This structure is passed to the application in response to a WPS request. If the WPS session is completed successfully, the + structure will have Non-ZERO authentication type. If the WPS Session fails (due to error or timeout) the authentication type + is set to ZERO. + +@sa + tenuM2mSecType +*/ +typedef struct { + uint8_t u8AuthType; + /*!< Network authentication type. */ + uint8_t u8Ch; + /*!< RF Channel for the AP. */ + uint8_t au8SSID[M2M_MAX_SSID_LEN]; + /*!< SSID obtained from WPS. */ + uint8_t au8PSK[M2M_MAX_PSK_LEN]; + /*!< PSK for the network obtained from WPS. */ + +} tstrM2MWPSInfo; + + +/*! +@struct \ + tstrM2MDefaultConnResp + +@brief + This struct contains the response error of m2m_default_connect. + +@sa + M2M_DEFAULT_CONN_SCAN_MISMATCH + M2M_DEFAULT_CONN_EMPTY_LIST +*/ +typedef struct { + int8_t s8ErrorCode; + /*!< + Default connect error code. possible values are: + - M2M_DEFAULT_CONN_EMPTY_LIST + - M2M_DEFAULT_CONN_SCAN_MISMATCH + */ + uint8_t __PAD24__[3]; +} tstrM2MDefaultConnResp; + +/*! +@struct \ + tstrM2MScanOption + +@brief + This struct contains the configuration options for Wi-Fi scan. + +@sa + tenuM2mScanCh + tstrM2MScan +*/ +typedef struct { + uint8_t u8NumOfSlot; + /*!< The number of scan slots per channel. Refers to both active and passive scan. + Valid settings are in the range 0Microchip Support + */ + +#include "../driver/winc_adapter.h" +#include "../common/winc_defines.h" +#include "../common/winc_debug.h" +#include "m2m_types.h" +#include "m2m_wifi.h" +#include "m2m_fwinfo.h" +#include "../driver/winc_hif.h" +#include "../driver/winc_drv.h" +#include "../driver/winc_asic.h" + +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mPwrMode) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mTxPwrLevel) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mWiFiGainIdx) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mEnableLogs) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mBatteryVoltage) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mWiFiRoaming) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mConnCredHdr) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mConnCredCmn) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mWifiWep) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mWifiPsk) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mWifi1xHdr) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mWifiAuthInfoHdr) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mWifiConnHdr) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mWifiApId) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2MGenericResp) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2MWPSConnect) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2MDefaultConnResp) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2MScanRegion) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrCyptoResp) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mScanDone) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mReqScanResult) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mWifiscanResult) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mWifiStateChanged) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mPsType) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mLsnInt) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2MWifiMonitorModeCtrl) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2MWifiRxPacketInfo) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2MP2PConnect) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2MAPConfig) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2MAPConfigExt) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2MAPModeConfig) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mServerInit) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mClientState) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2Mservercmd) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2mSetMacAddress) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2MProvisionModeConfig) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2MConnInfo) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrTlsCrlEntry) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2MSNTPConfig) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrOtaUpdateStatusResp) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrOtaUpdateInfo) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrOtaHostFileGetStatusResp) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrOtaHostFileReadStatusResp) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrOtaHostFileEraseStatusResp) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrSystemTime) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrM2MMulticastMac) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrPrng) +CONF_WINC_HIF_STRUCT_SIZE_CHECK(tstrConfAutoRate) + +static uint8_t gu8ChNum; +static uint8_t gu8WifiState = WIFI_STATE_DEINIT; +static tpfAppWifiCb gpfAppWifiCb = NULL; +static uint8_t gu8scanInProgress = 0; +static tenuPowerSaveModes genuPsMode = M2M_NO_PS; + +#ifdef ETH_MODE +static tpfAppEthCb gpfAppEthCb = NULL; +static uint8_t *gau8ethRcvBuf = NULL; +static uint16_t gu16ethRcvBufSize; +#endif + +typedef struct +{ + uint_fast8_t u8OpCode; + uint_fast16_t u16DataSize; +} tstrWiFiCbEntry; + +static tstrWiFiCbEntry WiFiCbTable[] = { + {M2M_WIFI_RESP_CON_STATE_CHANGED, sizeof(tstrM2mWifiStateChanged)}, + {M2M_WIFI_RESP_GET_SYS_TIME, sizeof(tstrSystemTime)}, + {M2M_WIFI_RESP_CONN_INFO, sizeof(tstrM2MConnInfo)}, + {M2M_WIFI_REQ_DHCP_CONF, sizeof(tstrM2MIPConfig)}, + {M2M_WIFI_REQ_DHCP_FAILURE, 0}, + {M2M_WIFI_REQ_WPS, sizeof(tstrM2MWPSInfo)}, + {M2M_WIFI_RESP_IP_CONFLICT, sizeof(uint32_t)}, + {M2M_WIFI_RESP_SCAN_DONE, sizeof(tstrM2mScanDone)}, + {M2M_WIFI_RESP_SCAN_RESULT, sizeof(tstrM2mWifiscanResult)}, + {M2M_WIFI_RESP_CURRENT_RSSI, 4}, + {M2M_WIFI_RESP_CLIENT_INFO, 4}, + {M2M_WIFI_RESP_PROVISION_INFO, sizeof(tstrM2MProvisionInfo)}, + {M2M_WIFI_RESP_DEFAULT_CONNECT, sizeof(tstrM2MDefaultConnResp)}, + {M2M_WIFI_REQRSP_DELETE_APID, sizeof(tstrM2MGenericResp)}, +#ifdef ETH_MODE + {M2M_WIFI_RESP_ETHERNET_RX_PACKET, sizeof(tstrM2mIpRsvdPkt)}, +#endif + {M2M_WIFI_MAX_STA_ALL, 0} +}; + +typedef union +{ + tstrM2mWifiStateChanged strStateChanged; + tstrSystemTime strSysTime; + tstrM2MConnInfo strConnInfo; + tstrM2MIPConfig strIpConfig; + tstrM2MWPSInfo strWps; + uint32_t u32ConflictedIP; + tstrM2mScanDone strScanDone; + tstrM2mWifiscanResult strScanResult; + tstrM2MProvisionInfo strProvInfo; + tstrM2MDefaultConnResp strDefaultConnResp; + tstrM2MGenericResp strGenericResp; +#ifdef ETH_MODE + tstrM2mIpRsvdPkt strM2mRsvd; +#endif +} tuWiFiCbMsgs; + +/** +@fn void m2m_wifi_cb(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr) +@brief Internal WiFi callback function. +@param[in] u8OpCode + HIF Opcode type. +@param[in] u16DataSize + HIF data length. +@param[in] u32Addr + HIF address. +*/ +void m2m_wifi_cb(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr) +{ + UNUSED_VAR(u16DataSize); + + tstrWiFiCbEntry *pWiFiCbEntry; + tuWiFiCbMsgs wifiMsg; + + pWiFiCbEntry = WiFiCbTable; + + while(pWiFiCbEntry->u8OpCode != M2M_WIFI_MAX_STA_ALL) + { + if (pWiFiCbEntry->u8OpCode == u8OpCode) + { + if (pWiFiCbEntry->u16DataSize) + { + if (M2M_SUCCESS != winc_hif_receive(u32Addr, &wifiMsg, pWiFiCbEntry->u16DataSize)) + { + return; + } + } + + if (!gpfAppWifiCb) + break; + + if (pWiFiCbEntry->u16DataSize) + { + if (u8OpCode == M2M_WIFI_RESP_IP_CONFLICT) + { + WINC_LOG_INFO("Conflicted IP \" %u.%u.%u.%u \"", + BYTE_0(wifiMsg.u32ConflictedIP), BYTE_1(wifiMsg.u32ConflictedIP), BYTE_2(wifiMsg.u32ConflictedIP), BYTE_3(wifiMsg.u32ConflictedIP)); + } + else if (u8OpCode == M2M_WIFI_RESP_SCAN_DONE) + { + gu8scanInProgress = 0; + gu8ChNum = wifiMsg.strScanDone.u8NumofCh; + } + + gpfAppWifiCb(u8OpCode, &wifiMsg); + } + else + { + gpfAppWifiCb(u8OpCode, NULL); + } + + break; + } + + pWiFiCbEntry++; + } + + if(u8OpCode == M2M_WIFI_RESP_GET_PRNG) + { + tstrPrng strPrng; + if(winc_hif_receive(u32Addr, &strPrng, sizeof(tstrPrng)) == M2M_SUCCESS) + { + if(winc_hif_receive(u32Addr + sizeof(tstrPrng), strPrng.pu8RngBuff, strPrng.u16PrngSize) == M2M_SUCCESS) + { + if(gpfAppWifiCb) + gpfAppWifiCb(M2M_WIFI_RESP_GET_PRNG,&strPrng); + } + } + } +#ifdef ETH_MODE + else if(u8OpCode == M2M_WIFI_RESP_ETHERNET_RX_PACKET) + { + tstrM2mIpCtrlBuf strM2mIpCtrlBuf; + uint16_t u16Offset = wifiMsg.strM2mRsvd.u16PktOffset; + strM2mIpCtrlBuf.u16RemainingDataSize = wifiMsg.strM2mRsvd.u16PktSz; + if((gpfAppEthCb) && (gau8ethRcvBuf) && (gu16ethRcvBufSize > 0)) + { + do + { + if(strM2mIpCtrlBuf.u16RemainingDataSize > gu16ethRcvBufSize) + { + strM2mIpCtrlBuf.u16DataSize = gu16ethRcvBufSize; + } + else + { + strM2mIpCtrlBuf.u16DataSize = strM2mIpCtrlBuf.u16RemainingDataSize; + } + + if(winc_hif_receive(u32Addr + u16Offset, gau8ethRcvBuf, strM2mIpCtrlBuf.u16DataSize) == M2M_SUCCESS) + { + strM2mIpCtrlBuf.u16RemainingDataSize -= strM2mIpCtrlBuf.u16DataSize; + u16Offset += strM2mIpCtrlBuf.u16DataSize; + gpfAppEthCb(M2M_WIFI_RESP_ETHERNET_RX_PACKET, gau8ethRcvBuf, &(strM2mIpCtrlBuf)); + } + else + { + break; + } + } + while (strM2mIpCtrlBuf.u16RemainingDataSize > 0); + } + } +#endif /* ETH_MODE */ +} + +int8_t m2m_wifi_download_mode(void) +{ + if (WINC_DRV_SUCCESS != winc_drv_init(true)) + return M2M_ERR_FAIL; + + winc_chip_interrupts_enable(); + gu8WifiState = WIFI_STATE_INIT; + + return M2M_SUCCESS; +} + +static int8_t m2m_validate_ap_parameters(const tstrM2MAPModeConfig *pstrM2MAPModeConfig) +{ + int8_t s8Ret = M2M_SUCCESS; + /* Check for incoming pointer */ + if(pstrM2MAPModeConfig == NULL) + { + WINC_LOG_ERROR("INVALID POINTER"); + s8Ret = M2M_ERR_FAIL; + goto ERR1; + } + /* Check for SSID */ + if((strlen((const char*)pstrM2MAPModeConfig->strApConfig.au8SSID) <= 0) || (strlen((const char*)pstrM2MAPModeConfig->strApConfig.au8SSID) >= M2M_MAX_SSID_LEN)) + { + WINC_LOG_ERROR("INVALID SSID"); + s8Ret = M2M_ERR_FAIL; + goto ERR1; + } + /* Check for Channel */ + if(pstrM2MAPModeConfig->strApConfig.u8ListenChannel > M2M_WIFI_CH_14 || pstrM2MAPModeConfig->strApConfig.u8ListenChannel < M2M_WIFI_CH_1) + { + WINC_LOG_ERROR("INVALID CH"); + s8Ret = M2M_ERR_FAIL; + goto ERR1; + } + /* Check for DHCP Server IP address */ + if(!(pstrM2MAPModeConfig->strApConfig.au8DHCPServerIP[0] || pstrM2MAPModeConfig->strApConfig.au8DHCPServerIP[1])) + { + if(!(pstrM2MAPModeConfig->strApConfig.au8DHCPServerIP[2])) + { + WINC_LOG_ERROR("INVALID DHCP SERVER IP"); + s8Ret = M2M_ERR_FAIL; + goto ERR1; + } + } + /* Check for Security */ + if(pstrM2MAPModeConfig->strApConfig.u8SecType == M2M_WIFI_SEC_OPEN) + { + goto ERR1; + } + else if(pstrM2MAPModeConfig->strApConfig.u8SecType == M2M_WIFI_SEC_WEP) + { + /* Check for WEP Key index */ + if((pstrM2MAPModeConfig->strApConfig.u8KeyIndx == 0) || (pstrM2MAPModeConfig->strApConfig.u8KeyIndx > WEP_KEY_MAX_INDEX)) + { + WINC_LOG_ERROR("INVALID KEY INDEX"); + s8Ret = M2M_ERR_FAIL; + goto ERR1; + } + /* Check for WEP Key size */ + if( (pstrM2MAPModeConfig->strApConfig.u8KeySz != WEP_40_KEY_STRING_SIZE) && + (pstrM2MAPModeConfig->strApConfig.u8KeySz != WEP_104_KEY_STRING_SIZE) + ) + { + WINC_LOG_ERROR("INVALID KEY STRING SIZE"); + s8Ret = M2M_ERR_FAIL; + goto ERR1; + } + + if((strlen((const char*)pstrM2MAPModeConfig->strApConfig.au8WepKey) <= 0) || (strlen((const char*)pstrM2MAPModeConfig->strApConfig.au8WepKey) > WEP_104_KEY_STRING_SIZE)) + { + WINC_LOG_ERROR("INVALID KEY SIZE"); + s8Ret = M2M_ERR_FAIL; + goto ERR1; + } + } + else if(pstrM2MAPModeConfig->strApConfig.u8SecType == M2M_WIFI_SEC_WPA_PSK) + { + /* Check for WPA Key size */ + if( ((pstrM2MAPModeConfig->strApConfig.u8KeySz + 1) < M2M_MIN_PSK_LEN) || ((pstrM2MAPModeConfig->strApConfig.u8KeySz + 1) > M2M_MAX_PSK_LEN)) + { + WINC_LOG_ERROR("INVALID WPA KEY SIZE"); + s8Ret = M2M_ERR_FAIL; + goto ERR1; + } + } + else + { + WINC_LOG_ERROR("INVALID AUTHENTICATION MODE"); + s8Ret = M2M_ERR_FAIL; + goto ERR1; + } + +ERR1: + return s8Ret; +} + +static int8_t m2m_validate_scan_options(tstrM2MScanOption *ptstrM2MScanOption) +{ + /* Check for incoming pointer */ + if (ptstrM2MScanOption == NULL) + { + WINC_LOG_ERROR("INVALID POINTER"); + return M2M_ERR_FAIL; + } + /* Check for valid No of slots */ + if (ptstrM2MScanOption->u8NumOfSlot == 0) + { + WINC_LOG_ERROR("INVALID No of scan slots! %u", ptstrM2MScanOption->u8NumOfSlot); + return M2M_ERR_FAIL; + } + /* Check for valid time of slots */ + if ((ptstrM2MScanOption->u8SlotTime < 10) || (ptstrM2MScanOption->u8SlotTime > 250)) + { + WINC_LOG_ERROR("INVALID scan slot time! %u", ptstrM2MScanOption->u8SlotTime); + return M2M_ERR_FAIL; + } + /* Check for valid No of probe requests per slot */ + if ((ptstrM2MScanOption->u8ProbesPerSlot == 0) || (ptstrM2MScanOption->u8ProbesPerSlot > M2M_SCAN_DEFAULT_NUM_PROBE)) + { + WINC_LOG_ERROR("INVALID No of probe requests per scan slot %u", ptstrM2MScanOption->u8ProbesPerSlot); + return M2M_ERR_FAIL; + } + /* Check for valid RSSI threshold */ + if (ptstrM2MScanOption->s8RssiThresh >= 0) + { + WINC_LOG_ERROR("INVALID RSSI threshold %d", ptstrM2MScanOption->s8RssiThresh); + return M2M_ERR_FAIL; + } + + return M2M_SUCCESS; +} + +int8_t m2m_wifi_send_crl(tstrTlsCrlInfo *pCRL) +{ + return winc_hif_send(M2M_REQ_GROUP_SSL, M2M_SSL_IND_CRL|M2M_REQ_DATA_PKT, NULL, 0, pCRL, sizeof(tstrTlsCrlInfo), 0); +} + +int8_t m2m_wifi_init_hold(void) +{ + if (WINC_DRV_SUCCESS != winc_drv_init(false)) + return M2M_ERR_FAIL; + + gu8WifiState = WIFI_STATE_INIT; + + return M2M_SUCCESS; +} + +int8_t m2m_wifi_init_start(tstrWifiInitParam *pWifiInitParam) +{ + tstrM2mRev strtmp; + int8_t s8Ret; + uint32_t u32DriverVerInfo = M2M_MAKE_VERSION_INFO(M2M_RELEASE_VERSION_MAJOR_NO,\ + M2M_RELEASE_VERSION_MINOR_NO, M2M_RELEASE_VERSION_PATCH_NO,\ + M2M_MIN_REQ_DRV_VERSION_MAJOR_NO, M2M_MIN_REQ_DRV_VERSION_MINOR_NO,\ + M2M_MIN_REQ_DRV_VERSION_PATCH_NO); + + if(pWifiInitParam == NULL) + return M2M_ERR_INVALID_ARG; + + gpfAppWifiCb = pWifiInitParam->pfAppWifiCb; + +#ifdef ETH_MODE + gpfAppEthCb = pWifiInitParam->strEthInitParam.pfAppEthCb; + gau8ethRcvBuf = pWifiInitParam->strEthInitParam.au8ethRcvBuf; + gu16ethRcvBufSize = pWifiInitParam->strEthInitParam.u16ethRcvBufSize; +#endif /* ETH_MODE */ + + gu8scanInProgress = 0; + /* Apply device specific initialization. */ + + /* u8WifiMode | u8BootATE | u8EthMode | u32StateRegVal + ---------------------------------------------------------------------- + M2M_WIFI_MODE_NORMAL | false | false | u32DriverVerInfo + M2M_WIFI_MODE_ATE_HIGH | true | false | NBIT20 + M2M_WIFI_MODE_ATE_LOW | true | false | 0 + M2M_WIFI_MODE_ETHERNET | false | true | u32DriverVerInfo + */ + +#ifdef ETH_MODE + if (WINC_DRV_SUCCESS != winc_drv_start(false, (pWifiInitParam->strEthInitParam.u8EthernetEnable == M2M_WIFI_MODE_ETHERNET) ? true : false, u32DriverVerInfo)) + return M2M_ERR_INIT; +#else + if (WINC_DRV_SUCCESS != winc_drv_start(false, false, u32DriverVerInfo)) + return M2M_ERR_INIT; +#endif + + WINC_LOG_INFO("DriverVerInfo: 0x%08" PRIx32, u32DriverVerInfo); + + gu8WifiState = WIFI_STATE_START; + + /* Initialize host interface module */ + if (M2M_SUCCESS != winc_hif_init()) + return M2M_ERR_INIT; + + s8Ret = m2m_wifi_get_firmware_version(&strtmp); + + WINC_LOG_INFO("Firmware ver : %u.%u.%u Svnrev %u", strtmp.u8FirmwareMajor, strtmp.u8FirmwareMinor, strtmp.u8FirmwarePatch,strtmp.u16FirmwareSvnNum); + WINC_LOG_INFO("Firmware Build %s Time %s",strtmp.BuildDate, strtmp.BuildTime); + WINC_LOG_INFO("Firmware Min driver ver : %u.%u.%u", strtmp.u8DriverMajor, strtmp.u8DriverMinor, strtmp.u8DriverPatch); + WINC_LOG_INFO("Driver ver: %u.%u.%u", M2M_RELEASE_VERSION_MAJOR_NO, M2M_RELEASE_VERSION_MINOR_NO, M2M_RELEASE_VERSION_PATCH_NO); + WINC_LOG_INFO("Driver built at %s\t%s", __DATE__, __TIME__); + + if(M2M_ERR_FW_VER_MISMATCH == s8Ret) + { + WINC_LOG_ERROR("Mismatch Firmware Version"); + } + + return s8Ret; +} + +int8_t m2m_wifi_init(tstrWifiInitParam *pWifiInitParam) +{ + int8_t ret = M2M_SUCCESS; + + ret = m2m_wifi_init_hold(); + if (ret == M2M_SUCCESS) + { + ret = m2m_wifi_init_start(pWifiInitParam); + } + return ret; +} + +int8_t m2m_wifi_deinit(void *pVArg) +{ + UNUSED_VAR(pVArg); + + gu8WifiState = WIFI_STATE_DEINIT; + winc_hif_deinit(); + + winc_drv_deinit(); + + return M2M_SUCCESS; +} + +int8_t m2m_wifi_handle_events(void *pVArg) +{ + UNUSED_VAR(pVArg); + + return winc_hif_handle_isr(); +} + +int8_t m2m_wifi_delete_sc(char *pcSsid, uint8_t u8SsidLen) +{ + UNUSED_VAR(pcSsid); + UNUSED_VAR(u8SsidLen); + + tstrM2mWifiApId strApId; + memset(&strApId, 0, sizeof(strApId)); + strApId.au8SSID[0] = 0xFF; // Special value used to cause firmware to delete all entries. + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQRSP_DELETE_APID, &strApId, sizeof(tstrM2mWifiApId)); +} + +int8_t m2m_wifi_default_connect(void) +{ + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_DEFAULT_CONNECT, NULL, 0); +} + +/*************************************************************************************************/ +/* WIFI CONNECT INTERNAL FUNCTIONS */ +/*************************************************************************************************/ +static int8_t m2m_wifi_connect_prepare_msg( + tenuCredStoreOption enuCredStoreOption, + tenuM2mSecType enuAuthType, + uint16_t u16AuthSize, + tstrNetworkId *pstrNetworkId, + tstrM2mWifiConnHdr *pstrWifiConn +) +{ + int8_t ret = M2M_ERR_FAIL; + uint16_t u16CredSize = sizeof(tstrM2mConnCredCmn) + u16AuthSize; + + /* Check application params. */ + if ( + (pstrNetworkId == NULL) + || (pstrNetworkId->pu8Ssid == NULL) + || (pstrNetworkId->u8SsidLen >= M2M_MAX_SSID_LEN) + ) + goto INVALID_ARG; + + if (pstrWifiConn != NULL) + { + tstrM2mConnCredHdr *pstrHdr = &pstrWifiConn->strConnCredHdr; + tstrM2mConnCredCmn *pstrCmn = &pstrWifiConn->strConnCredCmn; + + memset(pstrWifiConn, 0, sizeof(tstrM2mWifiConnHdr)); + + pstrHdr->u16CredSize = u16CredSize; + switch (enuCredStoreOption) + { + case WIFI_CRED_SAVE_ENCRYPTED: + pstrHdr->u8CredStoreFlags |= M2M_CRED_ENCRYPT_FLAG; + // intentional fall through... + case WIFI_CRED_SAVE_UNENCRYPTED: + pstrHdr->u8CredStoreFlags |= M2M_CRED_STORE_FLAG; + // intentional fall through... + case WIFI_CRED_DONTSAVE: + break; + default: + goto INVALID_ARG; + } + + if (pstrNetworkId->enuChannel == M2M_WIFI_CH_ALL) + pstrHdr->u8Channel = (uint8_t)(pstrNetworkId->enuChannel); + else if ((pstrNetworkId->enuChannel <= M2M_WIFI_CH_14) && (pstrNetworkId->enuChannel >= M2M_WIFI_CH_1)) + pstrHdr->u8Channel = (uint8_t)(pstrNetworkId->enuChannel) - 1; + else + goto INVALID_ARG; + + if ((enuAuthType == M2M_WIFI_SEC_INVALID) || (enuAuthType >= M2M_WIFI_NUM_AUTH_TYPES)) + goto INVALID_ARG; + pstrCmn->u8AuthType = (uint8_t)enuAuthType; + + pstrCmn->u8SsidLen = pstrNetworkId->u8SsidLen; + memcpy(pstrCmn->au8Ssid, pstrNetworkId->pu8Ssid, pstrNetworkId->u8SsidLen); + if (pstrNetworkId->pu8Bssid != NULL) + { + pstrCmn->u8Options = M2M_WIFI_CONN_BSSID_FLAG; + memcpy(pstrCmn->au8Bssid, pstrNetworkId->pu8Bssid, M2M_MAC_ADDRES_LEN); + } + /* Everything is ok, set return value. */ + ret = M2M_SUCCESS; + } + return ret; +INVALID_ARG: + return M2M_ERR_INVALID_ARG; +} + +/* Convert hexchar to value 0-15 */ +static uint8_t hexchar_2_val(uint8_t ch) +{ + ch -= 0x30; + if (ch <= 9) + return ch; + ch |= 0x20; + ch -= 0x31; + if (ch <= 5) + return ch + 10; + return 0xFF; +} + +/* Convert hexstring to bytes */ +static int8_t hexstr_2_bytes(uint8_t *pu8Out, uint8_t *pu8In, uint8_t u8SizeOut) +{ + while (u8SizeOut--) + { + uint8_t u8Out = hexchar_2_val(*pu8In++); + if (u8Out > 0xF) + return M2M_ERR_INVALID_ARG; + *pu8Out = u8Out * 0x10; + u8Out = hexchar_2_val(*pu8In++); + if (u8Out > 0xF) + return M2M_ERR_INVALID_ARG; + *pu8Out += u8Out; + pu8Out++; + } + return M2M_SUCCESS; +} + +/*************************************************************************************************/ +/* WIFI CONNECT APIS */ +/*************************************************************************************************/ +int8_t m2m_wifi_connect_open(tenuCredStoreOption enuCredStoreOption, tstrNetworkId *pstrNetworkId) +{ + int8_t ret = M2M_ERR_INVALID_ARG; + tstrM2mWifiConnHdr strConnHdr; + + ret = m2m_wifi_connect_prepare_msg(enuCredStoreOption, M2M_WIFI_SEC_OPEN, 0, pstrNetworkId, &strConnHdr); + if (ret == M2M_SUCCESS) + { + ret = winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_CONN, &strConnHdr, sizeof(strConnHdr)); + } + return ret; +} + +int8_t m2m_wifi_connect_wep(tenuCredStoreOption enuCredStoreOption, tstrNetworkId *pstrNetworkId, tstrAuthWep *pstrAuthWep) +{ + int8_t ret = M2M_ERR_INVALID_ARG; + + if ( + (pstrAuthWep != NULL) && (pstrAuthWep->pu8WepKey != NULL) + && (pstrAuthWep->u8KeyIndx > 0) && (pstrAuthWep->u8KeyIndx <= WEP_KEY_MAX_INDEX) + && ((pstrAuthWep->u8KeySz == WEP_104_KEY_STRING_SIZE) || (pstrAuthWep->u8KeySz == WEP_40_KEY_STRING_SIZE)) + ) + { + tstrM2mWifiConnHdr strConnHdr; + + ret = m2m_wifi_connect_prepare_msg( enuCredStoreOption, + M2M_WIFI_SEC_WEP, + sizeof(tstrM2mWifiWep), + pstrNetworkId, + &strConnHdr); + + if (ret == M2M_SUCCESS) + { + tstrM2mWifiWep strWep; + + strWep.u8KeyIndex = pstrAuthWep->u8KeyIndx - 1; + strWep.u8KeyLen = pstrAuthWep->u8KeySz/2; + hexstr_2_bytes(strWep.au8WepKey, (pstrAuthWep->pu8WepKey), strWep.u8KeyLen); + + ret = winc_hif_send(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_CONN | M2M_REQ_DATA_PKT, + &strConnHdr, sizeof(tstrM2mWifiConnHdr), + &strWep, sizeof(tstrM2mWifiWep), sizeof(tstrM2mWifiConnHdr)); + } + } + + return ret; +} + +int8_t m2m_wifi_connect_psk(tenuCredStoreOption enuCredStoreOption, tstrNetworkId *pstrNetworkId, tstrAuthPsk *pstrAuthPsk) +{ + int8_t ret = M2M_ERR_INVALID_ARG; + + if (pstrAuthPsk != NULL) + { + tstrM2mWifiConnHdr strConnHdr; + + ret = m2m_wifi_connect_prepare_msg( enuCredStoreOption, + M2M_WIFI_SEC_WPA_PSK, + sizeof(tstrM2mWifiPsk), + pstrNetworkId, + &strConnHdr); + + if (ret == M2M_SUCCESS) + { + tstrM2mWifiPsk strPsk; + + memset(&strPsk, 0, sizeof(tstrM2mWifiPsk)); + if (pstrAuthPsk->pu8Psk != NULL) + { + if (pstrAuthPsk->pu8Passphrase != NULL) + ret = M2M_ERR_INVALID_ARG; + else + { + strPsk.u8PassphraseLen = M2M_MAX_PSK_LEN-1; + /* Use hexstr_2_bytes to verify pu8Psk input. */ + if (M2M_SUCCESS != hexstr_2_bytes(strPsk.au8Passphrase, pstrAuthPsk->pu8Psk, strPsk.u8PassphraseLen/2)) + ret = M2M_ERR_INVALID_ARG; + memcpy(strPsk.au8Passphrase, pstrAuthPsk->pu8Psk, strPsk.u8PassphraseLen); + } + } + else if (pstrAuthPsk->pu8Passphrase != NULL) + { + if (pstrAuthPsk->u8PassphraseLen > M2M_MAX_PSK_LEN-1) + ret = M2M_ERR_INVALID_ARG; + else + { + strPsk.u8PassphraseLen = pstrAuthPsk->u8PassphraseLen; + memcpy(strPsk.au8Passphrase, pstrAuthPsk->pu8Passphrase, strPsk.u8PassphraseLen); + } + } + else + ret = M2M_ERR_INVALID_ARG; + if (ret == M2M_SUCCESS) + { + ret = winc_hif_send(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_CONN | M2M_REQ_DATA_PKT, + &strConnHdr, sizeof(tstrM2mWifiConnHdr), + &strPsk, sizeof(tstrM2mWifiPsk), sizeof(tstrM2mWifiConnHdr)); + } + } + } + + return ret; +} + +int8_t m2m_wifi_connect_1x_mschap2(tenuCredStoreOption enuCredStoreOption, tstrNetworkId *pstrNetworkId, tstrAuth1xMschap2 *pstrAuth1xMschap2) +{ + int8_t ret = M2M_ERR_INVALID_ARG; + if (pstrAuth1xMschap2 != NULL) + { + if (pstrAuth1xMschap2->pu8Domain == NULL) + pstrAuth1xMschap2->u16DomainLen = 0; + if ( + (pstrAuth1xMschap2->pu8UserName != NULL) + && (pstrAuth1xMschap2->pu8Password != NULL) + && ((uint32_t)(pstrAuth1xMschap2->u16DomainLen) + pstrAuth1xMschap2->u16UserNameLen <= M2M_AUTH_1X_USER_LEN_MAX) + && (pstrAuth1xMschap2->u16PasswordLen <= M2M_AUTH_1X_PASSWORD_LEN_MAX) + ) + { + tstrM2mWifiConnHdr strConnHdr; + uint16_t u16AuthSize = sizeof(tstrM2mWifi1xHdr) + + pstrAuth1xMschap2->u16DomainLen + + pstrAuth1xMschap2->u16UserNameLen + + pstrAuth1xMschap2->u16PasswordLen; + + ret = m2m_wifi_connect_prepare_msg( enuCredStoreOption, M2M_WIFI_SEC_802_1X, u16AuthSize, pstrNetworkId, &strConnHdr); + + if (ret == M2M_SUCCESS) + { + tstrM2mWifi1xHdr str1xHdr; + uint8_t *pu8AuthPtr = str1xHdr.au81xAuthDetails; + + memset(&str1xHdr, 0, u16AuthSize); + + str1xHdr.u8Flags = M2M_802_1X_MSCHAP2_FLAG; + if (pstrAuth1xMschap2->bUnencryptedUserName == true) + str1xHdr.u8Flags |= M2M_802_1X_UNENCRYPTED_USERNAME_FLAG; + if (pstrAuth1xMschap2->bPrependDomain == true) + str1xHdr.u8Flags |= M2M_802_1X_PREPEND_DOMAIN_FLAG; + + str1xHdr.u8DomainLength = 0; + if (pstrAuth1xMschap2->pu8Domain != NULL) + { + str1xHdr.u8DomainLength = (uint8_t)(pstrAuth1xMschap2->u16DomainLen); + memcpy(pu8AuthPtr, pstrAuth1xMschap2->pu8Domain, str1xHdr.u8DomainLength); + pu8AuthPtr += str1xHdr.u8DomainLength; + } + + str1xHdr.u16UserNameLength = (pstrAuth1xMschap2->u16UserNameLen); + memcpy(pu8AuthPtr, pstrAuth1xMschap2->pu8UserName, str1xHdr.u16UserNameLength); + pu8AuthPtr += str1xHdr.u16UserNameLength; + + str1xHdr.u16PrivateKeyOffset = (uint16_t)(pu8AuthPtr - str1xHdr.au81xAuthDetails); + str1xHdr.u16PrivateKeyLength = pstrAuth1xMschap2->u16PasswordLen; + memcpy(pu8AuthPtr, pstrAuth1xMschap2->pu8Password, str1xHdr.u16PrivateKeyLength); + + ret = winc_hif_send(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_CONN | M2M_REQ_DATA_PKT, + &strConnHdr, sizeof(tstrM2mWifiConnHdr), + &str1xHdr, u16AuthSize, + sizeof(tstrM2mWifiConnHdr)); + } + } + } + return ret; +} + +int8_t m2m_wifi_connect_1x_tls(tenuCredStoreOption enuCredStoreOption, tstrNetworkId *pstrNetworkId, tstrAuth1xTls *pstrAuth1xTls) +{ + int8_t ret = M2M_ERR_INVALID_ARG; + if (pstrAuth1xTls != NULL) + { + if (pstrAuth1xTls->pu8Domain == NULL) + pstrAuth1xTls->u16DomainLen = 0; + if ( + (pstrAuth1xTls->pu8UserName != NULL) + && (pstrAuth1xTls->pu8PrivateKey_Mod != NULL) + && (pstrAuth1xTls->pu8PrivateKey_Exp != NULL) + && (pstrAuth1xTls->pu8Certificate != NULL) + && ((uint32_t)(pstrAuth1xTls->u16DomainLen) + pstrAuth1xTls->u16UserNameLen <= M2M_AUTH_1X_USER_LEN_MAX) + && (pstrAuth1xTls->u16PrivateKeyLen <= M2M_AUTH_1X_PRIVATEKEY_LEN_MAX) + && (pstrAuth1xTls->u16CertificateLen <= M2M_AUTH_1X_CERT_LEN_MAX) + ) + { + tstrM2mWifiConnHdr strConnHdr; + uint16_t u16AuthSize = sizeof(tstrM2mWifi1xHdr) + + pstrAuth1xTls->u16DomainLen + + pstrAuth1xTls->u16UserNameLen + + (2 * pstrAuth1xTls->u16PrivateKeyLen) + + pstrAuth1xTls->u16CertificateLen; + + ret = m2m_wifi_connect_prepare_msg( enuCredStoreOption, + M2M_WIFI_SEC_802_1X, + u16AuthSize, + pstrNetworkId, + &strConnHdr); + + if (ret == M2M_SUCCESS) + { + uint16_t u16Payload1Size = u16AuthSize - pstrAuth1xTls->u16CertificateLen; + tstrM2mWifi1xHdr str1xHdr; + tstrM2mWifiAuthInfoHdr strInfoHdr = {0}; + uint8_t *pu8AuthPtr = str1xHdr.au81xAuthDetails; + + memset(&str1xHdr, 0, u16Payload1Size); + + str1xHdr.u8Flags = M2M_802_1X_TLS_FLAG; + if (pstrAuth1xTls->bUnencryptedUserName == true) + str1xHdr.u8Flags |= M2M_802_1X_UNENCRYPTED_USERNAME_FLAG; + if (pstrAuth1xTls->bPrependDomain == true) + str1xHdr.u8Flags |= M2M_802_1X_PREPEND_DOMAIN_FLAG; + + str1xHdr.u8DomainLength = 0; + if (pstrAuth1xTls->pu8Domain != NULL) + { + str1xHdr.u8DomainLength = (uint8_t)(pstrAuth1xTls->u16DomainLen); + memcpy(pu8AuthPtr, pstrAuth1xTls->pu8Domain, str1xHdr.u8DomainLength); + pu8AuthPtr += str1xHdr.u8DomainLength; + } + + str1xHdr.u16UserNameLength = (pstrAuth1xTls->u16UserNameLen); + memcpy(pu8AuthPtr, pstrAuth1xTls->pu8UserName, str1xHdr.u16UserNameLength); + pu8AuthPtr += str1xHdr.u16UserNameLength; + + str1xHdr.u16PrivateKeyOffset = (uint16_t)(pu8AuthPtr - str1xHdr.au81xAuthDetails); + str1xHdr.u16PrivateKeyLength = pstrAuth1xTls->u16PrivateKeyLen; + memcpy(pu8AuthPtr, pstrAuth1xTls->pu8PrivateKey_Mod, str1xHdr.u16PrivateKeyLength); + pu8AuthPtr += str1xHdr.u16PrivateKeyLength; + memcpy(pu8AuthPtr, pstrAuth1xTls->pu8PrivateKey_Exp, str1xHdr.u16PrivateKeyLength); + pu8AuthPtr += str1xHdr.u16PrivateKeyLength; + + str1xHdr.u16CertificateOffset = (uint16_t)(pu8AuthPtr - str1xHdr.au81xAuthDetails); + str1xHdr.u16CertificateLength = pstrAuth1xTls->u16CertificateLen; + + strInfoHdr.u8Type = M2M_802_1X_TLS_CLIENT_CERTIFICATE; + strInfoHdr.u16InfoPos = str1xHdr.u16CertificateOffset; + strInfoHdr.u16InfoLen = str1xHdr.u16CertificateLength; + ret = winc_hif_send(M2M_REQ_GROUP_WIFI, M2M_WIFI_IND_CONN_PARAM | M2M_REQ_DATA_PKT, + &strInfoHdr, sizeof(tstrM2mWifiAuthInfoHdr), + pstrAuth1xTls->pu8Certificate, pstrAuth1xTls->u16CertificateLen, + sizeof(tstrM2mWifiAuthInfoHdr)); + + if (ret == M2M_SUCCESS) + { + ret = winc_hif_send(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_CONN | M2M_REQ_DATA_PKT, + &strConnHdr, sizeof(tstrM2mWifiConnHdr), + &str1xHdr, u16Payload1Size, + sizeof(tstrM2mWifiConnHdr)); + } + } + } + } + return ret; +} + +int8_t m2m_wifi_connect(char *pcSsid, uint8_t u8SsidLen, uint8_t u8SecType, void *pvAuthInfo, uint16_t u16Ch) +{ + return m2m_wifi_connect_sc(pcSsid, u8SsidLen, u8SecType, pvAuthInfo, u16Ch, 0); +} + +int8_t m2m_wifi_connect_sc(char *pcSsid, uint8_t u8SsidLen, uint8_t u8SecType, void *pvAuthInfo, uint16_t u16Ch, uint8_t u8NoSaveCred) +{ + int8_t s8Ret = M2M_ERR_INVALID_ARG; + tstrNetworkId strNetworkId = {NULL, (uint8_t*)pcSsid, u8SsidLen, (tenuM2mScanCh)u16Ch}; + tenuCredStoreOption enuCredStoreOption = u8NoSaveCred ? WIFI_CRED_DONTSAVE : WIFI_CRED_SAVE_ENCRYPTED; + + /* This API does not support SSIDs which contain '\0'. If there is a '\0' character within the + * first u8SsidLen characters, then assume that the input u8SsidLen was incorrect - set length + * to strlen(pcSsid) and continue. This is to avoid a change from the behavior of previously + * released drivers. */ + if (u8SsidLen < M2M_MAX_SSID_LEN) + while (u8SsidLen--) + if (strNetworkId.pu8Ssid[u8SsidLen] == 0) + strNetworkId.u8SsidLen = u8SsidLen; + + switch ((tenuM2mSecType)u8SecType) + { + case M2M_WIFI_SEC_OPEN: + s8Ret = m2m_wifi_connect_open(enuCredStoreOption, &strNetworkId); + break; + case M2M_WIFI_SEC_WPA_PSK: + if (pvAuthInfo != NULL) + { + tstrAuthPsk strAuthPsk = {NULL, NULL, 0}; + uint16_t len = (uint16_t)strlen((const char*)pvAuthInfo); + + if (len == M2M_MAX_PSK_LEN-1) + { + strAuthPsk.pu8Psk = (uint8_t*)pvAuthInfo; + } + else + { + strAuthPsk.pu8Passphrase = (uint8_t*)pvAuthInfo; + strAuthPsk.u8PassphraseLen = (uint8_t)len; + } + s8Ret = m2m_wifi_connect_psk(enuCredStoreOption, &strNetworkId, &strAuthPsk); + } + break; + case M2M_WIFI_SEC_WEP: + if (pvAuthInfo != NULL) + { + tstrM2mWifiWepParams *pstrWepParams = (tstrM2mWifiWepParams*)pvAuthInfo; + tstrAuthWep strAuthWep = {pstrWepParams->au8WepKey, pstrWepParams->u8KeySz-1, pstrWepParams->u8KeyIndx}; + + s8Ret = m2m_wifi_connect_wep(enuCredStoreOption, &strNetworkId, &strAuthWep); + } + break; + case M2M_WIFI_SEC_802_1X: + if (pvAuthInfo != NULL) + { + tstr1xAuthCredentials *pstr1xParams = (tstr1xAuthCredentials*)pvAuthInfo; + tstrAuth1xMschap2 strAuth1xMschap2 = {NULL, + pstr1xParams->au8UserName, + pstr1xParams->au8Passwd, + 0, + (uint16_t)strlen((const char*)pstr1xParams->au8UserName), + (uint16_t)strlen((const char*)pstr1xParams->au8Passwd), + false, + false}; + + s8Ret = m2m_wifi_connect_1x_mschap2(enuCredStoreOption, &strNetworkId, &strAuth1xMschap2); + } + break; + default: + break; + } + return s8Ret; +} + +int8_t m2m_wifi_disconnect(void) +{ + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_DISCONNECT, NULL, 0); +} + +int8_t m2m_wifi_set_mac_address(uint8_t au8MacAddress[6]) +{ + tstrM2mSetMacAddress strTmp; + memcpy(strTmp.au8Mac, au8MacAddress, 6); + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SET_MAC_ADDRESS, &strTmp, sizeof(tstrM2mSetMacAddress)); +} + +int8_t m2m_wifi_set_static_ip(tstrM2MIPConfig *pstrStaticIPConf) +{ + pstrStaticIPConf->u32DNS = HOST_TO_WINC_U32(pstrStaticIPConf->u32DNS); + pstrStaticIPConf->u32Gateway = HOST_TO_WINC_U32(pstrStaticIPConf->u32Gateway); + pstrStaticIPConf->u32StaticIP = HOST_TO_WINC_U32( + pstrStaticIPConf->u32StaticIP); + pstrStaticIPConf->u32SubnetMask = HOST_TO_WINC_U32( + pstrStaticIPConf->u32SubnetMask); + return winc_hif_send_no_data(M2M_REQ_GROUP_IP, M2M_IP_REQ_STATIC_IP_CONF, pstrStaticIPConf, sizeof(tstrM2MIPConfig)); +} + +int8_t m2m_wifi_enable_dhcp(uint8_t u8DhcpEn) +{ + uint8_t u8Req; + u8Req = u8DhcpEn ? M2M_IP_REQ_ENABLE_DHCP : M2M_IP_REQ_DISABLE_DHCP; + return winc_hif_send_no_data(M2M_REQ_GROUP_IP, u8Req, NULL, 0); +} + +int8_t m2m_wifi_set_lsn_int(tstrM2mLsnInt *pstrM2mLsnInt) +{ + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_LSN_INT, pstrM2mLsnInt, sizeof(tstrM2mLsnInt)); +} + +int8_t m2m_wifi_set_cust_InfoElement(uint8_t *pau8M2mCustInfoElement) +{ + int8_t ret = M2M_ERR_FAIL; + if(pau8M2mCustInfoElement != NULL) + { + if((pau8M2mCustInfoElement[0] + 1) < M2M_CUST_IE_LEN_MAX) + { + ret = winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_CUST_INFO_ELEMENT|M2M_REQ_DATA_PKT, pau8M2mCustInfoElement, pau8M2mCustInfoElement[0]+1); + } + } + return ret; +} + +int8_t m2m_wifi_set_scan_options(tstrM2MScanOption *ptstrM2MScanOption) +{ + int8_t s8Ret = M2M_ERR_FAIL; + if (m2m_validate_scan_options(ptstrM2MScanOption) == M2M_SUCCESS) + { + s8Ret = winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SET_SCAN_OPTION, ptstrM2MScanOption, sizeof(tstrM2MScanOption)); + } + return s8Ret; +} + +int8_t m2m_wifi_set_scan_region(uint16_t u16ScanRegion) +{ + tstrM2MScanRegion strScanRegion; + + strScanRegion.u16ScanRegion = u16ScanRegion; + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SET_SCAN_REGION, &strScanRegion, sizeof(tstrM2MScanRegion)); +} + +int8_t m2m_wifi_request_scan(uint8_t u8Ch) +{ + int8_t s8Ret = M2M_SUCCESS; + + if(!gu8scanInProgress) + { + if(((u8Ch >= M2M_WIFI_CH_1) && (u8Ch <= M2M_WIFI_CH_14)) || (u8Ch == M2M_WIFI_CH_ALL)) + { + tstrM2MScan strtmp; + strtmp.u8ChNum = u8Ch; + s8Ret = winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SCAN, &strtmp, sizeof(tstrM2MScan)); + if(s8Ret == M2M_SUCCESS) + { + gu8scanInProgress = 1; + } + } + else + { + s8Ret = M2M_ERR_INVALID_ARG; + } + } + else + { + s8Ret = M2M_ERR_SCAN_IN_PROGRESS; + } + + return s8Ret; +} + +int8_t m2m_wifi_request_scan_passive(uint8_t u8Ch, uint16_t u16ScanTime) +{ + int8_t s8Ret = M2M_SUCCESS; + + if(!gu8scanInProgress) + { + if(((u8Ch >= M2M_WIFI_CH_1) && (u8Ch <= M2M_WIFI_CH_14)) || (u8Ch == M2M_WIFI_CH_ALL)) + { + tstrM2MScan strtmp; + strtmp.u8ChNum = u8Ch; + + strtmp.u16PassiveScanTime = u16ScanTime; + + s8Ret = winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_PASSIVE_SCAN, &strtmp, sizeof(tstrM2MScan)); + if(s8Ret == M2M_SUCCESS) + { + gu8scanInProgress = 1; + } + } + else + { + s8Ret = M2M_ERR_INVALID_ARG; + } + } + else + { + s8Ret = M2M_ERR_SCAN_IN_PROGRESS; + } + + return s8Ret; +} + +int8_t m2m_wifi_request_scan_ssid_list(uint8_t u8Ch, uint8_t *pu8Ssidlist) +{ + int8_t s8Ret = M2M_ERR_INVALID_ARG; + + if(!gu8scanInProgress) + { + if((((u8Ch >= M2M_WIFI_CH_1) && (u8Ch <= M2M_WIFI_CH_14)) || (u8Ch == M2M_WIFI_CH_ALL))&&(pu8Ssidlist != NULL)) + { + tstrM2MScan strtmp; + uint16_t u16Lsize = 0; + uint8_t u8Apnum = pu8Ssidlist[u16Lsize]; + if(u8Apnum <= MAX_HIDDEN_SITES) + { + u16Lsize++; + while(u8Apnum) + { + if(pu8Ssidlist[u16Lsize] >= M2M_MAX_SSID_LEN){ + goto EXIT; + }else { + u16Lsize += pu8Ssidlist[u16Lsize] + 1; + u8Apnum--; + } + } + strtmp.u8ChNum = u8Ch; + s8Ret = winc_hif_send(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SCAN_SSID_LIST|M2M_REQ_DATA_PKT, &strtmp, sizeof(tstrM2MScan), pu8Ssidlist, u16Lsize, sizeof(tstrM2MScan)); + if(s8Ret == M2M_SUCCESS) + { + gu8scanInProgress = 1; + } + } + } + } + else + { + s8Ret = M2M_ERR_SCAN_IN_PROGRESS; + } +EXIT: + return s8Ret; +} + +int8_t m2m_wifi_wps(uint8_t u8TriggerType, const char *pcPinNumber) +{ + tstrM2MWPSConnect strtmp; + + /* Stop Scan if it is ongoing. + */ + gu8scanInProgress = 0; + strtmp.u8TriggerType = u8TriggerType; + + /*If WPS is using PIN METHOD*/ + if (u8TriggerType == WPS_PIN_TRIGGER) + memcpy(strtmp.acPinNumber, pcPinNumber, 8); + + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_WPS, &strtmp, sizeof(tstrM2MWPSConnect)); +} + +int8_t m2m_wifi_wps_disable(void) +{ + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_DISABLE_WPS, NULL, 0); +} + +int8_t m2m_wifi_req_client_ctrl(uint8_t u8Cmd) +{ +#ifdef _PS_SERVER_ + tstrM2Mservercmd strCmd; + + strCmd.u8cmd = u8Cmd; + + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_CLIENT_CTRL, &strCmd, sizeof(tstrM2Mservercmd)); +#else + UNUSED_VAR(u8Cmd); + WINC_LOG_ERROR("_PS_SERVER_ is not defined"); + + return M2M_ERR_FAIL; +#endif +} + +int8_t m2m_wifi_req_server_init(uint8_t u8Ch) +{ +#ifdef _PS_SERVER_ + tstrM2mServerInit strServer; + + strServer.u8Channel = u8Ch; + + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SERVER_INIT, &strServer, sizeof(tstrM2mServerInit)); +#else + UNUSED_VAR(u8Ch); + WINC_LOG_ERROR("_PS_SERVER_ is not defined"); + + return M2M_ERR_FAIL; +#endif +} + +int8_t m2m_wifi_p2p(uint8_t u8Channel) +{ + if((u8Channel == M2M_WIFI_CH_1) || (u8Channel == M2M_WIFI_CH_6) || (u8Channel == M2M_WIFI_CH_11)) + { + tstrM2MP2PConnect strtmp; + + strtmp.u8ListenChannel = u8Channel; + + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_ENABLE_P2P, &strtmp, sizeof(tstrM2MP2PConnect)); + } + else + { + WINC_LOG_ERROR("Listen channel should only be M2M_WIFI_CH_1/6/11"); + return M2M_ERR_FAIL; + } +} + +int8_t m2m_wifi_p2p_disconnect(void) +{ + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_DISABLE_P2P, NULL, 0); +} + +int8_t m2m_wifi_enable_ap(const tstrM2MAPConfig *pstrM2MAPConfig) +{ + tstrM2MAPModeConfig strM2MAPModeConfig; + + memcpy(&strM2MAPModeConfig.strApConfig, pstrM2MAPConfig, sizeof(tstrM2MAPConfig)); + + memcpy(strM2MAPModeConfig.strApConfigExt.au8DefRouterIP, pstrM2MAPConfig->au8DHCPServerIP, 4); + memcpy(strM2MAPModeConfig.strApConfigExt.au8DNSServerIP, pstrM2MAPConfig->au8DHCPServerIP, 4); + + strM2MAPModeConfig.strApConfigExt.au8SubnetMask[0] = 0; + + return m2m_wifi_enable_ap_ext(&strM2MAPModeConfig); +} + +int8_t m2m_wifi_enable_ap_ext(const tstrM2MAPModeConfig *pstrM2MAPModeConfig) +{ + int8_t ret = M2M_ERR_FAIL; + if(M2M_SUCCESS == m2m_validate_ap_parameters(pstrM2MAPModeConfig)) + { + ret = winc_hif_send(M2M_REQ_GROUP_WIFI, (M2M_REQ_DATA_PKT|M2M_WIFI_REQ_ENABLE_AP), NULL, 0, pstrM2MAPModeConfig, sizeof(tstrM2MAPModeConfig), 0); + } + return ret; +} + +int8_t m2m_wifi_set_gains(tstrM2mWifiGainsParams *pstrM2mGain) +{ + int8_t ret = M2M_ERR_FAIL; + if(pstrM2mGain != NULL) + { + ret = winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SET_GAINS, pstrM2mGain, sizeof(tstrM2mWifiGainsParams)); + } + return ret; +} + +int8_t m2m_wifi_disable_ap(void) +{ + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_DISABLE_AP, NULL, 0); +} + +int8_t m2m_wifi_req_curr_rssi(void) +{ + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_CURRENT_RSSI, NULL, 0); +} + +int8_t m2m_wifi_send_ethernet_pkt(uint8_t *pu8Packet, uint16_t u16PacketSize) +{ + int8_t s8Ret = -1; + if((pu8Packet != NULL)&&(u16PacketSize>0)) + { + tstrM2MWifiTxPacketInfo strTxPkt; + + strTxPkt.u16PacketSize = u16PacketSize; + strTxPkt.u16HeaderLength = M2M_ETHERNET_HDR_LEN; + s8Ret = winc_hif_send(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SEND_ETHERNET_PACKET | M2M_REQ_DATA_PKT, + &strTxPkt, sizeof(tstrM2MWifiTxPacketInfo), pu8Packet, u16PacketSize, M2M_ETHERNET_HDR_OFFSET - M2M_HIF_HDR_OFFSET); + } + return s8Ret; +} + +int8_t m2m_wifi_get_otp_mac_address(uint8_t *pu8MacAddr, uint8_t *pu8IsValid) +{ + uint8_t u8IsValid = 0; + + if (M2M_SUCCESS != winc_hif_chip_wake()) + return M2M_ERR_FAIL; + + if (winc_chip_get_otp_mac_address(pu8MacAddr)) + u8IsValid = 1; + + if (M2M_SUCCESS != winc_hif_chip_sleep()) + return M2M_ERR_FAIL; + + if (pu8IsValid) + *pu8IsValid = u8IsValid; + + return M2M_SUCCESS; +} + +int8_t m2m_wifi_get_mac_address(uint8_t *pu8MacAddr) +{ + if (M2M_SUCCESS != winc_hif_chip_wake()) + return M2M_ERR_FAIL; + + if (!winc_chip_get_mac_address(pu8MacAddr)) + return M2M_ERR_FAIL; + + return winc_hif_chip_sleep(); +} + +int8_t m2m_wifi_req_scan_result(uint8_t u8Index) +{ + tstrM2mReqScanResult strReqScanRlt; + + strReqScanRlt.u8Index = u8Index; + + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SCAN_RESULT, &strReqScanRlt, sizeof(tstrM2mReqScanResult)); +} + +uint8_t m2m_wifi_get_num_ap_found(void) +{ + return gu8ChNum; +} + +uint8_t m2m_wifi_get_sleep_mode(void) +{ + return (uint8_t)genuPsMode; +} + +int8_t m2m_wifi_set_sleep_mode(uint8_t u8PsTyp, uint8_t u8BcastEn) +{ + int8_t ret = M2M_SUCCESS; + tstrM2mPsType strPs; + strPs.u8PsType = u8PsTyp; + strPs.u8BcastEn = u8BcastEn; + ret = winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SLEEP, &strPs, sizeof(tstrM2mPsType)); + WINC_LOG_INFO("POWER SAVE %u", u8PsTyp); + genuPsMode = u8PsTyp; + winc_hif_set_power_save((u8PsTyp != M2M_NO_PS)?true:false); + return ret; +} + +int8_t m2m_wifi_request_sleep(uint32_t u32SlpReqTime) +{ + int8_t ret = M2M_SUCCESS; + + if(genuPsMode == M2M_PS_MANUAL) + { + tstrM2mSlpReqTime strPs; + strPs.u32SleepTime = u32SlpReqTime; + ret = winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_DOZE, &strPs, sizeof(tstrM2mSlpReqTime)); + } + return ret; +} + +int8_t m2m_wifi_set_device_name(uint8_t *pu8DeviceName, uint8_t u8DeviceNameLength) +{ + tstrM2MDeviceNameConfig strDeviceName; + + u8DeviceNameLength++; + + if(u8DeviceNameLength >= M2M_DEVICE_NAME_MAX) + { + u8DeviceNameLength = M2M_DEVICE_NAME_MAX; + } + + memcpy(strDeviceName.au8DeviceName, pu8DeviceName, u8DeviceNameLength); + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SET_DEVICE_NAME, &strDeviceName, sizeof(tstrM2MDeviceNameConfig)); +} + +int8_t m2m_wifi_configure_sntp(uint8_t *pu8NTPServerName, uint8_t u8NTPServerNameLength, tenuSNTPUseDHCP enuUseDHCP) +{ + tstrM2MSNTPConfig strSNTPConfig; + if(u8NTPServerNameLength > M2M_NTP_MAX_SERVER_NAME_LENGTH) + return M2M_ERR_FAIL; + + memcpy(strSNTPConfig.acNTPServer, pu8NTPServerName, u8NTPServerNameLength); + strSNTPConfig.acNTPServer[u8NTPServerNameLength] = '\0'; + strSNTPConfig.enuUseDHCP = (uint8_t)enuUseDHCP; + + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_CONFIG_SNTP, &strSNTPConfig, sizeof(tstrM2MSNTPConfig)); +} + +int8_t m2m_wifi_get_firmware_version(tstrM2mRev *pstrRev) +{ + int8_t ret; + + ret = winc_hif_chip_wake(); + if(ret != M2M_SUCCESS) + return ret; + + ret = m2m_fwinfo_get_firmware_info(true, pstrRev); + winc_hif_chip_sleep(); + + if(ret != M2M_SUCCESS) + return ret; + + return m2m_fwinfo_version_check(pstrRev); +} + +int8_t m2m_wifi_start_provision_mode(tstrM2MAPConfig *pstrM2MAPConfig, char *pcHttpServerDomainName, uint8_t bEnableHttpRedirect) +{ + tstrM2MAPModeConfig strM2MAPModeConfig; + + memcpy(&strM2MAPModeConfig.strApConfig, pstrM2MAPConfig, sizeof(tstrM2MAPConfig)); + + memcpy(strM2MAPModeConfig.strApConfigExt.au8DefRouterIP, pstrM2MAPConfig->au8DHCPServerIP, 4); + memcpy(strM2MAPModeConfig.strApConfigExt.au8DNSServerIP, pstrM2MAPConfig->au8DHCPServerIP, 4); + + strM2MAPModeConfig.strApConfigExt.au8SubnetMask[0] = 0; + + return m2m_wifi_start_provision_mode_ext(&strM2MAPModeConfig, pcHttpServerDomainName, bEnableHttpRedirect); +} + +int8_t m2m_wifi_start_provision_mode_ext(tstrM2MAPModeConfig *pstrAPModeConfig, char *pcHttpServerDomainName, uint8_t bEnableHttpRedirect) +{ + int8_t s8Ret = M2M_ERR_FAIL; + + if(pstrAPModeConfig != NULL) + { + tstrM2MProvisionModeConfig strProvConfig; + if(M2M_SUCCESS == m2m_validate_ap_parameters(pstrAPModeConfig)) + { + memcpy(&strProvConfig.strApConfig, &pstrAPModeConfig->strApConfig, sizeof(tstrM2MAPConfig)); + memcpy(&strProvConfig.strApConfigExt, &pstrAPModeConfig->strApConfigExt, sizeof(tstrM2MAPConfigExt)); + if((strlen((const char*)pcHttpServerDomainName) <= 0) || (NULL == pcHttpServerDomainName)) + { + WINC_LOG_ERROR("INVALID DOMAIN NAME"); + goto ERR1; + } + memcpy(strProvConfig.acHttpServerDomainName, pcHttpServerDomainName, 64); + strProvConfig.u8EnableRedirect = bEnableHttpRedirect; + + /* Stop Scan if it is ongoing. + */ + gu8scanInProgress = 0; + s8Ret = winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_START_PROVISION_MODE | M2M_REQ_DATA_PKT, + &strProvConfig, sizeof(tstrM2MProvisionModeConfig)); + } + else + { + /*goto ERR1;*/ + } + } +ERR1: + return s8Ret; +} + +int8_t m2m_wifi_stop_provision_mode(void) +{ + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_STOP_PROVISION_MODE, NULL, 0); +} + +int8_t m2m_wifi_get_connection_info(void) +{ + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_GET_CONN_INFO, NULL, 0); +} + +int8_t m2m_wifi_set_system_time(uint32_t u32UTCSeconds) +{ + /* + The firmware accepts timestamps relative to 1900 like NTP Timestamp. + */ + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SET_SYS_TIME, &u32UTCSeconds, sizeof(tstrSystemTime)); +} + +int8_t m2m_wifi_get_system_time(void) +{ + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_GET_SYS_TIME, NULL, 0); +} + +int8_t m2m_wifi_enable_sntp(uint8_t u8Enable) +{ + uint8_t u8Req; + + u8Req = u8Enable ? M2M_WIFI_REQ_ENABLE_SNTP_CLIENT : M2M_WIFI_REQ_DISABLE_SNTP_CLIENT; + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, u8Req, NULL, 0); +} + +int8_t m2m_wifi_set_power_profile(uint8_t u8PwrMode) +{ + tstrM2mPwrMode strM2mPwrMode; + + strM2mPwrMode.u8PwrMode = u8PwrMode; + + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SET_POWER_PROFILE, &strM2mPwrMode, sizeof(tstrM2mPwrMode)); +} + +int8_t m2m_wifi_set_tx_power(uint8_t u8TxPwrLevel) +{ + tstrM2mTxPwrLevel strM2mTxPwrLevel; + + strM2mTxPwrLevel.u8TxPwrLevel = u8TxPwrLevel; + + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SET_TX_POWER, &strM2mTxPwrLevel, sizeof(tstrM2mTxPwrLevel)); +} + +int8_t m2m_wifi_set_gain_table_idx(uint8_t u8GainTableIdx) +{ + tstrM2mWiFiGainIdx strM2mGainTableIdx; + + strM2mGainTableIdx.u8GainTableIdx = u8GainTableIdx; + + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SET_GAIN_TABLE_IDX, &strM2mGainTableIdx, sizeof(tstrM2mWiFiGainIdx)); +} + +int8_t m2m_wifi_enable_firmware_logs(uint8_t u8Enable) +{ + tstrM2mEnableLogs strM2mEnableLogs; + + strM2mEnableLogs.u8Enable = u8Enable; + + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SET_ENABLE_LOGS, &strM2mEnableLogs, sizeof(tstrM2mEnableLogs)); +} + +int8_t m2m_wifi_set_battery_voltage(uint16_t u16BattVoltx100) +{ + tstrM2mBatteryVoltage strM2mBattVol = {0}; + + strM2mBattVol.u16BattVolt = u16BattVoltx100; + + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SET_BATTERY_VOLTAGE, &strM2mBattVol, sizeof(tstrM2mBatteryVoltage)); +} + +int8_t m2m_wifi_prng_get_random_bytes(uint8_t *pu8PrngBuff, uint16_t u16PrngSize) +{ + tstrPrng strRng = {0}; + + if ((u16PrngSize < (M2M_BUFFER_MAX_SIZE - sizeof(tstrPrng))) && (pu8PrngBuff != NULL)) + { + strRng.u16PrngSize = u16PrngSize; + strRng.pu8RngBuff = pu8PrngBuff; + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_GET_PRNG|M2M_REQ_DATA_PKT, &strRng, sizeof(tstrPrng)); + } + + WINC_LOG_ERROR("PRNG Buffer exceeded maximum size %u or NULL Buffer", u16PrngSize); + + return M2M_ERR_FAIL; +} + +int8_t m2m_wifi_conf_auto_rate(tstrConfAutoRate *pstrConfAutoRate) +{ + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_CONG_AUTO_RATE, pstrConfAutoRate, sizeof(tstrConfAutoRate)); +} + +#ifdef ETH_MODE +int8_t m2m_wifi_enable_mac_mcast(uint8_t *pu8MulticastMacAddress, uint8_t u8AddRemove) +{ + tstrM2MMulticastMac strMulticastMac; + + if (pu8MulticastMacAddress == NULL) + return M2M_ERR_FAIL; + + strMulticastMac.u8AddRemove = u8AddRemove; + + memcpy(strMulticastMac.au8macaddress, pu8MulticastMacAddress, M2M_MAC_ADDRES_LEN); + + WINC_LOG_DEBUG("mac multicast: %x:%x:%x:%x:%x:%x", strMulticastMac.au8macaddress[0], strMulticastMac.au8macaddress[1], strMulticastMac.au8macaddress[2], + strMulticastMac.au8macaddress[3], strMulticastMac.au8macaddress[4], strMulticastMac.au8macaddress[5]); + + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_SET_MAC_MCAST, &strMulticastMac, sizeof(tstrM2MMulticastMac)); +} + +int8_t m2m_wifi_set_receive_buffer(void *pvBuffer, uint16_t u16BufferLen) +{ + if (pvBuffer == NULL) + { + WINC_LOG_ERROR("Buffer NULL pointer"); + return M2M_ERR_FAIL; + } + + gau8ethRcvBuf = pvBuffer; + gu16ethRcvBufSize= u16BufferLen; + + return M2M_SUCCESS; +} +#endif /* ETH_MODE */ + +uint8_t m2m_wifi_get_state(void) +{ + return gu8WifiState; +} + +int8_t m2m_wifi_enable_roaming(uint8_t u8EnableDhcp) +{ + tstrM2mWiFiRoaming strWiFiRoaming; + strWiFiRoaming.u8EnableRoaming = 1; + + if (u8EnableDhcp > 1) + return M2M_ERR_INVALID_ARG; + + strWiFiRoaming.u8EnableDhcp = u8EnableDhcp; + + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_ROAMING, &strWiFiRoaming, sizeof(tstrM2mWiFiRoaming)); +} + +int8_t m2m_wifi_disable_roaming(void) +{ + tstrM2mWiFiRoaming strWiFiRoaming; + + strWiFiRoaming.u8EnableRoaming = 0; + + return winc_hif_send_no_data(M2M_REQ_GROUP_WIFI, M2M_WIFI_REQ_ROAMING, &strWiFiRoaming, sizeof(tstrM2mWiFiRoaming)); +} diff --git a/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_wifi.h b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_wifi.h new file mode 100644 index 0000000..4aded7d --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/m2m/m2m_wifi.h @@ -0,0 +1,2883 @@ +/** + * + * \file + * + * \brief WINC WLAN Application Interface. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +/** @defgroup m2m_wifi WLAN + @{ + @defgroup WLANCallbacks Callbacks + @brief + Provides detail on the available callbacks for the WLAN APIs. + + @defgroup WLANDefines Defines + @brief + Specifies the macros and defines used by the WLAN APIs. + + @defgroup WLANEnums Enumerations and Typedefs + @brief + Specifies the enums and Data Structures used by the WLAN APIs. + + @defgroup WLANAPI WLAN Functions + @brief + Here are listed all the functions that implement the WLAN APIs. + @{ + @defgroup WLANINIT Initialization + @brief + Here are listed all the functions that implement the WLAN Initialization APIs. + @defgroup WLANEVTS WLAN Events + @brief + Here are listed all the functions that implement the WLAN Events APIs. + @defgroup WLANCONNECT Connection + @brief + Here are listed all the functions that implement the Wi-Fi Connection APIs. + @defgroup WLANSCAN Scanning + @brief + Here are listed all the functions that implement the Wi-Fi Scanning APIs. + @defgroup WLANAP Hot-Spot (Access-Point) + @brief + Here are listed all the functions that implement the Wi-Fi Hot-Spot (Access-Point) APIs. + @defgroup WLANETH Bypass Mode + @brief + Here are listed all the functions that implement the Bypass Mode APIs. + @defgroup WLANROAMING Roaming + @brief + Here are listed all the functions that implement the Wi-Fi Roaming APIs. + @defgroup WLANPS Power Save + @brief + Here are listed all the functions that implement the Power-Save APIs. + @defgroup WLANCONF Configuration + @brief + Here are listed all the functions that implement the WLAN Configuration APIs. + @defgroup WLANTIME System Time + @brief + Here are listed all the functions that implement the System Time APIs. + @defgroup WLANPROVISION Provisioning + @brief + Here are listed all the functions that implement the Wi-Fi Provisioning APIs. + @defgroup WLANCRYPTO Crypto + @brief + Here are listed all the functions that implement the Wi-Fi Crypto APIs. + @defgroup WLANWPS WPS + @brief + Here are listed all the functions that implement the Wi-Fi WPS APIs. + + @cond P2P_DOC + @defgroup WLANP2P P2P + @brief + Here are listed all the functions that implement the Wi-Fi P2P APIs. + @endcond + @cond MON_DOC + @defgroup WLANMON Monitoring Mode + @brief + Here are listed all the functions that implement the Wi-Fi Monitoring Mode APIs. + @endcond + @} + @} + */ + +#ifndef __M2M_WIFI_H__ +#define __M2M_WIFI_H__ + +#include +#include "m2m_types.h" + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +Callbacks +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +/**@addtogroup WLANCallbacks + * @{ + */ +/*! +@typedef void (*tpfAppWifiCb)(uint8_t u8MsgType, const void *const pvMsg); + +@brief + This is the main callback function for the Wi-Fi driver and is responsible for processing + any M2M_WIFI events that are received on the Wi-Fi interface. + These events (notifications) are usually received in response to earlier Wi-Fi requests such + as @ref m2m_wifi_request_scan, @ref m2m_wifi_connect_open, @ref m2m_wifi_connect_wep, + @ref m2m_wifi_connect_psk, @ref m2m_wifi_connect_1x_mschap2, @ref m2m_wifi_connect_1x_tls, + @ref m2m_wifi_get_connection_info, @ref m2m_wifi_req_curr_rssi, @ref m2m_wifi_get_system_time, etc. + + Most Wi-Fi APIs are implemented in an asynchronous mode and calling them generates information + that is then passed back to the application via this callback. For instance, a set of detected + networks to be passed back as a result to a call to @ref m2m_wifi_request_scan. + + Applications must ensure a callback function is registered with the Wi-Fi driver by + calling @ref m2m_wifi_init. +@param[in] u8MsgType + Type of notification. Possible types are: + - @ref M2M_WIFI_RESP_CON_STATE_CHANGED + - @ref M2M_WIFI_RESP_CONN_INFO + - @ref M2M_WIFI_REQ_DHCP_CONF + - @ref M2M_WIFI_REQ_WPS + - @ref M2M_WIFI_RESP_IP_CONFLICT + - @ref M2M_WIFI_RESP_SCAN_DONE + - @ref M2M_WIFI_RESP_SCAN_RESULT + - @ref M2M_WIFI_RESP_CURRENT_RSSI + - @ref M2M_WIFI_RESP_CLIENT_INFO + - @ref M2M_WIFI_RESP_PROVISION_INFO + - @ref M2M_WIFI_RESP_DEFAULT_CONNECT + - @ref M2M_WIFI_RESP_ETHERNET_RX_PACKET (If Bypass mode is active) + - @ref M2M_WIFI_RESP_WIFI_RX_PACKET (If monitoring mode is active) + +@param[in] pvMsg + A pointer to a buffer containing the notification parameters (if any). + It should be cast to the correct data type corresponding to the notification type. + +@see + tstrM2mWifiStateChanged + tstrM2MWPSInfo + tstrM2mScanDone + tstrM2mWifiscanResult + m2m_wifi_init +*/ +typedef void (*tpfAppWifiCb)(uint8_t u8MsgType, const void *const pvMsg); + +/*! +@typedef void (*tpfAppEthCb) (uint8_t u8MsgType, const void *const pvMsg, const void *const pvCtrlBuf); + +@brief + Ethernet (Bypass mode) notification callback function receiving Bypass mode events as + defined in the Wi-Fi responses enumeration @ref tenuM2mStaCmd. + + If bypass mode is enabled, applications must ensure this callback function is registered + with the Wi-Fi driver by calling @ref m2m_wifi_init. + +@param[in] u8MsgType + Type of notification. Possible types are: + - @ref M2M_WIFI_RESP_ETHERNET_RX_PACKET + +@param[in] pvMsg + A pointer to a buffer containing the notification parameters (if any). + It should be cast to the correct data type corresponding to the notification type. + + For example, it could be a pointer to the buffer holding the received frame in case + a @ref M2M_WIFI_RESP_ETHERNET_RX_PACKET event is received. + +@param[in] pvControlBuf + A pointer to control buffer describing the accompanied message. + This must be cast to the data type @ref tstrM2mIpCtrlBuf in case of @ref M2M_WIFI_RESP_ETHERNET_RX_PACKET event. + +@warning + Make sure that the application defines ETH_MODE. + +@see + m2m_wifi_init +*/ +typedef void (*tpfAppEthCb) (uint8_t u8MsgType, const void *const pvMsg, const void *const pvCtrlBuf); + +/**@}*/ // WLANCallbacks +/**@addtogroup WLANEnums + * @{ + */ +/*! +@enum \ + tenuWifiState +@brief + Enumeration for Wi-Fi state + The following is used to track the state of the Wi-Fi (not initialized, initialized or started) + +@remarks + This is useful when putting the WINC in "download mode" to access the flash via SPI. By using + @ref m2m_wifi_get_state and checking against the desired state, it is possible to validate if + the application should proceed with the SPI Flash access or not. +*/ +typedef enum { + WIFI_STATE_DEINIT, + /*!< Wi-Fi is not initialized */ + WIFI_STATE_INIT, + /*!< Wi-Fi has been initialized */ + WIFI_STATE_START, + /*!< Wi-Fi has started */ +} tenuWifiState; + +typedef enum { + WIFI_CRED_DONTSAVE, + /*!< Credentials will not be stored in WINC flash. */ + WIFI_CRED_SAVE_UNENCRYPTED, + /*!< Credentials will be stored unencrypted in WINC flash. */ + WIFI_CRED_SAVE_ENCRYPTED + /*!< Credentials will be stored encrypted in WINC flash. + The encryption is not secure; it is merely intended to prevent sensitive information + being leaked by an opportunistic read of WINC flash contents. + The encryption keys involve WINC efuse contents, so WINC efuses should not be written + while this option is in use. */ +} tenuCredStoreOption; + +/*! +@struct \ + tstrEthInitParam + +@brief + Structure to hold Ethernet interface parameters. + Structure is to be defined and have its attributes set, based on the application's functionality + before a call is made to initialize the Wi-Fi operations by calling the + @ref m2m_wifi_init function. + Part of the Wi-Fi configuration structure @ref tstrWifiInitParam. + Applications shouldn't need to define this structure, if the bypass mode is not defined. + +@see + tpfAppEthCb + tpfAppWifiCb + m2m_wifi_init + +@warning + Make sure that application defines ETH_MODE before using @ref tstrEthInitParam. +*/ +typedef struct { + tpfAppWifiCb pfAppWifiCb; /*!< Callback for Wi-Fi notifications. */ + tpfAppEthCb pfAppEthCb; /*!< Callback for Ethernet interface. */ + uint8_t *au8ethRcvBuf; /*!< Pointer to Receive Buffer of Ethernet Packet */ + uint16_t u16ethRcvBufSize; /*!< Size of Receive Buffer for Ethernet Packet */ + uint8_t u8EthernetEnable; /*!< Enable Ethernet mode flag */ +} tstrEthInitParam; + +/*! +@struct \ + tstrM2mIpCtrlBuf + +@brief + Structure holding the incoming buffer's data size information, indicating the data size of the + buffer and the remaining buffer's data size. The data of the buffer which holds the packet sent + to the host when in the bypass mode, is placed in the @ref tstrEthInitParam::au8ethRcvBuf attribute. + This following information is retrieved in the host when an event + @ref M2M_WIFI_RESP_ETHERNET_RX_PACKET is received in the Wi-Fi callback function + @ref tpfAppWifiCb. + + The application is expected to use this structure's information to determine if there is still incoming data to be received from the firmware. + +@see + tpfAppWifiCb + tpfAppEthCb + tstrEthInitParam + +@warning + Make sure that ETHERNET/bypass mode is defined before using @ref tstrM2mIpCtrlBuf + + */ +typedef struct { + uint16_t u16DataSize; /*!< Size of the received data in bytes. */ + uint16_t u16RemainingDataSize; /*!< Size of the remaining data bytes to be delivered to host. */ +} tstrM2mIpCtrlBuf; + +/** +@struct \ + tstrWifiInitParam + +@brief + Structure, holding the Wi-fi configuration attributes such as the Wi-Fi callback , monitoring mode callback and Ethernet parameter initialization structure. + Such configuration parameters are required to be set before calling the Wi-Fi initialization function @ref m2m_wifi_init. + @ref pfAppWifiCb attribute must be set to handle the Wi-Fi callback operations. + @ref strEthInitParam structure, is another optional configuration based on whether the bypass mode is set. + + @see + tpfAppEthCb + tstrEthInitParam +*/ +typedef struct { + tpfAppWifiCb pfAppWifiCb; /*!< Callback for Wi-Fi notifications. */ + tstrEthInitParam strEthInitParam; /*!< Structure to hold Ethernet interface parameters. */ +} tstrWifiInitParam; + +typedef struct { + uint8_t *pu8Bssid; + /*!< Pointer to BSSID (6 bytes). Optional (may be NULL). + If present, this restricts the connection attempt to APs that have a matching BSSID. */ + uint8_t *pu8Ssid; + /*!< Pointer to SSID. Required. */ + uint8_t u8SsidLen; + /*!< Length of SSID in bytes. Permitted values are between 0 and 32. */ + tenuM2mScanCh enuChannel; + /*!< Wi-Fi channel to connect on. + If an appropriate AP cannot be found on this channel then connection fails. + @ref M2M_WIFI_CH_ALL may be used to allow scanning of all channels. */ +} tstrNetworkId; + +/* Legacy Wep param structure. */ +typedef struct { + uint8_t u8KeyIndx; + uint8_t u8KeySz; + uint8_t au8WepKey[WEP_104_KEY_STRING_SIZE + 1]; // NULL terminated + uint8_t __PAD24__[3]; +} tstrM2mWifiWepParams; + +/* Legacy 802.1x MsChapv2 param structure. */ +typedef struct { + uint8_t au8UserName[21]; // NULL terminated + uint8_t au8Passwd[41]; // NULL terminated +} tstr1xAuthCredentials; + +typedef struct { + uint8_t *pu8Psk; + /*!< Pointer to PSK, represented as an ASCII string (64 characters, representing 32 bytes). + Must be NULL if Passphrase is provided instead. */ + uint8_t *pu8Passphrase; + /*!< Pointer to Passphrase (Printable ASCII). + Must be NULL if PSK is provided instead. */ + uint8_t u8PassphraseLen; + /*!< Length of Passphrase. Permitted values are between 8 and 63. + This field is ignored if pu8Passphrase == NULL. */ +} tstrAuthPsk; + +typedef struct { + uint8_t *pu8WepKey; + /*!< Pointer to WEP Key, represented as an ASCII string. + (10 or 26 characters, representing 5 or 13 bytes.) */ + uint8_t u8KeySz; + /*!< Size of WEP Key string. + Permitted values are @ref WEP_40_KEY_STRING_SIZE or @ref WEP_104_KEY_STRING_SIZE. */ + uint8_t u8KeyIndx; + /*!< WEP Key Index in the range 1 to 4. */ +} tstrAuthWep; + +typedef struct { + uint8_t *pu8Domain; + /*!< Pointer to Domain of authentication server (printable ASCII), including '@' or '\' + separator character as appropriate. Use NULL if there is no domain information. + The Domain will be either prepended or appended to the UserName, depending on the + setting of field bPrependDomain. \n + Example 1: if [Domain]is "@my_domain" and bPrependDomain is false, then the EAP + identity response is "[UserName]@my_domain". \n + Example 2: if [Domain]is "my_domain\" and bPrependDomain is true, then the EAP + identity response is "my_domain\[UserName]". */ + uint8_t *pu8UserName; + /*!< Pointer to UserName (ASCII). + This will be sent (encrypted) in the tunneled EAP identity response (if applicable) + and used during MSCHAPv2 authentication. If bUnencryptedUserName is true then it will + also be sent (unencrypted) in the initial EAP identity response. */ + uint8_t *pu8Password; + /*!< Pointer to MSCHAPv2 Password (ASCII). + This will be used during MSCHAPv2 authentication. */ + uint16_t u16DomainLen; + /*!< Length of Domain (in ASCII characters), including '@' or '\' separator character as + appropriate. + Permitted values are such that u16DomainLen + u16UserNameLen is between 0 and + @ref M2M_AUTH_1X_USER_LEN_MAX. */ + uint16_t u16UserNameLen; + /*!< Length of UserName (in ASCII characters). + Permitted values are such that u16DomainLen + u16UserNameLen is between 0 and + @ref M2M_AUTH_1X_USER_LEN_MAX. */ + uint16_t u16PasswordLen; + /*!< Length of Password (in ASCII characters). + Permitted values are between 0 and @ref M2M_AUTH_1X_PASSWORD_LEN_MAX. */ + bool bUnencryptedUserName; + /*!< Determines whether UserName or "anonymous" is sent (unencrypted) in the initial EAP + identity response. Domain is sent in both cases. \n + true: UserName is sent in the initial EAP identity response (not recommended). + false: "anonymous" is sent in the initial EAP identity response. This setting is + recommended for tunneled methods. MSCHAPv2 is always a tunneled method. */ + bool bPrependDomain; + /*!< Determines whether Domain is prepended or appended to UserName in EAP identity responses. + true: Domain is prepended to UserName - [Domain][UserName]. + false: Domain is appended to UserName - [UserName][Domain]. */ +} tstrAuth1xMschap2; + +typedef struct { + uint8_t *pu8Domain; + /*!< Pointer to Domain of authentication server (printable ASCII), including '@' or '\' + separator character as appropriate. Use NULL if there is no domain information. + The Domain will be either prepended or appended to the UserName, depending on the + setting of field bPrependDomain. \n + Example 1: if [Domain]is "@my_domain" and bPrependDomain is false, then the EAP + identity response is "[UserName]@my_domain". \n + Example 2: if [Domain]is "my_domain\" and bPrependDomain is true, then the EAP + identity response is "my_domain\[UserName]". */ + uint8_t *pu8UserName; + /*!< Pointer to UserName (ASCII). + This will be sent (encrypted) in the tunneled EAP identity response. + If bUnencryptedUserName is true then it will also be sent (unencrypted) in the initial + EAP identity response. */ + uint8_t *pu8PrivateKey_Mod; + /*!< Pointer to PrivateKey modulus (raw data). + This will be used during TLS client authentication. */ + uint8_t *pu8PrivateKey_Exp; + /*!< Pointer to PrivateKey exponent (raw data). + This will be used during TLS client authentication. */ + uint8_t *pu8Certificate; + /*!< Pointer to TLS client certificate corresponding to PrivateKey. + This will be used during TLS client authentication. */ + uint16_t u16DomainLen; + /*!< Length of Domain (in ASCII characters), including '@' or '\' separator character as + appropriate. + Permitted values are such that u16DomainLen + u16UserNameLen is between 0 and + @ref M2M_AUTH_1X_USER_LEN_MAX. */ + uint16_t u16UserNameLen; + /*!< Length of UserName (in ASCII characters). + Permitted values are such that u16DomainLen + u16UserNameLen is between 0 and + @ref M2M_AUTH_1X_USER_LEN_MAX. */ + uint16_t u16PrivateKeyLen; + /*!< Length of PrivateKey_Mod (in bytes). + Permitted values are between 0 and @ref M2M_AUTH_1X_PRIVATEKEY_LEN_MAX, typically 128 or 256. + PrivateKey_Exp must be the same length as modulus, pre-padded with 0s if necessary. */ + uint16_t u16CertificateLen; + /*!< Length of Certificate (in bytes). + Permitted values are between 0 and @ref M2M_AUTH_1X_CERT_LEN_MAX. */ + bool bUnencryptedUserName; + /*!< Determines whether UserName or "anonymous" is sent (unencrypted) in the initial EAP + identity response. Domain is sent in both cases. \n + true: UserName is sent in the initial EAP identity response (required for EAP-TLS). + false: "anonymous" is sent in the initial EAP identity response. This setting is + recommended for tunneled methods such as EAP-PEAP/TLS. */ + bool bPrependDomain; + /*!< Determines whether Domain is prepended or appended to UserName in EAP identity responses. + true: Domain is prepended to UserName - [Domain][UserName]. + false: Domain is appended to UserName - [UserName][Domain]. */ +} tstrAuth1xTls; +/**@}*/ // WLANEnums + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +FUNCTION PROTOTYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +#ifdef __cplusplus +extern "C" { +#endif + +/** +* @fn m2m_wifi_cb(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr, uint8_t grp) +* @brief WiFi call back function +* @param [in] u8OpCode +* HIF Opcode type. +* @param [in] u16DataSize +* HIF data length. +* @param [in] u32Addr +* HIF address. +* @param [in] grp +* HIF group type. +* @author +* @date +* @version 1.0 +*/ +void m2m_wifi_cb(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr); + +/*! +@ingroup WLANINIT +@fn \ + int8_t m2m_wifi_download_mode(void); + +@brief + Prepares the WINC before downloading any data (firmware, certificates, etc). + +@details + This function should be called before attempting to download any data to the WINC. + Performs the appropriate WINC driver initialization, this includes bus initialization, + interrupt enabling and it halts the chip to allow for the firmware downloads. Firmware + can be downloaded through a number of interfaces, UART, I2C and SPI. + +@pre + Prior to call m2m_wifi_download_mode, the Application should ensure that the Wi-Fi is not + initialized. This can be done by calling @ref m2m_wifi_get_state and in case the Wi-Fi state + differs from @ref WIFI_STATE_DEINIT, a @ref m2m_wifi_deinit needs to be issued. + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. +*/ +int8_t m2m_wifi_download_mode(void); + +/*! +@ingroup WLANINIT +@fn \ + int8_t m2m_wifi_init(tstrWifiInitParam *pWifiInitParam); + +@brief + Synchronous API to initialize the WINC driver. + +@details + This function initializes the WINC driver by registering the callback function for the M2M_WIFI layer + (also the callback function for bypass mode/monitoring mode if defined), initializing the host + interface layer and the bus interfaces. Wi-Fi callback registering is essential to allow the + handling of the events received, in response to the asynchronous Wi-Fi operations. + + The possible Wi-Fi events that are expected to be received through the callback + function (provided by the application) to the M2M_WIFI layer are listed below: + + - @ref M2M_WIFI_RESP_CON_STATE_CHANGED + - @ref M2M_WIFI_RESP_CONN_INFO + - @ref M2M_WIFI_REQ_DHCP_CONF + - @ref M2M_WIFI_REQ_WPS + - @ref M2M_WIFI_RESP_IP_CONFLICT + - @ref M2M_WIFI_RESP_SCAN_DONE + - @ref M2M_WIFI_RESP_SCAN_RESULT + - @ref M2M_WIFI_RESP_CURRENT_RSSI + - @ref M2M_WIFI_RESP_CLIENT_INFO + - @ref M2M_WIFI_RESP_PROVISION_INFO + - @ref M2M_WIFI_RESP_DEFAULT_CONNECT + - @ref M2M_WIFI_RESP_ETHERNET_RX_PACKET (if bypass mode is enabled) + - @ref M2M_WIFI_RESP_WIFI_RX_PACKET (if monitoring mode is enabled) + + Any application using the WINC driver must call this function at the start of its main function. + +@param[in] pWifiInitParam + This is a pointer to a structure of type @ref tstrWifiInitParam which contains pointers to the + application WIFI layer callback function, monitoring mode callback and @ref tstrEthInitParam + structure (which contains initialization settings for bypass mode). + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. + +@pre + Prior to this function call, the application should initialize the ADAPTER using @ref winc_adapter_init. + Also, the application must provide a callback function responsible for receiving all the + Wi-Fi events that are received on the M2M_WIFI layer. + +@warning + Failure to successfully complete indicates that the driver could not be initialized and + a fatal error will prevent the application from proceeding, proper error handling should be + implemented by the application. + +@see + m2m_wifi_deinit + m2m_wifi_init_hold + m2m_wifi_init_start + m2m_wifi_download_mode + tstrWifiInitParam + tenuM2mStaCmd +*/ +int8_t m2m_wifi_init(tstrWifiInitParam *pWifiInitParam); + +/*! +@ingroup WLANINIT +@fn \ + int8_t m2m_wifi_deinit(void *pVArg); + +@brief + Synchronous API to de-initialize the WINC driver and host interface. + +@details + De-initialization function for the WINC driver. + De-initializes the host interface and frees any resources used by the M2M_WIFI layer. + This function must be called in the application closing phase to ensure that all + resources have been correctly released. + +@param[in] pVArg + Opaque argument, not used in current implementation. Application should use null. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC, + and a negative value otherwise. + +@note + This function must be called at the de-initialization stage of the application. + Generally this function should be the last function before switching off the chip + and it should be followed only by @ref winc_adapter_deinit function call. + Every function call of @ref m2m_wifi_init should be matched with a call to m2m_wifi_deinit. + +@see + winc_adapter_deinit + m2m_wifi_init + m2m_wifi_init_hold + m2m_wifi_init_start + m2m_wifi_download_mode + m2m_wifi_download_mode +*/ +int8_t m2m_wifi_deinit(void *pVArg); + +/*! +@ingroup WLANINIT +@fn \ + int8_t m2m_wifi_init_hold(void); + +@brief + First part of @ref m2m_wifi_init, up to the point of initializing SPI for flash access. + +@see + m2m_wifi_init + m2m_wifi_deinit + m2m_wifi_init_start + m2m_wifi_download_mode +*/ +int8_t m2m_wifi_init_hold(void); + +/*! +@ingroup WLANINIT +@fn \ + int8_t m2m_wifi_init_start(tstrWifiInitParam *pWifiInitParam); + +@brief + Second part of @ref m2m_wifi_init, continuing from where @ref m2m_wifi_init_hold left off. + +@param[in] pWifiInitParam + This is a pointer to a variable of type @ref tstrWifiInitParam which contains pointers to the + application WIFI layer callback function (see @ref tpfAppWifiCb), monitoring mode callback + (see @ref tpfAppEthCb) and @ref tstrEthInitParam structure (which contains initialization + settings for bypass mode). + +@see + m2m_wifi_init + m2m_wifi_deinit + m2m_wifi_init_hold + m2m_wifi_download_mode + tstrWifiInitParam +*/ +int8_t m2m_wifi_init_start(tstrWifiInitParam *pWifiInitParam); + +/*! +@ingroup WLANEVTS +@fn \ + int8_t m2m_wifi_handle_events(void *pVArg); + +@brief + Synchronous M2M event handler function. + +@details + This function is responsible for handling interrupts received from the WINC firmware. + Applications should call this function periodically in-order to receive the events that are to + be handled by the callback functions implemented by the application. + + Handle the various events received from the WINC. + Whenever an event happens in the WINC (e.g. Connection, Disconnection, DHCP, etc), + the WINC will interrupt the host to let it know that a new event has occurred. The host driver + will attempt to handle these events whenever the application decides to do so by calling + the m2m_wifi_handle_events function. + It is mandatory to call this function periodically and independently of any other condition. + It is ideal to include this function in the main and the most frequent loop of the + host application. + +@param[in] pVArg + Opaque argument, not used in current implementation. Application should use null. + +@pre + Prior to receiving events, the WINC driver should have been successfully initialized by calling the @ref m2m_wifi_init function. + +@warning + Failure to successfully complete this function indicates bus errors and hence a fatal error that will prevent the application from proceeding. + +@return + The function returns @ref M2M_SUCCESS for successful interrupt handling and a negative value otherwise. +*/ +int8_t m2m_wifi_handle_events(void *pVArg); + +/*! +@fn \ + int8_t m2m_wifi_send_crl(tstrTlsCrlInfo *pCRL); + +@brief + Asynchronous API that notifies the WINC with the Certificate Revocation List. + +@param[in] pCRL + Pointer to the structure containing certificate revocation list details. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. +*/ +int8_t m2m_wifi_send_crl(tstrTlsCrlInfo *pCRL); + +/*! +@ingroup WLANCONNECT +@fn \ + int8_t m2m_wifi_delete_sc(char *pcSsid, uint8_t u8SsidLen); + +@brief + Asynchronous API that deletes connection credentials (PSK, WEP key, 802.1X password) from WINC + flash. Either deletes all credentials, or for a specific SSID. + +@details + Causes WINC to delete connection credentials. If the parameter is NULL, then WINC will delete + all credentials from flash. Otherwise WINC will only delete credentials for matching SSID. + Callback will report the status of the operation (success or not). + +@param[in] pcSsid + SSID to match on when deleting credentials. + SSID must not contain '\0'. + NULL is a valid argument here, in which case all credentials are deleted. + +@param[in] u8SsidLen + Length of SSID provided in pcSsid. Must be less than @ref M2M_MAX_SSID_LEN. + This parameter is ignored if pcSsid is NULL. + +@pre + Prior to deleting credentials, the WINC driver should have been successfully initialized by calling the + @ref m2m_wifi_init function. + +@warning + The option to delete for a specific SSID is currently not supported; all credentials are + deleted regardless of the input parameters. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. +*/ +int8_t m2m_wifi_delete_sc(char *pcSsid, uint8_t u8SsidLen); + +/*! +@ingroup WLANCONNECT +@fn \ + int8_t m2m_wifi_default_connect(void); + +@brief + Asynchronous API that attempts to reconnect to the last-associated access point. + +@details + Asynchronous Wi-Fi connection function. An application calling this function will cause + the firmware to attempt to reconnect to the access point with which it had last successfully connected. + A failure to connect will result in a response of @ref M2M_WIFI_RESP_DEFAULT_CONNECT + indicating a connection error as defined in the structure @ref tstrM2MDefaultConnResp. + + Possible errors are: + @ref M2M_DEFAULT_CONN_EMPTY_LIST indicating that the connection list is empty, or + @ref M2M_DEFAULT_CONN_SCAN_MISMATCH indicating a mismatch for the saved AP name. + +@pre + Prior to connecting, the WINC driver should have been successfully initialized by calling the + @ref m2m_wifi_init function. + +@warning + This function must be called in station mode only. + It is important to note that successful completion of a call to m2m_wifi_default_connect + does not guarantee success of the WIFI connection; a negative return value indicates only + locally-detected errors. + +@see + m2m_wifi_connect + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. +*/ +int8_t m2m_wifi_default_connect(void); + +/*! +@ingroup WLANCONNECT +@fn \ + int8_t m2m_wifi_connect_open(tenuCredStoreOption enuCredStoreOption, tstrNetworkId *pstrNetworkId); + +@brief + Asynchronous API to connect to an access point using open authentication. + +@details + Asynchronous Wi-Fi connection function. An application calling this function will cause the + firmware to attempt to connect to an access point matching the details in pstrNetworkId, with + open authentication. + On successful connection, the connection details may be saved in WINC's flash, according to + the option selected in enuCredStoreOption. + Once connection has been attempted (whether successful or otherwise), a response event + @ref M2M_WIFI_RESP_CON_STATE_CHANGED will be sent to the callback function @ref tpfAppWifiCb + provided during initialization @ref m2m_wifi_init. + + Possible results indicated by the response event are: + - @ref M2M_WIFI_DISCONNECTED if the connection attempt failed. + - @ref M2M_WIFI_CONNECTED if the connection attempt succeeded. + +@pre + Prior to attempting connection, the WINC driver must have been initialized by calling the + @ref m2m_wifi_init function. + +@warning + This function is handled in station mode only. + +@param[in] enuCredStoreOption + Option to specify whether connection details (i.e. the contents + of pstrNetworkId) are stored in WINC's flash and, if so, + whether they are encrypted before storing. + +@param[in] pstrNetworkId + Structure specifying SSID/BSSID and Wi-Fi channel. + +@return + The function returns @ref M2M_SUCCESS if the connect request has been successfully passed to the firmware and a negative value otherwise. +*/ +int8_t m2m_wifi_connect_open(tenuCredStoreOption enuCredStoreOption, tstrNetworkId *pstrNetworkId); + +/*! +@ingroup WLANCONNECT +@fn \ + int8_t m2m_wifi_connect_wep(tenuCredStoreOption enuCredStoreOption, tstrNetworkId *pstrNetworkId, tstrAuthWep *pstrAuthWep); + +@brief + Asynchronous API to connect to an access point using WEP authentication. + +@details + Asynchronous Wi-Fi connection function. An application calling this function will cause the + firmware to attempt to connect to an access point matching the details in pstrNetworkId, with + the WEP key provided in pstrAuthWep. + On successful connection, the connection details may be saved in WINC's flash, according to + the option selected in enuCredStoreOption. + Once connection has been attempted (whether successful or otherwise), a response event + @ref M2M_WIFI_RESP_CON_STATE_CHANGED will be sent to the callback function @ref tpfAppWifiCb + provided during initialization @ref m2m_wifi_init. + + Possible results indicated by the response event are: + - @ref M2M_WIFI_DISCONNECTED if the connection attempt failed. + - @ref M2M_WIFI_CONNECTED if the connection attempt succeeded. + +@pre + Prior to attempting connection, the WINC driver must have been initialized by calling the + @ref m2m_wifi_init function. + +@warning + This function is handled in station mode only. + +@param[in] enuCredStoreOption + Option to specify whether connection details (i.e. the contents + of pstrNetworkId and pstrAuthWep) are stored in WINC's flash + and, if so, whether they are encrypted before storing. + +@param[in] pstrNetworkId + Structure specifying SSID/BSSID and Wi-Fi channel. + +@param[in] pstrAuthWep + Structure specifying the WEP key. + +@return + The function returns @ref M2M_SUCCESS if the connect request has been successfully passed to the firmware and a negative value otherwise. +*/ +int8_t m2m_wifi_connect_wep(tenuCredStoreOption enuCredStoreOption, tstrNetworkId *pstrNetworkId, tstrAuthWep *pstrAuthWep); + +/*! +@ingroup WLANCONNECT +@fn \ + int8_t m2m_wifi_connect_psk(tenuCredStoreOption enuCredStoreOption, tstrNetworkId *pstrNetworkId, tstrAuthPsk *pstrAuthPsk); + +@brief + Asynchronous API to connect to an access point using WPA(2) PSK authentication. + +@details + Asynchronous Wi-Fi connection function. An application calling this function will cause the + firmware to attempt to connect to an access point matching the details in pstrNetworkId, with + the PSK passphrase provided in pstrAuthPsk. + On successful connection, the connection details may be saved in WINC's flash, according to + the option selected in enuCredStoreOption. + Once connection has been attempted (whether successful or otherwise), a response event + @ref M2M_WIFI_RESP_CON_STATE_CHANGED will be sent to the callback function @ref tpfAppWifiCb + provided during initialization @ref m2m_wifi_init. + + Possible results indicated by the response event are: + - @ref M2M_WIFI_DISCONNECTED if the connection attempt failed. + - @ref M2M_WIFI_CONNECTED if the connection attempt succeeded. + +@pre + Prior to attempting connection, the WINC driver must have been initialized by calling the + @ref m2m_wifi_init function. + +@warning + This function is handled in station mode only. + +@param[in] enuCredStoreOption + Option to specify whether connection details (i.e. the contents + of pstrNetworkId and pstrAuthPsk) are stored in WINC's flash + and, if so, whether they are encrypted before storing. + +@param[in] pstrNetworkId + Structure specifying SSID/BSSID and Wi-Fi channel. + +@param[in] pstrAuthPsk + Structure specifying the Passphrase/PSK. + +@return + The function returns @ref M2M_SUCCESS if the connect request has been successfully passed to the firmware and a negative value otherwise. +*/ +int8_t m2m_wifi_connect_psk(tenuCredStoreOption enuCredStoreOption, tstrNetworkId *pstrNetworkId, tstrAuthPsk *pstrAuthPsk); + +/*! +@ingroup WLANCONNECT +@fn \ + int8_t m2m_wifi_connect_1x_mschap2(tenuCredStoreOption enuCredStoreOption, tstrNetworkId *pstrNetworkId, tstrAuth1xMschap2 *pstrAuth1xMschap2); + +@brief + Asynchronous API to connect to an access point using WPA(2) Enterprise authentication with + MS-CHAP-V2 credentials. + +@details + Asynchronous Wi-Fi connection function. An application calling this function will cause the + firmware to attempt to connect to an access point matching the details in pstrNetworkId, with + the Enterprise MS-CHAP-V2 credentials provided in pstrAuth1xMschap2. + On successful connection, the connection details may be saved in WINC's flash, according to + the option selected in enuCredStoreOption. + Once connection has been attempted (whether successful or otherwise), a response event + @ref M2M_WIFI_RESP_CON_STATE_CHANGED will be sent to the callback function tpfAppWifiCb + provided during initialization @ref m2m_wifi_init. + + Possible results indicated by the response event are: + - @ref M2M_WIFI_DISCONNECTED if the connection attempt failed. + - @ref M2M_WIFI_CONNECTED if the connection attempt succeeded. + +@pre + Prior to attempting connection, the WINC driver must have been initialized by calling the + @ref m2m_wifi_init function. + +@warning + This function is handled in station mode only. + +@param[in] enuCredStoreOption + Option to specify whether connection details (i.e. the contents + of pstrNetworkId and pstrAuth1xMschap2) are stored in WINC's + flash and, if so, whether they are encrypted before storing. + +@param[in] pstrNetworkId + Structure specifying SSID/BSSID and Wi-Fi channel. + +@param[in] pstrAuth1xMschap2 + Structure specifying the MS-CHAP-V2 credentials. + +@return + The function returns @ref M2M_SUCCESS if the connect request has been successfully passed to the firmware and a negative value otherwise. +*/ +int8_t m2m_wifi_connect_1x_mschap2(tenuCredStoreOption enuCredStoreOption, tstrNetworkId *pstrNetworkId, tstrAuth1xMschap2 *pstrAuth1xMschap2); + +/*! +@ingroup WLANCONNECT +@fn \ + int8_t m2m_wifi_connect_1x_tls(tenuCredStoreOption enuCredStoreOption, tstrNetworkId *pstrNetworkId, tstrAuth1xTls *pstrAuth1xTls); + +@brief + Asynchronous API to connect to an access point using WPA(2) Enterprise authentication with + MS-CHAP-V2 credentials. + +@details + Asynchronous Wi-Fi connection function. An application calling this function will cause the + firmware to attempt to connect to an access point matching the details in pstrNetworkId, with + the Enterprise TLS credentials provided in pstrAuth1xTls. + On successful connection, the connection details may be saved in WINC's flash, according to + the option selected in enuCredStoreOption. + Once connection has been attempted (whether successful or otherwise), a response event + @ref M2M_WIFI_RESP_CON_STATE_CHANGED will be sent to the callback function @ref tpfAppWifiCb + provided during initialization @ref m2m_wifi_init. + + Possible results indicated by the response event are: + - @ref M2M_WIFI_DISCONNECTED if the connection attempt failed. + - @ref M2M_WIFI_CONNECTED if the connection attempt succeeded. + +@pre + Prior to attempting connection, the WINC driver must have been initialized by calling the + @ref m2m_wifi_init function. + +@warning + This function is handled in station mode only. + +@param[in] enuCredStoreOption + Option to specify whether connection details (i.e. the contents + of pstrNetworkId and pstrAuth1xTls) are stored in WINC's + flash and, if so, whether they are encrypted before storing. + +@param[in] pstrNetworkId + Structure specifying SSID/BSSID and Wi-Fi channel. + +@param[in] pstrAuth1xTls + Structure specifying the EAP-TLS credentials. + +@return + The function returns @ref M2M_SUCCESS if the connect request has been successfully passed to the firmware and a negative value otherwise. +*/ +int8_t m2m_wifi_connect_1x_tls(tenuCredStoreOption enuCredStoreOption, tstrNetworkId *pstrNetworkId, tstrAuth1xTls *pstrAuth1xTls); + +/*! +@ingroup WLANCONNECT +@fn \ + int8_t m2m_wifi_connect(char *pcSsid, uint8_t u8SsidLen, uint8_t u8SecType, void *pvAuthInfo, uint16_t u16Ch); + +@brief + DEPRECATED in v19.6.1 - Kept only for legacy purposes.\n + Legacy asynchronous API to request connection to a specified access point. + +@details + Prior to a successful connection, the application developers must know the SSID, the security + type, and the authentication parameters of the target access point; knowledge of the channel number + is optional. + + The connection status will be indicated to the application via a + @ref M2M_WIFI_RESP_CON_STATE_CHANGED event. The status will be one of those defined in + @ref tenuM2mConnState withe @ref M2M_WIFI_CONNECTED indicating a successful connection. + +@param[in] pcSsid + A buffer holding the SSID corresponding to the requested AP. + SSID must not contain '\0'. + +@param[in] u8SsidLen + Length of the given SSID (not including any NULL termination). + A length greater than or equal to @ref M2M_MAX_SSID_LEN will result in a negative error + @ref M2M_ERR_FAIL. + +@param[in] u8SecType + Wi-Fi security type security for the network. It can be one of the following types: + -@ref M2M_WIFI_SEC_OPEN + -@ref M2M_WIFI_SEC_WEP + -@ref M2M_WIFI_SEC_WPA_PSK + -@ref M2M_WIFI_SEC_802_1X + A value outside these possible values will result in a negative return error @ref M2M_ERR_FAIL. + +@param[in] pvAuthInfo + Authentication parameters required for completing the connection. Its type is based on the + security type. If the authentication parameters are NULL or are greater than the maximum length + of the authentication parameters length as defined by @ref M2M_MAX_PSK_LEN a negative error will + return @ref M2M_ERR_FAIL indicating connection failure. + +@param[in] u16Ch + Wi-Fi channel number as defined in @ref tenuM2mScanCh enumeration. Specifying a channel number + greater than @ref M2M_WIFI_CH_14 returns a negative error @ref M2M_ERR_FAIL, unless + the value is @ref M2M_WIFI_CH_ALL, since this indicates that the firmware should scan all channels + to find the SSID specified in parameter pcSsid. + + Failure to find the connection match will return a negative error + @ref M2M_DEFAULT_CONN_SCAN_MISMATCH. + +@pre + Prior to a successful connection request, the Wi-Fi driver must have been successfully initialized + through the call of the @ref m2m_wifi_init function. + +@warning + If there is a '\0' character within the first u8SsidLen characters, then this function will assume + that the input u8SsidLen was incorrect, set length to strlen(pcSsid) and continue.\n + This function has been deprecated since v19.6.1 and will no longer be supported afterwards. + The following should be used instead: + @ref m2m_wifi_connect_open + @ref m2m_wifi_connect_wep + @ref m2m_wifi_connect_psk + @ref m2m_wifi_connect_1x_mschap2 + @ref m2m_wifi_connect_1x_tls + + Additionally: + - This function must be called in station mode only. + - Successful completion of this function does not guarantee success of the WIFI connection, and + a negative return value indicates only locally-detected errors. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + tstr1xAuthCredentials + tstrM2mWifiWepParams +*/ +int8_t m2m_wifi_connect(char *pcSsid, uint8_t u8SsidLen, uint8_t u8SecType, void *pvAuthInfo, uint16_t u16Ch); + +/*! +@ingroup WLANCONNECT +@fn \ + int8_t m2m_wifi_connect_sc(char *pcSsid, uint8_t u8SsidLen, uint8_t u8SecType, void *pvAuthInfo, uint16_t u16Ch, uint8_t u8NoSaveCred); + +@brief + DEPRECATED in v19.6.1 - Kept only for legacy purposes.\n + Legacy asynchronous API to request connection to a specific AP with the option to save credentials in Flash. + +@details + Prior to a successful connection, the application developers must know the SSID, the security + type, and the authentication parameters of the target access point; knowledge of the channel number + is optional. + + The connection status will be indicated to the application via a + @ref M2M_WIFI_RESP_CON_STATE_CHANGED event. The status will be one of those defined in + @ref tenuM2mConnState withe @ref M2M_WIFI_CONNECTED indicating a successful connection. + + The only difference between this function and @ref m2m_wifi_connect, is the option to save the + acess point info ( SSID, password...etc) into flash. + +@param[in] pcSsid + A buffer holding the SSID corresponding to the requested AP. + SSID must not contain '\0'. + +@param[in] u8SsidLen + Length of the given SSID (not including any NULL termination). + A length greater than or equal to @ref M2M_MAX_SSID_LEN will result in a negative error + @ref M2M_ERR_FAIL. + +@param[in] u8SecType + Wi-Fi security type security for the network (see @ref tenuM2mSecType). It can be one of the following types: + -@ref M2M_WIFI_SEC_OPEN + -@ref M2M_WIFI_SEC_WEP + -@ref M2M_WIFI_SEC_WPA_PSK + -@ref M2M_WIFI_SEC_802_1X + A value outside these possible values will result in a negative return error @ref M2M_ERR_FAIL. + +@param[in] pvAuthInfo + Authentication parameters required for completing the connection. Its type is based on the + security type. If the authentication parameters are NULL or are greater than the maximum length + of the authentication parameters length as defined by @ref M2M_MAX_PSK_LEN a negative error will + return @ref M2M_ERR_FAIL indicating connection failure. + +@param[in] u16Ch + Wi-Fi channel number as defined in @ref tenuM2mScanCh enumeration. Specification of a channel + number greater than @ref M2M_WIFI_CH_14 returns a negative error @ref M2M_ERR_FAIL unless + the value is @ref M2M_WIFI_CH_ALL. A channel number of @ref M2M_WIFI_CH_ALL indicates that the + firmware should scan all channels to find the SSID specified in parameter pcSsid. + + Failure to find the connection match will return a negative error + @ref M2M_DEFAULT_CONN_SCAN_MISMATCH. + +@param[in] u8NoSaveCred + Option to store the access point SSID and password into the WINC flash memory or not. + +@pre + Prior to a successful connection request, the Wi-Fi driver must have been successfully initialized through the call of the @ref m2m_wifi_init function. + +@warning + If there is a '\0' character within the first u8SsidLen characters, then this function will assume + that the input u8SsidLen was incorrect, set length to strlen(pcSsid) and continue.\n + This function has been deprecated since v19.6.1 and will no longer be supported afterwards. + The following should be used instead: + @ref m2m_wifi_connect_open + @ref m2m_wifi_connect_wep + @ref m2m_wifi_connect_psk + @ref m2m_wifi_connect_1x_mschap2 + @ref m2m_wifi_connect_1x_tls + + Additionally: + - This function must be called in station mode only. + - Successful completion of this function does not guarantee success of the WIFI connection, and + a negative return value indicates only locally-detected errors. + +@see + tenuM2mSecType + tstr1xAuthCredentials + tstrM2mWifiWepParams + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. +*/ +int8_t m2m_wifi_connect_sc(char *pcSsid, uint8_t u8SsidLen, uint8_t u8SecType, void *pvAuthInfo, uint16_t u16Ch, uint8_t u8NoSaveCred); + +/*! +@ingroup WLANCONNECT +@fn \ + int8_t m2m_wifi_disconnect(void); + +@brief + Synchronous API to request disconnection from a network. + +@details + Request a Wi-Fi disconnect from the currently connected AP. + The connection status will be indicated to the application via a @ref M2M_WIFI_RESP_CON_STATE_CHANGED event. + The status will be one of those defined in @ref tenuM2mConnState, with @ref M2M_WIFI_DISCONNECTED indicating + a successful disconnection. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@pre + Disconnection request must be made to a successfully connected AP. If the WINC is not in the connected state, a call to this function will hold insignificant. + +@warning + This function must be called in station mode only. + +@see + m2m_wifi_connect_open + m2m_wifi_connect_wep + m2m_wifi_connect_psk + m2m_wifi_connect_1x_mschap2 + m2m_wifi_connect_1x_tls + m2m_wifi_default_connect + +*/ +int8_t m2m_wifi_disconnect(void); + +/*! +@ingroup WLANPROVISION +@fn \ + int8_t m2m_wifi_start_provision_mode(tstrM2MAPConfig *pstrAPConfig, char *pcHttpServerDomainName, uint8_t bEnableHttpRedirect); + +@brief + Asynchronous API for control of Wi-Fi provisioning functionality. + +@details + This function allows the application to start the WINC in 'provisioning mode', a special mode + that triggers the WINC to create a Wi-Fi access point, DHCP server, and HTTP server. + + The HTTP server presents a provisioning page to a connected client which lists the access points + detected in the vicinity of the WINC, and allows one of these to be selected and any appropriate + credentials to be entered. This allows a headless system to be provisioned (configured to + connect with an access point). + + Provisioning status is returned in an event @ref M2M_WIFI_RESP_PROVISION_INFO. + +@param[in] pstrAPConfig + AP configuration parameters as defined in @ref tstrM2MAPConfig configuration structure. + If a NULL value is passed in, the call will result in a negative error @ref M2M_ERR_FAIL. + +@param[in] pcHttpServerDomainName + Domain name of the HTTP Provision WEB server which others will use to load the provisioning Home page. + The domain name can have one of the following 3 forms: + - 1. "wincprov.com" + - 2. "http://wincprov.com" + - 3. "https://wincprov.com" + + Forms 1 and 2 are equivalent, they will both start a plain http server, while form 3 + will start a secure HTTP provisioning Session (HTTP over SSL connection). + +@param[in] bEnableHttpRedirect + A flag to enable/disable the HTTP redirect feature. If Secure provisioning is enabled (i.e. the server + domain name uses "https" prefix) this flag is ignored (no meaning for redirect in HTTPS). + Possible values are: + - Zero: DO NOT use HTTP Redirect. In this case, the associated device could open the provisioning + page ONLY when the HTTP Provision URL of the WINC HTTP Server is correctly written on the browser. + - Non-Zero: Use HTTP Redirect. In this case, all http traffic (http://URL) from the associated + device (Phone, PC, etc) will be redirected to the WINC HTTP Provisioning Home page. + +@pre + - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered at startup. + Registering the callback is done through passing it to the initialization @ref m2m_wifi_init function. + - The event @ref M2M_WIFI_RESP_CONN_INFO must be handled in the callback to receive the requested connection info. + +@warning + Do not use ".local" in the pcHttpServerDomainName. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + tpfAppWifiCb + m2m_wifi_init + M2M_WIFI_RESP_PROVISION_INFO + m2m_wifi_stop_provision_mode + tstrM2MAPConfig + +@section WIFIExample1 Example + The example demonstrates a code snippet for how provisioning is triggered and the response event received accordingly. + +@include m2m_wifi_start_provision_mode.c +@example m2m_wifi_start_provision_mode.c +*/ +int8_t m2m_wifi_start_provision_mode(tstrM2MAPConfig *pstrAPConfig, char *pcHttpServerDomainName, uint8_t bEnableHttpRedirect); + +/*! +@ingroup WLANPROVISION +@fn \ + int8_t m2m_wifi_start_provision_mode_ext(tstrM2MAPModeConfig *pstrAPModeConfig, char *pcHttpServerDomainName, uint8_t bEnableHttpRedirect); + +@brief + Asynchronous API for control of Wi-Fi provisioning functionality with extended options. + +@details + Asynchronous Wi-Fi provisioning function, which starts the WINC HTTP PROVISIONING mode. + The function triggers the WINC to activate the Wi-Fi AP (HOTSPOT) mode with the passed + configuration parameters and then starts the HTTP Provision WEB Server. + + Provisioning status is returned in an event @ref M2M_WIFI_RESP_PROVISION_INFO. + +@param[in] pstrAPModeConfig + AP configuration parameters as defined in @ref tstrM2MAPModeConfig configuration structure. + A NULL value passed in, will result in a negative error @ref M2M_ERR_FAIL. + +@param[in] pcHttpServerDomainName + Domain name of the HTTP Provision WEB server which others will use to load the provisioning Home page. + The domain name can have one of the following 3 forms: + - 1. "wincprov.com" + - 2. "http://wincprov.com" + - 3. "https://wincprov.com" + + The forms 1 and 2 are equivalent, they both will start a plain http server, while form 3 + will start a secure HTTP provisioning Session (HTTP over SSL connection). + +@param[in] bEnableHttpRedirect + A flag to enable/disable the HTTP redirect feature. If Secure provisioning is enabled (i.e. the server + domain name uses "https" prefix) this flag is ignored (no meaning for redirect in HTTPS). + Possible values are: + - ZERO value, which means DO NOT use HTTP Redirect. In this case, the associated device could open the provisioning + page ONLY when the HTTP Provision URL of the WINC HTTP Server is correctly written on the browser. + - Non-Zero value, means use HTTP Redirect. In this case, all http traffic (http://URL) from the associated + device (Phone, PC, etc) will be redirected to the WINC HTTP Provisioning Home page. + +@pre + - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered at startup. Registering the callback + is done through passing it to the initialization @ref m2m_wifi_init function. + - The event @ref M2M_WIFI_RESP_CONN_INFO must be handled in the callback to receive the requested connection info. + +@warning + DO Not use ".local" in the pcHttpServerDomainName. + +@see + tpfAppWifiCb + m2m_wifi_init + M2M_WIFI_RESP_PROVISION_INFO + m2m_wifi_stop_provision_mode + tstrM2MAPModeConfig + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@section WIFIExample1b Example + The example demonstrates a code snippet for how provisioning is triggered and the response event + received accordingly. + +@include m2m_wifi_start_provision_mode_ext.c +@example m2m_wifi_start_provision_mode_ext.c +*/ +int8_t m2m_wifi_start_provision_mode_ext(tstrM2MAPModeConfig *pstrAPModeConfig, char *pcHttpServerDomainName, uint8_t bEnableHttpRedirect); + +/*! +@ingroup WLANPROVISION +@fn \ + int8_t m2m_wifi_stop_provision_mode(void); + +@brief + Synchronous API for terminating provisioning mode on the WINC. + +@details + This function will terminate any currently active provisioning mode on the WINC, returning the WINC to idle. + +@pre + An active provisioning session must be active before it is terminated through this function. + +@return + The function returns @ref M2M_SUCCESS for success and a negative value otherwise. + +@see + m2m_wifi_start_provision_mode +*/ +int8_t m2m_wifi_stop_provision_mode(void); + +/*! +@ingroup WLANCONNECT +@fn \ + int8_t m2m_wifi_get_connection_info(void); + +@brief + Asynchronous API for retrieving the WINC connection status. + +@details + Requests the connection status from the WINC including information regarding any access + point to which it is currently connected, or any non-AP station that is connected to the WINC. + All information will be returned to the application via the Wi-Fi notification callback through + the event @ref M2M_WIFI_RESP_CONN_INFO. + + The connection info can be retrieved using the structure @ref tstrM2MConnInfo which contains: + - Connection Security + - Connection RSSI + - Remote MAC address + - Remote IP address + - SSID of the network (in cases where the WINC is in non-AP mode) + +@pre + - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered at + startup. Registering the callback is done through passing it to the initialization + @ref m2m_wifi_init function. + - The event @ref M2M_WIFI_RESP_CONN_INFO must be handled in the callback to receive the + requested connection info. + +@warning + - In case the WINC is operating in AP mode, the SSID field will be returned as a NULL string. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + M2M_WIFI_RESP_CONN_INFO, + tstrM2MConnInfo +@section WIFIExample2 Example + The code snippet shows an example of how Wi-Fi connection information is retrieved . + +@include m2m_wifi_get_connection_info.c +@example m2m_wifi_get_connection_info.c +*/ +int8_t m2m_wifi_get_connection_info(void); + +/*! +@ingroup WLANCONF +@fn \ + int8_t m2m_wifi_set_mac_address(uint8_t au8MacAddress[6]); + +@brief + Asynchronous API for assigning a MAC address to the WINC. + +@details + This function is intended to allow non-production software to assign a MAC address to the WINC. + +@warning + This function is intended for development use only and not for use in production software. + +@param[in] au8MacAddress + MAC Address to be provisioned to the WINC. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. +*/ +int8_t m2m_wifi_set_mac_address(uint8_t au8MacAddress[6]); + +/*! +@ingroup WLANWPS +@fn \ + int8_t m2m_wifi_wps(uint8_t u8TriggerType, const char *pcPinNumber); + +@brief + Asynchronous API to engage the WINC Wi-Fi Protected Setup (enrollee) function. + +@details + This function can be called to make the WINC enter WPS (Wi-Fi Protected Setup) mode. The result + is passed to the Wi-Fi notification callback with the event @ref M2M_WIFI_REQ_WPS. + +@param[in] u8TriggerType + WPS Trigger method. This may be: + - @ref WPS_PIN_TRIGGER Push button method + - @ref WPS_PBC_TRIGGER Pin method + +@param[in] pcPinNumber + Valid only if the u8TriggerType is @ref WPS_PIN_TRIGGER, this parameter contains the PIN number. + The number must follow the format as given in the WSC1.0 specification. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@warning + This function is not allowed in AP modes. + +@pre + - A Wi-Fi notification callback of type (@ref tpfAppWifiCb MUST be implemented and registered at + startup. Registering the callback is done through passing it to @ref m2m_wifi_init. + - The event @ref M2M_WIFI_REQ_WPS must be handled in the callback to receive the WPS status. + - The WINC device MUST be in IDLE or STA mode. If AP or P2P mode is active, the WPS will not be performed. + - The @ref m2m_wifi_handle_events MUST be called periodically to receive + the responses in the callback. + +@see + tpfAppWifiCb + m2m_wifi_init + M2M_WIFI_REQ_WPS + tenuWPSTrigger + tstrM2MWPSInfo + +@section WIFIExample3 Example + The code snippet shows an example of how Wi-Fi WPS is triggered . + +@include m2m_wifi_wps.c +@example m2m_wifi_wps.c +*/ +int8_t m2m_wifi_wps(uint8_t u8TriggerType, const char *pcPinNumber); + +/*! +@ingroup WLANWPS +@fn \ + int8_t m2m_wifi_wps_disable(void); + +@brief + Asynchronous API that disables Wi-Fi Protected Setup mode in the WINC. + +@pre + WINC should be already in WPS mode using @ref m2m_wifi_wps. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + m2m_wifi_wps +*/ +int8_t m2m_wifi_wps_disable(void); + +/**@cond P2P_DOC + */ +/*! +@ingroup WLANP2P +@fn \ + int8_t m2m_wifi_p2p(uint8_t u8Channel); + +@warning + P2P has been deprecated from version 19.5.3! +*/ +int8_t m2m_wifi_p2p(uint8_t u8Channel); + +/*! +@ingroup WLANP2P +@fn \ + int8_t m2m_wifi_p2p_disconnect(void); + +@warning + P2P has been deprecated from version 19.5.3! +*/ +int8_t m2m_wifi_p2p_disconnect(void); +/**@endcond*/ //P2P_DOC + +/*! +@ingroup WLANAP +@fn \ + int8_t m2m_wifi_enable_ap(const tstrM2MAPConfig *pstrM2MAPConfig); + +@brief + Asynchronous API to enable access point (AKA "hot-spot") mode on the WINC. + +@details + The WINC supports the ability to operate as an access point with the following limitations: + - Only 1 station may be associated at any given time. + - Open system and WEP are the only security suites supported. + +@param[in] pstrM2MAPConfig + A structure holding the AP configurations. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@warning + This function is not allowed in STA modes. + +@pre + - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered at initialization. Registering the callback + is done through passing it to the @ref m2m_wifi_init. + - The event @ref M2M_WIFI_REQ_DHCP_CONF must be handled in the callback. + - The @ref m2m_wifi_handle_events MUST be called to receive the responses in the callback. + +@see + tpfAppWifiCb + tenuM2mSecType + m2m_wifi_init + M2M_WIFI_REQ_DHCP_CONF + tstrM2mWifiStateChanged + tstrM2MAPConfig + +@section WIFIExample5 Example + The code snippet demonstrates how the AP mode is enabled after the driver is initialized in the application's main function and the handling + of the event @ref M2M_WIFI_REQ_DHCP_CONF, to indicate successful connection. + +@include m2m_wifi_enable_ap.c +@example m2m_wifi_enable_ap.c +*/ +int8_t m2m_wifi_enable_ap(const tstrM2MAPConfig *pstrM2MAPConfig); + +/*! +@ingroup WLANAP +@fn \ + int8_t m2m_wifi_enable_ap_ext(const tstrM2MAPModeConfig *pstrM2MAPModeConfig); + +@brief + Asynchronous API to enable access point (AKA "hot-spot") mode on the WINC IC with extended options. + +@details + The WINC IC supports the ability to operate as an access point with the following limitations: + - Only 1 station may be associated at any given time. + - Open system and WEP are the only security suites supported. + +@param[in] pstrM2MAPModeConfig + A structure holding the AP configurations. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@pre + - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered at initialization. Registering the callback + is done through passing it to the @ref m2m_wifi_init. + - The event @ref M2M_WIFI_REQ_DHCP_CONF must be handled in the callback. + - The @ref m2m_wifi_handle_events MUST be called to receive the responses in the callback. + +@warning + This function is not allowed in STA mode. + +@see + tpfAppWifiCb + tenuM2mSecType + m2m_wifi_init + M2M_WIFI_REQ_DHCP_CONF + tstrM2mWifiStateChanged + tstrM2MAPModeConfig + tstrM2MAPConfigExt + +@section WIFIExample5b Example + The code snippet demonstrates how the AP mode is enabled after the driver is initialized in the application's main function and the handling + of the event @ref M2M_WIFI_REQ_DHCP_CONF, to indicate successful connection. + +@include m2m_wifi_enable_ap_ext.c +@example m2m_wifi_enable_ap_ext.c +*/ +int8_t m2m_wifi_enable_ap_ext(const tstrM2MAPModeConfig *pstrM2MAPModeConfig); + +/*! +@ingroup WLANAP +@fn \ + int8_t m2m_wifi_disable_ap(void); + +@brief + Synchronous API to disable access point mode on the WINC. + +@details + Must be called only when the AP is enabled through the @ref m2m_wifi_enable_ap + function. Otherwise the call to this function will not be useful. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + m2m_wifi_enable_ap +*/ +int8_t m2m_wifi_disable_ap(void); + +/*! +@ingroup WLANCONNECT +@fn \ + int8_t m2m_wifi_set_static_ip(tstrM2MIPConfig *pstrStaticIPConf); + +@brief + Asynchronous API to manually assign a (static) IP address to the WINC. + +@details + Assigns a static IP address to the WINC. + Typically an infrastructure access point will be able to provide an IP address to all clients + after they associate. The WINC will request configuration via DHCP automatically after + successfully connecting to an access point. + This function should only be called in the event that the network has no DHCP server or in case the application + wants to assign a predefined known IP address and the application. + This function can be used to assign a static IP address in case the application knows the specifics of the network. + The user must keep in mind that assigning a static IP address might + result in an IP address conflict. In case of an IP address conflict observed + by the WINC the user will get a response of @ref M2M_WIFI_RESP_IP_CONFLICT + in the Wi-Fi callback. The application is then responsible to either solve the + conflict or assign another IP address. + +@pre + The application must first call @ref m2m_wifi_enable_dhcp to request that DHCP functionality is + disabled prior to calling this function. + +@warning + Exercise caution using this function. + DHCP is the preferred method for configuring IP addresses. + +@param[in] pstrStaticIPConf + Pointer to a structure holding the static IP configuration (IP, Gateway, subnet mask and DNS address). + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + tstrM2MIPConfig +*/ +int8_t m2m_wifi_set_static_ip(tstrM2MIPConfig *pstrStaticIPConf); + +/*! +@ingroup WLANCONNECT +@fn \ + int8_t m2m_wifi_enable_dhcp(uint8_t u8DhcpEn); + +@brief + Asynchronous function to control the DHCP client functionality within the WINC. + +@details + This function allows the application to control the behaviour of the DHCP client function within + the WINC once it has associated with an access point. DHCP client functionality is enabled by + default. + +@param[in] u8DhcpEn + The state of the DHCP client feature after successful association with an access point: + - 1: Enables DHCP client after connection. + - 0: Disables DHCP client after connection. + +@return + The function returns @ref M2M_SUCCESS for successful operation and a negative value otherwise. + +@warning + DHCP client is enabled by default. + This Function should be called to disable DHCP client operation before using @ref m2m_wifi_set_static_ip. + +@see + m2m_wifi_set_static_ip +*/ +int8_t m2m_wifi_enable_dhcp(uint8_t u8DhcpEn); + +/*! +@ingroup WLANSCAN +@fn \ + int8_t m2m_wifi_set_scan_options(tstrM2MScanOption *ptstrM2MScanOption); + +@brief + Synchronous API for configuring the behaviour of the WINC network scanning functions. + +@details + This function allows the application to tune the scanning behaviour of the WINC using the + parameters described in @ref tstrM2MScanOption. + +@param[in] ptstrM2MScanOption; + Pointer to the structure holding the Scan Parameters. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + tenuM2mScanCh + m2m_wifi_request_scan + tstrM2MScanOption +*/ +int8_t m2m_wifi_set_scan_options(tstrM2MScanOption *ptstrM2MScanOption); + +/*! +@ingroup WLANSCAN +@fn \ + int8_t m2m_wifi_set_scan_region(uint16_t u16ScanRegion); + +@brief + Synchronous API for configuring the regulatory restrictions that may affect the WINC scanning behaviour. + +@details + This function sets a property called the scan region, a parameter that affects the range of + channels that the WINC may legally scan given a geographic region. + + For 2.4GHz, supported in the current release, the requested scan region cannot exceed the + maximum number of channels (14). + +@param[in] u16ScanRegion + @ref ASIA + @ref EUROPE + @ref NORTH_AMERICA + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + tenuM2mScanRegion + m2m_wifi_request_scan +*/ +int8_t m2m_wifi_set_scan_region(uint16_t u16ScanRegion); + +/*! +@ingroup WLANSCAN +@fn \ + int8_t m2m_wifi_request_scan(uint8_t u8Ch); + +@brief + Asynchronous API to request the WINC to scan for networks. + +@details + Scan statuses are delivered to the application via the Wi-Fi event callback (@ref tpfAppWifiCb) in + three stages. The first step involves the event @ref M2M_WIFI_RESP_SCAN_DONE which, if successful, + provides the number of detected networks (access points). The application must then read the list + of access points via multiple calls to the asynchronous @ref m2m_wifi_req_scan_result API. For + each call to this function, the application will receive (step three) the event + @ref M2M_WIFI_RESP_SCAN_RESULT. + +@param[in] u8Ch + RF Channel ID for SCAN operation. It should be set according to @ref tenuM2mScanCh, with a + value of @ref M2M_WIFI_CH_ALL to scan all channels. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@pre + - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered at + initialization. Registration of the callback is done via @ref m2m_wifi_init. + - The events @ref M2M_WIFI_RESP_SCAN_DONE and @ref M2M_WIFI_RESP_SCAN_RESULT must be handled in + the (@ref tpfAppWifiCb) callback. + - The @ref m2m_wifi_handle_events function MUST be called to receive the responses in the + callback. + +@warning + This API is valid only for STA mode, it may be called regardless of connection state (connected or disconnected states). + +@see + M2M_WIFI_RESP_SCAN_DONE + M2M_WIFI_RESP_SCAN_RESULT + tpfAppWifiCb + tstrM2mWifiscanResult + tenuM2mScanCh + m2m_wifi_init + m2m_wifi_handle_events + m2m_wifi_req_scan_result + +@section WIFIExample6 Example + The code snippet demonstrates an example of how the scan request is called from the application's main function and the handling of + the events received in response. + +@include m2m_wifi_request_scan.c +@example m2m_wifi_request_scan.c +*/ +int8_t m2m_wifi_request_scan(uint8_t u8Ch); + +/*! +@ingroup WLANSCAN +@fn \ + int8_t m2m_wifi_request_scan_passive(uint8_t u8Ch, uint16_t u16ScanTime); + +@brief + Similar to @ref m2m_wifi_request_scan but performs passive scanning instead of active scanning. + +@param[in] u8Ch + RF Channel ID for SCAN operation. It should be set according to @ref tenuM2mScanCh. + With a value of @ref M2M_WIFI_CH_ALL, means to scan all channels. + +@param[in] u16ScanTime + The time in ms that passive scan is listening for beacons on each channel per one slot, enter 0 for default setting. + +@warning + This function is not allowed in AP mode. It works only for STA mode (both connected or disconnected states). + +@pre + - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered at initialization. Registering the callback + is done through passing it to the @ref m2m_wifi_init. + - The events @ref M2M_WIFI_RESP_SCAN_DONE and @ref M2M_WIFI_RESP_SCAN_RESULT. + must be handled in the callback. + - The @ref m2m_wifi_handle_events function MUST be called to receive the responses in the callback. + +@see + M2M_WIFI_RESP_SCAN_DONE + M2M_WIFI_RESP_SCAN_RESULT + tpfAppWifiCb + tstrM2MScanOption + tstrM2mWifiscanResult + tenuM2mScanCh + m2m_wifi_init + m2m_wifi_request_scan + m2m_wifi_handle_events + m2m_wifi_req_scan_result + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. +*/ +int8_t m2m_wifi_request_scan_passive(uint8_t u8Ch, uint16_t u16ScanTime); + +/*! +@ingroup WLANSCAN +@fn \ + int8_t m2m_wifi_request_scan_ssid_list(uint8_t u8Ch, uint8_t *pu8Ssidlist); + +@brief + Asynchronous Wi-Fi scan request on the given channel and the hidden scan list. + +@details + The scan status is delivered in the Wi-Fi event callback and then the application + is to read the scan results sequentially. + The number of APs found (N) is returned in event @ref M2M_WIFI_RESP_SCAN_DONE with the number of found + APs. + The application could read the list of APs by calling the function @ref m2m_wifi_req_scan_result N times. + +@param[in] u8Ch + RF Channel ID for SCAN operation. It should be set according to @ref tenuM2mScanCh. + With a value of @ref M2M_WIFI_CH_ALL, means to scan all channels. + +@param[in] pu8Ssidlist + u8SsidList is a buffer containing a list of hidden SSIDs to + include during the scan. The first byte in the buffer, u8SsidList[0], + is the number of SSIDs encoded in the string. The number of hidden SSIDs + cannot exceed @ref MAX_HIDDEN_SITES. All SSIDs are concatenated in the following + bytes and each SSID is prefixed with a one-byte header containing its length. + The total number of bytes in u8SsidList buffer, including length byte, cannot + exceed 133 bytes (MAX_HIDDEN_SITES SSIDs x 32 bytes each, which is max SSID length). + For instance, encoding the two hidden SSIDs "DEMO_AP" and "TEST" + results in the following buffer content: + +@code + uint8_t u8SsidList[14]; + u8SsidList[0] = 2; // Number of SSIDs is 2 + u8SsidList[1] = 7; // Length of the string "DEMO_AP" without NULL termination + memcpy(&u8SsidList[2], "DEMO_AP", 7); // Bytes index 2-9 containing the string DEMO_AP + u8SsidList[9] = 4; // Length of the string "TEST" without NULL termination + memcpy(&u8SsidList[10], "TEST", 4); // Bytes index 10-13 containing the string TEST +@endcode + +@note + It works with STA/AP mode (connected or disconnected). + +@pre + - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered at initialization. Registering the callback + is done through passing it to the @ref m2m_wifi_init. + - The events @ref M2M_WIFI_RESP_SCAN_DONE and @ref M2M_WIFI_RESP_SCAN_RESULT. + must be handled in the callback. + - The @ref m2m_wifi_handle_events function MUST be called to receive the responses in the callback. + +@see + M2M_WIFI_RESP_SCAN_DONE + M2M_WIFI_RESP_SCAN_RESULT + tpfAppWifiCb + tstrM2mWifiscanResult + tenuM2mScanCh + m2m_wifi_init + m2m_wifi_handle_events + m2m_wifi_req_scan_result + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. + +@section WIFIExample6b Example + The code snippet demonstrates an example of how the scan request is called from the application's main function and the handling of + the events received in response. + +@include m2m_wifi_request_scan_ssid_list.c +@example m2m_wifi_request_scan_ssid_list.c +*/ +int8_t m2m_wifi_request_scan_ssid_list(uint8_t u8Ch, uint8_t *pu8Ssidlist); + +/*! +@ingroup WLANSCAN +@fn \ + uint8_t m2m_wifi_get_num_ap_found(void); + +@brief + Synchronous function to retrieve the number of AP's found during the last scan operation. + +@details + The function reads the number of APs from global variable which was updated in the Wi-Fi + callback function through the @ref M2M_WIFI_RESP_SCAN_DONE event. + Function used only in STA mode only. + +@see + m2m_wifi_request_scan + M2M_WIFI_RESP_SCAN_DONE + M2M_WIFI_RESP_SCAN_RESULT + +@pre + m2m_wifi_request_scan must be called first to ensure up to date results are available. + - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered at initialization. Registering the callback + is done through passing it to the @ref m2m_wifi_init. + - The event @ref M2M_WIFI_RESP_SCAN_DONE must be handled in the callback to receive the requested scan information. + +@warning + This function must be called only in the Wi-Fi callback function when the events + @ref M2M_WIFI_RESP_SCAN_DONE or @ref M2M_WIFI_RESP_SCAN_RESULT are received. + Calling this function in any other place will result in undefined/outdated numbers. + +@return + Returns the number of AP's found in the last Scan Request. + +@section WIFIExample7 Example + The code snippet demonstrates an example of how the scan request is called from the application's main function and the handling of + the events received in response. + +@include m2m_wifi_get_num_ap_found.c +@example m2m_wifi_get_num_ap_found.c +*/ +uint8_t m2m_wifi_get_num_ap_found(void); + +/*! +@ingroup WLANSCAN +@fn \ + int8_t m2m_wifi_req_scan_result(uint8_t u8Index); + +@brief + Asynchronous API to request the information of an access point discovered via scanning. + +@details + This function allows the information of any discovered access point to be retrieved. When a + scan is completed, the application is informed of the number of networks (access points) + discovered. Calling this function with an index, N, will return the information for the Nth + access point. The information will be returned to the application via a + @ref M2M_WIFI_RESP_SCAN_RESULT event, and the response data may be obtained through casting + the pointer (pvMsg) to @ref tstrM2mWifiscanResult. + +@param[in] u8Index + Index for the requested result, the index range start from 0 till number of AP's found. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + tstrM2mWifiscanResult + m2m_wifi_get_num_ap_found + m2m_wifi_request_scan + +@pre + - @ref m2m_wifi_request_scan must be called first to ensure up to date results are available. + - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered + in order to receive scan data after calling this function. Registration of the callback + is done via the @ref m2m_wifi_init function. + - The event @ref M2M_WIFI_RESP_SCAN_RESULT must be handled in the callback to receive the + requested scan information. + +@warning + - This API is valid only for STA mode, it may be called regardless of the connection state (connected or disconnected). + - Calling this function without first issuing a scan request may lead to stale data being recovered. + - Application code should refrain from introducing significant delays between issuing the scan + request and scan result requests. + +@section WIFIExample8 Example + The code snippet demonstrates an example of how the scan request is called from the application's main function and + the handling of the events received in the response. + +@include m2m_wifi_req_scan_result.c +@example m2m_wifi_req_scan_result.c +*/ +int8_t m2m_wifi_req_scan_result(uint8_t u8Index); + +/*! +@ingroup WLANCONNECT +@fn \ + int8_t m2m_wifi_req_curr_rssi(void); + +@brief + Asynchronous API to request the current Receive Signal Strength (RSSI) of the current connection. + +@details + This function will result in the application receiving the RSSI via a + @ref M2M_WIFI_RESP_CURRENT_RSSI event. + +@pre + - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered + during initialization. Registration of the callback is done through passing it to @ref m2m_wifi_init + via the @ref tstrWifiInitParam initialization structure. + - The event @ref M2M_WIFI_RESP_CURRENT_RSSI must be handled in the callback to receive the requested Rssi information. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@section WIFIExample9 Example + The code snippet demonstrates how the RSSI request is called in the application's main function and the handling of the event received in the callback. + +@include m2m_wifi_req_curr_rssi.c +@example m2m_wifi_req_curr_rssi.c +*/ +int8_t m2m_wifi_req_curr_rssi(void); + +/*! +@ingroup WLANCONF +@fn \ + int8_t m2m_wifi_get_otp_mac_address(uint8_t *pu8MacAddr, uint8_t *pu8IsValid); + +@brief + Synchronous API to query the MAC address programmed into the WINC OTP memory. + +@details + This function attempts to read the device's MAC address from the One Time Programmable (OTP) + memory on the WINC. The presence (yes or no) of a MAC address in the OTP memory and, in the case + of it being present, its value is returned via RAM pointed to by the input arguments. + + Request the MAC address stored on the One Time Programmable(OTP) memory of the device. + The function is blocking until the response is received. + +@pre + Prior call to @ref m2m_wifi_init is required before any WIFI/socket function. + +@param[out] pu8MacAddr + Output MAC address buffer 6 bytes in size. Valid only if *pu8Valid=1. + +@param[out] pu8IsValid + A boolean value set by the callee to indicate the validity of pu8MacAddr in OTP. If no MAC has + been programmed in the OTP the value of this parameter will be zero; otherwise it will be non-zero. + +@return + The function returns @ref M2M_SUCCESS for success and a negative value otherwise. + +@see + m2m_wifi_get_mac_address +*/ +int8_t m2m_wifi_get_otp_mac_address(uint8_t *pu8MacAddr, uint8_t *pu8IsValid); + +/*! +@ingroup WLANCONF +@fn \ + int8_t m2m_wifi_get_mac_address(uint8_t *pu8MacAddr) + +@brief + Synchronous API to retrieve the MAC address currently in use by the device. + +@details + This function obtains the MAC address that is currently in use by the device. If the function + returns with @ref M2M_SUCCESS then the content of the memory referenced by pu8MacAddr will be + populated with the 6 byte MAC address; otherwise, that memory will be left unchanged. + +@pre + Prior call to @ref m2m_wifi_init is required before any WIFI/socket function. + +@param[out] pu8MacAddr + Pointer to a buffer in memory containing a 6-byte MAC address (provided function returns @ref M2M_SUCCESS). + +@return + The function returns @ref M2M_SUCCESS for successful operation and a negative value otherwise. + +@see + m2m_wifi_get_otp_mac_address +*/ +int8_t m2m_wifi_get_mac_address(uint8_t *pu8MacAddr); + +/*! +@ingroup WLANPS +@fn \ + int8_t m2m_wifi_set_sleep_mode(uint8_t u8PsTyp, uint8_t u8BcastEn); + +@brief + Synchronous API to set the power-save mode of the WINC. + +@details + This is one of the two synchronous power-save setting functions that allow the host MCU application + to tweak the system power consumption. Such tweaking can be done through one of two ways: + - 1) Changing the power save mode, to one of the allowed power save modes (see @ref tenuPowerSaveModes). This is done by setting the first parameter. + - 2) Configuring DTIM monitoring: Configuring beacon monitoring parameters by enabling or disabling the reception of broadcast/multicast data. + This is done by setting the second parameter. + +@param[in] u8PsTyp + Desired power saving mode. Supported types are enumerated in @ref tenuPowerSaveModes. + +@param[in] u8BcastEn + Broadcast reception enable flag. + If set to 1, the WINC will wake for each DTIM beacon to ensure broadcast traffic can be received. + If set to 0, the WINC will not wakeup at the DTIM beacon, ignoring broadcast traffic, instead it will + wake every N beacon periods, as per the negotiated Listen Interval. + +@warning + The function called once after initialization. + +@return + The function returns @ref M2M_SUCCESS for successful operation and a negative value otherwise. + +@see + tenuPowerSaveModes + m2m_wifi_get_sleep_mode + m2m_wifi_set_lsn_int +*/ +int8_t m2m_wifi_set_sleep_mode(uint8_t u8PsTyp, uint8_t u8BcastEn); + +/*! +@ingroup WLANPS +@fn \ + int8_t m2m_wifi_request_sleep(uint32_t u32SlpReqTime); + +@brief + Asynchronous API to place the WINC into sleep mode for a specified period of time. + +@details + Power-save sleep request function, which requests the WINC device to sleep in the currently configured + power save mode, as set using @ref m2m_wifi_set_sleep_mode, for a specific time as defined by the parameter + u32SlpReqTime (measured in milliseconds). + This function should be used when the WINC is running in @ref M2M_PS_MANUAL power save mode only. + A wake up request is automatically performed by the WINC device when any host driver API function, e.g. Wi-Fi or socket operation is called. + +@param[in] u32SlpReqTime + Request sleep time in ms.\n + The best recommended sleep duration is left to be determined by the application. + Taking into account that if the application sends notifications very rarely, + sleeping for a long time can be a power-efficient decision. + In contrast, applications that are sensitive for long periods of absence can experience + performance degradation in the connection if long sleeping times are used. + +@return + The function returns @ref M2M_SUCCESS for successful operation and a negative value otherwise. + +@warning + The function should be called in @ref M2M_PS_MANUAL power save mode only. As enumerated in @ref tenuPowerSaveModes. + It's also important to note that during the sleeping time while in the M2M_PS_MANUAL mode, AP beacon monitoring is + bypassed and the Wi-Fi-connection may drop if the sleep period is elongated. + +@see + tenuPowerSaveModes + m2m_wifi_set_sleep_mode +*/ +int8_t m2m_wifi_request_sleep(uint32_t u32SlpReqTime); + +/*! +@ingroup WLANPS +@fn \ + uint8_t m2m_wifi_get_sleep_mode(void); + +@brief + Synchronous API to retrieve the current power save mode of the WINC. + +@return + The current operating power saving mode. The value will be one of those from the enumerated type @ref tenuPowerSaveModes. + +@see + tenuPowerSaveModes + m2m_wifi_set_sleep_mode +*/ +uint8_t m2m_wifi_get_sleep_mode(void); + +/*! +@fn \ + int8_t m2m_wifi_req_client_ctrl(uint8_t u8Cmd); + +@brief + Asynchronous command sending function to the PS Client. + +@details + Asynchronous command sending function to the PS Client (a WINC board running the ps_firmware) + if the PS client sends any command, it will be received through the @ref M2M_WIFI_RESP_CLIENT_INFO event. + +@param[in] u8Cmd + Control command sent from PS Server to PS Client (command values defined by the application) + +@pre + @ref m2m_wifi_req_server_init should be called first. + +@warning + This mode is not supported in the current release. + +@see + m2m_wifi_req_server_init + M2M_WIFI_RESP_CLIENT_INFO + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. +*/ +int8_t m2m_wifi_req_client_ctrl(uint8_t u8Cmd); + +/*! +@fn \ + int8_t m2m_wifi_req_server_init(uint8_t u8Ch); + +@brief + Synchronous function to initialize the PS Server. + +@details + The WINC supports non secure communication with another WINC, + (SERVER/CLIENT) through one byte command (probe request and probe response) without any connection setup. + The server mode can't be used with any other modes (STA/AP) + +@param[in] u8Ch + Server listening channel + +@see + m2m_wifi_req_client_ctrl + +@warning + This mode is not supported in the current release. + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. +*/ +int8_t m2m_wifi_req_server_init(uint8_t u8Ch); + +/*! +@ingroup WLANCONF +@fn \ + int8_t m2m_wifi_set_device_name(uint8_t *pu8DeviceName, uint8_t u8DeviceNameLength); + +@brief + Asynchronous API to set the Wi-Fi Direct "Device Name" of the WINC. + +@details + Sets the WINC device name. The name string is used as a device name in DHCP + hostname (option 12). + If a device is not set through this function a default name is assigned. + The default name is WINC-XX-YY, where XX and YY are the last 2 octets of the OTP + MAC address. If OTP (eFuse) is programmed, then the default name is WINC-00-00. + +@warning + The function called once after initialization.\n + Used for DHCP client hostname option (12).\n + Device name shall contain only characters allowed in valid internet host name as + defined in RFC 952 and 1123. + +@param[in] pu8DeviceName + Buffer holding the device name. Device name is a null terminated C string. + +@param[in] u8DeviceNameLength + Length of the device name. Should not exceed the maximum device name's + length @ref M2M_DEVICE_NAME_MAX (including null character). + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. +*/ +int8_t m2m_wifi_set_device_name(uint8_t *pu8DeviceName, uint8_t u8DeviceNameLength); + +/*! +@ingroup WLANTIME +@fn \ + int8_t m2m_wifi_configure_sntp(uint8_t *pu8NTPServerName, uint8_t u8NTPServerNameLength, tenuSNTPUseDHCP enuUseDHCP); + +@brief + Configures what NTP server the SNTP client should use. + +@details + Configures what NTP server the SNTP client should use. Only 1 server name can be provided, if the configured server name begins with an asterisk then it will be treated as a server pool. + The SNTP client can also use the NTP server provided by the DHCP server through option 42. + By default the NTP server provided by DHCP will be tried first, then the built-in default NTP server (time.nist.gov) will be used. + Configuring a server name will overwrite the built-in default server until next reboot. + +@param[in] pu8NTPServerName + Buffer holding the NTP server name. If the first character is an asterisk (*) then it will be treated as a server pool, where the asterisk will + be replaced with an incrementing value from 0 to 3 each time a server fails (example: *.pool.ntp.org). + +@param[in] u8NTPServerNameLength + Length of the NTP server name. Should not exceed the maximum NTP server name length of @ref M2M_NTP_MAX_SERVER_NAME_LENGTH. + +@param[in] enuUseDHCP + Should the NTP server provided by the DHCP server be used. + +@return + The function returns @ref M2M_SUCCESS for success and a negative value otherwise. +*/ +int8_t m2m_wifi_configure_sntp(uint8_t *pu8NTPServerName, uint8_t u8NTPServerNameLength, tenuSNTPUseDHCP enuUseDHCP); + +/*! +@ingroup WLANPS +@fn \ + int8_t m2m_wifi_set_lsn_int(tstrM2mLsnInt *pstrM2mLsnInt); + +@brief + Asynchronous API to set Wi-Fi listen interval for power save operation. + +@details + This is one of the two synchronous power-save setting functions that + allow the host MCU application to tweak the system power consumption. Such tweaking can be done by modifying the + Wi-Fi listen interval. The listen interval is how many beacon periods the station can sleep before it wakes up to receive data buffered in the AP. + It is represented in units of AP beacon periods(100ms). + +@warning + The function should be called once after initialization. + +@param[in] pstrM2mLsnInt + Structure holding the listen interval configuration. + +@pre + The function @ref m2m_wifi_set_sleep_mode shall be called first, to set the power saving mode required. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + tstrM2mLsnInt + m2m_wifi_set_sleep_mode +*/ +int8_t m2m_wifi_set_lsn_int(tstrM2mLsnInt *pstrM2mLsnInt); + +/*! +@ingroup WLANETH +@fn \ + int8_t m2m_wifi_send_ethernet_pkt(uint8_t *pu8Packet, uint16_t u16PacketSize); + +@brief + Asynchronous API to queue an Ethernet packet for transmission by the WINC. + +@details + Transmit a packet directly in ETHERNET/bypass mode where the TCP/IP stack is disabled + and the implementation of this packet is left to the application developer. + The Ethernet packet composition is left to the application developer. + +@note + Packets are the user's responsibility. + +@warning + This function available in ETHERNET/Bypass mode ONLY. Make sure that application defines ETH_MODE. + +@param[in] pu8Packet + Pointer to a buffer holding the whole Ethernet frame. + +@param[in] u16PacketSize + The size of the whole packet in bytes. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + m2m_wifi_enable_mac_mcast + m2m_wifi_set_receive_buffer +*/ +int8_t m2m_wifi_send_ethernet_pkt(uint8_t *pu8Packet, uint16_t u16PacketSize); + +/*! +@ingroup WLANTIME +@fn \ + int8_t m2m_wifi_enable_sntp(uint8_t u8Enable); + +@brief + Asynchronous API to enable or disable the native Simple Network Time Protocol(SNTP) client running on the WINC. + +@details + The SNTP client is enabled by default during chip initialization. This function can be used to + disable or subsequently re-enable the service. + + The service is capable of synchronizing the WINC system clock to the UTC time from a well-known + (and trusted) time server, for example "time.nist.gov". By default the SNTP client will update the + system time once every 24 hours. The ability to track the time accurately is important for various + applications such as checking expiry of X509 certificates during TLS (Transport Layer Security) + session establishment. + + It is highly recommended to leave SNTP enabled if there is no alternative source of timing + information. For systems including an RTC device, SNTP may not be needed and the WINC's time + may be set using the @ref m2m_wifi_set_system_time function. + +@param[in] u8Enable + Enables or disables the SNTP service + '0' :disable SNTP + '1' :enable SNTP + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + m2m_wifi_set_system_time + */ +int8_t m2m_wifi_enable_sntp(uint8_t u8Enable); + +/*! +@ingroup WLANTIME +@fn \ + int8_t m2m_wifi_set_system_time(uint32_t u32UTCSeconds); + +@brief + Asynchronous function for setting the system time within the WINC. + +@details + Function for setting the system time in time/date format (uint32_t). + The @ref tstrSystemTime structure can be used as a reference to the time values that + should be set and pass its value as uint32_t. + +@param[in] u32UTCSeconds + Seconds elapsed since January 1, 1900 (NTP Timestamp). + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + m2m_wifi_enable_sntp + tstrSystemTime + +@note + If there is an RTC on the host MCU, the SNTP may be disabled and the host may set the system + time within the firmware using the API @ref m2m_wifi_set_system_time. + */ +int8_t m2m_wifi_set_system_time(uint32_t u32UTCSeconds); + +/*! +@ingroup WLANTIME +@fn \ + int8_t m2m_wifi_get_system_time(void); + +@brief + Asynchronous API to obtain the system time in use by the WINC. + +@details + This function will request the WINC to report its current system time to the application. The + information will arrive at the application via the @ref tpfAppWifiCb and event @ref M2M_WIFI_RESP_GET_SYS_TIME. + Response time retrieved is parsed into the members defined in the structure @ref tstrSystemTime. + +@note + - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered + during initialization. Registration of the callback is done via the @ref m2m_wifi_init API. + - The event @ref M2M_WIFI_RESP_GET_SYS_TIME must be handled in the callback. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + m2m_wifi_enable_sntp + tstrSystemTime + */ +int8_t m2m_wifi_get_system_time(void); + +/*! +@ingroup WLANCONF +@fn \ + int8_t m2m_wifi_set_cust_InfoElement(uint8_t *pau8M2mCustInfoElement); + +@brief + Asynchronous API to add or remove a user-defined Information Element. + +@details + This function allows the application to provide a custom Information Element to the + WINC that will be included in all beacon and probe response frames, while in Access Point mode. + If it is required to delete these IEs, fill the buffer with zeros. + +@param[in] pau8M2mCustInfoElement + Pointer to Buffer containing the IE to be used. It is the application developer's + responsibility to ensure on the correctness of the information element's ordering + passed in. + If the pointer is null, this removes any current custom IE. If non-null, the pointer + must reference data in the following format: + +@verbatim + --------------- ---------- ---------- ------------------- -------- -------- ----------- ----------------------- + | Byte[0] | Byte[1] | Byte[2] | Byte[3:length1+2] | ..... | Byte[n] | Byte[n+1] | Byte[n+2:lengthx+2] | + |---------------|----------|----------|-------------------|-------- --------|-----------|---------------------| + | #of all Bytes | IE1 ID | Length1 | Data1(Hex Coded) | ..... | IEx ID | Lengthx | Datax(Hex Coded) | + --------------- ---------- ---------- ------------------- -------- -------- ----------- ----------------------- +@endverbatim + +@warning + Size of All elements combined must not exceed 255 byte. + Used in Access Point Mode. + +@note + IEs Format will follow the above format. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + m2m_wifi_enable_sntp + +@section WIFIExample11 Example + The example demonstrates how the information elements are set using this function. + +@include m2m_wifi_set_cust_InfoElement.c +@example m2m_wifi_set_cust_InfoElement.c + */ +int8_t m2m_wifi_set_cust_InfoElement(uint8_t *pau8M2mCustInfoElement); + +/*! +@ingroup WLANPS +@fn \ + int8_t m2m_wifi_set_power_profile(uint8_t u8PwrMode); + +@brief + Change the power profile mode. + +@param[in] u8PwrMode + Change the WINC power profile to different mode based on the enumeration @ref tenuM2mPwrMode. + +@warning + May only be called after initialization, before any connection request, and may not be used to change + the power mode thereafter. + +@return + The function returns @ref M2M_SUCCESS for success and a negative value otherwise. + +@see + tenuM2mPwrMode + m2m_wifi_init +*/ +int8_t m2m_wifi_set_power_profile(uint8_t u8PwrMode); + +/*! +@ingroup WLANCONF +@fn \ + int8_t m2m_wifi_set_tx_power(uint8_t u8TxPwrLevel); + +@brief + Set the TX power tenuM2mTxPwrLevel. + +@param[in] u8TxPwrLevel + Change the TX power based on the enumeration @ref tenuM2mTxPwrLevel. + +@pre + Must be called after the initialization and before any connection request and can't be changed in runtime. + +@return + The function returns @ref M2M_SUCCESS for success and a negative value otherwise. + +@see + tenuM2mTxPwrLevel + m2m_wifi_init +*/ +int8_t m2m_wifi_set_tx_power(uint8_t u8TxPwrLevel); + +/*! +@ingroup WLANCONF +@fn \ + int8_t m2m_wifi_set_gain_table_idx(uint8_t u8GainTableIdx); + +@brief + Set the Gain table index corresponding to specific WiFi region. + +@param[in] u8GainTableIdx + Change the gain table index based on the WiFi region it is suppose to be used. + +@pre + Must be called after the initialization and before any connection request. + The corresponding gain tables must be present in the flash. + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. + +@see + m2m_wifi_init +*/ +int8_t m2m_wifi_set_gain_table_idx(uint8_t u8GainTableIdx); + +/*! +@ingroup WLANLOG +@fn \ + int8_t m2m_wifi_enable_firmware_logs(uint8_t u8Enable); + +@brief + Enable or Disable logs in run time. + +@details + Enable or Disable logs in run time (Disable Firmware logs will enhance the firmware start-up time and performance). + +@param[in] u8Enable + Set 1 to enable the logs, 0 for disable. + +@pre + Must be called after initialization through the following function @ref m2m_wifi_init. + +@return + The function returns @ref M2M_SUCCESS for success and a negative value otherwise. + +@see + __DISABLE_FIRMWARE_LOGS__ (build option to disable logs from initializations) + m2m_wifi_init +*/ +int8_t m2m_wifi_enable_firmware_logs(uint8_t u8Enable); + +/*! +@ingroup WLANCONF +@fn \ + int8_t m2m_wifi_set_battery_voltage(uint16_t u16BattVoltx100); + +@brief + Set the battery voltage to update the firmware calculations. + +@pre + Must be called after initialization through the following function @ref m2m_wifi_init. + +@param[in] u16BattVoltx100 + Battery Voltage as double. + +@return + The function returns @ref M2M_SUCCESS for success and a negative value otherwise. + +@see + m2m_wifi_init +*/ +int8_t m2m_wifi_set_battery_voltage(uint16_t u16BattVoltx100); + +/*! +@ingroup WLANCONF +@fn \ + int8_t m2m_wifi_set_gains(tstrM2mWifiGainsParams *pstrM2mGain); + +@brief + Set the chip PPA gain for 11b/11gn. + +@param[in] pstrM2mGain + @ref tstrM2mWifiGainsParams contain gain parameters as implemented in rf document. + +@pre + Must be called after initialization through the following function @ref m2m_wifi_init. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + m2m_wifi_init +*/ +int8_t m2m_wifi_set_gains(tstrM2mWifiGainsParams *pstrM2mGain); + +#ifdef ETH_MODE +/*! +@ingroup WLANETH +@fn \ + int8_t m2m_wifi_enable_mac_mcast(uint8_t *pu8MulticastMacAddress, uint8_t u8AddRemove); + +@brief + Asynchronous API to add or remove MAC addresses to the multicast filter. + +@details + This function will configure the WINC to receive/ignore multicast packets from certain + MAC address groups when operating in bypass mode. + This function requests the given MAC addresses to be added/removed from the multicast filter. + +@param[in] pu8MulticastMacAddress + Pointer to MAC address + +@param[in] u8AddRemove + A flag to add or remove the MAC ADDRESS, based on the following values: + - 0 : remove MAC address + - 1 : add MAC address + +@note + Maximum number of MAC addresses that could be added is 8. + +@warning + This function is available in ETHERNET/bypass mode ONLY. + Make sure that the application defines ETH_MODE. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + m2m_wifi_set_receive_buffer + m2m_wifi_send_ethernet_pkt + */ +int8_t m2m_wifi_enable_mac_mcast(uint8_t *pu8MulticastMacAddress, uint8_t u8AddRemove); + +/*! +@ingroup WLANETH +@fn \ + int8_t m2m_wifi_set_receive_buffer(void *pvBuffer, uint16_t u16BufferLen); + +@brief + Synchronous function for setting or modifying the receiver buffer's length. + +@details + Synchronous function for setting or modifying the receiver buffer's length. + In the ETHERNET/bypass mode the application should define a callback of type + @ref tpfAppEthCb, through which the application handles the received + ethernet frames. It is through this callback function that the user can + dynamically modify the length of the currently used receiver buffer. + +@param[in] pvBuffer + Pointer to Buffer to receive data. + NULL pointer causes a negative error @ref M2M_ERR_FAIL. + +@param[in] u16BufferLen + Length of data to be received. Maximum length of data should not exceed the size defined by TCP/IP + defined as @ref SOCKET_BUFFER_MAX_LENGTH + +@warning + This function is available in the Ethernet/bypass mode ONLY. Make sure that the application defines ETH_MODE. + +@return + The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC and a negative value otherwise. + +@see + m2m_wifi_enable_mac_mcast + m2m_wifi_send_ethernet_pkt +*/ +int8_t m2m_wifi_set_receive_buffer(void *pvBuffer, uint16_t u16BufferLen); +#endif /* ETH_MODE */ + +/*! +@ingroup WLANCRYPTO +@fn \ + int8_t m2m_wifi_prng_get_random_bytes(uint8_t *pu8PrngBuff, uint16_t u16PrngSize); + +@brief + Asynchronous function for retrieving from the firmware a pseudo-random set of bytes. + +@details + Asynchronous function for retrieving from the firmware a pseudo-random set of bytes as specified in the size passed in as a parameter. + The registered Wi-Fi-cb function retrieves the random bytes through the response @ref M2M_WIFI_RESP_GET_PRNG + +@param[in] pu8PrngBuff + Pointer to a buffer to receive data. + +@param[in] u16PrngSize + Request size in bytes + +@warning + Size greater than the maximum specified (@ref M2M_BUFFER_MAX_SIZE - sizeof(tstrPrng)) + causes a negative error @ref M2M_ERR_FAIL. + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. +*/ +int8_t m2m_wifi_prng_get_random_bytes(uint8_t *pu8PrngBuff, uint16_t u16PrngSize); + +/*! +@ingroup WLANCONF +@fn \ + int8_t m2m_wifi_conf_auto_rate(tstrConfAutoRate *pstrConfAutoRate); + +@brief + Configures WLAN automatic TX rate adaptation algorithm. + +@details + Allow the host MCU app to configure auto TX rate selection algorithm. The application can use this + API to tweak the algorithm performance. Moreover, it allows the application to force a specific WLAN + PHY rate for transmitted data packets to favor range vs. throughput needs. + +@param[in] pstrConfAutoRate + The Auto rate configuration parameters as listed in tstrConfAutoRate. + +@return + The function SHALL return @ref M2M_SUCCESS for success and a negative value otherwise. + +@see + tstrConfAutoRate +*/ +int8_t m2m_wifi_conf_auto_rate(tstrConfAutoRate *pstrConfAutoRate); + +/*! +@ingroup WLANROAMING +@fn \ + int8_t m2m_wifi_enable_roaming(uint8_t u8EnableDhcp); + +@brief + Enable WiFi STA roaming. + +@details + m2m_wifi_enable_roaming enables the firmware to trigger the roaming algorithm/steps on link loss with the current AP. + If roaming is successful, + the @ref M2M_WIFI_RESP_CON_STATE_CHANGED message with state as @ref M2M_WIFI_ROAMED is sent to host. + Additionally a @ref M2M_WIFI_REQ_DHCP_CONF message with new DHCP lease details is sent to host (only if u8EnableDhcp=1). + If roaming is unsuccessful, + @ref M2M_WIFI_RESP_CON_STATE_CHANGED message with state as @ref M2M_WIFI_DISCONNECTED is sent to host. + +@param[in] u8EnableDhcp + 0 : Disables DHCP client execution after roaming to new AP + 1 : Enables DHCP client execution after roaming to new AP + +@pre + Must be called after the initialization. + The roaming algorithm/procedure is internal to the firmware. + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. + +@see + m2m_wifi_init +*/ +int8_t m2m_wifi_enable_roaming(uint8_t u8EnableDhcp); +/*! +@ingroup WLANROAMING +@fn \ + int8_t m2m_wifi_disable_roaming(void); + +@brief + Disable WiFi STA roaming. + +@pre + Must be called after the initialization. + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. + +@see + m2m_wifi_init +*/ +int8_t m2m_wifi_disable_roaming(void); + +/*! +@ingroup WLANINIT +@fn \ + uint8_t m2m_wifi_get_state(void); + +@brief + Get the Wi-Fi state. + +@return + The function returns the current Wi-Fi state (see @ref tenuWifiState for the possible states). + +@note + Check the WINC state. See @ref tenuWifiState for possible states.\n + @ref WIFI_STATE_INIT state represents WINC initialized but not started, this is a suitable state + for safe flash access. + +@sa + m2m_wifi_init + m2m_wifi_download_mode +*/ +uint8_t m2m_wifi_get_state(void); + +/** @defgroup VERSION Version + @brief + Describes the APIs for reading the version information of the WINC firmware. + @{ + @defgroup VERSIONDEF Defines + @brief + Specifies the macros and defines used by the version APIs. + + @defgroup VERSIONAPI Functions + @brief + Lists the APIs for reading the version information of the WINC firmware. + @} + */ + +/*! +@ingroup VERSIONAPI +@fn \ + int8_t m2m_wifi_get_firmware_version(tstrM2mRev *pstrRev) + +@brief + Synchronous API to obtain the firmware version currently running on the WINC. + +@details + Get the Firmware version info from the active partition, as defined in the structure @ref tstrM2mRev. + +@param[out] pstrRev + Pointer to a variable of type @ref tstrM2mRev, which contains the firmware version parameters. + +@return + The function returns @ref M2M_SUCCESS for success and a negative value otherwise. + +@pre + Must be called after initialization through the following function @ref m2m_wifi_init. + +@sa + m2m_wifi_init +*/ +int8_t m2m_wifi_get_firmware_version(tstrM2mRev *pstrRev); + +#ifdef __cplusplus +} +#endif +#endif /* __M2M_WIFI_H__ */ + diff --git a/AVRIoT.X/mcc_generated_files/winc/readme.md b/AVRIoT.X/mcc_generated_files/winc/readme.md new file mode 100644 index 0000000..2009d37 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/readme.md @@ -0,0 +1 @@ +## This folder will contain the source and header files generated using the WINC library's ftl files. \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/winc/socket/socket.c b/AVRIoT.X/mcc_generated_files/winc/socket/socket.c new file mode 100644 index 0000000..b6b3141 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/socket/socket.c @@ -0,0 +1,1020 @@ +/** + * + * \file + * + * \brief Socket Interface. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +INCLUDES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +#include "../driver/winc_adapter.h" +#include "../common/winc_defines.h" +#include "../common/winc_debug.h" +#include "../m2m/m2m_types.h" +#include "socket.h" +#include "../m2m/m2m_socket_host_if.h" +#include "../driver/winc_hif.h" + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +MACROS +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + + +#define TLS_RECORD_HEADER_LENGTH (5) +#define ETHERNET_HEADER_OFFSET (34) +#define ETHERNET_HEADER_LENGTH (14) +#define TCP_IP_HEADER_LENGTH (40) +#define UDP_IP_HEADER_LENGTH (28) + +#define IP_PACKET_OFFSET (ETHERNET_HEADER_LENGTH + ETHERNET_HEADER_OFFSET - M2M_HIF_HDR_OFFSET) + +#define TCP_TX_PACKET_OFFSET (IP_PACKET_OFFSET + TCP_IP_HEADER_LENGTH) +#define UDP_TX_PACKET_OFFSET (IP_PACKET_OFFSET + UDP_IP_HEADER_LENGTH) +#define SSL_TX_PACKET_OFFSET (TCP_TX_PACKET_OFFSET + TLS_RECORD_HEADER_LENGTH) + +#define SSL_FLAGS_ACTIVE NBIT0 +#define SSL_FLAGS_BYPASS_X509 NBIT1 +#define SSL_FLAGS_2_RESERVD NBIT2 +#define SSL_FLAGS_3_RESERVD NBIT3 +#define SSL_FLAGS_CACHE_SESSION NBIT4 +#define SSL_FLAGS_NO_TX_COPY NBIT5 +#define SSL_FLAGS_CHECK_SNI NBIT6 + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +PRIVATE DATA TYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + + +/*! +* @brief +*/ +typedef struct{ + SOCKET sock; + uint8_t u8Dummy; + uint16_t u16SessionID; +}tstrCloseCmd; + + +/*! +* @brief +*/ +typedef struct{ + uint8_t *pu8UserBuffer; + uint16_t u16UserBufferSize; + uint16_t u16SessionID; + uint16_t u16DataOffset; + uint8_t bIsUsed; + uint8_t u8SSLFlags; + uint8_t bIsRecvPending; +}tstrSocket; + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +GLOBALS +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +static tstrSocket gastrSockets[MAX_SOCKET]; +static uint16_t gu16SessionID = 0; + +static tpfAppSocketCb gpfAppSocketCb; +static tpfAppResolveCb gpfAppResolveCb; +static uint8_t gbSocketInit = 0; +static tpfPingCb gfpPingCb; +static uint32_t gu32PingId = 0; + +static void Socket_ReadSocketData(SOCKET sock, tstrSocketRecvMsg *pstrRecv,uint8_t u8SocketMsg, + uint32_t u32StartAddress, uint16_t u16ReadCount) +{ + tstrSocket *pstrSocket = &gastrSockets[sock]; + + if((u16ReadCount > 0) && (pstrSocket->pu8UserBuffer != NULL) && (pstrSocket->u16UserBufferSize > 0) && (pstrSocket->bIsUsed == 1)) + { + uint16_t u16Read; + + pstrRecv->u16RemainingSize = u16ReadCount; + do + { + u16Read = u16ReadCount; + if (u16ReadCount > pstrSocket->u16UserBufferSize) + u16Read = pstrSocket->u16UserBufferSize; + + if(winc_hif_receive(u32StartAddress, pstrSocket->pu8UserBuffer, u16Read) == M2M_SUCCESS) + { + pstrRecv->pu8Buffer = pstrSocket->pu8UserBuffer; + pstrRecv->s16BufferSize = u16Read; + pstrRecv->u16RemainingSize -= u16Read; + + if (gpfAppSocketCb) + gpfAppSocketCb(sock, u8SocketMsg, pstrRecv); + + u16ReadCount -= u16Read; + u32StartAddress += u16Read; + + if((!pstrSocket->bIsUsed) && (u16ReadCount)) + { + WINC_LOG_DEBUG("Application Closed Socket While Rx Is not Complete"); + break; + } + } + else + { + WINC_LOG_INFO("(ERRR)Current <%u>", u16ReadCount); + break; + } + } + while(u16ReadCount != 0); + } +} + +void m2m_ip_cb(uint8_t u8OpCode, uint16_t u16BufferSize, uint32_t u32Address) +{ + if((u8OpCode == SOCKET_CMD_BIND) || (u8OpCode == SOCKET_CMD_SSL_BIND)) + { + tstrBindReply strBindReply; + tstrSocketBindMsg strBind; + + if(winc_hif_receive(u32Address, &strBindReply, sizeof(tstrBindReply)) == M2M_SUCCESS) + { + strBind.status = strBindReply.s8Status; + if(gpfAppSocketCb) + gpfAppSocketCb(strBindReply.sock, SOCKET_MSG_BIND, &strBind); + } + } + else if(u8OpCode == SOCKET_CMD_LISTEN) + { + tstrListenReply strListenReply; + tstrSocketListenMsg strListen; + if(winc_hif_receive(u32Address, &strListenReply, sizeof(tstrListenReply)) == M2M_SUCCESS) + { + strListen.status = strListenReply.s8Status; + if(gpfAppSocketCb) + gpfAppSocketCb(strListenReply.sock, SOCKET_MSG_LISTEN, &strListen); + } + } + else if(u8OpCode == SOCKET_CMD_ACCEPT) + { + tstrAcceptReply strAcceptReply; + tstrSocketAcceptMsg strAccept; + if(winc_hif_receive(u32Address, &strAcceptReply, sizeof(tstrAcceptReply)) == M2M_SUCCESS) + { + if(strAcceptReply.sConnectedSock >= 0) + { + gastrSockets[strAcceptReply.sConnectedSock].u8SSLFlags = gastrSockets[strAcceptReply.sListenSock].u8SSLFlags; + gastrSockets[strAcceptReply.sConnectedSock].bIsUsed = 1; + gastrSockets[strAcceptReply.sConnectedSock].u16DataOffset = strAcceptReply.u16AppDataOffset - M2M_HIF_HDR_OFFSET; + + /* The session ID is used to distinguish different socket connections + by comparing the assigned session ID to the one reported by the firmware*/ + ++gu16SessionID; + if(gu16SessionID == 0) + ++gu16SessionID; + + gastrSockets[strAcceptReply.sConnectedSock].u16SessionID = gu16SessionID; + WINC_LOG_DEBUG("Socket %d session ID = %u", strAcceptReply.sConnectedSock, gu16SessionID); + } + strAccept.sock = strAcceptReply.sConnectedSock; + strAccept.strAddr.sin_family = AF_INET; + strAccept.strAddr.sin_port = strAcceptReply.strAddr.u16Port; + strAccept.strAddr.sin_addr.s_addr = strAcceptReply.strAddr.u32IPAddr; + if(gpfAppSocketCb) + gpfAppSocketCb(strAcceptReply.sListenSock, SOCKET_MSG_ACCEPT, &strAccept); + } + } + else if((u8OpCode == SOCKET_CMD_CONNECT) || (u8OpCode == SOCKET_CMD_SSL_CONNECT)) + { + tstrConnectReply strConnectReply; + tstrSocketConnectMsg strConnMsg; + if(winc_hif_receive(u32Address, &strConnectReply, sizeof(tstrConnectReply)) == M2M_SUCCESS) + { + strConnMsg.sock = strConnectReply.sock; + strConnMsg.s8Error = strConnectReply.s8Error; + if(strConnectReply.s8Error == SOCK_ERR_NO_ERROR) + { + gastrSockets[strConnectReply.sock].u16DataOffset = strConnectReply.u16AppDataOffset - M2M_HIF_HDR_OFFSET; + } + if(gpfAppSocketCb) + gpfAppSocketCb(strConnectReply.sock, SOCKET_MSG_CONNECT, &strConnMsg); + } + } + else if(u8OpCode == SOCKET_CMD_DNS_RESOLVE) + { + tstrDnsReply strDnsReply; + if(winc_hif_receive(u32Address, &strDnsReply, sizeof(tstrDnsReply)) == M2M_SUCCESS) + { + if(gpfAppResolveCb) + gpfAppResolveCb((uint8_t*)strDnsReply.acHostName, strDnsReply.u32HostIP); + } + } + else if((u8OpCode == SOCKET_CMD_RECV) || (u8OpCode == SOCKET_CMD_RECVFROM) || (u8OpCode == SOCKET_CMD_SSL_RECV)) + { + SOCKET sock; + int16_t s16RecvStatus; + tstrRecvReply strRecvReply; + uint16_t u16ReadSize; + tstrSocketRecvMsg strRecvMsg; + uint8_t u8CallbackMsgID = SOCKET_MSG_RECV; + uint16_t u16DataOffset; + + if(u8OpCode == SOCKET_CMD_RECVFROM) + u8CallbackMsgID = SOCKET_MSG_RECVFROM; + + /* Read RECV REPLY data structure. + */ + u16ReadSize = sizeof(tstrRecvReply); + if(winc_hif_receive(u32Address, &strRecvReply, u16ReadSize) == M2M_SUCCESS) + { + uint16_t u16SessionID = 0; + + sock = strRecvReply.sock; + u16SessionID = strRecvReply.u16SessionID; + WINC_LOG_DEBUG("recv callback session ID = %u",u16SessionID); + + /* Reset the Socket RX Pending Flag. + */ + gastrSockets[sock].bIsRecvPending = 0; + + s16RecvStatus = WINC_TO_HOST_U16(strRecvReply.s16RecvStatus); + u16DataOffset = WINC_TO_HOST_U16(strRecvReply.u16DataOffset); + strRecvMsg.strRemoteAddr.sin_port = strRecvReply.strRemoteAddr.u16Port; + strRecvMsg.strRemoteAddr.sin_addr.s_addr = strRecvReply.strRemoteAddr.u32IPAddr; + + if(u16SessionID == gastrSockets[sock].u16SessionID) + { + if((s16RecvStatus > 0) && ((uint16_t)s16RecvStatus < u16BufferSize)) + { + /* Skip incoming bytes until reaching the Start of Application Data. + */ + u32Address += u16DataOffset; + + /* Read the Application data and deliver it to the application callback in + the given application buffer. If the buffer is smaller than the received data, + the data is passed to the application in chunks according to its buffer size. + */ + u16ReadSize = (uint16_t)s16RecvStatus; + Socket_ReadSocketData(sock, &strRecvMsg, u8CallbackMsgID, u32Address, u16ReadSize); + } + else + { + /* Don't tidy up here. Application must call close(). + */ + strRecvMsg.s16BufferSize = s16RecvStatus; + strRecvMsg.pu8Buffer = NULL; + if(gpfAppSocketCb) + gpfAppSocketCb(sock, u8CallbackMsgID, &strRecvMsg); + } + } + else + { + WINC_LOG_DEBUG("Discard recv callback %u %u", u16SessionID, gastrSockets[sock].u16SessionID); + } + } + } + else if((u8OpCode == SOCKET_CMD_SEND) || (u8OpCode == SOCKET_CMD_SENDTO) || (u8OpCode == SOCKET_CMD_SSL_SEND)) + { + SOCKET sock; + int16_t s16Rcvd; + tstrSendReply strReply; + uint8_t u8CallbackMsgID = SOCKET_MSG_SEND; + + if(u8OpCode == SOCKET_CMD_SENDTO) + u8CallbackMsgID = SOCKET_MSG_SENDTO; + + if(winc_hif_receive(u32Address, &strReply, sizeof(tstrSendReply)) == M2M_SUCCESS) + { + uint16_t u16SessionID = 0; + + sock = strReply.sock; + u16SessionID = strReply.u16SessionID; + WINC_LOG_DEBUG("send callback session ID = %u", u16SessionID); + + s16Rcvd = WINC_TO_HOST_U16(strReply.s16SentBytes); + + if(u16SessionID == gastrSockets[sock].u16SessionID) + { + if(gpfAppSocketCb) + gpfAppSocketCb(sock, u8CallbackMsgID, &s16Rcvd); + } + else + { + WINC_LOG_DEBUG("Discard send callback %u %u", u16SessionID, gastrSockets[sock].u16SessionID); + } + } + } + else if(u8OpCode == SOCKET_CMD_PING) + { + tstrPingReply strPingReply; + if(winc_hif_receive(u32Address, &strPingReply, sizeof(tstrPingReply)) == M2M_SUCCESS) + { + if((gu32PingId == strPingReply.u32CmdPrivate) && (gfpPingCb != NULL)) + { + gfpPingCb(strPingReply.u32IPAddr, strPingReply.u32RTT, strPingReply.u8ErrorCode); + } + gfpPingCb = NULL; + } + } +} + +void socketInit(void) +{ + if(gbSocketInit == 0) + { + memset(gastrSockets, 0, MAX_SOCKET * sizeof(tstrSocket)); + gbSocketInit = 1; + gu16SessionID = 0; + } +} + +void socketDeinit(void) +{ + memset(gastrSockets, 0, MAX_SOCKET * sizeof(tstrSocket)); + gpfAppSocketCb = NULL; + gpfAppResolveCb = NULL; + gfpPingCb = NULL; + gbSocketInit = 0; +} + +void registerSocketCallback(tpfAppSocketCb pfAppSocketCb, tpfAppResolveCb pfAppResolveCb) +{ + gpfAppSocketCb = pfAppSocketCb; + gpfAppResolveCb = pfAppResolveCb; +} + +void registerSocketEventCallback(tpfAppSocketCb pfAppSocketCb) +{ + gpfAppSocketCb = pfAppSocketCb; +} + +void registerSocketResolveCallback(tpfAppResolveCb pfAppResolveCb) +{ + gpfAppResolveCb = pfAppResolveCb; +} + +SOCKET socket(uint16_t u16Domain, uint8_t u8Type, uint8_t u8Flags) +{ + SOCKET sock = -1; + uint8_t u8SockID; + uint8_t u8Count; + tstrSocket *pstrSock = NULL; + static uint8_t u8NextTcpSock = 0; + static uint8_t u8NextUdpSock = 0; + + /* The only supported family is the AF_INET for UDP and TCP transport layer protocols. */ + if(u16Domain == AF_INET) + { + if(u8Type == SOCK_STREAM) + { + for(u8Count = 0; u8Count < TCP_SOCK_MAX; u8Count ++) + { + u8SockID = u8NextTcpSock; + pstrSock = &gastrSockets[u8NextTcpSock]; + u8NextTcpSock = (u8NextTcpSock + 1) % TCP_SOCK_MAX; + if(!pstrSock->bIsUsed) + { + sock = (SOCKET)u8SockID; + break; + } + } + } + else if(u8Type == SOCK_DGRAM) + { + tstrSocket *pastrUDPSockets = &gastrSockets[TCP_SOCK_MAX]; + for(u8Count = 0; u8Count < UDP_SOCK_MAX; u8Count ++) + { + u8SockID = u8NextUdpSock; + pstrSock = &pastrUDPSockets[u8NextUdpSock]; + u8NextUdpSock = (u8NextUdpSock + 1) % UDP_SOCK_MAX; + if(!pstrSock->bIsUsed) + { + sock = (SOCKET)(u8SockID + TCP_SOCK_MAX); + break; + } + } + } + + if(pstrSock) + { + memset(pstrSock, 0, sizeof(tstrSocket)); + pstrSock->bIsUsed = 1; + + /* The session ID is used to distinguish different socket connections + by comparing the assigned session ID to the one reported by the firmware*/ + ++gu16SessionID; + if(gu16SessionID == 0) + ++gu16SessionID; + + pstrSock->u16SessionID = gu16SessionID; + WINC_LOG_INFO("Socket %d session ID = %u", sock, gu16SessionID ); + + if(u8Flags & SOCKET_FLAGS_SSL) + { + tstrSSLSocketCreateCmd strSSLCreate; + strSSLCreate.sslSock = sock; + pstrSock->u8SSLFlags = SSL_FLAGS_ACTIVE | SSL_FLAGS_NO_TX_COPY; + winc_hif_send_no_data(M2M_REQ_GROUP_IP, SOCKET_CMD_SSL_CREATE, &strSSLCreate, sizeof(tstrSSLSocketCreateCmd)); + } + } + } + return sock; +} + +int8_t bind(SOCKET sock, struct sockaddr *pstrAddr, uint8_t u8AddrLen) +{ + tstrBindCmd strBind; + uint8_t u8CMD = SOCKET_CMD_BIND; + + if((pstrAddr == NULL) || (sock < 0) || (!gastrSockets[sock].bIsUsed) || (!u8AddrLen)) + return SOCK_ERR_INVALID_ARG; + + if(gastrSockets[sock].u8SSLFlags & SSL_FLAGS_ACTIVE) + { + u8CMD = SOCKET_CMD_SSL_BIND; + } + + /* Build the bind request. */ + strBind.sock = sock; + memcpy((uint8_t *)&strBind.strAddr, (uint8_t *)pstrAddr, sizeof(tstrSockAddr)); + + strBind.u16SessionID = gastrSockets[sock].u16SessionID; + + /* Send the request. */ + if (M2M_SUCCESS != winc_hif_send_no_data(M2M_REQ_GROUP_IP, u8CMD, &strBind,sizeof(tstrBindCmd))) + return SOCK_ERR_INVALID; + + return SOCK_ERR_NO_ERROR; +} + +int8_t listen(SOCKET sock, uint8_t u8Backlog) +{ + tstrListenCmd strListen; + + if((sock < 0) || (!gastrSockets[sock].bIsUsed)) + return SOCK_ERR_INVALID_ARG; + + strListen.sock = sock; + strListen.u8BackLog = u8Backlog; + strListen.u16SessionID = gastrSockets[sock].u16SessionID; + + if (M2M_SUCCESS != winc_hif_send_no_data(M2M_REQ_GROUP_IP, SOCKET_CMD_LISTEN, &strListen, sizeof(tstrListenCmd))) + return SOCK_ERR_INVALID; + + return SOCK_ERR_NO_ERROR; +} + +int8_t accept(SOCKET sock, struct sockaddr *pstrAddr, uint8_t *pu8AddrLen) +{ + UNUSED_VAR(pstrAddr); + UNUSED_VAR(pu8AddrLen); + + if ((sock < 0) || (!gastrSockets[sock].bIsUsed)) + return SOCK_ERR_INVALID_ARG; + + return SOCK_ERR_NO_ERROR; +} + +int8_t connect(SOCKET sock, struct sockaddr *pstrAddr, uint8_t u8AddrLen) +{ + tstrConnectCmd strConnect; + uint8_t u8Cmd = SOCKET_CMD_CONNECT; + + if((sock < 0) || (pstrAddr == NULL) || (!gastrSockets[sock].bIsUsed) || (!u8AddrLen)) + return SOCK_ERR_INVALID_ARG; + + if((gastrSockets[sock].u8SSLFlags) & SSL_FLAGS_ACTIVE) + { + u8Cmd = SOCKET_CMD_SSL_CONNECT; + strConnect.u8SslFlags = gastrSockets[sock].u8SSLFlags; + } + strConnect.sock = sock; + memcpy((uint8_t *)&strConnect.strAddr, (uint8_t *)pstrAddr, sizeof(tstrSockAddr)); + + strConnect.u16SessionID = gastrSockets[sock].u16SessionID; + if (M2M_SUCCESS != winc_hif_send_no_data(M2M_REQ_GROUP_IP, u8Cmd, &strConnect, sizeof(tstrConnectCmd))) + return SOCK_ERR_INVALID; + + return SOCK_ERR_NO_ERROR; +} + +int8_t send(SOCKET sock, void *pvSendBuffer, uint16_t u16SendLength, uint16_t u16Flags) +{ + UNUSED_VAR(u16Flags); + + uint16_t u16DataOffset; + tstrSendCmd strSend; + uint8_t u8Cmd; + + if((sock < 0) || (pvSendBuffer == NULL) || (u16SendLength > SOCKET_BUFFER_MAX_LENGTH) || (!gastrSockets[sock].bIsUsed)) + return SOCK_ERR_INVALID_ARG; + + u8Cmd = SOCKET_CMD_SEND; + u16DataOffset = TCP_TX_PACKET_OFFSET; + + strSend.sock = sock; + strSend.u16DataSize = HOST_TO_WINC_U16(u16SendLength); + strSend.u16SessionID = gastrSockets[sock].u16SessionID; + + if(sock >= TCP_SOCK_MAX) + { + u16DataOffset = UDP_TX_PACKET_OFFSET; + } + if(gastrSockets[sock].u8SSLFlags & SSL_FLAGS_ACTIVE) + { + u8Cmd = SOCKET_CMD_SSL_SEND; + u16DataOffset = gastrSockets[sock].u16DataOffset; + } + + if (M2M_SUCCESS != winc_hif_send(M2M_REQ_GROUP_IP, u8Cmd|M2M_REQ_DATA_PKT, &strSend, sizeof(tstrSendCmd), pvSendBuffer, u16SendLength, u16DataOffset)) + return SOCK_ERR_BUFFER_FULL; + + return SOCK_ERR_NO_ERROR; +} + +int8_t sendto(SOCKET sock, void *pvSendBuffer, uint16_t u16SendLength, uint16_t u16Flags, struct sockaddr *pstrAddr, uint8_t u8AddrLen) +{ + tstrSendCmd strSendTo; + + UNUSED_VAR(u16Flags); + UNUSED_VAR(u8AddrLen); + + if((sock < 0) || (pvSendBuffer == NULL) || (u16SendLength > SOCKET_BUFFER_MAX_LENGTH) || (!gastrSockets[sock].bIsUsed)) + return SOCK_ERR_INVALID_ARG; + + memset(&strSendTo, 0, sizeof(tstrSendCmd)); + + strSendTo.sock = sock; + strSendTo.u16DataSize = HOST_TO_WINC_U16(u16SendLength); + strSendTo.u16SessionID = gastrSockets[sock].u16SessionID; + + if(pstrAddr != NULL) + { + struct sockaddr_in *pstrDestAddr; + pstrDestAddr = (struct sockaddr_in*)pstrAddr; + + strSendTo.strAddr.u16Family = pstrDestAddr->sin_family; + strSendTo.strAddr.u16Port = pstrDestAddr->sin_port; + strSendTo.strAddr.u32IPAddr = pstrDestAddr->sin_addr.s_addr; + } + + if (M2M_SUCCESS != winc_hif_send(M2M_REQ_GROUP_IP, SOCKET_CMD_SENDTO|M2M_REQ_DATA_PKT, &strSendTo, sizeof(tstrSendCmd), + pvSendBuffer, u16SendLength, UDP_TX_PACKET_OFFSET)) + { + return SOCK_ERR_BUFFER_FULL; + } + + return SOCK_ERR_NO_ERROR; +} + +int8_t recv(SOCKET sock, void *pvRecvBuf, uint16_t u16BufLen, uint32_t u32Timeoutmsec) +{ + tstrRecvCmd strRecv; + uint8_t u8Cmd = SOCKET_CMD_RECV; + + if((sock < 0) || (pvRecvBuf == NULL) || (!u16BufLen) || (!gastrSockets[sock].bIsUsed)) + return SOCK_ERR_INVALID_ARG; + + gastrSockets[sock].pu8UserBuffer = (uint8_t*)pvRecvBuf; + gastrSockets[sock].u16UserBufferSize = u16BufLen; + + if (gastrSockets[sock].bIsRecvPending) + { + return SOCK_ERR_NO_ERROR; + } + + gastrSockets[sock].bIsRecvPending = 1; + + if(gastrSockets[sock].u8SSLFlags & SSL_FLAGS_ACTIVE) + { + u8Cmd = SOCKET_CMD_SSL_RECV; + } + + /* Check the timeout value. */ + if(u32Timeoutmsec == 0) + strRecv.u32Timeoutmsec = 0xFFFFFFFF; + else + strRecv.u32Timeoutmsec = HOST_TO_WINC_U32(u32Timeoutmsec); + + strRecv.sock = sock; + strRecv.u16SessionID = gastrSockets[sock].u16SessionID; + + if (M2M_SUCCESS != winc_hif_send_no_data(M2M_REQ_GROUP_IP, u8Cmd, &strRecv, sizeof(tstrRecvCmd))) + return SOCK_ERR_BUFFER_FULL; + + return SOCK_ERR_NO_ERROR; +} + +int8_t close(SOCKET sock) +{ + uint8_t u8Cmd = SOCKET_CMD_CLOSE; + tstrCloseCmd strclose; + + WINC_LOG_INFO("Sock to delete <%d>", sock); + + if((sock < 0) || (!gastrSockets[sock].bIsUsed)) + return SOCK_ERR_INVALID_ARG; + + strclose.sock = sock; + strclose.u16SessionID = gastrSockets[sock].u16SessionID; + + if(gastrSockets[sock].u8SSLFlags & SSL_FLAGS_ACTIVE) + { + u8Cmd = SOCKET_CMD_SSL_CLOSE; + } + + if (M2M_SUCCESS != winc_hif_send_no_data(M2M_REQ_GROUP_IP, u8Cmd, &strclose, sizeof(tstrCloseCmd))) + return SOCK_ERR_INVALID; + + memset(&gastrSockets[sock], 0, sizeof(tstrSocket)); + + return SOCK_ERR_NO_ERROR; +} + +int16_t recvfrom(SOCKET sock, void *pvRecvBuf, uint16_t u16BufLen, uint32_t u32Timeoutmsec) +{ + tstrRecvCmd strRecv; + + if((sock < 0) || (pvRecvBuf == NULL) || (!u16BufLen) || (!gastrSockets[sock].bIsUsed)) + { + return SOCK_ERR_INVALID_ARG; + } + + gastrSockets[sock].pu8UserBuffer = (uint8_t*)pvRecvBuf; + gastrSockets[sock].u16UserBufferSize = u16BufLen; + + if(gastrSockets[sock].bIsRecvPending) + return SOCK_ERR_NO_ERROR; + + gastrSockets[sock].bIsRecvPending = 1; + + /* Check the timeout value. */ + if(u32Timeoutmsec == 0) + strRecv.u32Timeoutmsec = 0xFFFFFFFF; + else + strRecv.u32Timeoutmsec = HOST_TO_WINC_U32(u32Timeoutmsec); + strRecv.sock = sock; + strRecv.u16SessionID = gastrSockets[sock].u16SessionID; + + if (M2M_SUCCESS != winc_hif_send_no_data(M2M_REQ_GROUP_IP, SOCKET_CMD_RECVFROM, &strRecv, sizeof(tstrRecvCmd))) + { + return SOCK_ERR_BUFFER_FULL; + } + + return SOCK_ERR_NO_ERROR; +} + +in_addr_t inet_addr(const char *cp) +{ + uint8_t i,l; + uint16_t t; + uint32_t ip; + char c; + + ip = 0; + + for (i=0; i<4; i++) + { + t = 0; + ip >>= 8; + + // Count non-delimiter or terminator characters + + for (l=0; l<4; l++) + { + c = cp[l]; + + if (('.' == c) || ('\0' == c)) + { + break; + } + } + + // There must be 1 to 3 characters + + if ((0 == l) || (4 == l)) + { + return 0; + } + + c = *cp++; + + // First digit can't be '0' unless it's the only one + + if ((l > 1) && (c == '0')) + { + return 0; + } + + while(l--) + { + // Each digit must be decimal + + if ((c < '0') || (c > '9')) + { + return 0; + } + + t = (t * 10) + (c - '0'); + + c = *cp++; + } + + // Total accumulated number must be less than 256 + + if (t > 255) + { + return 0; + } + + // Pack number into 32 bit IP address representation + + ip |= ((uint32_t)t << 24); + + // First three numbers must terminate with '.', last one with '\0's + + if ((('\0' == c) && (i != 3)) || (('\0' != c) && (i == 3))) + { + return 0; + } + } + + return ip; +} + +const char *inet_ntop(int af, const void *src, char *dst, size_t size) +{ + uint8_t i, v, t, c, n; + char *rp = dst; + uint32_t ip = ((struct in_addr*)src)->s_addr; + + if ((NULL == src) || (NULL == dst) || (size < INET_ADDRSTRLEN)) + { + return NULL; + } + + for (i=0; i<4; i++) + { + t = ip; + v = 100; + + // Check for zero + + if (t > 0) + { + n = 0; + + do + { + c = '0'; + while (t >= v) + { + c++; + t -= v; + } + v /= 10; + + if (('0' != c) || (n > 0)) + { + *dst++ = c; + + n++; + } + } + while (v > 0); + } + else + { + *dst++ = '0'; + } + + if (3 == i) + { + *dst++ = '\0'; + } + else + { + *dst++ = '.'; + } + + ip >>= 8; + } + + return rp; +} + +int8_t gethostbyname(const char *pcHostName) +{ + uint8_t u8HostNameSize = (uint8_t)strlen(pcHostName); + + if(u8HostNameSize > HOSTNAME_MAX_SIZE) + { + return SOCK_ERR_INVALID_ARG; + } + + if (M2M_SUCCESS != winc_hif_send_no_data(M2M_REQ_GROUP_IP, SOCKET_CMD_DNS_RESOLVE, pcHostName, u8HostNameSize + 1)) + { + return SOCK_ERR_BUFFER_FULL; + } + + return SOCK_ERR_NO_ERROR; +} + +static int8_t sslSetSockOpt(SOCKET sock, uint8_t u8Opt, const void *pvOptVal, uint16_t u16OptLen) +{ + if(sock >= TCP_SOCK_MAX) + return SOCK_ERR_INVALID_ARG; + + if(!(gastrSockets[sock].u8SSLFlags & SSL_FLAGS_ACTIVE)) + { + WINC_LOG_ERROR("Not SSL Socket"); + return SOCK_ERR_INVALID_ARG; + } + + if(u8Opt == SO_SSL_BYPASS_X509_VERIF) + { + int optVal = *((int*)pvOptVal); + if(optVal) + { + gastrSockets[sock].u8SSLFlags |= SSL_FLAGS_BYPASS_X509; + } + else + { + gastrSockets[sock].u8SSLFlags &= ~SSL_FLAGS_BYPASS_X509; + } + + return SOCK_ERR_NO_ERROR; + } + else if(u8Opt == SO_SSL_ENABLE_SESSION_CACHING) + { + int optVal = *((int*)pvOptVal); + if(optVal) + { + gastrSockets[sock].u8SSLFlags |= SSL_FLAGS_CACHE_SESSION; + } + else + { + gastrSockets[sock].u8SSLFlags &= ~SSL_FLAGS_CACHE_SESSION; + } + + return SOCK_ERR_NO_ERROR; + } + else if(u8Opt == SO_SSL_ENABLE_SNI_VALIDATION) + { + int optVal = *((int*)pvOptVal); + if(optVal) + { + gastrSockets[sock].u8SSLFlags |= SSL_FLAGS_CHECK_SNI; + } + else + { + gastrSockets[sock].u8SSLFlags &= ~SSL_FLAGS_CHECK_SNI; + } + + return SOCK_ERR_NO_ERROR; + } + else if(u8Opt == SO_SSL_SNI) + { + if(u16OptLen < HOSTNAME_MAX_SIZE) + { + uint8_t *pu8SNI = (uint8_t*)pvOptVal; + tstrSSLSetSockOptCmd strCmd; + + strCmd.sock = sock; + strCmd.u16SessionID = gastrSockets[sock].u16SessionID; + strCmd.u8Option = u8Opt; + strCmd.u32OptLen = u16OptLen; + memcpy(strCmd.au8OptVal, pu8SNI, HOSTNAME_MAX_SIZE); + + if (M2M_ERR_MEM_ALLOC == winc_hif_send_no_data(M2M_REQ_GROUP_IP, SOCKET_CMD_SSL_SET_SOCK_OPT, &strCmd, sizeof(tstrSSLSetSockOptCmd))) + { + if (M2M_SUCCESS != winc_hif_send_no_data(M2M_REQ_GROUP_IP, SOCKET_CMD_SSL_SET_SOCK_OPT | M2M_REQ_DATA_PKT, + &strCmd, sizeof(tstrSSLSetSockOptCmd))) + { + return SOCK_ERR_BUFFER_FULL; + } + } + + return SOCK_ERR_NO_ERROR; + } + else + { + WINC_LOG_ERROR("SNI Exceeds Max Length"); + } + } + else + { + WINC_LOG_ERROR("Unknown SSL Socket Option %u", u8Opt); + } + + return SOCK_ERR_INVALID_ARG; +} + +int8_t setsockopt(SOCKET sock, uint8_t u8Level, uint8_t option_name, + const void *option_value, uint16_t u16OptionLen) +{ + if((sock < 0) || (option_value == NULL) || (!gastrSockets[sock].bIsUsed)) + { + return SOCK_ERR_INVALID_ARG; + } + + if(u8Level == SOL_SSL_SOCKET) + { + return sslSetSockOpt(sock, option_name, option_value, u16OptionLen); + } + else + { + uint8_t u8Cmd = SOCKET_CMD_SET_SOCKET_OPTION; + tstrSetSocketOptCmd strSetSockOpt; + strSetSockOpt.u8Option=option_name; + strSetSockOpt.sock = sock; + strSetSockOpt.u32OptionValue = *(uint32_t*)option_value; + strSetSockOpt.u16SessionID = gastrSockets[sock].u16SessionID; + + if (M2M_SUCCESS != winc_hif_send_no_data(M2M_REQ_GROUP_IP, u8Cmd, &strSetSockOpt, sizeof(tstrSetSocketOptCmd))) + { + return SOCK_ERR_INVALID; + } + } + + return SOCK_ERR_NO_ERROR; +} + +int8_t getsockopt(SOCKET sock, uint8_t u8Level, uint8_t u8OptName, const void *pvOptValue, uint8_t* pu8OptLen) +{ + UNUSED_VAR(sock); + UNUSED_VAR(u8Level); + UNUSED_VAR(u8OptName); + UNUSED_VAR(pvOptValue); + UNUSED_VAR(pu8OptLen); + + /* TBD */ + return SOCK_ERR_INVALID_ARG; +} + +int8_t m2m_ping_req(uint32_t u32DstIP, uint8_t u8TTL, tpfPingCb fpPingCb) +{ + tstrPingCmd strPingCmd; + + if((!u32DstIP) || (fpPingCb == NULL)) + return M2M_ERR_INVALID_ARG; + + strPingCmd.u16PingCount = 1; + strPingCmd.u32DestIPAddr = u32DstIP; + strPingCmd.u32CmdPrivate = ++gu32PingId; + strPingCmd.u8TTL = u8TTL; + + gfpPingCb = fpPingCb; + + if (M2M_SUCCESS != winc_hif_send_no_data(M2M_REQ_GROUP_IP, SOCKET_CMD_PING, &strPingCmd, sizeof(tstrPingCmd))) + { + return SOCK_ERR_INVALID; + } + + return SOCK_ERR_NO_ERROR; +} + +int8_t sslEnableCertExpirationCheck(tenuSslCertExpSettings enuValidationSetting) +{ + tstrSslCertExpSettings strSettings; + strSettings.u32CertExpValidationOpt = (uint32_t)enuValidationSetting; + + if (M2M_SUCCESS != winc_hif_send_no_data(M2M_REQ_GROUP_IP, SOCKET_CMD_SSL_EXP_CHECK, &strSettings, sizeof(tstrSslCertExpSettings))) + { + return SOCK_ERR_INVALID; + } + + return SOCK_ERR_NO_ERROR; +} + +uint8_t IsSocketReady(void) +{ + return gbSocketInit; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/winc/socket/socket.h b/AVRIoT.X/mcc_generated_files/winc/socket/socket.h new file mode 100644 index 0000000..9d6eb3a --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/socket/socket.h @@ -0,0 +1,1516 @@ +/** + * + * \file + * + * \brief Socket Interface. + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef __SOCKET_H__ +#define __SOCKET_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "../../config/conf_winc.h" + +/** @defgroup SocketModule Socket + @brief + This is an API providing socket functionality similar to BSD sockets. + + The application can use this API to perform socket operations within the WINC firmware. This API allows + the application to: + + - Create and destroy UDP and TCP sockets. + - Connect to remote TCP/UDP servers. + - Act as TCP/UDP servers for remote clients to connect to. + - Use TLS to protect TCP socket traffic. + - Send and receive data. + - Translate domain names into IP addresses. + - Ping a remote IP address. + + @{ + @defgroup SocketDefines Defines + @brief + These are preprocessor macros to define constants used within the socket API. + + @note + These defines should not be changed as they reflect the configuration of the WINC firmware. + Changing these values could result in unexpected behavior. + + @see SSLSocketOptions + + @defgroup SocketByteOrder Byte Order + @brief + These macros are used to convert between host representation and network byte order. + + @defgroup SocketStructures Data Structures + @brief + Specific data structures used by the socket API. + + @defgroup SocketTypes Typedefs + @brief + Specific typedefs used by the socket API. + + @defgroup SocketEnums Enumerations + @brief + Specific Enumerations used by the socket API. + + @defgroup AsyncCallback Asynchronous Events + @brief + Specific data structures and enumerations used for asynchronous operations. + + Asynchronous APIs make use of callback functions to return results once the corresponding socket operation has completed. + + Callbacks allows the application to resume normal execution while the socket operation is performed. + + @defgroup SocketCallbacks Callbacks + @brief + These are callback types used by the socket API when calling back to the application. + + @defgroup SocketAPI Functions + @brief + These functions provide socket functionality to the application. + @} +*/ + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +MACROS +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +/**@addtogroup SocketDefines + @{*/ + +#define HOSTNAME_MAX_SIZE 64 +/*!< Maximum allowed size for a host name passed to the function @ref gethostbyname. Also defines + the maximum size of the option @ref SO_SSL_SNI used with the @ref setsockopt function. + +@see gethostbyname +@see setsockopt +@see SO_SSL_SNI +*/ + +#define SOCKET_BUFFER_MAX_LENGTH 1400 +/*!< Maximum allowed size for a socket data buffer. Used with @ref send and @ref sendto socket + functions to ensure that the buffer sent is within the allowed range. + +@see send +@see sendto +*/ + +#define AF_INET 2 +/*!< The AF_INET is the address family used for IPv4. An IPv4 transport address is specified with the @ref sockaddr_in structure. + +@see sockaddr_in +*/ + +#define INET_ADDRSTRLEN 16 +/*!< Length of the string form for IP. + + @see inet_ntop +*/ + +#define SOCK_STREAM 1 +/*!< Socket type for reliable connection-oriented stream connection. + Passed to the @ref socket function for the socket creation operation. + +@see socket +*/ + +#define SOCK_DGRAM 2 +/*!< Socket type for unreliable connectionless datagram connection. + Passed to the @ref socket function for the socket creation operation. + +@see socket +*/ + +#define SOCKET_FLAGS_SSL 0x01 +/*!< Socket flag passed to @ref socket for the creation of SSL/TLS sockets. + +@see socket +*/ + +#define TCP_SOCK_MAX 7 +/*! Maximum number of simultaneous TCP sockets supported. +*/ + +#define UDP_SOCK_MAX 4 +/*!< Maximum number of simultaneous UDP sockets supported. +*/ + +#define MAX_SOCKET (TCP_SOCK_MAX + UDP_SOCK_MAX) +/*!< Total maximum number of simultaneous sockets supported. +*/ + +#define SOL_SOCKET 1 +/*!< Socket protocol type (non-SSL) used with the @ref setsockopt function. + +@see setsockopt +*/ + +#define SOL_SSL_SOCKET 2 +/*!< Socket protocol type (SSL) used with the @ref setsockopt function. + +@see setsockopt +*/ + +#define SO_SET_UDP_SEND_CALLBACK 0x00 +/*!< Socket option to enable/disable the use of UDP send callbacks. + +@see setsockopt +*/ + +#define IP_ADD_MEMBERSHIP 0x01 +/*!< Socket option to join a multicast group. + +@see setsockopt +*/ + +#define IP_DROP_MEMBERSHIP 0x02 +/*!< Socket option to leave a multicast group. + +@see setsockopt +*/ + +#define SO_KEEPALIVE 0x04 +/*!< Enable or disable TCP keep-alive. + +@see setsockopt +*/ + +#define TCP_KEEPIDLE 0x05 +/*!< Duration between two keepalive transmissions in idle condition (in 500ms increments, so 4 would be 2 seconds). Max 2^32. + +@see setsockopt +*/ + +#define TCP_KEEPINTVL 0x06 +/*!< Duration between two successive keepalive retransmissions, if acknowledgment to the previous keepalive + transmission is not received (in 500ms increments, so 4 would be 2 seconds). Max 255 (127.5 seconds). + +@see setsockopt +*/ + +#define TCP_KEEPCNT 0x07 +/*!< Number of retransmissions to be carried out before declaring that the remote end is not available. Max 255. + +@see setsockopt +*/ +/**@}*/ // IPDefines + +/**@addtogroup SSLSocketOptions + @{*/ +#define SO_SSL_BYPASS_X509_VERIF 0x01 +/*!< Allow an SSL socket to bypass the X509 certificate verification process. + + The option value should be cast to an int32_t (32 bits) and it is handled + as a boolean flag. + +@warning + It is highly recommended @b NOT to use this socket option in production + software applications. It is intended for debugging and testing + purposes only. + +@see setsockopt + +@code +int32_t sslOptionEnable = 1; + +setsockopt(sock, SOL_SSL_SOCKET, SO_SSL_BYPASS_X509_VERIF, &sslOptionEnable, sizeof(int32_t)); +@endcode +*/ + +#define SO_SSL_SNI 0x02 +/*!< Set the Server Name Indicator (SNI) for an SSL socket. + + The SNI is a NULL terminated string containing the server name associated + with the connection. It must not exceed the size of @ref HOSTNAME_MAX_SIZE. + If the SNI is not a null string, then TLS Client Hello messages will include + the SNI extension. + +@see setsockopt + +@code +int32_t sslOptionEnable = 1; + +setsockopt(sock, SOL_SSL_SOCKET, SO_SSL_SNI, acHostName, strlen(acHostName) + 1); +@endcode +*/ + +#define SO_SSL_ENABLE_SESSION_CACHING 0x03 +/*!< Allow the WINC to cache the TLS session information for fast TLS session + establishment in future connections using the TLS Protocol session resume features. + + The option value should be cast to an int32_t (32 bits) and it is handled + as a boolean flag. + +@see setsockopt + +@code +int32_t sslOptionEnable = 1; + +setsockopt(sock, SOL_SSL_SOCKET, SO_SSL_ENABLE_SESSION_CACHING, &sslOptionEnable, sizeof(int32_t)); +@endcode +*/ + +#define SO_SSL_ENABLE_SNI_VALIDATION 0x04 +/*!< Enable internal validation of server name against the server's certificate + subject common name. If there is no server name provided + (via the @ref SO_SSL_SNI option), setting this option does nothing. + + The option value should be cast to an int32_t (32 bits) and it is handled + as a boolean flag. + +@see setsockopt + +@code +int32_t sslOptionEnable = 1; + +setsockopt(sock, SOL_SSL_SOCKET, SO_SSL_ENABLE_SNI_VALIDATION, , &sslOptionEnable, sizeof(int32_t)); +@endcode +*/ +/**@}*/ // SSLSocketOptions + +/**@addtogroup SocketByteOrder + @{*/ + +#if defined(CONF_WINC_MCU_ARCH_LITTLE_ENDIAN) +#define _htonl(l) CONF_WINC_UINT32_SWAP(l) +/*!< Convert a 4-byte integer from the Host representation to Network byte order. +*/ + +#define _htons(s) CONF_WINC_UINT16_SWAP(s) +/*!< Convert a 2-byte integer (short) from Host representation to Network byte order. +*/ + +#elif defined(CONF_WINC_MCU_ARCH_BIG_ENDIAN) +#define _htonl(l) (l) +/*!< Convert a 4-byte integer from Host representation to Network byte order. +*/ + +#define _htons(s) (s) +/*!< Convert a 2-byte integer (short) from Host representation to Network byte order. +*/ +#endif + +#define _ntohl _htonl +/*!< Convert a 4-byte integer from Network byte order to Host representation. +*/ + +#define _ntohs _htons +/*!< Convert a 2-byte integer from Network byte order to Host representation. +*/ +/**@}*/ // SocketByteOrder + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +DATA TYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ + +/**@addtogroup SocketEnums + @{*/ + +/*! +@enum \ + tenuSocketStatusType + +@brief + Possible success/error status codes returned by the Socket API. +*/ + +typedef enum { + SOCK_ERR_NO_ERROR = 0, + /*!< Successful socket operation. + */ + SOCK_ERR_INVALID_ADDRESS = -1, + /*!< Socket address is invalid. The socket operation cannot be completed successfully without specifying a valid address. + */ + SOCK_ERR_ADDR_ALREADY_IN_USE = -2, + /*!< Socket operation cannot bind on the given address. Only one IP address per socket, and one socket per IP address is permitted - + any attempt for a new socket to bind with an IP address already bound to another open socket will return this error code. + */ + SOCK_ERR_MAX_TCP_SOCK = -3, + /*!< Exceeded the maximum number of TCP sockets. A maximum number of TCP sockets opened simultaneously is defined through TCP_SOCK_MAX. + It is not permitted to exceed that number at socket creation. Identifies that @ref socket operation failed. + */ + SOCK_ERR_MAX_UDP_SOCK = -4, + /*!< Exceeded the maximum number of UDP sockets. A maximum number of UDP sockets opened simultaneously is defined through UDP_SOCK_MAX. + It is not permitted to exceed that number at socket creation. Identifies that @ref socket operation failed. + */ + SOCK_ERR_INVALID_ARG = -6, + /*!< An invalid argument is passed to a socket function. + */ + SOCK_ERR_MAX_LISTEN_SOCK = -7, + /*!< Exceeded the maximum number of TCP passive listening sockets. Identifies that @ref listen operation failed. + */ + SOCK_ERR_INVALID = -9, + /*!< The requested socket operation is not valid in the current socket state. + */ + SOCK_ERR_ADDR_IS_REQUIRED = -11, + /*!< Destination address is required. Failure to provide the socket address required for the socket operation to be completed. + */ + SOCK_ERR_CONN_ABORTED = -12, + /*!< The socket is closed (reset) by the peer. If this error is received, the application should call @ref close. + */ + SOCK_ERR_TIMEOUT = -13, + /*!< The socket pending operation has timed out. The socket remains open. + */ + SOCK_ERR_BUFFER_FULL = -14 + /*!< No buffer space available to be used for the requested socket operation. + */ +} tenuSocketStatusType; + +/**@}*/ // SocketEnums +/**@addtogroup SocketTypes + @{*/ + +/*! +@typedef \ + SOCKET + +@brief + Definition for socket data type. + + Socket ID is used with all socket operations to uniquely identify the socket. + The ID is uniquely assigned at socket creation when calling @ref socket function. +*/ +typedef int8_t SOCKET; + +/*! +@typedef \ + in_addr_t + +@brief + Packed representation of IPv4 address. +*/ +typedef uint32_t in_addr_t; + +/**@}*/ // SocketTypes +/**@addtogroup SocketStructures + @{*/ + +/*! +@struct \ + in_addr + +@brief + IPv4 address representation. + + This structure is used as a placeholder for IPv4 addresses in other structures. + +@see sockaddr_in +*/ +struct in_addr { + in_addr_t s_addr; + /*!< Network Byte Order representation of the IPv4 address. + + For example, the address "192.168.0.10" is represented as 0x0A00A8C0. + */ +}; + +/*! +@struct \ + sockaddr + +@brief + Generic socket address structure. + +@see sockaddr_in +*/ +struct sockaddr { + uint16_t sa_family; + /*!< Socket address family. + */ + uint8_t sa_data[14]; + /*!< Socket address data. + */ +}; + +/*! +@struct \ + sockaddr_in + +@brief + Socket address structure for IPv4 addresses. Used to specify socket address information to connect to. + Can be cast to @ref sockaddr structure. +*/ +struct sockaddr_in { + uint16_t sin_family; + /*!< Specifies the address family(AF). + + @note + The only supported value for this is AF_INET. + */ + uint16_t sin_port; + /*!< Port number of the socket. + + It must be set in the Network Byte Order format, _htons (e.g. _htons(80)). + + @note + Must @b NOT have the value zero. + */ + struct in_addr sin_addr; + /*!< IP Address of the socket. + + The IP address is of type @ref in_addr. + + @note + The IP address can be zero to accept any IP address for server operations. + */ + uint8_t sin_zero[8]; + /*!< Padding to ensure the structure size is the same size as @ref sockaddr. + */ +}; + +/**@}*/ // SocketStructures + +/**@addtogroup AsyncCallback + @{ */ + +/*! +@enum \ + tenuSocketCallbackMsgType + +@brief + This enum identifies the type of events that will be received by the callback function. + + To receive callbacks the application must call @ref m2m_wifi_handle_events periodically to process any returning + event data from the WINC device. + +@see bind +@see listen +@see accept +@see connect +@see send +@see sendto +@see recv +@see recvfrom +@see gethostbyname +*/ +typedef enum { + SOCKET_MSG_BIND = 1, + /*!< Bind socket event. + */ + SOCKET_MSG_LISTEN, + /*!< Listen socket event. + */ + SOCKET_MSG_DNS_RESOLVE, + /*!< DNS Resolution event. + */ + SOCKET_MSG_ACCEPT, + /*!< Accept socket event. + */ + SOCKET_MSG_CONNECT, + /*!< Connect socket event. + */ + SOCKET_MSG_RECV, + /*!< Receive socket event. + */ + SOCKET_MSG_SEND, + /*!< Send socket event. + */ + SOCKET_MSG_SENDTO, + /*!< Sendto socket event. + */ + SOCKET_MSG_RECVFROM + /*!< Recvfrom socket event. + */ +} tenuSocketCallbackMsgType; + +/*! +@enum \ + tenuPingErrorType + +@brief + This enum identifies the success/error codes returned in the ping callback from calling @ref m2m_ping_req. + +*/ +typedef enum { + PING_ERR_SUCCESS = 0, + /*!< The ping operation was successful. + */ + PING_ERR_DEST_UNREACH = 1, + /*!< The ping destination was unreachable. + */ + PING_ERR_TIMEOUT = 2 + /*!< The ping operation timed out. + */ +} tenuPingErrorType; + +/*! +@struct \ + tstrSocketBindMsg + +@brief + Socket @ref bind status message structure. + + An asynchronous call to the @ref bind socket function, returns information through this structure in response. + This structure together with the event @ref SOCKET_MSG_BIND are passed in parameters to the callback function. + +@see + bind +*/ +typedef struct { + int8_t status; + /*!< The result of the bind operation. See @ref tenuSocketStatusType. + */ +} tstrSocketBindMsg; + +/*! +@struct \ + tstrSocketListenMsg + +@brief + Socket @ref listen status message structure. + + Socket listen information is returned through this structure in response to the asynchronous call to the @ref listen function. + This structure together with the event @ref SOCKET_MSG_LISTEN are passed in parameters to the callback function. +@see + listen +*/ +typedef struct { + int8_t status; + /*!< The result of the listen operation. See @ref tenuSocketStatusType. + */ +} tstrSocketListenMsg; + +/*! +@struct \ + tstrSocketAcceptMsg + +@brief + Socket @ref accept status message structure. + + Socket accept information is returned through this structure in response to the asynchronous call to the @ref accept function. + This structure together with the event @ref SOCKET_MSG_ACCEPT are passed in parameters to the callback function. +*/ +typedef struct { + SOCKET sock; + /*!< On a successful @ref accept operation, the returned information is the socket ID for the accepted connection with the remote peer. + Otherwise a negative error code is returned to indicate failure of the accept operation. + */ + struct sockaddr_in strAddr; + /*!< Socket address structure for the remote peer. + */ +} tstrSocketAcceptMsg; + +/*! +@struct \ + tstrSocketConnectMsg + +@brief + Socket @ref connect status message structure. + +@details + Socket connect information is returned through this structure in response to the asynchronous call to the @ref connect function. + This structure together with the event @ref SOCKET_MSG_CONNECT are passed in parameters to the callback function. + If the application receives this structure with a negative value in @p s8Error, the application should call @ref close. +*/ +typedef struct { + SOCKET sock; + /*!< Socket ID referring to the socket passed to the connect function call. + */ + int8_t s8Error; + /*!< Connect error code. See @ref tenuSocketStatusType. + */ +} tstrSocketConnectMsg; + +/*! +@struct \ + tstrSocketRecvMsg + +@brief + Socket @ref recv or @ref recvfrom status message structure. + + Socket receive information is returned through this structure in response to the asynchronous call to the @ref recv or @ref recvfrom functions. + This structure together with the events @ref SOCKET_MSG_RECV or @ref SOCKET_MSG_RECVFROM are passed in parameters to the callback function. + +@remark + In case the received data from the remote peer is larger than the USER buffer size defined during the asynchronous call to the @ref recv function, + only data up to the USER buffer size is delivered to the user. The user must call @ref recv again in order to receive the remaining data. + + A negative or zero buffer size indicates an error with the following values: + + | Value | Description | + |-------------------------------|------------------------------------------------------------------------| + | @ref SOCK_ERR_NO_ERROR | Socket connection closed. The application should now call @ref close. | + | @ref SOCK_ERR_CONN_ABORTED | Socket connection aborted. The application should now call @ref close. | + | @ref SOCK_ERR_TIMEOUT | Socket receive timed out. The socket connection remains open. | +*/ +typedef struct { + uint8_t *pu8Buffer; + /*!< Pointer to the buffer (passed to @ref recv and @ref recvfrom function) containing the received data chunk. + */ + int16_t s16BufferSize; + /*!< The received data chunk size. + + Holds a negative value if there is a receive error or zero on success upon reception of close socket message. + */ + uint16_t u16RemainingSize; + /*!< The number of bytes remaining in the current @ref recv operation. + */ + struct sockaddr_in strRemoteAddr; + /*!< Socket address structure for the remote peer. It is valid for @ref SOCKET_MSG_RECVFROM events. + */ +} tstrSocketRecvMsg; +/**@}*/ // AsyncCallback + +/**@addtogroup SocketCallbacks + @{ */ + +/*! +@typedef \ + tpfAppSocketCb + +@brief + The main socket application callback function. + + Applications register their main socket application callback by calling @ref registerSocketCallback. + In response to events received this callback function is called to handle process the response from the + corresponding asynchronous function called by the application. + +@param [in] sock + Socket ID for the callback. + +@param [in] u8Msg + Socket event type. See @ref tenuSocketCallbackMsgType. + +@param [in] pvMsg + Pointer to message structure. The structure type is dependant on the value of @p u8Msg: + +| Event Type | Structure Type | +|---------------------------|---------------------------| +| @ref SOCKET_MSG_BIND | @ref tstrSocketBindMsg | +| @ref SOCKET_MSG_LISTEN | @ref tstrSocketListenMsg | +| @ref SOCKET_MSG_ACCEPT | @ref tstrSocketAcceptMsg | +| @ref SOCKET_MSG_CONNECT | @ref tstrSocketConnectMsg | +| @ref SOCKET_MSG_RECV | @ref tstrSocketRecvMsg | +| @ref SOCKET_MSG_RECVFROM | @ref tstrSocketRecvMsg | +| @ref SOCKET_MSG_SEND | int16_t | +| @ref SOCKET_MSG_SENDTO | int16_t | + +@see bind +@see listen +@see accept +@see connect +@see send +@see sendto +@see recv +@see recvfrom +*/ +typedef void (*tpfAppSocketCb)(SOCKET sock, uint8_t u8Msg, void *pvMsg); + +/*! +@typedef \ + tpfAppResolveCb + +@brief + DNS resolution callback function. + + Applications requiring DNS resolution should register this callback by calling @ref registerSocketCallback. + The callback is triggered in response to an asynchronous call to the @ref gethostbyname function. + +@param [in] pu8DomainName + Domain name of the host to be resolved. + +@param [in] u32IP + Server IPv4 address encoded in Network Byte Order format. A value of zero indicates the DNS resolution failed. +*/ +typedef void (*tpfAppResolveCb)(uint8_t *pu8DomainName, uint32_t u32IP); + +/*! +@typedef \ + tpfPingCb + +@brief + Ping (ICMP echo request) callback function. + + The function delivers the ping statistics for the sent ping triggered by calling @ref m2m_ping_req. + +@param [in] u32IPAddr + Destination IP. + +@param [in] u32RTT + Round Trip Time. + +@param [in] u8ErrorCode + Ping error code. See @ref tenuPingErrorType +*/ +typedef void (*tpfPingCb)(uint32_t u32IPAddr, uint32_t u32RTT, uint8_t u8ErrorCode); + +/**@}*/ //SocketCallbacks + +/********************************************************************* +Function + m2m_ip_cb + +Description + Callback function used by the NMC1000 driver to deliver messages + for socket layer. + +Return + None. + +Author + Ahmed Ezzat + +Version + 1.0 + +Date + 17 July 2012 +*********************************************************************/ +void m2m_ip_cb(uint8_t u8OpCode, uint16_t u16BufferSize,uint32_t u32Address); + +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +FUNCTION PROTOTYPES +*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ +/**@addtogroup SocketAPI + @{ */ +/*! +@fn \ + void socketInit(void); + +@brief + This function performs the necessary initialization of the socket library. + +@remarks + This initialization function must be invoked before any socket operation can be performed. +*/ +void socketInit(void); + +/*! +@fn \ + void socketDeinit(void); + +@brief + This function de-initializes the socket library. + + The function performs the necessary cleanup for the socket library static data. + + It must be invoked only after all desired socket operations have been performed on any active sockets. +*/ +void socketDeinit(void); + +/*! +@fn \ + uint8_t IsSocketReady(void); + +@see socketInit + socketDeinit +@return If the socket has been initialized and is ready. + Should return 1 after @ref socketInit and 0 after @ref socketDeinit +*/ +uint8_t IsSocketReady(void); + +/*! +@fn \ + void registerSocketCallback(tpfAppSocketCb pfAppSocketCallback, tpfAppResolveCb pfAppResolveCallback); + +@brief + This function registers two application provided callback functions with the socket library. + One for asynchronous socket events and the second for DNS resolution events. + +@param [in] pfAppSocketCallback + This callback will receive socket events from the socket library. + +@param [in] pfAppResolveCallback + This callback will receive DNS resolution events from the socket library. + +@remarks + If either callback function pointer is NULL then the corresponding events will not be received by the application. + +@pre + Callbacks must be registered after calling @ref socketInit. + +@section SocketExample2 Example + This example demonstrates the use of @ref registerSocketCallback to register a socket callback function with DNS resolution CB set to null + for a simple UDP server example. + +@include registerSocketCallback.c +@example registerSocketCallback.c +*/ +void registerSocketCallback(tpfAppSocketCb pfAppSocketCallback, tpfAppResolveCb pfAppResolveCallback); + +/*! +@fn \ + void registerSocketEventCallback(tpfAppSocketCb pfAppSocketCallback); + +@brief + This function registers an application provided callback function with the socket library for asynchronous socket events. + +@param [in] pfAppSocketCallback + This callback will receive socket events from the socket library. + +@remarks + If the callback function pointer is NULL then the corresponding events will not be received by the application. + +@pre + Callbacks must be registered after calling @ref socketInit. +*/ +void registerSocketEventCallback(tpfAppSocketCb pfAppSocketCallback); + +/*! +@fn \ + void registerSocketResolveCallback(tpfAppResolveCb pfAppResolveCallback); + +@brief + This function registers an application provided callback function with the socket library for DNS resolution events. + +@param [in] pfAppResolveCallback + This callback will receive DNS resolution events from the socket library. + +@remarks + If the callback function pointer is NULL then the corresponding events will not be received by the application. + +@pre + Callbacks must be registered after calling @ref socketInit. +*/ +void registerSocketResolveCallback(tpfAppResolveCb pfAppResolveCallback); + +/*! +@fn \ + SOCKET socket(uint16_t u16Domain, uint8_t u8Type, uint8_t u8Flags); + +@brief + Synchronous socket allocation function based on the specified socket type. Created sockets are non-blocking and their possible types are either TCP or a UDP sockets. + The maximum allowed number of TCP sockets is @ref TCP_SOCK_MAX sockets while the maximum number of UDP sockets that can be created simultaneously is @ref UDP_SOCK_MAX sockets. + +@param[in] u16Domain + Socket family. The only allowed value is @ref AF_INET (IPv4) for TCP/UDP sockets. + +@param[in] u8Type + Socket type. Allowed values are: + - @ref SOCK_STREAM + - @ref SOCK_DGRAM + +@param[in] u8Flags + Socket creation flags. For normal TCP/UDP sockets this value is zero, for SSL TCP socket this + value will be @ref SOCKET_FLAGS_SSL. The use of the flag @ref SOCKET_FLAGS_SSL has no meaning + in case of UDP sockets. + +@pre + The function @ref socketInit must have been called to initialize the socket library. + +@see connect +@see bind +@see setsockopt +@see getsockopt + +@return + On successful socket creation, a non-blocking socket type is created and a socket ID is returned + In case of failure the function returns a negative value, identifying one of the socket error codes, see @ref tenuSocketStatusType. + +@section SocketExample3 Example + This example demonstrates the use of the socket function to allocate the socket, returning the socket handler to be used for other + socket operations. Socket creation is dependent on the socket type. + +@subsection SE3sub1 UDP example +@code + SOCKET UdpServerSocket = -1; + + UdpServerSocket = socket(AF_INET, SOCK_DGRAM, 0); +@endcode + +@subsection SE3sub2 TCP example +@code + SOCKET tcp_client_socket = -1; + + tcp_client_socket = socket(AF_INET, SOCK_STREAM, 0)); +@endcode +@subsection SE3sub3 SSL example + +@code + SOCKET ssl_socket = -1; + + ssl_socket = socket(AF_INET, SOCK_STREAM, SOCK_FLAGS_SSL)); +@endcode +*/ +SOCKET socket(uint16_t u16Domain, uint8_t u8Type, uint8_t u8Flags); + +/*! +@fn \ + int8_t bind(SOCKET sock, struct sockaddr *pstrAddr, uint8_t u8AddrLen); + +@brief + Asynchronous bind function associates the provided local address and port with a socket. + + This function is required to create a server socket capable of receiving connection requests + from a socket client. The function can be used with both TCP and UDP sockets. + Upon socket bind completion, the application will receive a @ref SOCKET_MSG_BIND message via the socket callback. + +@param[in] sock + Socket ID, must hold a valid non negative value obtained from the function @ref socket. + +@param[in] pstrAddr + Pointer to a socket address structure @ref sockaddr_in. + +@param[in] u8AddrLen + Size of the socket address structure pointed to by @p pstrAddr (in bytes). + +@pre + The @ref socket function must have been called to allocate a socket. + +@see socket +@see listen +@see accept + +@return + The function returns @ref SOCK_ERR_NO_ERROR for successful operations and a negative value otherwise, see @ref tenuSocketStatusType. + +@section SocketExample4 Example + This example demonstrates opening a UDP datagram socket and binding it to a local port. + +@include bind.c +@example bind.c +*/ +int8_t bind(SOCKET sock, struct sockaddr *pstrAddr, uint8_t u8AddrLen); + +/*! +@fn \ + int8_t listen(SOCKET sock, uint8_t u8Backlog); + +@brief + Mark a locally bound (via @ref bind) socket as a passive socket that can be used to accept incoming connection requests. + + This asynchronous function will respond via the socket callback using the event @ref SOCKET_MSG_LISTEN. + + Upon completion of the listen operation the socket is available for connection requests, for TCP sockets these requests + are automatically accepted by the WINC and thus require no specific call to @ref accept. Applications are notified of + an accepted socket connection via the socket callback using the event @ref SOCKET_MSG_ACCEPT. + There is no requirement to call the @ref accept function after calling @ref listen. + +@param[in] sock + Socket ID, must hold a valid non negative value obtained from the function @ref socket. + +@param[in] u8Backlog + Not used by the current implementation. + +@pre + The @ref bind function must have been called to associate a local address and port with the socket. + +@see bind +@see accept + +@return + The function returns @ref SOCK_ERR_NO_ERROR for successful operations and a negative value otherwise, see @ref tenuSocketStatusType. + +@section SocketExample5 Example + +@include listen.c +@example listen.c + +*/ +int8_t listen(SOCKET sock, uint8_t u8Backlog); + +/*! +@fn \ + int8_t accept(SOCKET sock, struct sockaddr *pstrAddr, uint8_t *pu8AddrLen); + +@brief + The function has no current implementation. An empty declaration is used to prevent errors when legacy application code is used. + As it has no effect, it can be safely removed from any application using it. + +@param[in] sock + Socket ID, must hold a valid non negative value obtained from the function @ref socket. + +@param[in] pstrAddr + Not used in the current implementation. + +@param[in] pu8AddrLen + Not used in the current implementation. + +@return + The function returns @ref SOCK_ERR_NO_ERROR for successful operations and a negative value otherwise, see @ref tenuSocketStatusType. +*/ +int8_t accept(SOCKET sock, struct sockaddr *pstrAddr, uint8_t *pu8AddrLen); + +/*! +@fn \ + int8_t connect(SOCKET sock, struct sockaddr *pstrAddr, uint8_t u8AddrLen); + +@brief + Establishes a TCP connection with a remote server. + + The application socket callback function is notified of the result of the connection attempt through the event @ref SOCKET_MSG_CONNECT, + along with a structure @ref tstrSocketConnectMsg. + +@param[in] sock + Socket ID, must hold a valid non negative value obtained from the function @ref socket. + +@param[in] pstrAddr + Pointer to socket address structure @ref sockaddr. + +@param[in] u8AddrLen + Size of the socket address structure pointed to by @p pstrAddr (in bytes). + +@pre + The @ref socket function must have been called to allocate a TCP socket. + +@see + socket + +@return + The function returns @ref SOCK_ERR_NO_ERROR for successful operations and a negative value otherwise, see @ref tenuSocketStatusType. + +@section SocketExample6 Example + +@include connect.c +@example connect.c +*/ +int8_t connect(SOCKET sock, struct sockaddr *pstrAddr, uint8_t u8AddrLen); + +/*! +@fn \ + int8_t recv(SOCKET sock, void *pvRecvBuf, uint16_t u16BufLen, uint32_t u32Timeoutmsec); + +@brief + An asynchronous function, used to retrieve data from a TCP stream. + + The application receives data via the socket callback event @ref SOCKET_MSG_RECV. + + When receiving the callback event @ref SOCKET_MSG_RECV the @p s16BufferSize element of the event structure @ref tstrSocketRecvMsg + indicates the status of the @ref recv operation: + + | @p s16BufferSize | Meaning | + |----------------------------|-------------------------------------------------------------------------------------------------| + | @ref SOCK_ERR_NO_ERROR | The socket connection has closed gracefully, the application should now call @ref close. | + | @ref SOCK_ERR_CONN_ABORTED | The socket connection was aborted, the application, the application should now call @ref close. | + | @ref SOCK_ERR_TIMEOUT | The socket receive exceeded the @p u32Timeoutmsec timeout, the socket remains open. | + +@param[in] sock + Socket ID, must hold a valid non negative value obtained from the function @ref socket. + +@param[in] pvRecvBuf + Pointer to a buffer that will hold the received data. The buffer will be used in the socket callback event @ref SOCKET_MSG_RECV + to deliver the received data to the callback. The buffer must remain valid until the socket callback has completed. + +@param[in] u16BufLen + The buffer size in bytes. + +@param[in] u32Timeoutmsec + Timeout for the @ref recv operation in milliseconds. If the value is set to zero, the timeout will be infinite + (the recv function will wait forever). If no data is received during this period the socket callback will + be called with a @p s16BufferSize value of @ref SOCK_ERR_TIMEOUT. + +@pre + The @ref socket function must have been called to allocate a TCP socket. +@pre + The socket must be in the connected state via either of the two socket events @ref SOCKET_MSG_CONNECT or @ref SOCKET_MSG_ACCEPT. + +@see socket +@see connect +@see bind +@see listen +@see close + +@return + The function returns @ref SOCK_ERR_NO_ERROR for successful operations and a negative value otherwise, see @ref tenuSocketStatusType. + +@section SocketExample7 Example + +@include recv.c +@example recv.c +*/ +int8_t recv(SOCKET sock, void *pvRecvBuf, uint16_t u16BufLen, uint32_t u32Timeoutmsec); + +/*! +@fn \ + int16_t recvfrom(SOCKET sock, void *pvRecvBuf, uint16_t u16BufLen, uint32_t u32Timeoutmsec); + +@brief + An asynchronous function, used to retrieve data from a UDP socket. + + The application receives data via the socket callback event @ref SOCKET_MSG_RECVFROM. + + When receiving the callback event @ref SOCKET_MSG_RECVFROM the @p s16BufferSize element of the event structure @ref tstrSocketRecvMsg + indicates the status of the @ref recv operation: + + | @p s16BufferSize | Meaning | + |----------------------------|-------------------------------------------------------------------------------------------------| + | @ref SOCK_ERR_NO_ERROR | The socket connection has closed gracefully, the application should now call @ref close. | + | @ref SOCK_ERR_TIMEOUT | The socket receive exceeded the @p u32Timeoutmsec timeout, the socket remains open. | + + The callback event @ref SOCKET_MSG_RECVFROM event structure @ref tstrSocketRecvMsg also contains the address of the remote peer + sending the data in the element @p strRemoteAddr. + +@param[in] sock + Socket ID, must hold a valid non negative value obtained from the function @ref socket. + +@param[in] pvRecvBuf + Pointer to a buffer that will hold the received data. The buffer will be used in the socket callback event @ref SOCKET_MSG_RECVFROM + to deliver the received data to the callback. The buffer must remain valid until the socket callback has completed. + +@param[in] u16BufLen + The buffer size in bytes. + +@param[in] u32Timeoutmsec + Timeout for the @ref recvfrom operation in milliseconds. If the value is set to zero, the timeout will be infinite + (the recvfrom function will wait forever). If no data is received during this period the socket callback will + be called with a @p s16BufferSize value of @ref SOCK_ERR_TIMEOUT. + +@pre + The @ref socket function must have been called to allocate a UDP socket. + +@see socket +@see connect +@see bind +@see close + +@return + The function returns @ref SOCK_ERR_NO_ERROR for successful operations and a negative value otherwise, see @ref tenuSocketStatusType. + +@section SocketExample8 Example + +@include recvfrom.c +@example recvfrom.c +*/ +int16_t recvfrom(SOCKET sock, void *pvRecvBuf, uint16_t u16BufLen, uint32_t u32Timeoutmsec); + +/*! +@fn \ + int8_t send(SOCKET sock, void *pvSendBuffer, uint16_t u16SendLength, uint16_t u16Flags); + +@brief + Asynchronous function used, to send data via a TCP/UDP socket. + + To send data via a TCP socket the socket must be in the connected state. + + To send data via a UDP socket the application must have previously called @ref sendto with a valid remote address. + + The socket callback will receive the event @ref SOCKET_MSG_SEND with the number of bytes sent once the data has + been sent. + +@param[in] sock + Socket ID, must hold a valid non negative value obtained from the function @ref socket. + +@param[in] pvSendBuffer + Pointer to a buffer of data to be transmitted. + +@param[in] u16SendLength + The buffer size in bytes. + +@param[in] u16Flags + Not used in the current implementation. + +@pre + The @ref socket function must have been called to allocate a socket. + +@pre + TCP sockets: The socket must be in the connected state. For server sockets a successful @ref listen / @ref accept, and + for client sockets a successful @ref connect must have been performed on the socket before trying to send data. + +@pre + UDP socket: At least one successful call must be made to the @ref sendto function before using the @ref send function. + +@see sendto +@see socket +@see connect +@see accept +@see listen + +@warning + @p u16SendLength must not exceed @ref SOCKET_BUFFER_MAX_LENGTH. + +@note + Successful completion of a call to @ref send does not guarantee delivery of the message, + a negative return value indicates only locally-detected errors + +@return + The function returns @ref SOCK_ERR_NO_ERROR for successful operations and a negative value otherwise, see @ref tenuSocketStatusType. + */ +int8_t send(SOCKET sock, void *pvSendBuffer, uint16_t u16SendLength, uint16_t u16Flags); + +/*! +@fn \ + int8_t sendto(SOCKET sock, void *pvSendBuffer, uint16_t u16SendLength, uint16_t u16Flags, struct sockaddr *pstrAddr, uint8_t u8AddrLen); + +@brief + Asynchronous function used, to send data via a UDP socket. + + The socket callback will receive the event @ref SOCKET_MSG_SEND with the number of bytes sent once the data has + been sent. + +@param[in] sock + Socket ID, must hold a valid non negative value obtained from the function @ref socket. + +@param[in] pvSendBuffer + Pointer to a buffer of data to be transmitted. + +@param[in] u16SendLength + The buffer size in bytes. + +@param[in] u16Flags + Not used in the current implementation. + +@param[in] pstrAddr + Pointer to socket address structure @ref sockaddr. + +@param[in] u8AddrLen + Size of the socket address structure pointed to by @p pstrAddr (in bytes). + +@pre + The @ref socket function must have been called to allocate a socket. + +@see socket + +@warning + @p u16SendLength must not exceed @ref SOCKET_BUFFER_MAX_LENGTH. + +@note + Successful completion of a call to @ref sendto does not guarantee delivery of the message, + a negative return value indicates only locally-detected errors + +@return + The function returns @ref SOCK_ERR_NO_ERROR for successful operations and a negative value otherwise, see @ref tenuSocketStatusType. +*/ +int8_t sendto(SOCKET sock, void *pvSendBuffer, uint16_t u16SendLength, uint16_t u16Flags, struct sockaddr *pstrAddr, uint8_t u8AddrLen); + +/*! +@fn \ + int8_t close(SOCKET sock); + +@brief + Synchronous function, closes a socket and releases all the assigned resources. + +@param[in] sock + Socket ID, must hold a valid non negative value obtained from the function @ref socket. + +@pre + The @ref socket function must have been called to allocate a socket. + +@warning + If @ref close is called while there are still outstanding messages (to be sent or received) these will be discarded. + +@see socket + +@return + The function returns @ref SOCK_ERR_NO_ERROR for successful operations and a negative value otherwise, see @ref tenuSocketStatusType. +*/ +int8_t close(SOCKET sock); + +/*! +@fn \ + in_addr_t inet_addr(const char *cp); + +@brief + Synchronous function which returns a BSD socket compliant Internet Protocol (IPv4) socket address. + +@param[in] cp + A NULL terminated string containing the IP address in IPv4 dotted-decimal format. + +@return + Unsigned 32-bit integer representing the IP address in Network byte order + (eg. "192.168.10.1" will be expressed as 0x010AA8C0). +*/ +in_addr_t inet_addr(const char *cp); + +/*! +@fn \ + const char *inet_ntop(int af, const void *src, char *dst, size_t size); + +@brief + Synchronous function which converts an IPv4 address from binary to text form. + +@param[in] af + Address family, must be AF_INET. + +@param[in] src + src points to a struct in_addr (in network byte order) which is to be converted. + +@param[in] dst + dst points to a buffer to receive the dotted-decimal format IP address "ddd.ddd.ddd.ddd". + +@param[in] size + The size of the buffer pointed to by dst. The buffer dst must be at least @ref INET_ADDRSTRLEN bytes long + +@return + On success, inet_ntop() returns a non-null pointer to dst. NULL is returned if there was an error. +*/ +const char *inet_ntop(int af, const void *src, char *dst, size_t size); + +/*! +@fn \ + int8_t gethostbyname(const char *pcHostName); + +@brief + Asynchronous function. This function uses DNS to resolve a domain name to the corresponding IP address. + + A call to this function will cause a DNS request to be sent and the response will be delivered to the DNS callback + function registered using @ref registerSocketCallback. + +@param[in] pcHostName + A NULL terminated string containing the domain name for the remote host. + Its size must not exceed @ref HOSTNAME_MAX_SIZE. + +@warning + Successful completion of a call to gethostbyname() does not guarantee success of the DNS request, + a negative return value indicates only locally-detected errors + +@see registerSocketCallback + +@return + The function returns @ref SOCK_ERR_NO_ERROR for successful operations and a negative value otherwise, see @ref tenuSocketStatusType. +*/ +int8_t gethostbyname(const char *pcHostName); + +/*! +@fn \ + int8_t sslEnableCertExpirationCheck(tenuSslCertExpSettings enuValidationSetting); + +@param[in] enuValidationSetting + See @ref tenuSslCertExpSettings for details. + +@see tenuSslCertExpSettings + +@return + The function returns @ref SOCK_ERR_NO_ERROR for successful operations and a negative value otherwise, see @ref tenuSocketStatusType. +*/ +int8_t sslEnableCertExpirationCheck(tenuSslCertExpSettings enuValidationSetting); + +/*! +@fn \ + int8_t setsockopt(SOCKET socket, uint8_t u8Level, uint8_t option_name, const void *option_value, uint16_t u16OptionLen); + +@brief + The setsockopt function shall set the option specified by the option_name argument, at the protocol level specified + by the level argument, to the value pointed to by the option_value argument for the socket specified by the socket argument. + +@details + Possible options when the protocol level is @ref SOL_SOCKET : + + | Option | Description | + | -------|-------------| + | @ref SO_SET_UDP_SEND_CALLBACK | Enable/Disable callback messages for @ref sendto. Since UDP is unreliable by default the user maybe interested (or not) in receiving a message of @ref SOCKET_MSG_SENDTO for each call of @ref sendto.
Enabled if option_value points to a non-zero value, disabled otherwise. | + | @ref IP_ADD_MEMBERSHIP | Valid for UDP sockets, this option is used to receive frames sent to a multicast group.
option_value shall be a pointer to an unsigned 32 bit integer containing the multicast IPv4 address. | + | @ref IP_DROP_MEMBERSHIP | Valid for UDP sockets, this option is used to stop receiving frames sent to a multicast group.
option_value shall be a pointer to an unsigned 32 bit integer containing the multicast IPv4 address. | + + Possible options when the protocol level is @ref SOL_SSL_SOCKET : + + | Option | Description | + | -------|-------------| + | @ref SO_SSL_BYPASS_X509_VERIF | Allow an opened SSL socket to bypass the X509 certificate verification process. It is highly recommended NOT to use this socket option in production software applications. The option is supported for debugging and testing purposes. The option value should be cast to an int type and it is handled as a boolean flag. | + | @ref SO_SSL_SNI | Set the Server Name Indicator (SNI) for an SSL socket. The SNI is a null terminated string containing the server name associated with the connection. It must not exceed the size of @ref HOSTNAME_MAX_SIZE. | + | @ref SO_SSL_ENABLE_SESSION_CACHING | This option allows the WINC to cache the TLS session information for fast TLS session establishment in future connections using the TLS protocol session resume features. | + +@param[in] socket + Socket ID, must hold a valid non negative value obtained from the function @ref socket. + +@param[in] u8Level + Protocol level. See description above. + +@param[in] option_name + Option to be set. See description above. + +@param[in] option_value + Pointer to the user provided value. + +@param[in] u16OptionLen + Length of the option value in bytes. + +@see SOL_SOCKET +@see SOL_SSL_SOCKET +@see IP_ADD_MEMBERSHIP +@see IP_DROP_MEMBERSHIP + +@return + The function returns @ref SOCK_ERR_NO_ERROR for successful operations and a negative value otherwise, see @ref tenuSocketStatusType. +*/ +int8_t setsockopt(SOCKET socket, uint8_t u8Level, uint8_t option_name, const void *option_value, uint16_t u16OptionLen); + +/*! +@fn \ + int8_t getsockopt(SOCKET sock, uint8_t u8Level, uint8_t u8OptName, const void *pvOptValue, uint8_t *pu8OptLen); + +@brief + Get socket options retrieves. + +@note + This Function isn't implemented yet but this is the form that will be released later. + +@param[in] sock + Socket ID, must hold a valid non negative value obtained from the function @ref socket. + +@param[in] u8Level + The protocol level of the option. + +@param[in] u8OptName + The u8OptName argument specifies a single option to get. + +@param[out] pvOptValue + The pvOptValue argument contains pointer to a buffer containing the option value. + +@param[out] pu8OptLen + Option value buffer length. + +@return + The function returns @ref SOCK_ERR_NO_ERROR for successful operations and a negative value otherwise, see @ref tenuSocketStatusType. +*/ +int8_t getsockopt(SOCKET sock, uint8_t u8Level, uint8_t u8OptName, const void *pvOptValue, uint8_t *pu8OptLen); + +/*! +@fn \ + int8_t m2m_ping_req(uint32_t u32DstIP, uint8_t u8TTL, tpfPingCb fpPingCb); + +@brief + This function requests the WINC send a ping request to the given IP Address. + +@param[in] u32DstIP + Target Destination IP Address for the ping request. It must be represented in Network Byte Order. + The function @ref inet_addr could be used to translate the dotted decimal notation IP + to its Network Byte Order integer representative. + +@param[in] u8TTL + IP TTL value for the ping request. If set to ZERO, the default value will be used. + +@param[in] fpPingCb + Callback will be called to deliver the ping statistics. + +@warning + This function should only be used to request one ping at a time; calling this API invalidates callbacks + for previous ping requests. + +@see inet_addr + +@return + The function returns @ref SOCK_ERR_NO_ERROR for successful operations and a negative value otherwise, see @ref tenuSocketStatusType. +*/ +int8_t m2m_ping_req(uint32_t u32DstIP, uint8_t u8TTL, tpfPingCb fpPingCb); + +/**@}*/ // SocketAPI + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __SOCKET_H__ */ diff --git a/AVRIoT.X/mcc_generated_files/winc/spi_flash/flexible_flash.c b/AVRIoT.X/mcc_generated_files/winc/spi_flash/flexible_flash.c new file mode 100644 index 0000000..5a2c9e1 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/spi_flash/flexible_flash.c @@ -0,0 +1,77 @@ +/** + * \file + * + * \brief This module contains the flexible flash map + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "../driver/winc_adapter.h" +#include "../common/winc_defines.h" +#include "../m2m/m2m_types.h" +#include "spi_flash.h" +#include "spi_flash_map.h" +#include "flexible_flash.h" + +#define FLASH_MAP_TABLE_ADDR (FLASH_SECTOR_SZ+sizeof(tstrOtaControlSec)+8) +#define N_ENTRIES_MAX 32 + +int8_t spi_flexible_flash_find_section(uint16_t u16EntryIDToLookFor, uint32_t *pu32StartOffset, uint32_t *pu32Size) +{ + int8_t s8Ret = M2M_ERR_INVALID_ARG; + if((NULL == pu32StartOffset) || (NULL == pu32Size)) goto EXIT; + + uint8_t au8buff[8]; + uint8_t u8CurrEntry = 0; + s8Ret = spi_flash_read(&au8buff[0], FLASH_MAP_TABLE_ADDR, 4); + if(M2M_SUCCESS != s8Ret) goto EXIT; + + uint8_t u8nEntries = au8buff[0]; // Max number is 32, reading one byte will suffice + if(u8nEntries > N_ENTRIES_MAX) + { + s8Ret = M2M_ERR_FAIL; + goto EXIT; + } + + while(u8nEntries > u8CurrEntry) + { + s8Ret = spi_flash_read(&au8buff[0], FLASH_MAP_TABLE_ADDR + 4 + (u8CurrEntry*8), 8); + u8CurrEntry++; + if(M2M_SUCCESS != s8Ret) break; + uint16_t u16EntryID = (au8buff[1] << 8) | au8buff[0]; + if(u16EntryID != u16EntryIDToLookFor) continue; + *pu32StartOffset = au8buff[2] * FLASH_SECTOR_SZ; + *pu32Size = au8buff[3] * FLASH_SECTOR_SZ; + break; + } +EXIT: + return s8Ret; +} \ No newline at end of file diff --git a/AVRIoT.X/mcc_generated_files/winc/spi_flash/flexible_flash.h b/AVRIoT.X/mcc_generated_files/winc/spi_flash/flexible_flash.h new file mode 100644 index 0000000..20ceaa8 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/spi_flash/flexible_flash.h @@ -0,0 +1,89 @@ +/** + * \file + * + * \brief This module contains the flexible flash map + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef __FLEXIBLE_FLASH_H__ +#define __FLEXIBLE_FLASH_H__ + +typedef struct { + uint32_t magic; + uint32_t max_size; +}tstrFlashLUTHeader; + +// NOTE: Don't use enums for id/status here, +// they need to be 16 bit but the enums end up as +// 32 bit even if the __packed__ attribute is used +typedef struct { + uint16_t id; + uint8_t sector; + uint8_t size; + uint32_t reserved; +}tstrFlashLUTEntry; + +#define FLASHMAP_MAGIC_VALUE 0x1ABCDEF9 +#define FLASHMAP_MAX_ENTRIES 32 + +// + 8 is for the number of entries value (uint32_t) and CRC (uint32_t) +// * 2 is for the new lookup table to apply +// + 48 is for the progress monitor +#define FLASHMAP_MAX_SIZE (sizeof(tstrFlashLUTHeader) + (((sizeof(tstrFlashLUTEntry) * FLASHMAP_MAX_ENTRIES) + 8) * 2) + 48) + + +/** @defgroup SPiFlashRead spi_flexible_flash_find_section + * @ingroup SPIFLASHAPI + */ + /**@{*/ +/*! + * @fn int8_t spi_flexible_flash_find_section(uint16_t u16EntryIDToLookFor, uint32_t *pu32StartOffset, uint32_t *pu32Size); + * @brief Read the Flash Map to extract the host file starting offset.\n + * @param [in] u16EntryIDToLookFor + * The ID of the location in Flash we are looking for. See @ref tenuFlashLUTEntryID. + * @param [in] pu32StartOffset + * Pointer to the variable where the Flash section start address should be stored. + * @param [in] pu32Size + * Pointer to the variable where the Flash section size should be stored. + * @warning + * In case there is a running WINC firmware, it is required to pause the firmware + * first before any trial to access SPI flash to avoid any racing between host and + * running firmware on bus. @ref m2m_wifi_download_mode can be used to pause the firmware. + * @sa m2m_wifi_download_mode + * m2m_wifi_init_hold + * @return The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. + + */ + int8_t spi_flexible_flash_find_section(uint16_t u16EntryIDToLookFor, uint32_t *pu32StartOffset, uint32_t *pu32Size); + /**@}*/ + +#endif /* __FLEXIBLE_FLASH_H__ */ diff --git a/AVRIoT.X/mcc_generated_files/winc/spi_flash/spi_flash.c b/AVRIoT.X/mcc_generated_files/winc/spi_flash/spi_flash.c new file mode 100644 index 0000000..ecf6d18 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/spi_flash/spi_flash.c @@ -0,0 +1,447 @@ +/** + * \file + * + * \brief SPI flash API + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "../driver/winc_adapter.h" +#include "../common/winc_defines.h" +#include "../common/winc_registers.h" +#include "../common/winc_debug.h" +#include "../driver/winc_spi.h" +#include "../driver/winc_asic.h" +#include "spi_flash.h" +#include "spi_flash_map.h" + +#define HOST_SHARE_MEM_BASE (0xd0000UL) +/*********************************************************** +SPI Flash DMA +***********************************************************/ + +static uint32_t gu32InternalFlashSize = 0; + +/*********************************************/ +/* STATIC FUNCTIONS */ +/*********************************************/ + +static int8_t spi_flash_read_status_reg(uint8_t *pu8Val) +{ + uint32_t u32Reg; + + winc_bus_write_reg(SPI_FLASH_DATA_CNT, 4); + winc_bus_write_reg(SPI_FLASH_BUF1, 0x05); + winc_bus_write_reg(SPI_FLASH_BUF_DIR, 0x01); + winc_bus_write_reg(SPI_FLASH_DMA_ADDR, DUMMY_REGISTER); + winc_bus_write_reg(SPI_FLASH_CMD_CNT, 1 | (1<<7)); + do + { + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(SPI_FLASH_TR_DONE, &u32Reg)) + break; + } + while(u32Reg != 1); + + u32Reg = winc_bus_read_reg(DUMMY_REGISTER); + + if (winc_bus_error()) + return M2M_ERR_FAIL; + + *pu8Val = (uint8_t)(u32Reg & 0xff); + + return M2M_SUCCESS; +} + +static int8_t spi_flash_load_to_cortus_mem(uint32_t u32MemAdr, uint32_t u32FlashAdr, uint32_t u32Sz) +{ + uint32_t u32Reg; + + u32FlashAdr = CONF_WINC_UINT32_SWAP(u32FlashAdr); // 24bit address swapped and placed in top 24bits + u32FlashAdr |= 0x0b; + + winc_bus_write_reg(SPI_FLASH_DATA_CNT, u32Sz); + winc_bus_write_reg(SPI_FLASH_BUF1, u32FlashAdr); + winc_bus_write_reg(SPI_FLASH_BUF2, 0xa5); + winc_bus_write_reg(SPI_FLASH_BUF_DIR, 0x1f); + winc_bus_write_reg(SPI_FLASH_DMA_ADDR, u32MemAdr); + winc_bus_write_reg(SPI_FLASH_CMD_CNT, 5 | (1<<7)); + do + { + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(SPI_FLASH_TR_DONE, &u32Reg)) + break; + } + while(u32Reg != 1); + + if (winc_bus_error()) + return M2M_ERR_FAIL; + + return M2M_SUCCESS; +} + +static int8_t spi_flash_sector_erase(uint32_t u32FlashAdr) +{ + uint32_t u32Reg; + + u32FlashAdr = CONF_WINC_UINT32_SWAP(u32FlashAdr); // 24bit address swapped and placed in top 24bits + u32FlashAdr |= 0x20; + + winc_bus_write_reg(SPI_FLASH_DATA_CNT, 0); + winc_bus_write_reg(SPI_FLASH_BUF1, u32FlashAdr); + winc_bus_write_reg(SPI_FLASH_BUF_DIR, 0x0f); + winc_bus_write_reg(SPI_FLASH_DMA_ADDR, 0); + winc_bus_write_reg(SPI_FLASH_CMD_CNT, 4 | (1<<7)); + do + { + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(SPI_FLASH_TR_DONE, &u32Reg)) + break; + } + while(u32Reg != 1); + + if (winc_bus_error()) + return M2M_ERR_FAIL; + + return M2M_SUCCESS; +} + +static int8_t spi_flash_write_enable(void) +{ + uint32_t u32Reg; + + winc_bus_write_reg(SPI_FLASH_DATA_CNT, 0); + winc_bus_write_reg(SPI_FLASH_BUF1, 0x06); + winc_bus_write_reg(SPI_FLASH_BUF_DIR, 0x01); + winc_bus_write_reg(SPI_FLASH_DMA_ADDR, 0); + winc_bus_write_reg(SPI_FLASH_CMD_CNT, 1 | (1<<7)); + do + { + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(SPI_FLASH_TR_DONE, &u32Reg)) + break; + } + while(u32Reg != 1); + + if (winc_bus_error()) + return M2M_ERR_FAIL; + + return M2M_SUCCESS; +} + +static int8_t spi_flash_write_disable(void) +{ + uint32_t u32Reg; + + winc_bus_write_reg(SPI_FLASH_DATA_CNT, 0); + winc_bus_write_reg(SPI_FLASH_BUF1, 0x04); + winc_bus_write_reg(SPI_FLASH_BUF_DIR, 0x01); + winc_bus_write_reg(SPI_FLASH_DMA_ADDR, 0); + winc_bus_write_reg(SPI_FLASH_CMD_CNT, 1 | (1<<7)); + do + { + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(SPI_FLASH_TR_DONE, &u32Reg)) + break; + } + while(u32Reg != 1); + + if (winc_bus_error()) + return M2M_ERR_FAIL; + + return M2M_SUCCESS; +} + +static int8_t spi_flash_page_program(uint32_t u32MemAdr, uint32_t u32FlashAdr, uint32_t u32Sz) +{ + uint32_t u32Reg; + + u32FlashAdr = CONF_WINC_UINT32_SWAP(u32FlashAdr); // 24bit address swapped and placed in top 24bits + u32FlashAdr |= 0x02; + + winc_bus_write_reg(SPI_FLASH_DATA_CNT, 0); + winc_bus_write_reg(SPI_FLASH_BUF1, u32FlashAdr); + winc_bus_write_reg(SPI_FLASH_BUF_DIR, 0x0f); + winc_bus_write_reg(SPI_FLASH_DMA_ADDR, u32MemAdr); + winc_bus_write_reg(SPI_FLASH_CMD_CNT, 4 | (1<<7) | ((u32Sz & 0xfffff) << 8)); + do + { + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(SPI_FLASH_TR_DONE, &u32Reg)) + break; + } + while(u32Reg != 1); + + if (winc_bus_error()) + return M2M_ERR_FAIL; + + return M2M_SUCCESS; +} + +static int8_t spi_flash_read_internal(uint8_t *pu8Buf, uint32_t u32Addr, uint32_t u32Sz) +{ + /* read size must be < 64KB */ + if (M2M_SUCCESS != spi_flash_load_to_cortus_mem(HOST_SHARE_MEM_BASE, u32Addr, u32Sz)) + return M2M_ERR_FAIL; + + if (WINC_BUS_SUCCESS != winc_bus_read_block(HOST_SHARE_MEM_BASE, pu8Buf, u32Sz)) + return M2M_ERR_FAIL; + + return M2M_SUCCESS; +} + +static int8_t spi_flash_pp(uint32_t u32Offset, uint8_t *pu8Buf, uint_fast16_t u16Sz) +{ + uint8_t u8Reg; + + /* use shared packet memory as temp mem */ + if (WINC_BUS_SUCCESS != winc_bus_write_block(HOST_SHARE_MEM_BASE, pu8Buf, u16Sz)) + return M2M_ERR_FAIL; + + spi_flash_write_enable(); + spi_flash_page_program(HOST_SHARE_MEM_BASE, u32Offset, u16Sz); + spi_flash_read_status_reg(&u8Reg); + + do + { + if (M2M_SUCCESS != spi_flash_read_status_reg(&u8Reg)) + break; + } + while(u8Reg & 0x01); + + spi_flash_write_disable(); + + if (winc_bus_error()) + return M2M_ERR_FAIL; + + return M2M_SUCCESS; +} + +static uint32_t spi_flash_rdid(void) +{ + uint32_t u32Reg; + uint_fast16_t u16Cnt; + + winc_bus_write_reg(SPI_FLASH_DATA_CNT, 4); + winc_bus_write_reg(SPI_FLASH_BUF1, 0x9f); + winc_bus_write_reg(SPI_FLASH_BUF_DIR, 0x1); + winc_bus_write_reg(SPI_FLASH_DMA_ADDR, DUMMY_REGISTER); + winc_bus_write_reg(SPI_FLASH_CMD_CNT, 1 | (1<<7)); + + u16Cnt = 500; + do + { + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(SPI_FLASH_TR_DONE, &u32Reg)) + break; + } + while((u32Reg != 1) && (u16Cnt--)); + + u32Reg = winc_bus_read_reg(DUMMY_REGISTER); + + if (winc_bus_error()) + return 0; + + WINC_LOG_INFO("Flash ID %" PRIx32, u32Reg); + + return u32Reg; +} + +/*********************************************/ +/* GLOBAL FUNCTIONS */ +/*********************************************/ + +int8_t spi_flash_enable(uint8_t enable) +{ + uint32_t u32Reg; + uint32_t u32Val; + + if(REV(winc_chip_get_id()) >= REV_3A0) + { + /* Enable pinmux to SPI flash. */ + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(NMI_PIN_MUX_1, &u32Val)) + return M2M_ERR_FAIL; + + /* GPIO15/16/17/18 */ + u32Val &= ~((0x7777ul) << 12); + u32Val |= ((0x1111ul) << 12); + + winc_bus_write_reg(NMI_PIN_MUX_1, u32Val); + + winc_bus_write_reg(SPI_FLASH_DATA_CNT, 0); + if(enable) + { + winc_bus_write_reg(SPI_FLASH_BUF1, 0xab); + } + else + { + winc_bus_write_reg(SPI_FLASH_BUF1, 0xb9); + } + winc_bus_write_reg(SPI_FLASH_BUF_DIR, 0x1); + winc_bus_write_reg(SPI_FLASH_DMA_ADDR, 0); + winc_bus_write_reg(SPI_FLASH_CMD_CNT, 1 | (1 << 7)); + + if (winc_bus_error()) + return M2M_ERR_FAIL; + + do + { + if (WINC_BUS_SUCCESS != winc_bus_read_reg_with_ret(SPI_FLASH_TR_DONE, &u32Reg)) + break; + } + while(u32Reg != 1); + + /* Disable pinmux to SPI flash to minimize leakage. */ + u32Val &= ~((0x7777ul) << 12); + u32Val |= ((0x0010ul) << 12); + winc_bus_write_reg(NMI_PIN_MUX_1, u32Val); + } + + return M2M_SUCCESS; +} + +int8_t spi_flash_read(uint8_t *pu8Buf, uint32_t u32offset, uint32_t u32Sz) +{ + if(u32Sz > FLASH_BLOCK_SIZE) + { + do + { + if (M2M_SUCCESS != spi_flash_read_internal(pu8Buf, u32offset, FLASH_BLOCK_SIZE)) + return M2M_ERR_FAIL; + + u32Sz -= FLASH_BLOCK_SIZE; + u32offset += FLASH_BLOCK_SIZE; + pu8Buf += FLASH_BLOCK_SIZE; + } + while(u32Sz > FLASH_BLOCK_SIZE); + } + + return spi_flash_read_internal(pu8Buf, u32offset, u32Sz); +} + +int8_t spi_flash_write(uint8_t* pu8Buf, uint32_t u32Offset, uint32_t u32Sz) +{ + uint_fast16_t u16wsz; + uint32_t u32off; + + if (u32Sz == 0) + { + WINC_LOG_ERROR("Data size = %" PRIu32, u32Sz); + return M2M_ERR_FAIL; + } + + u32off = u32Offset % FLASH_PAGE_SZ; + + if (u32off) /*first part of data in the address page*/ + { + // Calculate remaining space in this sector + u16wsz = FLASH_PAGE_SZ - u32off; + + // Cap write to the requested size if smaller + if (u16wsz > u32Sz) + u16wsz = u32Sz; + + if (spi_flash_pp(u32Offset, pu8Buf, u16wsz) != M2M_SUCCESS) + return M2M_ERR_FAIL; + + pu8Buf += u16wsz; + u32Offset += u16wsz; + u32Sz -= u16wsz; + } + + while (u32Sz > 0) + { + if (u32Sz >= FLASH_PAGE_SZ) + u16wsz = FLASH_PAGE_SZ; + else u16wsz = u32Sz; + + /*write complete page or the remaining data*/ + if (spi_flash_pp(u32Offset, pu8Buf, u16wsz) != M2M_SUCCESS) + return M2M_ERR_FAIL; + + pu8Buf += u16wsz; + u32Offset += u16wsz; + u32Sz -= u16wsz; + } + + return M2M_SUCCESS; +} + +int8_t spi_flash_erase(uint32_t u32Offset, uint32_t u32Sz) +{ + uint32_t i; + uint8_t u8Reg; + + WINC_LOG_INFO("\r\n>Start erasing..."); + + for (i=u32Offset; i<(u32Sz +u32Offset); i += (16*FLASH_PAGE_SZ)) + { + if (M2M_SUCCESS != spi_flash_write_enable()) + return M2M_ERR_FAIL; + if (M2M_SUCCESS != spi_flash_read_status_reg(&u8Reg)) + return M2M_ERR_FAIL; + if (M2M_SUCCESS != spi_flash_sector_erase(i)) + return M2M_ERR_FAIL; + if (M2M_SUCCESS != spi_flash_read_status_reg(&u8Reg)) + return M2M_ERR_FAIL; + do + { + if (M2M_SUCCESS != spi_flash_read_status_reg(&u8Reg)) + return M2M_ERR_FAIL; + } + while(u8Reg & 0x01); + } + + WINC_LOG_INFO("Done"); + + return M2M_SUCCESS; +} + +uint32_t spi_flash_get_size(void) +{ + uint32_t u32FlashId; + uint_fast8_t u8FlashPwr; + + if (gu32InternalFlashSize) + return gu32InternalFlashSize; + + u32FlashId = spi_flash_rdid(); + + if(u32FlashId != 0xffffffff) + { + /*flash size is the third byte from the FLASH RDID*/ + u8FlashPwr = ((u32FlashId>>16) & 0xff) - 0x11; /*2MBIT is the min*/ + + /*That number power 2 to get the flash size*/ + gu32InternalFlashSize = 1 << u8FlashPwr; + + WINC_LOG_INFO("Flash Size %" PRIu32 " Mb", gu32InternalFlashSize); + } + else + { + WINC_LOG_ERROR("Can't detect Flash size"); + } + + return gu32InternalFlashSize; +} diff --git a/AVRIoT.X/mcc_generated_files/winc/spi_flash/spi_flash.h b/AVRIoT.X/mcc_generated_files/winc/spi_flash/spi_flash.h new file mode 100644 index 0000000..addae90 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/spi_flash/spi_flash.h @@ -0,0 +1,188 @@ +/** + * \file + * + * \brief SPI flash API + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +/** @defgroup SPIFLASHAPI SPI Flash + @{ + @defgroup SPIFLASHFUNCTIONS Functions + @{ + @} + @} + */ + + /**@addtogroup SPIFLASHAPI + * @{ +@include spi_flash_example.c +@example spi_flash_example.c + * @} + */ + +#ifndef __SPI_FLASH_H__ +#define __SPI_FLASH_H__ + +/**@addtogroup SPIFLASHFUNCTIONS + * @{ + */ + +/*! +@fn \ + int8_t spi_flash_enable(uint8_t enable); + +@brief + Enable SPI flash operations +*/ +int8_t spi_flash_enable(uint8_t enable); + +/*! +@fn \ + uint32_t spi_flash_get_size(void); + +@brief + Returns size of the flash in megabits. + +@return + SPI flash size in case of success and a zero value in case of failure. +*/ +uint32_t spi_flash_get_size(void); + +/*! +@fn \ + int8_t spi_flash_read(uint8_t *pu8Buf, uint32_t u32Addr, uint32_t u32Sz); + +@brief + Read a specified block of data from the SPI flash. + +@param[out] pu8Buf + Pointer to a data buffer to be filled with data. + +@param[in] u32Addr + Address offset within the SPI flash to read the data from. + +@param[in] u32Sz + Total size of data to be read (in bytes). + +@note + No firmware is required to be loaded on the WINC for the SPI flash to be accessed. + +@warning + The read must not exceed the last address of the flash. + +@warning + If the WINC device has running firmware it must be stopped before interacting with + the SPI flash using @ref m2m_wifi_download_mode. + +@see m2m_wifi_download_mode + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. +*/ +int8_t spi_flash_read(uint8_t *pu8Buf, uint32_t u32Addr, uint32_t u32Sz); + +/*! +@fn \ + int8_t spi_flash_write(uint8_t* pu8Buf, uint32_t u32Offset, uint32_t u32Sz); + +@brief + Write a specified block of data to the SPI flash. + +@param[in] pu8Buf + Pointer to a data buffer containing data to be written. + +@param[in] u32Offset + Address offset within the SPI flash to write the data to. + +@param[in] u32Sz + Total size of data to be written (in bytes). + +@note + No firmware is required to be loaded on the WINC for the SPI flash to be accessed. + +@warning + The read must not exceed the last address of the flash. + +@warning + If the WINC device has running firmware it must be stopped before interacting with + the SPI flash using @ref m2m_wifi_download_mode. + +@warning + The flash sector should be erased before writing data using the function @ref spi_flash_erase + otherwise the correct data will not be written. + +@see m2m_wifi_download_mode +@see spi_flash_erase + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. +*/ +int8_t spi_flash_write(uint8_t* pu8Buf, uint32_t u32Offset, uint32_t u32Sz); + +/*! +@fn \ + int8_t spi_flash_erase(uint32_t u32Offset, uint32_t u32Sz); + +@brief Erase a specified range of sectors within the SPI flash. + +@param[in] u32Offset + Address offset within the SPI flash to erase from. + +@param[in] u32Sz + Total size of data to be erased (in bytes). + +@note + No firmware is required to be loaded on the WINC for the SPI flash to be accessed. + +@note + The SPI flash is erased in whole sectors, therefore if @p u32Offset is not aligned + with a sector boundary it will rounded down to the nearest sector start address. + If the erase range ends before a sector boundary it will be rounded up to include + a complete sector. + +@warning + The read must not exceed the last address of the flash. + +@warning + If the WINC device has running firmware it must be stopped before interacting with + the SPI flash using @ref m2m_wifi_download_mode. + +@see m2m_wifi_download_mode + +@return + The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise. +*/ +int8_t spi_flash_erase(uint32_t u32Offset, uint32_t u32Sz); + + /**@}*/ + +#endif //__SPI_FLASH_H__ diff --git a/AVRIoT.X/mcc_generated_files/winc/spi_flash/spi_flash_map.h b/AVRIoT.X/mcc_generated_files/winc/spi_flash/spi_flash_map.h new file mode 100644 index 0000000..e5d2d35 --- /dev/null +++ b/AVRIoT.X/mcc_generated_files/winc/spi_flash/spi_flash_map.h @@ -0,0 +1,223 @@ +/** + * \file + * + * \brief This module contains the SPI flash map + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef __SPI_FLASH_MAP_H__ +#define __SPI_FLASH_MAP_H__ + +#define FLASH_MAP_VER_0 (0) +#define FLASH_MAP_VER_1 (1) +#define FLASH_MAP_VER_2 (2) +#define FLASH_MAP_VER_3 (3) +#define FLASH_MAP_VER_4 (4) + +#define FLASH_MAP_VERSION FLASH_MAP_VER_4 + +//#define DOWNLOAD_ROLLBACK +//#define OTA_GEN +#define _PROGRAM_POWER_SAVE_ + +/* =======*=======*=======*=======*======= + * General Sizes for Flash Memory + * =======*=======*=======*=======*======= + */ + +#define FLASH_START_ADDR (0UL) +/*! location :xxxK + * "S:xxxK" -means-> Size is :xxxK + */ + +/* + * Boot Firmware: used to select which firmware to run + */ +#define M2M_BOOT_FIRMWARE_STARTING_ADDR (FLASH_START_ADDR) +#define M2M_BOOT_FIRMWARE_FLASH_SZ (FLASH_SECTOR_SZ) + +/* + * Control Section: used by Boot firmware + */ +#define M2M_CONTROL_FLASH_OFFSET (M2M_BOOT_FIRMWARE_STARTING_ADDR + M2M_BOOT_FIRMWARE_FLASH_SZ) +#define M2M_CONTROL_FLASH_BKP_OFFSET (M2M_CONTROL_FLASH_OFFSET + FLASH_SECTOR_SZ) +#define M2M_CONTROL_FLASH_SEC_SZ (FLASH_SECTOR_SZ) +#define M2M_CONTROL_FLASH_TOTAL_SZ (FLASH_SECTOR_SZ * 2) + +/* + * LUT for PLL and TX Gain settings + */ +#define M2M_PLL_FLASH_OFFSET (M2M_CONTROL_FLASH_OFFSET + M2M_CONTROL_FLASH_TOTAL_SZ) +#define M2M_PLL_FLASH_SZ (1024 * 1) +#define M2M_GAIN_FLASH_OFFSET (M2M_PLL_FLASH_OFFSET + M2M_PLL_FLASH_SZ) +#define M2M_GAIN_FLASH_SZ (M2M_CONFIG_SECT_TOTAL_SZ - M2M_PLL_FLASH_SZ) +#define M2M_CONFIG_SECT_TOTAL_SZ (FLASH_SECTOR_SZ) + +/* + * TLS Certificates + */ +#define M2M_TLS_ROOTCER_FLASH_OFFSET (M2M_PLL_FLASH_OFFSET + M2M_CONFIG_SECT_TOTAL_SZ) +#define M2M_TLS_ROOTCER_FLASH_SIZE (FLASH_SECTOR_SZ * 1) + +/* + * TLS Server Key Files + */ +#define M2M_TLS_SERVER_FLASH_OFFSET (M2M_TLS_ROOTCER_FLASH_OFFSET + M2M_TLS_ROOTCER_FLASH_SIZE) +#define M2M_TLS_SERVER_FLASH_SIZE (FLASH_SECTOR_SZ * 2) + +/* + * HTTP Files + * + */ +#define M2M_HTTP_MEM_FLASH_OFFSET (M2M_TLS_SERVER_FLASH_OFFSET + M2M_TLS_SERVER_FLASH_SIZE) +#define M2M_HTTP_MEM_FLASH_SZ (FLASH_SECTOR_SZ * 2) + +/* + * Saved Connection Parameters + */ +#define M2M_CACHED_CONNS_FLASH_OFFSET (M2M_HTTP_MEM_FLASH_OFFSET + M2M_HTTP_MEM_FLASH_SZ) +#define M2M_CACHED_CONNS_FLASH_SZ (FLASH_SECTOR_SZ * 1) + +/* + * Common section size + */ +#define M2M_COMMON_DATA_SEC \ + (\ + M2M_BOOT_FIRMWARE_FLASH_SZ + \ + M2M_CONTROL_FLASH_TOTAL_SZ + \ + M2M_CONFIG_SECT_TOTAL_SZ + \ + M2M_TLS_ROOTCER_FLASH_SIZE + \ + M2M_TLS_SERVER_FLASH_SIZE + \ + M2M_HTTP_MEM_FLASH_SZ + \ + M2M_CACHED_CONNS_FLASH_SZ \ + ) + +/* + * OTA image1 Offset (Firmware offset) + */ +#define M2M_OTA_IMAGE1_OFFSET (M2M_CACHED_CONNS_FLASH_OFFSET + M2M_CACHED_CONNS_FLASH_SZ) + +#if (defined _FIRMWARE_)||(defined OTA_GEN) +#define M2M_FIRMWARE_FLASH_OFFSET (0UL) +#else +#if (defined DOWNLOAD_ROLLBACK) +#define M2M_FIRMWARE_FLASH_OFFSET (M2M_OTA_IMAGE2_OFFSET) +#else +#define M2M_FIRMWARE_FLASH_OFFSET (M2M_OTA_IMAGE1_OFFSET) +#endif +#endif +/* + * + * Firmware + */ +#define M2M_FIRMWARE_FLASH_SZ (236 * 1024UL) +/** + * + * OTA image Size + */ +#define OTA_IMAGE_SIZE (M2M_FIRMWARE_FLASH_SZ) +/** + * + * Flash Total size + */ +#define FLASH_IMAGE1_CONTENT_SZ (M2M_COMMON_DATA_SEC + OTA_IMAGE_SIZE) + +/** + * + * OTA image 2 offset + */ +#define M2M_OTA_IMAGE2_OFFSET (FLASH_IMAGE1_CONTENT_SZ) + +#define M2M_HFD_8M_MEM_FLASH_OFFSET (M2M_OTA_IMAGE2_OFFSET + OTA_IMAGE_SIZE) + +/* Check if total size of content + * don't exceed total size of memory allowed + **/ +#if (M2M_COMMON_DATA_SEC + (OTA_IMAGE_SIZE *2)> FLASH_4M_TOTAL_SZ) +#error "Exceeds 4M Flash Size" +#endif /* (FLASH_CONTENT_SZ > FLASH_TOTAL_SZ) */ + +/** + * Magic value to differentiate between old HTTP flash section format and newer formats. + * The lowest byte is ignored when checking the value as it contains the + * version number (it should always be 00 here, image_builder will set this value in flash). + **/ +#define HTTP_FLASH_SECTION_MAGIC 0xB00B1500 +#define HTTP_FLASH_SECTION_VERSION 2 + + +#endif /* __SPI_FLASH_MAP_H__ */ diff --git a/AVRIoT.X/nbproject/Makefile-AWS_IOT.mk b/AVRIoT.X/nbproject/Makefile-AWS_IOT.mk new file mode 100644 index 0000000..b182957 --- /dev/null +++ b/AVRIoT.X/nbproject/Makefile-AWS_IOT.mk @@ -0,0 +1,1278 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Include project Makefile +ifeq "${IGNORE_LOCAL}" "TRUE" +# do not include local makefile. User is passing all local related variables already +else +include Makefile +# Include makefile containing local settings +ifeq "$(wildcard nbproject/Makefile-local-AWS_IOT.mk)" "nbproject/Makefile-local-AWS_IOT.mk" +include nbproject/Makefile-local-AWS_IOT.mk +endif +endif + +# Environment +MKDIR=mkdir -p +RM=rm -f +MV=mv +CP=cp + +# Macros +CND_CONF=AWS_IOT +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +IMAGE_TYPE=debug +OUTPUT_SUFFIX=elf +DEBUGGABLE_SUFFIX=elf +FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/AVRIoT.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +else +IMAGE_TYPE=production +OUTPUT_SUFFIX=hex +DEBUGGABLE_SUFFIX=elf +FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/AVRIoT.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +endif + +ifeq ($(COMPARE_BUILD), true) +COMPARISON_BUILD= +else +COMPARISON_BUILD= +endif + +ifdef SUB_IMAGE_ADDRESS + +else +SUB_IMAGE_ADDRESS_COMMAND= +endif + +# Object Directory +OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE} + +# Distribution Directory +DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE} + +# Source Files Quoted if spaced +SOURCEFILES_QUOTED_IF_SPACED=mcc_generated_files/cli/cli.c mcc_generated_files/cloud/crypto_client/crypto_client.c mcc_generated_files/cloud/cloud_service.c mcc_generated_files/cloud/wifi_service.c mcc_generated_files/cloud/mqtt_service.c mcc_generated_files/cloud/aws_cloud_service.c mcc_generated_files/credentials_storage/credentials_storage.c mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.c mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.c mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.c mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.c mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.c mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.c mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.c mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.c mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.c mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.c mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.c mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.c mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.c mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.c mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.c mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.c mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.c mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.c mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.c mcc_generated_files/CryptoAuthenticationLibrary/atca_command.c mcc_generated_files/CryptoAuthenticationLibrary/atca_device.c mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.c mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.c mcc_generated_files/drivers/spi_master.c mcc_generated_files/drivers/timeout.c mcc_generated_files/drivers/i2c_simple_master.c mcc_generated_files/drivers/uart.c mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.c mcc_generated_files/mqtt/mqtt_core/mqtt_core.c mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.c mcc_generated_files/mqtt/mqtt_packetTransfer_interface.c mcc_generated_files/mqtt/mqtt_winc_adapter.c mcc_generated_files/src/pin_manager.c mcc_generated_files/src/cpuint.c mcc_generated_files/src/spi0.c mcc_generated_files/src/protected_io.S mcc_generated_files/src/rtc.c mcc_generated_files/src/twi0_master.c mcc_generated_files/src/adc0.c mcc_generated_files/src/usart2.c mcc_generated_files/winc/driver/winc_spi.c mcc_generated_files/winc/driver/winc_adapter.c mcc_generated_files/winc/driver/winc_hif.c mcc_generated_files/winc/driver/winc_asic.c mcc_generated_files/winc/driver/winc_drv.c mcc_generated_files/winc/m2m/m2m_ssl.c mcc_generated_files/winc/m2m/m2m_wifi.c mcc_generated_files/winc/m2m/m2m_periph.c mcc_generated_files/winc/m2m/m2m_ota.c mcc_generated_files/winc/m2m/m2m_fwinfo.c mcc_generated_files/winc/m2m/m2m_crypto.c mcc_generated_files/winc/socket/socket.c mcc_generated_files/winc/spi_flash/flexible_flash.c mcc_generated_files/winc/spi_flash/spi_flash.c mcc_generated_files/mcc.c mcc_generated_files/delay.c mcc_generated_files/device_config.c mcc_generated_files/application_manager.c mcc_generated_files/debug_print.c mcc_generated_files/led.c mcc_generated_files/sensors_handling.c mcc_generated_files/time_service.c mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.c main.c + +# Object Files Quoted if spaced +OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/mcc_generated_files/cli/cli.o ${OBJECTDIR}/mcc_generated_files/cloud/crypto_client/crypto_client.o ${OBJECTDIR}/mcc_generated_files/cloud/cloud_service.o ${OBJECTDIR}/mcc_generated_files/cloud/wifi_service.o ${OBJECTDIR}/mcc_generated_files/cloud/mqtt_service.o ${OBJECTDIR}/mcc_generated_files/cloud/aws_cloud_service.o ${OBJECTDIR}/mcc_generated_files/credentials_storage/credentials_storage.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.o ${OBJECTDIR}/mcc_generated_files/drivers/spi_master.o ${OBJECTDIR}/mcc_generated_files/drivers/timeout.o ${OBJECTDIR}/mcc_generated_files/drivers/i2c_simple_master.o ${OBJECTDIR}/mcc_generated_files/drivers/uart.o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core/mqtt_core.o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_winc_adapter.o ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o ${OBJECTDIR}/mcc_generated_files/src/cpuint.o ${OBJECTDIR}/mcc_generated_files/src/spi0.o ${OBJECTDIR}/mcc_generated_files/src/protected_io.o ${OBJECTDIR}/mcc_generated_files/src/rtc.o ${OBJECTDIR}/mcc_generated_files/src/twi0_master.o ${OBJECTDIR}/mcc_generated_files/src/adc0.o ${OBJECTDIR}/mcc_generated_files/src/usart2.o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_spi.o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_adapter.o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_hif.o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_asic.o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_drv.o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ssl.o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_wifi.o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_periph.o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ota.o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_fwinfo.o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_crypto.o ${OBJECTDIR}/mcc_generated_files/winc/socket/socket.o ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/flexible_flash.o ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/spi_flash.o ${OBJECTDIR}/mcc_generated_files/mcc.o ${OBJECTDIR}/mcc_generated_files/delay.o ${OBJECTDIR}/mcc_generated_files/device_config.o ${OBJECTDIR}/mcc_generated_files/application_manager.o ${OBJECTDIR}/mcc_generated_files/debug_print.o ${OBJECTDIR}/mcc_generated_files/led.o ${OBJECTDIR}/mcc_generated_files/sensors_handling.o ${OBJECTDIR}/mcc_generated_files/time_service.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.o ${OBJECTDIR}/main.o +POSSIBLE_DEPFILES=${OBJECTDIR}/mcc_generated_files/cli/cli.o.d ${OBJECTDIR}/mcc_generated_files/cloud/crypto_client/crypto_client.o.d ${OBJECTDIR}/mcc_generated_files/cloud/cloud_service.o.d ${OBJECTDIR}/mcc_generated_files/cloud/wifi_service.o.d ${OBJECTDIR}/mcc_generated_files/cloud/mqtt_service.o.d ${OBJECTDIR}/mcc_generated_files/cloud/aws_cloud_service.o.d ${OBJECTDIR}/mcc_generated_files/credentials_storage/credentials_storage.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.o.d ${OBJECTDIR}/mcc_generated_files/drivers/spi_master.o.d ${OBJECTDIR}/mcc_generated_files/drivers/timeout.o.d ${OBJECTDIR}/mcc_generated_files/drivers/i2c_simple_master.o.d ${OBJECTDIR}/mcc_generated_files/drivers/uart.o.d ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.o.d ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core/mqtt_core.o.d ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.o.d ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.o.d ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_winc_adapter.o.d ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o.d ${OBJECTDIR}/mcc_generated_files/src/cpuint.o.d ${OBJECTDIR}/mcc_generated_files/src/spi0.o.d ${OBJECTDIR}/mcc_generated_files/src/protected_io.o.d ${OBJECTDIR}/mcc_generated_files/src/rtc.o.d ${OBJECTDIR}/mcc_generated_files/src/twi0_master.o.d ${OBJECTDIR}/mcc_generated_files/src/adc0.o.d ${OBJECTDIR}/mcc_generated_files/src/usart2.o.d ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_spi.o.d ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_adapter.o.d ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_hif.o.d ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_asic.o.d ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_drv.o.d ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ssl.o.d ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_wifi.o.d ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_periph.o.d ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ota.o.d ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_fwinfo.o.d ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_crypto.o.d ${OBJECTDIR}/mcc_generated_files/winc/socket/socket.o.d ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/flexible_flash.o.d ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/spi_flash.o.d ${OBJECTDIR}/mcc_generated_files/mcc.o.d ${OBJECTDIR}/mcc_generated_files/delay.o.d ${OBJECTDIR}/mcc_generated_files/device_config.o.d ${OBJECTDIR}/mcc_generated_files/application_manager.o.d ${OBJECTDIR}/mcc_generated_files/debug_print.o.d ${OBJECTDIR}/mcc_generated_files/led.o.d ${OBJECTDIR}/mcc_generated_files/sensors_handling.o.d ${OBJECTDIR}/mcc_generated_files/time_service.o.d ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.o.d ${OBJECTDIR}/main.o.d + +# Object Files +OBJECTFILES=${OBJECTDIR}/mcc_generated_files/cli/cli.o ${OBJECTDIR}/mcc_generated_files/cloud/crypto_client/crypto_client.o ${OBJECTDIR}/mcc_generated_files/cloud/cloud_service.o ${OBJECTDIR}/mcc_generated_files/cloud/wifi_service.o ${OBJECTDIR}/mcc_generated_files/cloud/mqtt_service.o ${OBJECTDIR}/mcc_generated_files/cloud/aws_cloud_service.o ${OBJECTDIR}/mcc_generated_files/credentials_storage/credentials_storage.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.o ${OBJECTDIR}/mcc_generated_files/drivers/spi_master.o ${OBJECTDIR}/mcc_generated_files/drivers/timeout.o ${OBJECTDIR}/mcc_generated_files/drivers/i2c_simple_master.o ${OBJECTDIR}/mcc_generated_files/drivers/uart.o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core/mqtt_core.o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_winc_adapter.o ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o ${OBJECTDIR}/mcc_generated_files/src/cpuint.o ${OBJECTDIR}/mcc_generated_files/src/spi0.o ${OBJECTDIR}/mcc_generated_files/src/protected_io.o ${OBJECTDIR}/mcc_generated_files/src/rtc.o ${OBJECTDIR}/mcc_generated_files/src/twi0_master.o ${OBJECTDIR}/mcc_generated_files/src/adc0.o ${OBJECTDIR}/mcc_generated_files/src/usart2.o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_spi.o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_adapter.o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_hif.o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_asic.o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_drv.o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ssl.o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_wifi.o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_periph.o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ota.o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_fwinfo.o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_crypto.o ${OBJECTDIR}/mcc_generated_files/winc/socket/socket.o ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/flexible_flash.o ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/spi_flash.o ${OBJECTDIR}/mcc_generated_files/mcc.o ${OBJECTDIR}/mcc_generated_files/delay.o ${OBJECTDIR}/mcc_generated_files/device_config.o ${OBJECTDIR}/mcc_generated_files/application_manager.o ${OBJECTDIR}/mcc_generated_files/debug_print.o ${OBJECTDIR}/mcc_generated_files/led.o ${OBJECTDIR}/mcc_generated_files/sensors_handling.o ${OBJECTDIR}/mcc_generated_files/time_service.o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.o ${OBJECTDIR}/main.o + +# Source Files +SOURCEFILES=mcc_generated_files/cli/cli.c mcc_generated_files/cloud/crypto_client/crypto_client.c mcc_generated_files/cloud/cloud_service.c mcc_generated_files/cloud/wifi_service.c mcc_generated_files/cloud/mqtt_service.c mcc_generated_files/cloud/aws_cloud_service.c mcc_generated_files/credentials_storage/credentials_storage.c mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.c mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.c mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.c mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.c mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.c mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.c mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.c mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.c mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.c mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.c mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.c mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.c mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.c mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.c mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.c mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.c mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.c mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.c mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.c mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.c mcc_generated_files/CryptoAuthenticationLibrary/atca_command.c mcc_generated_files/CryptoAuthenticationLibrary/atca_device.c mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.c mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.c mcc_generated_files/drivers/spi_master.c mcc_generated_files/drivers/timeout.c mcc_generated_files/drivers/i2c_simple_master.c mcc_generated_files/drivers/uart.c mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.c mcc_generated_files/mqtt/mqtt_core/mqtt_core.c mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.c mcc_generated_files/mqtt/mqtt_packetTransfer_interface.c mcc_generated_files/mqtt/mqtt_winc_adapter.c mcc_generated_files/src/pin_manager.c mcc_generated_files/src/cpuint.c mcc_generated_files/src/spi0.c mcc_generated_files/src/protected_io.S mcc_generated_files/src/rtc.c mcc_generated_files/src/twi0_master.c mcc_generated_files/src/adc0.c mcc_generated_files/src/usart2.c mcc_generated_files/winc/driver/winc_spi.c mcc_generated_files/winc/driver/winc_adapter.c mcc_generated_files/winc/driver/winc_hif.c mcc_generated_files/winc/driver/winc_asic.c mcc_generated_files/winc/driver/winc_drv.c mcc_generated_files/winc/m2m/m2m_ssl.c mcc_generated_files/winc/m2m/m2m_wifi.c mcc_generated_files/winc/m2m/m2m_periph.c mcc_generated_files/winc/m2m/m2m_ota.c mcc_generated_files/winc/m2m/m2m_fwinfo.c mcc_generated_files/winc/m2m/m2m_crypto.c mcc_generated_files/winc/socket/socket.c mcc_generated_files/winc/spi_flash/flexible_flash.c mcc_generated_files/winc/spi_flash/spi_flash.c mcc_generated_files/mcc.c mcc_generated_files/delay.c mcc_generated_files/device_config.c mcc_generated_files/application_manager.c mcc_generated_files/debug_print.c mcc_generated_files/led.c mcc_generated_files/sensors_handling.c mcc_generated_files/time_service.c mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.c main.c + + + +CFLAGS= +ASFLAGS= +LDLIBSOPTIONS= + +############# Tool locations ########################################## +# If you copy a project from one host to another, the path where the # +# compiler is installed may be different. # +# If you open this project with MPLAB X in the new host, this # +# makefile will be regenerated and the paths will be corrected. # +####################################################################### +# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build +FIXDEPS=fixDeps + +.build-conf: ${BUILD_SUBPROJECTS} +ifneq ($(INFORMATION_MESSAGE), ) + @echo $(INFORMATION_MESSAGE) +endif + ${MAKE} -f nbproject/Makefile-AWS_IOT.mk dist/${CND_CONF}/${IMAGE_TYPE}/AVRIoT.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} + +MP_PROCESSOR_OPTION=ATmega4808 +# ------------------------------------------------------------------------------------ +# Rules for buildStep: compile +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +${OBJECTDIR}/mcc_generated_files/cli/cli.o: mcc_generated_files/cli/cli.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/cli" + @${RM} ${OBJECTDIR}/mcc_generated_files/cli/cli.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/cli/cli.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/cli/cli.o.d" -MT "${OBJECTDIR}/mcc_generated_files/cli/cli.o.d" -MT ${OBJECTDIR}/mcc_generated_files/cli/cli.o -o ${OBJECTDIR}/mcc_generated_files/cli/cli.o mcc_generated_files/cli/cli.c + +${OBJECTDIR}/mcc_generated_files/cloud/crypto_client/crypto_client.o: mcc_generated_files/cloud/crypto_client/crypto_client.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/cloud/crypto_client" + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/crypto_client/crypto_client.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/crypto_client/crypto_client.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/cloud/crypto_client/crypto_client.o.d" -MT "${OBJECTDIR}/mcc_generated_files/cloud/crypto_client/crypto_client.o.d" -MT ${OBJECTDIR}/mcc_generated_files/cloud/crypto_client/crypto_client.o -o ${OBJECTDIR}/mcc_generated_files/cloud/crypto_client/crypto_client.o mcc_generated_files/cloud/crypto_client/crypto_client.c + +${OBJECTDIR}/mcc_generated_files/cloud/cloud_service.o: mcc_generated_files/cloud/cloud_service.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/cloud" + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/cloud_service.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/cloud_service.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/cloud/cloud_service.o.d" -MT "${OBJECTDIR}/mcc_generated_files/cloud/cloud_service.o.d" -MT ${OBJECTDIR}/mcc_generated_files/cloud/cloud_service.o -o ${OBJECTDIR}/mcc_generated_files/cloud/cloud_service.o mcc_generated_files/cloud/cloud_service.c + +${OBJECTDIR}/mcc_generated_files/cloud/wifi_service.o: mcc_generated_files/cloud/wifi_service.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/cloud" + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/wifi_service.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/wifi_service.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/cloud/wifi_service.o.d" -MT "${OBJECTDIR}/mcc_generated_files/cloud/wifi_service.o.d" -MT ${OBJECTDIR}/mcc_generated_files/cloud/wifi_service.o -o ${OBJECTDIR}/mcc_generated_files/cloud/wifi_service.o mcc_generated_files/cloud/wifi_service.c + +${OBJECTDIR}/mcc_generated_files/cloud/mqtt_service.o: mcc_generated_files/cloud/mqtt_service.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/cloud" + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/mqtt_service.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/mqtt_service.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/cloud/mqtt_service.o.d" -MT "${OBJECTDIR}/mcc_generated_files/cloud/mqtt_service.o.d" -MT ${OBJECTDIR}/mcc_generated_files/cloud/mqtt_service.o -o ${OBJECTDIR}/mcc_generated_files/cloud/mqtt_service.o mcc_generated_files/cloud/mqtt_service.c + +${OBJECTDIR}/mcc_generated_files/cloud/aws_cloud_service.o: mcc_generated_files/cloud/aws_cloud_service.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/cloud" + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/aws_cloud_service.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/aws_cloud_service.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/cloud/aws_cloud_service.o.d" -MT "${OBJECTDIR}/mcc_generated_files/cloud/aws_cloud_service.o.d" -MT ${OBJECTDIR}/mcc_generated_files/cloud/aws_cloud_service.o -o ${OBJECTDIR}/mcc_generated_files/cloud/aws_cloud_service.o mcc_generated_files/cloud/aws_cloud_service.c + +${OBJECTDIR}/mcc_generated_files/credentials_storage/credentials_storage.o: mcc_generated_files/credentials_storage/credentials_storage.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/credentials_storage" + @${RM} ${OBJECTDIR}/mcc_generated_files/credentials_storage/credentials_storage.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/credentials_storage/credentials_storage.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/credentials_storage/credentials_storage.o.d" -MT "${OBJECTDIR}/mcc_generated_files/credentials_storage/credentials_storage.o.d" -MT ${OBJECTDIR}/mcc_generated_files/credentials_storage/credentials_storage.o -o ${OBJECTDIR}/mcc_generated_files/credentials_storage/credentials_storage.o mcc_generated_files/credentials_storage/credentials_storage.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.o: mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.o mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.o: mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.o mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.o: mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.o mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.o: mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.o mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.o: mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.o mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.o: mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.o mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.o: mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.o mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.o: mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.o mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.o: mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.o mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.o: mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.o mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.o: mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.o mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.o: mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.o mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.o: mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.o mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.o: mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.o mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.o: mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.o mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.o: mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.o mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.o: mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.o mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.o: mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.o mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.o: mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.o mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.o: mcc_generated_files/CryptoAuthenticationLibrary/atca_command.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.o mcc_generated_files/CryptoAuthenticationLibrary/atca_command.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.o: mcc_generated_files/CryptoAuthenticationLibrary/atca_device.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.o mcc_generated_files/CryptoAuthenticationLibrary/atca_device.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.o: mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.o mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.o: mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.o mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.c + +${OBJECTDIR}/mcc_generated_files/drivers/spi_master.o: mcc_generated_files/drivers/spi_master.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/drivers" + @${RM} ${OBJECTDIR}/mcc_generated_files/drivers/spi_master.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/drivers/spi_master.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/drivers/spi_master.o.d" -MT "${OBJECTDIR}/mcc_generated_files/drivers/spi_master.o.d" -MT ${OBJECTDIR}/mcc_generated_files/drivers/spi_master.o -o ${OBJECTDIR}/mcc_generated_files/drivers/spi_master.o mcc_generated_files/drivers/spi_master.c + +${OBJECTDIR}/mcc_generated_files/drivers/timeout.o: mcc_generated_files/drivers/timeout.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/drivers" + @${RM} ${OBJECTDIR}/mcc_generated_files/drivers/timeout.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/drivers/timeout.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/drivers/timeout.o.d" -MT "${OBJECTDIR}/mcc_generated_files/drivers/timeout.o.d" -MT ${OBJECTDIR}/mcc_generated_files/drivers/timeout.o -o ${OBJECTDIR}/mcc_generated_files/drivers/timeout.o mcc_generated_files/drivers/timeout.c + +${OBJECTDIR}/mcc_generated_files/drivers/i2c_simple_master.o: mcc_generated_files/drivers/i2c_simple_master.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/drivers" + @${RM} ${OBJECTDIR}/mcc_generated_files/drivers/i2c_simple_master.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/drivers/i2c_simple_master.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/drivers/i2c_simple_master.o.d" -MT "${OBJECTDIR}/mcc_generated_files/drivers/i2c_simple_master.o.d" -MT ${OBJECTDIR}/mcc_generated_files/drivers/i2c_simple_master.o -o ${OBJECTDIR}/mcc_generated_files/drivers/i2c_simple_master.o mcc_generated_files/drivers/i2c_simple_master.c + +${OBJECTDIR}/mcc_generated_files/drivers/uart.o: mcc_generated_files/drivers/uart.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/drivers" + @${RM} ${OBJECTDIR}/mcc_generated_files/drivers/uart.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/drivers/uart.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/drivers/uart.o.d" -MT "${OBJECTDIR}/mcc_generated_files/drivers/uart.o.d" -MT ${OBJECTDIR}/mcc_generated_files/drivers/uart.o -o ${OBJECTDIR}/mcc_generated_files/drivers/uart.o mcc_generated_files/drivers/uart.c + +${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.o: mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd" + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.o.d" -MT "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.o.d" -MT ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.o -o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.o mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.c + +${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core/mqtt_core.o: mcc_generated_files/mqtt/mqtt_core/mqtt_core.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core" + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core/mqtt_core.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core/mqtt_core.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core/mqtt_core.o.d" -MT "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core/mqtt_core.o.d" -MT ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core/mqtt_core.o -o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core/mqtt_core.o mcc_generated_files/mqtt/mqtt_core/mqtt_core.c + +${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.o: mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer" + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.o.d" -MT "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.o.d" -MT ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.o -o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.o mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.c + +${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.o: mcc_generated_files/mqtt/mqtt_packetTransfer_interface.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/mqtt" + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.o.d" -MT "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.o.d" -MT ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.o -o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.o mcc_generated_files/mqtt/mqtt_packetTransfer_interface.c + +${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_winc_adapter.o: mcc_generated_files/mqtt/mqtt_winc_adapter.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/mqtt" + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_winc_adapter.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_winc_adapter.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_winc_adapter.o.d" -MT "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_winc_adapter.o.d" -MT ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_winc_adapter.o -o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_winc_adapter.o mcc_generated_files/mqtt/mqtt_winc_adapter.c + +${OBJECTDIR}/mcc_generated_files/src/pin_manager.o: mcc_generated_files/src/pin_manager.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/src" + @${RM} ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/pin_manager.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/pin_manager.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o -o ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o mcc_generated_files/src/pin_manager.c + +${OBJECTDIR}/mcc_generated_files/src/cpuint.o: mcc_generated_files/src/cpuint.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/src" + @${RM} ${OBJECTDIR}/mcc_generated_files/src/cpuint.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/src/cpuint.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/cpuint.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/cpuint.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/cpuint.o -o ${OBJECTDIR}/mcc_generated_files/src/cpuint.o mcc_generated_files/src/cpuint.c + +${OBJECTDIR}/mcc_generated_files/src/spi0.o: mcc_generated_files/src/spi0.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/src" + @${RM} ${OBJECTDIR}/mcc_generated_files/src/spi0.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/src/spi0.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/spi0.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/spi0.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/spi0.o -o ${OBJECTDIR}/mcc_generated_files/src/spi0.o mcc_generated_files/src/spi0.c + +${OBJECTDIR}/mcc_generated_files/src/rtc.o: mcc_generated_files/src/rtc.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/src" + @${RM} ${OBJECTDIR}/mcc_generated_files/src/rtc.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/src/rtc.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/rtc.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/rtc.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/rtc.o -o ${OBJECTDIR}/mcc_generated_files/src/rtc.o mcc_generated_files/src/rtc.c + +${OBJECTDIR}/mcc_generated_files/src/twi0_master.o: mcc_generated_files/src/twi0_master.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/src" + @${RM} ${OBJECTDIR}/mcc_generated_files/src/twi0_master.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/src/twi0_master.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/twi0_master.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/twi0_master.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/twi0_master.o -o ${OBJECTDIR}/mcc_generated_files/src/twi0_master.o mcc_generated_files/src/twi0_master.c + +${OBJECTDIR}/mcc_generated_files/src/adc0.o: mcc_generated_files/src/adc0.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/src" + @${RM} ${OBJECTDIR}/mcc_generated_files/src/adc0.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/src/adc0.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/adc0.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/adc0.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/adc0.o -o ${OBJECTDIR}/mcc_generated_files/src/adc0.o mcc_generated_files/src/adc0.c + +${OBJECTDIR}/mcc_generated_files/src/usart2.o: mcc_generated_files/src/usart2.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/src" + @${RM} ${OBJECTDIR}/mcc_generated_files/src/usart2.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/src/usart2.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/usart2.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/usart2.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/usart2.o -o ${OBJECTDIR}/mcc_generated_files/src/usart2.o mcc_generated_files/src/usart2.c + +${OBJECTDIR}/mcc_generated_files/winc/driver/winc_spi.o: mcc_generated_files/winc/driver/winc_spi.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/driver" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_spi.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_spi.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_spi.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_spi.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_spi.o -o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_spi.o mcc_generated_files/winc/driver/winc_spi.c + +${OBJECTDIR}/mcc_generated_files/winc/driver/winc_adapter.o: mcc_generated_files/winc/driver/winc_adapter.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/driver" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_adapter.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_adapter.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_adapter.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_adapter.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_adapter.o -o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_adapter.o mcc_generated_files/winc/driver/winc_adapter.c + +${OBJECTDIR}/mcc_generated_files/winc/driver/winc_hif.o: mcc_generated_files/winc/driver/winc_hif.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/driver" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_hif.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_hif.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_hif.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_hif.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_hif.o -o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_hif.o mcc_generated_files/winc/driver/winc_hif.c + +${OBJECTDIR}/mcc_generated_files/winc/driver/winc_asic.o: mcc_generated_files/winc/driver/winc_asic.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/driver" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_asic.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_asic.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_asic.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_asic.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_asic.o -o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_asic.o mcc_generated_files/winc/driver/winc_asic.c + +${OBJECTDIR}/mcc_generated_files/winc/driver/winc_drv.o: mcc_generated_files/winc/driver/winc_drv.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/driver" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_drv.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_drv.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_drv.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_drv.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_drv.o -o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_drv.o mcc_generated_files/winc/driver/winc_drv.c + +${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ssl.o: mcc_generated_files/winc/m2m/m2m_ssl.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/m2m" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ssl.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ssl.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ssl.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ssl.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ssl.o -o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ssl.o mcc_generated_files/winc/m2m/m2m_ssl.c + +${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_wifi.o: mcc_generated_files/winc/m2m/m2m_wifi.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/m2m" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_wifi.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_wifi.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_wifi.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_wifi.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_wifi.o -o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_wifi.o mcc_generated_files/winc/m2m/m2m_wifi.c + +${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_periph.o: mcc_generated_files/winc/m2m/m2m_periph.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/m2m" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_periph.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_periph.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_periph.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_periph.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_periph.o -o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_periph.o mcc_generated_files/winc/m2m/m2m_periph.c + +${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ota.o: mcc_generated_files/winc/m2m/m2m_ota.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/m2m" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ota.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ota.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ota.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ota.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ota.o -o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ota.o mcc_generated_files/winc/m2m/m2m_ota.c + +${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_fwinfo.o: mcc_generated_files/winc/m2m/m2m_fwinfo.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/m2m" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_fwinfo.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_fwinfo.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_fwinfo.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_fwinfo.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_fwinfo.o -o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_fwinfo.o mcc_generated_files/winc/m2m/m2m_fwinfo.c + +${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_crypto.o: mcc_generated_files/winc/m2m/m2m_crypto.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/m2m" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_crypto.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_crypto.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_crypto.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_crypto.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_crypto.o -o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_crypto.o mcc_generated_files/winc/m2m/m2m_crypto.c + +${OBJECTDIR}/mcc_generated_files/winc/socket/socket.o: mcc_generated_files/winc/socket/socket.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/socket" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/socket/socket.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/socket/socket.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/socket/socket.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/socket/socket.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/socket/socket.o -o ${OBJECTDIR}/mcc_generated_files/winc/socket/socket.o mcc_generated_files/winc/socket/socket.c + +${OBJECTDIR}/mcc_generated_files/winc/spi_flash/flexible_flash.o: mcc_generated_files/winc/spi_flash/flexible_flash.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/spi_flash" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/flexible_flash.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/flexible_flash.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/spi_flash/flexible_flash.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/spi_flash/flexible_flash.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/flexible_flash.o -o ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/flexible_flash.o mcc_generated_files/winc/spi_flash/flexible_flash.c + +${OBJECTDIR}/mcc_generated_files/winc/spi_flash/spi_flash.o: mcc_generated_files/winc/spi_flash/spi_flash.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/spi_flash" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/spi_flash.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/spi_flash.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/spi_flash/spi_flash.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/spi_flash/spi_flash.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/spi_flash.o -o ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/spi_flash.o mcc_generated_files/winc/spi_flash/spi_flash.c + +${OBJECTDIR}/mcc_generated_files/mcc.o: mcc_generated_files/mcc.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/mcc.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/mcc.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/mcc.o.d" -MT "${OBJECTDIR}/mcc_generated_files/mcc.o.d" -MT ${OBJECTDIR}/mcc_generated_files/mcc.o -o ${OBJECTDIR}/mcc_generated_files/mcc.o mcc_generated_files/mcc.c + +${OBJECTDIR}/mcc_generated_files/delay.o: mcc_generated_files/delay.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/delay.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/delay.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/delay.o.d" -MT "${OBJECTDIR}/mcc_generated_files/delay.o.d" -MT ${OBJECTDIR}/mcc_generated_files/delay.o -o ${OBJECTDIR}/mcc_generated_files/delay.o mcc_generated_files/delay.c + +${OBJECTDIR}/mcc_generated_files/device_config.o: mcc_generated_files/device_config.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/device_config.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/device_config.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/device_config.o.d" -MT "${OBJECTDIR}/mcc_generated_files/device_config.o.d" -MT ${OBJECTDIR}/mcc_generated_files/device_config.o -o ${OBJECTDIR}/mcc_generated_files/device_config.o mcc_generated_files/device_config.c + +${OBJECTDIR}/mcc_generated_files/application_manager.o: mcc_generated_files/application_manager.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/application_manager.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/application_manager.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/application_manager.o.d" -MT "${OBJECTDIR}/mcc_generated_files/application_manager.o.d" -MT ${OBJECTDIR}/mcc_generated_files/application_manager.o -o ${OBJECTDIR}/mcc_generated_files/application_manager.o mcc_generated_files/application_manager.c + +${OBJECTDIR}/mcc_generated_files/debug_print.o: mcc_generated_files/debug_print.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/debug_print.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/debug_print.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/debug_print.o.d" -MT "${OBJECTDIR}/mcc_generated_files/debug_print.o.d" -MT ${OBJECTDIR}/mcc_generated_files/debug_print.o -o ${OBJECTDIR}/mcc_generated_files/debug_print.o mcc_generated_files/debug_print.c + +${OBJECTDIR}/mcc_generated_files/led.o: mcc_generated_files/led.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/led.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/led.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/led.o.d" -MT "${OBJECTDIR}/mcc_generated_files/led.o.d" -MT ${OBJECTDIR}/mcc_generated_files/led.o -o ${OBJECTDIR}/mcc_generated_files/led.o mcc_generated_files/led.c + +${OBJECTDIR}/mcc_generated_files/sensors_handling.o: mcc_generated_files/sensors_handling.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/sensors_handling.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/sensors_handling.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/sensors_handling.o.d" -MT "${OBJECTDIR}/mcc_generated_files/sensors_handling.o.d" -MT ${OBJECTDIR}/mcc_generated_files/sensors_handling.o -o ${OBJECTDIR}/mcc_generated_files/sensors_handling.o mcc_generated_files/sensors_handling.c + +${OBJECTDIR}/mcc_generated_files/time_service.o: mcc_generated_files/time_service.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/time_service.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/time_service.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/time_service.o.d" -MT "${OBJECTDIR}/mcc_generated_files/time_service.o.d" -MT ${OBJECTDIR}/mcc_generated_files/time_service.o -o ${OBJECTDIR}/mcc_generated_files/time_service.o mcc_generated_files/time_service.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.o: mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.o mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.c + +${OBJECTDIR}/main.o: main.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}" + @${RM} ${OBJECTDIR}/main.o.d + @${RM} ${OBJECTDIR}/main.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/main.o.d" -MT "${OBJECTDIR}/main.o.d" -MT ${OBJECTDIR}/main.o -o ${OBJECTDIR}/main.o main.c + +else +${OBJECTDIR}/mcc_generated_files/cli/cli.o: mcc_generated_files/cli/cli.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/cli" + @${RM} ${OBJECTDIR}/mcc_generated_files/cli/cli.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/cli/cli.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/cli/cli.o.d" -MT "${OBJECTDIR}/mcc_generated_files/cli/cli.o.d" -MT ${OBJECTDIR}/mcc_generated_files/cli/cli.o -o ${OBJECTDIR}/mcc_generated_files/cli/cli.o mcc_generated_files/cli/cli.c + +${OBJECTDIR}/mcc_generated_files/cloud/crypto_client/crypto_client.o: mcc_generated_files/cloud/crypto_client/crypto_client.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/cloud/crypto_client" + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/crypto_client/crypto_client.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/crypto_client/crypto_client.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/cloud/crypto_client/crypto_client.o.d" -MT "${OBJECTDIR}/mcc_generated_files/cloud/crypto_client/crypto_client.o.d" -MT ${OBJECTDIR}/mcc_generated_files/cloud/crypto_client/crypto_client.o -o ${OBJECTDIR}/mcc_generated_files/cloud/crypto_client/crypto_client.o mcc_generated_files/cloud/crypto_client/crypto_client.c + +${OBJECTDIR}/mcc_generated_files/cloud/cloud_service.o: mcc_generated_files/cloud/cloud_service.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/cloud" + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/cloud_service.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/cloud_service.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/cloud/cloud_service.o.d" -MT "${OBJECTDIR}/mcc_generated_files/cloud/cloud_service.o.d" -MT ${OBJECTDIR}/mcc_generated_files/cloud/cloud_service.o -o ${OBJECTDIR}/mcc_generated_files/cloud/cloud_service.o mcc_generated_files/cloud/cloud_service.c + +${OBJECTDIR}/mcc_generated_files/cloud/wifi_service.o: mcc_generated_files/cloud/wifi_service.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/cloud" + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/wifi_service.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/wifi_service.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/cloud/wifi_service.o.d" -MT "${OBJECTDIR}/mcc_generated_files/cloud/wifi_service.o.d" -MT ${OBJECTDIR}/mcc_generated_files/cloud/wifi_service.o -o ${OBJECTDIR}/mcc_generated_files/cloud/wifi_service.o mcc_generated_files/cloud/wifi_service.c + +${OBJECTDIR}/mcc_generated_files/cloud/mqtt_service.o: mcc_generated_files/cloud/mqtt_service.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/cloud" + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/mqtt_service.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/mqtt_service.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/cloud/mqtt_service.o.d" -MT "${OBJECTDIR}/mcc_generated_files/cloud/mqtt_service.o.d" -MT ${OBJECTDIR}/mcc_generated_files/cloud/mqtt_service.o -o ${OBJECTDIR}/mcc_generated_files/cloud/mqtt_service.o mcc_generated_files/cloud/mqtt_service.c + +${OBJECTDIR}/mcc_generated_files/cloud/aws_cloud_service.o: mcc_generated_files/cloud/aws_cloud_service.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/cloud" + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/aws_cloud_service.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/cloud/aws_cloud_service.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/cloud/aws_cloud_service.o.d" -MT "${OBJECTDIR}/mcc_generated_files/cloud/aws_cloud_service.o.d" -MT ${OBJECTDIR}/mcc_generated_files/cloud/aws_cloud_service.o -o ${OBJECTDIR}/mcc_generated_files/cloud/aws_cloud_service.o mcc_generated_files/cloud/aws_cloud_service.c + +${OBJECTDIR}/mcc_generated_files/credentials_storage/credentials_storage.o: mcc_generated_files/credentials_storage/credentials_storage.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/credentials_storage" + @${RM} ${OBJECTDIR}/mcc_generated_files/credentials_storage/credentials_storage.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/credentials_storage/credentials_storage.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/credentials_storage/credentials_storage.o.d" -MT "${OBJECTDIR}/mcc_generated_files/credentials_storage/credentials_storage.o.d" -MT ${OBJECTDIR}/mcc_generated_files/credentials_storage/credentials_storage.o -o ${OBJECTDIR}/mcc_generated_files/credentials_storage/credentials_storage.o mcc_generated_files/credentials_storage/credentials_storage.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.o: mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.o mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.o: mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.o mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.o: mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.o mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.o: mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.o mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.o: mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.o mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.o: mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.o mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.o: mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.o mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.o: mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.o mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.o: mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.o mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.o: mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.o mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.o: mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.o mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.o: mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.o mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.o: mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.o mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.o: mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.o mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.o: mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.o mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.o: mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.o mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.o: mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.o mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.o: mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.o mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.o: mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.o mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.o: mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.o mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.o: mcc_generated_files/CryptoAuthenticationLibrary/atca_command.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_command.o mcc_generated_files/CryptoAuthenticationLibrary/atca_command.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.o: mcc_generated_files/CryptoAuthenticationLibrary/atca_device.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_device.o mcc_generated_files/CryptoAuthenticationLibrary/atca_device.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.o: mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.o mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.o: mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.o mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.c + +${OBJECTDIR}/mcc_generated_files/drivers/spi_master.o: mcc_generated_files/drivers/spi_master.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/drivers" + @${RM} ${OBJECTDIR}/mcc_generated_files/drivers/spi_master.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/drivers/spi_master.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/drivers/spi_master.o.d" -MT "${OBJECTDIR}/mcc_generated_files/drivers/spi_master.o.d" -MT ${OBJECTDIR}/mcc_generated_files/drivers/spi_master.o -o ${OBJECTDIR}/mcc_generated_files/drivers/spi_master.o mcc_generated_files/drivers/spi_master.c + +${OBJECTDIR}/mcc_generated_files/drivers/timeout.o: mcc_generated_files/drivers/timeout.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/drivers" + @${RM} ${OBJECTDIR}/mcc_generated_files/drivers/timeout.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/drivers/timeout.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/drivers/timeout.o.d" -MT "${OBJECTDIR}/mcc_generated_files/drivers/timeout.o.d" -MT ${OBJECTDIR}/mcc_generated_files/drivers/timeout.o -o ${OBJECTDIR}/mcc_generated_files/drivers/timeout.o mcc_generated_files/drivers/timeout.c + +${OBJECTDIR}/mcc_generated_files/drivers/i2c_simple_master.o: mcc_generated_files/drivers/i2c_simple_master.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/drivers" + @${RM} ${OBJECTDIR}/mcc_generated_files/drivers/i2c_simple_master.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/drivers/i2c_simple_master.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/drivers/i2c_simple_master.o.d" -MT "${OBJECTDIR}/mcc_generated_files/drivers/i2c_simple_master.o.d" -MT ${OBJECTDIR}/mcc_generated_files/drivers/i2c_simple_master.o -o ${OBJECTDIR}/mcc_generated_files/drivers/i2c_simple_master.o mcc_generated_files/drivers/i2c_simple_master.c + +${OBJECTDIR}/mcc_generated_files/drivers/uart.o: mcc_generated_files/drivers/uart.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/drivers" + @${RM} ${OBJECTDIR}/mcc_generated_files/drivers/uart.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/drivers/uart.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/drivers/uart.o.d" -MT "${OBJECTDIR}/mcc_generated_files/drivers/uart.o.d" -MT ${OBJECTDIR}/mcc_generated_files/drivers/uart.o -o ${OBJECTDIR}/mcc_generated_files/drivers/uart.o mcc_generated_files/drivers/uart.c + +${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.o: mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd" + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.o.d" -MT "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.o.d" -MT ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.o -o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.o mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.c + +${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core/mqtt_core.o: mcc_generated_files/mqtt/mqtt_core/mqtt_core.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core" + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core/mqtt_core.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core/mqtt_core.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core/mqtt_core.o.d" -MT "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core/mqtt_core.o.d" -MT ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core/mqtt_core.o -o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_core/mqtt_core.o mcc_generated_files/mqtt/mqtt_core/mqtt_core.c + +${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.o: mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer" + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.o.d" -MT "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.o.d" -MT ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.o -o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.o mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.c + +${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.o: mcc_generated_files/mqtt/mqtt_packetTransfer_interface.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/mqtt" + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.o.d" -MT "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.o.d" -MT ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.o -o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_packetTransfer_interface.o mcc_generated_files/mqtt/mqtt_packetTransfer_interface.c + +${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_winc_adapter.o: mcc_generated_files/mqtt/mqtt_winc_adapter.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/mqtt" + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_winc_adapter.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_winc_adapter.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_winc_adapter.o.d" -MT "${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_winc_adapter.o.d" -MT ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_winc_adapter.o -o ${OBJECTDIR}/mcc_generated_files/mqtt/mqtt_winc_adapter.o mcc_generated_files/mqtt/mqtt_winc_adapter.c + +${OBJECTDIR}/mcc_generated_files/src/pin_manager.o: mcc_generated_files/src/pin_manager.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/src" + @${RM} ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/pin_manager.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/pin_manager.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o -o ${OBJECTDIR}/mcc_generated_files/src/pin_manager.o mcc_generated_files/src/pin_manager.c + +${OBJECTDIR}/mcc_generated_files/src/cpuint.o: mcc_generated_files/src/cpuint.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/src" + @${RM} ${OBJECTDIR}/mcc_generated_files/src/cpuint.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/src/cpuint.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/cpuint.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/cpuint.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/cpuint.o -o ${OBJECTDIR}/mcc_generated_files/src/cpuint.o mcc_generated_files/src/cpuint.c + +${OBJECTDIR}/mcc_generated_files/src/spi0.o: mcc_generated_files/src/spi0.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/src" + @${RM} ${OBJECTDIR}/mcc_generated_files/src/spi0.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/src/spi0.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/spi0.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/spi0.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/spi0.o -o ${OBJECTDIR}/mcc_generated_files/src/spi0.o mcc_generated_files/src/spi0.c + +${OBJECTDIR}/mcc_generated_files/src/rtc.o: mcc_generated_files/src/rtc.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/src" + @${RM} ${OBJECTDIR}/mcc_generated_files/src/rtc.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/src/rtc.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/rtc.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/rtc.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/rtc.o -o ${OBJECTDIR}/mcc_generated_files/src/rtc.o mcc_generated_files/src/rtc.c + +${OBJECTDIR}/mcc_generated_files/src/twi0_master.o: mcc_generated_files/src/twi0_master.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/src" + @${RM} ${OBJECTDIR}/mcc_generated_files/src/twi0_master.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/src/twi0_master.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/twi0_master.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/twi0_master.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/twi0_master.o -o ${OBJECTDIR}/mcc_generated_files/src/twi0_master.o mcc_generated_files/src/twi0_master.c + +${OBJECTDIR}/mcc_generated_files/src/adc0.o: mcc_generated_files/src/adc0.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/src" + @${RM} ${OBJECTDIR}/mcc_generated_files/src/adc0.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/src/adc0.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/adc0.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/adc0.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/adc0.o -o ${OBJECTDIR}/mcc_generated_files/src/adc0.o mcc_generated_files/src/adc0.c + +${OBJECTDIR}/mcc_generated_files/src/usart2.o: mcc_generated_files/src/usart2.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/src" + @${RM} ${OBJECTDIR}/mcc_generated_files/src/usart2.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/src/usart2.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/usart2.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/usart2.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/usart2.o -o ${OBJECTDIR}/mcc_generated_files/src/usart2.o mcc_generated_files/src/usart2.c + +${OBJECTDIR}/mcc_generated_files/winc/driver/winc_spi.o: mcc_generated_files/winc/driver/winc_spi.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/driver" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_spi.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_spi.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_spi.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_spi.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_spi.o -o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_spi.o mcc_generated_files/winc/driver/winc_spi.c + +${OBJECTDIR}/mcc_generated_files/winc/driver/winc_adapter.o: mcc_generated_files/winc/driver/winc_adapter.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/driver" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_adapter.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_adapter.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_adapter.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_adapter.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_adapter.o -o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_adapter.o mcc_generated_files/winc/driver/winc_adapter.c + +${OBJECTDIR}/mcc_generated_files/winc/driver/winc_hif.o: mcc_generated_files/winc/driver/winc_hif.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/driver" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_hif.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_hif.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_hif.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_hif.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_hif.o -o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_hif.o mcc_generated_files/winc/driver/winc_hif.c + +${OBJECTDIR}/mcc_generated_files/winc/driver/winc_asic.o: mcc_generated_files/winc/driver/winc_asic.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/driver" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_asic.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_asic.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_asic.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_asic.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_asic.o -o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_asic.o mcc_generated_files/winc/driver/winc_asic.c + +${OBJECTDIR}/mcc_generated_files/winc/driver/winc_drv.o: mcc_generated_files/winc/driver/winc_drv.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/driver" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_drv.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_drv.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_drv.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/driver/winc_drv.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_drv.o -o ${OBJECTDIR}/mcc_generated_files/winc/driver/winc_drv.o mcc_generated_files/winc/driver/winc_drv.c + +${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ssl.o: mcc_generated_files/winc/m2m/m2m_ssl.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/m2m" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ssl.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ssl.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ssl.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ssl.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ssl.o -o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ssl.o mcc_generated_files/winc/m2m/m2m_ssl.c + +${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_wifi.o: mcc_generated_files/winc/m2m/m2m_wifi.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/m2m" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_wifi.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_wifi.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_wifi.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_wifi.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_wifi.o -o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_wifi.o mcc_generated_files/winc/m2m/m2m_wifi.c + +${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_periph.o: mcc_generated_files/winc/m2m/m2m_periph.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/m2m" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_periph.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_periph.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_periph.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_periph.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_periph.o -o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_periph.o mcc_generated_files/winc/m2m/m2m_periph.c + +${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ota.o: mcc_generated_files/winc/m2m/m2m_ota.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/m2m" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ota.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ota.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ota.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ota.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ota.o -o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_ota.o mcc_generated_files/winc/m2m/m2m_ota.c + +${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_fwinfo.o: mcc_generated_files/winc/m2m/m2m_fwinfo.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/m2m" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_fwinfo.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_fwinfo.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_fwinfo.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_fwinfo.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_fwinfo.o -o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_fwinfo.o mcc_generated_files/winc/m2m/m2m_fwinfo.c + +${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_crypto.o: mcc_generated_files/winc/m2m/m2m_crypto.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/m2m" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_crypto.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_crypto.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_crypto.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_crypto.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_crypto.o -o ${OBJECTDIR}/mcc_generated_files/winc/m2m/m2m_crypto.o mcc_generated_files/winc/m2m/m2m_crypto.c + +${OBJECTDIR}/mcc_generated_files/winc/socket/socket.o: mcc_generated_files/winc/socket/socket.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/socket" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/socket/socket.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/socket/socket.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/socket/socket.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/socket/socket.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/socket/socket.o -o ${OBJECTDIR}/mcc_generated_files/winc/socket/socket.o mcc_generated_files/winc/socket/socket.c + +${OBJECTDIR}/mcc_generated_files/winc/spi_flash/flexible_flash.o: mcc_generated_files/winc/spi_flash/flexible_flash.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/spi_flash" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/flexible_flash.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/flexible_flash.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/spi_flash/flexible_flash.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/spi_flash/flexible_flash.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/flexible_flash.o -o ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/flexible_flash.o mcc_generated_files/winc/spi_flash/flexible_flash.c + +${OBJECTDIR}/mcc_generated_files/winc/spi_flash/spi_flash.o: mcc_generated_files/winc/spi_flash/spi_flash.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/winc/spi_flash" + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/spi_flash.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/spi_flash.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/winc/spi_flash/spi_flash.o.d" -MT "${OBJECTDIR}/mcc_generated_files/winc/spi_flash/spi_flash.o.d" -MT ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/spi_flash.o -o ${OBJECTDIR}/mcc_generated_files/winc/spi_flash/spi_flash.o mcc_generated_files/winc/spi_flash/spi_flash.c + +${OBJECTDIR}/mcc_generated_files/mcc.o: mcc_generated_files/mcc.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/mcc.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/mcc.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/mcc.o.d" -MT "${OBJECTDIR}/mcc_generated_files/mcc.o.d" -MT ${OBJECTDIR}/mcc_generated_files/mcc.o -o ${OBJECTDIR}/mcc_generated_files/mcc.o mcc_generated_files/mcc.c + +${OBJECTDIR}/mcc_generated_files/delay.o: mcc_generated_files/delay.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/delay.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/delay.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/delay.o.d" -MT "${OBJECTDIR}/mcc_generated_files/delay.o.d" -MT ${OBJECTDIR}/mcc_generated_files/delay.o -o ${OBJECTDIR}/mcc_generated_files/delay.o mcc_generated_files/delay.c + +${OBJECTDIR}/mcc_generated_files/device_config.o: mcc_generated_files/device_config.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/device_config.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/device_config.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/device_config.o.d" -MT "${OBJECTDIR}/mcc_generated_files/device_config.o.d" -MT ${OBJECTDIR}/mcc_generated_files/device_config.o -o ${OBJECTDIR}/mcc_generated_files/device_config.o mcc_generated_files/device_config.c + +${OBJECTDIR}/mcc_generated_files/application_manager.o: mcc_generated_files/application_manager.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/application_manager.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/application_manager.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/application_manager.o.d" -MT "${OBJECTDIR}/mcc_generated_files/application_manager.o.d" -MT ${OBJECTDIR}/mcc_generated_files/application_manager.o -o ${OBJECTDIR}/mcc_generated_files/application_manager.o mcc_generated_files/application_manager.c + +${OBJECTDIR}/mcc_generated_files/debug_print.o: mcc_generated_files/debug_print.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/debug_print.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/debug_print.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/debug_print.o.d" -MT "${OBJECTDIR}/mcc_generated_files/debug_print.o.d" -MT ${OBJECTDIR}/mcc_generated_files/debug_print.o -o ${OBJECTDIR}/mcc_generated_files/debug_print.o mcc_generated_files/debug_print.c + +${OBJECTDIR}/mcc_generated_files/led.o: mcc_generated_files/led.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/led.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/led.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/led.o.d" -MT "${OBJECTDIR}/mcc_generated_files/led.o.d" -MT ${OBJECTDIR}/mcc_generated_files/led.o -o ${OBJECTDIR}/mcc_generated_files/led.o mcc_generated_files/led.c + +${OBJECTDIR}/mcc_generated_files/sensors_handling.o: mcc_generated_files/sensors_handling.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/sensors_handling.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/sensors_handling.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/sensors_handling.o.d" -MT "${OBJECTDIR}/mcc_generated_files/sensors_handling.o.d" -MT ${OBJECTDIR}/mcc_generated_files/sensors_handling.o -o ${OBJECTDIR}/mcc_generated_files/sensors_handling.o mcc_generated_files/sensors_handling.c + +${OBJECTDIR}/mcc_generated_files/time_service.o: mcc_generated_files/time_service.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/time_service.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/time_service.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/time_service.o.d" -MT "${OBJECTDIR}/mcc_generated_files/time_service.o.d" -MT ${OBJECTDIR}/mcc_generated_files/time_service.o -o ${OBJECTDIR}/mcc_generated_files/time_service.o mcc_generated_files/time_service.c + +${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.o: mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary" + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.o.d" -MT "${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.o.d" -MT ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.o -o ${OBJECTDIR}/mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.o mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.c + +${OBJECTDIR}/main.o: main.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}" + @${RM} ${OBJECTDIR}/main.o.d + @${RM} ${OBJECTDIR}/main.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -x c -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) $(COMPARISON_BUILD) -gdwarf-3 -Wno-pragmas -MD -MP -MF "${OBJECTDIR}/main.o.d" -MT "${OBJECTDIR}/main.o.d" -MT ${OBJECTDIR}/main.o -o ${OBJECTDIR}/main.o main.c + +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: assemble +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: assembleWithPreprocess +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +${OBJECTDIR}/mcc_generated_files/src/protected_io.o: mcc_generated_files/src/protected_io.S nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/src" + @${RM} ${OBJECTDIR}/mcc_generated_files/src/protected_io.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/src/protected_io.o + ${MP_CC} -c $(MP_EXTRA_AS_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -D__DEBUG=1 -g -DDEBUG -gdwarf-2 -x assembler-with-cpp -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) -Wno-pragmas -gdwarf-3 -Wa,--defsym=__MPLAB_BUILD=1,--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1 -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/protected_io.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/protected_io.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/protected_io.o -o ${OBJECTDIR}/mcc_generated_files/src/protected_io.o mcc_generated_files/src/protected_io.S + +else +${OBJECTDIR}/mcc_generated_files/src/protected_io.o: mcc_generated_files/src/protected_io.S nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files/src" + @${RM} ${OBJECTDIR}/mcc_generated_files/src/protected_io.o.d + @${RM} ${OBJECTDIR}/mcc_generated_files/src/protected_io.o + ${MP_CC} -c $(MP_EXTRA_AS_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -x assembler-with-cpp -D__$(MP_PROCESSOR_OPTION)__ -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -DXPRJ_AWS_IOT=$(CND_CONF) -Wno-pragmas -gdwarf-3 -Wa,--defsym=__MPLAB_BUILD=1 -MD -MP -MF "${OBJECTDIR}/mcc_generated_files/src/protected_io.o.d" -MT "${OBJECTDIR}/mcc_generated_files/src/protected_io.o.d" -MT ${OBJECTDIR}/mcc_generated_files/src/protected_io.o -o ${OBJECTDIR}/mcc_generated_files/src/protected_io.o mcc_generated_files/src/protected_io.S + +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: link +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +dist/${CND_CONF}/${IMAGE_TYPE}/AVRIoT.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} + ${MP_CC} $(MP_EXTRA_LD_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -Wl,-Map=dist/${CND_CONF}/${IMAGE_TYPE}/AVRIoT.X.${IMAGE_TYPE}.map -D__DEBUG=1 -DXPRJ_AWS_IOT=$(CND_CONF) -Wl,--defsym=__MPLAB_BUILD=1 -mdfp=${DFP_DIR} -gdwarf-2 -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -Wno-pragmas -gdwarf-3 $(COMPARISON_BUILD) -Wl,--memorysummary,dist/${CND_CONF}/${IMAGE_TYPE}/memoryfile.xml -o dist/${CND_CONF}/${IMAGE_TYPE}/AVRIoT.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} -o dist/${CND_CONF}/${IMAGE_TYPE}/AVRIoT.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1 + @${RM} dist/${CND_CONF}/${IMAGE_TYPE}/AVRIoT.X.${IMAGE_TYPE}.hex + +else +dist/${CND_CONF}/${IMAGE_TYPE}/AVRIoT.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} + ${MP_CC} $(MP_EXTRA_LD_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -Wl,-Map=dist/${CND_CONF}/${IMAGE_TYPE}/AVRIoT.X.${IMAGE_TYPE}.map -DXPRJ_AWS_IOT=$(CND_CONF) -Wl,--defsym=__MPLAB_BUILD=1 -mdfp=${DFP_DIR} -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -I"mcc_generated_files/mqtt" -I"mcc_generated_files/winc" -I"mcc_generated_files/drivers" -I"mcc_generated_files/CryptoAuthenticationLibrary" -I"mcc_generated_files" -Wall -Wno-pragmas -gdwarf-3 $(COMPARISON_BUILD) -Wl,--memorysummary,dist/${CND_CONF}/${IMAGE_TYPE}/memoryfile.xml -o dist/${CND_CONF}/${IMAGE_TYPE}/AVRIoT.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} -o dist/${CND_CONF}/${IMAGE_TYPE}/AVRIoT.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} -Wl,--start-group -Wl,-lm -Wl,--end-group + ${MP_CC_DIR}/avr-objcopy -O ihex "dist/${CND_CONF}/${IMAGE_TYPE}/AVRIoT.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}" "dist/${CND_CONF}/${IMAGE_TYPE}/AVRIoT.X.${IMAGE_TYPE}.hex" +endif + + +# Subprojects +.build-subprojects: + + +# Subprojects +.clean-subprojects: + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r build/AWS_IOT + ${RM} -r dist/AWS_IOT diff --git a/AVRIoT.X/nbproject/Makefile-genesis.properties b/AVRIoT.X/nbproject/Makefile-genesis.properties new file mode 100644 index 0000000..a935be1 --- /dev/null +++ b/AVRIoT.X/nbproject/Makefile-genesis.properties @@ -0,0 +1,10 @@ +# +#Wed Mar 04 19:24:00 UTC 2020 +AWS_IOT.Pack.dfplocation=/opt/microchip/mplabx/v5.30/packs/Microchip/ATmega_DFP/2.0.12 +AWS_IOT.languagetoolchain.dir=/opt/microchip/xc8/v2.10/bin +AWS_IOT.com-microchip-mplab-nbide-toolchainXC8-XC8LanguageToolchain.md5=f87389d82b4b299d292110931953ebdc +configurations-xml=876dc99f951ba1c6a43262976fad320e +com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=7cd2eead2ea6964989cbf02efe721a76 +host.platform=linux +conf.ids=AWS_IOT +AWS_IOT.languagetoolchain.version=2.10 diff --git a/AVRIoT.X/nbproject/Makefile-impl.mk b/AVRIoT.X/nbproject/Makefile-impl.mk new file mode 100644 index 0000000..48056d4 --- /dev/null +++ b/AVRIoT.X/nbproject/Makefile-impl.mk @@ -0,0 +1,69 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a pre- and a post- target defined where you can add customization code. +# +# This makefile implements macros and targets common to all configurations. +# +# NOCDDL + + +# Building and Cleaning subprojects are done by default, but can be controlled with the SUB +# macro. If SUB=no, subprojects will not be built or cleaned. The following macro +# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf +# and .clean-reqprojects-conf unless SUB has the value 'no' +SUB_no=NO +SUBPROJECTS=${SUB_${SUB}} +BUILD_SUBPROJECTS_=.build-subprojects +BUILD_SUBPROJECTS_NO= +BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} +CLEAN_SUBPROJECTS_=.clean-subprojects +CLEAN_SUBPROJECTS_NO= +CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} + + +# Project Name +PROJECTNAME=AVRIoT.X + +# Active Configuration +DEFAULTCONF=AWS_IOT +CONF=${DEFAULTCONF} + +# All Configurations +ALLCONFS=AWS_IOT + + +# build +.build-impl: .build-pre + ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-conf + + +# clean +.clean-impl: .clean-pre + ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .clean-conf + +# clobber +.clobber-impl: .clobber-pre .depcheck-impl + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=AWS_IOT clean + + + +# all +.all-impl: .all-pre .depcheck-impl + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=AWS_IOT build + + + +# dependency checking support +.depcheck-impl: +# @echo "# This code depends on make tool being used" >.dep.inc +# @if [ -n "${MAKE_VERSION}" ]; then \ +# echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \ +# echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ +# echo "include \$${DEPFILES}" >>.dep.inc; \ +# echo "endif" >>.dep.inc; \ +# else \ +# echo ".KEEP_STATE:" >>.dep.inc; \ +# echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ +# fi diff --git a/AVRIoT.X/nbproject/Makefile-local-AWS_IOT.mk b/AVRIoT.X/nbproject/Makefile-local-AWS_IOT.mk new file mode 100644 index 0000000..658896f --- /dev/null +++ b/AVRIoT.X/nbproject/Makefile-local-AWS_IOT.mk @@ -0,0 +1,37 @@ +# +# Generated Makefile - do not edit! +# +# +# This file contains information about the location of compilers and other tools. +# If you commmit this file into your revision control server, you will be able to +# to checkout the project and build it from the command line with make. However, +# if more than one person works on the same project, then this file might show +# conflicts since different users are bound to have compilers in different places. +# In that case you might choose to not commit this file and let MPLAB X recreate this file +# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at +# least once so the file gets created and the project can be built. Finally, you can also +# avoid using this file at all if you are only building from the command line with make. +# You can invoke make with the values of the macros: +# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ... +# +PATH_TO_IDE_BIN=/opt/microchip/mplabx/v5.30/mplab_platform/platform/../mplab_ide/modules/../../bin/ +# Adding MPLAB X bin directory to path. +PATH:=/opt/microchip/mplabx/v5.30/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH) +# Path to java used to run MPLAB X when this makefile was created +MP_JAVA_PATH="/opt/microchip/mplabx/v5.30/sys/java/jre1.8.0_181/bin/" +OS_CURRENT="$(shell uname -s)" +MP_CC="/opt/microchip/xc8/v2.10/bin/xc8-cc" +# MP_CPPC is not defined +# MP_BC is not defined +MP_AS="/opt/microchip/xc8/v2.10/bin/xc8-cc" +MP_LD="/opt/microchip/xc8/v2.10/bin/xc8-cc" +MP_AR="/opt/microchip/xc8/v2.10/bin/xc8-ar" +DEP_GEN=${MP_JAVA_PATH}java -jar "/opt/microchip/mplabx/v5.30/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar" +MP_CC_DIR="/opt/microchip/xc8/v2.10/bin" +# MP_CPPC_DIR is not defined +# MP_BC_DIR is not defined +MP_AS_DIR="/opt/microchip/xc8/v2.10/bin" +MP_LD_DIR="/opt/microchip/xc8/v2.10/bin" +MP_AR_DIR="/opt/microchip/xc8/v2.10/bin" +# MP_BC_DIR is not defined +DFP_DIR="/opt/microchip/mplabx/v5.30/packs/Microchip/ATmega_DFP/2.0.12" diff --git a/AVRIoT.X/nbproject/Makefile-variables.mk b/AVRIoT.X/nbproject/Makefile-variables.mk new file mode 100644 index 0000000..c02af33 --- /dev/null +++ b/AVRIoT.X/nbproject/Makefile-variables.mk @@ -0,0 +1,13 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +CND_BASEDIR=`pwd` +# AWS_IOT configuration +CND_ARTIFACT_DIR_AWS_IOT=dist/AWS_IOT/production +CND_ARTIFACT_NAME_AWS_IOT=AVRIoT.X.production.hex +CND_ARTIFACT_PATH_AWS_IOT=dist/AWS_IOT/production/AVRIoT.X.production.hex +CND_PACKAGE_DIR_AWS_IOT=${CND_DISTDIR}/AWS_IOT/package +CND_PACKAGE_NAME_AWS_IOT=avriot.x.tar +CND_PACKAGE_PATH_AWS_IOT=${CND_DISTDIR}/AWS_IOT/package/avriot.x.tar diff --git a/AVRIoT.X/nbproject/Package-AWS_IOT.bash b/AVRIoT.X/nbproject/Package-AWS_IOT.bash new file mode 100644 index 0000000..6570cc4 --- /dev/null +++ b/AVRIoT.X/nbproject/Package-AWS_IOT.bash @@ -0,0 +1,73 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_CONF=AWS_IOT +CND_DISTDIR=dist +TMPDIR=build/${CND_CONF}/${IMAGE_TYPE}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=dist/${CND_CONF}/${IMAGE_TYPE}/AVRIoT.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +OUTPUT_BASENAME=AVRIoT.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +PACKAGE_TOP_DIR=avriot.x/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/package +rm -rf ${TMPDIR} +mkdir -p ${TMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory ${TMPDIR}/avriot.x/bin +copyFileToTmpDir "${OUTPUT_PATH}" "${TMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/package/avriot.x.tar +cd ${TMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/package/avriot.x.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${TMPDIR} diff --git a/AVRIoT.X/nbproject/configurations.xml b/AVRIoT.X/nbproject/configurations.xml new file mode 100644 index 0000000..ac958da --- /dev/null +++ b/AVRIoT.X/nbproject/configurations.xml @@ -0,0 +1,541 @@ + + + + + + + mcc_generated_files/cli/cli.h + + + + mcc_generated_files/cloud/crypto_client/crypto_client.h + + mcc_generated_files/cloud/cloud_service.h + mcc_generated_files/cloud/wifi_service.h + mcc_generated_files/cloud/mqtt_service.h + mcc_generated_files/cloud/cloud_interface.h + + + mcc_generated_files/config/clock_config.h + mcc_generated_files/config/conf_winc.h + mcc_generated_files/config/IoT_Sensor_Node_config.h + mcc_generated_files/config/cloud_config.h + mcc_generated_files/config/mqtt_config.h + + + mcc_generated_files/credentials_storage/credentials_storage.h + + + + mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert.h + mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.h + mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.h + mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.h + mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.h + mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.h + mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.h + mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.h + + + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.h + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.h + + + + mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.h + mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.h + + mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw.h + mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.h + mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.h + mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.h + mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.h + + + mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.h + mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.h + mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_start_config.h + mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_start_iface.h + + + mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.h + + + mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.h + + mcc_generated_files/CryptoAuthenticationLibrary/atca_bool.h + mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.h + mcc_generated_files/CryptoAuthenticationLibrary/atca_command.h + mcc_generated_files/CryptoAuthenticationLibrary/atca_compiler.h + mcc_generated_files/CryptoAuthenticationLibrary/atca_device.h + mcc_generated_files/CryptoAuthenticationLibrary/atca_devtypes.h + mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.h + mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.h + mcc_generated_files/CryptoAuthenticationLibrary/atca_status.h + + + mcc_generated_files/drivers/spi_master.h + mcc_generated_files/drivers/timeout.h + mcc_generated_files/drivers/i2c_simple_master.h + mcc_generated_files/drivers/uart.h + + + mcc_generated_files/include/cpuint.h + mcc_generated_files/include/port.h + mcc_generated_files/include/rtc.h + mcc_generated_files/include/pin_manager.h + mcc_generated_files/include/rstctrl.h + mcc_generated_files/include/spi0.h + mcc_generated_files/include/protected_io.h + mcc_generated_files/include/ccp.h + mcc_generated_files/include/twi0_master.h + mcc_generated_files/include/usart2.h + mcc_generated_files/include/adc0.h + + + + mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.h + + + mcc_generated_files/mqtt/mqtt_core/mqtt_core.h + + + mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.h + + mcc_generated_files/mqtt/mqtt_packetTransfer_interface.h + mcc_generated_files/mqtt/mqtt_winc_adapter.h + + + + mcc_generated_files/utils/assembler/iar.h + mcc_generated_files/utils/assembler/gas.h + + mcc_generated_files/utils/compiler.h + mcc_generated_files/utils/utils.h + mcc_generated_files/utils/interrupt_avr8.h + mcc_generated_files/utils/utils_assert.h + mcc_generated_files/utils/assembler.h + mcc_generated_files/utils/atomic.h + + + + mcc_generated_files/winc/common/winc_defines.h + mcc_generated_files/winc/common/winc_registers.h + mcc_generated_files/winc/common/ecc_types.h + mcc_generated_files/winc/common/winc_debug.h + mcc_generated_files/winc/common/winc_1500_3A0_registers.h + + + mcc_generated_files/winc/driver/winc_spi.h + mcc_generated_files/winc/driver/winc_adapter.h + mcc_generated_files/winc/driver/winc_drv.h + mcc_generated_files/winc/driver/winc_asic.h + mcc_generated_files/winc/driver/winc_hif.h + + + mcc_generated_files/winc/include/conf_winc_defaults.h + mcc_generated_files/winc/include/winc_legacy.h + mcc_generated_files/winc/include/winc.h + + + mcc_generated_files/winc/m2m/m2m_wifi.h + mcc_generated_files/winc/m2m/m2m_ssl.h + mcc_generated_files/winc/m2m/m2m_periph.h + mcc_generated_files/winc/m2m/m2m_ota.h + mcc_generated_files/winc/m2m/m2m_socket_host_if.h + mcc_generated_files/winc/m2m/m2m_fwinfo.h + mcc_generated_files/winc/m2m/m2m_crypto.h + mcc_generated_files/winc/m2m/m2m_types.h + + + mcc_generated_files/winc/socket/socket.h + + + mcc_generated_files/winc/spi_flash/flexible_flash.h + mcc_generated_files/winc/spi_flash/spi_flash_map.h + mcc_generated_files/winc/spi_flash/spi_flash.h + + + mcc_generated_files/delay.h + mcc_generated_files/mcc.h + mcc_generated_files/application_manager.h + mcc_generated_files/debug_print.h + mcc_generated_files/led.h + mcc_generated_files/sensors_handling.h + mcc_generated_files/time_service.h + mcc_generated_files/banner.h + mcc_generated_files/CryptoAuthenticationLibrary/cryptoauthlib.h + mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.h + mcc_generated_files/CryptoAuthenticationLibrary/cryptoauthlib_config.h + + + + + + + + + mcc_generated_files/docs/mqtt_documentation/Microchip MQTT Client Library.docx + mcc_generated_files/docs/mqtt_documentation/MQTT Readme.md + + + + + + + + mcc_generated_files/cli/cli.c + + + + mcc_generated_files/cloud/crypto_client/crypto_client.c + + mcc_generated_files/cloud/cloud_service.c + mcc_generated_files/cloud/wifi_service.c + mcc_generated_files/cloud/mqtt_service.c + mcc_generated_files/cloud/aws_cloud_service.c + + + mcc_generated_files/credentials_storage/credentials_storage.c + + + + mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_client.c + mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_date.c + mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_def.c + mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_der.c + mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_hw.c + mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_host_sw.c + mcc_generated_files/CryptoAuthenticationLibrary/atcacert/atcacert_pem.c + + + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_checkmac.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_counter.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_derivekey.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_ecdh.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_gendig.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_genkey.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_hmac.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_info.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_kdf.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_lock.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_mac.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_nonce.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_privwrite.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_random.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_read.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_secureboot.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_selftest.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sha.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_sign.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_updateextra.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_verify.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_basic_write.c + mcc_generated_files/CryptoAuthenticationLibrary/basic/atca_helpers.c + + + + mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha1_routines.c + mcc_generated_files/CryptoAuthenticationLibrary/crypto/hashes/sha2_routines.c + + mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_ecdsa.c + mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_rand.c + mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha1.c + mcc_generated_files/CryptoAuthenticationLibrary/crypto/atca_crypto_sw_sha2.c + + + mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_hal.c + mcc_generated_files/CryptoAuthenticationLibrary/hal/atca_i2c_hal.c + mcc_generated_files/CryptoAuthenticationLibrary/hal/hal_i2c_timer.c + + + mcc_generated_files/CryptoAuthenticationLibrary/host/atca_host.c + + + mcc_generated_files/CryptoAuthenticationLibrary/jwt/atca_jwt.c + + mcc_generated_files/CryptoAuthenticationLibrary/atca_cfgs.c + mcc_generated_files/CryptoAuthenticationLibrary/atca_command.c + mcc_generated_files/CryptoAuthenticationLibrary/atca_device.c + mcc_generated_files/CryptoAuthenticationLibrary/atca_execution.c + mcc_generated_files/CryptoAuthenticationLibrary/atca_iface.c + + + mcc_generated_files/drivers/spi_master.c + mcc_generated_files/drivers/timeout.c + mcc_generated_files/drivers/i2c_simple_master.c + mcc_generated_files/drivers/uart.c + + + + mcc_generated_files/mqtt/mqtt_comm_bsd/mqtt_comm_layer.c + + + mcc_generated_files/mqtt/mqtt_core/mqtt_core.c + + + mcc_generated_files/mqtt/mqtt_exchange_buffer/mqtt_exchange_buffer.c + + mcc_generated_files/mqtt/mqtt_packetTransfer_interface.c + mcc_generated_files/mqtt/mqtt_winc_adapter.c + + + mcc_generated_files/src/pin_manager.c + mcc_generated_files/src/cpuint.c + mcc_generated_files/src/spi0.c + mcc_generated_files/src/protected_io.S + mcc_generated_files/src/rtc.c + mcc_generated_files/src/twi0_master.c + mcc_generated_files/src/adc0.c + mcc_generated_files/src/usart2.c + + + + mcc_generated_files/winc/driver/winc_spi.c + mcc_generated_files/winc/driver/winc_adapter.c + mcc_generated_files/winc/driver/winc_hif.c + mcc_generated_files/winc/driver/winc_asic.c + mcc_generated_files/winc/driver/winc_drv.c + + + mcc_generated_files/winc/m2m/m2m_ssl.c + mcc_generated_files/winc/m2m/m2m_wifi.c + mcc_generated_files/winc/m2m/m2m_periph.c + mcc_generated_files/winc/m2m/m2m_ota.c + mcc_generated_files/winc/m2m/m2m_fwinfo.c + mcc_generated_files/winc/m2m/m2m_crypto.c + + + mcc_generated_files/winc/socket/socket.c + + + mcc_generated_files/winc/spi_flash/flexible_flash.c + mcc_generated_files/winc/spi_flash/spi_flash.c + + + mcc_generated_files/mcc.c + mcc_generated_files/delay.c + mcc_generated_files/device_config.c + mcc_generated_files/application_manager.c + mcc_generated_files/debug_print.c + mcc_generated_files/led.c + mcc_generated_files/sensors_handling.c + mcc_generated_files/time_service.c + mcc_generated_files/CryptoAuthenticationLibrary/CryptoAuth_init.c + + main.c + + + Makefile + MyConfig.mc3 + + + + mcc_generated_files + + Makefile + + + + localhost + ATmega4808 + + + nEdbgTool + XC8 + 2.10 + 3 + + + + + + + + + + + + + false + false + + + + + + + false + + false + + false + false + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AVRIoT.X/nbproject/private/configurations.xml b/AVRIoT.X/nbproject/private/configurations.xml new file mode 100644 index 0000000..2e7bf6b --- /dev/null +++ b/AVRIoT.X/nbproject/private/configurations.xml @@ -0,0 +1,25 @@ + + + Makefile + 0 + + + + + + place holder 1 + place holder 2 + + + + + true + 0 + 0 + 0 + + + + + + diff --git a/AVRIoT.X/nbproject/project.xml b/AVRIoT.X/nbproject/project.xml new file mode 100644 index 0000000..44b912d --- /dev/null +++ b/AVRIoT.X/nbproject/project.xml @@ -0,0 +1,29 @@ + + + com.microchip.mplab.nbide.embedded.makeproject + + + AVRIoT + 37cf9aed-daea-4bca-9362-5023c4210f1a + 0 + c + + h + + ISO-8859-1 + + + mcc_generated_files + + + + AWS_IOT + 2 + + + + false + + + + diff --git a/README.md b/README.md index e69de29..1a0be70 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,349 @@ +# Getting Started Guide: Microchip AVR-IoT WA (Wireless for Amazon Web Services) Application + +Devices: \| **ATmega4808(MCU)** \| **WINC1510(Wi-Fi®)** \| **ECC608(CryptoAuthLib)** \| + +--- + +![Board](images/boardAVR.png) + +--- + +## Requirements + ++ **MPLAB® X Integrated Development Environment (IDE) v5.25 or later**: +MPLAB® X IDE is a computer software program based on the open source NetBeans IDE from Oracle. It is used to develop applications for Microchip microcontrollers and digital signal controllers. It runs on Windows®, Mac OS® and Linux®. +For the latest version, please refer to: [MPLAB-X](https://www.microchip.com/mplab/mplab-x-ide) + ++ **MPLAB® XC8 Compiler v2.05 or later**: +MPLAB® XC compilers support all of Microchip’s PIC, AVR and dsPIC devices where the code is written in the C programming language. XC8 is the recommended compiler for 8-bit PIC MCUs and is also supported by some AVR devices. In this lab, as well as with the succeeding labs, you will be using MPLAB® XC8 for an AVR MCU. +For the latest version, please refer to: [XC-Compiler](https://www.microchip.com/mplab/compilers) + ++ **Compiler Optimization** +Compilation of source code can be achieved using supporting MPLAB® XC compiler: **XC8** or **AVR 8-bit GNU Toolchain**. + * XC8 Compiler v2.05 or later: Supported by optimization **level 1, 2 (free)** and **level s (pro)** + * AVR GNU Toolchain v3.62: Supported by optimization **level 1, 2 (free)** and **level s (pro)**. + +MPLAB® X IDE XC8 support all 8-bit PIC® and AVR® microcontrollers (MCUs). This is a internally developed compiler which is specially designed to maximize features aviable to the PIC® and AVR® microcontrollers (MCUs). + +The Atmel AVR 8-bit GNU Toolchain (3.6.1.1750) supports all AVR 8-bit devices. The AVR 8-bit Toolchain is based on the free and open-source GCC compiler. The toolchain includes compiler, assembler, linker and binutils (GCC and Binutils), Standard C library (AVR-libc) and GNU Debugger (GDB). + ++ **AVR IoT Development Board**: +The AVR-IoT development board combines a powerful 8-bit ATmega4808 MCU, an ATECC608A CryptoAuthentication™ secure element IC and the fully certified ATWINC1510 Wi-Fi® network controller - which provides the most simple and effective way to connect your embedded application to a cloud platform. The board also includes an on-board debugger and requires no external hardware to program and debug the MCU. + +--- + +## Application Scope +The AVR-IoT development board has been created with the intention of demostrating a one source solution for evaluation of existing cloud provider solutions. +This example end-device leverages the catalog of devices, and libraries provided through Microchip's extensive product line to showcase a basic Internet of Things product connection. Data exchange between server and in field device is implemented using on board sensors for temperature, and light value observations. Behavior actions are demonstrated through visual indication of the 'Data' LED as controlled through the Web based APIs. + +General Out-Of-Box operation is as described below: +1) Use the On-Board WINC1510 WiFi module to establish local WiFi connection to Router/Switch or Network source. +2) The WINC1510 through use of the ECC608 Cyrpo establishes a Secure (TLS) Socket Connection with select Cloud Provider using a TCP connection. The Blue 'WiFi' LED is used to indicate this status. +3) Using the Microchip Software Library for the Message-Queuing-Telemetry-Transport (MQTT) standard format; data is exchanged between client (end-device) and broker (cloud). The Green 'Connect' LED is used to indicate this status. +4) Sensor Data is sent as Telemetry Data between device and broker at a near periodic rate of (1) Second. The Yellow 'Data' LED is used to indicate this status. +5) Capture of Data sent from Broker to Device can be observed through a Serial terminal when USB-Micro is connected to development board. +6) Behavior variation can be observed on the 'Data' LED when triggered through the web based API, and sent through the broker to end device using MQTT protocol transported through the TCP connection securely established using the ECC608 Crypto device. +7) The Push button has no effect outside of variation of start-up operation; refer to User Guide for additional information regarding Soft-AP operation. + +* The Red 'Data' LED remaining on may indicate a hardware fault issue with the development board. + +--- + +## Application Description + +### Cloud Platforms ++ AWS + 1. Publish payload for sensor data (telemetry) + * topic: + ``thingName/sensors `` + * payload: + ```json + { + "Light": lightValue, + "Temp": temperatureValue + } + ``` + 2. Device publishes payload to update the Device Shadow + * topic: + + `$aws/things/thingName/shadow/update` + + * payload: + ```json + { + "state": + { + "reported": + { + "toggle": updatedToggleValue + } + } + } + ``` + 3. User Interface publishes payload to Device Shadow + * topic: + + `$aws/things/thingName/shadow/update` + + * payload: + ```json + { + "state": + { + "desired": + { + "toggle": toBeUpdatedToggleValue + } + } + } + ``` + 4. Device subscribes to delta to receive actionable changes + * topic: + + `$aws/things/thingName/shadow/update/delta` + + * payload: + + ```json + { + "state": + { + "Light": lightValue, + } + } + ``` + +#### The AVR IoT development board publishes data from the on-board light and temperature sensor every second to the cloud. +#### The data received over the subscribed topic is displayed on a serial terminal. + +### Sending MQTT publish packets ++ The C code for sending MQTT publish packets is available in AVRIoT.X/mcc_generated_files/application_manager.c file. ++ The API ``static void sendToCloud(void)`` is responsible for publishing data at an interval of 1 second. + +### Sending MQTT subscribe packets ++ The C code for sending MQTT subscribe packets is available in AVRIoT.X/mcc_generated_files/application_manager.c file. ++ The API ``static void subscribeToCloud(void)`` is responsible for sending MQTT subscribe packets to the cloud after MQTT connection is established. + +### Processing Packets received over subscribed topic ++ The C code for processing MQTT publish packets received over the subscribed topic is available in AVRIoT.X/mcc_generated_files/application_manager.c file. ++ The ``static void receivedFromCloud(uint8_t *topic, uint8_t *payload)`` function is used for processing packets published over the subscribed topic. + +--- + +## Secure Provisioning & Transport Layer Security + +1. The AVR-IoT board under the Wireless for Amazon Web Services (WA) variation is shipped pre-provisioned for coordination with the AWS Cloud system. +2. Security is achieved by using the built-in Transport Layer Security (TLS) 'stack' configured within the WINC Wi-Fi Module. +3. A Pre-Manufacturing process has configured the appropriate Slot locations on the ATECC608A security device. +4. All required certificates used for signing and authentication have been written to, and 'locked' into allocated slots. + + This process is achieved through: [TrustFlex](https://www.microchip.com/design-centers/security-ics/trust-platform/trustflex/trustflex-aws-iot-authentication) + + Additional options are also supported, such as: [Trust&Go](https://www.microchip.com/design-centers/security-ics/trust-platform/trust-go) + + Fully scope of support for Secure Aspects of development can be found here: [Trust Platform](https://www.microchip.com/design-centers/security-ics/trust-platform) +5. This process has been performed to allow for an Out Of Box (OOB) operation of the AVR-IoT development board along with supporting web page. +6. Shadow Topic are a key application feature being supported through the AWS platform. Further reference can be found here: + + [Shadow MQTT Topics](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html) +7. For AVR-IoT development not provisioned for the AWS platform; refer to the below repo location: + + **gitHub Provisioning Repo coming in future. Currently refer to:** + + [AVR-IoT AWS Provisioning](https://www.microchip.com/wwwAppNotes/AppNotes.aspx?appnote=en611265) + +--- + +## Out Of Box (OOB) Operation + 0. There are three possible variations within application behavior possible by holding push buttons on startup + + Default behavior: No Button Pressed + + Soft AP: SW0 is Held on startup (see description farther in document) + + Default behavior Restore DEFAULT Credentials: SW0 & SW1 Held on startup. This state is reflected by **BLINKING GREEN LED** until a Wi-Fi connection is established. + + After a successful connection; last VALID CREDIENTIALS are maintained in the WINC for next power cycle connection. + + 1. Connect board to PC using USB-micro cable. + + + The LEDs will **Cycle** upon startup: **BLUE-->GREEN-->YELLOW-->RED**, short delay, **BLUE-->GREEN-->YELLOW-->RED**. + + 2. The **BLUE LED** will begin to blink, this indicates the board is attempting to join the local **ACCESS POINT**. + + ![Connecting](images/awsLeverage.png) + + 3. Update the Wi-Fi Credentials; upon connecting the blinking will stop, and the **LED** will become **STATIC**. Below are the easiest methods to update credentials. + + The board will appear on the PC enumerated as a mass storage device under the name **CURIOSITY**. Credentials can be downloaded as the file **WIFI.CFG** using the **CLICK-ME.HTM** file stored on the **CURIOSITY** device. + + ![URL Hosted Credentials](images/wifiCredentialsWeb.png) + + + This will launch the URL: https://avr-iot.com/device/{DeviceId} The file produced with entered credentials is produced through the WINC module, and no information is shared through the internet. Drag and Drop, or Copy and Paste the **WIFI.CFG** file onto the **CURIOSITY** device to load new credentials onto the IoT demonstration board. + + ![WiFi Config](images/wifiNotepad.png) + + + Use a **Serial Terminal** to update the WiFi Credentials loaded onto the WINC module. Use the Command Line Interface (CLI) supported command ``wifi host_name,pass_code,auth_type`` | host_name/pass_code are entered strings, auth_type is int value: (0: open, 1: WEP, 2: WPA). + + ![Serial Credentials](images/serialWiFi.png) + + 4. After becoming connected to the ACCESS POINT, the GREEN LED will begin to blink, this indicates the board is attempting to establish a TCP/IP and MQTT connection with the cloud providing service. The GREEN LED will stop blinking and become STATIC when the TCP and MQTT connection is established. + + Using the in module TCP/IP stack pre-configured with provisioned credentials; the device establishes a **MQTT** connection with the IoT Broker provider (AWS). + ![Status Display](images/awsConnection.png) + + 5. After successfully establishing MQTT connection, the **YELLOW LED** will blink, indicating data exchanged between the End-Device (AVR-IoT), and BROKER (AWS). + + ![Telemetry Data](images/PublishDataToAWS.png) + + 6. Connect to the www.avr-iot.com, or www.pic-iot.com, device specific website to view publish/subscribe data. This page can be found via launching the **CLICK-ME.HTM** file on the **CURIOSITY** device. + + There will be (2) scrolling graphs visible. (1) shows temperature sensor, (1) shows the light sensor value. + + Additional graphs can be produced altered through the published topic message. + + ![Telemetry Data](images/awsSensors.png) + + 7. **Control Your Device** using the (3) rows beneath the '**Control Your Device**' section used to publish subscription data to end-devices through the broker. + + **Only the use of Toggle is supported natively** + + **Expanding features would require custom written Firmware implementation** + + These example rows demonstrate options for: Toggle (boolean), Text Field (String), Sliders (integer) + + ![Subscribe Data](images/Actuators.png) + + 8. When connection is established with the Broker, the publish message topic will be printed to a serial terminal through the CDC-USB bridge. + + 9600 is expected Baud Rate. + + When a topic subscription is received, the payload is printed in JSON format to the terminal. + + Topic subscription message are sent when the 'Send to device' push button on the webpage is pressed. + + ![Serial Subscribe Message](images/DeviceStartUpConsole.png) + + 9. When the 'Desired' state is updated in the 'Delta' Shadow Topic. + + Device which required updates to the 'Desired' state which differs from their last 'Reported' value will receieve a published message on the '.../delta' MQTT topic. + + Upon reception the device will report the updated 'Desired' value for the attribute with timestamp on the console. + + ![Delta Subscribe Message](images/DeltaToggle.png) + +--- + +## Understanding the Device Shadow in AWS + + 1. The AWS broker allows for the use of Shadow Topics. The Shadow Topics are used to retain a specific value within the Broker, so End-Device status updates can be managed. + + Shadow Topics are used to restore the state of variables, or applications. + + Shadow Topics retain expected values, and report if Published data reflects a difference in value. + + When difference exist, status of the delta is reported to those subscribed to appropriate topic messages. + + ![ShadowTopic UserStory](images/AWS_ShadowUserStory.png) + + 2. Updates to the device shadow are published on $aws/things/{ThingName}/shadow/update topic. + When a message is sent to the board by changing the value of the **toggle** fiels in **Control Your Device** section: + + This message is published on the $aws/things/{ThingName}/shadow/update topic. + + If the curent value of **toggle** in the device shadow is different from the **toggle** value present in the AWS Device Shadow, the AWS Shadow service reports this change to the device by publishing a message on $aws/things/{ThingName}/shadow/update/delta topic. + + The JSON structure of the message sent should appear as below + ```json + { + "state": { + "desired": { + "toggle": [value] + } + } + } + ``` + + 3. The meta data, and delta difference will be reported via the Serial Terminal upon a difference between desired/reported. + + ![Delta Metadata](images/DeltaToggle.png) + + 4. In response to this, the end device publishes a message to $aws/things/{ThingName}/shadow/update topic. + + This message is published to **report** the update to the **toggle** attribute. + + The JSON structure of the message sent should appear as below + ```json + { + "state": { + "reported": { + "toggle": [value] + } + } + } + ``` + + 5. Application flow when using the device shadow + + ![Message After Delta](images/SequenceOfEvents.png) + +--- + +## Additional Operations + +### Command Line Interface ++ The AVR-IoT development board can also be accessed through a serial command line interface. + + This interface can be used to provide diagnostic information. ++ To access this interface, use any preferred serial terminal application (i.e. Teraterm, Coolterm, PuTTy) and open the serial port labeled Curiosity Virtual COM port, with the following settings: + +| - | - | +| :---: | :---: | +| Baud Rate | 9600 | +| Data | 8-bit | +| Parity Bit | None | +| Stop Bit | 1 bit | +| Flow Control | None | +| Additional Settings | Local Echo: On | +| Transmit to the Microcontroller | CR+LF (Carriage Return + Line Feed) | + +**Note:**  For users of the Windows environment, the USB serial interface requires the installation of an USB serial port driver. + +| Command | Arguments | Description | +| :---: | :---: | :---: | +| reset | - | Reset the settings on the device | +| device | - | Print the unique device ID of the board | +| thing | - | Print the end devices assigned thingName | +| reconnect | - | Re-establish connection to the Cloud | +| version | - | Print the firmware version of the serial port user interface | +| cli_version | - | Print the command line interface firmware version of the serial port user interface | +| wifi | Network SSID, Password, Security Option | Enter Wi-Fi®network authentication details | +| debug | Debug Options | Print debug messages to see status of board operation | + +**wifi Security Options:** ++ 0 : Open - Password and Security option parameters are not required. ++ 1 : WPA/WPA2 - Security Option Parameter not required. ++ 2: WEP - + +**debug Debug Options:** +Type in a number from 0 to 4; for the number of debug messages with 0 - the result is printing no messages and with 4 for printing all the messages. ++ 0 : Minimal ++ 1 : Critical ++ 2 : Warning ++ 3 : Info ++ 4 : All + +### Soft Access Point (AP) +The AVR-IoT development board can be accessed through a Wi-Fi access point enabled by the Software-Enabled Access mode of the WINC1510. This can be another way to connect the board to a Wi-Fi network. To enter Soft AP mode, press and hold the SW0 push button before plugging in the board. When connecting to the module hosted access point, the user will need to enter the desired SSID and password credentials for the network. After the user enters the details, pressing the Connect button will reconfigure network credentials for the device. + +![Soft AP Credentials](images/softApCredentials.png) + +--- + +## Software Features + +### WINC +Microchip's WINC1510 is a low-power consumption 802.11 b/g/n IoT (Internet of Things) module, +specifically optimized for low-power IoT applications. The module integrates the following: Power +Amplifier (PA), Low-Noise Amplifier (LNA), switch, power management, and a printed antenna or a micro +co-ax (u.FL) connector for an external antenna, resulting in a small form factor (21.7 x 14.7 x 2.1 mm) +design. It is interoperable with various vendors’ 802.11 b/g/n access points. This module provides SPI +ports to interface with a host controller. The WINC1510 provides internal Flash memory as well as +multiple peripheral interfaces, including UART and SPI. The only external clock source needed for the +WINC1510 is the built-in, high-speed crystal or oscillator (26 MHz). The WINC1510 is available in a QFN +package or as a certified module. + +![WINC Module](images/wincModule.png) + +### Crypto Authentication Library (CAL) +The ATECC608A is a secure element from the Microchip CryptoAuthentication™ portfolio with advanced +Elliptic Curve Cryptography (ECC) capabilities. With ECDH and ECDSA being built right in, this device is +ideal for the rapidly growing IoT market, by easily supplying the full range of security such as +confidentiality, data integrity, and authentication to systems with MCUs or MPUs running encryption/ +decryption algorithms. Similar to all Microchip CryptoAuthentication products, the new ATECC608A +employs ultra-secure, hardware-based cryptographic key storage and cryptographic countermeasures, +which eliminates any potential backdoors linked to software weaknesses. + +![ECC IC](images/eccDevice.png) + +### Message Queuing Telemetry Transport (MQTT) +MQTT is a lightweight M2M (Machine to Machine) messaging protocol used to exchange data between devices. +This is an established protocol, additional references can found through [MQTT.org](http://mqtt.org) + +The version used with the demostration is a generated software library produced through the +[MPLAB Code Configurator](https://www.microchip.com/mplab/mplab-code-configurator) (MCC) tool, and has been written by Microchip for use family of devices. + +--- + +## Hardware Description + +![Board Callout](images/boardCallout.png) \ No newline at end of file diff --git a/images/AWS_ShadowUserStory.png b/images/AWS_ShadowUserStory.png new file mode 100644 index 0000000000000000000000000000000000000000..b277d6b381e16dc1511872553a0d29613ac2a0da GIT binary patch literal 175983 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�Id7eq(Y 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 z zLFf-E5ZL3O1kC^>!qq)lAA3_PlHG>+HMHMxfXP)AmV7&xJ!%>uc~0p&HChH_-5&dx zJ)A{A;64`hh6_~Ghb3!Ru#m#A4o)`_+uWVPti)34RxFwuZZlY#Hs$`+ck{BubA}@b z1U}JG5T#t*cQMiIy}ov`s=le7r(QG%gNB3xZmuBVm*;<-!paP|Czq3mKr|X@UN(1a znS>S#@d}9vDKUDNscRp**-6DMqJOwb3=^F3Jfxsm*8#W{fqD+=Hp$wz*`KAEu&FB$ z2u&G^s%3~RQ&Ca(=2ih~bQO_~l6w#V2fVp=9&{FR&+Pd?; z?-%8iyHg1eJBh(_r_c?!H)+KQoY~c$z<`kKyN;Wy_Y`m z*2u2I&?q|;rT$>f9BnmX9GHC|Rxd|dB7w~xJFj;_WRkl*Icg>t&I%6i4d!Wb+_UXq zq5bK)e=-TV12fE)1@?jW%1dM)Ong-8V(|jO7hTbJA(xR1RMY+^t+R1Co}j;gUit3n zpExbwn8+F4Efj+*D~tBB6Gms1xq%LC`P8xW_C}Qh0Lq&i?vOA_nhf&ZR%UlF>R+EN z1Iq7VW=pRjm<5A^Z3z}~7Ya_Od3KTb%x3>WnuA(_r#t8QnPt zAz(7f2cFdyw>fCKc+t)w6NftGbVIi}8(MNsasc7$QidU>j<(~q0SK6C7?5P!ypnQ4 z9iWFFagiawB*bC?bQ%wlZ#gAzUFsZkZ{gA=COj9>k`J4vpUW*xCKpAjv67(;1>=6H&y`bX*xdM z@kH4Z2Yu_M;LMxRP8w3MNikAO%Pwe(+o{FTlxu;Ll?mqy zsYOdv4oderL?wIG!zQ5xgT#cEwU)HKHZImCqQ+mw0pJUJicL7useSwY7Etdt21f|1 zuYBwUgZr|PAHS2IHH=ov`)nh{czO}=33~ynvG{{y6PaBH$Bjp}0Z$&&d zGI$)bV&eapbViaZ^X)g^tYz7~^T)mOnEtu+5{i^WfdLHlNoA(d=29gya8qA003l{hhEG}in29>PNgkUU4H?|J96&JYg@ zGc9WH{;99Z>LL9~-6~Ll{^O5y<|`v448S*{f)-PN%D|#d4rmx=|A76W7(~D=c}_>o#>If6rCHiiv!T~yAGq~r2J%j zD;KQBd2<)hN65ZxrA!A(p(P!X_-3lZJV+4qn} z2j)qo;FPs5Njt-ckmVP^cxg5yN^U+2Dg+RS~n z)0=tEljecw!offVAkA%7$lLNL?_MbUaICE@oiTJyE>sERU1A6lMTh#fCBK9SE(^Ex3C2BHl4wmVwE*cZ7z-biT+IjIFQpQns!CupPP2K_w=(i`8ayBQbs&hZ zvLu|JPToG_LhrjS?UJ^Dq z#ZJ@0#uy8Se#a1lCaPzFel5ie665bzY*`QVE-PZQ#dZ)@X)*p0bH%Vw7Uudr(ljih z-D?#wru5%NOhQ6JN`Kn5niC;3H2b0IShbqIo~+!4cU?-@OD|sROjlOSu5bH7zizcO;RT$d?JV6#_>#`C+&pwYXIhoH>0Y_kBdJ2<6M-L zg8)7+%gZ0ou1qQ`heyW{^a9h@1e$nmu>UCrtFC$pZH9#vDVPy86$xr9UVMzv7i42z zdGzIk*$lqWCH5W#Tm?2_F9+{r<=o#O`ss`F9e1A)DIKaT6kVNIXjogbvfa~xQ7Lz; z5MS?E>eKbK7?|r*^6u29BKwo|5FZe&+MPvevDE?0dP8nNX6mrj>Iif+(O}|M84X4< zsNr&$?Kvq9Tf}JxuTV($9Hp!#QgQ=ACYOGq)_Kqf*^Ym34W^i3w z(3jp8&UziX3z-(NSu8D|=^2{#9l)G7X*foorJoY8DUi_d@zkm8BK@nsz8}LO2u;$A z?X3OlWB|FBz$7-ejQzf7kG`aWj~NL8IM>oxe8GM6w_(FGiDWm3da{xC`_p`T-A>^y zTi1Gn&M+Rn>@+8xC3IQ62agBz}A282mXvX!z>d8WMnxPNSjNEAo~Q2y5N_1X$G<>Q(&mN1yh1*#x(Qd?5yj&6X&!_2u5tJG_F0lSDU! z6T7aJUncd4NSD)twP*LLo06OikA_Hsv7NENPSLDE$Wtl+L9c+nyIYD$&h0-wbu06@ zHdzp6LtR+PKLNj0)JwljZ;}zrB>lt2f#UBPtkj;<6%l?Wf5IHYADuLC&Virae|QB< zhCp6}*lu8T&CuD}p$t7*p-ItH z5}6E94_Oi#(OIwy(P`iHnsPoJ*_XeLHssyo#O&xx-!})hrsQXZ z#{WAcz4olYepf*(F6c1C!~6U@u**`4uA3a?FoWgh_K)go-Bus z%e#WmXggaBNBXP0Co8;5`9L$PCrjhu&nR>b^|~ytZVI5IUb7IU1FaDKJ5F$O&!ZIz z@6VKAO3sofmQfGI4XF!@Ouav=Y}HysIE9Qxvy%qg-WuCta4(uy1d)0HwkAYuLX;_- zeGZcrAh-O9vVi)`z^DwvE?d789#Fnn>HtpVCL=~g9^w93onAOCRy@%D6QS}Pk;c_Q zfDWqW#>OEp(!ypb{IpBvJw_~5|)l3v>{(%fi1$VVln~4ge)N{Iqhso6q`_smX$7@A4H!thuOGv1JO0N zSeW!2k&3>E}+sVAi53B*4f1U-g0v3zW#WrAG={dM7ci12`g-%If zQc2I!p7Plw$WS;@l7CkqkMRkg{^o~b@JF=Id4;0GsP?d9;oRFQ%?Ye6(djvD8fboQ zR0&KN{A_c&4X?PZcHEd+s6{oHsg7p->%9iZ*0(j1Xc?m~za-a$T7XF{q6rp(c4DQ> z$Em%~LcI?I==UeeU`ja#r8CmBs<+MkG$)Stjlc6yrRfOcUNIQKK792oIXwPQ_g+TbD|3@wi`1efe|{ z;`S?EQ?R7Dh!}V*>jl?17f}_)JGfS-!Pcqb{Dv5A1cYSgS40N@Pm5lH(i@rNaSMZx zA7xbD{7qZ*jn7IJQdz5A;Qj%g6n@YJyIy8_2w{aVs-1L*P8N#8H&3a4MIbzVP7(FR zG)09&$_^5c=uf=gEG5$!QzJ*Gmh&NiG&Tq~h<{yn@ee@|0J|`Oq5q_Lkp{HxiakV7 zoH@UGJYZUZly&I%o`YJ+;+Xj71Cm->9}nt9#3pYo#WRE%@|ZlcZb${NnpP#wMY z|0HI~3_Z7M!{#S4NeTmZb_BGFmvXI=w&ftf+xLy-RJZvT0X%*#=)I2cczvv+qVp>! z*dxhjzSj(IBpM`LNj5rnJf$i^&$Pc!Cf^{kn684FT{}D@69Y5jqOm$`Ay=Q|OM4U9 zT88J?kb33ay;bZHB;$sqOe0&C8EK)223DY?3XwcIxr#?sN#V0tt}Dpi<&cSmJ3wix zCtrHD7O$`|=uhc{;NS`4*h!p8-$3-J%n_A5Ss=Ii0e-XU1|n1n-3q% zPS~eh0GL(|gt^~zXb5xs57|R)YGBf1L-Jw8yFJZEjoxaJjX)I(~-nc_dK%{su;HXt)6%Lv>mWG!Td^K0wet)aZ zN8Fpl~ax%t@7*_2$5|XjuOB!|Kdu=Y;Aa*^BV%UwwGdHd^nR|20V) zCJ<)yedG>mMaxR~{w4kJ9YHOu-gHgO~q5J5m4_8PvI)ETe z(DYr-fNs;-w3QcO%@{o$s0uzIT6Enghc~M;x zlR^uFmpy_Wa274qQFs#qFw^L!*tR{w;wLac%ps`E{K#$8rvPF>dKE01D)cDp zA#!bdX@}-bPb^mz56;DIo~GeNBW*ZKDTp%DSUzs?{ zUVRx^lNXJ|=!`rNcCvBxTqr?;b+rG0gxaHs=|){;HM{!mR3fs1zr~oml(7EpK`m-% z_Q#`hCm3V@27)hrppBA!o`l68zqYkB9(%(U@0OU)FesBs)j(*NmXdth=EL-f9creF zaA)Xh*k!ip9YlwuaL_gbkbc`RkBpK`c5P5jYEU?{PYxx4WSIdY^{oK_>;KM<3%dj# z!}xX}y4upzg*b$j6W#HC>^u(y6KHq87o!HYkqO7wqBu3D3r6Jgr2f?>Z#qVfO6{qU ztT@fKgyTH8BcBFrp*tj6%lo}ACVRG0yDsf2N4?7fmGndQD3-z0yyt#kY7V=A$uGfP zi54S!#FN*g42MUBr1@A{5MO+$-M_A|eqE+>4meyHM(2Vld^yd>TEvD4u?GK@3LGO# ztXHL0i{@GFm~Q3C>3#8KB#(^g5SmbUz5O*fX^_g?lW4f`^Fo=kzm<6<6eP+fx-ooh z>+srEi@MP89K5!Axl17AkDEf1PITzq4SO7D|K0oc51)4G>xWV8hvsz{*9)J;2UtC>=YAT$hl?n0+ICU#$y|yNnV>N7RMYVb8w| zYs?;I2|LWicb-xaTI6{TJfRirWgh+;p4GB$j~&9S5Y1*C)?h|QZdTo_dU|7%eASnA*SlhE!Y>@ zV^*j;jMalaaQ?txjX(wIk~c&j+fG>ef{}#5+br?2@ow??@uM5(euMeBzABxmb?0Pe zKHQy^7*3E8Jy~d<4#MQG4myr)MNdW=7yfey&CV9)t#i}I-(5f;WmMmtNe(siY}`bm zs&?bni*~_JUDrC+*cca2iAE^?^E1{g@%gU5c%!>iiZ&hORN-ZMZC^$P#o*7ziQSSr zr0ic!-LJY|;CY3#Ht^sOgMZxbgdgTPRx+=<*p&fGcpw>4C`V4U0Q&RK5rX`KuawM1 zU_ZlojKQix0brLk;qj~yQ1L+stwhOn68lrZIcU3S=St;kPX%f~*o%`+XDy>K<&u#FAEm>T`^19|%JqBXMfG<`Jvu+X={QegAWdAr3Hs^x_Qn566h2L)?{{U*=4Ft zzXv(%9z$yH1{kUn%LDyj7APbJcVSE=8^3Wj+vTyFCc1#b3nPFeM*wMqQa?^l*iM{B zFq9sRSStZ|R{awR1?cyc46$U`uDI;E8yVddE)Xd0ig?TL<3Jc2UuhYqYm1z?j^G^< zcwYi8<8GKLii3Jk!gKWffYPTL|68Z6E<_oa#iMMSbX%AY@i_fShg1pV}dE#owejo23apXQ8#6)Z>@9}6#XNJ=|OJJ+!d z%>O~ZVdo{1)Bf`7b}Xt6OH{oX+-Vt%l@=JUG^d|(7lSnp{!zhhuzGxG$P1Hl+3&vR zUW!r06iIy@Ya^W~DIs1Ip9Cx+&9G(zmNY+&l#5#U&uag}t zRfj8oBgioT?yCZuCjj~)@F%Hhp83gzU|jA)T_P4^K+tzyQ}W^$IJ5_<%_B$;7T?!z zoC!R${tkOJs2LrwiE^sR6vOt=&Ca#T>E`>}}J zG#hKi7R$eiWi`S9h=Y)=U{%7pN-i-|Zfr-eJ!418DN@o&RPbEhkNL=buD*xfep^pR z+-9I_a+iE~kg1QWJX=qDpt^ZvnDl?dcct)*gUqZ4M}OhNhA2v&`#vwF7iOZIgnrIt z&-AR%nDjCplK3oga+(8iR{edkao7!znsY?v%`SOk8G35Z1d+W V%y_hy=^OlSx2n$0wCx9e`7f9|%ESNw literal 0 HcmV?d00001 diff --git a/images/Actuators.png b/images/Actuators.png new file mode 100644 index 0000000000000000000000000000000000000000..59d0c54133384f06a9e629a9195ddde72f8a9671 GIT binary patch literal 10101 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�QqN0atFWCMwS??tw;nBN^yNrz4>CMih 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

UTlw-{2R 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 CyS%Od literal 0 HcmV?d00001 diff --git a/images/PublishDataToAWS.png b/images/PublishDataToAWS.png new file mode 100644 index 0000000000000000000000000000000000000000..e7f9e06b0587ce91745693a53f9a7217a7f34a03 GIT binary patch literal 19665 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�!g31pnU|zoOB*>&43Ng% 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 LyP{g4Y#H!hwLYxt literal 0 HcmV?d00001 diff --git a/images/awsCli.PNG b/images/awsCli.PNG new file mode 100644 index 0000000000000000000000000000000000000000..efd50e0c72fe2259af7aac16726d0d36230db95a GIT binary patch literal 5471 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 literal 0 HcmV?d00001 diff --git a/images/awsConnection.png b/images/awsConnection.png new file mode 100644 index 0000000000000000000000000000000000000000..30b70d87aae4556af583fb41f04041adce289dc2 GIT binary patch literal 96614 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

*DdfOhY##4o_ZRu4j}PB&r8MKUB`Q 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 literal 0 HcmV?d00001 diff --git a/images/awsLeverage.png b/images/awsLeverage.png new file mode 100644 index 0000000000000000000000000000000000000000..911bfb2c433c31fb9034fe1232a4f4ea85fc02dc GIT binary patch literal 246437 zcmZs@1z20%vM?N63oX#%R-6J!afcRncP|>eNO7l7io08JcX!tUO>hdKP$alZu%C19 zJ?}l=|9zP!Pxf9ivnG4i%w%R(B2<-SUSN}90|0;*at0Dz>9iT>O|hb)Qv z{DEryLFoekP#24HZ-(}KPh&2tt^@#hGXemCp#T8lxhZfL0B{EZ0DGnYfM6N`KX5sY7lEc%%`FS(|AnYml zeCc56W=7-bVDIQE=qd8{zeWf?U;nEa_?G6shPc^@ywz1wrIB!Qv83VQ;N}3m6~(5Z zp%Hemuo6_4l>VRT&vznkZQR_P1%W^h4-XCxE)FLbYv6kU0RbS06UfQQ{yc)+)yvV% z%#+>GmF~Zh{2Py?rK`CM*x3#2v{U5fT z83g{T2l$=?1pEj0^Hkw~wF;`ZfGwXX{|mq9d*S~Y`G2(i4;^9Pzli_GV*Z=c|7v|^ zRTNto_|MlSimlksqz3?q1LPz>XnGbW+hE0b9YeOdmZb;-zUlP!n#i=T+?(G$o z+fA2``@y!aJ5Jx8Pt??>7_+%|&~d`9*CL7cqdkE~Vn@;BlqFPR4e{j_M5X^vSddC5KXW^fABVWQBp0n z44xVq74=pztInM`O64Q&Z>55e6PV|QH$Lh69Go_Oxs+elHBq57S}nU<{59*olMM!g zS=_&TDbC5s`FVEt{&J?L)qV4{u9AB4W4w3uKLkB#H3IAW-38p;-r?`sS8t&;4?hyS z9NI4R+z^$T!Xs7AGd8)3#F6B)QXfz7p%CExNBz5nCvVrQQhK5LApAn$?|^{4q0Md# zD$GE)cOXrx5_z(!22Dhh7|@@=*A8*`Ss^WZN~owqqjgV*MfD%3l?s}ho4Ys;c*2Jq z92jQg=Bm{Aog|ml*okBdTrOS2)ZFe}w5j-Uiag$!!}p)|S_+w{{DiaHxU-Mi@76Br zRD4+(Wv`FclDqe^omS;*jkU0U2O__=f(3%+?!07?hPLeNz>i(WO0G@;K7gVazD`Xem~m9;fA0MYQ2l#-gt_aOSzHeG^4%wfo+ zXPe5~6iiD;90w(Q}Ne|bzQwP&OYMz=YE)+ z?gIYga4*b#)S*@)&+dT8Jl-36FI?a2>mM&?Ki&Xy6k~JSlKl5kdNMgos8pQ%q5IHZ z<}#ny0@MiWv>%(9Rr??g@nz_U1dTi-kx1(M?8X}uv6qNZiGVXE@ZW_15%;L5;uqCI zDmk)r)c4|hGWCu31!5_JYETq32Y*~@#DO)`j>=aFG0PQC zZs_Y*ew<=dZK`+g-pOfoq2;hA8T$Zk_q>(Y|KuzB(}e~YKY@XXZ9;PAa7$mJi-hHw?Z~=06C3w8 z%%>j=sCUe7xWou;J-Wp18p?>v)E6QM!RsZDsinWxRqiGC1i!Fd1{^LF$D|6!Z9i^J zhX?3&3y6piUQ;7xjt6fEsh=dXh>3|I)=y^*aOy|=Cy>a+j0C*nY2KsQqkHQR4x%}* z9y?YMy{fw?Ug)9qTWRsN^S+!giC=p%I9ADhy5E8Fb?zI%jZDtn;S~ODOIeWwI{24??OO&(apH@1a7A~9u?pmOC{^UQ*4qVNjF$j^ zvSo~pi7C|S*_(hKKd#9@9v|+Yg`1UN|B;oothIBM0AZsxZ+1Tz z{)1;mT3Tfw+?zlrmls>p&eH+4tYumPo7)t8xbd~|3WHi{)#UmT{P0T#I(*@_M?$IO z=j3Onf1CTLrjNFJA$()nUoJt0z<8ojq87=}?mkm0+u^B+kQYIG1r|Cz*ae9AU2)|q zQQw|~LuJGeYDYb2ax;b*nYjw79LDmwx7-bCBCGJ!r`+ozOL}pis{^@QpIukDlF4l{ z{P^LaCsp*aOrmT(l+`|kSB57~z3}s#Gz8IxTgopH;{^7n1P%gnRIWNDc3V6tjcb?pr91rZ7FC zU1qr)kG%hFF_|FxegjyDR>*aJ{LsdY8YpLE1U|WYQqJ&t$W&iQ?Rk6Iy_Z~eJ{r#* zsA+w)zm_abee1i2+A56hd^_xfDCWje_1e+#(?a~AzR$lngq2&1R#LVjNcUB>~^0e*T{RUx)ZNkJ0T7U zd$QjUzkz1L5Zf2ub-F)s9r0Mz_@6)YNaZBL38`;m;UkZ~VoMx*4V|2v$jB)b0)i2F z$=**+kJ^Zk)YP+Y!L%H?Yvj<#!^{6KMH6 z+U;!c^rGh}GFO2~W$jh@m*d;?XKgRjU)T}az6N~SyVHQ3=z354tYza-3XZjEp4eiA2srBzq#Y#(l4;MQwb)aKW%#y!kr$s8}GOIN{j=QcltuW>pD-z zjo(;}r)xTa3R!E9&5dURVrjgf^;#rdL__R@9AdfV32~7j4Y}ZrlI+|_u2B>_5qWYz zFpAG^O{7BC*ToTKxi?H@JvBh~`j}nJyovORSM<8qv~umvkG_H-?W+$Yu{UD=2obQG z1-&2ASc3RLjqhbZ^5e5ku_2=(i{Vkkz@sp&g8CxjpB`l(Vt4R>lxL&)NYizk>Mu~J z1?A!bQ$@_5oHz$o9Y5wgF=9d7E(<6vO2z(dMUs()GysRuYdKRFMzB*pNK3#T0{JdK`k!>4;H~X zcYG^{v~b4lLtljwSln~ygj!2-8y%1+_)BRmElW|u$;W5!b_JFh*8Ox>fVck*E`%gn zanN$&1VTSuUg&;v*>(rX_1{n#XbmCAfjz9kh7zVu-L4MWE)WYn91r17CwK5a;na8% zxK4xPYgo84lK{uHvy_(5^0g7M$I}b>LY=3_Yk#1~u5>6J&J&Y$Z(e1B)I zBRk`Bn!LS7x68e`3oY4tLsJBJ_WtT{g_y<`%N*Z>F1=oO?tk~HCiZVewD~$)pS=f` z=(Su(zRp{UafOqXv2d~hRS@VKZghnay6Wss_^Hta#e>>&Sm^;lU#>?Q>KX!2mIf8X6hncMm2*}}}8@9Bt@%t22+ z?uRw2FnuO2T$BBz`KBUcExKPgyVG{@e_gsK7nb!Dn!wC-SMX+jKsx09Yf_A#`5ym? z`o)D>#Xi~S^sU23EA>h8Q=+h(wHxzWuZJq4RwOi5-F76i z^6T?Bbup56-2*#ohSj63LNT-lz;i)#z6-5HesK(ET>|r!qV`N5k z%`PInNV`{kG5|+ezfZo*9f^HQukG6F^t}D%`0oN)GtY13g|Mps!(xA7RyCc`m$w#6 zfzTZ*z?W+Zxlfu{UeG!0i6ubRsnEgn$~c68a#t4i962ynoZEVjGJGq5sVHLPJtj{A z#B836C#=wsX@_ikNalHW8v8mt_Sd}E-b;CQ)4-=YYnk%_n|zPR~^n`u~c0GBO}5UEoUG5DmnxR9u&=VE_KiMxQi*ZJrdUXkwW=@Rhsy zNmt)^Uoq0p2RbvRQ#3Z^2kt5myR1Y~Plk1Kc z2wm#xllMfSWx02I7?t6;{#o@{!}?U-tY8d!p@*aYj|+N&%e-!N?D)vB4u>DEWeF#v z^zzj~1TML)k1tKkri-F4d781{3adu$RRr{9M{oY+5Whh!kIgM1YE2%!*PhNTnJXVE z|HqduCGun>QXP@R0N8FJZ3v2u^}MEOQZF!uWjqVvYKAn=;CV8#KfrzKph??lnH{!k zV)Ty^{kJ;ph5pNes3e;5c>Z5~;zhlYA;_!xXchnYME}PMv=;@z)u>+FwUDcXnw$`NZn6);LCG3 z2wE6S)y}-IV@XeSU|95RuS(187VvYzQDR8HP39!|F;kM|w`+oG3t^qszn-ug+g5NP zz4)rF|J8v#*YcwKMr5^r=~MQq(M4NzV|zJT+wW_I_9{4hVJ>=A;Ebzs%EkTqLfW9F zZY%s^Ud}amr@6_*bFsxwXJbvZ?W;oW`-Fg3^P{3p_lm%d;_B$|t+h2Zmka@8i)1Lv zFTUx*hVEB>br)mIK7SL>nYRvU@FyCZ+oQBZE6=2t6m1$*Gs}+L)cRXm;u~AK52sGr zycfjm@b7#(Ta1;UOS91p_|9W0{zoD(Tv))9?`{L8=Ei~Vnqs|IXSDoP>QA}=yWk^) z+`i%>CN!rV?x;{9BHmT=AM({|g#BAVoOeJum_BUL55+#^1$6uUOyZYAQe}_m=)yli z-LlTF(JMMCxZKV97wfz~d+{g%*$OLgCg22&F;GZ(PMO`cGos#T0Bn&bhQAzYG<1J@ z(f?`9I&8H5hsqRtksFw`2->iyWISAAUy%3bFKNt(K+c3&K-9(JBG(I-i|tL!OPEyG zoey->)I?D9cdj%71jXI#!XsQJjf%aC82BwgN16g|4)(OSN1(HsgV}j{MP1N6X9D;;n8u^9@s1|5%bzoR<@_~#aN=0Dq(-s$q7A=g$Z~Vh z2fxIqLk2?fVBuy%^Wv9`Ad(X2P&eTf;VO1@_UjF>QCQX^y+4HNh$+1mOmrHAph;?>QUn7bYJhbMRxpqfO_?+a7~yH`+yGO$cw$* znR-kK3qlEb04F*1nFg3Nru+3)|KW2TQAuC(XLh#pb?SuYXQz4{@7$ztKvOvse-_&9 z*i4kzw75lYX7xGk3L0N6*Vra>nx&Oo=Fv;*waoS1eX(B5zF!%5*y(m+m)XB`&31a{ zkR!Kzc$({=mkYjE$J;*{vhOJ|SX+7Vq_}_X1_@|)YhP{51&h@Swp85;;@cu-S8!$QanCtK6Ns9A7j*-R&0V_vdR7Egjjr z^JLYRUZnTmP2?(WTGo6H#j$#bP`}hKyG^Vwp6H-=uUi6V^BCRWtO4{00HXZnSdbA5S*KCm!E<;;1#nssM7>3w?4ct6j^1bCY^ zILMeW0rvmQ5*XLpFJfUqCKHCC5nvJkEgAj##6v3G3n8E}&2}MK>$Kq2F~!_QGE$gO z08=vN=brJCce6srUim;(=Q$1Remihjzp`X|e2??4$&8m>qr_(=-pV>qBu%wC1P{`W zGOW4XNDL3Ye9gZhGZN-!ZfZH`d|+}4RosTBFxjE-g6!jhXn zm<9qIvOYG;B|7|d@aimqkEskhyo;JX7?8w&`bJ$Bm~|uf?poi7&a_P7oFCD#Q0%ZO z9ggvXecNg$g7Adv^769q1Igr&6t9DkZp4NDgf`?m7ycyO85o)8BaN%X_K5P! zk$5^6Uq9*5mNu9p$sH|Y)oWS={1g=OH?wc};;%(UR#x7jAf$KwCB`vY-sp8ffGG{a z?ntLia%=e{I5pWa%^=2oS*o{UR$dHxz1(f#Bi%t7=JSo<@=zNhRdkRma=Lao)Uk87 zFqaGygWcxm|CwD`uxs2kmyfr1-87(D>A%?7+2*e)MnmkOUh1cznQn$jOGA#jeDbeN zGcwW?ccx8b6*@;~DOoP)4P8k;kFwU`F*2gFogLh(&x~@qsa0J2pL3fX)TP{y;)jrelW_rg#PdbS8$8IW1ZXf@uKUs^ey;DSc%6M$gDHMdI( zo9^4*>gg%@NQYyE(2wDfiTwY$6 z(2j>VYJm(Q135p0?5TvkxC$N}ZZYI^SjxR;uDIQE3e*NHO3}G_RG~LON0R(%_X}BE z|GG~esejqT(N=t$W_F*V^9E`NC~5-et_l;`SHG-o?7A={&R^{1`<(KNLIIJp+Bhq? z$9Bhhk@PB|y6@Y7vj-#xc{BpP^vy2YvM|Lo&l|NFQJn*yci$>s`Y%Gvk97&6Og$>%gUDJ*M_P~+!2&q+Gpc^ zkO_kG(7VQ?`}@RARjJ1=rQdRMHO!WBHx2)8Z#J^f7a`thnyh?q^!>!E6hCz;6jSm` z#0T2ux&uXpq^wZ|a{3K=NJ3(xUtq*#Wo0Pq)EFs2v(Sh+JLw7vz@GLx0K&Nn3-5w# z6wS02KUHb66A8ahZvoDnLR{qH-Vxo79ZLbeCaA65D8>pX9brcFS=JM|DyJf9*k)q& zHRD;t#T~g=F{>S4N`BR;Ew=-Anav&d5sxdxY^i<~nLAxZD4(~hXk~RWGP2|oiGf8p zsWpXufMS$zykb8L{6c8Sbn!clhD<;H@wuyzEFQ|eJe7niy~50{#+FNxJdG&4%VN8R z*@b4O4XiBu&rYx|!44t<-ip0nDxXoe8ZZkKZki8xonF8cXfp64eivVFf1NH0jO|<- zgR8i8+uiytvPAiZxsDga_WFL0TYg0~Eqd0Hb=BdxM-FjE3<6-xeGWi!^cCI*UtJ$h zKD5@ZF1ybhiOfX~vWygeBbr&Sw_i4%loaJ$(H12&o9z7!f)U#`d=$&U2wh%4?FjzN zFoUXM^xzZouvrzlul2uP=M<6iI&_F86_|T&avn(iO_5?U#Oxhu%a(Tk_#{zu6gjFx zWV#cYOx2&R6oJnmErMB$@OLP0o#X!yqvOWn4&z!E2XETT1peR*oM`o0Jyc{4sS6zN zNngqdlS?$ik!cUZ2LYfhG&g@Nw9*rs*wyafyXu2#21I(JPvwA!~K$^kL#NB?iHMq_e)`RGroGS;wYy)Db|)VUBw^tTtdn-6k&p@RBFx>R>f7EL`RXb<0)6M{5`gsV-bhNGNd_7>gpw z2pt?mHFZKSoAOn}Wy|w!X=GlP5(F$b5WWqR`;AV>L1&EDm$+~?6c=Ysx7!|EZU?X= z`Gjm2c6sHSp6=-UFZqhEH{y2@9$I^``fBdXGVH0ih zywUu(1{O~&e_WM?o)BF`r8tisE^SvrBKf{bhIbYUI&1H1EzLM+vMjljKU+CuyS&Q4 z`3CGdN0kZv2DrlS`S89D>Ps#!sAkUfJ!#|Z@(lm!ql|cu5c~Us^$#pP`+u>N=uCQi zC^Fwi6eN`g7qLID_1|%UmBPS*H1k-+z#ZZBRja=%xY}0VJ4lx-=`AR}xZt&hb@gp# z{|Ge!D&{m?zc1yDuZmP23!7}34B(r5;+%{#!w3)e(*J1L#HS^Vyxwa+Q9GeKabjJZ z>l3KlvmW7wiWc_kHWR}p{e2pHA#wRv{&EbuX)g<#mtk#U5Y8}5BZE{u$qfLVy=OYV zH9TY~oGa;bLnm@RK;3X;Qsnffj5}d=L#x`Cjf@}q3{g!Wy%J{VsgPiqk*b%9G?e-qu? zgh=2LA5JbkR?y4yvTxkHw7zi{4%3CsE0_>tR%(P>wocFjVjm|aJ)s@d3Jd;X-)&R; z>}Y5Cw_gaH+qnl9?gtW}rTj(u-sbFwKZjpikB15C@Gv1Gqe3>F zgs2EYj67D;V<<#EdZj|P6jGV@T^b)i$KxcB!a5^!K+zvhpv6ZC+i`*Gt=}eE#928x z(w}(Z8Ifc)G!g?Di{vZE3hparFro<8HJA0Ae#$P&8xGTEd$@?E4u|pNga^)vmJLEg zYa10s0~zqOIJ50f+T0ofhAl82R^DJ1Q~oI9-R__|#tu53h$GD0q)3mEIb)>+Zh}?fz^g99Dg>va`NJ1PT4nt{&Zdm z!3APkjqwo}mZJmqo)lBOiHuv_SrbBWx#V;zqe)+|=DG-4i9qTW$ZSkT0q@XQ{|9oY z(9XnDFv>~1Z{lfx^G*qO(bwQm!p8t{&0N*hk)Qkcgby0NOf8NeJCV3ANS21tN_;YM zJnTB$INX?``uu z{S-=S84X?J&^!XjmNzaPqx~?`n<6F-v=YLsPC6+)`|F)Y+WU)Q$A<1(H!>>$$=Hm6 zwZVKt)6&>h%Cri0^cQSv-&jki1HpbVQWEFSPc)X;GsW$DGc&4{72o&c%>W{H1Z6({ z#1@T6Je@)qWt$}KIg$ilF30BpUe?n&&-(&SW9wDp?WN=W7bjLKlNBi`Mo2!KDhe&hM);K{)832rwhA;gZO3|3*cCro2 z>ZDHmKKsS#kiVqagCi%z3ct4Gl%AW! z>)u+sGa4gglb$*iuq0E9In!FG_>a`P15s=CA3pTgpT=}k_8lUGC&-~uNUGb(L4@7H zX#!qro>#a~zMl+f^~xU-SygmPS7`j^QY`G<`vz6(kkbB&lF+65&3tsms@qNL58Znc z6(1<;-e!7l7W_RPr3jeLqMi+`QNh+2ECg-};6wSNv11e1(vi=MiD$k z!ToH^SgGCDc$9>sk>mAZU2>~3mxzGh?WHIzk%?<#y9QNCE^!}8v#MUSni`T8q)xIv z&1kNcHVAnC1$&X+x*r9El~n10l4N1(*5?~nGbsy-m{H@ANH;GMBtm_e3fG)hA_a1B z89R6s-EVb1lqniorTTHW(gO%ov3(1xdQ}9m6c^g?&*Hv`LxvFL=55k)?&9Fi&hMcS z^w06(>~w}SZhnsi>ai58wD0G}afNI@FG)FXI1z`+PhJ4RG|Xi)A0W={4>2I*gdDWr zA%lR5F7NK)?iY{3moGjoci;rpI}ugbae;sNj)C|jtX@9MIaso+zbXU_pHAn$l?DAc zn>+haRsGu$;e$kplh-s|Npncn#wokQZUdaG3s@yRId;@$g+r8hC&d@SB)>Hb&k^UiI2>r4E( z$%4%YFNY3K{#UiKFkSsZ-wP~;!mC(+M5r`NB`in8XG0`ac&jT#I)tQ_mGMY$4W6v?v_s`(! zCat=hfn{vTCAYTS#$M9L+N^!^I$z%^^J0z9+yqU}b0&ed*ji6SCcjq?dE5!43YAzI zczj+2CVP`EImLldTmNRk6PUPgAxljZFhgVgoLhB>&S|W-ls@uuRtfAggN$HL>=t=} zrDRW^U0{u|V2+<~;Am<BdU6;5w4P7KZ`2{yp- zCspks8^36@5!rN3t~BCIp;94o!@wY#5jssbk|=Y4Rh*+od4bZ;NwYaeT670frCEkb zkG@j4qQL@d@+%TdbY5!-zbR8-BDHBm0~bskWL2i56ZT;}v?tu|jiN!^x_!4DNLufk zlOWgRNr$maL@+_IX*JoKvHiC}uRO8vwA3`lEp(5IB+TT4&6silG_xL5SSkA%sEJb8 z3^Qz(Y`8J*j_$>DSX}Ha6+Fq#<-gNw%nYrYSw$>@`Eh102;;CpmyzCT^Bld#fik_x zjSD1Uirw1d^Sc&B)Yvu$ArCV}vhnh3IVg80zxCX$@4JAX{f?RxZz=GH(c7UM{DWBZ z@$U5YD{pg?u;pyK0|{E#~+=J5bFjfos|_Cj+;p;tsu@Xas< z>MO{!FY0)6gr5->q*A<0fSWTx%h-YZ0~kHMn*~zNUn7DlneslBN1pVwWp^`oFs!!#Vz!Fb!HKo^0NRA}ZyzTuwD)oG>#b>*YF zB4;A77h@XH?3qNHdRTEXb}}hm^)5vqbT6&HnFb5ReGm`r74F8l%06>AYacY)=>o#w zH(@i@en&!9+5b_VwHS{aBhv0N zo!n-6439lN|2Td zK_r$xH&0DzR}9;9eW%5RHnMe<>Wxh*EChXEkk$L?%p-{>K-Um!z%N8xov8SmZ|GY_ z#TSbl$0`O>^`V%&%qg<8Vcbz0`%N zV<0m+ZL+k!Ema{?I>4AI+!%HrI54=@@R(v*6yD_}L(TU&%Wvqq3SiSNBio1d=1}!4 zy7y@oz>+St_LvnebofDRt{6gL|EV_aB!(Hq32lN`=On2h~BiE-`z&&@o!yrYc zaOrUR#D7*;a;6H;(5;*!90oqYem>?ggaQ#-5t)7#{KvW(7@ zXlHqD+1IW|f5giscB=B7OYR4pN-zW>N*?z4ZM)02(N5Nv`*aHMC_$lkGhW4%FNfN5 z-Nl1Z?5VwVI9KpG-^i%aI=|#jY7+k1_s;wVTU@$$)h|J_gwS-X(=KL7BpE%|0gmk7F>=p;YgESIl(Biy+{3=JiVyaJos-4pWXan}1!+MDJq8qB_;` z`KYUZAW!eF6xCO4hA8WYLc7w_CgIVj+RKs`$hcM#c$~rznnHaDE{%l*Q&li6(pJ>sGIsIs&S(lvtyO5xhTl|&w43!h zaCHyyRxnQ@;a?;CQ4BdF03$Nn(#*ZTIDM23CGz;tz-`SznD;4aip+Zx7Mzuj{j zxWsoc_fF@d5%k*ZI%gG397dsO#%h6XVU}C;;>v6->l;n35r732dwP00 z`_=1IPyD7#BeuxrxPvJsXAS!6>A-_9O;?B2PINv1=Rz;43Nm=^39LN-LTo~g<=hdI z$6G_l9i3&%Rb2Kr1$MFA34&d9@==RU;B*uxY9cfARl`tYr<9`|ZrBS`hy=$+mYhs5 zU`!R+eQG)O2}gSB*$NrCTcF`NFOJ(Je@Ef$hmmdq2!n~sM;$xQ4;cuJ{}JpH-yeYk z6!$8)ww8f+pOUBh<~rR&P)Gy=^W&Eigp5(>lSxN}-;Ducy>sly5&RvFGSUM`x^~X` zUWBT8;ikKm8x%LUiE7Da)9m(q8D&G52a0PB57j*8Hiza@@` z4wQb+o6Kp(3F~!#6FRe{Hj$tja|`xMnoG4(QAfd76Kyfhe1R4u`#xmriw!~{iI&SV zKh1ucS8uHi5U1}J7Vnu(k-yp6rY^zh>W6gb+rk4_I8*CUtfb`i)%~p(14);)=|5g& zFC|5|=A|rQ6(^od>5pHG-WXdB>&eB3^i1AyEa1{=v7TBSC@SP}_W%meP)f0LCcDIG zG}TQTElI|AO#oSWW$%Hnab;)Xa(g-d&W)SuPJ^<4>S=M4zF|PFE~*DefQIBVaCe@o zv~ke0T`)HL+e#(T63vkLNePN9Y2|2)0hNr7prjd%8STLMUzPH0v67A_=J&{Johkm? z*?phrk?C-%@{F){TqoM1attd)HjSG^__Ug`njA&T{GV_Sc^f+F}#VAMaOM{vY#K2&Q{c;urqJ8Phw2q!d2VBkx8 zl`vL`9pdZ}kat)^IeH7%mFLD!D>N=%k+|fDIY0R!IdT}bk~DHDraPYq$Bunm`Q;+7 zkV)k7_1vD?*);{@Hv{ELK99+SIoYYm*ieKCm_@e1X~cb^;c7xQRvb;UQ4Dy^0CPEB zYII;SN@6f^yt}OXlT+<_%(zN%Y~?j_;bK&DQ#2tsoxqv>J}bi}g0FArl{{ZEfN2svZ@OECn=HTzPL^Io1> zb90=Pwv-IX^P^H|U;6EA;mQ-2m__v*G z@d%P3x@knZ-L;9nq^&8xbw;uaeKa zz4d!4rsv6OO*z4}U|vkEEmf>UTU$<|axC~q&c8h2QEgNFtCLX%Z_>&8^27%{$);87 ziNFBVA_Xg17w`C9heus%Bft=Uh5mx<3V&v}G?v8ydpN-hICy2Ovzl%C<-3X?EI>%; z;IBLhd^fnv4}Nh*S2q5HAPsL#+)vzk&$+X?*2)OGB;kf6o5V4m!0rCz1l%9 z$oU#R*g<%lb+%gdnD7GO>i{AJOJT#Xr~QTymHa5R=|M?~bD3j1XBl!q}pE><= zu|ZQ46}lyZBHmy%-S@s!R0QvtAk}fCcSgC5Mk(q~Q`X-}mM4_=9{FV4xT)LX4jJ;X zQC#>a#Ctlj-l&v_Oykn8uNE#kQ|mxEQ6JPu8yAPh6kjt9nDv@+oAJ-5wI`P)wZ+93 z==ar*clN8JF6x>>XZoh{0dB$cNNS+hpm%MKf$Ug;=k#&VypZrMjjb~Lyp47|BeQCp z=X%nD{i))jcMW}N)_X7allVJm42K0%hdBFYS(5>5Sc*J^PGlUDIvZQY`d|Gy zVe)RWj1GBWOw_{(MW9#JztF2-m#(F=jD$L}drLdZP;mo}`z^n&Z=n0hJe}F4K2iD7 zS+yuP2Mz@~%-8N;Hn;53MhC1b}0Jp%hQRIhG zzfc9`@&i7lXwuao48Ll7fFH#eTub7b*Fz?>EA#eLS=>i!tr3}TIwPlZI7W2qQ|0hd zXgTkfiX2(tKFOthg*XlnVPUqA2QR&>GPh&{p>8dCx#NXSI}v#FrFGoM$_L8IjC!OZ z*=EZ%XT4hQv%jydLqg?NoI{(9|FW;Qx46ees?v+0;Lv6Z%H1un^^B9JiU*QpTcdf5}FUdSe%WbC3 z=%JjPPM$g9{{1-Qv(`2#8T5IV`c(Nmnm&&Hd;2YP+eK{3uU_{0(4g7Gs9{#R(%azQ zp7%y^phWfkH?FnxWQ)MB5}0&=Qu;BQ37f$jd1MCkQ{k5b&YYM&lz|`Ruqj%uIYsf> zIb%~zQ@Atoa_;~vNc^<{KvvHI5T<-BCxG*SZF0Go7USMhmU8xm2A=h#tFZs+wEeI) zIeI~xJGsuhnm=s=?&olom}4Vt;ADAdHqy7VsAhD^Pt&ADZvfQ$rVsK|oLnjI0|~@c z%A%ucJ{P9`K?!}uWc9!<85zmhbgKv3u(+uFG~0Gc%=}f)`3w>`@YXG{FNWvEjC7<$ zusZ3|t=Cn`-#GwB zY^;V8rOUxUk%o0X8+)T~z2 ziw!b5a#eM^3u=^Ww`EmLG><>|DbK!F5G#ZW6R7f8X=$lA7fG^IO#iB(VeJdiYcllv z_UGWb?)07YUGU`bAG&Z9ek1+>yjnNfaoSB=oW&dre5yR^%i%TU>Zi|89ZVv-l%(d2 znB%+$i}HoKsdYl=p|7*3b!$Y5-P`*YtU)2S;Yszvok9Fkz z*0xU$^*rp~NpxaPG<}R?Vi%Dde9LJG3yugH77`J3rMVD_RU^&g4CJ}(EHBNU3K6lV z7Q5fkI!)*Qq?xaOEt^wf)(S40P4?_CiyARa!!21hvZ@wbS|qR{LFbu0Vh&xGl~YHO z;|xcW4K0*9%0kv(W5%`i{7y+Z_nk%*cRQhhm2JK*?Ho@~l`(zM_@OLw%E#K?Jw=LG z5#tqGEY6Z;7Md4lJ6YfiK>AC0@N1qQ!xdXZ@W$Uh;8p!>@iAWoU0aIDI{!K(c5%6i zFLsVH_aoamB(T#MqE}g8Z$~71H?c45bMv;dN5b)(*b>E3_ zLriJ_Na!_ZG{#~`u{qgwSR_~uNK%fkP!!pqvwtO%R7?xJoQvp(>ww!XID%@#QW@NG zi*d}qFi>?Ws+Zor=)h|Y>Mn@5s*EYk|0-GtbOq>UuPbHxBxSF>+07Ck+j0DgSGU$eQdcv#G5cAIt!8ccWRw_E9S)<6NNk!s3w zXCK>tT_6R;Ke)XxE!rAuu%7<3bYj}Rf7F5GvI$Sj^+V39{3{6M<@`oXkXH@qHSd^| z3$O`%I^@sv$K0fD-V$Yd&A|}^#kZMG8HMm8KECwb57Lw5C^|EU-C+Ih9AeE-8r$G2 zfKrs1ylj2?_}TdH*Q6`O>6tY}n-i+*JN8#`XAdtfg}n##`A!tb{y5#2A|I<@lvlL8 zjW;`Q`HJi8Uy*e%X3}v|{?BP2AU*cq>9!CHj;4@o>N|rdEnp$5|E~$w!@`p1pht$8 z9@Y=RlW{{Knws~r;f}(J=_$>hvehxTIzq8%W#tJ zA-1Rt*kpV!#XS%6iAsr0=@Z{!Mj@m{iedrECyD9Ui5fo|LSOTJh@3Pig(0PUv5n29&_}t zS-?Q0yq!_bnVzpqUKL3Z#ksP4rK!FNss3A@rY)f2W&K&P(e87}I3g(~rVS)MGxwgF z)vGTngZlJ03{1sSU`!%>H`~6js;6Gpo54C4S2;j3j2DBVJ7v_Kvi%B47_pcLuTJzB zG!`{7+No{ieIefdGH-jgZWB)b!u{$%Lsslex>hPfL%h~ceR+wv$+x5(KKE`j={o{C z?a>e;D;N2&#LH|A!(w1~j;PeX)x~qhuANas1K2e$T8n{R{EW+dLJcG1)^~X>N!n|8 zmtEkiBI3^5D_{A-ewHy=KBJ_#Cz-8m@A^67W&IW znWhtG-3uZ2y|LZMkyuJanK;g$Z!NuU;x+1~m*jR^aTL5aE7@J1-WQDx(CKEPRLb{o zEHCmXRCNt^)9#A1$@wq*ID*VZd!v23LW7mOrx)DcFNL|A6h~LraqN?UW8+A|gon{< zQCsE;N`G2Cal(}m(mUA1q3lx?XWfpsDJ3h@DL;s3s{UY2)O`?0GF4H`<6U~YQP*=u zeR*z}1;6WdlF;7DpVqJTXy<0%w?LGyH5IQ?tyxbAlv;)7acAz2Omps*$l6v3k+()1 zZ=>5bz4LDf)Je8#SX*QVFqR@~HB1)f4Jz6HlHyNU|?#nB&U5L%}YZ{D1#Bng?R zvqxaAo#tXE9u^UKp} z^XTbQmu8Pf`z%Utt#NuA^Zy62Ku*8RhAfh0Sx1@#-~+(O%&4}gQHK)VG-XVRE9DmS zWNxNB**cp~t24Gtr*XYjx*^C6AW2Z$!)KZTFXp3V&;tb0hO4XYuS46du?~gu4zh=m zbrfVNNoseI2mbP>0w(JvlP9*qHbxkAC*$_3 zcRBWEI&3BvWtz_RtWgE6=G}SM zNmK}T#af*!7+z3vmFo^aOj_pSyJs7DwhSR%Q9Tr?lRYB(R^z`B<;rS%f_x=$r_Y=T zps$okKz9L4czrA|I}C7=rZY1D%hP9q?yBf1b-75Gv**r5pR&A86et;T0!0}C_VDT`FI~q)bul2l9%9la5XvD8+U{tD7B!yO;9!dTkYW$TuN_$%aN{ zc9Gce9idY8AD#Dk0?2mC6FYGqPwP*mK&3#XK&8NQN&!Bzx1C)tfHgM^EeTgR`G zgJ;zf;1BuOI}6-}r7G0K;O@%6)*7!pBj>+w_T2C}f6pb?_Ei4MxR;lYbt+WT!BT?C z#L8?t+vt54fPuyc#wBQvdY9^R0v?&UP}_i^(glEE=GJ|NuCM@HRWQ?a0Ct9bjP)eC z1*8Xp48zOl$EKNF2MEC5H6f}LIhcD`j?HW0TaHa!(Ug-25ze#usWoL750lVY7RxNN zAQR_(fFqd>{M7Z=Ot@-v?#tqHa*n*cmM)wkeHj+ZZPJESswDFg9!;Dmd*o~xnmXhF zjc@k%CRej5Xo<5KDg&henb1d|sgy|&X*}zwikT7))h4aK<;|PY(tM<2m{~Y6HzDqU zfokEQT5`#kGQ}RM1UcKyWq>PZ`?Z3XTYD>-G?^paB_g?p(kOwl1TTlNELWysl3}{{ zVbDR~qcqC0+XpFd)X8^KCfM~&nxD3<=H`}Y8?5AER{Zqor;uEXrW3~xrxD)wIn?@; zFbOP9oH&N5?Lp$L0}d{w%YY=M9LJC{4bb-r{msrcx98SN^538%qx~*7`MBi3&IHa_Kve_Ss^V;vR5>|~# zTtjj+2N;pg(#7{jNt2SD*e8m2MeBD{Sp75a-E2}!B{#px4JL?hZ@j04J|#oWMS5Do zwmgbUvc;`aXV<*#kGk7-npltaq|gy0hmQ1ao>l~WT0h|Ca7y5|^140==~sY~?_8dq z+6o70BLM|SzSl}7Z66K0g!(Q0GTwXISgBb^Iemt|eKYzNC6FfEZgbM2NS}OAp5KTT z+alMSN`Xp&N`Xp&n^VA#zlYymd1*Hfbb)p&gVdgaA7a&VhS<}k?VH^mltC6-O1nqX z-d#hDN!jf|B5x9LmRqLh08GGMW}-VgQLCXm&Wg+A`O!CQIKsOaeIIGcpzTx!c#&Wt z1q{2!hGV~%JlK>(p8K=q+g8r!K8qbwG+)*4Vs;Xytec|?MrIHOPXa@4 z243UHeCwRyG@KG3(=^N(n6YVQk-g4qZr11{W3dQ*g+W|qe_4>^;lSQ7%eJL)Ja0;r zA{X;Eaao5fVG8dSfYbyC@3@X3AL;}ygR!w-|fQm;-rm$X=-|weT)vLgS&^Kj6Rq4MbeYQYj!%D zK=+#><0+86%-W>0Pn`=%!5w!Tp{=M3g*tuuY|!hjyH2teXapLprSkwL)#?OSs=aA| zKw6gmED+nnIvrI*7hvv{z}S~HwVfvbTxpW~$1=3mXoLnGR136Bq54Sw)tRPN`m}WC znjJxy?~ovF1`wt+KtN;P%K7JhqF+b|>>C1c8dK&q_dCM!r<5!X!bD#D6u>VSkuK8C zBiB!Z5`ws0VFT~r^tIdd@@+eL9BY4Uo_qfM`SjG;vw+0&X?%P<>c7=9sSo9IY!cet zjx&^#4L2x4Sdp|Gw*!<~K~>bbr2vr+_l{}O*A0$&<)eP_&EzJ&3G^>5VA{4G_R-k1 zn0_0QCJK|kKbC4|XW#Lg<99yyoSnl}-%5c>fl7f&f!m}&8B+Z8@{Ntb)S1l{OwzV8 zNUh1i5(ZxD=_<}5QX zSzS#)VOZNXp24uqEzV)BYZCtqaF&?`b+Nn*WKkOn#!hCQ!*xG0pM?RkY#C_C>@$Ej zV4@XxXeMm~TjS$!E$XWk1Vs`SG8N1dpL&o&pUlZbI- zIAl&1n59-4kvFR~E$NVRkA5oS%Afh)%(eDC!x`85>w*r_f?FA*W%A1aRsfVYP+f&F z@`dQ6tb(;U?zMQ=&6*!2hV~_2fp#Y|DP3>oEIO}J224%gROL#*)WwE8qfB~CgQipw zD%F(Hx;CFx>;z038%R(9P}WQ5`m}KXPiMM_<+{D$|M;b;c&B}CD31*$OS-H;ld_Nm zNY36fooSp+Y*RXeafid{{(J5OJe^MylXIyLYjRqbJIX#uy}je<8j_LosFn#%w32t? z#EEnTMp+4x?L5jFD5WieGTT%zp+v|wm-ZRh`h5YY1~V!{npL0-Zy3Q%H{TRNhV)lu z%zmT#n*DkfqXxbg-K4Fg)PACYg$?Rq8M^RO0#uy+U2tKwl@3Wy!ISS`25=cbd7TYA zz}8AI^d_SZS|0KU5GFXIE}>p3DC5X|T4``LIiT8{K*4oU?%ibGCabzMr zb#Wpgk%>rQ;BwxBR9RoaLe3&VAoYBcls&eIkeT;?2k34xHbudu3yIAng zV7AOm?*L5BF_@qAv*&|Rbb!o*0kKHebrdGApBC0MNqyz=RmuS)!vhbUxoE#l21KU) zp1bc#i=X>KSm$zqc`2j8jkAuv(E_uiuJ6!#llzYd$`n>KW0uK2XU;U;x5n{H-bqj= zKw*MBT$JlM%Pr^OMx>g_4nBbV94otfP>F$=lPT}&Lam1x>Hr9+)5W?W%HZs)<&lYt zXHI$IY#SNRODy)*e6`>?OHJ01(79G=Ab_WXv3WV5%ZS-0Le+>g^mhy&` zg1I*n9gSdnTZZiNm21~>Z!lKlOc0mTl|dC8Wro(-`(PgNQw2|^QZ=YS%vHw>JN{7? zG7qMheq#R-D0v8AG?*asYhkjA-e%5GhytLR(p+~kw0TGq895JWD$^`|*4F`&&^HeJ zq}8hZB4(74FgcS9&7CZef$oKyorf9JoU>`)tgi}kZpX!%6v7UoTGxftXo2RQhBF@P z$K3W%Z<+)g;T?U~^y~*$ncQ%#)ZUOdvnerPM&>)R8#uDbJV-N9UECoN~7;~`yoxJO0x(mktkw+fKc)(QjuahV4VE>*wqF-M_EzI>g zw)4S*hXN#=dFrX4r|VY)N3QXa=7J}sABAbOU2Km6lvIHXHArYKSkeXfp`7+5jUos< zEVBk3RJF5z3mB}MCf{XVOp}#>Es^1nAYh7 z0g$2u`OS-afYh`qhkaM5Lq~uk%i*_Rpno8MtNr#G(x)e$cru+ld4fHl4kNjnNmnta zXgf!KjO;uJ6sFXZg!|7-1I_9{J$v8Uw zBRpNuDVYw|A(r^7UG6WI0qPoUW!w4f5)4OQ(#&P!)|wAM`Tpd7?>C2uivB&v{&5Ld z&y@m|0+j-l0?(cTe#D2E{!;bB4|3>K2bV9iv6a4qk;ec7x#|~#SZ{J)ot7XuFku|8 z2T4;i%+AX8vy;6u!n$ts{`8CV;45V4HOuSF?kIq%lc~vBW-Vir6~a3_#6d=VFubFf zF%G5z26GKH1yyz;F%!o*@Gx}p$2uESPx@hg95kn=^Tw*Nghzgc^enrFah?ljTGrk5 zC(_Q1CY4^8i}%k(UZ&Fr?R#L3WXdgl(9-0|2?&$$l9lyb_LW~*X(;d)^n-8gmtroz7KxtRSf3)KZjrX`cAlgXQ% zL#+zX5=p-sT4i+)2HZ5vhalpEkQ{N@bt-RlDYYZyYHrUkvAEt|a- zz~y^q|1*D82raWJSeDCoFH}ZZV`cvz8No6g>6o7JEvr&6E#O%m%Tm+XdqR&{@{jRO96vT2xf^r`?Qi`_J(`cWt9UN(nw*tdp8HTO2=3 zk{o9vUGq6V?xwXF82WV2=wN)mt`NS75cN^|`pO6HigtYL@iXZv8z1+QzWqFal96%N zr8xWZFe;;(*>`U+>#Q@3Yx}w>vswxHOBs*iM+umpX5R(h{2_L6j!8DV##XTFt|DCm z7{>RiJ*>}7Z-57uTQJq?e5RMh4D3TE_u2^+=`8@ZAKQ-ceJ8LJ4}Pyo-2!a-BAFI( zJmM~UMgH-y{!|K73RDVI3OqLy$RAk-6qpGIRR>(g>+K^_b8Fa;P{7;{Fo?=P@SWb~ z3=`}#7a>7l5Kyhc{bJO0mr-%R@Z;YFBjN0@18FertMT+GY_+t zhAR}@!>|H92XCXb(`=`7Zsga+;96$+omG}$i`hg_U_W5V{gh<11f8oZi@|(~MWnX_ zaj2=0xb$}B+49=%N;odNC>;8Bm?lh)g*|{&NigDuowmJk1W7WW&RCm{`Fq&5u{J0w zD6>Wq{%{|rvYYU^ap6i7$610Ff*8C27W;vWq~!}HFcQp^ky(tHW5cu@c{Vv4axi3* zebmoI@r$fgA`55*gA6@dRhMK23q#`BxHogsuH6;pMOp}!l-9bwOJ=Vm80w4oyDrJ_ z($MuH8Xu4m(y&0x=C{zLJs%hI)2z4UtcDxc&Y^bK2SOTb7FtYUf0?XV2gu|HeyikH zs%-tQ!K_Y9&ZIp^agHB^aVKz8gY@i!=a52QK@zDtoTkBx3a@Q21)bffRkhFu?!PD2 zSUJmX4${>&R>E}l?Ac(P@4ovado}fAu6_oS+-Ku^;U=^D0ZmFgFJ8PDo6Sm_0|#Nw z?X&bl>7`W2K5x2~+rCoh8ftoc+hp49qdLPBX`Ud&cP393Wi>hD3i{nwDf%CI#3Ta~ z4bj)=lf`g?Rutn9c*Er8HADUMFTQIq`t~U&galyrWBpwBGss#TY10qwJX;6p=44V{ zqm+T4YnuEf3Z`;=R0fG}9N*`t3uUnUPD06OhZGAM*oO>jdID9QX=EuAKoR`XbcJ~4 z4^0%`Ec>GdACxi)GRY|Vsrd=&RLQg5!#W;j%tNxrS~$UrS^0kI?83D8X1@y0@}Rjf zO$LYb;FsMS^n3h?GwI4KfRXas7Oigk9Z!gxzZcs+BN4?CSe9Ip)>N8n((d9I#`uM9 zk$2>VVVfwS07)TYjBET_Po`9is$|8w)~A`i*1_)q*~RT~E|NjN zBc=bA6oYQfjcEp@sX&!1HAJbWN`Xp&N`YrW0SAJe27^InmmNU0f;2U|5Dd{y=^J+s zh8ubrfG=Mf2e>dCv?b`c=SN-1(w=FL+*EVGBs(rJ`Ii&bXYc;|<=_%&_A%RtC{ znVJlo%$I6#u33n+E)+;+NhV3gNP5dK$mI0|xDtS56+F|hECQ%$W{S0P<%X6rAhwaS z=ttP>Q%R2CD1)K(m{Hb}oU`7}L|YS?(XikoLoGp@`pF;*vfNm;sO$MGDkCAICfvtm zzK;dlmX&fj^DaXij3RZALCD}pV4uOgn*#|Qdr8<(9(3Y^iM!%vQGM_^- zs4|=W5k6*Xt+(a2I25Io8Hs}K@MHKAuGC*c4N9++DhVhBMXueGM)pGKR-_%OyV)0w zyP!TC>1k|0N(4ZS5^m4fvI)NJ=Q3@XYTLuK-x}Rb~ZpJ=A{~D|p#V zd6obf-+IllX$(^t=?Iq3x@pG=q(7?Pny1YDq5xLY2ae)umY1 zqQMp4ZPkaQH%SD|!wfVN0DD-AsG$v2f|VAj0;h2Y!IAB#X?3Mc!+cYe*!Ycb(!{>5 z^uq}kX>HrtzXhN&n8s5|Ssh_(~(S{%FGsL<}1fNYS5iKNLJERTsc0 z3AE3IiWFhYKY$8p25=!g0g`>qw9M0V{pMLl`?Yymex)_O(@M-t+wk!Y14d#}gZl!I zh#GxFpk#SmPiR>Lg{BviBAhe0^P50hk*4p==6ghbUi%Ve!y@^0G-=z_^4Te!;E?ti z1gaipJxPc3Y@azKi5k|hjDqC_3{9wQKrH^&)6v7M8HMf_l`IigM{;R5k|oP`8Oc(- zqvWT-lKbzwm$how(nF^&r4iJOm15t@`Ry46WUnHIT|i7!-bMZUsCzf*YC$q2W-WG@SCgJ_iMg-7ZmT$$Im$i57VZ-feTsU;3Wk zmS{iP%Ioqy%jZ1qmBfr!{I_Iy z^!n9NS8Z*H{I9Z0y(W5N&|++b2iPnxL1K2)8Q58vsSC_%8_x3UHjprRxY2cVIFa*$&Q`W8k?TFD&QhMB2= zX3%Aknd2}u3?R~f9Y#p&di(b5j&^f)GZ=H2wy@?V2q13F)Z9kZhq^fFo04J;=N*mLZ5d$7Da!P{)HQStVgO=NTZ+T-fE4+aHA|{-vl64xN zSxg79GP!>@DrVPa(hQ)j5BghP+wUyznlw9bU@!M6J$dmOXKBrI!ks#M8Ai{2fK*!D0VRSgLo;o}}aWO)TCP6$|D`;4GaCrDEzPe(QRiC@BGz~>}K zXQyhrPHJRzuTr12b-ttYL)Yo#SiXhL-a_<)Nlb+M&2=)($uEJv@Aj@;yV)!k^-2J& zS_Af`eW+u)SJomxyu0bM_6NU>*3Ht!*|DH0d%Oqw^B_P1ZDzfiD)8hMjzY)SLO!MZ zn=v9^bKLHvy=urB3mRv9m|;;-8K1U?%y*`1OIm)-gSR^;8Qh~xv-?hhOtUa>hhW>H z`8*~%xbQuTd-}*K;M4C`^i$4$yQJD$ZwA~MK)RmI_b(@Dc#qPjDp=Y^>UvWtP$^I; z@boC)AgF5{K0+0Z!FCRjzv~oK*VySpuOE-nJgP$DFjR#pi3D4I45!hBL1u*o2-g@q zwN&PCQ1UlS3_1)lS|3_s9fun&UcP(6lV$-7>v$eyb=RVfI0)> z;5qX^Y~}ECAaT}HQ^(H2>*VDPWRT*T=;ijd&!!=x>7X9WKKJ^$CQ63iXN3v2EG19< zoZ;8+cAaH3AL|=D1~)Q0rYa+7Qd%I34Sr!Z=COF?py~{_v(0YMYJ06ffB;xcX$&KC zH_HsYd$okKKKRKX?PhNk869Wz;pT$bTn2bLtDFaBfl)SCAYih8SkPQ=>*xTUk4QV7 zXT~*WMhzki?L+ya=UG|&G6Rr96(%5n69iD2mZf9OOm}2#))}N2S0{7mtg)&>scLV@QQmp#y+8DMICyKAVrgNCOX=i=JRo#=MSmADhpr{)G{T z06^5;ejpH$(UtDjBljok*VNGR;U9emu+f2}!SEi&^(g5H@SJ4unUauD&7+Q{9e&2= zFzovXuWy2EQjeiQDHpm;=N!p<_Ks@(*-^Z?X>6^Es`n!pzHQ&#t#GQH6efE)%vEVpGdhVu^gZNHNQ4gdU{vNmaYpMgM= z2mZI?%prp@ueLiWZW#n*QSg?>w%MHDJtheK@)+A-?M^?{>gYCMsKN5KI!Cs#k-jia zV`<<1RP6YXV_uIP2`nG6y?v+#E8>kwnn9 zs^JAm>QALWr9h>?b4P*lO`l_pLD}?gr_}vmD=|Kg&Yy*bj&( z4r)4oW1!%}ulk%!<@D5SnqACFMPP~0=XN0R@ZMMg5eNEN)qC2?P)cM_2SOz;f~DDc z7HKn5J6J0%kZE$jey*JPmOM?@YX>mLFoCBGpc!s50_5M2;b|2?7EM#(4v?lLgCql$ zB}LBCGt(%8!eKd-YPi108-Y?hgJzb`wloa~U1z*6GrOu$4gJFr$XVB2fF+*`IJ7ut z|Con)k|B)sPJ|0!L>R*b-6KnL$&6f1GCvPhyqv@4uX#!^C*~51y4rOGI~fy z{jI-;byA|FI+aYCe!=pPmT7u8Q!O)SKk!~gSVIt@62yJPX~O0>xma7*QLxRjdLeB+ z;+h{-y?ifZMxDuz*?X>4;gY!#C@I+!U`jUulG3@T9~GB*U1la;+_RaRWpD1Y8dV0^ znLs&j8Biwy%r8_`jeHwUrcY3`goLT7#%8|0D|^OHE+ zwI8Dn!>I16MrCA~y;a)p8d3<=r}iH>fNI|cCi_|NAAksTJ>GA63t;FVO!g3}cC$er zX>EJhmt_`xclPex7m^a&Z2^!=HwbBps(u!{lxf!5&@EJQ{F2l8oW22;LbECava&8zDNFBVR9Yj3=Fa77RK5 zZZvJ5T*S~u>DP3-O(!+g67ajJRLS*KxxF&5F-`Y)Qrf2hAHT`2Wm=(al&~BL0}pK7 zz`C}0H%ZSl_v~UXEWTgkY*k@>?TH!$Qq|KnQs*aT(g5Y#YR%0eU3Vb>+ch#so~Q*P z2{S#s;#<^Dn(o)6dh2#IJn76kw`w1!?Tv5)=O)e`p%Kv*Mrrsc7A5aIc?aw0==1cI ztoq4XqgFz;#q&03%h|Lwv%lguz!#Z+su2B6S}VP@&Frt9m2_&s(`&zphKcl=zVB_7 zECosGPo=;MhXQ^O@~iy9Df5f1q%vg_Q>;T^KrbKO8_~e;zYOuMoZtLQm#>9-nj0bN zNIp7)A97Wnz%0ZvssnG+Y5%Vf#em$r7zNX+2N=x<~us}E4- z9$B`L%)Mb{>gQmJmN^TQWU_R*6)7BHWKOe#{o%5#Q4&aPV9dd%ToN>gGhOKvuJQBQ zevs(~LqMG^b1;}(%lN56BNN!meMkqS3+YJP$T-q+FQa9^5^E^PPA0n##@L28Ul~Vd z$J;xS`4%UQ8y*C&*6W;2eh!nPd35r2{f~f9G6;}jJqUDi9nM-v<0vD~T*v1TMoM7L zSLxFlpR`TWF?@yR9!yNQdNOVI@61sm5iP1}7;M^0*{`m0YXG3DC+8)(U zpMUgpdf@I2_E9<-`8;{{5-Gc0t}C5-{9N>jlXu>k?z{iK^w_CWNR-)Qi8|QEuIo}I z&vf?yn2xa-?bRz+LY3Bb5bW9~7m-BUx4L_@bm_OiNr0?wm%*hIBGiy)rW^gNR zwM2tj%7hjkwxv=SL5$Q;wNL-(d!n_*mG5L$zss~N&paDmXI!1-mZ>chMKO62Pj37J zE8OxhUki%!JHM3&SB+nu2oS87Fumj((xmW%c2bC!&u>RjTP&9SX3-W{Tc1m=gtQG? zoj6kUUQMZMad6WTrSH;)mIM1^<6ezGtRtO1a^y%F80t&Y^D~i5F!$6yY`N$IT?**b zSdDaYJkaHLo!Z+WZ`@CO||hF)E@qN zIa-y6ImpxcwG>o=L5smn9-aGAvQix_kjZ^G@hxcdxlHvlae@+6=sH=Wfqc36SNz1&YB%xa=@2c zB77JnfFTkjWl$uOL#$??F8d@2)CyxKLm^0VO+#7NAPwMENs_C0?zx>JFa$Asni&Hb zo?x&DUlu}J57*JCvSL~?in^#XXI0*mf(cmcYZ}JLlBjGVKLTHuZ}@Khm@fZ~Baf!- z3Pb7xnHD>@;AjncDW#C1H(#AJ%9a50dN0$E&WrR5jX-1zhN@jH$0GBs{DM58`s2>B zLjWcwvD17rWo@`=R;7>OIUEm|&F7gj>o;?m*@sSTfugGr)rs~;SYUtGk-h2U9qes% z;c~jj2GG53!nl$zYxz`ofc;a_cPq;(BL#2*C7GaySg*th(CSvlnQ8 zP5Jkx$DcSC@4#L6+>`FT_n!2`<4=S{Nsu8UE<^9$O1>w1v4nT{@DVnrJs&{Iezm^l z#=UGPOuGj#vUf{kDiD2&dU+jf#5wvXVQeS+kbSKSAmthyRUr-M`y@eR>`hmOvrOKE z)T@Q2KGW%CekJel+~KDs>JCqzju!>Ig>&MhxKb|ZDL9OK0T-K`=6Yv|g+??q{qFn1 z*BI43zGp32`F&QRJcX6Qv0X?O0Y|1~KbEG$!y`xyr$XAd#?aDTyzCJg{MOEd=xVEx(qe?YF|V0Fv=%dX0;V&AZ|oxtUMAD`vfeLvYGuitk&N zDzy}=B{XT5yy+M2nB@B}y|xO`61?RSOXV>HxkVmI%f- zntt5f?PQF=-ntu}pT4TquBTc>O~iL2UW%Khyz@iTQngEUIA?~XnjlwZXdda1<>(I!Z!+G1rC{0xL4ubo zNs?*L#sV_46KaYuL7G>OLQ{54YVSg-6dR|a?kMxT64Cf-?$&w}gtiLUgU4Sc? zb-|kTkF^#s)k0Lu-v*DI_pEsu^a#SCNvAA%TGus18X>(&3@z zz4s3Hh58#ijRJPI$B%&J$Gqb@=U=?b*)qu>uA}nxC z2>;JNc?r7q#`>ZMpuwjfeu8J1s-{dp?sV$0r?~I<|Jgeaz&x+&U|&zkTb8#a+w!(E zNyuO(G!2jv0;Nz!S^|_+Mp>n-(y{{lK!H*yrL>gU0WG8yC}lQ;5k`RQc-!*cL$WM+ z#sBl1`(EjjEIUr(l(c-;{`9`@o#&pr&bjB@bAw?L*K5}yfugP&9oe*H8%)&j)HZis znm2!5oM93_p)w}30ujEiV_z^Ylc!8g)2B}l+{rY1_DlQ)vs9_F+4F3Zz$=v~{of6R zVD1SI^(>J|xJ;1@gX72zgo1GUhp?K@z-Pvh80vE}Vv%n~YG1&w=&j(u;;lpON7Sc? zII7`dm}6Poj6&kt46~$xmm^2GY#0PdqL(V!(_Fv1xp-I!sTdG9_G>po$8-197%iAG z*6jDeEP>Zxs)%db()H5AWsdmTI=bJV?orkIanu zX)&)hp7H&*OU9+MnQKZznMdri&T;lpReDF>t@>y-@RR4kJ_ze)mOx_N)iLm3#=uZ! z&_?WQj%1?A10H6H8O-|}oX8{^2c1D4%$2Icc3LptLQsCS84k9f)P_G$@AtP{)4M#m ziKvsvRJT7CRs#B#uBzTH+Ji0JIr&NdT9!#;mmEewM#OUr`Ti93-63y?5cm49fXcY2 zKd;3uAvxq(5T1_D%s6?e=E1OLr3vOC5XTZV5-eVvsVQZN9<3S5s3<8>o$n9~UzV8U z+K0phc+4{|^LZ(GjR&R10fLaWG^8zR7OpS5brWc z!XmK{3{!+vQYDC!l85D5w@weG1G5BnmLed5gSak4jwPR}MAbA(HH!1wf7Z!!NfO+? zheVGK;m)#WHu7bpD7OKtPUcCxhIEPS!jd4*L!7A?fmBe#C=pf)s-C6WC~eWyv6QOJ znQbo9cz||kAid`D-QAaww}l3Cs)jZauO}?h4IYoK98C2t?^wdjvu8;TX%-s1YT-^3 z$_-5Fo44;l;-my=MqF&YeOEq%lC5bD!BqG@&c!suIVCMXcF35Mxov8gXGW&M2-)8{ zQ1jB+w)O*^n*b7t&0K7&ic{bZyy{fR3rl#Fv`9bufNdi&Y1@0QNhZv5Bq2RA4*z7H zwJ0aUMl(jAD(893r?}jw%FcbxU%&D*p6~w?F2jKQU2OWmVuyc8s}$6G`VKe_7~8!#qtG~G%eXoWvsC!ZlCJhis@Q09 zZq+RQmd#t^VsEB|Uf65n`)<#6jZlhYy@j>bm2aPbkfDZ2vW@J+GUqWjD$(*EkxGBG z4!+l!rCN;E-|HB75MjVcO{+*_xZF*Nl0;p#Q5=(yle;QHF4SJqY5X!N_L#++?6cPI zl>%sT*>gwb7w1brL>z*qT;oe1cVaw1hRL>xGhIkRlPI_&qU8xlS22;gvYC ztbmVaNbjhd%%pgTItQT+Q-pC7RhuN%J+GuBMCwO^zXwW5+*ZvSok*!mHo31Pknq5y zxao5;L7EyL#i?)^5~WZ&38WqvE)716QbMIlAQ@Qyfv%A_N^rVQ!Yr947$zX>+=u!V z4AXSXf)7WfQnkuP%7Dg>b4WX2kR&c!IA5fy;P#zZu%qB&I(pZxJrJedc{auF$N847 zsGl%+pOPSY$*ktGH4-3BZ5P|z+DV9yi3?mu$Kn42NH}6604b_Z%PP!+ZDboL0WqD7 zsaD)tD3onzE?;*=ftm&0V4(3kOM=Z;B634>uU~s}Q5R_W{l)Bhgb#6S^SHz8j zQ)%AOqe?@OJP}@7t0DAv&=h!!yQWNobG{M3_I2k9nI?^7Xn12H=EdDy*^Sf+{mIBr z;(qev<|tdU-NkA7aXS4#tEk&xmNf8?`(Tby3rk63|4_+zGI#IU-WvW90mgMqj$uO7yARbED<>@BbF|6Npba3{QycovOZ%cUX z)A|ToR<7%h-x4p6=sf-crb=}^`j{TTno9s?aB17+HqH!{`Q%<*a;!h=7^q|5L4yGo z4tF-kjvW;X)DR|6tspt9W0GY+$Nex&&UfF<4i*c$vxXCgyDYjgN#w5@k1G852vy7y z-kY%hBor{zgbnt3T-k#~8pLmqqK}Ieb6bg63i7*pj|uT)K$ftQhb7<_`5sqVU)`(h z`(g}8AD{m5S0Y#My)YO5zFhjf#oVnA@ggaId=_W86S@5(U?!k9%ifm~J3nQz%c7!> z3&KDb5*9skwh@0|oPOU`7C{eHX(D_841P*RSiZk-)}eYeyf=?3tqkW5lY-%z(|KwT^dLW3$Nyr=3ia}*i(CXuKYzv9Pm@h!oq z>E^HRQkdBZ=>BHvcdvTGjd<=L-9qvs>8j${U ze+p|a?1B3-E-8s`$4#l4U<<$gj-~NPlqYb0DJ06^tVZw~41;`msO|3WOidFfVy!S= zm}`ETb00r$JmWy)8{nQXpoCggNBfBq;k*3-T&R-q9ugAD=7?JwCOIHL{P>$Z&*Rg) z?Z5WW~mPs^|v|(9#j~}_Z+yp zgh^)yb2Vwibi)kh4zvfDk3bNOM2ExOJr`NYo0yKA7^+#WZ172#RbEwKo`{^pd~;!l zCpiRx#CKWPGQm}al6RDG5{zYd?&Je{F0c;=1WkrqY zBl%nkFR{QDTv?pEh6Uk)gXmwm{Uuy=;#D}z)5Th5T|$XVVJbWjpL7zvftRZPgz6dT z12^o3${a}C2f-yw!0Uof0huV4Ij}&=2}zFmk(aozOo?{Yu*^eZLPG%VetRLQ?HOl$ zNF%)7SK}Qj8ZB^_)^yF7OO{#ES+;l-UL`HIsdpz?UJ!lJAIgrS3>LVf57|O7o_H~} zZRN$a<1iiU-7xk6r8Sc<6|RcSIIQ6rC(0wOh6pmD6B+S`{Ol9{qii1W6t3JK4foxc zg(#!1Rk-P`hY_pdsM3?j<1KwZyy&uPv#QYG^8i(;}m+#Vc^mWprHwq6!EcCIB8#e~CG->h_aEMABl19g# z5(H9dHrw2m`NUYt66PFwUbFP;^Tw&nT_q@|C~ zY-!~=BCTJ)KFV;ct7VsBpHUx~ zy3!v?`SuCl?TRta@YH3=QT36%;;-?mZd>E~t9`XigtymKufiJ6Cshds58M^!_|PfI zn}oWf_pN!ikE?H2T6uPGk{ws`Z1v{0=i?3}q+un3FD% zVj{{h0_fgJtM|oB;{Sk3^+xDT?IaS;OvBYA?DeaH27538JrM4ma*c4xcH%3L7dQ;l z8jk+8`2Rn*#igZVX102O~CpIRv0`6~ID);jnM zvc9U1#sr28?Pj6iNq#bAWeF~M#d3xJ5z|C?0m!%&pz+9g1UC3~J#!H-W6C(I%T7hdtC0@T+wu|0GdZ@Jv;WgqGD4<-nYAew+RGe$}cvV_UASQ69jp6Vwt zAU<+CMiGHO-;^Mziennv-T0Zwm6^)$7|-(kW1F42%l+Hn051C7p9)cKNh7~;PI%6hg!}+&*&3eX!gq&UGXj-;x zWm>#w0V;hn0{@%0Y{~r@xRfy2rKV1w217MF?ckDHFAdea^+*^dRrDm{H38oUqhAyaVdLa1u!1Z3iW7;7?@kY zOmrEgN@KPr@yTDKo!HbvzsQs2e{%o%@x*@=v@uCWYBKug)x;9Jlq*ItG4a z7?938#I~r1e_45A)~F1GX;n8>S6;-T)djH@T6hCzmIA%Ags#l``K#t{iBRKJUQ3>} zX^UTpGuX2>{$Sw`sNYHI6O(*j;ZBVG-SL$>-Y2Ip<-o97zvJ`nUsC?+%b~oLbS_%u zy{{xn$p0g`X_(iKbHd?opzG(??;|guCBEIRIQwFMXJ7@{AbCX6n)IeM52NOk)dvq< zWI=y1Eb3BQIDYz<^hVA_Qa&#wjY%Xx^)p=m;v@uQL?Z6~p0s5bgop9)Fig3ay7=zI zO5kKdoW)W?LxQ8)HFo#hvjy%r27|>SDj}lLf!&-d>4vb3%S2h}W9OF=y{pGdTxD96 zjCG@4(ut)fiGG2QITJ1!-olv087BNnJq*tbYp#*RS=2>j`C=Vl1YO|u5H{aK1y3dk zVs-?~ggf3!*&3lnyiZ9Y%yTVDWzZxeo+K1yF`wvU?sjlCLJMfBnZapBoXlhe3r`hn z2R9ffTMDLf5*~$63vaGKwEzG>07*naR7SaqC%%lTDxLX@1LKCJKqQ0`=O_UHda=uL!Pwz=1DA4KMMk`jYk2aYzXHJAKTfUO&E7{fj z{NZ%xUCYuLXDp3-m^_2F1vBAFTE+FQU7TT|ER8;RPt%Sa+hfhJO~j`RuF@mp&MKz90i)XmCsCS~g`Xw6hQR*qfB-b{aGvUt7;;Eav#^~m;dEi_>l=;WG$IXN~ zvorva_0Kv69!wZ;(#?b(6N97N#i#<1d5Oso;*OQq3AkFbPY!-beDYX>hu+(?_cs3E zr9R-kG9>ra4VJRj@4n_;o38df!--E#Atzcej8YTrxGF~2fCwkbt6F9UMr^DQv+rK5a7AW=yd&&u00#W^-4Axb>`_4B7+k-jL!l~9+_iJe6kew>Vr zk|ixtMP7`%ATk-B{Ex%$5|TkEF<^yp3~F~0zDkiK6eRLxi`=F6o+Z;8PyWI@BQC0unXoCl_^^v)5JZ&{C+j2g1fd&hbr5F739qgT zCQo9ITr<-MfT3bmh3ELjt>DNW@wce2_#q=DvznRE%p`~p^Oivrzv54#UH>i!bmOY7 zIh0Fk4seO9coPE>fVNGfM-&u94O+KtrS#a5VliT zv7=AuGNDWlq*Kbk+D4ugllfArlvT_C7Cf21?V;LOFvh?c@RCozE)qExKWkq+%FF+q zXBj&_1OMQ$33WP|p`)Gj9h$TBSur7_au_B`)vvp&O^SjI$6Ab0m?iUa^T5p<33<=S zDZLAZh%!P#Oj~4TDYv6(Vor#8fn1p<$TH>|=?S|Q|LuBdB!6No;1LW7Wf+pfjbUVd zRlUq70(tbh@N@2pUKIJ3FzaF;=_|2>r+oK_sr-YPEvFoG>n zcVn3!8N5t9EOP3VyQ}KlV*I*09s}aV3G#t-mchCdYY8;l1MW^o5vL;$D|%n^IW6h# zMJ6Sxe1!{ctoy$68;L30(Hz9q!df?~NfMt%aJNx{LqbF&0unC0elQsll*K|=FgS2N z(mRbvamH0=l{C3rc49N(nVBaydM%s4I6LC2jB)G=^F9c@Fet92KP2#v!5l@N5=MMy ziCAHnGIKPNvs4nhN{J*2RQJ)?gQ|t5iOm`6EW8qLo|TX>km=Ldj6|AY5)s9j<{q6D zC0f*u{AF~4F=FmIERz&OIrEs7;fQ4esgh=#LlEePK&s58hBIsz855;rhfyJ`uoxi7 zcxl0I6w#EFg|vMT;5;}^5or_@Vi)u4KxY`B^`2pBrq0{(7_7E+{5 zTrj(bdznp%$;{1|-)DOTzXRXEYOd)MyN+S(FE z8LV&n=3VTx%ZNaH!ico5-$J>=)2!LExqNnhTE1cxYk*c6IgbYpH&+Z&6Bg5KryV%o=6(o$3=*3S=u&KB3W#r&&n|Iv+qYAA)ZaD^eFm+>2)?; zgyhd(_rHNpa5EaC8cHXIVn$q|JBalPIgWF`Z9g|w#BpJ`WG+0Tsf0?V$T+q`FsO{> zkV@NGaWUR0%eGV+G8FZbd`>7cZNaQW`!Kigv>z9JxT^JHesMIIrBZ2~Y)>vhfBFdU zML&qp{(o%y*mwc%$S2b0Kju+>wW;j)ZeDn%@E|I+ai>{rgq%DWCFi<9hUKOQyVZcTEplTVAPq7=s zgrOwqAb(_*oM@ed>TYlh6x=v@>jr*j-~0F1yn{*Nr7S$s5Bl3yr`x$`xX75lzfz~u zUC#ft{0g4Lovu73WF<02j2;^dfl`b^oYj#ikQkK+kVptZQsmRhIZU&@npE~&p^ZX6 zpd*CJo9a{&nGgWOpxjl_IS6qdk|px8@aQvACJbyB?eGi8@}COKXx|8~!i1ork-{g3 zN!0Mq?c&M>(Njg1sPz~6_dfZBG$4a*4SVynZk}ziZey^>r9@3eDXeb>V;Qhs@scy8-xG(f`w8vTe1c_l`WT=-rX3Sm>y6z64(C!ub&c!FSH&*un+p^tNj zxzQ@>e9DBNIfqmx6Jat;gE^%~-d{Ii6y~G4d;D=G)OrS^ijr0+*{wFZtm{4-3DqS96c4T`+Uw;#qZiLzo94iqX&#YD_ zbE~SO%#_Tpm(ywt!uf@P8M$S(#~eQx8qVXCvxtRJiZzMs9ZNBP$PeXa?}f+p3q{O0 z3nd&`BA;Q3d6Ir(A1cm%oI|TRMaH!wi3n9BHxHOZd&@MBM#jt-#$XSIF0^JD$qlHS zd27i}xK73>8P8(w$(49zoj!SWldOc1}~D*Q@|uhxQqL0r}1%Zc-JxoVB;U3AK~%ZeNE ze%ofJ%h?b7*$E_W%)2)G+IpU@GJh5M1Rkl(y{(VCtKMxQvEn$<`6xIFFa88^0AbjL z`Q{N2oLaJL#BA@VF=K;Z*BY2ad)`fD_YtDkJe5L8yvR@-WkkA_kL=6Nn zl8B;mr^G`mXu&W6pG-%&IJD#`+?wn5B1@$h?i9ya1PG*}ZY4B@0SbVGf$EezieGt3 zhZp8j#z(^%MGa4;Np-KoGD{MF)xhz*#vzQcc!1sbhDorCts@j9)8gfrhhVB=F02X@ z1%AsU$uRkYU+r!80+UbgW>Nw*7QMZFNQay&YVj4MDKZm^qX79hTO&uMdV& zB33+a+qx~US;SY^6@t52CBTw>iZ2K-F=Q%jblZ4${JR;=o(Zt!Im)qNpB~A4V|xq{-;5jcue&-1>KJ&C zW57Y~1nRD7(bttw*1zsf9Rp76PN@ETf1sRs+g1{7wPl^I_A=kd+x+>(0!Zd)YsTSM zi7(3{=zcl-m_MBhp84J1JR`GH{A1bf*1Jid%Y@y@Aux_AV@(srVNI$LLk2l*s7XON zdtXufBc8YmJkm(+ARgfI#%`?IxvQR;rm<-}Dos? zYmslsf;7$-l1CCzF8(qXGCNtalqEAta14_eh#nL09OIBP_v%nL2{O|euG*P-_7ZZy ze=4pJ;~_bs5;8woHLPNof^o`>kW8uNsum-I=MHa3m6S$_FB(fJdl!0ioe)^6A*pg_ zf3J0ZiYFN+(J#YvB53zx>RZW*=aV$_VZ4%^RkZ)@>o|HJ6d!>QCd7^WTDcf=W`wzjr_#d0NZdpK*hdDA8suLEg3 z#s!)=t0V(2!LBMMpl2qiBF-h|WqfqezQAFB%@QTsCadGguog8e`)uF< zi|NXDUmQa9cMSI{jm5guI4*i_WT#%nDc?htEk}*;EC&RJl8heA zA}I-Sk934*eK>QVs#7L5A>vt34`Mw@)73OV;9uM{U|DWB`2=B!zeJ0;I_TXw>{`n8 zWV6b_vIXJe;rn63u}DX{AZk^+@ttzLDA)S)fEdbaz0GPJb-jDI6k<8LUZzGyh)&_R z#BfLgAgJ7N4plY?F#Al#rG{d-<42~Ex{G%$ohe;Wx}+MR@pAlJPQSAF$b?~En9%8` zv_pJ^l!#}(SeBhz@DZwbgooM}IQ6X30S;S-It=j3kXSAIxBc9ob(W#fWVfnmTDLP& z!AXI@F((~nA3)P*Q0Ms#8830vJbn~RZ)Rexr%s%X0ERup*}Zo^4AbbeXx3EDI^{H4 z%3IyOB^?B3^XJY^(~v;zH;lBN2V1^zJNN8#q-jW)mbOk#`(eDIP0X90@$5emV}6UT z28h}2p2KN543lorqD5))(169okW<-Vaiu;7 z33o2DPgv*T3|E~w`VxJrkwT|V8c$u1g*3LnS>nrxkKrJbXS2H*#IjQ2sn(gjV@9mV z>=>sw!^B{D8t%J4Y`UZ#0*gwYc{u)J4JD#uLWWV5RxNWnoeLOoatOh zEW|~%5P2?`?)rN^#zip}M$5Y|g`6afMTg2MKv;G@XJOgEQg*bdT_*B!=`OrV3S@NR zo*1a=1`IBYWry8eRV7CLWCX(40SmwCcf<74L@ZB<3KvZ)CNtFoQzWqwk`@S2T@SnV zngfPD2t2zu%cN>1SfrmwHko1T_tYgNj?MyAuNMqydca#l0hKpN&MU^bdqs&6=gtWmyfwN6Sp?;y(1)_p6f@lggJfub9;|OB267IW} z0^MPkSh2oJ!aU=25HXQvmP;QiPlAGhm!TX$V@6!7rr^!Jo|WYGM61NI&i#c3TKhVAw}A?r!y0Vv_bpUooVXCahy}aumg45iRzw= zp7$+n-nlQ0M(jId24=;%D{mX=#C?UTfI&vv(u7x--2KI!^^Dj*0}T~gxJGfEl)2*Vio7j;n?bBSlAomm|#tI-|k+8;!qOqBQe*f(r5olLDJ z&9#;%aqiDHk_a}QW1)e5t6A#?%GBTSlKW%9Xk=CY6Bxko2+XwiS~&*nkE(`>FP&J| z;J_Fpm*d8bjj^n+ecwnj8vAKy+rv$t@zpuPm;(uy39%h*YndF=ItO}p)`X@BY(6ko z?dyzwV_WGMo%C<-4p@vW7*$)iVbo~|wO*@$72 zn0Kgy-9{rUtmaD(8g28v7^{bBGE?9{nd^!;nIJ?Xyz)$ z&H*+gy9wf36@ltqT*aEh_#RegmI5#JKXnY$ zG4Ov319|WD^jE47I6ftCbn(s_E{SC; zf-c6RftyGhIEQ2b<|k1op)nE_meCM=TDr@sNLd2o;;*WmaWaDd@d|S#jK?5^-HHvB zF_;Qf!=lb48jHkgEQE~T!E9C7ka6olT2kE5p%4QwGQ;@gGVD14S&0&`>LsqV$`o+8 zc*`8&gi)uz=K;iBey`MhWSaO%a49{I_?Cbk1#vr?p9Hk|7e>>kQYFn+%fxu^j|_rD zxdd_$4$;WDT)!=^zw7&!NixsO2*DJAw~#K;ex6U#Ux~$Ge$lS@8SW0dJMF4C9^@yk zm87V;c$lyNx__ae@*3)zP){4h?B?6`O|gWWL70WH~Nm{7skpL#|V88~nPzI~E*M8ck8sr(veUWpb+8Tf%=dMjK>$ z;);S8>q>#$Y_W|yQU?sI_o9u50cvDpM-@9pa1iub+q2D8C$=4;{h8O4DtgvQ=GWNX zr=^6^cb$E}{HIT!l-lOD;d3mlT)8?-RmRhID@ri6!$W-k| zl54)6mmKKat_ntpvIn0L2BtXiH(6A(G;=NQF&6m~8&=|pz8!PliLcm%eYb8X=lsm}Wd#@@f;T6OePv&wKC5eQbe@wKz`wYKQ=)EeTe`K>@&d$5% zJk`Kaz3!gsVLE><2B*WBml>L$yY8B3KF9%CjVQRF2QkhHrn=biMD#sFAX6a0>-iGa zReq9^ea?6D)i&Khh+Wl`dayz#&Ea`~k(K12FGa4uh*I6l^GK?8NswpUx${Y4m?G6o zG!_tQen=NaaS&gXIGsfOh>?wPb|)Am{3LuNB2{M#jVS!A_h^hlDAiG&Mk5OrWLXDc zs_ZAl4Tr!~f)zD1zz!v5ja+_JWP>GQ&A6B68>8`G46tuV{tP*<}tdf5wj&sWVx0Gw#U?2e~<4Gd{Fc`Ff zdCTyGKR68aF8mC$jY1X4aM}qjCCYU-U1mzPNzXZ)$az4V+F-t0c~pOARSyGK54ty6 zmK)CwdA|m!q93ClZ{EI#x(ZuH2!oP!tSsBLtoo&}w8sLbPRCGpc(SNFZJl zjMh(XUxNgp3-jNtsddT()HL(nx8~YcZrqu6V$Qp@wI$7F7hXthH|Hmv<&?4<^BM&i zg#@dE9sZkdzAXsh)>*UDjOpB!M1xpQrI@zycJ6E1vwJsva7^6Q6l!)jNvJ(NO}aq2VwBn%l1RojX8IAcZ|<^Cm<&Tlf|nTfU!8^7cc{WwRf|E(|}e%!cF z(i81VU#W&)AC72DRla0)jIY#NocpfJV>+KHl0kM8B*r%zDPx#-3jP~mreu8M=Nv=Z zIv2>8gp``TVt>(JX_A{dGD>sW+G0#BU$#8$LGtOQg6D-SYb={hXP>o{ji7O9`LY#h z#im^`pV-!p=Xukc)4aKJLJGQi)6U2{faZ_o$ZSo-Wc`E*O)zcyF@Ca#Ikiuc8F7K5 z35HBH<~^NkE+JBqQOdQ?x%uvzt`trt$$gPBUUH24{x|ZY0GcK;74F#3p-n(S&=dDP z_j<}Y2I?57W8guE0p~lFpd_T71pSuGavv)gC}!BxG0B#^-Kh2_^Q3bjl<=33mcEl1 za$)2Dy>`ML`qb8?%3qbEP-~z<=5M~1c^|SL6dv<2&jPP7)VdO`zl@X2OAkMHOkH3b z0ICqpG~#R)_$X4Qc=9ci z6z3OUB#KI&IFgwXZ>E!>%I(cvNC&h6b|fT(GSY#M0l)}n57uw&cQQ=1&U|cF%@cRR z=!`@PGoBsnLWtJJRpNJ7`!;YhEH0iMO&_#>lpMvsMlW__7-GfBwHR2KlIFEeWfwfx zYy6nTv~2bI)QuEj)~psR=#2?t(eyIoE7osK+c`@#d(Q0CGIe68E7g|oyEvo?vZK7w zs3plTFS~1b7;k8sH#g2Hg+)6eyW20{uY{=!^*W^tQ@ET~H97GrzVx%dI2&5;kbLqi z^(we0R&$)v68-QU2+#A9 zV^x>`<}~HIgyk{rW=P+eC7F23lR=7&lh`Qf8~+oLQq7q&CtzE(dJW^Fhj`4rj5Eip zbK5y*Es4G)qqKhOo-`gcI(vraHD^tokQUBw3r77XcdUuIyTB-1GDpMAI(ueG@F-HUUzj^}LZnWIup&gC@yWvUP9 zwwpPO=@^WZbZWETX@a4iO&tSu4E%aypos}_>bOzK=L79(CsKI~roEVCWjtJ~YQyg@ zEG4ffhrBK0Fa)}r$}%|8nIjL*cKwjtmByb)lZ% zx>~KR_okTMxU8$0+4IRy+Vezt3R@{l=5#bW=;M*hjAI91m`~N2kIwpaL-h7=GXE&` zjPnuXr5cB@NDPY)+bYR)O&9r z5*jtu0B)5$xx+ey_LIo;{DC{}(U<~&-zZi2*lm}{H=9CyYS=-^iHx+wWM(|vwan6p zj96=O0%syCXF2A}KMAjVw#xpLYb{|C>NPZ8Fi6CaF>;4Gezc2HB?%#2R=>&81z|qG z87%LBGOZT2LKTQSj4wlI@u%VfjuIKzqg~>e&rt-EBx6DSL()XqmLC!){0x_H^z4#5 zy4LP6Rv5es$xACWcmX(7t@}e{T>FlFWE7p2Xua_a)8Dbv0YRv=WzqzhjEujMlkGN& zfwX}$8A=aZrcF*`kvdwB;*8^_z<&CY^>9~y;mpa=7WSnf!$zdrm#<4*oKaaYZ%%4O zHSe(X!O6I`Z{7)UxhGAZF)hu-y53=#OY(Qzi8_n&=esalkANL!cFUG6NQMrFbV@6Y zrTt~{>>FK3wLEjCagcFH0+c!^eUgB-ZLDtKSUmGl+RJzSH6CCe_ua_8171$&JFpa2 z-us%{bj7#Csz1emQen@j4K|EGZ!qM6WFvz@+ru_5xUIZ%L->KS?MjBxj>K0T)49m= zm2L{y8cGxG10jVBF5Gq>ibQF8TDo*;(6lyMEAe&>0u9O{{4(RWsdh zVonO2lHDQJgZ>JG_pOY2syYV#$1&hw8^eM&7GlOp#g48nx%%&A5H+!Tp=yu=b`K_7 zYn}7Jc+@&v6ish+d*fk8&CM2A`p4}5Wxg)F z!W$FgNebFWo)XFZCQ#zbd`K`4gxy2S-4JRuRq9{(|KOJke*3LA^p@DP;9>WO)85FZ z`NhTQfp(=CeM)zD;8o}1z;e`Y!H9qXf1Ic%(ysQWf$eJl>VlbwMTY`BlVD$yh?L;U zDp;8yE)3Ox>`(g1kO`uv-6%6mkbwCI9Re=?tY z>&#Qtsl(LM{%+lZae*O`ago420)<%%$ElPdEVhJ~&PqfaIg*#bLoDKvKNV4OAk$zO z;RL{TfWSD+A$z4t5|a`fy0F%#iVcMDQNlvsog}u;5f~81pUto3wUHtUXPd?u5idK* z9{G9PUoj!!#N0$C=4ClUC29^c=Bu_31_>DB92W#pNXe+5_bOSRMhF?1rjUM-hvkQ) zj69Vn$vE2Aw8qzf`rXLtoK#`%qTCGnaS+yeNGyw+V$4A)k&Ky)kvp|A4fY{bj^d1x z@A~mO#=G;iyWy5++u9eMD13B7B{iUKsj-HGY%OQ@qqg+?F2f|VWV~*eBl9Vs+mzif zT|+RyFbRVU;%n!gt~i@fo0A(JE7xyJ4_VTdX3d|43N+9LXY$=}J5$zPi#k{1PX1*B=AU_r)+q|BwM+ zfjn@|KgSWxon4@rKeh)xxji$Zo5#6pgnedc#SrB=EgN@HT@p!=lEop}+Me^?G}J&_ zPzSY7Y}v9k?bx|H_c`*nxZy}tmn>Nns&i{suSv_+ZHbLA8JR9N31&}gN{bdR45okO z>W%3r`FQ3igPN`TO&l{KEJW_ZxWsbOyYW>!egxVxeq%9Ou?Yhy2OO8=Q`?8EmnOs; z*(uY=1PTPi$!Iy&(*W#&$iw2OI+qwo$0)Y+bRNmGrK@ z@>*BQ%*nQyp*^TBc=8EyWij0Y33QT zVu4fDsG@cH#c=S-#H_vLd%gb6l*u}sCy!p={x41nGD^Eq4cWco#{PkWeN8+Yt4HGy zQ)h0a_=M&s(m2Uz$06O4___ zM|$t4u1gKxSHlF~Zvs8t06a+YvvpJjvJGs%LTC&Io(sl72%5FGoTyJUr%4MJK{yT% z6UOFc{t|fE<$mg#;%~5?QAIrA!!-URl7_H?4B=3^JDv7diEkH`ObD}p)3(CfJbr9? z(|bOcCZlq(ZvCe8?!Ws|nmleKaOFk*goP1sGB_Es5YhgCfl9hyhv{pi4DRepz(pAX zJizr@?5i1x1ur>_`GR~8Id9yZ? zytd&H4$6D}hGaqb1kU)d&x^|(S(2Z36X6P`OrKqO@@2Gm@IoG{_0(3`Z{ajzW|}Cc zVw`NVEFsGIscL5#o)z-oxz_t6wv|SeFv~A+h-2S-;Wlu96BqtM*PndN)BKf$*mnNH z6fcb_!5++$Pku_0vighG!YGTpMTz~dI8mZXrFyOIfGc?%%$e2;C&zL&Y3zt&7%HF* zBF7xt@#03(Zj3HW!FpXY*=%Q5dpQ0jN8`xUbYO_VO}9omT@5Hv&y3SyoL^cWjOOgw zt!ZxSkhFpwbcxuz?;e^~t=)ihX%@Td5T+F04#U&{V`E$im8+<9|T1NS0r-pZN= z!(`otva4@@$vDqyl`^g(scj@VJNxqjFM;4Oczp~$irm0X3n+d z>$mU}SNfgbhS}bQF*1I*DqWnR!=v;K<2wgLh9z#5r2eSd(D53-TC5MmP9S)oXZ|Kx zw3uzfSn*3IBNk5{j?H7oJWqxe19Os+r8s{`zmQogZ8~k*)HI2^zr1i;MrrTfyP5OjD%5n%80#&Q#v%P2lQwPH$>qn| z;SYo>#wid!1Q&ATVCf^8v+xjMDaX`_j{%_2~4NNBuDitLjci(m!4I zU+Jcm8&eY!qtWc9yZ{S3NtObH*Y>tVhzn z{QEc3*-yJXop<&bvA}0l0`onZ?p(1pee$DUNNLJM?gkjkA}j&bS49VS4|zb63yg&4E)FwZymU_b-Pb)o2o?QZXkCcP zqGe+9_|I>DKYim3^evgzu}s7RnVA!X)%u&0pje&-!creQ+DSgcbinw{P5< z{_1o81%tmWOK{#*J-xOi2zMTEzT^VW@zr5v+^zOHRE;TeYhT4Xmp|5?9FVD76LZgejqoN231<>pp zL6n~*3YwXAbeV1>xO6c)2m#zn*zqmHFnV+&Z!CPA$;s+oIXBgwB-T|klfe)+^L7l$ z5Qz^Nhq#Z))f0D+#Zwi$+!o|Re4%TAK#g5fV5(Xm@D%qjNzn5@`WjDRaMxeL*D}gn z69x49Q}9J1%7`6)-jx2>c0n+iFBummDc;2w;lc%J9Snf}rgL72cBWhzC*Ql3Dp4m> zc%M-8N#SD5dXPVWC+t+5km~Gpg*j54$Di;PX+@DXNxa#Ps(wWr$}ROYFL}>+My`E- zpsT2l_Yo<5l&H#B?~B13AZt-;!dTQo$2DSstB2mwR}b6!02%GvxtDWC7-`^p>+a6L zLBWws(gDnOTaHp4{fqNW@=s}<_};J!Llk#!i1Qmuh^tg-DC43F09USApBA*Wrg`() zAiOpvFS3=u*Eq{+HUzY&C+vU{Wq4m$E40*PtVXWiur+nKky}$aqQ@FAj)6B0mF_Oa zaTn6!Tt932z&S`ZU~ztRPNJOn27eD+k@cMG7X&|$W-Oc(i*Y(OJU#0fPfcf^ zxg>4fzB9f3<6lUB^x{XSD=vRbsHF6&GcY;0i}&>3d1CsrcYP?`blaL>m^`#toCKM> z9^QrVq$fQwwZOF8v210!_OHLlf;B8Alh~PrpzFkfmxLf|aGdLKg4nfUb6R-SrRnOc zpAlw#gMc9aSojFfi=2d9N*lNBO5ghOf2L8>&xROb5qAQF8NA|($EGEV76vW?c7RiS ztW~Bzc=j{WCqMUv^y!cNOPY1o{IrjWM<>(S$gcxpK#7EmmlKoBplT}a@=72Gt4y76 z>zsg@KaiSnZYJU|G2^FNqXf@>2v#TJ(c~==yB{^GoD%gHh_V9*y5ruOh(t~_7aal{qoqM{ga$yd0v|S zqjh(8S@Wc-VEWxjJ3683tY?mk8YTn}pJ^O$N|<&4r#R5L`voYd{h;cAs(=!_Lp0VH z>yMvt&1(!{d)W2+))(K;eHN3`pTFb1>C2!0VVb^lO28hO@kfTCr}I#n1fy?%n#zJA z!6Q*7Xzq4t3ij$}{7(Al$3LAu^YO2y8D~rjTuq>E;>b1-ucIha>s`W7m^l}m30T;& zeX}Z`b<@?0FdNn;1q7()-RMH@qelXH|ihBgqf z-qda#%wOD^)xN+_CU|AW3{z@k-x24*;Lv`?wP5}DAMGSFXn#3MeeIQ{?Tl&ty|<`g z)R-VPM~#*d!W=d585R;B`h>YDebEw{`Q`;#!dMEC{twY%?=x@BS<7@~7Rf5-txi?f zOeapug6_e3%Mxz;2j~gsMU2CSLDW*-$(-d`SK)K@<}>@bA))2U^1P3RToSo@AfCXj9=;&5l-+YU?YvpmS*0M zaxal(I$zk2!=MAtEJ@PJnsGBjWqj+YBT7i-^VjizowKM8{nE{<+z&G3eR0jJbN``W zmL_0nYj;NvY5MSPeVlWK!7$BinHszBYhh$Y*#{Tf{Mt_{;H`7~fLz$4 zov4O>wsDMa>S~9Nw)EYYJnRcHvymqI#^3VCJj}E1`eQ(>WISiwoDfe{BRM8?x!wBu ztBq)gqhuhKV{N4UbpFlK;XGG3t~DcXAMz zv#CcL6NTNrJ>Brb8`Gi%ZRqNbKmv7f`s(LD0W$z2_4D@h^ymH-reP-qQFrUDccfjn ze49o6WwH23?5$Y2I;2&tEM86~=bw9adc&(;l%Dpa7p8`(s=+z<%kZW+Mz|B32Wvej zZ5~p6F0i9H5V>*V9;m|G(FZ)2o97skoKoDg<7a%Ikq{w-zVI)8c`LA@vc!bb%3U1R zNuqee#?6tpjkFm_0wS)^@%KB!Fg$jW7}xaY*JTV{}nFjAH$qj*4n zh}mY;T=H%-JFB;=63H$;W^HvHTRZr>DNSE;9z;)`=v<6r@t4ZMNsLdReb(Q$fv+8; zT@+uLsqeb>Mt12v|!SwWi^-MyJlz!n!pzFI*f(AVP(Se$;;3 z5Aa_ATw{4!r}g~3JGGp#0JQ;TQ()<+V1g>6jVWv5qBLy$$h3boZJu_esi-qF!ep(# z?S}M%KYD#yv}i%Ju?OgZ4p=9};?~=ne6c@K5BpOOCV%&$^Sz0)2@*(}4YqI0oii&v z4@USipT8ag=4cuZ9yi<$9#R9im=XQ2BkHvhmA#8u^z5TZ5+IQGu2j8mCMRpBv66u# z2)4beOglZzSUMGED>IG3__}(@IBcYDQ|6^%Smqkd3ONpfa^oH1c66GsU~=kMvn~Df zZtfxq0*`h!9k{aYYj17my&Jr@^2E_Tdw1N%%kVU1@tM(HMz>!E^W);gA!GA$p?6ml zRD(Bn`;<_KBH5$t43mH;-}>5DWw<0PWpHGAyl7QDe(`t&2Ej3FT6g2^EOAzYd<{1* z=Np;VyCH6sW61z1A(0``9ii_9V?r8n8+fvB^K%ReZ|>;?MT-11k1Rc?g}91PJsc~- zWM9x(AK~&BaFT~4lhX1~>jS33D9IeDl4YI!X*N9PCyx6_Es6GnsNjhQ&5;LV1#^(k zHd#lQ5Rr|Go#}Wx$sZ~y;Uy#L&x6sPV^e|`=E0de!s?y=zEkeq#wU(u*|X)Ysvl5n z!P#IXiWShChCo=+#n>pxeJ5ipr|{kWq(O&?<1y$kepK3xgsI@vSdR65oLL>deOH=} zF$X0+>rlxKNeej7%x0eNgUH3te8q}=Ttgd$*&79(+qpkx_^{1k3Ga-BL(}am+KK0; z$Z;)#eyh zyWt?D?DCbPh=_%dXxM@q;$?*d%rE9a(d)!y{$4hBV=VTs(rNt?>&|vcm0arNlbp^SU4Dm^SKjNcj)DI*7#QuUxOI8D z^5wsWDjLKust7mVwk$pBVGm7hvs=@Xo_TrtkFWhW4V!gt`tA>YmY(*MC#D(Grld2M zE~bw2E6Yc#(<3fEKaInzs*}XeZ@#svzeEy~4aCRaf9~JX=RWoq>FVddBE9yNe+bht z3BB{V>7vUnOh4rwjj7FJgK4NmoKsn01cESOv}qY^{j#0u(T_blz4&?WNQ+TH%eSl_ zW;bzd`ow3ykiPxpAE%$)zA8QO@y{bWhwPg4t?Pdf7aQ)xV$xMFe@p7Q{d)Z8Km<>O zpohtW5hz3$!#O4*C&B|rZl3PQ%~gXyjntJB9n`OoQwuYW%M1JbBRT>Q|;^TQwe z6sm|{N;8&BOG8+Y|NS4{pXSVJLC1c3des}RO}Bjir|H#id_{V~<1Pz=!%1)Vo_*r` z+QhE!5pY45|{Z|Nj1s=?!oA zXqrB6d>HlExurY3`vV_Nk9zn;sTmbZiDB#em9Kp>edPWB5)9O37oC~j{g&6UBR4#~ z|HFTuE_uY8(uL=r3vq*liL(y>`Hk47l_CnSc6Xy6($A7DO-UApL@4@uj1 z?n*EDlWWt;pZ+xc@t?jrJ>{w^0=G(&zWu!$QHAr4A!~`FU#-1$Gfd($(o>)O1jgdj zz>VW>1B>MiKloAlz{jpjQ>STOS@Kid*rThnDJ)y=O2#fJA@V2^{&z!s$^cb#yvZV6 zyi|WeIu#75xv}^`umc!)$xOw_p_spAm6r6iO!4K|$fe8tsBSBRBy+)n3GwK=I5aN_ ze1Do}HeV$@J_{s=VREH6Yn}P{GaZu;#0$hPmCE?aI4eY`{mtwOE`wkOMwt!kE|U>N z2z{-jckas8>tGVeSIK7l7*jgyD=yUx)R~XxiX^&?FK&GrCkh8MM$M4rzozRWZv4tl zcqPtNVLU|LRcDl0RKjf;y;jzUBLgLIrxe7^A@QkII?=^v#38aw3f*3W0&YMa|ejCM2|_Hgdh z{>+(I&OR+#IG=lxTB2WUW4_VZzQOR)*0!(ksX-uf&Y3Gcr7O0>7)fS9y$#?GW z`6<&}RWOoUPpe_Ogd>qw&p=(T^VK|JW1!d97fK-cS*IXx{{xG*-S?_{m*L3?5h`Pt~sn9hwY+$rYRQJTJT?M4i% z^f5~2)eXaS=G+;SH6BK6TUvn$@}?StDZ=W!sMf=j$rFMGh>LHldYQ)qXzX$^k?v%!+3(kKCMD7U0#Cy}1zWPnh8ZC`M_#2lzJpISN z{5@7$ely+pjqj#4FaLuygL^QP5MA-qN2UL|;g|IMbAowt@!7&+^v&yk92m%XXJky^ zjun}!fBM87*yyW zZkX^W{&+`xVL5vy@jI7bhO;BR^aamO|M{)!)4AYhI!xmWpZd7;fp@++UGjuyruPEV zyfzG1K-BE#GRoqzM8Im--pxhKkKP+R%|~+vkUHG2=@8p1MFOli`}b>E;v73@~B6IBt}9m;$A)_eHXmT>`8zY;^69M zJOu`CZ+h?BKT5PQ>C^xG&S1FQ)#_j;&c)_Dh<#zwlFMna2 z8!IqPMzZ&U=ly<|WBu^^-jkkm<;SB9ym!ZiO_RPZST0ab&wZE)F#G*+(MmJsgTBKs zl+yzi(|UOJC#$z$m!v(t^Zjp4zlUm`R?l1%?a!+F1!2}U8|Ly2FuUW^YE=9l|G3`_ zMpJXH#*=7onK1*)T(eTAOwYf677Ilg-xBkmdH36SrR#@+_`O`0t;uKMzvl7 zvxKy=#<_UfU!>g*%81}X;s-n)em|MBPF}#M8k)rT5EsM-V^jbDKmbWZK~!AwlQ`Gq zHkXK$(Qwr94nZ-JIYnYa0#P&C`bT>b$+Joa87J<1D#??#liY6Le5B*fax%ffJCc(g zh?0uzwCHdJ>c}67ttx86ha*L!ZwaIDn1>@gh}`g#5CswtaTLPkD0s3SG8e&U8ApPM zLYyy@l9`|LmHk`BM*>?3l=%p&{u%_(u!G++Nx&Ukve?@sy>0 znUR#)^r!U7pJj`8P4b2mi9X`DgcdJhDUc|^$SHFL{3yi|l@1l$6$r{x$P|8StYd^! z4NY9jFquwuTusLB>F5q~;nN_-cI@VoVvH$>H{-~#Y*saH$QFphX=%=k$#Ex=^W#t~ z7Lo-K`$OTU^%9>VEJFEKdbyIzIj!HUS*>a5!r5v0ns(qEns#(>Cm1{POBT*eZEbS` z|J#siIR-7uyKd&spUYgr#u0wr$z&PkKO9MbV^A~Twwb1&8#s(_o0;Bd;ye?`w!dUx zpUdG{I%JzgOIt5{8{egW*e7iF@T)p;)QyxP{j_pCv z7U*&9i_HTVBj+B+q<*%KZE~V?CXO{Ca`8`J1DF7NK!m@pxKJA=%)aC1g>!`}cT=WJ z4N0Yz6*r>EB9zV>UCh@SCYe2_jg7Z`Y1#4>sIDJoLm;b!dKSsMmS#>KPrTO9sJRQ3 zQiQ0acL3)NkYS9?a~IA+`Z)?snJsB8(pNQALgiCv0nrVVNobMGHUF{$X z4^`WC-j!bb+-HWwME&yrzTt=Im9P7Aq+j0(qH-n-%=52#CZn_~h_G%~{p6X5?0k9- zXYT<-=jfTZLwZ~}RowE>4DX)(hr=YN>SxPVtO{JY@Xm*5*1hmK&j?A}&Ru)b|9k&O z(&G7T>0N*E;gDdo&1p^VeC2b~UtIgvw2{fv32zY+v8iW26sq;E^stN059ye9GJNCP z*Qar3T$--@t;^&7gkRipd%EOF&w&uXlCbYl(y{cYM_!z+eEJpXz+ITwEx_|UB%?E; z8EMN?lI^n({Qm28Urn!h!`sr2e*7~g-h*i=Dr>KJ!LtN8;81nIdsf_ue$NN~I$iso zzeGK4YY=1So^?ig!OO2AVrR6AOi2^FSi6x#{mGxcBmL7Cu0vg=C)9&fVY}tFJJX9_ z`9|90N0DAa{Gx}VCYd(i|CEp@NqGDh^;kIfvFY(odw$YrfsBz7v^4x27B+Xyvl(73 zz=@9+z2fyq)NTyMz)L6}P5tSV={2u^Te_)IwbbI!U;XvprWd{BRp|pC`kORjZZlG) ze13z-z0QSBCa(o%@YZjCCf)L_e@=h?`d0*FxsDy`Pk#3E2qKrKM_qAQdLrl6G)uf~ z`_A+?fA{J1=C{8WhIeHU`wze90wh~kr!C7irLhHqTl}S z8^G~9)6ahXOPE@8;_0WkvG=A&!f2~DXnTI?Kfa#kJnX9U?)Uy>`s#mvGyU_wei<#k zGeb47x6nae#DhPxRXV6zh|J2#oOUNtq5*ZmS z)$HtBzH541cn%)m4iZ#+j}Sj#6DJVKd<1T?3SMTEoC`w@kEaB)_4cQP$NnTPWt5zg zB%CC|O%qZ#;u)@sISv@bL9NT}QTd2pnVsqv1{#3LU1Av{%M%yY$G)Oj>yRiB9{t30 zWJQv2Q8IrNhS}bJSK#CbC;03AEB1+z=+dwkbsWA`r_=z*E=+V=&zaLvxr4_kWr$N% zrZ?@}mo{K@VH}$;OXo~a;~4MJ_bfMn>kmM|S*>s6Mc-J>`6tz9C$hP6ChE|dGk2cp z0@!6M)-Wcz)7-h3CT9cWD3(FpM00Livu17V_)nWQ9pe)avXvAd8yvx`JKxc6wjDnW ztk4+(gxq$60BR`S{X%L#YTv@Zk$kE zWzLPJsMYx9qez_SVgRR9x&sn-**W5fQn3#QR6z<%)gMO8z(3U!H?wmAt z-u$>=`OZ6+(I+|E7#k|IHT_tX{JAqG(T8V;fsth^*LlLAx*mafgFHsSC@sYrzcrSC3G~z^@(y8YD=accjZNeHm&|6A%d>NZ-C5l_A{EetvVDVQQT@BmMp}FHN8O z_}9|-d5hE6ufH)=@mdfgpL6EYi2F#0{Rs?Q3Fn{u3`vt`JYbA;PWBGcSN!4g(#u|S zO zrQNruFMjs3>ATfweUigWF))`aM`~UJIL1;+Ox(LpN8FioK&byWeQ>9eus!K0SpSW#x zTDoLm5LR0_g#33O{#be)s$>(9_{cQ4_`l>?Pe{XlpFK+sze{X;`QtffEJEQNVr0*t4i?LE6;-1%nO^lx@*^M zOwaj)cOrTGMHoDI$T??`Csyy291WSCZo1(sspmC+7;s65tZCnvzINR|A~8BIP2}*o z6L!Xq5cD~#?E*GxlzoFZ)TeqgMYxMDcnDrQ z*%w%n-t&$>O;3K-3({qeyf8iP(u*MsN5xL#5C~0)#FEyhb#qhU(&v!p${Ql=!pol; zQY-Q7Vf1UB`BwaIOaFf3t?7H8`>WK#&U`t4;ypAvVSVJoE=(VI!;8|#KX+aF>kqt( zGf?NIsk57cS#k&OR9vp}$zz(;a8x6e7TFK;z&<{Wc}YO9^hfe&DkL#_j2(Q> z+Ng@sgCP_m_iLk&Dp5w5zP9~fG;CWL^d9cUNBfZl|U6&+R#2| zy$TE^+^2m`W+gXXkx>#l%B>63MlVNxZ} zz5N!{RHtG*VT%{R(x8pt)V|W+$s`Q)qb^iN^=4J_Brs>roSBv^Xv4bdnmF_7T~Mo6 zuZuH`t+QrDJ8eegHKal0*N(J!ZX1$$B)(oU+KEc7bDw1mXFl-$B;)$6guwcr)KwtH zgFhjs;Mog$6<(W1)XR*GR|Ob9*Eg4F-zzu)g?;(eX7ua+ULns1yh9%{E4+wFe|fBE zJjjil9OzhyKqFLsIpp5|wZGVRoTp@#+(0q^eV7jKU^6IRT%6~hDKP1+t*y{W2hyrl zt73dNG9Ybx=QhXj^eIhgX6p>*#vazQO+f~^M@(?QZ=ACh&w(i$omQ`1pEg4`sd`@+ zC2OFj!gMaBoq{1FH>B5TTAzM?8mfDb2(pZTbwEtf>?|m`WZyo-dG0#1GyqBU&j%+4 zoPNoh$Ka*zO!kbUUcOVXnEe~2?0lNhiE<8rf0IfwGOkN+iSGk!DOeEokjNY@4N zHVX;SqDNeX)u9D(fY~z>U;O6xQ|lQs(#AXQAa93G{;O)06N$T_T8sM7M?Vq95e$9i zlP*iod(PDmVGc8i$r0?3Uze`^%vbvp6PS`c^D*bJ`_9fJ|0K}U?gQzZiyxJ4{mGr| z;-J^Qcz(d5*>6r6vy(9?@;n`XGV#ex_7MHnMdyzE;&t?;gwfh9y`%~i!*-`D&rtvw(aTEJ8-tc_Uy(CF~$@cAk-yDB`$-oh?S3X z2)0AD;Mp(Iu%&4Z_hxAkDEGd|uJ?~=C3@Ro(mx1eYFl1#{(0$fzj-NYiY@7tFMUD! zhp+u0%)QzMwu=N;O7qh6#naOIO<3@m3hAU@sCV@_`<&p^@?a`%CH;{iR%K? zc*~&5O#Bjwp^VZ6mt2`{x?@9{&91!6q&VBLL;d#k>70i>Hr={rPxSLyoYlxX&r8zZ z|I1g?LpjHF!FlI|g!P%f`;_!skH0+q^rl~?SH1m1bo*{B7G|q@Rk8Q$A$lczhkNf) zAhi#((H4Z4cJUcMA|8{9p{_E=68gtrmi)FIRlys`{Ae=WU0R*eDWXPRGFwVO2j4%A z=*Ru(gOI$6F%)7|T_xHCIwuH!;|6IA>=tVO(1?S5%X!i9TU7BP3}((c5;?~s+_vrp z@5YsYl6WdiR*q{wD5Ym`Ba8gn`&Wh_7$xfOW`biwd==@EV^w^}Jn5%|FAP4!T<)0| z8MnTA_GZkB7O_T;w2s0OkJ{it->qd2>4bGm1J*9t<~~FreRX2KhGEig^S0g0Ka;TV zH6zA}=belv!zA;#ZEsf)Oj9N^N1^(w)jIRKT$f9veo z>5RqmP_;u<3AI2?BClDy7L(%h((JajP=(sCVPi0^hnTx$(!8{`xw)CKKMHLGRg>8F zVa|-PE4<*MzDp?3g&2daEcNB!@E z90Ts?ZMkb(dg?Wohi9h0;J(A{7OG>tioUi@gzUTC^_L=a^cU2tAD za`3b(8JJUIvR|=cb=vsL@1!#>yo`A48Z&HSzGou%)Ia`f?9@N`%EtwP>e(Ji6sTba z{}}EEnA}ScxC1>7OEPR_5?<@F6`3+Q1fk6E3|-!oZ&)v}og~eFuz_3Roa$3Ty?FxX zNLWNwms*GvNyfo@m)5V}6ehi0U?r}-IP{y}`5wE=4G;-HKs<@24XCz_n0rzB?8m>6 zp3PaL^N^BwR)>Qi)PEEcTSpi~5GIKv7f*LRzl%!Ss#U9FVRw?3h_FsSz3FDut>#vX ztf_PyG-u{Dt#}t6NTk>e7nq`h9lP6IeP?OwN$HgmNC89SDGj4h>HET$zRIP2`$D=Sv!>+Hvp09FY=`)lDWHZV zKXgdx%p$$iM;F9Jb2hq=eFpz))s$v^@pIRwhFRm%=l=d9>GRip zEzXf?q~w|_9uZa@BQ=p-48a7?OvLr!(f%+zJ^#5^vtckl&O3eMo8L`eK^<<<{5fm@ z{CXk2>(;__ExPDuI97 z+W94`;bm!2Fj4r$n5Rzmdx;<|)s69fDB6!?IiHH?7H;uS>+*N@wC_5vnWyKJ>>pup zLuQG&Otl(K$`|~4MoA{hH2R5br#$DJ0mbwdX>UEm;UnV|JoE;h%?H9NT=x5r zC=P&0_#GLZEptO{_2!*%-%MLu8*0s5R*NB;gP79ak9EGaYu1K@X=Y1Hs3>mTwkCB0IB@PY-&_LTyp(dn z-voqTe~efmUY zxksa8KO@dR8o$mg1xo6F9_$$K{u;Kn({DWb&tfopFUYRldt*l=4nZ=hOE@+$I8_;Y z?v5Jd^0hZRDjE?%$^vH{`f(Mi3`HUam^b7Kw!Qgku^bH%wvua15 z{+suwMgRQ+4z@2zPrmYsbj$6_(m(#)-=y#V_~&U~MP!RNnS@{5e0y5b1_M=12KuL# zvFUp^tw6NA4^@ulVA3vn>{;oj-}+a=9?k-o32jy3RUL#~9viLQP9hV+F`eU~(|Q9o<1Bs+-LA(r0qhF1^B3#r*OOj*xB z9j(H1pa}yAcdlB`?rL`s25s!1rqq^hzVVysNmsupq&qIwo{dU9H$wcntW=$*M_Gt9KHDBT>WJ!Fjm1z3DYMy!Y<{ za|i<&#j78IP>L^s@ywYUP49?) zocnKugb3jezzQ!{e9}K*id)CT!FT&@YC0B@#m2K9l79K4Z=~}t`yH%QVtAt>;B27Q zsngSn?OVa&AE&pG%ky6LC+XEMdqEiJ(5!u$c}7S)tw*hTh9%xNm(4xPKomyEeEN+| zzHKiVi4w;;9>L&(=Y^DpMtTT?qcQ^S_SQJj(SY=I$Pmhapd~j5W+arvKd2QvzMZk| zkBfdn29_mkK6UZLLjv8oPY=Uo4xEdGU1muF-)CXsN`Lp<&;hPnFsxxDQfCMu(`BZ& z4^Mr>bM}*v3po5!IdK}y5o6Eu7H%%cC^7CSM=)ij1nI5o=C#hEY|CjG^$xUj#;M6Fo8ku!-c98#ZHQk-h)}nEL(;kihzKCF9zsSeJ-2F28ZM8cbqA@n8di)?W4+Vx z$cuhNyN4Pz#)<7ud60k@8=1d&h2Nc2ro-?9v_SzOS*ML0EN9M{GglI(enwaa&CA?V z1Cs?n%-5(-A)%+882R*D+Lm?%@4(Sy4oU;LgBQS6MKi|+RmBe+;ApS3!_$9_EyJgZ zPv^sXt7|z1K(CJpUL28ZLLn_=j#9g-d&RbBd9K^W4C9dvmavftL$+0C<>*sfEz;IC z5M+r?m&sOCRQQ^L1QV?h2SD)j=+RA#QkmwEIx+n7G|t(0Rd5Q%PBOkTK%2|OGQhNO z!9r((a@3!bj1v8|XJL+vEcNuW%F`EC`V|wqqmJ9wx~UHv7>;i}GrKAN9aH|&yz_X( z;ioFLx>gMA*%)B=v_TgKT8Gho*%?-kIEV9tYkqByzWTlm>rrgeUY#fN$miOHvOb0x zXN(a1&VFnqg+p!18&7LN{DR+4QznK9^&xEh-}c0dRwOZTAcTVMcib)Yb0$K|AO7b~ zyZU=ybK>;#=Y7WReEd~=exlB0Jn^zZ*==SRu`CwY*uzKo0*0!I6JR>TXtQ7S^Hf-v z>mn7gpa0+rd*g&7Y?O=Jm+cUvVQCShvfPXdQzW4?psRO@D2M@^5fy+W;NjM1Ar3JFc@=UU`jDt+2SWan|PU z`ya92TzjkEbM(}+FWHGQ;8382I!im68+1teUvE!RK69*m)HwUy-~MT*OTsr~P(MGD za_7Ad+x&U+e0P56(80oYj(zqkSIP=hxC}Jnr>pLAdhXE&ZTk6VSvMI$z_7$4Pu^lP zX3f^wqJ3Qw2=R>30Gtztf|4^4wRy@z@C>qB`28*Zy8TNJLo_9}r2f z0x!FP+=21CTmGy?shthzU+#A-v5;a7Z}Rjx_U3DI?Yy&3*IBfFwvW`^{vu-*)lyYF zSSpk-P%t*nz4#h>4)xz9Jd^rFg;txBgFby!!(M3WMoZ^~(!(i#qv35>jmfCg{;UEG6l{}0t zq`F1SO6}J+b;pgcMc+x~=ex7)*3uzAq>IEh**M6`l3dBVjfiB5K+1|Q^9X&4ItPXc z<|hzaA$^e4GDobDdMgYa_wuw?-$05M@FgN#1<}^z&G{Y(HJqyGVP3WZLw{GlV6GE# zU>3aYdaf6vgqka5!OTUeOSqsmoOb}9Eotr0QVzmS|A85*5tGz8KTDfvx_?NP@L-Ny zWlp()(|FnTqQ%Q~=C!Zyv@ffvcYiNXaoBmM`)|KZnK^?4Tk$=#j0;=clY{OU-9Ul` zt_Da_kA!II)S1rguqm{3=`!oxr?<|E^wzwYZ7Zv)T-}a&H{dgVktwiEIFUHIT%^d}+xrPZ|z1F?T3V}m|vfm#Qt;DSrWVSM^L2E#6#e^@lr zSD61y5 zLeOobUkJb<8b`&t)@9D@Iksqdjln1}*qljGrMSDVyd>X^My=9@_j}r`KEjGRnd(k|MX@PPIDNVXI2t;`b0X?1%v2Dn>k@syeN<*#4l#u7L$vUK@ud-ShQ z>Rd*dE!Q11R?=QllUMv6n_h*bwwDgJ^m>Q-uR$dJQf2aR`g*X-6|A#UCD z7p%va!+hb#+;q?b*Ey2(Fd8gF41cjh4&2X9`{YS3UAgb~KeSJu{52aec91hR3~!1lUvWwl)haY>&@5!P~-_%*5o+lpb3*R|so$lpKo+?X6B5*m+ z=a#hu0z289lfbwHFt`{`uyNqt+7`uW52(g+ zt2@ryP|OsnoR9zg8TqJhXwhbeb9Xqb7oj3YIdK6FP%FuTTT`~LZKB@n%_6o|N{;M?ibSY?SU5fH#I=s#=woWokNSoNC zs#;m4`XHeR@PUDJACf2CqdDhopn7Jy*nX(=01HwwOenLPUs+YHaj{st^gV3Qp#D;i zMwMxUEO)L_-|FD!l(>3;v4>hG?Mt5q=lqz1fGuof1eI#XD}Usu!}eS{h`iL7Qc2R$ zLkoH|Oy6c#hk!p+);TGaMVCxr966M_!b{ zoWMNAh7f*8$(i>lZ>`o9BEg`m(`j9h>a`r_ld#OldB^!^lgQXn2T5MVOZi4uCmC)) zQdA@wWWLUcFOhk0--uCtnXX{>){6ER-m9CH_wQrXvcC7ORM~UY-=oyY3;KxuFhc2{ z$!i6YMS)_%S>9-iq~p7lSxRE0^?lF8fX^VE++x@CY114=h)#8FC&)Hw0G4$xw8<~d z)+LuO>;8)V+Bw~5{d#q`*PoqY#RGcVQ_sI{2Woe_s7R`ABDN>oz8{YEm<#P15)P_lUCY)lzrou|6?WEg@-8Ys2$~_Ke3NZeEwZs;+F3hX|jU} z(ZMeHcC%dhkc8V^y{od#70G*x6mbqmPfWJR&rd@gcUEiTuy*+#zd>U0c%KP_8&#VrGiKSn zk4%*0?RD!lVuY=hgsy|&&CywzGf%zLzI??wexYxEevZ!&+>wOZ-Gfg)XZhM8T8jlR zF`Iv%_?#>|1@ppF1oyv$*Pg?>%B1-QJxg_-<{5i;#$3Djv!B%YmvU!Nwum}dT3KaJ z3)gM7Z1COssZ*y}{n|BdumEDJv^dZH_3j)y;>^qJr(ZeSM#$101VWu)f8~w0Wby7# zf?EbSDuU_>gaU-aV`A1Y5j=L(aMgK}y(kNC*Zt^LN$1LJ!TVdiE#FpKa`<%RDoHbn zRX-6b)6{>~)z#WEsie77BUi>1bROyb_b2-qwHd+}4cBjUcf0ng-`LylO|eg%^f8(4 z?xuwWsg}(8E~t`z|gS|g_vUQfRk$ARCK|YaVf$sjl zJ!MZn^o*4b>*vJi-M2j5)EzSDXP8|Z!Pix*#OtFEcG zy+@Dm+!je4@1pNqZ$G^B(|)P%+`tE!0Iq{9UkXb)5O0uG+G1GHsi9LGH z^RA+F&KaL@3EWCuLVW!#ciH&8N9s#rf*gp-O5yEqk3VA% z-v#`AtybgJham-j2p9T?7(0zSa0#)DACB+n;+ZsvW)IafsF6tpPecPMQxMKuq?X4) z{7gq5L}CI_5g9S^gt5ZZzcXH$iFWcEe57##kour16ieH}9AWK`@||E;02j(C$o-IF zM1ndnOeW1;lmU^I#3%PYQRiR*FPvM#+&PXz;OjM? z@C47CA#1C-mpVAkn=ht`Z%gAfNtE#c+$&@}r-v+eb(Lx2DqV72uQpA$o8kkL{}G%? z$D9l9+6&Lyg9Utqyc*N;#*Z}YbI~T=F8J#m0+ah@P)qDB_2U5p2H4UiOQbPTXLT|t z#NA5Wbhfsnq^stsdhd&D0O2Svc4aneVm$)rl-j(DRg027Vv!dxx;kennO3vl?}d11 zDkMC>N$dmoP=0_Z;31aNBvI=}XeV$dyn@wC=Pjo-inc(Sq^Qowc>99X6rLGRp}pux z0q1O5z(BXe!5ry7*}3yEznL?H;a)V~G}aj=n0Ji8&|gYRORaO4E%YYD)#W+tpPwz`Z zgj8B~10koXXThAMTZk29pINGGHG;>$Y`0E3>{L5x#-!> ziU;m12CRL$9t_5gnk=hkzM78Lsa)3UL_8k741d1-9oX>(eFAYEovdnS?PZ z+(|GknFc;nbxtQNwhny;0bF@hPDmOvC0ikVv?HJ7c6 zf*M>pD}Nbe#e>3muA146cq|%tfY%Ah;W`oEtLM-@)F`^{PT+S^-RDnw&A$KBYy3_s z7}MMDyw|?}jZ0%hJ-dtO9_V)!WvgzLGv>)JRj;yrtg|F9NDQhI<>$zNMV9KeN(`S> zM7Xo9>yWX2zJW{g7R{H{y|t3uWV*tU*1czetynA5;^{ie%+P{;P z4BlH8^=+|S)n)ngCCUx>qAS&zB{3p`k4YH}(5F$IY?%LMjI`~uV1x)QnOl`bEl3{P zVDT!Mv|k$378?`v7sFX*YXlSR)n0j5%_NS_9Hm@tzx}Lk9#-@g>ep8caBo{OS8cv- zYAVJ+;ia387ht0==8Jh=y0}IMDiZkVJX#hXrCO)+g^ZkTL&j?tU1!c#qPCgg+6=Xx z!%D;`#SM#$@QhCuG&Q~B2I5TUY|>kZ4#8hsRA5;$TmbWvrU(*wMdA`7n0JT-k0%P2 z`;6EP&C1c)5D_jIjj5KZh|`V29b>1xbn=U2ovfYCvvE0XAZDb(D8hHG&L=j&_$l9A zbZ7Zq zPMWVn+*n71Fye4G#93gL0yFzTutS`2U(!0M^R1U8xj;z*Fq78>#S1q zm@{_@TdmEaeRQELJLvDtT;RL!j!&gw4CJVR?oUi%fMCrv>sBgYQeE!{yeE;trn51xk#0wUY!JgmPBQoUG1iHm_w)kMCm1r zX{*~711^EpJhOOlg>b(}ZLD#kF+ksoj`>a9K^G!-lZxg*ZK^RY!Kbu6G_DpdSYQ=m zRPr=#2M*}3v!|WCPmrFz(UQKv7$?8Xc8dLrIg>GsW(1ZOYbAxocvYb;rmvL>^%59* zG4nX`s@L6c+&egMkTeoB|IC{^&nj2csDv;MfPS<3YmMf_k>x$CukJToE^DptOrNj* zhU%SX^^yD`Yi2VfyU=l34VrbtfePH7qYjMWR>{)#Fx2Y5$6$bk3#m)#u%4Em-Phr& z7lE}#3mIWJ=4gn~zM~Ixv#$)o8d<|by@D8+g6%$bf*vJnHN zUpvev9#1RghwNFH`lr%zhNfB*T_)o~d6ZE)W`au=xU8*O4kM&m z6DAT&p`#K<*%1z4#jI`L(TD1e5uLeE+Epr#g`TiX*BD=t3Nd`Zfu9~;4@`3+J)^!c zJ#~sOQRl1o6))6?Jnwuq}(1j7y9~4WeCO+`lE7g{$2vLq3@leLGeDG2&!U$%tb52Jq_V$%IdgX%|Z|by0Qn>ED3#Cte zn5$aGI&n~)I)R7IB1((*Qkx6+4ce_n5-0x4x^b{v{;1p}^MpC?DaIwIV|lurXrH8H z#miA;VG?_&Ke1p^cl^U2@F2ooaL`w>x%)yyJLPmM%(k4ahdDlp4!&SSWB%krOY|AF ze;U{Hg*9ThibwPnkv-7Xs%?=#b}KKoqMXBh5#~Z<{J{&T=Skai?@?&E{ld6{V5(KR z_N4`~Le^VSvrS?|*NfoGv%InZQ^X;0kx-Fu>_@=6Bj<#L{%m3QRS}^hV4gHg9X~N` z2QlC5o)e4$N;J24JQ3p5OVqfhZ2_nr1?HTw1*3`Toj=7a@&rz#a!!CL z4tQ1f^l$NGVoXH1WVBgJ%l$C%m}4tt4jdwlOJY~nYV%Ea06U~fnW}6+dUJ)- zZo;`Yl5(ME%FBO5hXD4x`M~J|KiLIwf3zI9hm6ZXyGZR0#%P74O7tc0hcOOUuN0i% zmbQzoSy*FWOP&ChaD4h1Ga8IaBwR++5Rwrm9o;iZf3?0OFu+D%TEj=VCkh6&`4D zFak7`ybQD@SSv?~QR>yZ%&OG4r_WiW_}av6wo~oCnhFFr{|%#rth;G#L-9dYyZtf& z5k`r4t<2K)@zff!2VsB-22+##qRX6g7!0U|C0!gK5CkjNHtwVoCpig`7y7jPqKo0p zrj3yjPbQ(2b&X}jvWY?-5R&{dT{0eFlpE^Nv@V(H;&+Izb00hDfGM-i&1KOX?ze$i z31Lh(h&bMngK=rj!L-28HRl2`UFYg~oDYHshkTrGX&bX1zi4Z-J%&pTz-k_g5 z&3Mo=s;)Cm!881&9x!xOiM|oa3*j(w!Q^-{ReYCffikU>>ECo3WymDWojq%`Q|wc; z;LVcCAms=}&Sb!7BwZ#x3CrwHF+LMG@hKBr#I%uSYY@@8mFz{RVjdaVC+TSS=5SrB z15+?nI3yS_tIM^^PQH`~o0KJKqjMSXd!)o4 zFH2d$00pNH<$;U!q$o-wO4|&gn}rQV%nenDXvbPz(mB3T`C*iR*T_6@77LZyc2M)m zon7}$A`U1Qi*fk2Z6{_4bK3%Ri!MzSPvGrD8K_E9c2cDY{~bBn5UH~h!2$-t8z~Qr z548k;s02d1xP>_}JTS&Ma6o+^nqja4)5IAhy?c6(=Hb9qCy51y9UyGTk8-f~74$U)LI(Wq$PrHR59?@a z8oYrsKw^l&ZD5mNaWI@9W=Z&OQWhU1MJR}@L}2a5TzIRxQM z`wO10W*V=9OqKYvbo0^=NLzpAzV_3*UO3bCTd6Fv8|7vuW4oNXm zY~~BXF$lqB$~p2w>QyObiusJ|?ZO=0RvT>VbrEx!^(!y8Wy_Y?`!nb3XoBV^#Usu~ z;mB6Ytu$xCri`vh+GZS5E)0;OZCBz%K2RBqW7P9nnI$2j)wN=v6$5)N27-ma{@S@( zqBAs;oJgpUB{sAE&Y(reBYo|YFf*MT3j!0f6Dj)kFnxIMLpY0rbV@m= zGQqGzM;Yb7N*;_A#u0$Qt-%S&v_^!@i`>p1YC^vRe=tLS{wW#PI}kMrxp{n@rNTH( zuuesTiWwAKFgetL^GYt|(vy0|`T;ucb)0=s`=C~Xk z^6Q|!L7z)H$_nr#eOvmTtOMgT{9CAt*8x(3xdt#Mj# zc(UHq>df`v{=KZX7^-Em@;G_sd?BKptHm*A(o^U`yAvbiCp`-t9gvkj6@tN}&?6O) za>PNM6n_}0=3K}}c_|VbJN=#B)<> zMQY+!my|ye4Xhy|y&!MOjD#v*5b5jc*1F^X9r{T8DVkh>rjdzIIobxL9IV*6(T5bH zL7u3YK>UZZNtn--8k8iPNB~^Aqry2ego^EYS&ZT=NFywv#O?isQNsMVGf8xcl#3E3 z?GYS`R&YmAOyvzsNf(&0{5xR0XDZ#vixwbRMmg<0bYXR9f_(x@y}?O zboU@EkuIc;^(Q}S-0GTOKq&FKIfd2?)HaFwQGL*lX|{AbCJG9Dm+>9$7i8|h@|}8v ztKQ+yY1BNajFxi7O=qfB$PgCSXdsd5pdAq3*wTiKwo`1VEZ+6*)7Mt%{M&mvLyVNa z6N5ki&_iM`p{MY^J6t>EU6|X!*9hjA%w9-2NR(I?<2k(M%JmHn1t3wPoyez^S!xbb zt$wW-XvM%Dg8_&O&iZs8+{Fq~=cYKX#+jE)Mky2M^dy{q2{G6y!Z9gsv*vrqj{hXH z%bbuiQ^s)8>`GZkq>vs!*or3Af}1KKm2u1;-^_Q98sn#uwe-=LmbX9%k=Dyd6-0d? z03eoeFdm%oNw0*vP&RpP;*V3=NaU2K7y%dyibWcO1-GqQe8CB(s) zMnQeFrOXmI3KAUv*H8K3AfY4S?H>3ke;6fdh;5Yo5=IW}M!Y!fOIw}`) zAx3zQKHd_1=!Iys2S3`ljq>E3cHHFLO>2|nqulE^2`_>x(MYwY{6jEo5Xr$2=g;Ve0}8+*&Y7co2PBR~@8 zkp|0PM_CuYx99E>vo`|srq($o#*j$a6tDJEV^{%p5csN%R)XbbXO=q%WqA4A1J1>;QnI&J?^@N~v0$4;F#8M=p zs3CapdZt!jt%ZK)23dd5qMTWLz@Pv1#38+y5_w@P!t>Ohc&Fyb#X>V^$OA_HK3S~KtzXnL%2e;;&@jkimS6eA`&o&;U&nAG9WG@ zg8;MmL5?U9H^c@eeu0ocwa$GNKp2EI1U7I(a|el=Tf|GH#q2i{CB{P}#1+lkg*;J> zte3QnFbq?u(1w2Gxo41^k*b+lwIxm?=Mhpk{z=AnmR?s_HmWE*R;d9g_~CF8X;JDUPe!(LTwD ziTBukco7Hqyp8dYgLf6`!#m%~3&N6q!xP4r_CuwKyV|0Z6A552^uPt87`O?2ob;K_ z!|-e-tZCe2Eto}84#dcLKU4op`^%5<7weTw?FpLv39&v9geGbJuY3gNG}%{@INo_I ze7MxxFE7mLFiP|(BGC&ApKa;}~nkMR{4S0=}jJ<5b%Yg-#lS#7Fh6xiax% zuE`cRg+Zu#O*U*%k%q8VW=TkBb*&g^#lZg_48(~rPR6^vW-7o578QURTA+{h5nciT zs@a-JoLN@%UfS&nOc*=Z41r4#O!)j%E&?3>gaudxyFLR0rLrksKS0=7;zdaucF$jg z6M49F3yF>j=YTGru5uwx(W}WHxd4m5?(`pa9#IKXE-pdYq>4wCLMjn)2g9}rX_AiS z;^%GQsYofwlXf{llB>}YThc)=Lq9FK|^%Ai&$LK#279S{2l^*e}d z;ZCr)B|XIkCekADTPvv&(l!ok`?)5yAN6wBg&%f}qXXZR7I7N=;}g{|q+2{)qNsP5 zEU6s#Pd!09*^)E);dtkl=^$R{YY-~*b^38k!xPlf^ zG@MjMO46fmA4>$t@y;)_3_gvH7LSH8QeCYH>@=shw~~N!@Jcy>Q3`66Fh!hwgL&mr z^TnF`OAC}GEE?c_{mS+1w(Ya()RQ*97J_s zH;iy96sDcPGrnY2@< z0{3x@la{(h2{GSs)5hmdrD-`XLR*pt^CL~rMuRg)5+z?-^u0#cBVbaTxzhWp`Yw|G zY?+XUamv*X*w(J7^7>|J-b8I07-BzSEYW+E-G_42k1I|(7v#v~`6jD!V@unPlbjT% zBRYZivk+ga!3=nsnv43H>bm8Yjx9|$oB ziFPUsf*D9ylproq^_ssmc8!4RY(bARzATl74xQl66Xkm(w z9Kc+`9JK{ko7eeWH!jr?BDV?$PK>6Q5%NKz0nW!$?t83TapoSJ?KB#+M%f(1vq=y-=of?2|n z-nyNkFk>dkXBwvoPZbV6L43MwUgSkR=_|mOcJafL=#Rqbt~l>b;Wcb*=-tPQ+KSzI zmjWtF_w6hI06+jqL_t)NGfiqQ&L<&Vf`Oqu{Y;tKlD>`~|9OXa-JT==mby3&s2+1l zD5GimG>X#5NaQX*!U^(cDo%KZ*rqQh;y3e3oRC8djO7!+ywymwJA^SfMo&G7N7X}q z8G-&u!W4kb1h)il+rqkSM%ynx#Esg`PiJ3_c#}h*C!#E~UT+D{eSr)G3mN#(Voam3`>j~inT)XN#+r~eEC=~$QbrT(n zn-j%a@Q^^IXZ;wVh0n%f{7nmEV1_ohMLh6~Gy?)J5P4+FH^v7xXcgSqYP#xH%5*t- zhjTqJ6)+TAtb;OyV1PMek#^!dqY!XQT8PrE01Onwkzc0UsCukxyWV$5H^`)RLtTS2 zKUi~XkO~Rb(YV0ZB@Rdf+!7sG1!D?iOIa{n8zp^;1W{%=ncpz3?db?GFBw#21T{jN zBy!x4gW41(H6RytIx#=Kvm4a9C<|hYeBCmkRA4r4&_%nzuOCDZ&nOLXyd*kgtOGyLjM7{U^~MwpSGO4&yS^DKcQe&yl;mr0!4rrgdseL*0cU z$J6#QAr9%AW9pM>0wa<1+4i0G*^$d^i{|3)C{C;=aX_u(h)$K7o|?;V8$ZzFaO#i# zV|pHj1t#9hCSRY2JyJS(oL|5Lk|Dl#Twl_MJR{s>MtaJ^dEeD05n~=}oG|;SkYZMx z4I1Bc@;Mt&)jw1qxq7*JVM)SKea1WMF}_D#+hA@w94Gy;qemu3J1a8gF5Yh{))G1B_oih))P{KsMd`nZv82$NnU zc9;N}4B2gJ>BQVpMEK;Im|Cih!8 zbECytn(Lk}5ECJf%w^Dt2oY`=XV@qSk)OL!ClVj!cL7n6m>%W>>rl>Ys8azi1O&z* zfCUDvC607n*A$Xq`h10MiwSWEKry)@I+BhBA8S&mDRM^12@nxKFsG>Gp$-!bK0vIH z2iED<%DUP*U2KX00pdW+1j$Aq-W?86EF8=RsHnaJQ-p&U4Fnl&Ev5)2Nk4XudGd|F z->syl_X#CcQ|z<@7Si+Md;y2Bfx=--7tZiI}j!d<6Y5c)pXk? zlJQCu`X=p0b9!9);poc#Q&^fwQXlbmwV@l?P@BN)a#qPL^riYxlF0vH0ymVmJN{CK zL>0Hm(!*4*5C^7)8tYpL9S?-1B+c6-PQ{D)gBx6uC=WhO|N8iA>gDr}x_FbcVK~Ly zfg>Z)E`CNhca(g`b)avE+0gjV4v+U0pFMU4Kyan{_*jI|3_Z_11MV5SsLeI4bcBmK zWCS%^9q+ID6Vqiz!rv``3I^svEQ1#07r5#jWjDxN_?FapCnQSD4Ux(6yi(v%omBIu zpY$Yxo7TWnrT>ry^>!Gg9$kxFa=vU;o$4NQ3sI516-lIof30-yIQvN5G98xjVAwb> zNx98LNhfJ#meQzbeQCu&D+d0zVSot`x-U+^JDLnXin{;1%S+bb-%+-gktitQI^mTB zX{X*B^A5Rf(2B-kVH|5C3`5fSV#khVnrLXc`~{+-F%3Js@F_@oI$cD)t!1?&WKG|J3Pw)FR(8c_7-`=(1dw_9<+wE}~@@-z671Wa;==y>^TVPvUEb z<$7fB2>aQXv!@3U^5Q+2r{hw-9yuW3ufV1ke$L?XRC~K*0LE9l3#f8p zJOt*+8D$ct9AzgyqxVPn6w{;JDU)_=&cV!rq4*5gYA)usej(40abyT7Yuh@8dV62m z29VIdo5|h#V59%`;x)$jpf~!oZ>Veo!w02o8Xm`Ol*Tm;ZP}Oi3c(S^ZAgP(fRT-% zZJ8y;QS5&K$KE@4SRj3_IY&M|k7$x_+m;Jzvy4mPb96?DO{SWfTHkcyEE5|`T!M|Y zOy-|-S8{+u?!3ksCx*vo^W`IP-eURMDe2v#MDx&QTUc2mSOUWyvt}MEDbRg;n(tPw zStluUn9q}W^A4lL#tWM=no>S+4ryhUnroF-zg7&iV&H!j2AZG#|Ff$|oze@$M_3is zPR=Gl(L{ncN&uQG_M^geSnNaYEOrQ$(gJzl47}ZM|nD-n__5OA$acB5DH`3FMN*vU_~MA7J0Av~AmMc2z70 z9pJ_VBA&_xIJp}M#*APrrD0VH0s+(C_y_5d>MWv!d^rC?TD~#t00GW1+hg@vvTg?G>Ic5!6~8G@um%_I6ZGV0dUN@CQR29of6as{8`}6M=;3lfIDv!;?0C zD?%zsG9~YkNs7!kZGq|%yYi@Zx>QgECT*Ekk0hNlO3B>3$bZ8h%B24Xe9^8EiueQ( z@tyt=`VgS;zI_k_As*CdBQoQhl1vro-;h@%h6zvhgJgW(o5GP9x@+I$`9Z3FEzQ}b z!nC=M#g?W@#RK2qS%_(5io)DPej18$%nOYB#$L&Lgg@YCC(BiI(uKYl&eb7Fr_UDT z7PvtYBuuMh8E>sDZX&ftioITzL>qMX94gARFI|Fu!8DgXwhT(($0s<_ zGS_y_?PO)$JG&%%?&1|bj$?Nt9UEKSi*sdgqP?wLT_;9K8%0W-%#(M5_HyH)Y77|c?YdD$U;zuKo#nvax8*@Xo9$h6!;() z4jMyT`JG2_dCj`8J1f%E844%-r8=}#mBeH&_2n+7=paxW5Y?B3-&M}iD|}f?0|T6p}ancPVZfHJ*Cc{!law z5$bmA{$k*Pd{f~1vq4g&Tro>UxgBkFy;OeGZZUj^r4mV08+|z0ryvL+_R^=j)0u=^ zGxPRrVjKa?H+kY93iV&ikKPqVpXBF~B()a@;p6NR4C2SA`7-6OZ1_F4o@9^a{O7tuIs9$Dd#eU~$C_9Aj%cw?Es6h8#-R@RS)mT>I{Cu6g92j}GvVJ+owk=|2gU4C5R-i#Ca>kz%E-Zv zBoz^+SWv$7k?OSD$D!BEuo$N$Pw>(~9U)t0$7*F=C^}#(P#G`@^;m(+L|}}lXJ*_T z)gzHC{hHYp5a1LS>lMS}Hwhy+>>&E?ycmKl9861x5Nlh9I@Bgfh_En7-|-as!*inu z^(|Wh4j8*)k>nc!3Ey3gyfr*f2q`< zk|>dhiDmeczU%Qk3lQNy{9?M;4jxVTa-0y2e?-b~+xmnEX@4;t=|VHo@=2aig6fT% z8AsusS2JZNqf%earFm?@oi0BashRhHM+GQBs9#9Q9Y!!DjNib3s~@q^qPf9MdP}kr zu+!3#nkhWtMJ_O^z`*8byK zyiHSn)E`yfQdzt!>)BnZef2hb(Q=p0wFMT<3vD(2VcvR_cGoy+Yl|wD*czF>b7MoP zJmZ72kf`vwN_P^7R0O<$2N;sUe77=7LPD$i&%gkk7lJ5XMCEERBCEAfcFtl_&>&^e zPgH}r>?&l5I9My@BpH^7wp(74WvvtQu}X{fswMAPZvT;5H{&QtR5gP<|iGY*0QEkgDTEG2cmtKX)D=aab<` zkV$cOIN+w;vz2#U>O?<&9i0s;HXZv*kj9f9QE42FzL(wCzljp+@A5xN~ zYOhlH5f+&)CTVcBQfXM=@n@DO}$y=yO!5~oHL>u)K^dqT0Dim zTWH;ecG(6t%E?jN1ftTK#Dx)WNk52n>!|Uv0VzgGOc1{z)_4yW!pZ`j3au6O+)WHW z3=#}x2lWSt2lVH)vO}?Lx4yJ5p_l-7bL@$h#UFSyB>Wk2!RMoKu`CFT&6{Lm*NKl% zs>7*vp^luDYA5SXsNFbGBncFK03hk35DGYG69|=hsmG9>_`WMFq8!2;zvzg|Cr_kT znPFR`GXui~!H8rDqY+L#LJV<+N#)S)pj)pWiSvtVA#y~mz&z34aMXg=+J=o*ph|Qp z%(E(;o1onqYe>vS=V^df2>~}5kNO8S&BpltMr65&8`AIt+dihiv2f4WqzN>oc)JiE zyvKBk?o5KWpSNK!09t6B;ZP84W?eA0{TWMl&}=8QspFZ8t$G8c?Wn>dD5tgAM>W%vL-0FiGuhlT?0zm(3h;a<(PnFg}$5)!@@@fCveUAqS5t>N|-S%7IbpUYKKjdiQj* z<+B$q(>;G0Yl<(P$8xeeT1iP4>)Er1=RRxZOsiSD&c~fR(vCSQPis_`#MEo+H~Gc1 z>A=(rWy26DTi+VPI|&bAt*#XVdpribBWv)myS;Go3udKz*^nNEHe>nS@&!!@0@Qdbnv}Mcq6|CF|2D; zAK=4L*L5OPonchI)P=*Fu{;=~T*cie$_J?lKrETE#QKfy?fHO@sugSPn^*q8rc9r0 zk3Ijc_32&^@>Bj1AFMO#Xa-AU68WiXg6TS{4cnrF11=TU_9wN^po}KKfpr$ zI_gIpi2Ai^mj=}z9F~a5nX_`OeeU8@yq$0VpQo+=@NPb9Z&bga4QT?1u~nWnh?nZyc*j+(5+esCs{SON!G@IN*^IXa(9VC?@p%81{k3{l8u(D%Kup4SneDFnhWQG`f&a^5n&tSz+ z01y{uK@L2JzUiO-hobR|ahySJ3~us99NLE`b>!!5CqEclq!362Jx`^i{c!Xb!YRj{ zzyV&q_@%1t?*cu*>3EEi&d!et;beup=G*|%Ih8TO+*Q0DMN*kEuf?we*U9w%AShog?5ONLq8)a zzYaQs=8;I8YD->WE^2CO9MALzRbSzRWIFN;g;N&H6@3e+fPw8gB+Oxxgf=EDNOU%d zajma!@N+~tGUHv+wX4RwXd3l;<^bBACuw%Zg}OJU2u-TGYV(G^MjLY#0-Gnkfubj^ z)TDYUmwpk_DldReM1X0+FZL12geK}ylwNsGU0(Tc19C zbRn+jm+DoHyDZTs?5U~;dNHg$+{cuy-IldlcQEMCqWj%{>ZOPR63YXc*VZEIhS@`}7mQ}u=RWGQs$_Dw?m+hpJPOx9x z^srg=JK7Q-uDI*0w6vS+_S&YYHh)rI`7O{-uJdS#kPB>S)mp34u70B%tTHu?Y?&Us z@M~?8Fm(ZU21XWqb7A+iac{S@FQ3E+JSpx7sS#2V9g49`Cy>xuPl-Pn~SH z{`qFBSiIDJ@U6>~e?R@^=_gmVxAI(WA3yzATd<_kCcXHW^&4}T&3kW>0!6%7PwPE$ zfGwH~-k8P~>Q}BGP6WM)$&%}$@;YiVUph@pu+4D4-12>`Zc`gO^ZXO+u3N8Hq|w$> zjFE|uE-UM4mC{c}8nUpmkK&WBP~LZ6F=is(H4WCR*=RTX@mJQbZyzTf5YvDD+^cQm z_;UOHjX$!&f_z(5v)X>}^BZl>(kkmF-RPyt`-VSWXF~@M^899qar)8)*I3bjJhk2P z?q|LBu^zIzvvhU6t(^Hv@M|+vOj(KQ`C|CCuB!J?TePUgZ1r;aRR;g;5!SuDNX*nG zoAd4q^4nsE9r|rw1aH6j*EaV(+AqW{7%uc?x@%vfL>NURT{q4zr z*zw07D@LN)UVm<)&08#H7T0c=&@ATXgngA~TYL7=yCl&((0BhUCciKJ#a>q0tI+8G z)@iu)9@NFEXT542#thQp(_4&Eg?;j@BkbL&vu(wUSMB)YuCuArX4-vf|G5h~S<%3; zDnwFVEyhcx&aq=Zd9-d&-(b%_ezzU>v1@Jmj9GT?pA>gtC(G|Y#u?vb%WG}LD*A)? zD%A<1fr|xUBrDaIkN?Ct``TZwx8MKaHoN~Xf3TZwyVDx9_*G%WBpLA;arPw?ZlaChjE9FBFwVn2SWsLfom`GURDQN;*aUn89qxc+*!eTO4eeRM2 zikJ^i&M=ABmXyAY=0FkTiEs+wKzFy|JR4ZvQ~hqK7DJA%C28VvYUdf#W}hMN)tz|HgD@ShlD&x5gcV^r{;-u z`tTxRVB)#+m`fyXeQm|SzY7DL_kjSt_0RWOFA>PUzTpp6U0ZL1wJ^?KxJ2TE<@VXn zpKS+?`=%{ewAik>>ZkVOn{TxJ_T9_Ij2LW>J^j4B{PbIP!I#ePh3vMQ9<`pMdf6AR z{INawTA7FOBi-@4r1o;1z=`NW%c@mJ2V$`vbJXSS@Y zhm}h#yjJ?NKfm#Q@d6v|njcif6sdLD3A)>GCT3KgYB3Jms_1C#y{Tmh|OKJ!Y;n_9N&2!HmJWX6jN~B zZ|}FBz4L9!;x%^Wf1PfZe(3@`@z}%dzK5T%H9Clip6_+Py1~|{-aq=EhsBYW-_V;~8*zbRRr+xLCmx$pQVDC%=5nZ4(YV*!CVh+#dV;bN0`7W?NgS z-o5+Y`!-1g{Tb(dLAWfm{^h-VA-U!5M{U;9mDX8IMvV?aM;@POljkq9yKlPI z&c5(i+jp+9#c-t==XzHSfR^^|?<%AZJepodLX9e?+$ z>+QHxPS)YnK33AX$hvjyVoyHvqCN4zE0#T|oBi~q= z#g|^O6HYtCzV?-iZE;0~-FdGTES-NTE-JKZuKSG>fj_e;p4~J*DkqG z<7$)jE$ikcW9io(SA^+r|MajelT`4?llHSu9CxXYn`{4gudUK0u$?8@LIu$_O|uDy zTxQ+7ce8^JI>4Ew3iaQ^4mrrgZJI55L*r{d>7y@p=63PYO8fN5pS55A?q~MNPn;-b z>2Fq)mo3J=oi`Fr@RaaN13HL~xL%8h7ffI)h(wU5RWl-O!P-^y-%)ux3Zq4oop016TSvl2ZRqIyr$mc&4Pw|- za17_N;uY0vt)tX}=!c6WHO6c(3{R+2s2f%evo+^ri~2#e7NQpd9b%WAd6bkRrd+L6 z@nKXU2qEa8*CCupgXv_LQRclolr-argq*bC0i-(dt1{)4 zcD(b0NTyt87~n{8N&_nnV$I_HJi0p#_NR+k>4PpFEMQikEeQU+Qo`wNbl@>`&Y0RM~*}wt) z?f19bVUOQ`hs~eA$Zo&+A^Yc(_u07@pJ!*D@o8JMbcKx@H_pEIcfbLb zqs!jD{Dt$K_{-9cNm z(2d$lSJc>dl=jFY54ZUh%Oq(#(LR0Nxgvzed;VR!m+IWmM*HlUr#Z1(BY00Z;W+!| z=RakKov^>1f8N=)Y(=$=9zEKA@{1peSYvlvDrwps;yg>1#OhnbB%gKW>9+6QqwVks zhuDP|oa?*KBS(+2?_Pe9gnv3WCMJ8U2)p0?@^+i}#$-E0k`pG^#Y>lq>F!}~y@RA< zy}k9;+t#xOde8k#x7mqblVnRX=VwkjN_}mj-F?SR)_G{DefNqlS%*$pmaDe;_T|EV zUT3@dyI-{d0|$D0wbhR8e_wy49dX12tC8B~&O7%k8-KtMUqF%gp!SEloK?MRha7US9e3;zQajAEbIv)-PB`vp zv%UrParK)~qej|!=bo*$lnL%sU*Sv$yWk^73=@90*!Tm-+qGAG-l}K6DP~kEeWI;^ zpe!WZmoI*Hv7l=gqTh*#H z!cV=87&OACR#eB(pw=!bRmG3NLv8KoS`^*%u7(1(BXOtoFa5pxIvT!HQV zh^;EI^|l^7>Kz!n=Vxhb4)(Qh`rHa_yo7!Y+#HYS*k+41n|pa3D;6!ZrJ4&XDk^Nr zQq760YfU!^gnXp+QJ@X9I;nGWF>Ra=WBq9@7$sFFeb-V9i_g%a;j8)47h|?QTQRT) zV1UkS%NukNSy!LrtE!};)MIb^@s*cLYV(-=^uK>=2kf`ER8q7vzouF{Fq>_^y~h}; zQ&lT#?3(X?-KNc{ur7lRupj*DFFrUb)>HW#J@7R%6S-HZ#a`ETv)JuM7 zU8Dzl+PRR| zsdjC>U47k+cF9HO`9yj0;Rnc116jKtOf(A?R@mi|@_gr->$N+XZO5Iuze^@wf8%X? z>)pvx9jmoh-kt7?96S2g-*T7Ta>LJU$i8Ko0VmlBB6e4-SYekc|I<$YwiRk8|Mc@d zFPQ6Wq6p6Kef<)brVJZ0NboJQJ|($!*E6qKwI1$vt9Ou|B{sBI*Gt@Z1ehh zNzPVEiZsO@zVl`~)&Sb6Af-~-@@pj9#-?2-?u&{VM_vl}JXWr8)Cl)X#Cd9z@>RD)y-t(&c z_3ry^ud$=;`B(mCU%dP~_VL5^5wqRXR!cW}U45O@)q2@g-#f?EPd<6#8Fv2Jr`i2a zyk=v^jIz7$eZao+wJ+IAFTZMs9z0$+(|N9?%j}X1&$V;T_<=88|Mlflh4Wr^(=C6p zE5C86_g7S8SXhxDAZ7aUg`c+t^Ow82mB4g{d~d<@_|wnXtv6n4BM0~MMHAih`~Ni2 zmT1w~q;_KmTYJB@WZ80?Gk1aA{HvdcF$vTC)Tz^~q)QjO;{1~(xmv2**K_TwXCAMG zX0=V9IotDl?9LZmHSzfuUb1KZ_Gb}Q9qrAx-ceuqs#G^$(Jp!~L9``Qx|pR)rF z*w23Ov)|fz7hP(%+9Pm1BLQ-0!VzYGtOXjcR0v*m*S|~hFKWsRGxlyqKKH9i?jnR64Bo& zlO7K9xJWp{_3GKxt&naI5k?sVq#O zLp<{fb;l%nC$|9S5;ftY6W^Mb_{M~GlV9|2FLhJ$(>M8qyi#dAox;TM!i<7n|9Sk3 z_mp3{yqJILxlP`Jzk|aYU?g29mEk}6Q$JK;@z0XvvQtXR>+v*K2Y3U{fr&aGp<{hw z-KSlM1MX=v&dW8yX+$mlY8MzS@XoqKT0T6!{OEkXL83n79Z+GkAMFMM#pV%XmA<$| z8--Px8`y-4d8Ufmi#yl`F+ylqBar_8Rog{6|&dGL(W;UC@qHnU~$J!Rodt(_; zxXsoE^A`0V)hQc`4T80Y)My6{?B`7Q-1!x5?Gni_&NoR__Yqq2ii(PDk!YwT(n6_R zUL{(n%1xNp>Vh^bww86tlcq_&Ht^Q#yt*bPrOR|GUOiuol8Xq#duE*W^56#qJX>8W z2KHzSaEQEZS*}f$I2P5D{{8yeOHV&!|8@3P><@SRN;}S7HBq#62BTxA9D7H^`g1S6 zX@?xJmrpoUj>F{;petv+=8Vm!PCnilj6djH#L34W?do@qgatLe2;_@lU{b)M6pjgt zZ!+Y(h%8Llz`cgK;R3>QGsH>h`ag>Q9r ztLZamNjml^TextM-E;4QHsj@|?5rpx#-$QOn2`(^D(S(H5P3m@|K& zJ@xF1)>$Uk!o<#w5x;g_i-{!!;6dVAf&xvW0c)tP4uVd#vK+-fl( z;DJSwv=X7%{znecT9q9o>5#`mHnL?`Z>oen4Cn^H8oBei4c4arWN(Q*F$c z(RSeY{hgT`JZOMR{1z=-=nRP?bWmrP;2?d(q5mH9ff!&BcYhXgIfxe)P#i>Oj7$0S zt9jT7RgJv{e4_YYuWMcPvV z;faKCW=+G`hEQv|V~$D}V}qaXW~N3`Hl&CedKta0 zM&^M#YZtm(mjZ19>6`}rTa!TuZ)0-b3%jl>RaaU{Os!Xa({Yp!0id3CTG_NxUB9)|Xvq9yOJ@x<4_re^> z9K~)w{Wad570f#a$-(y8A(r2gXXwAlm?D_f8l1DDy`5+m9L)1bID$mBaXmwF;ZiTb z8P~XIU?8YeH9tNuGQymO(E_AY)QkF}o=FPuL9a;n3m<0@PMAxD#H{rUV-&oRjC7Lg zz>H?NCiNw9lYBEGt1mQ{M>>|5A0~tFS0Q>yzo#Rz#)JTH8u3FgOk)UR%mgVl;}6Gp zfmvdmRt|Jc_hXIp56VwC%0<y{O5FOFXYAAR8#{W0 z9d*h%Hbg2?NJL=Pm>eLExpyQCGZBJPdnqg^un8xf<%fOQeS+u^X{cQkcHP2G7>gIo z6gw?ACLQ8p3O!$E5!e-4S+&AC7v)}9!kL)mkh)FR<)z;v``1mMsW8+mJ?7+h6DPQEAB9xJAZ-H z5xdzff4<-L9x+JgVs(B%gm(58>Mka9rL4pW?g#_8!Lr^z{`rzi9_BAx>tQ{!TvKcdHD$iQ0kimvy_aA2C_CHH!WR|*=3dZuKHz$dCIn)V*7hikF z`u6N*FTVb+9evc1_QPv_CDp!V>VNZWsnh{ZKlKx~q-wPtKH)G)_@--t+u|l&H9fnu zi^Hhojim7$N!d2)(wH%$hS@ZoYdco`jXwYT+x}`l_~vEWNh`N^U!N=3L^NtKq0cOz z^bcEJImU+Q%pUlopZAc8-#zy|q}{sBE;)h_f|$ds>fi%Uuni)Xx(z9@2kv~;E55lwKRA2NV`ZO-8Ho)W} zC4(8HP59whO!LH${^R*qg^NR7J#6-z1sbD8PO#R=n8-+fW2b)hBD?VyH`ysCogi2{+b?gtHRPGbq(5V$aO{$LY*-|f8mEq5?=0+`okEG@kG=3I~yP{zWlJtO2;rzv&C{JM z1N)R(c^{o^U9?o!I;?X7j5(rC#Mt!N3vI}N-adySNnwXNZbE|()Q{&Zsq(qKyu6Qy zx-B+;=_;wlcJy~Hj)`V z^;NypN;YDp(!VzO_pD`nB>WtYoW1h@rOC9a~ zSDvs>pK+E5)0sB$$;a%CS65iy0VQ^fENsE>-1ERAHtFSuExVwrcD%=EH)DVZ;AJ*t z>I|Q#*jaz_v3D$2ri=V`So{fMa2d?=#a58 zW-wC=X9ubKRcauwawg%)$6mHlF=}Pnv1IZbqw_;6SFY5A(8&%G@m?q~a(@{GIREtH ztWLX^H{X7@EnM5t`ji*jb213gyS%#{edHn5Sv&IgJ@}}-_4HGAh*aIMS~ltJ*KO~8 z$NPf$?8KL>bB{8so>pPK`gL{O6?T=xK$989Fy4IiMH{u(ewyeu+x6F7ZN2*saa@d+ z6*o**Kl{+DR@6P$YL-i#?ZB~;d{xL$z$y_3+4jVvZ^^WC7niWSDiy*S?O^RM^~T|& z``YDS{%)WN~(T5s@1~|;pqFN(q)AP^jtdPw79=Pu?F)6d{-G51aZJ(gF_luug zX@iE1lEt&bY{am^lH6>u-~9Xz8-MUv+i$N?HgDcSn>2lq;O`{q$OxCTWC^z{2+uw9 zcN;i#qzp3T+M_SNVcDAH*oivnxFcdb+xB+g%BqxTx1zI3<^A2vv8iTQT-{SVt?_uOI~a*FNnLk|)T$B22$w;TWa zUdt(J;}+@$5A5&t|K3f1wUfl;9y8$}*Q37lqMzA_F@0U#^6^LBu!8P+He5SoZ;0W2 z`@Jc4=z;s$zJd+o3K*h*x%jxGo%@U)X0N~bwj@{&TDh#%)l{yxz4srjO#sz%;$$n6 ziES3;(L)E=(~9V+9c@GU^|rr0{hD==WuVoSGiJ)GW1ju;)_bi~Y7iybY~V+qP4L%V^&Q*Lp~&8l6mT!~1+0&~{KDflY}6QU+Z(RCN8>%; z#_l`B$KgMoe!{Biw#b0X5Zl;6Di`VleFq6v^%oX52*$9~g~go7f<@hl7`>yK0#h2l zJzRgddkaP+n8go74(|}RP6!ck4{+3x-A=06UTQ3Cc=)*(Jz;K-e`AK@P$<9rA0f)z1Tm~d(i zCuG(lF%rR8SfKe>OabQ_Xe%|fm5!T=775vxhN)nat6p<7eGY<^H28s6 zHZwZFG^s6uI#<|i0@sA|Ytjc3eN+Xs*ttrb7^d|at5st97A#n(b#J~ckcCeeX>jKR zsOpR+gx6p5d$H=x9EsU$h;bMv#s*TO1~K6%>Va}_fm1f#7MQ1oiFQI=-D<1G9c|*c zSIan|&bR-QgJe7K%kD^!WDf%d6fzQQ-DS5#Kna`n;W zQlVQe!&xhIK6$Cm=vJfN=_wG&qAiVGMeHbij5Q8W16Ooh_DLlTd=-u4VSz$noNV3csA$F(UOctFZ4c(nd) z#lW750R}0%VwE#q$pCSX^&H+^h74Xx_?OERcB#%oye7Xw>r_72cN9Bo!Z<^R_K)~~ z?41XIUsaX=PwMoNnaO05nUtCI9$IK3x`Xk}Xfwp2G(Ht2POF3x$`Azi!K8ZjzFSA))< zneLn2!^9yKC#~Q;HA4QZ$ZS-(1W)TNt8$(nY}&FG!k|i$6ijGm`?*lIy;i22XZk>I zTJw;7?AkBbB^N)>Uh(grurjG8VPs;_V(k(6==&9CysoWEW4XH624#Z56Utxkkj1?ERf?l!Zp@4c(*51z^>1FgS$=g&OKMK7^;-2tTlutNnMQAv z|4y4QXR6MzTA^pkijx6{X;Y=wE6%AnJxwAyZFsRjB4Vq3vm_O>tz(z0Wo=qynKHTF zTZ2m3T3yp+Ub@gaHatoq!R5)SnK)uhKczFqiU`_oZR?d+{zO@}DU@k)l}pAl#?Pse z<-$zL)ed z!3_i~^t(*mGgXfnex6Y{Cku1p(#f7J_-O@Tp=w^c+_ERnw(gCz;TDf0S%Zy~N&LPJ zrQbpNlax-Gr^8{pjjQR`GIBBd0;}DiJ|t7|S_^~(%5XyCGPUd3su%sg#-*{=(X8h@ zn=rS`wrp-wnYY^n5k{!?jZj0>)@mPN`zndPW-2ZEPM*p*#_HB6?Y)fvVnCh0g54a! z4!8j;T&}vQq_`T-%{6MfzB((PHCM1f^@2limnzIS*s=ve&JA+&CK}sWh4bk${3}x2dMa+NCNh z&1ENw83K-;D$faH3T;wVr4!LeFi}lIt(CH&`i6ROtU+uaVuxq_hJPvnfDa5SKfDii z5E(~vK2DX|Q}Yfnse{A$fB zA}Wu-BJ>TxPy_`G4G5lXEwYX$NuEBZU;&a|CWL?DB;hV1U~$CdLIa_uTKjgzXk~1N zdIli5#8=WP2sEUJXuK3?8v$)j*%`OE@e?Nc0j?pgd!5h^{VsrpiU*ZS)U=VZvTdPP z42f<@9qDIWFj(lP)E_lX4Y$y~y2At!E$5EbYe1tH&q7@w;)g?7;b>3}!nkUg_P)U3M4a5D73sPU{hO7KE%nKy zTKk1Qa_zTdqP)PvlNb4eq{TYMGE)RNFdSk#O7$hL01u&3ipOELaKx3Z!;ZROiHZbu_q1Jsk&yXUQDPQ z7>pwy$`@v6N)isO#h*N*!(tqDBu|L)co=Z(W59{FV&4P(fHF`P+B%viCJgNhJb|~e za85RyN8m!4n8!KTHXepdd=3Bxj=+L=w2hKiF5xg@%1GJVqMe>OR2jscK8v+H+8gdV zTu&kbxt(eoHs6Bud7n_(aFiRk(Z;Rf%5w%62LQKep~a8qb|H(L+ zlKOV2E}ozAf&k+{Xozb1(Jtk+U40s&o_^o1u(UOOk2Z9KSLy0ebrnZeNCc{=w2r*I ze0{1Dea8Ev(ri~*akK$#LjE~Y&tQ+!5RFwhs$u_|kR`zql!-QG{|1B;QWuCz5SBhk z;X0+t39M-wa_y4}SC-ON5w(DeOD;si)nPo>(2u-96}H#=VDjM<-zY5(IDzg9#E!I6 zKcpHU>e)hkk^E-M07rIKPLMjOV!-1_j<&&}z6qzeONLB1A_0{vq&7$#xb}!Gi`A(R z`ba6Byl)guUEJ~{9mPT*2TZ!Uld=HOqGprEmAD#poz8mODK#YwH1L7AdxdPDDHHm% z|EksNHU3cj3Gkpl7AoBtQ^f!flDkzFJX^FUjDAK4;I>m~%^&vic zQ#fynF%5#gcFkI;3AS2sevYdiR_M$$h_#5QQyWzE*w2E>)3$9g9wX#?oCu~2-$RKx zaf}$XxbcuqN#%NV#vQT=@&vOj6Jk2KYLXatC7v!K#vvLjAk04I7~`s6bd=4V?%uy> z62a4-@zY0#a?(!pDxW)J0?ECfSPE_Cy)Q{x2`W^OG5{3u(w0DQ-3)Gv`ZGe@vb3w2=1OumdK`X59ceV7Ya5l=T? z3rLT8Kw=~D;ai?0N^@pSb>eW%+6}h3sngF(;#+h>^gLDvv6q&XNb{k^wlr^doGOOk zPAipYZzE&9Ra*+!2bnZkOvdjJt4s$-loD;;1HKOuO9y~s@a2Ci1Q;|Racw&I)!N{+ zPt<|3fly*HdnO&(vpKm}(ixXbNh*L;rEto^WIB2#OE;MJ!4P1ba@tG{mqK#F>fw_- zNC2<&IWCp~7PTaZ`<#rQkhW6thxn$2T;&7dXF+BE9s9_7MRc4<{-k;=qa)@XJM76A zQZdaV=mww*8^Lc4;V({9tN%KiMK8d=lo5YZ282m$jZPp0l?iP!;wdQxh*yR_E<82T86 z7(#j^wNBDpFBMh@rVO>YBmC-5Fy68x#e-mC-(gLS!brlDp*=vvamkAM98#o76DL}( z2&b+t%tnh@B0`qEo#}1BIH7B$<`If=7#Fzn!D1ingYgc=Hf4jTUA1DBtns($5cNVo zw7saL#PdZe0fNq+D#ilHD#ROVVW>)xcR{|ax~lvjwMZaA%Bwdb$>?;m$`lDE(dbbi z^OatAPgiPR%rVpnwL|I&lOZ+c6whI&GSXL^`Jk|_BIR|LFCP*Y=FT{F>FND0ev3Z5 zr@Qp`0OMqSPEY2*C{FaGw}&bsFi@~0Wj#Vz5+=>dVdaE0brG=&A%$TAjC}x?NCHwO zCz6x~aHl9pdU;08v9)7|#u5Wb77TU%P?7d#Pf)+X1U+MxaHQL<_GK(WaL{4shry|i zYBwBt`TjWd3y84}r9E7e1FEA)`Y@6+rflpn^|g@p;eTnun*J zk5^wW(f)O$q?@;O93WBh(yN@K^JUmVeHY@iPvaeeD7GbGcy<%wx_2jYTC5x2qZ=fa zA|wXy|LY;Zpg@uX=bXJbNClV|pAC+Q7wLyDEGiI-4$_141>o6G&cQMS2+)`4I&RSN`I+?Xd@?xJ!4f5VhQ9E z<0}A8Aes_l>6BJpnNb5I zteGN!3T4y*30T{XUT-6BU$s@2%6P`?De{xT?4~-O=aC-r$Go2-!e)+C?vUgz)nVBf zdI$(-Xy*c{>r`rwB}j6O_Wd+yj|9?c1_F{S5Y@o-p605K>(;IJJr_uq*bAg!-iL~1 zo}U9jA&?wlRvRH%z@-zfAb=2BM{^*U>?fjJ5GHPLMdd-#w_*KysTbDS3|aS^Jhe*g zEhdTJglZgX3eqLwfHb1YI$V7oV#~SxLS_LLV~y{wDkh{qn4H$$EJ-F@rBhZ-kwQ^+ zBq!`+L&8E{K~jL!mfk6%O9*kS5o0fX-1@UTxu^Tb`bR(7??A^~L}I}=%(Lks!Z=U& z@#iEwH%~Gx-SjllpASeQhK~v8&O8;{l6VlZNKIZnxC!Hu&eA<*Tz!;$) zd74Qds;=H7NokwLP`U+Nw0~svPO6~e$Cpd(zR@-{w)(iBROH8<@{E(Djsu08bw-^t zMv`y3xg#9XV%BYp$1nyC=LU(T!$D@ye-HwL5cr3H0O$t`Yn&)kbVxGs9bx`Esr8Hb z`{F>#sRth608-AdpbK9)W*3t=xE?XTV@~K80|HNo2oN~b_y8^oBB%-$mRN+MZaHgP z3f{Cp_)oRPF=pw(XhZ4>p*B=M!^E)#$#7r!?bjlU)i?6SQ4Tgl7mSjXCzVyNuEx>l z>aSX)h13z3vO_${}AC6p&*POZwI$B)M0*EU_Jql-@vnqj^S33RGN}BjgKYNE_dk8StQzyM$cMk(IkF z5ieNPL_!3kjBg-t`7*VRgh`#k)~&0ycJ0-3f`#uw+KTeBY--gcN8UDXu9XR55e@o= zst)KM1QQnV=8EXTn8v!b>;0Gntd2sgvOfrfu%x)iO2>@xHlS$0mkWZ!_mGjE${*DM z33E8-ebPVDh(Y=Sa@s7zE6a3T#%S%?7(b!H&!FKuR`4KZP}@_*RrN3qh{IR_p{L)t zX?Xe3p&)XA$q1cy1gt=0Aqogb{_KB&Fkoz85Q6mS6Ck=E^YV81hWs=)90L1PvR)p_ zNSXoJR{6YEd?OxG2U^qvyPqT1Ng!pTV)oBG9zZ{l*~mNJQ8`pL{VqKd!YF@-s|wYh zQwV-g&=4-h=}*zi2|QD2>064J@^q29gtAh1U_@s00YAJ}a3e3uj)8{IKCy24;{UWA ztpU73-vMsXVkPO~Q2mSLVBW&$5d;|qJj%-}Bwf4 z5Ez8OKP&{81jT4hP2X^gd0}B;;^jLNE^Di9ex+AdK~9Qe^2Mc+OFiJnf*B_B5bD@| zNfXW>Rf_488dko@hy?`4;t(DVxP_PF{AEGH`Xu_`TJ1b`gfR%7OK0T4q8$t6`Kt^p zWDp_1n#Dg21V=3eRUkas@-swvOBSF!0wM#U>EF^)0^tK`i2hGSc|r*SGNVE%EM*Mv z3UvUXV$TZu&SHFE9bys%q%l;LXTm;HF6JEjLjUG+2wO=mR0nmJP!A`LsAJN9Vx*%K z9@sz(xFiGQ%Q?P@pPn%f?d={5bCmQB{!FxEEXu)AQ}3#h?=fqWng3E5F&I}m!Wy)H zh^C=@NGaDys)T9%DLUjbQ-?2aZEE+ucOdm0UAt`gs`YM_a>n#2wr1@{5lj#lj5i%s zAZgXw4b_H)%b7E^&uL?gZILPvk`s1eGA4UPG%sJV+NMvRY}2MslS*E-Om(+={{j)F zKY_d=feDu8K=}d}or*9z=x@~JXf8@_qQof1L0Z(PqY8RNu$0NLMB%7HM^;^$p)w*> zqzpYe2%5ZxOJYHGAhICQVf^qOBmlHcWGs*u;m9NUgX|KA^3bpNfJz{Q44d#{c={pv z(3j{g%qbk7K=_ar{)|K3Ll^}~9Pc4uh);~*VqAY?9Fto3msdz96`C{>KM%y4hfReD z?;g%m3_p5jzMy)PI}$>kMiM_v0scbvsvAFC{E!c23G)qb2VT+ne4_8nk0DAJvxES? zk>KN72oaJdZORfldC14p(BnvmbV-r1q)PurWsh|bHBbnbHk~36ZvlIK7%kFQIin^qFLt zxZSE;=rRg0a4zcUeriq0SJ7Y&Jhmcs35WYA=i+Q=k3H2h*=0j zdlJ^ec?I;v?*VRn1R=rC7ukeR+V50{VkPzBP8y^Y!}_nMh*3FBO%1%3{375ViQ`++pLFMsH2t&k zjE*@(F}=JYNy4P{6i-urN!r|_^L&#ReEn1Z=Ts`GC`y*+_)abh zHBd~8rxR>XEzq(1MEEeqaP&2vnL}aN3>yZ%MI{)AVVxxmeZ{4z32-559ALyvYD*7u zLW$_WKw(&Mc!t=TF=?#!U5(K=tFsMt%^`1n2R!77=EIE2ab&H7s9R)cO2oZh4gjCh z%+Csv_%@Ak@>B4mx=8sFVtVovcqD3{z)Vxi3 z%5-zyWStvx@Sr_XqJ!U#3jzmBhQyRdihfExBp-AeBBY-Q_(Tyuh=VxSld3xk5j%|T zJe~|kvRtn2;Hxn|aCSkSLN0K+{ZWMidB*A-x(h5`AW!ViA&nDto=aMVB0>TT!eSOv zhKUgno#TZq$x{cfuM#Hh;F7w<*M46u%t5l`UWx!`Geq>%Qtd%o4{>TasEWj-9Dz{0 zBy{u+cNGSIPtSqN;(cI{Q~l=UNh>VGhZ9KL)$VZg*^|HpYyu+Vv5s0)>gEWi`b*qD zz&q`TB}A8~Il`-?LK7b~&GZ1I4{@NaJ-+7&t5+aLjvys>O_`oFYN`(M^aKv^%$$n# z(FP0~h*-i@_GU?dU|tcQ;|`Xu-DI<*k~gJtf)MUaRxi`SIkNPKz9-1kDiKVl>6|kp zOiQ$f35%n^4H$Mv+O$T79_G)Pt_|lCok(cZftW)?ZE2UB@0IHj!BkUSZFA?%lN#K3 zhau7yINRO^O2-`lP>*tn!y)Q&B(FeFiKtN^Pe$p`MwoSnI6=KCsM{fB&>FNa7<3_j ztRvDdXh$r&MRmCt9zx2ACAB+g4H=T5i&kOI5kVyc6g4U`2QEC16v3#8#^14mhSjss zzCeX>sKD|F44g2Q$=~M<-66;bAJpW6f9z}I10jcVKjtw46F>S>w&Xn$#|jYgB>~{f zJ&juOBp3=jB+j4olj>`D#LvmFNvfg`$$X$Eh^FXx3Z)e>fTui2!n5XMOpkB4=*K;I zO%))?zduTPAO+S3zPYb{cxDZtwSW~?QM+YcJAY)CR6q-S&m#MyI7g53kB~UAkI~yf zaZbz$4lYU~Pf}nl3PcfVg*HN#?DF$0Ymd(1l2mfnu51zP?7NZ~arG}JrqzzLCC@Nr zoFL~tJ}X_MP)KA6!&y>Oq+*KU3yfE+-l8)b)zACu0im=<EnW7GtKMvN62IPY?_!(C**sF0 zC>4QH-_c|5{qVb8&zuQ?1p&)2e|u<=-G0B$ylJSnZ~yQse%kscK5~^!oOhw?wRdT; zEYPNIOlC6`^1NLfaTZ$^O*n6(5{j0*$Xb5Yp2b7wf*2%_h@4@rot1;O3zwI|KBJW6R0nyCse*kKM<1BB^$oPIg%qj1QSOKH0of>iQ~&`noMA?+uY~~y*Ha+v1a2|n?JM4 zrc9nBt9To&N$PvK+PeWVg?aj=E7#hb=~cE+hh8s}Rk?O;Vi=*h8X|)=0?T+aXH1n! zUzK$)U*$yB2oXb|UEqkh3S04jvOKNJK9eUNl>%SQ{pgdck++OZRl0N zIWUe~eUH3UX4)U3hcUxN`^WI|&?93M$x`SqbWq+y_>h%XRzck_WS)E=Tqs}grX}eY z2aa*~)DP*BUvxatv-bm(BRR^MxC5S&7oB0S$RoVbZXp3;3O~_+=@PEdtIsfJ!B1dn zfTQe|T53fZcu+VHIZBE>&!_Q2IguiTcJA*N^k@1y->EzMLosfWlN*SjFsBec^p`Le z)ZY4YqDlS8H3JkEc#$3|pzO=al0{GIU0+{sHT5mhAi@9!^SjETi}hi)2qg?lY~EV0 zVVc+D2)BaxiRx4kOGLH^pp|=CyHFUXW#LH$Gx>XJ28LUw*lL^H=ve z!ZB0`HWR_1`^Sa=qWk^&8R7^;s0&M_6DsPk^jXc-&Ru4K+ouVib9}T8oK#0X2Rph~ z%*HvfNqG(qcP#HCbp{gWbT|^kBE~|e3^-7jyGt8V2~q#l%W*#d(_LD@*sBD$6!-y2 z7EQOZ=x3Cr7y}bWWVMMr3Zos(VztVnQxrC6j})63N|Q{JR=Djg+>S%P#)8`CXexv%OL5w(c0pmG%uUbPu*MSREBVk%E9 zy?;@~fSJQnNcL_42Sf&}gFKkKA_L&5DIDDgutL8dt`wkzqD>_E86x#%&X#-XeuIN^ zp>7aNs9e`KG}{zOfM)1@WlfzUReam4KCpCEwGN)0VhiTYwl!_3ue1 zK~nFY4jyiQLc%Ah_9r_9HP%imsebD|S5jv=gB6)D z@Ph+?aocb0mhXJkzVy|bb@Ww=NSkQ?>pQpDzg_uCd(L?at+}O5#8SS_HP~+d{=rY!^Dnv3xthyYzS@>a58e+Z z6cU%C(b+#0dQk^|{(&I?qMbq@e9;KV1^z51exab@tK!Kgl#T^-zNj5bz(a(g9=n~u z3umurm?d=zXA^mpBm)pP2q;W&KOGl1*&z*OPnHQH#@I=B;#^8aV~C_hAPQ`vXTvZE z1Y?XpN4O}n`~o3F`42?;Vwwh=3uM<9DZMww5h76}tkt!P=&7#RY?V^En?G&1t<;_++RzV57Sg(EU5(9>1ZmdH z>GE4|HI40l_%z(+R-L=GV$~X(A?eZ7sgrHU1|2#pv*DV06!l~t8Cv2vnY zM%>oiDg;p4-74#FX)<6%kTYL0%FEqcGuGp1o76mUggPAQledK`iG&KrdPustVh-+> zX=zmNf_Z6`LuJJZ+7_8T-yn4*Bxf8d-ESNsv_LFV>?bk**gnDEa|_^4#(MDKH%UiN zz6Xs)NO!4sg-bmr0epxb?3sKc*|6ZJr*_omn3_jFV(1w1h=C6H7;1W8H6pR(U{I2P z$HS3)5+Ob^o`7deC-rbZQ5b>2rGff@axnTM7D0Nu_QQhRTIzuqA{|(%$FHzTIu13X4VPV_XdItqp$oIombpK9rAc zh6*PKDKj^=wCh|emTm7uigB8yY<(95T|jjRh%}*CXBCeec$)~ z#~0nI%q16JXt(_IHv7R(Zj%XOsYM9Uc)_I?>-6^qyX?|;*)M)|ha-AjI@EEm)CE!F zJApOenFjh`{zrfS6S80Y$b|_$dDaX2*H{dmE`k|SJoUeD^*Dd1TU`5|UKvY4y8Z4wr8 zBw`5xrZBD^leAYXtD*?$Rh@)bl4d{J5<)n#Dt{LEgQCVHPRX5G#6{lAp&!c5Pc-hp zyMJ?l`O`6#jXFA^B!U1HF3hE~KZQ1iAmxlAR96Bd`;$EO9QxxN?MYyERX4cH*^+J^ zivunoM2(UHZP`*M%W$K74?{QHZ6%1B5-N31YTs*jSC`G0G0n=0^IalE9Z->OmU`Y& zF}RSXPM<#2Mi*+og%CS9*$^kStvak#5++<_Rh16>Eb_iZ|3tdO{t(QqbKoe1wM%`( z)qlD!FcGL>Ku%#!AUzzVIu;a;QoThe>z#hf!KhoeY_(N7cL}SO*&?2(UqocRFMHpJ zrHVZ&zQ;TMhx-=8ggfaU*QLPTPY-n`twZ@A#ScjV7jfe=JtzIrCn4KvtAj554t)vE zg7whk8m7BnJ_?u%l5axkG33E`(I|2vV85{b{re^H-rFaFT#{ZD3Lz7=WFln!Ir>q! z4exj% zHW>aHgg`P9H597E*;~4Nh03y0`+@#w=bp3B&YV?c)r;@<@&$cuas60z6UTxE=Me79 zBa4=3!)~RWfA(os-`Hq(-ueR%b>-`>u-TF_jVUd$i!M0N&y`@aY(Z9r>w`b|@ME^& zvAgZHFZq(J9(CG}zk8eFHCf%;|Hbljw#lux|IV&_{Xg4p@4U%w{_cO@1p9y?GaPfvfKx|S0!Nd;ma?2&SopD#%+>re;~xq+(bf$3tM zt4}H#yM+h`$x*T&Nr*iz7(IYF0g=TOIJ>N*f#7*+K|wzD2$|*(LlBz~0^}zwzTDHM z6S6twE+7E?*;2-M^%Hop?4bsMU{tuHG!EZEZn*CiVbq7jPMl$2%sfin1-=9>p$y~z zGD^9C&&hHWRYkBJLV$8IWCB@Nm!wVP6KZwnoM`K8Ay!+o$$iL>&Duj$Zs*LOVQV&Q z77-(BVM4}GNn5;Zjm?!6yqUA6Nxg2f)iks^GKK_cN3V=NU{+k;XJIyc{YKl`vcq!p zZP<`u)}ZHML$=stnIx~QtWtle(U~y8+88QpAcm+Lv3E9ac%Bnkkyt-;sgLeUo6v`G z)R8_+K5W*f%>W8{?^XZZylIn5)Q}`@u=6kYl!ouj7cg=msBzpwo3Rgb zgm4F0R+L&OV~Bj8PK!`>9C!9|v$u{KHOTPDj;?x}GO}m;wy^!=*)VE^NY5Mu0++Z` zT$FJ-R{}SG>I6T%zM;9z-x+x6vr(K}nB2;fIAcba_+nF6zs=^%p5^gmJ4xnVbA3bP z6)*cI`_vb|Vx3aWxZ%@RhY3#UMhil%B9wA-vlWkPkLBv{M>r=x`R+}A-T3wI*wr7p z%HHz+Yi#HpcUx9bh7VwH%t1E@fs+M+XR15-nCkyIS=Bk_bjTXqkvoWqFRDoJw2*>4 z24fERG8X`)pqA$Z#SyTT@JUFgqDI(yHI>3M?Wj$3l!>x}pbe2!Ay_%n89;&s5)LFI zPWT962o<3=N3RJ;JrXwGvxGEB7pgKyHhh0VEI@K6)%0>5^!aJMQa^b2UAtsmOX_&} z*)p!vt+FW9Bh`emVtl7oCdH9{&XZa21+%BwqGhX{P(n=yNz;-Q>+Lk{VVW_uN*V35 zjSX#p;f$?{{?3lL8SZfA89Qat46v-K=udY;ANzognf1 z)6M^6#HYle)Cb=2JDfw3fb+QilRV2WH9qC<;NVVJz0mD>asQNG@Zh_LNecvIA%-B3 zf@RV09MeMG*DZ{OWEBk6-q5a$LD~m3M+jI{SvkBK*dxv1+gcIaes-Pmj^$QTPuqD~ z`e9x}g4nCPH`g_(Pfv12Et1lanhRRHcezD6&sKzy%a^b8wDP0|3ltQ@)5y}8 zD<4zr`PMeJh)}{{%hS{B86=iss|?=%0U)qPoqw2g!E@|}Z~w%;bK@uNmS6l@st_f% zLVJz=e$QgnVVomRQMcP?PoGh;e6!)CNfYg6soQbb;G!p`~4rkt&Np!IyJq(c8Zhu z)ti6d`>5b})QH3P(&wFRFMsJ}wp8Y6tHtRl&dKnF`X2z;gGC&Kz_S(t4C&!g!x$ps zz?majC|Qs}22g)u(ewfB2oY;72$I+uA_V-~G1Tl7;1tJDiUWgCCeQ+O^!<{D9{?&i zP=DY7A_ua@W@g-8s7m0X2@d4%a1Pk8zW^?HAd&Tk)) z4Yoj5@;HYHb=l3^IxJfRQ?`(;7MTrSx?+tjP+ayf?Uhl8b|Ie`^f|3VY^WbHbd%yv z_5)#Ab67us2gGWWE}SGVc-w(6f_%egr!67IK$KC#V75SJLmX9pgPF!#jJS2+OngX1zeP)yKi3ahX58=BWZ?(Gs%)up4@fCOqQC({i7}9onHlC}<&Bym#vUBX z0+P=&J||1Mr2ZNhGf0{sj!bAAIWxNc{g<+lWASd)QEVHQM+7pU77-aolIS@=9!bQ-l4_0}pE<8D@_@ zw#csg>`!b+#RR+U-Un<#L8jH#*4i~+`)_Mlx>1Yf79CtR(jIzbk==FApJleZ-L^H< zDcv^SVP?d|6_q6xTt|gK7W~rAMG*ph zLMA}6qKjiPdhs5gV;Js-^G^>mP|vZ9UJhP#f#e}AN0J1=6s1bOFF<<(T(Sfb=!l>o zkzVPi6jahQ&1v0TJDphKToaHJknx~812Pg|@RX_J=5mJoBfnv*fcz}~rVQ0n0` zCr+mJJG4nVV3(|*jvqhH#%L3KePgo|Tf+rAIzqh=s?qYVC?BVAJ47V)$oKD@iuR$M&Ft*P$P^G>A)+=pu~Rgd<|?UR}|dxzK~<*lNOkwCG3YJ^mfjlIoMbL9}`qgqzSGhRKip zeY6XEaj?YOrSY_GQ-e!2`qTDe4A>9l+btss1tOMqbju>61}=UDI%1_*#;KSe2F{Ta zHrp@dCa$F1ngbx1T3TDJ zK}X2Y4*Rt6%lB16bg3<9VdkzzNtW587!5vn!Jfv?kb)`agxWogLovy&@q&sfgp468yHdgxOU6TH!!svk5;vx}FK6o@KYF2CKP+H!*IlOkP z;#9e498OUChDW>#`8qr{7jxlF3fr<&ev@RkJlitMa;>*Usu#K!m zh0!88a;(|tOtCV$^uAV?4!@nY&|1X>)#_{oQzpo7&<#Rh5CSIy0xZH=Qnkv-%k#w; zv=)gNQ2yoP5P-+Q!&YpE6K+F4+xdy9Xa64JtINZC0QG(xhg}*PnL*A_OJL|s>In@ zS-w}orEN)0M@G(rl!CK(;Mi{G081G`=oT^1Cu?iMYuva4JmF``dArI4;Fu!Xe7|jz zTAU-gM=1~pai@r$DPu;t*>AY+4=i5o`JqU4^ zHpf?%7P`R)&U~q<-ehg<+no_dt3kY#%lh3oT@bCklFos=v5`GD8*{~>U#1t6e1n82 z-S_a%Ac6GxfS^Mt!LQT)I`sqmc*k`4V^1vA8B#KHeiAt8hcC^*d$lsI?4QepI-5KwseH@!y(apV$RdBnMe z@XSAa%h4D_GO~W-7B}G?MX&}mi z+8mBDKomg)A+7Gxo<1z%VI7jaknDqmP-2|WkLlmxLZTGfo;j0#O^R{OWzI(0$a_3f ziaC|A^b1_V)W-@9ANX zC^5<6@Xr*dkl_Qzkb%iTv-mTp(D!9zkq#!1GsHE_(jwQVflQc~AG+=kU?j^TjE+0` zWA%)0q!kt_^YqD|a+24e8-&0h1WpbFSd4SBMIZ<%;hA%+^eY5sxE~9EHB9yx1ma0c ztFR@AitXDwtwB;>_7`F~4^E{Ue*pQ>*kxo#Bo?#TOdyPZkR|p{^hm{t@y>hyvdr`0 z9bqXWlZMYg{WzD;Bg76!KeJPkHsv8n#icw>^e7tRyyW$)xL)d5vImni8yL%RGK zQvKngexZz^Tx1{8IdoaQdyok|&5Jq_@BuqY_A!7?*XDd~EALN*U&m7lwBf-AX1_`FiiAK z2Akp%A0jHoA-s|iQMAwfd1g)oA%Z|6JQptH9n#{RurYtW@gCwSEu}{+{9<0j8FYgX z7=*ydfdD3F*&7H#vllL=#&wyjSdJZCoFbG!q>&y$IKgf0mYP+MxSS(}Bo9?wW)3!X z!~F*VVz0?iNvQf&*MtZu-mqaJOeC4|&D+WkleUBzE_Ex^tYDl(Rh(gB#;|7yf7F19 z=g5`9W9Ak_#!WpF&%=cMMU>Uk65|FWn7UCeE{GrE4Ap%E$a(UO4do!}?2RA}mbdUD z59XfeIJ`HY7tC)w_d5_A^!f$mb<;#*}FNJsu z-UqftK*En++x`%wMH!>xoxb9Wl|1QRz+|hm7?6ZHavuZ#gWTy`T>Z5S1?N2yLorMQ z1>a(Leoosc!GzLu=tjyE}Xp-c>v0=|N(nCGUiBcq_bz^TN`$deA@f0bx)L z<^a`d84Ph1u%sNP@uU=H%aqh1lZy&vLPlYAG0J=c~4+99?!K4Qv zFbIJ`2n<5t+_+TZqXj%EcK8|)sK7Oq4-{BrdwNJh^+zB+E~XK}>MaSD7CMQP1WtW; zYQXpjmEw_7!9zmMCh~ArNv0%iS(d#g+j8}tJu?trILZtH6Uy#hPyJERI6x9rE>!V) zdb^zfr3Q|F>U*j#PmO&@OPEVpY%c*-7~qxL+#=b+Cfspkz@x89~rn-(a|w(}DkRzEM+zsx3W={8s=w@U`HlD3Ug6z;`HAhAYGiqaAo`ekNL4xT zM^mp!kp6IogjfIP{)kDy7@i=UNbg21)D95|p^ogQfm=%$H-oG@2%h_ixC8M>6~8|R ze+n>4ib-a=ARHhzhYjshdy6|QFvk4?2Sq>ZD@lz|fkfAdAW?bck&`vt^78ZCS{50> zUG9+z8ImmOwOg5Z`w&@i5sFc6{ihIN$yuaXpuG;_R8NwWs6cIBUtj0t@Nz2x?Tte{ z5y@Mdxa>`xJ+3;vwYk&w$x7ZlSv@`HbP-HTWma4qcqB4=b#my^6>DV?b-GQT0YS9M z*4J)xRc%xrTiDN3Q)5#^EKQs=$@|&%PMIke(VnM0bg0C2X}=fypN0>W^wKNiMH#Rk zM=Dik;FMH*!15Z%geg8QjM(s;{_9;rKVHw|LyQx{#eR-|>Rajo&pY6y|%htSA?jXW*`2P3f7QGmlo@!SBZo0os;*ay>F8lI~#QgJ^+VrZsaer2qgx z07*naR3>j<1h58#$<%*n941v&#u-R6m2}N6-KnqZlj~y~hunv&<0Jh5R)jfL=V|bh zL^?PwODw8Ru9hSgWN}G}TY1{9JtXzpnr)wu-r-Vriw7{m#l!{V21F^A(!EnZ_`=b| zNK8l`$56LzRhdFo#YIRYy&$-*Kf|sHBFdQoD99o5QRTot( zU4@HuBLeU0XX>Y6&j10%^;HJ0nxsxGWj@=BRBo8gjv<_aL?k7>e206c?I5s*DiV;F zjK^~G3anB`IONL&Fuv?PYTUNXT6F|NpNQXm`}>5L>XR;R3gQkTJs_asMyp>9Q(;OL4zd|6UdPNlBa*h+wLmTq#xRz1l3_;%3E1Xg_OXlMX!Bx-)IsRI8|{uv)=p zmkeQ0RJsdlMo_1~8Q8`?6lyZSzX`ksIF|uQ-rGA#`QU2M@6-j{5iWjDe@=Z2!BW35 zY|0}(q<^5{bj3Vk5WlM}`4$NP#(@)0y7#Idus1D3L_tSKr!{Tw4eECk>=|^F^_g;v zAq+Xt_fa3t6%&DHtZeSn;nI}N4P=ORVmk%j80$_DO>PV}yM`U1CrASpr(TIOJ_dO@|FD(83r;(Fx?pz{9!}h!RL&G9FJL zr4WUI+qn8c+uqz{`K4o>qk3@hn8!wfj40EvVf=)%JLZTOo_M;OenD0sP}!sPbm4T& z1%H+Vq`tc~skg6hv5}*)62vVOj`jq$v}L@IVn9#?ZZ*B^$c_*g1M#%#}OB1l2h*-rwZ$$}c|!5#IpEUCPVDJm496eLOwO)WxTcWbYY2qgfOKx)4b z{sb6=$0!1KHufLRK_t<)8I$A*vBe#NiA5abn6k!l94?)K@F!0$6+>kSNQIxJq=3nhiHq8<^^3(ujH)C+`ucVf8;WM-H4EJ3um$zS#Nu$PH_o+5ls zuyT;AATuHxM8NFT;omuypI_is`+7wz)z;QoYsXIO=?nR2Tapu55L!s2xX54HcRug; z%A-#ocj;=;KBTtoU9$SMTLvk1+fMqO_7ZjOkmW;}0pG5B-L@7h$jh=x6DQdIJ-cj+ zRQL+AGpt?VdbKyHtgK8boP|2jwcf{TgiBjnyW-_o`S=Rk+t;JBl{zg`NHJ~DqjFKYntr}oRZS@e^Z_Nh$>NCjve z`VJ_WFJhQjy41TKAgrT{{z(%g@TVOV&OP-^U>cR1|MHM}@@K+0vF>q#q&7$|hsa=V zwo6Ah)wlZI!Kci_G0jtS$IwKHjG%0nWlLx5sqlGO1HWe}y?TD2ti}h>jeA0o1jAI| z&O!&An3v+^@daO)i~0`@oh0gQgcozLUU=uCFK`XC8zhzn8p4C=pA-myh!*E$+PK1O zSyt(@^1>WH;Pw3H&a*xp1`BcqLd9v%nL?HdH8C)Rc8mJqH0NCDsx$Rr$!?SuNeBlF zI55cE+<2R;wdm}QVwnZc6W0;5lo)ToF(5(eFe#oTjx`1wKejQ!KnhF%vCt*LOGcn zvV=fVA0!(fbResg3rBq;F+|xZBZww`5Si%QH?{7xlKd=>2U18J;6~om5yxUc8MBo) zaVZOjH0BE?%1#s2K5NPExlC_VZCi4mXl9EM6`rx3VS zZ9pHLpY3@8XI0G)y`(?Tejsi5L-04XcX?T82Vfh@6*jeJQ5RVPqx`_MAV+&tL^Pn= z?VL^ZNA^k-=4M&G#tNLf;bPI}2|mCbIFlxpAE^rn6>U!$a)bZ^Ctw6Y=>0>mryPs} zMe{ll23R*V@32yhMfyGcGGBFI!6Q8^L;{1E6UW#&&zWP3*Vj6X7)``&ZIsDp)q}FM zu4}QrJhh4H)>^;AM&@WtscbpAcB{OowLthls6-?a*wA5U#X47seh?c|jEof{8K243&cht!W_|@@3}u8fP_PQh#%#`6 zlJN|IQoa2oIP%ls;;IiD;pwBTI-9Oes!I?`{VjIvSut)LiA{?_SxGD28S70Vbczdd zZNh}{I#ztIZ5F}A9;P-KZrIhm)BVS3-&<{6qsOIeyH)Ydjt(o51u;y6i(;~EEgdq^ z&UsHd094ij0rIG#BFjz8MS~b->$nN}90S|$N!ik$V{vJZ^!^t8kMI7!hgdqe-i%M2 zpcxz<>emc&T=MF7_WP}J=V>RA`tyk~2_E{`!R^HG%9Xk$Dwy>m z$oK6}#rC2+Q$O^xl2LiqsbdmYlW?3-RyL+|Kn*;k*B2%eW5Z2^YaU@vg0bTgCNX4s zrFM%WT#8s?!qNp?X%6n;hllX!d&PK8n#aTX*Ma>RRKpus_ztFi5+INzWT0_PtG)Z0 zH`!_PW?6?vur#0Htx?Vv5w82z z3klJIz{KrPc}7mmPn9Qs@;SC$R+_AKr^;R;L__uJ5`Vft#6{yWr7MD`>TD;7ASzm8 zJ;p2$Vv}W?mj!syR?V_ZC9Fzu8g&)hc$q=nx?+o-Dc?|=Fy}nmqJGk}hkA{)^4SZm zu4%hj^9sESbt*ee=|7}rIkm^A;%r|iTU)w>u!TB1>{}&$XxXGdQqxh}md~!Rh8?}3 zY+3W|gIE2VJ*h*6o5isntwWI;RwwXL*zt45+g1@0sd`kNZF449*owd3Aqr`hsJ~1r z5kXFS`izin9dSNFGy(*uUFWwF1HnQ@+NQe8#CZopf;If+cv8|^{fhU z^5=+)K1!VU?K+5=bH>V4|0zObcc=B;QFh)7pKlM{bDNFQ7-?Khd(`NfrZyO@Q2&KJ3XbyHPw8D8c&b44C#8q76oxsqTAn&l49~^t&-$Shfl7LMKzyOg0 zGQ=H%lX^ltAqg8Mf-ewC)Ss~G`4EnZtIzJJOLU+m>{r4IDTqtYlJLNeZ+cB3CNbWL z-z9k!LfO*RA?t0sY=qR8y1KMqNrX~tRBA{%o5n z!w#ffE3?o!V(b9-4iQrs4GmT{Zk(%xV&nm7nVXQ73X=CD>}a%)Dj;Y^8e<0 z?5RL5{TXP`FX`j>KNYgUPu)Mb^Z-PX>yMixgr9#o=!dq`b#VXmai>9rCg_m}q=DqKj>RxcGzTEFBSigCCzQ5P*BwCWO`6`|JzXzt3*F{r9$b z`6m0~C*R}dTr-3u{N}E|*dzBpXs>$1%k0AEEVL(P_~; zdmgdtuews|89VLMH~ms(hO>q2HrZR=^-|veyjuhKh0njhwh00I#?SuXgE~(f`?F7* zX{XJeF1`4X_KV-#V@n@=*xvr0x7qBOQ*F`WWp>N=es6_S#@VE@BKznE-eqk%VftOy zeBG{o>&tB1*i!q$J%6=(f4|hO`OKSjSZ<-+^Vf&%<(FM5GqlBa>utB&?GLT6&%gWi z&iTIfx}Vr{g*2b7Ge5G#CI0LWer=PBa_#gv)9jbOdcZD!@##K6|LNhC_D>g{CWN}v zuDI-CKgZy{zdvT9#6A7}uOG2_3oC8L=kKFJBd-(

?;Hs=s%mzqRCf46~ayCxjstbl2b%#Jcai1 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

4YLlX4^N;&_b>vUt%$rsO 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 P{smBwQIW2DXG8seF|psC literal 0 HcmV?d00001 diff --git a/images/awsSendToCloud.PNG b/images/awsSendToCloud.PNG new file mode 100644 index 0000000000000000000000000000000000000000..5ac97b92f2b840e789c3712fef8b21a66c974d59 GIT binary patch literal 180610 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%0A^hZA{UWJr%^k9@?{kl77s>t%Usu+&d(E6C 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�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 literal 0 HcmV?d00001 diff --git a/images/awsSensors.png b/images/awsSensors.png new file mode 100644 index 0000000000000000000000000000000000000000..2da88e02daa0258a086c835cc89d26ba8f75d04e GIT binary patch literal 25202 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 literal 0 HcmV?d00001 diff --git a/images/board.png b/images/board.png new file mode 100644 index 0000000000000000000000000000000000000000..5e06849d87a5b4d308aa0329dc1046a0cc40ae6d GIT binary patch literal 85868 zcmV*FKx)5004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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

g;GmgH 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 literal 0 HcmV?d00001 diff --git a/images/boardAVR.png b/images/boardAVR.png new file mode 100644 index 0000000000000000000000000000000000000000..58a876fe6b9d8586824293262fee3db94d9d294e GIT binary patch literal 398498 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 Bp7lASCO*Fe>bPQnefn$}!!cagzO9U5aK3oz zjE>P%({JP$HvEL;0GR#E98yv9$l3-WFvFbmEG=SEhdRFFr)(WR`%Um84w{R^IawaT z6&)^_>f@&CT$(0-_6@@D`@DMMlNT~*(vX#@#5C@S< zu&c66d>e}-A_=+S-C_0XwhY7KFkEZTGhJQozy^1u3bx@koK=sEu7^NhJ*G%G{VU{< zs~nt6rS&B8mP)8BI2=crqtezwfYh;BZ3rmRUKwJ-esz6mm-@ufMw+T~oJ(tLE^qzG zG-6M^GUBToE<=*XULrD(v5lj}P;PZnzX=x9;U~)e z5B+=@y9sBsIT_(uTJ*GK4DN{I`uvlh`+S*23`>|;?83{e_5$C#1#k4leFI1S=;LMY zJKkP)Vo=XzM3=FIWpt9uSLzP}V;{yqc^>?WKR&E}Jcl#V(+_;B9K!^HONt8aEAZ9y zt87`#s4}@;jg6B4F5;O!hNVb{50#6!!ojuRQ=2xIp-UI_E(5+WZQ|6)(nst%VyH9Q zZx}E88a{ohjKYRXV|oaF{;OXrBRIQX@HS)(eq~{`;+2@%L7HO^wH^9Krk3C__ZEr7 zQ?|_zmUNBbX6a=t=UTy1vk_d)*>K~HWr!~_L%kBp4E{VpYMR``N9YWQV=4i5?q7p- z;xsrg%g{w1;5{FUPdr)9{2zaaH#HyB3+1H4Buc$A`Y40vM2Ot_usNT?tUfaa;t8p+ z%q#MgI|xZzBYvOqIscph#Fd8Ht_0%``aUM6E10x!G98m8O-#}?u|61LOxoxPa&BrL ze5TMhI0?{zAF{Zb!l<-09~pkz+g2lHII-1icriTX(zWqauxY(4A0VB;6*gMieGfr^ zG-62m%y`7L994*D7)7H+6L?8UtDzrkt3+OZ$fc^ykzkX%p(g}KR=mxwwh(K!HY%mc zWGPxgZ0hRFRdwSf#5I0X)+1VDtOPY@=+?(TOUi8yxY4fBG~q|-0AVdg4rv^dmLb$2 z>GHB(t0m@>;A%)zPACH4zX#HZr{V*0Ez+U##y1W|c`bO=ST$tiYQeJEm~bbxHJ8Bx zk3-2BSQvM3fsw0<5gEHHnbyYe!UIaktuc$DkvSCyw%pZ++GZgt=h&(j8~SG$L*5O2pCwnM2d(b z5TxP55mc|KcVOzW-oYVW(i@X_jI86Edi^6zP{Vg(3JxM0oWTtrwyiAl$S6K}wwR1E zY%TSYVpjeteo2$@iPPgUg(QqeJ|lIU#aVS`;-1Z^+t-MLry)*mlVOiookjVOw{bFW zpC<-opS@216-}}*Nc#dLT;fL8Vh40xpZ0}YqcaZjS^up*kTaiN6MflYaM8o^oXcPS zN}0manK3-hazSU65x)f`BGzLB<#T`jx$^iY|8=?jBR^lZz4tv@h7@OI>6th2^5s`E zcvR+7xQUlf?b&_D?PUiB`}4Ruz_r=uzwpKK^mo2frtoM_-n=`*K{5u#8r)g<3N?0& zqmOmsOBnp~2Hqj89Us9TpYp@E^Wv>urH=_j46?%RuOrPfy@;7tH29)1UX|F67lvJj zdjL3a?Bjlj6`bW?hHeN~RCxREGMHZza1P_{IVSF}*1gl`XKd)k!($2x~f z!H3kfiqY&b8G!919#6~i%mg0iioV6I+9GHFO{%=K22wV-4VY~cSo(Gxjg$|&NWne= z-+Y!9BZz@p%OzX454{s3Arb!g-<+Xr`C2wTZ4BKlONbr+@p#dWxY#9+`wBN*dE-Cr z!BdH9e2t!N=qNaqNxd{Ab`+ruFyv;Nd)K+vurdjIvkgAkIX7j7l0j6R1^u^%A>{y9 z!%seK)={D<7|06z{Z03m%sVx zu9r`g3~ZNZn-tatNl}|oW15+X10Sh_)zFT!Zz^-u!h8TC3&s&!gK3XRv}hejfFE`` zoT`hFw0b!euMK?6MRk_Bfebl-_wdGj+^yT5P&gM18j`?zo5BnJOuc$yJk zk~MSD*O>Fm$bzb&dX7I{BN&kKy#Nz<=fMacC5kiUd*1Sva>sA}gR=k4Z!Rm-bv=29 zr{#=%n=&8e@H{AM%Y)dkLHLZ*`l}tKQPiF90@#1o-DUTOK3o<~<8i5Y9{|tju3*x_ zIt`yYUoPP$;UmBQ`(+e^{~=5gFdO2f54`N{Od00jzqvmk+_94=EVg~LKb37>U@XUK zu}MIz!PR$Yhk>fD{2(s&fj;^MW6g~i!f1-rcapKFOxu_ONnu(y9Kj%%6QRLaHK@k@ z6C>!0d@D0=h#tn3qoLQ|rGc;dBX9$^bp_PLraABDB2f#uaz{8*; ziGZ!A)b@*j+>sIz+JBGFl(x68QCVRX#bD8&GgAuMBgQZzVZDGwd8xv9<5UtkQW_*x!X0oyPq&&$nR`zrum+uFzw zWMx81S%hx+EK=+ZV=~hVompm#D;gy~Ji=hdt!>~YPv=>5o{BdoVyHXdE2rm@KXu6q zg#8z7I7^&!MVU2WhlsL;?p`9kw2@Yn96Xsg{8?FYBViZ=aXQu%R7Q9WPDV8zI*B+$ zXB@P({~|NIvaFGSjh$n&9%hrgE^o_~gKjF`s3|ed)+TgJDK|*9RZewrTfrzDEQ_Fu z6<^d#;?+L_Zem(soz}|Sui=9j(aHIeVDT8t9@g_8`}oK4q?+2-8N2;9-L!0P;>Cy$19CkT2)t}(n_$%6>Q%Ksdp03i z7`&eVk3}86_ujICs|bA5XFY4zFt}~R-uDbVvD`g3Te7&)lE(d%I-^vsVzwH}nCq8pRJI1jAlddaxLeml_THl|q&=hLdh8b%LT@+Q6E6wqnshVE<8aC8O|c zJp%-FR)$J9N)yX)-+`fQn**6-)-wcTHhd4p9DqnWtT4B}<+V3u24ehO%dUO(k5Jg| z0Y*NukzrZQ?Z-)-DDnbT8;O&k(ngLd{W&I~$VB+&caSrYrVg+^(>N=PAFB(0`K9vo z|Ni@U3?-h>!$Brw7Aq?N0}kjhSU>qEpDxF-oM-%o8}-P_A)K`*J7eb`zx0QI9XfNm z9LF>I&*KKzoj2W7#xXcL@R5&{9XR{ln^;%QeECb|%t^e!3umVMRL{ z>iTX5&j{`t7>1maGpi$yb3N9b(0M%YFE&ZQNY^&#)is2@p8<4Z1AUWUnux@roDITFwo}e!%EE4DLL+?cZ>kPJ{2^K0u8_Ec@FRoVg+3St(imT4P@zu(WL(zz8H5d%X%3mh zeo(Dl0?2l%)B=*imR)BDWz+C1%S2B?rHH@D_HyyVJlOmylK5fq7fv`O4p98ri*VHaO#UPJTQdx zV>#`Ur@=#(h&1ZzNhMV1!^ZhqZhgTB&mFCx9kg?qnVT~6&S|#pnGlyJP9i5xU6dnU zuUqId7U1}QP%g0)bZnRi9$5W@I%3HfgNG^gL`JHjj4EFikqKKGBJaf}PcTi9Vtp)2 z>|M!EL5D+Nh@=oc^+6tZrut7T?c64cDGQy)A)6|55(>hVivma@n`hS$!ilG%t9cTs zwk<_9wtA6PIJAkUChGD?#+_AGy!^g2x{B?T8@}`*h6u<~S(~AGX!7z$n{eTr-OscE z0%9bzbV(XZ(~UWG#G+ToWVM}%vFB4tz{|JuUU~EfctX#%GJ!{V#!?UB_?^$CK?O@z zPJZUI<@lk)<@OJLpsat}+cdz{=NlmPFQyn|uHXe-&wT1rX`1sKJ|;zjelFt0BT#YV%% zHQ^iaBp|lU=~E}ljrZJJwqps|Y9_6)t8q3tH-7qE^?n9?S= zAOD)~ zAp=%~%2`Cl1V+^;ksa`A+#S;f@A8+ET;mAV+#GxlG@?i(7nhlI`&|#}1kCnp* zy#$szmM!Jsu4PHdCOAtZN-h<lufOWXg zVM<}DGUMSS$Zf-q%avF@kuFPVC^~Wl2F^q=X!k)~%?rY2fOG^)be8b+nPsduAHg7z zpQ~j)icuR7_%`N%ei(z$<5<3P>cYjcYsdDo=NEoKPp#3Ke_}}rEZ-Zj{Orkc6wl$m zj5F1vcrn=u2DXzJbY8r2S&x)Tjr)y2@bAo_o(=pJU@XY+Z7VUUZ$Y(tiaf(+V3Vz2gvgs`7jdQG+0TC-k3_|d z$T%MRe(`UYmHqqh#$X(44$^tGhj{J~Yj18Azug$H;z~vg@cARGe~nWMf1gZ{~BJmwSqW*XeQhlG;>o>}i~w1I%r zlu?kD7zXmw z8`qb`NxU6;9*<*tgg>NcT$IOn>Ir(_M| z_?nA|jTFe^KL`Kocohj(3a;P=;ff`h;T4O)WuuxxM=h@k@+!j|?p4slGi*F12XQfw zOit;IG<3vC?=}@H1(o)nw)#(t$cHT@lu^gTQkIqL*oIBjIl5zKF1kF{eu3`#seZvr zh{qtb=i7KXaz-y3v9JVt&o^=kE0q8h7dEY(k&p;>ffqX^_CN53^3RFuB$F`-^u=K` zrl&f2J zU7Kh0ZJEMQR=o5kPL4!*M&{N?%=)lGN?jD_;N4g25_uK*g`8WPccGIhjzKkT!#)Ca zOdLM53#E0Ua2KX5S8Bu7`ta+y>V<3CN17mVc@FNtYPP}VULr{z7kHRnQr#?{5(_>2 zMcVjHq-Sb5>SYv++uF#>&J~eTO53oHRKK)dAXeE_rou=E z;ofADiZf~2nuJlfY5YaKDYAoQV3d=JlBU4po5jc|#g6||2Etk}UQ(qjMUW9|emZIv zlCR>k>rfPW<-J9mD=kDC$EzApQcL7ALz7`2O31rN>O$#uEK1CsnNp-LYMfc++2CjX z$N!})VOb9!CAh>l(CQ7Z1Odq}Xx^xZGq$Jy?EfvNvFuwzJP(n$O|3(GhqHb&&IR`Rg}qC>M_(E028YljY=-kK;-Up0I?$KVMq4aN&H}_x5*|sn@-}Ea8UG zaSYbSo_wO5zW>k56Q8@k^!Uh74vw)!Q$&fW`hjHGfgnHZw2_7` zRq$^#swg8ydEoiv8pIJu#;XY&t`5!MrFOGuFFtORgMaod>cts;P-2-LWJ@M}2!%qa zZiaL@{Ik!F;!49fZ@xvJ9mb<F-pp-#O&9Qp5n%ypiU9`6f_EDqZ}!*09&yNJ23=ZRl5}fbfE%jIwQo=M4&1-))SGe zwWHqgVV*FTcgulq(rEke6)A`_np9oDQ$7FlE zeY9k)f07xAI8D~Eb-8QIMF4_=W&2-QAWIv^vuuBLpOq81Qxjkz3|r|vROiv>fe@C% zA5)iA?#9^p+{y_XeRYxM5rYJ2-vH658e}vgX5)v=@|BK!idp!`QP#~zNn&9|n%@J` zw_J>k|CNBvn^SRwjuiaIvTun?0nXfN;Bg#hmXDR|e)HE$Z|`2+Y&pWyiulnN2k|&d zI)VYs*{^=396xaaXA>97O+WMgGO};K9$RTQ*#gG_8U|7;c>C({KlwN19M-8X&(4%S z9_P6aH|K7C+fSB)M|^I*^|rFav#l76uFw}N)c&a+QAtl*{WZOA6yo|fOiEa;Ft7-8{D-}F5u}uPyX)jl#5tuHFU>o z%Oaj+G&G5&K{y*869DxuZzuYQDp$aQ}!neNc&hj-^Y?GUcungo%FOK@0Y=4srKBd zPYq+z(R=bo@Q;22T3%_;U>fzIPC}d+=VLV$R_p-Q#Kl4ZS+)R7Aar@#|K(Fi&tbHz z_44S0d{@8(j?3bXZMx53h*v`zj;xC6&p3mPDgEIOb>Jjo95*UYKKy-|bLo@Rf)hii zEt?_-Cqf&6pE!K9EI;`DvUqS`nOiqr7B^wi1KbFXSN+aG9Z7-RBA;}Gjd4Mwk^d0i zDRJtoCXy6U6ZPi=VH#)tub}_1&bGc&zweyF?W71@P5F(PlxCql zxmL-+VP1pNWALOgm#yNVEB|YA%+oB7lT#X|WeQ)RiL#%hMNDZ*KPV`imYBi>H79rJ zCgqlC*{oUtKx+TxLsD1e=PY7zd0Pwik*jSCuiaEknP?4ULDu3yJiwQ}lgp+ZYrV}>9)K-b7_3^9yuuw^!hs%=`iC=XOX zEP|*aNhGP&>;P+@39-IWX~vp{5XETIj7hY07f_|_K!d8TEaIxEMJRer7mdKaf+BC6 z-BS1ohmn%m^Gz_4U}qZFCq*hklBtl~fy?sIJ}P;AEnkfW%BesXgev26c|At$H}ROtaU4AOCUh1pqkYH*Qhm9G%t#|*3kFr}VPG}?$Rp+CM?Y5f z{l~vuhHkp4EaS}o3ZMLg0e_F5e+=%}8Y4Ipy!gF`@tDqUmrWB><;D+U@c)|EVBJ5K zkuZM#0YA*=k7Lk!{Ij1bm(QOrH@@zkGJ(fip8WFX@kstLEG+_bcDgKHI8&z9L^{pH=7)qb z8-gIOV-jUciQqtf?7)F?>p%Pt@Dee+B^Tu>JnnS?XWUmXIm>}JW8>t+-=wUw^3hk} zi0>&_!Jv~r$ipL8qQe3E*;8d6vGbVsr#AScK|y&RAt@pZ9`v(iykBAjXWaRD9>WAg z>*Kl9jD3&f+%PeaBV=jIs||~I+~z1IFMawZ1fjAGVxq$Oa~ThN7rBA37{JT^%D&x0 zfA6DB7r?*iM~85gVILkFJEMu|9Bx$CQW;tDvyE63j#`m~D)LGQ-+;}fK1=Y&o2wV^ zxW#UIh7bNOn181DT%nF*coXyzCQU<+{;-_>^225Ohu&U>fA*c=z|{cU2Qc*Gqxd^s z#((1OGP428Sgqv7@tE0)7qe-TrsmjY-j>2Uotg!x;NXPBRO~-g zuxwmz;w9)Hwz?q$oV5y22A6N{R16tO6^FB;td{klQY|(>8BGX@m8~C(ph`WQweXBU z;-mZ3odRz6PNFqO!TT7W->D0f>NDHCER?WhPZQdY)-fdsK-X-ykx|yc(#M0x|$< z#P%UIK|}!ih9Z5b?Ol<2>z1@nk;ts1eWS2)_=yw-JU~>cuE<0xuHZI&)||ago7;Lx zN$?30IBMMI06#qtmHh-6(K}DJQbW~558Jk6JmwmEs<2tOD4U|DruK3I4d%Kq2`JM# z(4_Zl6>9tsNz)F-p?&rrD*@Mfi+0tw2@qb6Vw77G+N%Y^7Ujs+$f~!lE&aC}eOftv zhJfOhrUE2yR068(yVUvdAdkt~z43P?3Cub%3|bq`@)BWZp9t3k!21)IxSYniTv-?lE?mKy>t0#lK!ayxpE+Ir;-7t`l>J-EyFc{4a{1<)@mNbfnTCPjk7Ftf zUiwd;E)V>RKfxP$&zD<%>5ek~?ssEAH(DO~%SX!t|JCQpp7$RvOYm{x(Pv88fQbe_ zngEe2Ew8udL3|ES3jZbr3Hq@kYA)gWj1iL~`a*%Ft!%;E`3 z_(_qiTF+4{Wz#k+d*`~GnRVsh9sA1Io8DC(f9OZ$flq%4GOV$G9A}r`J5{bnn=Nwi zX9qg%vySk!jDh*$Jl3?s)$k~epQ9|npm-4z2t0n2gL)3!C(s|J$%#K55&_L>1z2t^ z2XXx$oh-xqwj&NqBoCh`$G`DVIr7b?N_pnla@*hj>2m!q;AL<$%rnk*xOu`zKAeze z$+=vHHxsYN3*08hCrbb9#d2;V`W|mM=Vu65!Z`q3=Hq8^#cJqZ{6QK0hrd}y@D7Ms z4BBU=@csn&n#8*%E@C3H0^1E}qbc-D-8aAq3MLMEaT?nWbyz}qnUgByuiSdja2S|# zAkQ=9S!W(U1>h+YwLiX%fz?tUk8c5I*#(9@&3NT(5t9^Az-HY!Otx6sisOQb!@7HK zE4*QN5%G=k@9{%r;mr9`-h6kN#r-&JYcr+;v=#g@Uinv?$g_-kF0sAbZ^T~1hEINn z@^?ZT>c={O!-_5!#zfUI%3+q_P(VJ%dXXiA+V6y^1LWF{58z>-FdCR;jnwp%pgdq( z10Z*^C8=>xvt|y$Xo3Lfvz5ZeG6*6K1Eq9;80~**XsxXi51_zCosBL@1-JSmn__0T zrKZuD#`eyJyT<+{X0Pc@!1@_(>!!R3@+W#gpK{jB zbtzMsJ2s%}U1o{)S@q73hB^Z%9WPMGk}EyAZ!ZH!Gc~%~=*uZQx!%d08Wzb9(SYBG zE$cxmn%FSI@@^B@;4rcFO?|**BG@v|f(wvDxr3okb80p!G9nsCIUpxIIE8Xvm&>ft zJ64j2hnN8lat6j!1SuF2%Vowy0RQ7d!EuZgEKLlhj-x*1jUQQar8$G-6rB1^A=9{`~UUoQYF z$Q7LJ?_&VC6*vC+ph5PtSOa|-&(7b3!35r@${(u!+4-_?wqGW8;0)z9JmRp=I(2>V zw{PM2Z0XNqgn)J!+csK8w&AAD%XqTMN!}!i9~};6Xo>;ni`uebGIMov^1lEWV^x&K(|aS1m8kKx5m7$mPO z;*p{|aTR3}c*JcBzFFCJqYgf%7t7*VEU#IQ{P{cOE(ZcVOgu)fU$;hEHi39n)rL=|W2ozoA3IWh z_@&3nd;i{har3J87kAHC$Fcn7(eFG_{>k6}?ee?-=kMXFRVml+-(J@5!XrE}@zDSo z17R#2Dv#j_RDb-PhsuWid&>&Ws$YKKJ7v=caNi2=QGtFLXU+KrX%2+Pu>PNu-+7$* z*PvTI5tRK$smUYDvJJ2V^fsoV;@FgEDtIzE>&WRC*VOZ~z*u?wbt5#foS0+z5udcB z$rC3nzU9>rQkiFsxhAj7;@*Y1a%KA#)urMMr#<~x#!~ECzFH3(7BVg~L8?l~ShbJ> zbcPg><HP5 z^^!8z^a?;!sU6sKqawn;f%U`CtpqhGahN2+cA50G18}M`LlqtE336o>&@kmDwtdoMOl}l@yl72{LX_zvFm$=r7F5)w zoda8{);4kWRiDQ<0+r7MA&NwFTvP;oTPd+oSBc>VY2f)K!a}&qj05U%a=#(3)k=RP z5>K{MdZ|7`MEf@He3_(<84bPDk5s8o3uH`KTPQ^Wg*Gi9Sd%6IO+Bn$P-H_9L4P3g-|9A%JP);|95O0fW$?y)Hz;oYOk+r6jC> zI12lh)+R$`r^TZWQE*+WRJC=o$Xm)6gmGZMgh6Y!E@(H5d)d`A@Q-TIjBUyhrEk_9 zaSR6=bR*h)4?uvnc$q=Qfpm|@7z9f=!@n@QP$oC6(?l@1pD!KSiL>lHzNERqKL;Kf zmniXOaxSn^5NnXB?=cRX`R4?bagJaDuzl}Bx$y(*%WH8n?ZP|;!-$hr=f-*t1HbRy zyUO(+`&ha2mhI)lk4}{vZ@saMVSU*W2JqCMeEJk#u(r7@Y}rz#aWnc>q)T`N?fRel zK<%}WSb;$hz@5QakS$ucBg=w~ zK!r1`#ls~=tcV6)4VQr7KRE*+=kjQQm^`G4i8}B##-RYPOVSX~ zAh^-4-u{htAZxMNi6FI(hir0z<-;7c?u0})JtU^djPu(P}Egi$PiXGq;g(7g;B@U+|L?{}?a#bqkV6O=E~Ei>qHUZI4Y$RY}tqGKeR5 z;2Zcf37)V6jEB(BneqCN$AR&^?PYJ(V0qc;HJkt-G}cB{>c(Ya)<8K^s`hqxOlpTK z@`+``b?5@Y4_Va==2+&j2oIJ=*=+`*fg=1@CObkTX=PT_aaLT7&f^SU(Sc0tIInl- zKth!^Egj`B4)>{oP_i^~$KF!eVo@i6Wg7&MhMA{n7cK6NQ?AYkW4DjCqjU;(g-bgc{ck+-Z1+k$k82n=i8Tv{eyi@Df;U#WZ=Z||#hVTr_ z)|_knM-lJaei}<>@R-dT?wKs7kDVw}+cuU-Ea#cVm95Wy=DX#We)UayKK{ZR?$+9R zuJzZTo6BWbKLjjZewQF`H`XH05jqt}ghQTRfy^^>*3;AuYNA`=*Cy?Kt6AaEYyax(($xx@U5o4AlR z+A8$pD4=#g2^dxsdcGBfK^(g%o0F!FRJf4YplZ07wNIe^juEyh1R<(k<_!mJa)Yt8 zn~jLlsQ{~E2|Io)65lb zN+Ey*I>}w!XpJNEEHz5YHUjFMk5cnRp_K-Z@=I-Jb5Ja?(9v$3nmRxpcT3QN{#O$2P*PWzcP$|S|s7Bai zo!aAJn>0#gtsKWKwVAP~5eMDta6|F_ z8#ZCtQz_$!sgJYf9Ifg8kH*J~&9V->k}!gsy>Gi`e>r&qPcB0E3@JayD6C*muccSG zhveZeeXor5hs$m6xC8z%BtovOk;?Tb!9#_PLSp>dBTF7vSHhna`^Dc z^6vNk=jAK+|JUWKkNu!*+qu5{-QRkTmH;i|(X+BdY+B~Vv)b5pwW)Cck;Mc*wyUj=8Z0dQ&$h1$v)=q*Opd857Fz{l=&jH*ynbd)8?Vaj@Q1 zYjs;3$MQeckEXIR4wh7Z29C}2?nBO~M;YqsyG6WAlm^zKW_#6rCs5eJiR`e`2|=VPJI?ZzT;+zGaWEJi9rcw4;aSDn z*f8sdC8ex|vvlhrj_jEpoS6l0<1zVON~Sp#`cllp24UI%ZbeiBgkGD@JaMA>oQY%!E z=YrGuSPW$Aqj8t@LO_NMo8XGHHOg>WcG_DxysqgpA(6q+&unF=?iv|z2_?YGl6jnp zf&%5TEKagBxzY{Q2*qw?eR1Hx7g6Ng2PcLSWGT!^aMlbEnUjO4bDu3I43q z%2F8024|n{Q4FB@#G+ALrO?xL$cusg3|{WW!L0`SpvMrr%wE3>Z!yLM(65;2`%8zG zIoM%xGK`yn$4;Knleef+G@e=Jo!qfW!QUG!V}c(p6&k}k7<#NK{W2jIwwxH)0E_}` zjeZeryx@cXY6MIBUuJQiMNDGEXXc{u&?zxz;x*p_SOm(-7J6>7VC=I1MVy)z&4YN7RjvHIOi= zM9k?A{*+>u?L{8`S4ypIEZ0&9tI9vRNH}1z-^5>6o7)yn?Tu7bq`QeG+z;Og? z%@=XQHkTT)FTd1n6i*o<0dFXO@|zEpvnS4DER37Q{VcV3smBCh=ECK2{^DZUxqllT zhJ?E>Zr)Sw|Mu6*!j(&)unOx~vTYXT%R0O#VQTXRv`d{xa8NOfL4J>q+r+^6;O%?L zhkp58<;YXV%YXYHy{o+bo&)9Rk<(aCgtPA$T-Q%*Q$xgKRpuUl&2b?rzZ;;le}H%+ z(SncbT*AP-kK?MBb#eI=UM9w;@bJ;0BOL4p9{CYI+7nKa10>|(BSa@==kdIMEa};T zmz^;#D!4I&N#N8oCv+zTMI4k*;r$u>L$+)?{7e}?ji*>O^<-6Ox*ktb8bMr@kPNo* zW@A-3oiU!;2%OZ|l?dR0An2aOp1GA}? zZA_JjeYA@;oFfKwl2*#5En;%iG6yh8YX4|q%saGG4amBap5Pst57a=cPGd|- zXRit+>VzPl zj1Xqq5s)C{{qrc1^H=}|GLhwzPXtb4hGx>rUGg`{E7JlzJ3PweHOn}RRjxTj3txL3=`Svyou8*Rt%xKUkoK;FeRY%qvq%{Qaj z66k-;5W_887l6Q4EyA>pME~-Mol@T$)Fh2ric`~OkXKs(l{Ilcm7SoL(c_@VRVHaL z9eiW%Z5?fHJ_o=Jjk{>vHx`YV>cDc!JYzrHQl!dBYuR&E&=MgZ_3Z$vEAnaU>e~)c z+txx9W3+|yi^4y5;j=4a$$ZehHSc;}bu>i79e?RpX=%)3-X$3*4k!n->EK0Xy1y(h z(m3I&5i8IH+2#dobi`*7naoq}N~Y*M6SxVl@@O(SZETabM&uY^+Y?yaniXu4h8Dv>!0rQK|%sQsBUwg*^%Qf3tuC)T7zLm@Mfb98#X?;8& z_7&Firq@sd5)mi0NIFdh4lNE8oLfnm!+S2~JJ`c;CP}@UFH&TcC~lc*Ny0mKKd|z!DV=j1etT zFaW^F*Y1PlC#N8uk9z7Gl4qo+Mlk5+v*?G)F5I`E2?@`7<6Z#fY0u+8jwgS7q};G? zu3*kl{@L&SSy?x9sr=r5^N-7wi+IfJ!s)Vk7hXojLGHQpTH@2gz?gP?$HY9|)Z4?2 zyhC`#C_+))rDOE)u?`ajR%0Gd4w}H5bjRU;(yms6z^50vq`?Td%qx8sflM9K>RC6ms$)S@4HeWg=RL zx1Sl9Il0)@Y**TtKQ~HS>;G}w^VmRd5Q`}Et70{^z>!tjDP&ZgOojkYg1ex$y^++i z)khWghD@D~h0{kPv%+LnLxs2Cq}XM!HECd=BL_ENG+}0H675ZERx+kG01{hdq6j+~ zwKxc5Lz#0W7XE@yG8QT(su=K>nqHd;fV^8H)*vllg^V3jZLDZpj)MecwJ@m7xM@j) zMoW=zahz0id7}=PrKvzB{DRg)iU5F3VAozH=qwbZ$S?qhOYFL6jr7w5TG{#GCxsbB znl{cw2i1l_SgCU+Ct`E85MkdKyQMgy31liec5?V??1Xpwj3UcyijX38IjJ(X;HplL z1CUrZ@K!LnaFvtApBiJuEmBy3)WqL$=eBoF5Mv--25?Td>Bk{gdh}UtP=-t94rLZS-7+y)-&tJ z0QMY={q=A5`1#~Eq<)9i!2ovfGeJG$;~$qVF;qTdzegJu$b)}Fy_K@@HT(1^(Xe5E z8p2s{>sP>{jJ?*%zx|%qmHXa$Z#jJARQadB^Re>9KmDiWu6u4N&*DX5BV)s5f`eKd zGrj^-mpZ|t2aGnhc}V#j{eeHJ$y^GRFm?~331^eC>f?7d@enYoBJ zPGfLAhFE);0QDIY`ZHfRrZfI9)pr%*-$cI88;`-NR^pC0lzOOtyzmQBlY?vW z?76anm*~yhxF3@T90Q)w=XU{@G{K&qA1)cXj3qw9T*`zp-vh9W2`VQQ>rS03i>xar z9sGQ%PT+?vvmE@lo5iI)eusE915bfMY;%ZPEsZ)@%!pb9c63=MD$Fu+RvyCV-yTaU zh}vZlF$>HuNZ2tUTAZZvt>t5%FdIuEPpJG`5MfF-GH2N`<}Znovc_R1VQq4+HXKEL z5iL|~g3P3VGWyQjBh@t*=$DpWqhDt@S4|lNLgRsKx6UYpp|^U=bFa^0*mYo5U10{S z1Ky@)S_#ryh;oF>Q2j$d0_0c45ynxcC_CQ#nq5?@g_s_Dc0_Wl#UoH-g@#a*1(xRc zBcegcO1o9U5O_LhoV)`#uuBr+Ro++!d(Jfdl6Dm&xv9j~a77sWB)KPV4g)pNtZyYq zt!R@gU9@`7dn`<%3z{bMZGfS1T@4%|WV9&_R2)ym6GEiQMp+SCLHjoNh(FuS+eSgl zQ2sr)7O~4n6b_Nv|JrdxV0~S+fnH%m!${u*CMuk1=D-Ut7+U&?d-3*M8z9k*)EU(3 z4E6J{efZQV4P?6bs}K;Rc$zr)xxv6`=<-ZiICVyYn`PcqxN&0{-nA7UE3Ab^pX{GF zTNW>zFXPu;hv)il(3kbni8Ezk1}}74zoGPY0vln{{Q}x~dakTX&384ms~UMce@ zPovyK8=u>-eHBx-GoCnKhNp(g7rych|FLHqF$iy?Ce&9kG;z+>Mk-+$`C^1k=Iwam_Asm=K-W&KW^IS*gSfWaXKahFbCD(luy zlnpoERF~tR!jTuZdHf+XK22KLc zV9h?#WxP9pwlV0@1e5j=3=a@5&+w@;cvCN@j^pTyUw{0e@-x5n-g0KkMESx~hjmjj z9~ZlH>>1f|k~wtca+$p}Qy%=>Bjv3>e{cD>|NOJ%O+R&e*>(3F<o~f&0;ePn5ggewVI{@bRc)SSr)IjH?syId=Yh>F?N%M`ofAYofq2`n)25!8yOL zd7lPLh?{5FDOdNg)>oN>dJcZ|(?|)A4L-j-yT5`n{zI5VETXOE@%G*xW+{^=PL^f7 zRBVoK^Ti~K19dLp(HZ%nr80T+q+DFtipRimQnJRTV;|pH(WbyL4&GHX!&xrv^6n*eP znbI)8cPSkORKD4M{Ox86hJ-p+EHvTwut$;@;9+1z;}tywO!@b`n`44szXvd66Q_Oa z4>5QV)XZ_CZ!_rFwR!_~_mxO;hN3oLiodnOkIz-r)tpG0U1}nzAXVBaq{ps`$D4#~ zcf%*Aq^9FOws6I=wJCG3a(7IOkBOB`k38F5dhVE`w<@93WS(m~j6`M=7L_fcH@la+ zw@=v1WYHix>bFK+^USvUQKbU!sS-9~)EL-+m>EAbYi(hG6aXHymLvxFCN`{n%qmx_ zvp9lc5D9q%1tVjtJRylVJF%<+w*uya*nD@iQ5a0qwJW+wgoCs-Z1T+FFC;X~yl&RkE>p0!VYWbD7kL_!J#kW4?& z7?@08E%i4)_32W+`B*6zo-XCXA1QD7;QMg~^a{?X+WPAGLr2Q=@n_1`H{OG{o?b4~ z4?SES{=Ys^%F)Nl&ASGKnHE^QwOW3SRs@@B>rVR#EWekDxi8*}?O!$}?Zf*Mqw`n?G zBN9>H;sY1ybLoS7E&GlP1s*pH!g9TNM<34G)NOdAV|22zRBpcYK$*jU?VtarAJ?0j z3kGiGERI7vDGM65&t@!*xja|i{oB7)=5Iczv-tB*JXyZ^PyUl~_kZ`_myM%$YKf3O zCj)imlji#u&S7APK7`53+|0!?`s}l1>FDuN?z$6w!=AQdRl#H!XTq1UL}v;8MT0-Y z-NTiKVf=B4%rGV_m&V7-O&f7@@4L2_|M~mh(}d_UbgX6%c%FZs<)9pc+le1NRn|?; zm9L*WRW{$Tv3zVAu{`p<@-=|})g8B&3lAMHOOw5_|KP52@UH#k%IR}u{f@1AzX9!e z^@79vc?|xCfAGVyeCKO04#Dpv+G-t^P4V+Ky@`)R?Q6Lbn@zums*u&nI;9UP(8oFG z54D;LT%1I#zkI3ma5Z3h&+anv=nqQ|%a9f^InYyrz{{U*en+q!M<0H)oP6N>W$S@G zrT3=Sl|Gg_#Z!XV4%%SgLtqymVIN{&K+3BM{F>r~h3^7TEZSB03Xa7j?mg(?eGgY~ zb2+c{*+vd@8F0<;SV73P=Qcp0GOrG>&357>!t|!~WX+oDm%Zy%+V+I+UXC3RxM&fCPmp=huJlNQP z+7!8VE?^SM$U>h64QwDA9b%QangyH~#W_-37X9l}{pM%BCR<}!50t@=`2{Oo*T=>GZ)HJ zk33!O#nk|FhIZq?8~rmD({S**fJbvKA+|A0T81D0QR%<-4lMD(K>pNeJkE0?mgpc> z){7hZ7SH03qYdV9B}3yWeio_6cP(3g0cZOc|LOrfm8XYE+AJmjJo`S0$vNwL1$y3m z%n8ZZZ3oNsyLXl)$Y$}^^LE#SUaep~**cfU0D0WJOi3&;QFz>8v$!y@=i~raAyyFY zG6w$z_b3cQ$+r>1QeQDqH4f|}PhCezH0n8yt2n%>aq{{dS_&1D8iXVh>}~TVQGq)0 zdH4yX3u?Umc=A)tC?oFJ3!?rkx+STciv*cB6YkxY;p6bQwRqINLDz7p-7G5O>EvD1 zCczO-LKmD-MoLk@BBjuyGz1D(pCEQ38IUXuSQyw~V-*;XH^rcHuPVALZ!~}@;6`mK zCCQ!hR2xEpZ4O{-X?|Q!5@4;K(0I(kOW0bvM^mbhy~1Hk7^i(^RM3t+#~@}wVTN5{ zFF5z|CjcIR1?+xffVO5B9VF{Gu(3K6h5~7bgbXX^D){hQbX8?IIGY1r30w1N92Hk<-W} z0Z#xjk_CW@rXE)0zHY%0?Ey{HC;bFR#$}wX7ZR>=okC`6*p=7hwH&bqbEHj7Zjx*s ztdPj78r4iN6+L!K3{YW4(n=Xgwu9&RLqUw~Lu*zlIbqboLIn@xI?fV6>$s@5iVa<; zJNmVRASM@0vxRh45W>Vu`GR(ReEBWlZv??A9Q%eeE(o&TYzOGT!2@L)XI#0inHy~wS04jMF8LV40BiR2nX>&K{Qa_F`}VT3 z1fj+a0f$K1C zay|RR6I!c&`mer<fL!)8M^h>GXKqQl{ri#Hof~@SX#3aSCsHtuA@(jcOHZJAq=XgZn~)~ zvQItwXj!@CmNJCFwqErc{dm_--84HtIa%g+{(tPf36N#UbscuA{;##GdhhCe@1CBe zXKM@wGngG1UjF?Nz_3e9m1m^ZokO+kgt1@awLZnRhw&X1;vyXXeYyhiOQV zWkb4#^)$REC|g4Zfo}~a;C~I6v#4Vet5=~eV=4-!B(1)2tNgS7>sMtGo!|=-U9x=B zfDD}*l_g6tZ3+6k+}sbp6AOqN`0fB3{LE7)@-xfzGQgR9;T37$d4ulO(=~WT#<5Vk z4GrfubZD@y85q`}VA0xweNsrX`;|s`k2Nrjr{n&+bpHQ1>~z3iZvV+|1F&PwH-22S z-hS?)Oya)n#Qm%5Hkem{(ATJ@`tYI+B^rmm)X~A_+XkJI2jOT$hccgew9|dysEobw zfwT|cI};z@DI>5|!#ztR8X;DCAfhwGq}gVy+KE>>F!@zu#&x=q`b@8Ruq1f!%zPlE zJYrvEb@GMJ?p@GGj!3s}x zHP_0ZRFnZ(scw}Rs-s+-9M@?XJNyA(uPX#fV87N>3!55qxT4ft!qrt8+`=s523-=f zXH_g(ypqGP3PdPH3f9~KwF~QP{CA;&ar*Hm<-mLI%i2vFW#HjYNo_3_hO*JchEDuA zgn2F!#E<YPWvdm#r86%*LBS&Qa@BHtw>a&kZ9izm@pM4s; zqu>j+XcSJN0mioiC-?7@j{b#L-}n!|eo`Teiv`3Ziq2AV(?S393d4Scv{U*P@sDc1 z#Am!27j=N6!6TSYKk^5^r&C4hOP8VHJ1J{!+a(K@d|LKA{yiDm_n~b6JHIY9eq0L; z?%4@6fWv3}rm$1czIB^4@V19<96IsFsAtzMnc?n2AATrj_U)GoyWhiN>@k^oYqxCt zFaCivmMxX`3qvxBdHvlt-YC-;x#vgDdNJi@@*>s{pi|I}1~+Gv3p*IV)`h4WxtJE6 zOvpC0@!Y5Ndib^1<-|9?BYoSpNIw>M|MoW@mxY~6&`G@@ul?>p`L~b#Bb`pPV*PR% zn`y{}3-~}58?C6@lW5dWVmeSKM)%v$QD#@Sj(ck4^*810dwXQgjB3+;B*|^ zU&yF*z=vr}qtW^Ba8vIQ6b#=WXycm&4jhex*1%{!A7We&z)^p`p;I1gcVHKwi5Fj& zN$gs+=#HH-v11F~NZ48gUN$Z7c(?#p-;(h9u@eTqjk=>l$KQCp&gd+`XHNeyZ6zX( zz7sn=citq^c&jo6b`AchpWw~n?GdLjae5y+UEKLdeI}1kc0vRPu(`%*0x~R1#@SX? zOX@4jLDebh4At}#h{f~RRS4WlxKxA$pXsm^_?l)?sV3`yye{!3(0ntqsYKKbY8LvX z3*-|qDX5^OaSiOq3OQzaCV{gv6pL`0#;GU+2SeaFp%D101BkE|SRC+Cst3tP21+rl zYxLJ3GZrPH@T1H?qE)r4aq1zJ@=GN<%4<;tB|mwLsOKqzMm8LYvI#B4l}R0k3U#HI z2&SIoDp;YE+?hi#xT`$>L^=R;G#?fZKT8f}^!hasbJ9zI7mBj@(@Pj+4YM?3Bm!d5GJnf*m3O1!hDU(Ru}1xDa8eWnr(7-eB`=W<@9@T{Qst zWGHkK>SZE^l=9=i3BNhrgqF;f^rT$)nfS)6_^YH)a(Bi9*mE2g~*N5Kt0y zwfri4O9UyyTa1rZ*A5dYBgq$64h)(t>#ROMz*Ig?$p!_3sG+4JN@r8tV>u0+3P0SU zM4^|QBssJr1Pw>>C&&@fru{cT>L;F&NT7a&p)!RmqiTDOa)4Arw?k>gR<+PYn4-uh z3YR0AU1(^Xe&R{l|MIJ{^`5(B>3#QN+QcGEF~^rl(Ky%Le^Nt%{$TDhMrLQRlgca_ zIBe`-qBI%#uk?!YXf&LD@(Ee@#V<+!U3aVP*|TS4|C?_}Hx>;KV-)iOFgt+P>PMr5 ztHha~bP+0?YfA*)PZIOmJh`-1Tt`ZkajQ_5*1a4z@FHx&)H;EYdTnf@4mH5nMk?w+ z7aF=-|I@!C-RsxO`IlajPBh#*Hf+>R0voN7A=$p)`iTX;kfXT&&n(oAMgMApUT49Za)WgC9sY@D@OhjefpynBq49@Y|#F?J-i{KxelX(|))O=sCQ>I*XBTHbn91 zG1)uVE5Gy4e@zxI!Iy=H$ECZ!TLzY*(||%gJTf7ibTq>Syr}b?M~})RI?Iiv*fJJV zkj}jDs!r)S|GlSV(U*Q!#s`+;4FMbd)+lD<*ou;8bc9fLZMbzf63?&c>U|EMJAln? zLv=whWgyLtL!%e#5YT|rfuho0ai#*uX>&Ws@E$`@<5Ct-p#=;&G1*r2%YBM)O zx>JRKQxc@HoXUIByi_Ym)@`!rB0E}1-RJC5w6;Jglr>tU$*d%ck|kD!SCqfn@pO_Y z@}~T&JbmO2K-g!fM~Xxl+wB&-f(=rULXJ`+$Zs0cVOH}kYZ`WDy<~ZmFl9o^in=Nu znid+i6}B~Klv1dN-;fU#0}54B08KqKHytDbCsIE!f~BDoBOeeljSvoor5&x%3?DNn zZ!eXms;_utI&>{`d=Ij=$3PF3hMsSuIVS{?vRf|MZd6G;Mfo8#S}7d1jW#D|)V2R1 znClBDY6^F!>J@gVJtz}WFRhZ>40d-odiTzK}`%` zps~P_|8D$npF-pR*b6Vo4L|p@vfz$g(m(@;^SA4mx-gB=-L}Q}kP?2lRUepir`Fk} zjek(>(8h!t&;SWuub&w5K2Qz`c^N z%-5C3H_J5ZH>aEB|Dvbqf2C4=M2B19`A9O6+t9$=_u}(fJr=LuC|!8FGxE;c=nP;~ z8B<@lz?=0?n{;@a)Q$%DH0r|;-Uyv~@da(DkE0%PTG_TwKa5?724wh8{zS$uT#)rY z^D{C`d2|jITz|cczV((29Xce#sK1kMzNyoD_fxG?I~?JdDl&?~RjZWWmqv((OCj zL1)9bjyE2oSTmqI=&-<0E^GvIZ2;FsO!93S(zRnJr5)=NW^TuN4A@zK?-z`-aSvQ} zICO*_9T+y?C(*g6tr`&QhlI`-rsE**)7Zwg4?An=cM`B0&p1DT23=N$I{ejV0PXVt zIY#^0F`L5L9(F>s+Tdh^1DJ+{Isa|Q!wBAT$uc{Mrh0ZtZWJ`?U}+?n5k{UIAmbEHA!-#-BgRliSRxKYMU5IGc@cntpJ0;%h4ZG% zimGrS5*V%<77|p;2&AB=5MkRC-OnZ^@Vq)GKTIc#$fv3$u9hB2LCF|qTTKSDFi8@5 zSu;uuB^vp4y_7EHTVQ4^74&2XBIN(TR?}V}6ftKIae2Q6hU9XZaK15;IFp)#U_)Qa z!qY)cZ^%@^sen&zg<#-cGMp=Hl)_&=+A${Ljsz8@`6%Cy6zmdD>v{w>mDxYbAd?ftvrZb= zJ?b0urClJEl5uWsn?d*&J4%YHE$&5O~9Wd~!L3u!U(f9TtPCYwTnK`cf8OA*MX1%tb|Dj9Z85ARPSwZ7(ygLbT4 znB_LS?3};`FJn8zrnxf}((u^UV<67;2b`nD=->uqt z;r*{$dLo1wea`h_+t+D)Wti(3$Y-9TmB2RuOxqEa)Iy!Q1%6QNL1?%{Py;w?j1N>I zv3wOX^XJf#Y(SKC1d*5);qRS2YeP5$9IJqwVFs=_MSMtl^@@`cX^pwk6!K3y?*(bHjM+(On)m)khGl~XP7hdh3{O)6N z>_s&Gf9cCozvX7^l7e~5Xb7>ac&l^D!VDT(Y{=9|!*q#uOx0<_8v>5V4*uDn>9&ll zA9i8GFh+jSh&hi2|IpsO(uqdc@SYFku)Lnh3#!>LG!-wTK77l;-hrciTUwuVJFzt)ehT2Y_mT5M2QSa&)9p3-m zyE1_-Fsavvj=>B@^11ha9rzb9$DY$!*!brNx&GehZw{a9c%uZZ3Fw`B=UtmB16lo0 z7X0K6L&Q3D;DB6sZ?~NP{u6TYxfi6JodItY^J&@F*(0xfh^au>=Jv)1KH|68o%fev!mRDH3bd67REXA6PQB7&Pttc z(;%abe*dlHsJ?y-58*V|Ou)}}l#2jk;<~M9z}ulynQ%WU4!+j_+n4elR&2^3&Q1`g*HDL3Y`7+%6M1Mn^O6ibjfKnSF4!A8%EzJ3qN4#{ z>9aQEgQw4jx{P3(RBf<>o(2KbF)YQv4oB>GY0_!tHSwt6M2!b9C3wTMI1&bVrW6pQ zs8#_YX9A(~DI%(dH+0`dG*4qaGEQIB{)48utR=2t?A-ytK%FX3F<*+$7r zsEov)MiVE1EsXLFc7)E=z-eAh3l15~J-k#ID+%={aGY*9W!|E^9S(BjhFTcmZ)P*i z2rgS(bW$i=mPg>E3*ul|ricM6rChFRJ8|dwlnq^R>?6Ga2*>DB#G?q4n~9kvOgc&U zeV6&cQ3{_dj$TAHgXvO1(6m#;_{D`GLFFApD-y+BMy(i#>YBVNrF3Mn($H3&te9fq zwiA*oA&>|eKJbGQqLEHvFc3yGc#)5iZl*%mILvpGiv|Ir$|rzS%EniEXj(<5yiv%c zeC8(yNg_|DW<)J1AQ4UFs*>b64lfq{wSWvl`AH)|NMT%8wWN7dAMv~UbuuV`^2^Q)+AbRB!_`*M2EUbzX4|Jn^VqVbRU{^}6?fGU5? z+c59A{mdD;`26!SfzkZsSga{G-k{q6)-bhV&2RjMj#k=8Dm;qn0~|IuxHxnQbGpY~ ze_c+#zgzlO;0vs180|#^Z~`O$xBlE0WC3XTtFxELRi&&hA$KWOU_^K+*;c$#&-2zvi8egmN9fVk3ah(sV%_==GZ`PK2Tq^dC}D&XYpog=_fueGw5XKwv>1V za@=|tZ@LbC|4Hduj_Ek)wA9g&NR3ve8wW*(-^JiqF{E6*kI<{flf^6nZ-JY`q5)Dg|GYShtELgLfRR2 zX3){#PB>GW*6X6<4opvCBY%`1{GuJrmpR8#_%7^VGy*#_Xi4x*o$k^zh;2{t@v!=? zop^K7iM0Y)mxIm+AK>)0@9cTGh&4U2_?TZOCY>J{o4xlAsl(q1{Baso1J}@+Y1GBb z3*>7O*Fk>|_^bnFdFThh^ce`A)(!9}0vf0CfE}yU=WuAbBXCwNa$uuK;{^{YS7$;5L1)lm7#`tViFe8K&=HIRz zZBW<2D4TpzD9)ZN9q8i!lHdWEJ8obC97=CG@>TlQ(hEET18G$O%cN^&nCc&k|7-_ zQ?yVV%9N3CyCj3AKY)W{61^Nu?S&*h$XB{ibl4bZrwZ`CbOeA-5grkd4sk zmJH)YOd?7SUNuZU(7|-QQzYjD^|AD%kbq3)1bQmla3V3_o723CSDg)cP|cz#>bb-) zt>j;oU-}yQrE+n91ep&HjhE#=7e~#8C>0{Ey3ATGi*Rwi&{YD`>KY1`KmPoopV{-F z9DMu<8AF5q#xMU>X~%x$Tr8=Le=4W4f)e9sD4fNd>!lz27`ANOCUWEmzWj@?m2w0Z zymV03pX~bhMzW4+9fx+mE2obg(WxM#X!LUznXUzWx(49TD=*6|-UP5Aq@&3RtccL3 zk8*re{jeQ4QAr~m{N|8+%JL}VM!EcXKK#IH4lj?GB|EA$yboU;Bp7^^Yn0%1#A+ks~SU$3rXWd81l z?v(D$tK{3yJ}=ugtd&VLvTb-C_cQKu?yXZ>gXuxIzv}2D2zDRh!rV4A`iI_pN2ahy zc)|78=~S8q?!!r7*3f_-U%y7`@RyBwc2XuV6{l^6f04_4v8J&`W(0a1n4?qg`nr$TJFfz7?TOHct6xmMrA&CLdp% z){{M$>l2?5nGZ~eBq_ypdkC_eNkqe)5?RlsJkW-7hER|;tQOW^Jy!~Qii4A-ODYW* zBl|#U925&8@?!Rk5M-4r#6n*AEF^%i-th5fzs5>3H3wn9qw1Uc7&2ks)6o$Kd(=0U zpApbz$)`+m#;rx5JQIKlueni(Mj210kmTI3X3CGyL-`v<)B*e+1P`Kt7i!^Glojck z6U$B#t36^{y-tw$`y&uX9l7bGoDbrQqJSX#<@_^D4f?Y8LW7F*+e<~d0F8s zK$FaiRWwUwZp3&|n~y|MC3Bt^pgfo?NhzKpCSb`-^hbq3HP@yvpcjz%S&uBHvc7w+ zBIa@U$dps4R>@&%yt|Duuc6OMpcuTc3J{*SKcSQqOe}lrG4KobDg{P*D*Gshm;=%;`B{08KHGFB5a&l+Na@aR`2tb5lN)?&?I-sFz9Tl%=ZbO&G3Tcxut?ujet@ z2~p5Vi@zYJFcg}?#An2;#AOPWYIvT5reWmGAuBv!S^f--=TrwFpH)1jL0HaQVrr@s z3qxLZS~o)lVW7}~Y}cvat0+$qSBg@zZrHd)$dN|_BbHxpG&nf&F!9Q(^5NINA>)|F zbN$bMQQ9$@-|$gH>aaNZfK{v1MT3p|`fvE#e_IyagPno)?Z=0kFa^TrR;%|W40Mbb zqCvq1=w+Iqk**jh==1TL9$U+Ro3rI z9IU_Gpa0m?&&n(o-?GtMM}0s0(#tZAHw)~va$QQR#y?>>WnT`r$&$_2qf>+RFVN}0 zLe_nIPRKiZ&&ry0_-+6i-Q2yWtXwRYSx#j-bVPcf(|7bZrbS^26FN%g-+Wu@xM%p| zKgG@gWH~C&k72P9K8dvh`c?sTRez?C#q@0T>@r^+2MEpfm9X_B@fFW2`MpB_WK4>Tz7p)gk z)TH%HJn~Xgg47TW38X6|mIDsDZ877kjQUWKb`-}T3x6JH#PSznrb~Z377-I@%43yj z*r{BrUMJC928o1-Sxdj2YK@+O4j#FYS7j9^;}!%8hOpzNyig2@WXH?0&~Azbkg8=| zm5LflOvq(X5(=Ca{+Dbh+MQ9TTt$?>!`E=oTP=yIubK<@u5gl3)o?X6I8QvuUa40V zI|XRaQPX)H$x&xX_q2+{6Anbb-q!G-xWYA65wB3r^h@P-_2HFqoLOW(Kh)wQW|ikh zm`t`2Q73a4$q=CcX&FL1;VlY=ng2Lv{7>KM@- z#(aM?YNpU&o5t6E+puk-Y}6m0yv* z9T;`RPD1<|>mrO8pMC#5T|n7^#!nvUoSPTRcnkWKkWxWhiLlF1hs9nVfm6~L54v5Z zW^PW0T&84Q(wg~^ZVtmQ(jy+2AYQf7g};mkUW$XjPC}i(b@%{TI~w=B$4+1;BzzBHBfitI zalOob_I?@nX-JBv>nX7Q0OiaE9Bu0J227@`=$No4QztqRb@(vGH3)ppP=I>0NuRvI zq;aP8P}E2yd>Z3g11=b5=U&T&L?SWZVW1YFJtM%3NttWjM!5E$-naFomwD{JuFr%-9_J-y(;b0O)`@RD^aUq4kymr+wtPe?2~ z)Ja0nm$~^;4wzl11BIK8#7`FlmhfL;N?Ov3@(4qTk(^AvGLjM|$I_Uq=|U=>6*N}R@-+b#e2bE$ zx1klG8uo-j(7Z;n#9Tkj$NA1`A4=M&N8{}LQ$LggFTWz4XjpA~J8gk3U zv6o+#$>YbQhG`o$e6h6?BcO{PdPoHGzGu8Ka&g~28H4TpKYB*aQo&}oI~y1ee(LUZ}X&Cq!d;9hv+;(7TmKXs?9T!w|a@U0E61g6jl;5N0(Hx9@M z8rP(8KYkW88_9O?d4qZX_&69l857vOh`aJ!!05m9<32(Iy%%pHxbqg*A50#`w74I= zh{g5L1_nC;ypMF=Kl06whVgkpyKN^i4GOY#OedPyyirClZK&t2kID2}Odn#025(sC z1=knUxHbVF2ph+mfJyB9qn-PB>iD&_UB@5~du;d*f9nS_`{IwK18L$!6(HXZ3*nuo zU5H7~zw(eKi3@*qD^D*P)p9HyXd%knA1P9k1yxPVNot`wXyjTAkSo+VTBFX1|#i@v~mjun8?b5cz+ndDO>%G~r+ z5K?7|G)-&ec12ds1Q^nw6}UyzJcC$B=EkLgC%QUN*msbE0*Q=lv8uL0_{ndftP`S| z7x)tngMKM2<+<5_pb00rH4Dhkc8feKJG9en=ej}9h(U1yMYXtbs?ST(@Q43~U^1bb z+rutLMpY!`C6jZ^aF7m?MVxAaHjNw|{irQ29M7NR z#^oY>=(F+Ph3N-ppZtLwe(N3S#^Sy$7@e%8#y^a4Bp-kLFjE6xSpDGf$L09>UnZ=)u>H_QVlTY9SMp!?9(PQpl5;eGzC&KdYYL2VbX_jwguat>+E4i!j^P|X? zwj&;XwZaWv$hMMcMZ1JN7i@Dnj=b}hoP6Oqkp=y->Y-0zs?3y}d+a;%*1z~Ixrnzw zOEzuN`Q>$VI{Q(7rcoF7WBthB8*j+W{(W*}?_N221f&0GOm|_lUl*;S9!;~u`M`tv zR-qdo>ss}tFG&a1jJ)@?ugUQbF|DPi7oQct6du-b`p##%|MB_4uLrNjR-m(kgL3Z4 zr{vi89+!g%S%^knV zZY(P1^_f|@!nX4Trow8*?ZUF$7}F7cVD;X6yEJxevO!+ZwOp0&f(WQ#^r#$oQh}h) zba0jDKRlEO4BeU)ow#niiP3FIQN)Iz9uT;4tA}3ZQouASf=Q1Wp_PaVsx>727=q{Q z)ByrdksaOyB4NBRtvm%FJ!D`vqToe`sUVeV9&h3nNsTu7YYnf$46kQGWhAGp6zrU@ zR_3c(Q_`S7#KjC&ju|&P5#*~(K4tTv+=|EhGY*&2-{v6CDP%XqvY@={7=-6cfByrZ z*<+V1^w{y#WY8FTyfm+fMOmm&m@(L-7s;y$uW<^HRdLIDculV?Q|ez7mUt$6f!SD%G$_0*x0paK#1Yj15%MgW-ZBPb(Aqv2<{1wo72A)KVh(VZa zlW-_$Sa_QqN)lElt#C?|G9LaXB}D8hLdpdbv&u`48dON6l*Z7`I5P>e8IAtF+06 zKnJehDJ;r8i|ct2qx?7AbHB`BOWFO{-t{6H-3#!A-~&%R4rFu;(OBobRYT);4S|K?v~;VQP51y(QK4s~EBsOjCirH1cAkj{=_J30#&-+oI*&~Q9Icv`yn z^{?U3j9QTFJ7P833C= zWWO73HT;`t!zQA8F*m;sKPE=ephqJgZ?Sq8bjqfkYvijhyd{eU?912eVDpEifoU`C z2M?jKj_GXh@fD& zq7Qy3ek8*`@WRdxHnKweG9D_V>*2cA#4RM@Pz-1qwJ-ui?Tq*}EDhN8Y67P`4ZCwX#f6|zKq&+* zxsW0OmRVFSMMGaDouh%p)fDBKAp?OpmLPbm2z@vrigK1JQTv8s@> z7;Qa+QP0C4>_OwdUACa{U%v$(`C{Vdtw55FS}KbzA*pD(0* z`B%ts1bZ3{-d^m=Gl@C=AO7k8BWEsNz{dT3(vQww2k8937Z2_*HHf!K3$X@d-TDpE zi~808zZ0@kqa(5iQ+~MT{R}z>jqV;ST)m)wvuG?I!kegLtW&6C`i%kHMx27Q2K8$( z>MnN`QWx3yM<;dz-cqgFb-PU7bd&8u^yZuRfEYTs(4X(n#{WbE`e(3qxl?}YfBElZ z$JXUYW9We$CBV3*@!U@I!XTpYVKLh7zz#*+0@eIr3ECrD)2;L!R3()kLI@*j zF!Af6n86F5A|x}^Ot2(4P$BHUMk-{F?w|xpgsB)3?A%ChAE=hAW`wG5C0(5k0zNq^$EILT8PN6;-*;DMmJP+)is$2GnIptERndLf$a?1A>* zG}+97hgnSBHQ7vLjQLjz^M#0&hf|SO9<|xHVj*grCmhbqGTJbi>(>!7)_m6i2cJ+-Zf0sm_frNz68uhd>b42$1t-0?|%>5 zK@Q5Q8+Xc@FD%FCBj)vEl&=GC5oYkk*L}bL?_>yeJ20(b-jRQn|Fs-fQaF?$eyeMI zCHmLm*Ixvk$Xi*qL8E^q{Zjt6lEd}q6qTd+*c)FdEk`|Bv}}bOI*k4PQ4izZiH;qo0wH^L5!ZR+BIM!l%(-#Tu12_sXJGcoQ&%#yIYY+Tu3p>8b0-^3al(9_+Bg z-F9kt>(I4&m5lOB#kfBf{fU~w|1>-1nge`6m$QnnmZpm3kCgTVCw)ASo96wfy;Eb5`q8t5Fq*IgJUIbnW3SaS^0@Pz( zJg=TBccpYhg-tf{RkDdgf6|exD#cQaQl^wc(wt&Md3tti4?y=LsfK{(d5&NxIBMuI zglv<^EZiKMlP?ztyeNx8uXIJ@E*nr0Mt-C03kaa58V0fh=ruB_(nfN{0jlXjGU_ws z3ZX(m5sXDD52hln1V5QnxKx&>a*PdC=oa-t>p_t&5ib|Nwhn;i&N9#{8~U&<^2iJ& zIi;7niGzHl<`4WfrO0!EFegt1r1DrG=_sN>YbI&qC=pY{QIK{LFG$35)MA>)tQw}~ zC}h1tIHH-E^eYXwMD-lHe5fb3N21)xPtYmiTA_@x*J$D!NF~XNS2-#rZO=WRs8kXS znM6Pt#&s@e72GIh@WW=A8C4@Mlq`~xiQyCknddrsG5IsV9QqM*NjODX02E~kbd#)< zmeHbI!-j^G#-IAYnA<@fBbya*CbGCCcvdyn^?;%QXC(6}ic$F?lyu-hif4%w1CMMg zDaI}(oV4@@{^AQS%E7nakww^*XX8T;N*&XF8W?%xz0T3bDNHZm-W>H)CuI~P^F3$~ z)b6`iwxSX9_8wihabv*Oyih917+UEf4F~TS-jGsFw_#WIbN+g;l*Fh zka@StG&g^j;)Qfsb_EU_oa_X2Vg!H37k@z}Fg57t!F{M0_?hE$9Uj`!ugmd0AIK24 zuI#~^f!UEE8Ha8k>e50q_}PGEBYhGh`skkOZ!OoG97G3U6bLL-uSbqzv>32!*I8v4%(+JjJi()d;5L&$aze0 z`<0dJ<#xUegG@Je5IS*YLQWpoBcJ@zopShHe57pjxV&}rysSfApTbT=6Q@o~#~rBe zz#8G`KHo;5EM`Z*2W{mSKPT{MrqGzK@m^Jjz5LXBocO>%rujC2)9U#C0cK=+mWzeKA|IV2zCGZ59@RT8mtsPO z`WjcQIN>cGz)XVA>D9 zvFtfNB%SXbkRiNbVTY%HS6>YSc!=aCrC~6wUS*en%qKiJEaws|j8cMTpks@Y1C<0* zX{kvCKiq=Co2*(Spqoq*(13)~l^Sv2WyC->@hT%MxQ!4ESO;NXk|AJWa>=>LGcbZz z@xv2}m9Cv$asDa19Q5c5QjziU%P+}nr z5>q_%%|KE@q$;K|K}uo@Xr-hWJh>2M0-NNkJ+7?-Kr66XHC(u&6*F_`dgX9Y3qlW- zDMwLKk#NmOMyO=NEzcD@dKK+@WDjyI+;XvMhG55@i`k&2X&@97s=&*l6jE1sOKJXH zOgl%45fUn9(iObG&7eV1jY784NeJH{WFn@O?3y`cIw!+127RMzqKJbPt`s&@xjcok z7nYTw2_zqYqY#h{NJ>~d030*~3UcxzM8G3k%faQ!GSThaT*g%pgoaZpc`^`(QfD=u zPpWUpB;}YCFKIyz8p@YZO?p`;R%DiZBl3q-V_;>j#~6?rGE6#_296OlvIDn7Q+k|| zT|zmShfLXM9&Ls~ixBrNM?D)D%{+}=N3aiwYtlWx`e>MoH3z=ESbfAH9@zq!5 z1ilH-gZazrfAv>%>P2niM$B`*Nfv+RGrACy3wPBd8*^yfu+gPXFz;-6aHNi%2Ta+R zM7U@y-58Lp%8({kj$MOJ>IB)@DeF)vk~EfxMhPAv1Q z^%(gH8pEK?m(9dS#N%x6vVL`Aq3!ZQao%Hp>bZv-ut`o(XP{LSIMdINjZdRI6ubUQcP1D zK%=@7w%J7HR-LThLzp|?w{D#rdg2M~G)!aee2sok20ku8JzThIrJVX;58goZ%Gw?H zC>KWB`!HqbJzy;CM?FWK{)hkVzmhv|*(wh`cqeBjVXebydGcGY%2Mp=(^!q2fv{&k zJ1sNISI8vZl1-u`P={a_zIZ*2(fe66_9u`R!P|(bNlf=ar>7hH_m5t`UAj-7)g6My zvDTpr9g<1BC7W%4e`-)hRxX#e+ite$F(@yc5(Mw9frfjH`NVzKi%!cJwh(Q{8w75r z8l&ahCbS*v24>Oend0;-?|`vvz|w<(b`&B7X6OSQ9}er+GS%IZz$>TfX%*3vVX!I6 z|I=wq$BY0GWQ$t`i#Wy2ndAfWgn!&+sj+1>D+s0{;i|eF^BQN*L|9P6E~C%>$Y7!| zqe(mI=d!382vPb%MW&S&Vio%(uEmpi$fr(6=!Q6dm`kT9OM9-|%vLqnjqAg7l1Uk< zVzMmkn)x*dHbSdMidtzDM?O3^!Xb4f{UY7Au5lVVTs3q zt8ZBXA(1IV0iF_(giO|W!Sg8H$#VFXm#gD?58J`cGuk5#CCi+s;L%gV<4L>-O!k;kxaz1#bcdP?c7nJ1Kpb!@lVJ zS?R)*pZee_)FpIi@vf?Yx;D{Wmy5m2qi1V)vjsMZ#{uAl@ z&;Ghh;*CTsvgIX+OUmm&JLO^Mc$e<~A!pF?9yOv&N(eg{WFF2Cj9;HyKmI zSwoZPoXxCQf{r6ne7-OYkKJMVM5K&MnS6wm5?N_ZaJQfkgrXckD)STNLD^&%nq{XY zU=m&+!)W%wd@cytVaD)0SNyCHC?2Yi=6hZYitvaFTNFf@CyH2k;H*BvG6h)ZQ8*D& zxI6+oXoZS_2BSHQ@>9#o3`$kf3qbv%dqsihZ(isZ^unitYI&l#5?kmggEpL3Di@ga zkM%vXn_^I(uP#>eHaB%`9RL;!9jqLzK7LeqR&A@&S(XNolBFRJ$DCxxDfu-D1M9aXcSSpx8i1pi)cwtM$oTEa#Ng})@ zMpZWi6E)eH>tm7$3_b)BG5n*gOw6$YxDe5vJ4a!f4%5rp23e#5r?#75E2U!>6Ub3w zg}z34GFnK`jU-j*lg`6xVv+A8oFWRKsVE#ILNB2Q511(nDwhewu-h0B93^J(l$Jb3 z%Kn=I&-}#L(uGFYG=6|<7%}7ns)`a>3?>x8Ihj*It#=dp?jE%<=Bx+-qQ8 z((B0DJlRQP%3Tr&{Q0ovqbKm6!bqz!i89u5#>vZjPO(FdjsH$eH(9^^HaT%%Kc=@& zNLT+NR1gEl-hJ=jgJBo2=p3WpTr=?QdoueTwwuMJ z;1nRNLc!(4oOBt(-;8wOoz}`VD`fSCm2wld!+Z#h>%9ZZ>yX zmfIeZ|N3)ZlErA`AN~+u^Tmk%*Z%cy$S?fXzm%-I7ZHQ$vbIVQoR-*%>|7~bkPxWK>A5L?^R3?6%_v8m3%7HxxWGU7ItodtyMW(PO zpbht1?erkl&tU%l`n5J6->(Vt(%?M_JCg|6xnTym6Hz;K+JV~u#=`&nud99?7L@6^Be~$9(BcSOvJelST1di;QaI$B%g1F(S(12j&Noh* z(y43f07PxpjL-lbvqNLaE6_B9EKEez|56rlWfZ!MMnNUE>i~-dtf>S@1yTYiLeN|- zD3nZc&NEt^TM*T0@WDzrys-SA#GT{xWSAO33t5&2l!F{T<}d`SJ|)}EPWoXYJ7bCg zgD|4R;K8)Jq3I%Hh~@@i=&6q5)2^m1C<+Ax$W&~EH z6n8}x&*h$cF66SMvb0P;y z_17ceJxegyAe-glLF{c_$5w}vT)YYF8uo4P!t>|wf&JQOspAW(HFP3$*A_a~>L|*p z6}u(vQabbT=A*YX@KZ>P@?k~M+G1s($qJ8brJ_o-%jm^(vhnWwWZ>b4W#$`yD*Ld` zqlP+!N~kFOk+TL}J9d7;HlFoPS+Q=V+>Md{M+SzZ{)hjw3_mljvXg>Ezl)aRQ@dNF zy$khgId;Wag!%Nncv95SiJZb4h2dFz%@>`}7mlD7z9Wm5cgx4OZ;>0eY?58qZIa(P za7@;t-twCR?9i5jWt<{Z$CR9t+>r|3pIFZ~Raoyby<)kX#ulL+8`eqR$~E%DOK-}l z(O!A-fBeU2>rBZzufHQB2ZrU{GYz@z_LcI_9{IS8Ze1%c&7jkA!&aF@L%xQoI&H{z z9SebJ2P^HheArgf5qP{U!)+yPm=ae``CAPeukOD51c5xzM< z2Lhi>)^BFCvGI;+PrM;H&5FBrVQgHwAvb|H3_4m4b9~NleNHDv&fEJJ$S|fjb;1|h zq7({xN2471u!AhGpq(?%MMwy7)7Re?=yFtEHB|yKcy2MT`rmNN(NL#k9V4i6GcU6c z!+-jh4nF_1&V^K@A>lq$l7c z2!s$&qypdQR5cq3hHybbNR!HQ)47z49-@|VtEHd8P>>>_ip|;~l&v&NWR7FOFUs&R zzujRYUD3HFYu5Y^S0q^qu`5k!Y$uFkKZ3@jGbS^_z zT%F%&HcNSPp}^N@;YZjFx+x^T%`}K}e8?CYQ$6*>Wiy}oAlu3!B@D6&SA93(lyB2> zedm>B6WC@#Q>NR5Z3f*v12CV$p8Lqad^RlAL)4K?M};WoR1J`4mE+0jik0J*zno5T zE}zq?XjZ^e4O2s$5&T8kj3$~vnM`IS;ZSo3lS^tzRkJB5s*VYLmT>^m{?+46u4tLh|ho*g`mIr*3m%vbt2_;u5<*It)>&%U7F16cpb zyJYcwX#8WOQ5*ft41Q5m8v6VQ(HOo3(7kz!Ht@+#2NP(>v@gfho}))(8jBY@(Eu7b za6lVgoKqd6j!CCEQsOo9TBWa4zFCfGea^H3{r_oN0@jkSXmgS1ZyQb;8k6(=7oic| zhrdZQxO-412eF0h1f~Gh+u7`gFj~BO(0IjrCOL8TygYR44*C1HprO8ag=|{7P!_%Z zij2RHIo}Ib$ZS9Aa~I~TPfknc&DaBf7aG^wvAA~aS*foYl8%+b(yU4G-+rZg9)56?o}GYkG^8)Q z{stE1jz}k_$#8d~9&AI}fd%u&e)yyePM^kZG$Q~0kDie0wyc-CAKoSFH!PMXAOAq^ zyMLz)+`Lu(6mPngVEWN4?t$rJCu9_BX^wyW&jg-H*QSknkB|KDM>2`EI6XIBuTyI} zP#!~g({SLsPs#Yv6Ih)8NldBRh0gXQ$^rT3eTA}Z$NGYHym?@gn~m%?yxFMX1ATnH zHSngbo1G3U7H&gcY-AfHj_G;R{Nge1UFdLnP=3x>!&MuvetqM9<{Jlg@OgRl`3Zd% z8`nW}VKH#+=t=3~;$_&?FCqh!w-g&iscik8Q$5FT4(zucRBbUORTcB64u~{N?BWPe z5EEVFDV6jnVAO)=_6kIe77`gZWD|~QSzaB%T#T$Y!Ir3CMIj^VYS~s1YXYex4UrB7 zLMknlQ{Nbatt1-=p`!dCMj2UX15w6P@iGe<58SLD*O0j~ojI0OxPn(CDkhLnR=~TQ z(ad%w#}(ni@1P?riX8&kTD-l<&XwG1Jlrv`j8QrpJ|@|#h+Ja_fEJ1ik}kSAuQzb% z1pH3Y9;ef#9J5xYnc>K8q8BtWjZe9hAc$JFAmW8&h=!c%8sA`CAZ&%4iiBK~O}8I5 zBcz8ZuCR_>p_8ULuo8=S5k`j0x?>t})-B{IXJzL0G*BvCQlB&jjxncvNiXndzm*IT zRj!a#S}G4qsX@=P=9J_@$6yNCf~QobEdo9M=cxtFm^>?A14@%X`GU@9q9r}YRhCLK zX8#R@T2OPIvLYTK#mTUAk_{XKV2Vik-=d{|j2AqnOu=!Pb_5N0!k>{m>IukM%=j8l zx=b0D1{h<*og;>VkMRhm3UG%H9eD>+`H&mKkKr~nwCC*r5C?J-(0vY5eCimbpT-Zj zHWcuYqP>6ob?HUJV$-9am7d$NHUK~Noa&?VvS}NK=8r$RnA*|3b*nZo+*6%n%%H6b@$w?*E;t#kVPMOoO% zPJmYn;AnL~9`ySKX!M^ya8QPS{I;CM+JNE1M`Y$Wb}t${BDW0ODF5d(@5^s~`4PGI zo?GPyue~Kddh*Be-~+eFx#1b@IdI~@H+y!m>6lkg-}FHG3w;ki(kdGEWC-B#&u+;AnHWfD2r-B zN3@J9Rmmx^n~sPw#2?$XMhZrfRDlXL5~)E&;(N2t7^tJ(tm}$!~9SAW;!EeV%!pTeG6eQ0B^T z=EygRWb}y5XM^SMXo10GQC7wU6aOvl@*b##k`!f!Fd)N=QdYq#0+t{Y@2LcjNQyJ& z_?cFqyWh%l0isr9D~UpPp6Inr0fNbF2QhdNb!)Cel(o#84>`qtTOd^>Oj5D3p{6Wk zoVX_8l&a7nMhg8ozA0j+=6TbuRO$jx?Zm~?i(vxEelj*!Uri;vY?E|*J)M~DbC!uR z3XH@_Dk0HqHJhy@%=a0TZDny)7k~AKC0(v~An#5%>TXD8)8Fs>k zss=HDN`NpNVTOyC*1T{>#rPm2W)PEPj>HI+*$;XcDHXjACb+l`p~KMi3YkPLpi`Se%~ zv(=DJu@Qg<2S-20F&DWVqndRzM)rU6+p=Wy23d&(zinu+H_%{XLrvv@qTZ!zPFOEv z;Bd+h_y2Fh;^A>jp*WA7UIyQN7bCz6r0?(kI;I)T%Gnp5M`Q4ebo6t}MeWK|eY@6F z6x*frn`NSaFQxO-%3~eDVdthoa9-RxDpSx{%$!=o-EZn>K=Z?1oG{kLul8a}Sr6U_ z+=4~5r!YFb0=v-MS;uJn>+i}|)QOqzzb_{~#O^n2;9i8*GSurygsAsz7qR~21~lr| zV?@3EoV`5iME%3PGm9$9-ti1KpTaW;{Z*_(!B?sAlBws$0qv-cK7}bqTL)zH)j`=f z`l|drd<5&Om?HDq;p4I%U*MfWMp&DtF)yFrCLjnKNS$c76P5^IV{Mbo3J9u6eoI8(|)7Uc!zVq1{Bb+)V zk2?(^pLO(r#+NU_Vt?Dsi*E@+jthy$@yy}#MzQuDl96TDtqYjr*kNe`gAwg(R_a>? zuIsRe9t#XLf%U>G5$gq`Eki#4LXOuj5-N{0aa=L8&tOP&G&9qD+pR=s;Et&92F6)!#B{CC$5TYDi4N{0Goh;~Tc`75Go#ZnA77{{Z zIB9-);=$i#MfS8OQ#l8Avv|-8e8L49=vl$hyEraU$Ah{I!!u902Oq>`_}vkO`Q zFKZ5eT}{WVo6k7AUIovXj$DB(%000WL5b_N%(Td3ge;dR{sfDJ1)?F%;BUr47XS z-|bQ$*>hYAT#mwt9)2(kx_aj#3Y_Fk#N;Tie+esm2+Y7C287hF2!rM_1y7BUO=Hxv z+>oFwB_@_dvhT1RQVFvOLj_DO^de050)&KwW5je;mZelLt*=8bE zXi9}%C@GdFtGH-?V6<%tBZQ=fMg!Ao*f`fejOyu}Yy2Q?!_Td=8B> zeq@KJgO7b54f8%({lzax8yY>6@9)<225p>nz#T-GKXceJs7~NS7CInxd|h=6qx;7n z|DGIsC5_=pneO4jT$lrvhWr`ls4_mhRo{WO{K^wp z$hufM`qpAMpY!`2rvshbiNSGcoJ3DyahFV;MkD&< zA=$BJiHx8V@bsxOvIO_R1bkkA&cGN(!Rs6)=b=sj)3JNd5by0Bz!$W;um$KU*|~GO zjGv#7fra>%#*R%o4}SHc4mp8d$-XU1<@%MYr5mI89Cfc@I?)urUJOibe>#cnNV&UE z@A>mGdGe%w{dx)Bs7)hr^f!<_9OX0qO{AFTIYk#P+1C2heFjIU~+z zOnI$M9%`^P#py$924r@{GMPfhpqji``6d~1(=#yYuc`1{ElJ8&G;{G} zmCMGit^+_g+N3L5I^h5c4;M@Gj!;D?=11^c)iT0_mV-%CChH+)|22<^;}t^X%6JIV zUf`IJVY)1NDpHX%nhRFsP26<~3{uSXf~QfIOR`Y-VmXLBM%e7@ylHr)xPgs?TTXPP zH1pkO+Oum$-*AL}Ne^1^$ulDe@N4JTrjqR|ow_BTMAFQd`&gwVJ-Vav=9if#h4RWY z2{Q~Vzj@TASxB}Do2sttEECuY3>>rJd|FW(8d1|G$1`LKp5l-i_yH02BQ%3N7ub%c zn95RYgP!}ZVGF=mA92jUUaQ^))M(G^}WXERX9}NJG z1a@Equ>*~&ar`iEMFajOG!W)HbP5o3euSM)xZnT88*j)IrfIBTY?YJ~S6W`oSxH z`}lNK;jF<9B^&&M6H{^#9o1!+-f|YxygoR4LB4$F&GP8NF4>7r>8G$ie*fMNMNSS$ z|I#&>6aQlw$8J9}OYniOPHb0+`ph>&xaw+x=Gpk?Z|N*ru(g2>=~+F31;6ds#Rr{* zVRS3d#&1kuK09U?>6-vHO1a@YAB%NhO<^8;p|=@%hzv} zJ8u6NHmF)8r^klmmMt4(!@3RV1k~jqrrU7pT6w5%`0&@=+aH$SfAxp**`1rEx1(3i zpPi83#!f+p-`_9&i~HpKc!wN4bwu{QgU-!|d!z&Fak%5q^aOSuLOF3)BkrCx`tqyN ziRn7rqksCn52S0|8m;fsD2E0*&HC2isb{2)`{jAGHA>X;OoL&cq=f2vS;JDtok+Bm^pYvrWaw?p_K#nrDbH6cPHiI zzVj!s6$3D|vCsPw6kZp_#C0ON#{JAd+d!sCME^?!i-1gyZpEr1+EqwGBqhjP<&I*rLFjGqF)^-FPBg#d-^C@C5bA0vcV5mlv-D|H>tf@X!Vo}LvZP!XFCjPz*9vkW!qnn*e+ z3Q#R&+!EB|T9BEpF+G`JXtqAn~%tRd)cG zC%bVAW2qEjkNk=wN+>9nR;i>HH1k*WofPrJ0bP%z8~y~@1)Q&`kX6j!hn}aQ9uK5c zD+>8$UiJ$yLg1uG`BcF(7nE6{)9cIwpZ^n@U;SFv7J%5o7V&P}#F$|^fg%kx0eHC)d;F+F@K`x1STp6K~X&Q5$B19aa@sx^_ z=ZUe9F$JD2ze&dM`9;u9EUs(EtN9tu(?@531@G3i@n1({;=&V8$%&UBjyAj`})`A^r;ilwFJ|NV3Zw(8hjtQctOr!A?LXh$EA)b9+zwU6PJre zm!k7Rd*c`>rmyoJmtd(*Gru`KFYsS-hW}W%`eDnXTvi4q3dtm#BA5q`1C7lK80jBI z1NYP0*U9J5@Vp(6A@dH_61w3o##ekX4d`fhL)M}b-HXNW_^h!^;|*IE%BGGE(k!ON z^<8!&VQSRO%{!%r4#yPgXgjv%tYhDQPN8BMpMK$0Irru}n0k**Pq8D>!Ua9j ziD@@eT$~Kq=c`QfBF=Y5WJssl*3gU9s?>=5WJ8uwNV0+sT_;-7-r^(_5iyw0~B zyk1^6sh$r9M-XNhv3R0no+{Fq+tnE3lue3=X5HYLlMpj?6?gT7ukB1FTD`Es3aREW zY&c*fDOSckT_uGR1*QuyC}krnB~7)Qk$rAbET9=pasdb{xg-l=T&JpcVcEh+DJBHx zQXLBhjb~`NV*_8R1`6XA4b8+*AXiHMgB#977z$-NDjWE~osn|HHMYo4i;ca=?zVQ`ZzN*k`~ksds9 zG~UFgWeU3-^&_1yLe~gtqgiH-Z1@3&`fCbIxE~6Wc%e^OjWaA{gGyrLmx4+s4REHQ z5vQxUM5k1eGxNq%Rpn^9lp$K+y0#`k^#2x;sQ-!|qwFUU!DWVcgujkqf$>Ti6|J5s z7zP!XYC(M>y<$&o`@9IDmmm-~hot1G7fJ&(@9NzD6S`m;Zy`-7js-v5X8 zACNwbx^8;(5ozDBQTHU*GE#NJ(KkJOprL_M$2x?Q82RUpKNxxhu{a<;jURP>{q$0e zf1>ii&qbsB67b0Ah)kd}!coeWhq=*`m57unkLGmA`)P<5zospJi%Px<{OtY!IE}csbNmtL4=y0BvC4D1kSdYtQ>?X8-?}S`v49K?i%jDq6 z6Re!5mv}pYGU7J8BhypT+u18iWuer%mddSnZjsw=-6Criu9G(|ydk&s56HTEcggM< ztXDXD9#dwpbt%88foXE%*j99k9RR%LYH+R0ORwP-2I@L?7~(X)Hgw{Lo_|Sqckq1*`h6#i}O`+RO zvI^s=xW-f|1X^}MJYV6xiDxC7rC_$x!fQ+VIW(DMoe5pgQ`sO|ikYbEd*FVAw$;8! zRYm7ZUBe>aW&`xHpfLkQ(lY2Ic6QXZ)!#qfpI`=5)~A%6#k)D^TnaG*=;0!gEmgKQlC~P-R{~FpVZ(w2Z0j)xq7GLJkgjx_2?KNbs)V@~fhIsk1LAtYC?y$T_P22nfa*`LGqf?fO(2RvcgvB+|! z#znzU0Zt7Km-A;w&_3_LmsmN!8b8)(l+R-1@Z6t$SNbu^Uth68&STooA$(+M0Y(Ei zKk|q!PHdoIVk7Y8AAO{gd`7U`Xm12lkEXEjw+(yzR}NQUaH$2q%o7)l)?up?ZwW@x z>8a5__BRU;9x2MOWoedt6>zCCjv`|5>25P%(cL#9U1*t`x6@2Sto%U}JPNMEO{S-nYi|K9J*z+HEu z6Iz#JFFmLA>!$zYZ_0bv#WMa5Ww*2xhp(Bd7Xlt=Redar| zY$rZ;R~thI`mjtiHp#vt-EszM+c%t-fn^i&OOKqFZ#_LNZ=c`z|8n;pKzbb6nc!>h zJsOP$y5T)QI1=Q54jh^p4#&?(Gtwz`rIA}{6{p>}*t<~Nt>R*DBkne|d#4D+UPxN` zl^JO~haCDLh7NQ92@(WAc+)TqpwSlX-F@GC`LeS9Zh+wK#hmsEjmpetzV|9CtNzTa zG;;TCTjc#?AIkNyNvT3*mzC$Uw>1&{^&ch@?ZRdG~?MB#JwnVx(uk4k9a~Gup`B|}MwKm#|(HSs-{Q<82^$*aX!7`^v7uVq((K{%e58W-Z zSY?P`(Yz;p7SBId3*#OD6KJgI3PAX3H{O6@ddO3qX`OYZf1Pv`!#-kLEC<%fV zP0E8f#m1M3WLgAD$}ic(aYVjl?Fb>5?v}AKLI#x~c9!cpmeX^g3Aw0;QN^JgSKB-os>QOBZ^cg?UV^~FH1{DJivC$uG z?+r%wD1T+}DQq6JuQ|P%b#Rgqvn>We$ z`|r!y=U$Ko4BJ@xDfEzHA|jV>f3Z~)6hV#ry`r|*|V zOY2cCyJdL1NG@HvB6St(q;36rdHc`)T-M%wFLv1Nk@HV{SJr;x*Rd}|gN$Gz`t;<8 zEZMn3rm@@a;B(JN#j4d9?!%pZZNhriYiG+-7Gd&m^T33(u$Q|I6IU_pXmlK7{jn-d z`=gJd=f46y`_-6#vPdrN`%4TJdI9NfXjuS%HAI*EqEwFWuaRVyEysgMJwO6AZ% zk^Iu_74nq_u1IV1n0)EMDQSFbMqWDIAv-o~k;5mB$mM}ysYM=4;hB>966wdvL=Sv! zt33asH|1ab?(br5!Dab{hyERg>J-cG{N}%xFaD1Yq2hm8`p%t~4)oj?A>X(}?)7J$ z!G4?VT#GW7{=P#r3e~-xKjXH0JJ?nfvRTejR;*~ehkeZRIyLZa$`HM1(Nxx%g z4Cn@Ad_Ex0z#9#g!rKV+V!UH!s_}GV-i4MC(D(+b#CvJx?f3Po1-}I9JI|o>zGW3~ z5W_*dDacOXzxMX4RWQNG7t7$3@-e>y*P_OuA4mZ)pCsE3zDdnpO5}VY0|$Lkc@+$r zi0A2suL=$xLQfhmSPOyD=A81(n92bKCI0YwW|QQ}z>dKU=t}leK4UX5*L7Q-j^HJEr=s%=vhkRAKDDa0n1Bg+rs3&Z5qT!-z6f$kXS|sNteaR#ACJ+EgvP?02izmhq4GyTNN=0W8jx@Pdq)B2Be4jI`*7={OxJvl;AKkjIF& z6Itrfj=7%Mb9&TCeM#bGhZy|hNj1$Ex8pWK7_ph=p*qku)est1AQj*mPgSEnMREW! zt<)Rvpk?+pCX|$%GCwJpVn_RWNy?#j0g!q|^Dr37VMH2w+_>W|m*^{DFC4}V zmtX7E&;Ei+gnlsq9(xk|IEET;LE@I6m#%w!NOmpWBzN4oNrwRO?N!3bg2BGIRE*7; zCS)JRB#&VQl1q<2Ax+qbXbG49#QXuEAW&MM@l|LjE&zowd$E3EkOBQXK z#Zt8AFbTIv`iH9I$mu3|ao+;@ho98R_YYv#UsU|7%4Vgbc1HGfmCLoBDp|g0ToyEr z$cm0BshJ&-caBxcisg7Nrbgrvmg=m=@Ex>ok3FfdRA)i%+8|W-S(*mrIcg#ktZ`4BFB9KnD07a z7hmDnBR})O5ovwse(d{!IR&V2>$3;E88kx5u#;~UR_Gdj;~iP_z%D7;vIz|nUy_oq=IPyz^7oAE2lPlddrYOY2qP;noI2;d6&#F@?qzdjewPfcF6Y zRbY-n8NN(TZr^M>8w1^66|uq%(LlC)XCk5UPfk|uf+&f4WNCZPW@(pj-Hch!I zq!NPvctu8_>NPk>z%U5axB-?5QY`r6vPg#OP)H@y2j?4?P8o}5@)d~D z7@tqa%$d%OWHT9JML>(wTC|nv>j!3Mc39r0)}CqrWan^9*XG;$F3G^rU$l_}|J9!YT=-DD{10LIaDps7`7M>!)n zkG=ft6;mosT$YbRVTw+kkt@%=D18TyNdMsvr4-}iIZS}7_i!!m(G#a+0=3x8iyDwf+dihLWOY?eRP8LhR`D1X+&%r9lFHAT|Z zSBka#>tsputTZ={ODA?0Zmk-UcaD_EBKT8_hQ!{}$K~g@-7o*g@BS)w{aq(@)#b8s z{R&yVYPs~Ey`l|*5e)zN!*701Hhf|`Cf84a-X)V53RJ#ht5mICC1b~q%h|_&B!h1s zkVf?I3s=s!!3iezHg zMd^$_29Qf>itYpt38shJrj9cULkI?vbHZEQ>^U(Y@);$`Wumf!C|t0n`9nqbJkui8 zR8j*jr(8RwY}LuGBr%yNAgVA>jBt67{BIxRaUUoV#Tie^8Itkd@Rk{xol~96AM%V( z-P}<~_A;PCN&e)30|Im-In;d(E(1++$CRQ1k`znR0X7B!MlYT5oNrO;hLMlm0HCvc zmdq|A^v(-Uj75W1o=jRRIU0q0AemsACZ_ z_2~t~Yj8iK4?$nAM^BV@KSMltORp;NqtDeibleSZ3@Z4g=&if({ikFI735hAcbG;m zXz!8ZI!?a~LoSL@VJOD>-`6k?pcFlI^zPE7^YXyP?XqL%CNola#@mQvddE=t-+Sqj z4l}A;u^j7qqXN$!MEV;1)!ed6R%|UV=n*dArbVcTT|RYMW-$z59A6XS;qt%;(a0){ z(AEqpl4H;>#}c7j`jbD1^Bx}w7PKh$QL^(I_~{dM7uK8pg3RMnl0Wn2RLWO@AeF{L z7O~RLm3M|viR(s1dqFLFv+-5vzL`n68~0}UMGO;r<~eEH@(HQG9}~rEG1R872g6CQ z>JNwO^kDMrl1>?@sl-I^gL3`{Ka%3sCi(im{nxU3<61e6eIaJBS`TKWV0D@cQg`-( zw2fo(>gW_E597;LMU(XIeFc?YOsHMINd~bZRpas{(!64&Ox8Ba^~)HpGK|6btoRRO zLj3TMRBziR?VsE&YrgQ9^p#fPi`Ss6*;yeCwJ%6r&0(o;n1pfZyjopAH7yD z-+sMPUOI!NLosH(xe~kdVoo~S6{r*Az-$DRy9w+#d}*jysxg{n0p=I9)=kLbg;=K_ zmE|RElhWBdEUz38S+r;gCIE|USh89=I+x1c*AL3YBVAYxs6ofxS2tmGA2g&-9X%?C zD$DR;YXLUrdR%&r9F@h7eOepL1DND{=80$Y3&4tB_*tpKJ_SXnq;p@78O$#je{PSI zE@{`5f=baipFtyR7L9;1ybq@I>qs^7a6~GxgzEVEHChQT=F8R(To-@(bpk#*2Zo<| zQ7TYb$L?&pAsCli<-ygG*hug+9~?yq&yZ$M@-P*#)8YIjneFburfN&^0Ba?_#H&=HRgz2TuvEg#ib5##BiVGn`IaiAgn)AivqR-A# zK&RpvQZY|w)|>+qdN8o)+_O9DI?O4PH(5h)OM<N0Ar_20d+I_Pb?lf6s@M-W=D6 zG)4k3d!vVI^$Ux_;jTGb=>>=dI$B4F`X2GT^fba8DPTgm03Ct}1yNJW(-PE7nj)!< zL?xBa#}frc3w1)7;w6(+$j)QUO?|960R9kWFquah%T6jnr=m{cSzOCK0XhksM^8Yv4E4)s1LZ?E3B*K%A7b3Zm2Vz8R>#g7skuTEUs91F?vQ`%5b^O$ZfC zr43hEPL94g!4(ZDr6$^QqB%JvH0_xO>Bx5nJydg%iwnXv;CGlkbS0Sl$6)|=6DR{E zVzRdrKhkB`EQl-Y@Vd(vwMy@Y$1yPwpZrmAs9do^>R)~xKjI?gz}UKLw=~?l0l)6h z#{|mEq3lwK%}KyTTwffOm1(ZvgMz4cFL5#VEP-E)p5fUmS1^>}M>2s%$pD5Ajbo@r zQ!9FGv06$oDhTR3&Qsvi&J9=c3GOg^Sjn2ziOzxeaf8%n0`f>{M)^l|rhCPs!&q_> zLoq^y?4}O#MS;UFFDDy#PO~H=qi~F{eXhO1oVU>f!Db96*^CP2daTN_7?t{_;xXxX zWEYm3Y>=*F7v#eBJLJUalXCmodt@=j<{$p+Z%Pxw(d*+_?PtB>U3m3Xsav`n!&0!J zRMDgi*jr-XUw=!Qt7@g@%q3|+kBpgjM{pGoDS zcBx;wQm$V-uf5sTvy-y!3ty27A0Cn6p7YX#IRZr}f2C+^PAu$@CtrD8E)5sSa|Z_G zS7$EB=O1VgEG8t!&Q!^JC#q!s=@L0HJR^%LW~Cm>an@F0!zyG0|1%FtQ0bq>myG_A zA{j(c-H3&H9=UBCdjX6}XZwIOR1e$yhw&0QbD>d=pRdABz(sQK#1+|uwfhfWIV->S zOV3I3vNrj5zw~+Rbd7m1*u<<9m43EktFZZ59X2KyJ$g(^uyNM9FMVDn@a&xVi~lS` zsO&GmQm6|axKCy}vEw#|_jymd&IQ02{ZcminNR51FU42Ba?A&sy?j-AfB2lV{N^vp z1R83SYgXz6doAiXSuZ($(GVw%UlFJ9PN@0%7x2ZfOy|`Uq2)tc99KVuuZAonOtXaW zzjgp<0Sa$f#Z?9}enP6zU>w6&jVY8_PA=BBhRZ;V2XWL1sX4^$VoctBiE51S zFyD+Ena1KdFNS2W5k%dF{XEXqSBf!1-UduHYqs5o;7XPcns=$Z;YTZeO##MziTO|e zarm9efDOUm{rWxc+$YneWITf56yN!-r6NI&dQOiRN^k)W$+dV&apg$!>!obr~Cvn5kv&shKOi%5*J<8E8Gm~NFli4IK8g_Rwx!@m#G^(-zgMso}T$ph`Va~lM)x#B1BfAwsBEB{n+5hv09gFv$@oULc+?}?q@rA*jZ9C4 z111q%g%ZwFYVg-+CPx_@^hN(X%_QSSSCJ%sV_ygrFrdVWKdZ|XSRQZ+6>uGEtEeW! z&(|fW@Qj{1jh#s+@Ie4S*7(t##BhufOb~3wFoGEj8>mDjyaq!68a8f_mhIcHg2;MV zf%VomaU-Gm4&br^G=U1)YlB#RF$^6DcL^L`7gFjg;&=@CE-ZyFGw7i`_xR&-`NDar zM#Ew8s#P+IuK^qezzRQAsK-@ETCuVaH&PmbuQzN2K>n7Go5`j;#?$mI8~Eu6GJhtp zO3jka<+AFL$7B$BIf05d*Q}p&gdb@8St;Q9k2lG@N6HS88iY9Lyx-hRj+0mW@qZi> zIy+EV-Hjn351<@u#YFDr7jNMA3OsJt6Pa8NPqedb9iscn$6_-ZwY$-W&!Q__542+M5N zVZ1uVl3yIciY_8O=w>f}Y?oBtd%Il1{E?c578!l^MVV}Yv z-mqHgZd)()%a=)cbAyaQ|K)>S^1Z{OSoa_EN9xOE|H(=@d%i;U9H^E*eWOCU2Ql`( z9A&TyUmGyghhLdk@wW;bRx!dP-Q$DB(u79xCss|%*Y6&cFW%QDpV&Nv-hOP-g-S9f z2_HDpAkVzfD&KsqPM$edE|rik!P26adxvCEYrQ;j_dPN?bWZ;8k6*{|r$Je}4x5P8 zqPHI9|K!QVWxShH5w%pW^>O0FG0C7t)*Els=clW8>IIRTyx@EPn2P=sFo za^z>xise}G2w&vTI2%21P^P=iOU3GyGJ(c+?QK|Li9>mCPwft8XMbcl9FUKIau`9{ zSK?x_1pZB{OjZHU9vQ<6;K;L(COC#N72%7*48A1j5F|GU%y>XdvGn(w)C}1wRU`$> zl$V!;Orl2^$i~Uw&^K;^0|IGLE2LG`PfX$T{hMKtaHm@Z_< zi?Zr5(iSQL;vQyl3AWpg7^|@zB$H?jWTEc7`yP_xFw*k?W`!mL~pkymi@iU}D7)R!}%Bs0@|UDGX^i z&Yph^`B{4BozjTPPdW5H{Hwo|VO0LhFj-kE1;E!l2Thk7%~>xM;x%qLEouETJWAq3x8iyF`SnS#5yoy1VJlJbNulh#x zP_M$6`z7VIQi}EXXD(imel*g?*DjNlU;UDFuI`X(>4x%*Tt>AGt$LVJ-h3A3iB-H+0IKTQE)bEO9%G26QR%v81CzFi^>s;6$j)-kv#&&GKrc2n}nl>NSG~04wd~ z+%o|(<9J697Z0P%q9U$`mW8ZR#~2$grPvXez4eou*XzCtCd{H^WyOk$#ra+ZClo6r z^v`(~rg~gflnoUxht6|u}jlpL>5l?>BFEFQ6l=_C^%D;~ykfk>V= z!Vbb)KCF@xfc2%9sDi8{vIEbmA}*6L^oJ-*s)DMp^g($pj$x3CH?QKGywUXxLJm?z z1C|OWvWUhXLz1K7TtRP{`LHFgVA08_mWL*|Q9_urmDo$IrC2c@Bf)?xcnGqII3b_o zejkFi1(|3hr)D(neg}z&>bjARNKg*9E;H!_%0kAo#8eF^wd(@WmI($$Hv+u^ADAYI z#UdVj0%$NTD`ciV1^GyVY~DxWnvg;TeWfLiTjifjBl4^VRD%hpAj}jqo?CITB%KM_ z^*FGLGE^B8RNK6Eeu}?*S$e+nq_jWwkPI*Fzz-@bEdiU2gZ@G3fAw|k6>fU;Vd?zY zFUaWohoqD%f9yan|2b5eu#Pw1G&2}C%%wur95L(-qv=~Y#XMF3oH%R%m{>MN)!8^0 z*|%R#KK&HdUayl4U-~kZ4&99949jKsz&kRI9>G%dU~}vWnl$ri5*4(o#|}#g?;mTGA%6;TDO^`Z zHL;M^AmcGhc>kwy4@VG=pt9DEHR3m+*1H_*)vsTnJ4b{6dE}mI^JBrKtS>`j@ZD zq9%N~LW5u&6O@mhZj@u^Yq7RJz9yV6)9YARJteF05smqc?9_?RT3O%#CJY@aN1pay z8`p7aG!dHpj5C7VlC;^H!Ng#eNEnZ=mcZ+!>p3mA#;%=nNWaB-+|yuKL@J$Kh+8q+K757L zOx^)PnAl@fse#4!WTvNrE>U1IFXhNqS23Q`EN>EAXXt&UEOG;eSq9U5F|iDb-dKt; z2T9_N=R!dw^T`?10ai?=Sfqz^BxmVN$1vhKVg*X@MKyyGMKq05yw;fE!A5e05nJ`F z+*l5ovD6o8^KcuM3gs~{=C~N-O%}-E9(daG*gbQ)4P7GFeaetEmYrPXrs1s*0b=pc z%)`n4%ty^ucNZar^f38oJ<@|rCI%5JdZy-#6pNe`FZcq?L|Xkbg3-++B!W<&YFgt_ z87am!ZIS4%+sFtxS%bh?|3aul#x)XxU_%81T`!AretqU432rXtr~2Wtgr<_EO`UPq zCyN-$$>>URTNYAIV+Oot1ied4Lp6Tr1z!ld1DjQz)tyuBjuDux_i$YuCH{_<;b^7VJ65@V(- zFy0vBX)x9wW3178ID<*JvkeV0%Q*w#O{YGg;lQr|qoA!u1#MF^dhc&=aC0w?0pHtm z4Lyt_CaTtdrF{woB*MEz-Gdhb&#UQC6+qh*d8;q!vBq zCFu2M!%}Wk6(!PGJuUT^H=sY_$aoGNVz)n`N}-2p zErz&ZwXN%ThNjA}7x0ukv-gldRq7yDQC%Um&Gm8_JMF%KiT!oZFn(Jlu!_5KHyCGphLbLhGy?Wr$H9) zpbD(=RNaFK%N*JSJ@24%DPl%A{T(1D_-|33m7<=yfjWlOA{#Y%^*@plN8b_ z;XH@**rHWUdzOcqyT7AGV4 zG@owfNAO93+>bybzT*%&;3<)5S}(BSG8U>()H5t~*8B#6a*$FS4+9}UXZ&c(<*A@G zbQ0XZ#HIo|T_upvKT2D~?HA}%ngZr?1PZPNpH#&CGkGIr@<9Xv?WKA_KGMt|)r>T% zWmr1d6XS2ouwqC#h6+rh(r#TIhD%8<1z6gEY6B|Hl^7CGi}m@j*{NLr;E?n@{k&A- zWnO|x7MB2xwm@UAUO6g9Yyhl6ukx)m0D5GSc=XZ0%%2jB(MHeywLN>}DRx89^ZDEJat;G{`h%0yMMo~6+eSH2-B$GPhJb_C871mNQ zv}YX}jQ3*5$$j|Bv}<9DEXHt~vG2biW3A1y;>%x^3QSBL>N+ho_>we%)p%NO+bGRz zS4#I=`=sjX6)CzlB3Ir$DjR<5pUSn*I^|AEw_%$8!F~CF9bCRe-87{=ReD zW?6N|?XqgiZL(tH7Fo7(t+X%dkVdQo#i3*zv(HMuWfjUcpC>J&_z5Ku_q-YVM%18@ zP&_jzjg=*G7GEny;b$e5BSozfjR43|)So{~qOm(G-#vnL^hc^?`4WuL$BI8ImW<2V zMYFQ!XrG?b<^^Nog?zuPh6KfS5M31 zFLp`qSgCZhwaCo%QR$nVlDF^$tVt)^PskLO^(?}iomtGe&{cO(`7gP86-((pEu(1I zl;XM9N%Y9mW;E~xc~^|*yaG$2P9rah(BLY?&?vN8G!L}cnC9@GM2yiCgYjZ~d6+nLPOkp`x1?@Gn_!F;?kDu| zesEb0qrdjv$q3A;zeA=zgkHNEGB&g!Tx< z3SgWS!^kHkRX{xDWz|H+GLFT}6D!ts7uCfe=52@!5i-gP0vhm{3O>-68{{QfdIZ({ z4J;srWMKF}ly;)7gJ#6YO7YyYob!2)BT^t| zIEckWp*NWki`@V-g6AV2uK|EN%A1;*Q{kCFi^u}5**cbqgHX)078r%9E_^eIPd{WD&6FU*Fv8Pq<~6fv<3!-QJU<*GO4D{VtbbF&4{lu&3kv@yUONlk)HbsH(B?M;JUOtZZS$ z4=znOa{8?89ExQF%RwK(E>*{6sGwdw!`yh#CwF>ifwnGSc5C>#;h^#v4rn zhHU%-aLpP3y8I^S`XWOkq8v*PUVR>weDqkhV6&#>pZh!pDq|=ID)n7IenI+Cv8l$q z1NQW`?6_TOxK2EJWh+5Dcl?<2oW_`ER9dt`6MyJw07u9oOWfrAQF4X+!t_m`f9kA| z2l00z=K!b)!$bo?gN(`Y!h1f6A!9>`kD{{3G3NK6XZ<0}5!r&d8=V-t-+bp{S-f?f zl%vPE?(<)eJ`BM+^VVLu?a@cEN=+^1lst|hBxBOBaus&s?UR;OYcULGvrN2m0Of8% z24=7UR%5;FfA%NR&m|e8Dk`xu)PWDNuKghyIdxk4 zzx|XO*O$B*9U+A8$ZqY*HR z|90S6)91`moi#J^R#%zyUd304_9AJn$GnzB*p0Y;R$e_)rM4^3>Mla1e-sUti^FJ? z8yP5j&b?oy+d-(mH}DSF^Hu{hoz-)Mm8-gl6~*@$cNn%vK0F#%wYHJ{n*s3 z1{MElJfjsD7B`Izxb(S4CBC$`U#>j)j0|EWu2O#0<2Av(vWY1S4SYlzFj2T1Ukh{< zF!c0KLXJy?ashx@4$;HGPJlAZ3*eW4DPY>GC|olFzj}`;Uo~;cB^1p$@S_kzGoDH? z>ZtVAku|DXT-vrAK2>*O)gtV~Jd26U{1U;YgQ`MZ5s)Wy52G1!f=x31=QP|85LG_n zrGl{OV6?9W1BzdN3Yub2Hsz^q!6}-u-vu`n^AF-4cXx@9!s^$RLfBM574n2E1&h(= z0OC&g_3^4nb0w-U5oo54bb>=sPf{!%j^QC0F>VoWyeU5UIRFxHIJl)q$Y79CmFRy8 z5x|re49~%W{5&)@<-QWelT8K*8l)utSC8n zk`We790VcyhX_-a)`TMvHM?ICk2Kddc~4Q8aXkkjWefQcbRJ%Y?bihDh(*_e4fnxA zavU!WRW}2$7|!}K$->5lX%L43suOVnE$1u63|9fE6Lc*w9z~R6OtMrw zoJ=PWg9a5;DAV(_3Yu!rVL(EvYwCF#LCsxo?N9Yo-3b9lvBD`{qsyo{Wd=1PuG(*y1Vl8m?Wu_|_T#J)r@hO$hh_oKj5W?0NCWa{k~4 zQjQ+W`sOCA#Xc-&pL$BJVb@>oSjsO3<*4j;e(rNpi*ex14UIB6G$JbJ905CL=$3O8SnRl5sTj z8Y;0N6^4`40f!yoTyGv#bE!fPJC}s4KqH_WU#zC^6=Dis2ud+Nzi2@%hPQ2yicjAw zHIM9;#!uWSowwa4t1)SKap!Vr!TA1~YD`>5IYK`_t^oh=Ea-pGdahoRef!>&!Tw%U z@-buvjZbEeR-VDX&W#t0w2ze+v4?At6A$}V31EvNB zFq98pDlj==ibH<*e4}B|^Yn9Aw)DD`;fnw_>0(~+`E6OaKq}Ge-`~|GwaABA4FBVW z6utL>PI8{GYkYo0zM3yk-p`93zsT6G+ zXpGs#Oaz_s`NL$D=23>c7Isc_v}4txYAHcupmKOrMmbcFDE6nJJ=jsP zke8X`5QycF5(bhlnZZDTFA)#=CQ%>|ZKn}P1~`kvL@MNNWVE2B(!or$<~R5TP#K8D zK2`%DtDHcYna}^Utj3t;pC%$Lq>zrB$TJr}hmgXku*s1Y1PgRi97i_{#WTg=lJR+t zJ*DboBClz8$+4k9B@Gy1+<2K^2?lu-V}atICQQ$wfo?z%%ak-p10F#v$g8s1rmE+^ zhtyXq8lsr0TF^BGYMGftHev;Q#~@uXogTuRojEkMpnB#u(cA|MO+V0b*regVnq@ej zuTE1bh?{)W$>}QuQ9NSts8fhVvDAK&M%4Tcv|yIl(Ff=TZMv?<9G>Ho8{}hIR2|1N ztjKeD)#uZ}29(>&ut;O2y7u@9nLtn23_j!c{opC=?EA7bt>~257R*T0AAde$=*dS< zU@3M2z51i)WbkyCbnL!MmOQ*$X0hSVd~WBeJ^Vz^Wdo}* ziE_HBUfNIh$!*IqxtKM!d5-u6fDHfuF-`lWs9X-e{g#~D`?{2);=u~VFnTVpojZ#k z^%^NdBZHMNF8j&P`ju#?l%hwn7sHj#ANoLfrSLtv7QjQlF zdv7@zybATsYE=9y;8Q7n%(yWW2GL8=B`gz!ieAZQZr?l1gJ5~p(ES9hC8j;8D9+YkCdSpo} z%6c(Z3aXF~PPNDjZ@0*|Uc&CeZ)2YW%nexFdR-bZoM_#OX}NT+SDtu#NY=HNV?(oA zEb&<{lNip23ziaY-1p4$(u0OU8GG_^kNsdHWdaR_o;UVO*_9rtxO0chq7pp=-%GH^ z!fXw&a1AU&UXG^G^FM|6MiCmAcBI@Om6R{<9VJRa4!TOoz}1dha(KQea0Jm17!wKd z=m}S0;ulZ8pQg~r!HqCI_rCyE0YD?3)sq<0<_9VMr!<`O$ZUt02MBZUA(2)VJs#y^ z1kfzow2&E4dwOy?{-EawNI1#$qD)?rY!{7@lo;}eS`MWMQ7NG!n*8#l$f^=8dF3-v zrGP{7(Xhh>j1bAr4jL|{zj5H%mvBbHf0vJfAb5U+{PnwAaFuq=(QtZoDVPb^#N+~F zQJ3^^r%4O%=U5L=wNx1RNP1Rfq+u+*-{|$Kgv=yy^I8}Fna3^ z07XwT3Q%;){(?&(K`W^|u`kP7r56J)87 zV!OOzSb~yN=6PNWvdnKiM_K9^-SrH|@jMI$RMvb^OTkvq$=P?B$x+|!DJRp1|H$UXs?6 zW3qGicGP+1f79d|0Qim8ZxpDU%$&a<=g|8*g-S~~dVht5UpTv6SAwO)5WgpENzVTNYw$ zf9HmcvV7%wEC|$zp7BPl=zGJF!+I)1c^VkN9Ffv;dG+O& zJ@?&*IVH`q`L?Z6i?2<*@mG5;<6IU#h2B>)ZQsxo|4!3JOZG5)`!r4&QfC#1D` zLbj|K#M}VvwhOGGkqS9>x&@PkTjl$&w#c9Et&vmsdVpycQj0GS&wW^lFCmrE*~Ugd zF_s0zFf8C6I9)HDo0g#gP>tnS(GWy~`|7hVNH2Q+%Q0k&!~J-~vcd+yz@W4*>yQOs z`5ZR-Yta?H_+^Bv2?@T$;i7fukN#w%=;&B~7NM*d6(+(3+f~QP4ejE8asrmgkQ_1z zkx=o$efMKtF)~@+gAnhN{y~_uL|r9J&M;G6W`$yklDT3e)i*p)pW+OISxWnRUb z=8gn%1PM9_Od`ldDA%(v=CP9<2e9$-aZOR(%oUuS>!GnN1>le;(FD-Qv;V=59HQe; zH^)eUa}2%xE~|Nj@``lscBm;Y+hisX8V?>uvmu=mOmuEB`Y{>+^nyl{3{S2=eN58y zD@u|XcsG|*ZgxotUMvg-Y%&R-_?mQDYM-7MwE7XPFrta*sqrHX5&g3e(!f!sDyH^~ zOrFVlTBVubpAi`$l%}1p9)RxYAdsc0Zzv*XD=3NjU$LSY5DipARUxKD zGMW>VP6X=dpMz$ypb)@B^^By2k)A1MvQAT6Jt?+o27L=iaUWfdFe+(yA*xQGvP`?I z{7++y_Qdj~+T*F8=+Tp2iqH6L4Cs$HpPF5f`W;bOYt=UHc_>dUhFEm<&O2T1z#A#o1D3mJG=q# zIw~Yson3oVi&63HN5$&$g$vTUphY@A`zjg5v49jT1mxBQ`K(xSQwmpwB%G}t^WSqy)|IbDE=}?kN zzZ)zwVX3)t}f?Yg+uVEC!8}d3$jW*qgf)z5Uxz z>AMqHoBOWFn%Y+BT(LzeFx0AU)hg*ddPutd^#7FpA3lS|B_@_)$jB_#_W$5d{z?vf z>zh)wcCCErU;g*98k=Z!pTjP)W78O}Q!Hl>d>{>ITvYR?0{5!Cyhi$-!X6W-lrMka zL76~>U9dc8BX*mfxPlGpP#$U;(X)=SHHg~o#OyeF-%$yzuaSzK8>Q?EpOmWIcguoZ zcgvEkJEQ}Xd6zC(CN0ev#)6tR&FCsV$g6S;Q7K0`8Ac`c;K6q^{^~1x<^1_G(uuhM z=dfx}RaKch`q?kaLTo_B2Jy<(_?m&a1n<24hO}W=+lBL& zTD=w%e=G1IViK5T(%5Xe4H%Zgg=~*p8pWbHr5I|1uVvGyNTb2a#;iTM7&-$lu?aE; zK+Ve22g)!Hpjj1^%gblbNQVBB+9|0+#b0|AQCnDq zIR)>YtH98uT3OgMDfP9Jva$nnEHDh~`6v5iaW$6y#A-^%pWma6J013e=f~b3D9CVT z8jXPx&f&Osm(*?Bg0D09V!$#6p1vpeEa4qc0veYIE`cLlQq(G2sGM*J6*HWNU7W@J z9G;z651dCX)PG#V!k`xd(9DjeotT0;4f$y@<`h%LVmgh}Oh`xnl|)8%1fEuy6B_|k z<^1c0!$jpsh>=7s*al{Vg`!G2A*gwhf-#;!8ci9I8(oOZ@ZLxeOa^p=f-WNSAY@pP zYf^J$V?lsQV0sUI{LOM}uAJy7DVCuK;2Mb^#19#eGJtRz!Pt~%b3EiNcpy;FGr7?Jtx#ohf;Zc=I5@stn!Jtq!IHM|wp4qzj8C`w1 zdf4NY;Ri2*Uvp59E6f&Zn@JH-|f@Jp5#@-xNYE2T)^=s9=cD*>6873qSLK)S(A;f0>*EXGo!?O*y5dVtXY!7jC|!cTy=^!6Rndf#rD!cYdT`cu)_Atf(kq9;~jAqFQa z)?z&N@_X*Z>qfGEE#QZ%iju|1!%;MP+S=Ns zWzk|8Jbo0}Vp6=>`{H$#M>M^mj?0mN@#?HC*gJbA@=3=uYsN|v%aNBknI(S%4U&-V_mez$!q_1y8zW<$X%g#G@%JSvwgz#bthiFXIVa2HaMog8XW_R@CBt9L%2A( zyBJ@QH1pshSNh=)tfKBKGKh)!f;k@zkA2GCAt;G#K$c=6{scdF6ckKG>d4U)nfkcLkaO4yNEnvD`cZd1K{4l!?P!I;;2pg3> z;v5g5AEPk>qRR*TV4JdjeNlq<#r>jqWFQ{o8EQVzL`cMa2}q+(z+ob00mX5oIh=z} z?W$w|BY+xIqMkC05Q|0(kyMmKwdGBbph%AaXL`Z?4A{7Hd`<-Pk^#&Mu_Nc3`K*mx za@};hI7| z?HUXNaHgu68>psCd=L_8QdHOE5@kvu$!p*}v1{?G^Dw}I@3^EGmPHiN2}x*CK58XWhMP7HGE0GnfJk#qB=~^VR4|cQGR0il zVCOv-;Rk&Ry>%0)ymO3nD13fHLK(piJAUX(P-z)J1#AM{kd^3pXQQFw%2m1im*1A= zU;TM(McS;_iSA7dA-E=&9)Civ_w>v9Z~UB;VHriP{=o@`sL?dW4A0W$tsI^i zs5H%DEPpG8S~UO6&qy)mDvZDLj-21KM+Q*=T()bMwCvt(!;i3m6^DULV;BjCpi}~b z%M?z5K7}6Mb9*r+9Ssp~6y_D+TX98Y+@Ft9xYZl+Q8>54kG~Ff`{t;CUxa+Pe)*!T z*m{R_eCo4u@VkGH3ABS!hDx!oY(s6I%sUL7>!{Q%#xRhb_`eF}e-ZM({5Tp-7%N}$ zaEG*QScTr+da1eRF6qA5FE9MX|1FRF*8d=FSV8CF8*fO*efLP;m5ZqSpTgwPS=s)d z{y;9i{kB~AlRuR6FTW{gj$mb;tHZM7*yc%TnE(Jl07*naR2iwl3O<#nc$Z*h8rHTk zw-r6c7@m!MEXSnZ$`Z^a`1AiPTuq-(Z^@$N*mQ2WOdmTZB|BD2%k5jFY}E>>!7`L> z9i7sQUiP}$2K3lhV+ao#5-9Jig!A^*T$6-;#A3H=q&F zDm{2E?%H(^h8Hc>3O^0`yG8l&xzfW!=&t3?IV8UJU=4#TS>}{t~R*h2eDg0&w;!z6xMvob}5~ zEO2)98G%%U}e(-&$??gPG&Pe%`(=_rCZs1@9G?sbjYQ>iE!UH@AMJj*p zf?}j;8t4V0#-}l=XAlWoAcnwxO~M^kJ9#|?3`SC06ji^7;|#=|ZtiPJA$U@gDoZ&p zRb&Kbl$zybRAj_$1Y(Np+8GY;b_VnZ|Q`So%DTkFMVtpkkGkM`0sDsZN7Rl|mXUOx4I1!-8S$kLl zjRn%943jjkIg>TrloDm3V<@ViXqpaKjOQv{2|dF|kR30`saxiZ`G>1jR^-DzjhN98 zXd(!D5c~{!@g_tZ$`Omj#^L7CiTcqqGcd>g4g8`Fs)lQdevqQr;PNlnK_p&NMx%%d z84_jn4<{a~W3*J?SSFLVrJQ+fruwQG{8Ihso9X9dUCtacp9~=Q=Q>OVpUgp?RR$;U z;@yaHYR9o$G|i8wpJA&`N>AdE7cdg&oK3RTCksLxM5QyCzqcw@cx@p~S^ju)SdHCF z)29v((uz=VD#LJ{=|-&ijUL`p_yW+lZlx^z^nplq&=EU=t<5 zaE~VR`eU~wDMIDE2orE;+uEcQJ*Lwb-+c|0oKG!SAYWU#5)bFx*9R%Azz;$0-+%a_ zTt{y$dl$=3oRFE04qa!wch67c(tGd8BzhFvfW7!@U(?lOxZ`j!DjCHXI&}K)zll|8 zFqsoLRcJUgVAAj<^h8_FDkd$m^5Tc*p{H*Y-b^m#rSThK{nye%-p$QH04Mp%;Uwdj zsJe8=UDEmK&&V_;s2=>||0rX)Z|s5QxPCSQM)7|LdD4i6-YWERuLN%iD!jG$x*~mp zn7E1+d)BYPSD=Sw>8cV;EWLsWp;gk2`##uRFMTJ@$=Uz(7joDC^gA-~)>|_8;XBgw zjo(Jk@&f3h(uq9)Sjj*1_){|YB6@nR z%E^-_<;dYfu+t>%==Gn$aHF-@bgsOt4ikX~ptlMY`AQkWSC*;i34B$+N;Am&DV9ks zYyKmT5P6R5g`Z_u73dO%3cV*MPIt>wdrwL4_!x%oU?|WCzQCZ9y>E0v9=fwb?!9Y+ z96xnYzV-CGm>jGb1s^zXAUv=7%a0Af(0D+W%AJd6WXGB**}M{stc7Uo)PRA>%|qAA z29f6?bYr7HvRxkCoPrrrvh9E^sT6G&#m zfzRw1o==^StFo3qF2~F=ascu)srH93FQcg-UdW?2*6?>_Pm>eks%ro$8$}s0dX#k? zBk&wVOjf0{Q?RX4CKvE5K>kooF;vOGlIt@l6N=ZVe3Q@orHs)ST9jcT7o1f}N{?~( z^Ts%eO)=&{qT}D;{mA z55X_BPdmy*eHD>t$09MUDsGH&sul1Q*H7+uNJmWP(}tlLL_pTS% z#mpoA6h(Z}ahO^F(ZB(T9t9Y?>2Ygc0K$(UD-{Iii%(lzn&8WeM4pl(@Qk7^X*6G% zC&>jp%qS^WmD5v!J=ZQEtA@4;EoRQU5JHdgdi1&?!Hik5fav)U{828HHH0IEW9iIx z0R|n$p}i{zSx{9^smUqz3lK^3A`v1$z*m`!rBwGVkh30h&owX*&3q+Zh7n_t<`LIN z8h@4wynGNLJmQ)fhD1;?5f{i2LxQ}d?iVrRb%wmxi*nfd+| zWRu}JiWy1sk-&aS7}q1>GZlo5qi1WYfF2qx-mo#I%bPki#nG}+uC(H6l)mEH;!YnYAGh9j^o}9K#ya-S7Uh3 zDlFUCiLW(HeFM1vgEDjNx{RVhFoXZ2^+j_3Z~m&(wl>S*H($ZZHpO!O)FFBOrT66O z8yDsC|MRcO?Z5xO%f7$)jMu+@(t zH&d+iW9&P#4E0Z4y{C*7W(@zCWhEZJFtb>qQMv|2mNiQ$=8lxGryu37d;u!_X#8=> z&ISzgszBwN4R%hPokHV*jhj+TV&`xl=0Q1@|9tVe=h34svSk~Vszuq@y8UicpeN)v ze(SfS9`hIKIffl&e*i1s96xqMJ~((#=M-=SpTWK%xsDCAI+re&B^X{-g^F=KRt;*! zSBIja#nO+4Qh#3$h6atxOFw=V^BdO6#tmDvv0l@nrKthWK+zb63zbOM#RfTXzDo9^(!U>b1uozV!Qz@(S=Y!$ z5<2VAOJ9nw4PBRp(7>saO?c)nT)c>e2+GeV@6+deaPJ$^aOWK|ggHMIxQ3}y$K=w> zdu0%tuQe}hmW9|KV1}CjV#OtW{{WXB^2A|4{EdhY9^<%2yw7oXMP#ZLHE(`Iybxi5 z$Hnj!nA#$jM;|#`3Ox?Ofukj!o%P~&Pbp|Y>yP`s9eV6?~;BMO7Dr| z7leKtnRluklEgIMUCpg99V9Jtm_~t7lkm??)79JogM}68c+FbiTsmB&(^v-!g7&+Q zGwo0uCwdt)96))|M^LkC&91_9Qq2S>6EiH@a~i_TA2(?@nqw~Kteb?lJ_(o?!GE;F zgCP=T*3y;=@hBK%RkA>i$()>n&!sCTJ4M@oAWGs_@FKyDHiEtddd_f=q$cyut8+$AQ~t}(3>AW^DW}dBOh%>dx#|0MO}1kkrK?4kGKUP zUZ4Y}QZz*DhO)-Xd`R?+2s=&-J|uK=0`NIn@YEcLyeLa&^v^;?RefHQDiJXFA8eYC zT}C34>8gsI6vA-k;02siFWQPWGQW(Mr5#VbGZVougFw)L*P?(t!EYp(WSkwLV4}OSc zIjf}U;Rkg>aS3{3St-+Sj!QjKd-{sZV3>(aOk-{I3K_>xsd9`lsX#CA%z}F4_qe?F7vGc~ zj8$)0eY+gLbX~eIKz#`F0?M)4Pce4$9l$+dBWvu*AL3pNVX00`I7Wl47?tK?%q18^ z1-t*<_b~*iLaNYRU5()`m6Q0=!&)2npFmuC&|}>{Dy6q!sL^A0OUXp!#?^pEMrje&*>5P85$qFi_S&ef5LAcZIr|S?k!Rk!D8KTR zT^M46rEfKXSjcOXqa=RX1me(3?(0&VCTC69p=$x%4ih-spEA`1<}(`wO9AQ>;S zqA}2UIfWW73{m z1esJn#-qMh$|DE57U$XhNlj;Q*YWV9IC;5zD(D8H=TnA=7@P@N63D^3pp)WJKc?|} zsByoTz|dp@$o2sbWxH}9GMV?u@xg(fi)Rr6MQS2I3;85(KP7{C<$EJUt)w{0z47T| z3<08l_Hacvk&bcNNDRlyOG0<2BM*c;f)WCz#r0A>nqX1LbyGZ*S63hqj*sHgZV8|*o53{8%@5ii=At79yqs|Ic1$nu`)%qL?b9U3ChN7qU96)KNyHbVA< zC&DouEBekWu)mhvSa^O^&unC6 z0BKsHxT*xZ5hw7$_G@!YQ-cysYw~IChqRUWE1dZa(pywEs@1_MZf?nt0 zo(r-I!=Y9IqYaa98_=s=JTM{Ch%;B&*wczMYKBA_!%#4+LaBM$fBYPVa1F@9pZUBz z_8Y&fdHbEe`;J^Z*Dcj357!PIl@-et$wG|fsp!Kpt=NT^t233M_r2q1z9<72E^_hD z|5O^KMyjw1R0(Xd?98I)8Iv?Hi4;S|Kq}hWDMjm7OT|V^G+x{(^$Qna<)>C@Zd{-{ zJaZRb7F5pdpp%@;%db1^RUgHi0ZzhQx^#`a@a!|PfIZWTFmIt4b6C*B-q?a3YUs6K zD9;e)LGX*v$rGpKO7~e=w|*Oj`Ftpg7PrX4g-fyI=XiC9s|^=c#<8&%o~>ga9*|?0p#8>yZh7_8RcXPTfHDk;DxSgyWY|05M9;7+ z!*Zat7zV_N)_e-b@ugr9CJ_JAM~7s?atztR(4djgN%`*c&GLsYH_NJpSYj2c0&(8J zH0|k=n^nfxFlU3G&p)7KU<`SQ9h*B^DrCjBrE+TD8<_ZChT&hImMMJcn8lF5N_^SV z)t%0q!wU@BXp|RUz9Q53I>1E);yVxbiH`)!l9o)Q{YV?*8V|fEfpjXvdrlO?VKmP- zde9~>Gh|wk^U5Da$mOuE(UwsE*2;cHS@3BRc@(Z5abJ1y>Q*k2;Br^N41?7=GrL`=dsIjMpIQ-NLVoeVoG+p(^yN->A4&8gdgJz0AC3D7htjk zGcC^~1@7P_qCCD#Od^Cx8!3}HZ8+2+IM1wzT3n4q zTPDM#O6BOPsbtgfw99%J?NAIjnx_FzWzsmkNNuHY<(Z$vG}8!!4-Cx*jo9@>9wSC~ zKNYC}KY-E+jhZ^+rkm+| zP$CC;Zx?L0U<{S`9thT=x4F6R zf;@=TmwxV!du8KHskHVCO6k#aGJ#<(<5#*dX&OEM_+NxocJN6DV{*_8L!MTkvRj58 zUT(-%(y<`vYToGh0L#L;_<9{ghdlH#jRDSDD; zQ9$&2k`dN%ky|Ao}6t_1>`R<)k_2mbp=HcDaa_61Wv3aX3 zU%gJ2ap_J}+_`io^MUu52O9#cjB}-%eW;|4aeR6OhPb?a0F%S7p+f!%xq1cT*D;K3 z^X5%DDYzC5$QgW*IFA*ie)PldW09y@XDXhZM!+I8!+ zJXYaL7I*dSzSJ%6zKd0kTHA1aC1_}L;j2fHY`{>Tan!;WFK&|+E3nxZ%Hg%1EArlf z{aWrCn_4h8U{tPMyCfU%HR1TNV~W>=N^?0UqvLw`yp^IyoO=au&wz$%d>O#C9m4RZ zvI?#W#9>mU(%w*shK!YS9lC%*SBA#+07goEZ-1pMtt*wKi-s|rXjYcBPf9H+@`t-C zqzS$LTlpe=*E_f&B1k50Z2}nc+NCXBjgGr<;(xPn3mhDxr>~nUX zpVRI+UZ1zN&sxXt`Pn{}*WPE@lAk0ik`g76Vh~7zAi)HXAV3f~V}Ka|lXITg@4L5d zb^reiC~6yn?y8%+I{de)Z{5Q6#5G`wUxszk>AyIDpLFQGclD@z`t}i7Grvprz1AtE zHS^H9N5=|ZZ3Z#fw;P#)YOrp|06IMA;-}D2Z;MO_LLrDGvaStmx)e zVcrOCF;0qiIdMTJCnbF>$AXEujz-!MDfv!J$w=Tq1Z221e23|VgVQDF6k0R^fYd8a zoyd%k>ybnacpU?c9nxA&e!`oS5|)$=S?G)^ zDx_3uo~N^gYvEP32{5OP_j#i5x}}f)1pw0hqN}t-yV;e#K}gFpahTE?gUX1!q@grG zQ#1+*yao;o;lQ6A7wv@%I!ZKv%8z!t%!Jw5sZyCDpH^LOa%9OwCop3*Od{Iw@xcMY z_>>xY6Mlnd(^C&%kuMwX^3rh9D~npG80rbSRHp%hEh!l!Q>YfyJ|pEmfzkT3O-^&& z^HJVR{+VdgFjGOE#6H)P;IyO`XPlpb0mnnBYL!#Zhp6k(&Wua+8>`8R?E#=V(fDLO z`phd*4(De8`OS0DAy7The&tq>{dkAE3FSUHS1krT;kuF0H7E8f6L;!3=U~CCo>$+J zD`%T!{)&33`Zy+w;)h%D*y)QUOCEn1IdP9T=0qQSYag<_ybDJ$N0!{QNy=}%8R-bs zVm)Q!UW8-8%lgclG|9P~D)T9*JAhRU`I^8}XFq%NAhfoGN zC-cISL>_m9i16CL>E4Vml_hW-XLt9=jURhd(|?X&GIk!aE4XNOMcWf;=Q6X${Jkzf1tZ(^MT!NOiu=q&Jmjb;fN z2VXyQ^kFi43qr`4If!XOm)6&#Gtewsw%vy8Ki%5FD1dXzaF{cvj>~e)w>Wv?3_2NS zWhb&O4G&}0<8v3)#&yVyH3#WQ8ETV*FIBv%>;&+B<^7+BkS$*J3m4AFspE&_*qJtY zY9H1hD8v^nocq`y+7GJ|=U_D7(ze<&#u0qpAZL4X4Q`M!W*;X zpI@txWti;Ct`j>G=obj)bxZS5uFOGaVf)fCxoPDP774?=gxTm+VB+-zdTHk`Ps+D{ zRwe_5HTXKyhQ-USNEyZlavDZI4LWtGD!?{WYX#X+HS;<+vK<_tgJS75|%4Iu6fEMCl zK-8O-ZEm+FNC18u9V8W?G7QJMRZVb|N9l^2F3*iHmE;R{nV^(i4$qYB=b~*9crsxo z)7mQ7VahUWGS-yrK$Dz9qCbIA1bFa2&9C*y&r=``|BO~40iVI^G-_sw))*2QlmxWx zcwoiqTJn0NQ)JNZY$`xyMjKQF;3kAj*O#qii40@WeK5<*b_~LT=l~0LYAvgrhAA&O z`A0f?d@}T8+N_obHkD*(1zX)^#->sL73g0EZ^D-5HIkY3AH4&>GqJx!4qg!4be}E* zV$N4Usx6@6ON-?|>jF)R!P8|x2-H6j5G<(ZiBQOlV|$DKsoxy9sVmQb##~^6raHx;Ko4_p@gFs zRRPZ=A)?BtFI%3`rR0zl|M(+TgigRDejvwngp5M41;LRItfc2&53B`oUT|6kvtk81 zs7yK>2IhT7XFKQYIcfRX9vQ{RJAb$rE~}Sf;3~W3V93R%rWktD*|h5Z?J>5vrC~_fac6a7N7>c3I@^Ky`nz$Q!l->CMvv=Z%lyFssYAF%IZ{Z<`EFVMb&S;?%~QiypLxoA7|A!L#rQ)Cb7zt$m_n=i`*CWLmv zx$ehkZZRC`JmlWbgColOmkBo20X6p$lZ|N{uQ<|p;(`@om0nH&pSUt0t!3jVEogOe#j}ndGQ$>g-y(yv+wOU;K;XQ678g1 zZEeMfdy#C|xCx{Gw&2_H75K`4@<4x|F8cQBo;}jj-7a+q1v-2BjC3P2)#`QY5dOo^ zo+_D#keyj*1BR%LA!KI&PCqC7{^-f?>4e|b7A!i3j_X2X!dZuve`yQp%dmnj(|jI1 z^1gN&IC}qGd=<&b8IffxR_pV{uP;ORQnnha88aI+< z_N}^59Ph~-dHW#QC7YE!nL&-Kp4uOdlrvdNfHj{3Af z^@h)ox$tHa){Tzgigtc2?)nWS|!M!4`-|}!$u}@xdM|J>x4(@SdQ(dbim^=^Hb0# z&MP?bx8D@F&=j$XH~GYV*oNMGlZpJqTW>&l z?58I12YM4>qa#|LVF%J=3-S~|LjqEZ0hdAV1Sy6n!VTp~Wo@)ICEiaXoTs$_D=s37 zJ)@dP4>E&3Zx6OeQVuj}4K5)zUi%zu92{KNUk#Si(#7xu^`QZ&+uD8bNR(M_8Xo{=ME zXU@sUq6IPmhmt-9zv1(fI7fB$WrHJ~jiI;qtMfmGb68MUE3@v{A*1ZbApApn?K}_K z0e+_ZD@S%A#8&_?^G4^2BlqLr=j7t?GiRi$xmofNHZ+1zlYBT#d2sF~;9%IOVx}CL z_mM{aGueLeT2@p4Tmigs!j_aAf@2yV2|^)-qgq~vad_#-6sfD^)?pRg+cBYb37pZ{ zo!9WuBv(onH;OD76ElUL~ehra~tQ zd+zKpS-WAY4B*~r!$MVakfwGAR*Ei%LrNZYE{5TtUpRM0zYfqzKaMpD=!|ouy{xQK zHf~%bbLP*%Bw}Rj!Dv0dK%6;!3KM-V%ECqUa`52$SbLyaHs4er+i%?=``_LRIMyRT zCxIORowLAmLnngH1v@9L=(u#@YeYHHmL55JOwVoJe5Be$r;O*!kfTLQ&?&%ZJ16TF z739cI-fEV9%#|oB<6V%4G^{p1hcAjLd?DduItKYGW{t@=_7_WM-vasM-B)E^?Wo+f zeHiDAuL+nFaN8=8%`1kaejXNes~XhN{;{!qX>BW!bC(O`y_1!4uC+)WzNJ^TuJ1xt zpi=pb2m9seJri=MV}UGRT935?&|a6XVvfaZsd?xg;W`ZC{H%oQ%vFDLaU8>X0R_0H zMiD}Vi)yJrc_DdQr|xOZ5ER~MMDy(Q%Mocv>l+aKa)Is>CO_xP=&{2#k^Ii>GR%Pr z=rCqGkj>durq`?zq_TpIFR5wja7Vg;h)Xd$&Lm{)-MNb-{6U9;6n92BTIvLW-i0dI zVNs}KDLOFn1sIJEc&GQHw*%3DMQ|YJfzl$*&av~$HpgZ@LKauJ9#JI;6NRjS@59Y z?t9XT4gl%q!1Avzj26$rO2oMc%{aAd7knVZLZ{m<$cbNUQgUZ3en>k-`s>leYZEDFE(H5X zK5fgg-KwCB#G!x#t}^;)Q^?mpCD&lne5B@F23M#NO9zazyM(dJ50Q;2(?>>ZJz zXWy27!9-GQ)ZUK&MN82cKrDVKGAi|OA~r(RMsd#+;u??PW}k#}T7YM=7$GHv=!E3L ziT7tz7l3RzFGct7kg~@f#$r&or}za2_ejGMd@aJL`50Cg=0aVj5%(H;BTV5rf|&lj zdtODDPbl@$JMZH#Ifig~FUyRNNGw`sZFodrp6Zm@2gLJoVBg@SKbaa<=uA>0(a?>I{u&jjn8Q3ViaLYynV)b zL#Qobv$1>`sd1TJ%E+67mUb_ ztMjC3G1deqnUIRoA+*;hmR88es@O%y7E~&49W9Yv7qBisB|4Cp)brOrsg~dE&y#z$ z^&*t2P#(RfUuw_^*>!r6+|aOGx{8oi7xN@?kR@mo@1I<}BkbA3vwP~4lwqRvMEz2k z2<^bPs;)2#TlHsxCZn8(jtoN%J>H(@uJ2GSupAr`o*w@3ON|`-Kql~Ys`BIa$`Iyt zYS8q#K=EQJuuUk6ffv%MZrBu{`S)*<0_rZCzZpH)JDw66okLY&L- zqn}WejT6*z0?@W8LR*aC{P4Qf`eXf?G$MWZP$vnxSgqD%8pDaktUv-LA>fmDq=a(qY&>ehdL63 zT1*?G+=fuTKEtdYA!dnW+!Cl+ zp58lNVTMqi58M3$lYn7_K0y%Y8gOKho1v_xw|xp1kb%xQw5p5=1e~a-%aH&Ry+M(p zQntj$EWk2sF=ASnGL}UmOrKf;Cgs!CRwkf>WD}U!5#ef(N>XN3;d)F4+l(b^JK{2B zX4I9{_-2L&8-qO*Oleltiq-=F2g(X?7QM`)mmN+BU&??_ljks?sgDFoiKD)JQZU0Q zVWf*PDOmrMJ1G-pO7&>P6fFP=%yehSgw@mQiOg&qwFiM2a)T6->*h9*$asuG320sb z+JXBB4D_^Hu|Zzo4>0E|M%-~RVqhmRQt#n9&Op+5#;EZ1z){?S?p|qo@m1vJhjWOy z=1MqG^B(&cRw5mj&M*JFRNQ~3j36vRoqx3p67j3XRGx@+fJ23Fp~D}@r9E%R7*ZI{ z!iZ+wBM-_re(*WUulIr(h%$J+3>!FV-Gt7LVU`KpZJjs3{Oh!XFr1x z{6@sMAD6QyPszz+hh${16O+7)Wa;{iGKrD>gMa#eNnUNWti1m|$wxl?)~|jQ?Tvef z?Z}H&g%BKs;^bpBT|tih0e%e_$2tHl?K1M_eq2wC@*)f;4|XwA6C=H=(RnCFhaev- z{%Y(PIw`s6XyjtCtjQWI61HruT$xoXbxV;ZQh!)+#&D(wdoD{A7Vs)4L}(Z8E$Zj! z`00};WcTh}djGFpw^1GMvhot7;M}64@GDkeK{7bTBj`BvV1C1%-7jJ^9BD5xnRymM znKpv%_1E@d0k}eW=wpw_nzic?<}(it{z9EoFg7-#X;EKz?s<9Z%~z1lvkDW2Z$U?+ z9S;0FxpB)akPmzDzZ74dPMMZcoQK-jq=>HyQHh*3cgHi#3bZunTr&=tJkbXhM>91 zqt89$^ND4`gA(+ zw;8Mb9z9(qOX_fc)Qn0cLa?ypm$bCy%YkFn^33Zs^3C04^76?7d}YX$bqfm-vV_%_ z5vo*!Pei+qA*^bwQ0nLQ;5;zDX93<9=pr6Gi?289SIB5J!hq0G<7gl+?G)cHcqdK5 zmI<7fuljB8G7zLTt>Jkv=Rbu&F?k9oH*uG^ns5oeEKKzvW7PH=u^1q}1gi6&$*=3x zI4G)3OHGtSH1uRq@G@s?ipOp`JU|@b$H=X3-xMFNZnhlMC-DsEBNF*zAtlLR;f<~h zA73kKppj1F48I*w5DO{#?5d*DLPFWDhOs(2Em~pGAlK%UUQZn(bD+t-4p}xjXY4SB z`y)1P6qD#=X=X8gHYPRFB&a5MaNt0|fxFq(2HSf-e=? zs@zdrn${^vl!nhxc05pq4f_aBK?5v0XkI5L$@F0Kt~X7q7^jKy$)-RPpeBf1iGK!&N7WZ_B*=FDoZs}2Um+?e z8)vd;t4dNDEd>_Er}<4lN+zlC>r1%XPMbm<&=jo+HE}3wHJooY50U%}G?Wu63Cu`< z2>O*o8CWtpw<$|bQYD@9P(>*F5kIg67+LFndY805^_o=HAs;$d=EV!bWMHp<#;5$i zG4yBn_$j&a%6>RV#WH7QlT`1#Lmm5q=1Wp|+ZLG$KitX_^yvz^aJ(6oGX>|ec^Bpl zz!9xRXP^!XfK9?#!mz5^$rrQRU`L!bAbGeUhTu3hVr2Td9RN@=qt76I7a@)|cfpbF#pwQgd~w+d=j_(eL0N~`_r;g4Nh$L6=T=ur{X-8U zH~TU<`_j*(@zcMGggRaF=@{9~W@k6Zo zE7GuYr&Qc_n{=X+HHAr?Xhb+{7}A47l{1W#q0m2$FdxS6Pr>oZMMw+p=}8!gHN#{G zoq=l5qhLv)3PLmucoiC@mN09C3yk^&_L`RV^OF>a}Yz(q9O=8l4|<9{K%wgB7CV@Xp)& z)Bz>_^oi4O;1>clCCiqtltqgcYhHex6N2{KzaQx=VP6eWqIRGihtY94ar^|b04>Cb zd@0g^uCX@2in#px@HR&Kdl7bY5!rt7(dijNrk?_|$Fk+Cu$Do$+=RUND^{-7`2Qk= zz-hKA=w@6$N7wNkL%#o=Z{R%e6#-v5Mn|v`Z(pa}cKe<9LNQyK&{=D2TBe;0-oyNv z=A>tS>0!n!{ONtoFB`=OP2$%H%m9#Ch}auK2Ve+cRuA2=Om4eznVde;A^Q(?AS8+l zqS@VrQ@C_h^=)PlRvY>igI=aW@c}xg?>a9BY>YI5uzg%gkE0UtAQF-|O)$-uI z8!`HyD~C>8m2#{>P=N`;PrZ-%6di@KVj*(=mlepOdHF~?Iw1RY_ec#oX8F}+Salos z1iu1cp2j%ZatafKr}$j*R@aU9I8O)%J_|H5Y%Il^!yS-38VGvAyW#k0$-!jwv8H;> zHiU*YSx)E95BMFF6kKCku_=ms*B>mRxCqK(PgxC2(1t^lMfw!8!P7#5LkSMIb-F&o zIG)_mo#V?wHymBK>+_@H9ck3z?TiZG_){r?B$E;(t|BGJX?QfWLzF0U7f==%KvbgL zY6*Ef9S6BsKNlPo6OFDGC+qr=u0;VI{?sfD<6kGo#I%h$JbYv6+H`L;?WLqd4Eq2y|pTezXpNYJ;I_ zsjJ2@7I_j-=mrORYT*e+IO~p!U^LLtZaT(*f#%OVwiA!$J%RZ{{? z6#{Okl#^#f%4bC*QaTqDj&6gUBlTee&d>_gx*Om!6t8ayqRj%OA+HGuEM`|)ewyCl znJ}}##H4J1WL4!l%oswo5z;b9NVL-{fz};P9xEGjpk>>tIFp${!w?k8FakAC@v6j> zxeW$#9YGd3wHWHIKk$Gy+1m@7SS ztjn;t*2c0Txd&d)=C(^%rFT;1!l5l*uvq$WojMWI-u>!cfx9is9{!jVEp3pFci)hO zTee8~!j+f+J1Cu4y>?7W<*rZss?5W@i?e%nOYcvfmsy*(VCCe6Qq$NdwQxfFLEHP{ zbI9e69Qpi$g9)O%;5}GcmXml9prIrFOt;B7E9iykNaY01ze1gVG}9zHcXMjwO4CX? zwP=+bEL$KSOqEIt{QjOE#G2VWI_eBxDmW+%JVcy7yy!f+c(Qz%n3es2Q`DcENY(D+yOw?knfF&61--$?B&3At(0V)^*JYh>Sn3mVf;9*EOU0v&OFxH;K6 zTh4SYl5MwalY4GkBkfpJZ`-E1^1GkCPww8aUiR!ghB*l$w`^T2XU})Z%g1_TF){}| zvT00iUW3%Abw~|df{q?KLvw2LW$D~OdH1yr{C;B~U~ZN4BCIM8&mvdv&c#G=rVLIt zzDN9?=N%6>76+EN5ks5x{^Bu3O89;wkJGi(Vku{$uQWuTl; zrp+~?G|n168}9Z6q0SJhX^CtL1qXxUHIKBJr;!HxHK4Vo!uJW4mb@D6h+U#g;a&@L zPOjjT48k2pd$pVx<5H4iLY%;2$&e;Ky$=Mux3%a77~Dl>TMFpuc)l!$?NMme- zW#f2S#2YRU1X;=z#J~Y%H6>Hqj=ak6IFsY@+&-1W&k`n5d6b`;RW55*FcksrVA2t< z{4?Ol*9;#MsA|vo-$c!}hs$!N7uFN?`PXx}HsSi3)3BnuA8n(Pcc~-lMj5pH0+5f-?pL09PTG6>We(z?YahBl z<@{suCyXLbLDv|ZyKtw3R-ioeAFyK@(EH%f&y)sK7x2R9Go7{0=1cOQ{`@bb3w)eR z$t+2u2=^H7>5?go05S}NnOS(I%muHTop#Xqa}FPc_PR9o^45JeP59xb_M`|(VQj0nT=ey3UT4Nlif1=6OT)26T&U<<}ND2w!tm9_HR(?61jKJiOf zc*6wyo_}O2BjL4aIdypLx-dUvHkbT@uOH90}gM~@+ORaV}1*m z*->RDm5a>r-aC8tG%^dd;|s!C{W35Yp+N0zU6?QMD#Cn__7idaoIIS5Hlvg88LHT6 zr7SxCV+dh-;rZv}@Zopl*MH-;F*zFf^f{M?8x6+&qO{;2!}UCK>WH+qoWdm7GO0k? z)H68O>WUJ1?e&ZDm7gAx4fW-63E6qpEt!SRLyp{i+e+EGd9^(G|Seh2}%MDGFm_&>auYxh8L>-fsD@gZ> zb6GSG*B$46>DrV$@id<6nq@L;bG@{}zM{SX;PAZSIrVo3UurxJ-B|&Z+G7s~T zn1X7&sa~cqpx_&y{am!q$d8_vlH0e-#N1k)x1OQj>eC2sIs7RTBnQz7iG^NFOg%{I|_8#Ajf5x4k}6MP@PFeqF^u%MyDcJ#(yOZ zN4CHIQ=pwF$sPsf&_q+R$&5N#z@~N+O}y@nE}PFtjE1&^lJOafJ{#dw z5?OACLP&0$vAtXpWhlzvh0@JgSiaov8*w!z^%noJduB`4wlS2FJ07Kqfc!f39`Nn{$o+idh?;}&JR zJUs?CmMoOZ1LbNxloc3YhE*yhQGEs~I$;C<#Yy2uZz*Tw%X{fjz#-jg`DiHtx zKmbWZK~xW~CfDQJAT3W7;P!!Ykq<|*@6|V@?MJUj$@0aLhj1O8n1>%*3zIU<{IO7j zR8@dM&Ln=+OA!juwRw-Ugn-I=F9<_?B zLC`Vd900((TRM?Xz8DUXeF1pkwY@R`xnmglAAz$vPDcPv7^D9AN@dzZmu(7k|Iv45 z)`!zO4ci8r?j0664d+!O4KO_r zR5p8woccfiiwqvxCxZv~$>eB}lvmD{Wyq1g6zen4@oztY^r~=*huS)2Vq{3_w%#H= z&CN2^fyux5aNc28KUSLMb})}P{nhf?%P%2i<|0f4zFiv7F1#WfnLmTC16NvGVC9a@jcx$odh!aBKW%XX=6Y=YyzOha~f-*mKh%D?@~mof2nj?AiCfVMq~ z6q|#H(_bh{mp01mx>;DcV70Xvdd+_A_Z(xf~CQ zsPoK~mlq%$Z^eq0_>wRiUn3BQLrZaE@IU7|@R8ts!jARG@Th$KYyU2P^v8cBO^wSD zRp`b(jNy7bU!Ew>BOJA&_3$k5iNgJZ-j0mE`Htk>uv{i_J(Dj1xW1SV#4l4t z2w9xOwc+A|;dM$$E^_)2D8*u@Phhmc0c25%cpxDmKG14!K@-ilrI+mJ^@Lq7ERl|a zJk_lLUVG#8z2Us(NE+do1jgZ=NpzI-JxvzgOL`2yQ>-~T3M|?na{4TkfjexjBgJNj zOl(SK3T;e5L?S6I71WV8;WXOmh-AP!EiF@oa>Yh;Iy?W^W)99$9>Fxr)h7itFi6Vc z47NuBv5=fBam%PgXhz{9cL2;1Q>t=O?IPF=2=Ezfcl}^88Iw@8<54uFDzTC4KGcmbqaC6i@{$uY^j@@VN9=X8wl#Tf3lV8~R@Xfc{3E>< zv=rq!%=Lu29ZUylO`acvTmypCJ_uPref7O_LhfzA^ zfnNL=jbr405~KGVo#vMSK4vbD(rBl401$FCEd&U-JUGJ~A@vZTpFI1ljKI+?LPi*! z>`P(l4B@DPDK)jt1WTc(6@M;$@^VZ{E+s&M3^Oah^pJ3{9W-?(oat^lkhm@j;LO~F zj?OkXoU5_;)?!SuEjxM|;arW<^zg&dUsWyV5sI?>w>~2muxjla&-}aGa@YMDc5?FM zaoPX!ld}58JEgL^M%quGmE0r8RA}+ACvRn{D#cC_a3R;dZS$a?$@!x?_3Qx=|Kmel+Ha)tNS2oiFDvwj%}}nRvP{>0E*$Op@i>hZ9%3+Ag4jQ!JG=a}hH?tRX#B2oD;?=sffL zFJHMz7A#&2hddV!Il{s)I^W*j1}7C?r&_Kc#=ch?nwDd6s*4CUnk`$m-i(RCvyj7o zq24>^F4zTbAWHXP%$zfP2wIPk3GkT zo5yqV!gDXc`Ts+C?9oT$&;HAw3o{n+YXP2Yd@aBi8R+#}m1WKmpeb|bEdX6PG7Ehm zt5+?OwQHJ?Ui2!ypp46&183xpZOdfILQE`%y6-*pmi+f`yd^~w15$}O2}>7M%Hlf2 z^4FH3ZAW0^gd96^1kdfbY}>M44xY}F=JPFb_++{K`}1Y;&3(mkt)~!+fZ={XPw?5p zSi}vVewNJZlj_P6SUB(2Gm4~- zYO|TG&dX_Au+V=q62?SE#5s>M+mWgq5}6VO&J%S zxgCI`950abq+~h2GDST3O$a3?Qm24PbVhp z!RfBM=Qf#Oygox`F!JadGr$xNAZrU8t_e6_nwB)^<`;x1bRxQ6dQ}#Ee5aIR;v@5V z^QELtIgVTmiZ&}B>U81@=p1n*4`ttC2jDt$0P@iRpu?pd0616&uU(UFoCCZQdmqJ< zgT!>13bO02bfzO|uSXC4j$_fwi5LQHvr?$*A;D36E*v$+at{IAi}tR@`E7#Ze;a1d zZfHF(jTkGsCfkd|slYeuh6q9%h@Sk60rf~Vkp}$iKWvcfBDJw!|8Yz=U@7gRImQ=~XW9`z~ zn}e{OX1RH5BSwkKBSts#@xMf_UOKI#`qi`NVYGb+6Nl&M z%D}_;T2Y3{r7f2)%RY3D%E~Gb6JLk<4*kf8gLMSZ&V&7ZvSHIk*|KGuI{hX1qQu3z zE z+3&>4$<%wps?~7D=i$r55`+_#Av6t>p+V2J3U~vR;;R)`Dt`aaeq8VQ+G)|n?9iqR zb2_m9puDi_IeGk3kIUV6@6=ArnNtYK!hOPp(dh6)jM~cr-xIvkD5D11m1;0|q zNEp@nb%F0sADOf9C{F}4#>g%IYJHJ@!im`?VQiF1^t^jt`AOq32-$aL| zA8A7u^nwSSfJV#-nd*_(cK4(05o(BgeHd-8odC7pPJ_0m+m*j{e0PlDy})Z?{{sVS z99Tez7Z(@QcMM?Z%_y-4EALa&!UJWcwp7(oc;jF}JFGMv-cxK@C8Het4~LWxD>~er zGd~|PD1X!ic_iirm=zO%k$K(7xQ`Hh2^pMUMT)!n(Mc*X9bq4-BNGJ#1E@R=2g*A} zJXa&L`zdG%htLjMizj2apqIQR+7-AiAZBK91{?!Vlo3Q{Xqcg*am{BM z4l;-PF@hA3AWso^QW^-xwU(*mmm6?UVk0~c7$F01IC^!jHo@>|K^5f|VlK2TUC z(aF00B}b(UbmmBA+HNK%^xj!9JMDa;49L-PI8T$u3QeGlL{4IdaYR}r3AE1V#|%4z zOcP}CO_AB4wwS)yW(rebYKv+PyJ(;5N*&Yuu^jMvf4baY3s5L!=?-;=+o^>1vP#M( zH7d$*TFNyslx;NA>Ldv`I_rA9%t&K*ob#*9ted3lb zM<5EN3O zQqz4!7X9)kr4FOcg&5VYzG0QrtXU^>@4Qob7tN82|N1`>IX@xmKk=CKwYE#kYrCXz z-Fn2!BjxI>xw3gJ98N6$)$!`<$jg6CR(|davf*>TDf716C?i<$_RRA?MP~sE%pt6! zw5C?NPM?wrjDQ#6YXRf_`_7+{%e$YKKE#b*{>cxe6X8ZfZ@ndXh+Ri6Sm`gpRY&*^ zoh|0C=g2(gZ*UZnAweVf%2STc1AjNBFcQyB&hV)#GKq<^T?pmL8*P@dsS_AUzFl_i zyjAO$n|tKyaFLukcUg99MdqpMLiwxz{yizFnJ3pS^+0aF%v&%AqsAC9mjW!>bq-$~ z#u1vc2(k8<0gh@4qVy1>$J^oVvNPe&Z&cuseh>onuE1 zBPPEG6NVQeGzjwsE?j^!UapyaD)EJ7;ljn{MB_eXr*jN3{oL~5ICC;CH+xp_`=yte zPW_awfXggCi|{3)5py&6^G$kA)a3}jKVP)52+r%RV;K^WDrY)7V`daUPg;$$;ARTD^yIt%y6s2q6j zeR=0_3mo+lOeinJyoZ~R{fC{7QF-j%RVa_h3kNUClG$ajIR~oQoj&$1}aA7;F~>2qgo;3kTs;805yjV8VWdsG9e5tV|%ElfI=K7 z!bwix3*ZFa2b^QXP(xjeFiOdER82Z1K~|O{lUA)1cvlr&z*i_tf*+lYFPgZ1w23lQ z4((7$VQ0cKfYGsYO6XL6cL+m0EhY+Z+%!GrFDXyZ$#){de}=JWW3fK}t$sHMzJ_=w9q3+FYOOE@?vrCYQkEjL>#aEb;z1LZshbdq2N4o>VxVv=%F z%7nA#8_i7UPzowtv(xb&PtF(6K#=f8$`37k^bSBUOBIBRmmwLjsGQ|k0hKZ7F+~;O zX_+kZ#3EgmT-O*0rQ{l@;mjml6-%0zK|ekqqYmN{x)fKjbH zWG~5UY>?aq3-CjXQ6v1ok&f#HaN?yd`UP5e5gNL~P6Im|9J8N9cn=1GHD){?Sy^)G z7a{FrmE>R~j+2V>u3nP~I90jGhLVdA0xkeGg&%2dlrhSV0*B5EqWu4Ug!b>m9#Sn1x0Z>WrC-@Y{L=! z=Mq|Z7-C(4QT$tr^5qsRUAkl8a;ZS-)!g?E%P_9N+|Pej#xW9n;oK>C=gob{HggPN zPDu5L6f6r@ufYn;^W-Wz0UXg?^GlD)_`tZF{fobn(UuD`@WBTdvG2hsZmBHVxJ4T7 zxLwMzFxQzk_DJ`U-Nk^X}Wpn?dq<%`kpnfP3J=kDiczr2Xte*vZhL zBM9clgzbt-$wQb8a&zir>prA^EQUin4u^x2f00EJ@&D#zjH9E+FHz-4|EUXl;kwY# z8tK3sf(xCJzhH^<;+hy)xK!1& zvZGLp)r8NZll6c6(I3m9WADm8{qw)bU3cG)o5{Wmkahyk={(G-Sq_{2_)q>wo_p>& zqzT<2fA{zQAa~rkQ`3JI!A^Sn?4gkd5nC z$@4GlldEX|d+**Vi||F@2fJI*naPz63n%0=w~okTclOEl4MWnfs2}H!FLb$O__D!? z&f`))A4ZK2$ZPMOmGw)@WgxE{_dTC~Z^rO`3(vH*oITcj*K=|)VgAh1@8Z42!3nM} zpkm@h(V7dkV;U4NJfyn{PMC`?pA%TCf`b=nHha30_psCJF*t(B8-TLImJ*^x>>`dN zS_wq%P@?LzMv`#2Yabz@%}iUCeSt`!QD)HP0(cCdv|)};!%TCR%J&F&bl$EHu) zBs^rC~vbsY&s>9MT#RB2xScHk?9( zOta15ZiJen{HBh0{O9H}O-a}roQjQXCVAO7qcM>w*;@3vN+gNdVg=QigC9N}op*aw zob&m4D}!do$wkP{AQt+{hZ8e4r&gVL9rb~;!x7yAq(&U0vxt#Yj_~KgfzlsaI2c6; zF&TX0ZE3}#Pm^$73NW%NjrB+yIZxp6(6fO}aA4qYGTA9|59bMcCWCB(v$Y0s*)wisk1eeZ=+)<(%@c3d`m zTHSsIY@daUZ+L@eP_mMGA+rc~MB|*9uYattKo-Nn-h$ZYn}_;kH9AO(T05oa?Sojy z;C`8R=iPGU(naZQJ|;_k_1BSq{-~Tf@RqE{0#XdIIdbTby!PDp<;Gj@lM-|u+K!%( z+}Gcf&X$YP@ZiIkyuDn?Fi~~wXFe-Ucikb?4Gmbu79-_{4@(;|{7jWp%8BoM9T|Wg zm72Tmmh<2FmUO-Fj4b};$1#C&R4)GL`_l6LAIRvz(=yrGEqNFf&#kD|kyc*LDdf1P zb2(gybe=eeVmREG;;WM}Ir>hQ6(2HW5V$go{ud!z5P!;YG0>cg1;8c|4usD_2vJ}< zSS;p+3EkUn-zoi_7iHhkGjh0jKBRF{X_35pZUUWyam1n*%8M`Vh66h+B~>+WIMHdH z7((2C9VUF1AuT9iS1-xLa33b*F2JpqqmKC^jNCI^ha>p&uwY#eM)@z`t42|Anf%As zzaghi9mQOU5=|{SG}tGjm_%A#Q;l$;*+?;3flNw8aN==a>yI|VnsAS`A~fj8;X`uz z^l5|(wIIaj3MK57*Z>K5d+stFip)5o6qcd>{C2$mglBuo#n&-<9uv`$@U| zj+^CkpZ_8{CsokR@FJC@Ow9H(7oC7dAAKD6LcSb7eh?Fk3ox&tL#|wDfwO*Ae*DxA z<@m7!Sp9ef?8jtS-m6p?G}6X$gp7^j*nIvh7W~RZCugCYID1uo`tqA{%l1{WWo3gr z{nNJ*qSS{8%8jyS%?$|GE0iP0o8@&l>t(Zxk^b|V%%6*e!_Z;+vwu5)=dcZ<`W3Qe zQLFsgJ(F_pwlP`Rh-+7Yrx}htx@GuS)UR!c^$6um^N1Wc+9S6QD?xBL$3$4vW?D(+q$nu2?jkV# znlTm1lEOO_AY;vRbOThW9OG6Jmo%Nr3|Ox!r@_3vQcR|kG%5N-egfwmK5c_?LL)s2 zRt{aA6ic)-qy1CNE(FIETT)H~!N#hePm~Q9xAeW@VhJaY*Q2;t0M3!qsS-xYaXRoC zy91~ty}5AUNrGxP1R}$8pDDqpro)`jQT_r(vCC9IV+$G7~@f45tU>QwU0wk;bLU z6dbncj%h?_!JJZ6kGcxfgUfe(0K&{n*~((OfV1<;rgwQxALYdJCIw`x30ktULJh7w zLBCqTa*CfP0{!CfXCg2IgS(I^pkjyWwv3jHrX9aJQu~v zf#cZnA5Tl^#v8EG>soc(%w(hIsQwT}oiDxmHbx7(W%$rhsX(?9L7a6FVyU~He@U)j zvS=|z{d+IANOe6XT*Aqk!~`_``K3|k-Cz$ zc6`3aC^P6eN;(MICX5Py*cSlKAsFoFfa9`ThSB-a4uGD7wV_>uQ1(L_?=U|mZ)tmJ zX47Wly-qqWqsS`5Vi@v*UAH2Y>aoX>Y7sg2F-p4>Bh$l^d2mz<;plbCMPzZg^W(oFOY4`&h1cJZ{-3@m zvsQ1CO2q$HBhydg&U>T|Yc?>h{{r&b=jWG5ZgDBDFDC24Q7T6!o0@f-q!gV#&7OmM zrtXo)G4eVpC9tKS9QOS133S?E8{*<8G5U*PVw?pwIE}p5auLkmU5YP2xPBaU%g43l zB;S0DtdAj9os)n^an4m7{ipxWI|BC;)3@f0<;n0UGDTsrvKEAf?fC3($;~_ON8JB8 zIevOSvNo4Y{21aJZ{bLC%dz61yRO*phu^0$BeSHRE3NO&b2;c8jFd?ng) zDN=CG)3pNl13ZqneqO_I+=E;Yk1Gk&xBu?9zKOW|esmzp7JW5M1Dq-S`~5HkGy)BpGf*@E!7ojV`U_qf`S#avUDjg#h?P0AZth`OyX2hQv;k`_Aoo90qSD$t&W}Jk*MY$i zIen=__Pm!b&+P4&caHQ)FH)cujSXVO;AVuu-6Y5ImcVwTKjr%gO=nGIZO6t7CA|mv zo|tHE(RoT!wRkV#9$?!fZliS~Op4xqUc@m74-#E&iU9hvplE;Hcr8QGLD4Hr@u))` zM5HB!TR~+gTxA(WvIv&j=N7qc)>+QRJDuaxbt88h{1_=*RLb^xgR8Wx>qsh|e!_`TQZX}puW(lu zo}{!qw=>YEQ7&Sp<40QuK<%;yG5ZvdlE)WjQnj)JQnW16GDooxtJBMrm?2B~NT*G& z3Jt_P;R?#)3ADk$gr4MqC*TwkWW@3`KI2KtiT1c%hBW&KbNR|jq!v`aHb;aL#mdY! zCvr?i6q^(xZze6lHP#LJ1BRhjU1Mz%8#IwtwF?mE9+Ui)!Qz>qb&(>$_^zWCZ1zBiD_-%G>TAqg%}-dq!Z7~A-VW* zXD5K}Suow&O&x3K!^=u-LXmC2cNepUBj0 zFqi>Hy$~ba%*j6l2b3KF-jlSy7|z-7B4l0xj$Z>x;n0tulhFa1`;hwa@rDLH4;7T! zspEtZIj#fn`+xD5(gEkP2udM2p)&PJ-AieB>V=--bV?i(XhP~RKjM^8eh3nVpq};ydX1TiW zZK+zhMtaVim-B!7-(=3?kIND`*d1q1NY#oPkgBOrS~1C$GKV_akjJw}#;Pi@cG6k7 zwriI>^oRdDzWj{J$^Y&5BnOLhA)N~xe|Yg|Tl>MrIpR#OA~wH#9F9J1!pV=IO&Lzc z&r{VYswnwv=EV!P41AMS-flo z=0oIQ!fKz?Ax3`X#@q1~3%x8{i*bB)`0jVUqmxpZ7ISGsgVbV_zqYPUp9f~Qp}R=O zy$~G+I+uODJt!9;4t^M47h3T}p+=f7UcmxnSla?$8UE@o|0_~#7Rc}a!JlB2;REPg z^vbV(`m@LyG>FazzKKAFI_|iG^!>y82yLX#1&XYwi^{T&^5@DkKY32R_Id>qQwrhX(Op>ZJ3F2gCe&I$ER<9qyN2J%QDaPs;Xn=vc`DbP_7%>)+mk z4jDQs_yTgV8{uoCQ*vMZq-?=k+uroP~@Il7oTZh5gi0!1M@UX^mtOF8A{rW^2WoFH2j0~+GK!nF@ z78LolQ6dm#@I-mw4El{Ak)!l(TcmL*G{uxVDqW82NLZKva85wor z{5fNpghn3A0j6-4oyLzTdD*dO6%CsK2!DeBe`v_A zB0$L_f6ufK>Ztlg-iS6PpiG8}AfZ-6O%D+hbt`KkD3iyPUFZ1ozW{*IohQnm9^Le9 zX?4}DFM$LX=?Dt6TBHO=YB5yOG_h>7_L3$YN(Rc5nE<0`*BNbBHO3ze0H1H>*^nRcT<5iesb*AmX$bXiOg<_NTmQ8w?(hDPEPr8x91KK7}{9qDi50 z)z+ZbZB$;MBmK{nXZCZiqHJe2L^)=!QBt&0Q-%IlxRQj?xRfl%sYR5nf860e*%fAG zA`NVKg+@B1CWp}kc$C3{2`7aWO@P6-QS=?If|9CbQR!*DpRw-PX$fg2qJt_1x2 zo;{jzCL;uh%{kNNaD8Fwdu%#Yz&XNRhqhN(3J>>0N5+S6?me)das8_h3%wm#a&E;b zZO4LDWiP&la~+mJjGQj~{O1r$JPY9$r{q11+O}RkgU}nqug_m3^VhDEE`-jsedVhf zBDEHA{T=(?lgoeqWf{42QHGF#Wu$iyBhb~dc*9m%e&4-Pxp1Cbe07(!9XukH^-WSZ z3mq){t3uYA3apUZ{Ez=AT~Gf+7XSKhOWE9cGK4S~%=?w*_YWcN{J6~9wpG^MdYi08 zde6K?3*-l%|DrTK@PO2R`ZuH<9YC%>0FM~=7aU|{b;-vMYCrtyF~AFPk4<60f+;wk zpg<@P!p88v7{Yy6jv@T~QR_I2;+%%zn06pUJ#Wc;*nK-DE3cM@6>E`7a}{piD%rd1 zSviD>rX@vKy*3}K#uipfKh`GT{lc{jMsaLMta>Hx_Z!zVNLR-td=2S_lME+us8h<& z$>JQ45{&G3cK1p5l`}GD{!$&~E`WaK`k##s<)%%WbyZwu38JIU(f$H-iY(k`TrMIk zhPnHP5e{_W{5kysun<{$dVBhy8(&f|!L{}B1;pszB?}kTV-CRy{h}}*=~NHBw@+%( z!7YO$?cqDTU-(6fkA=Pi_(1B$qXPA}oA@>B)?&WH7K8wO9vu+OouPdQ0~$hxBW4mh z30+sQS}-#SP2zf3`cbqq9PNwAQo5eS!fz+vmo`iso`mB+ zK2@M|9E#CVD8h4i{^${DYi*V*y;IWHd0u{b$5pAX;|To$=^tMpx7>WA?Adn_i*Aj` z$2L#OXYU=u8Uk3i0V~nXuBkw$k1GD9%K(XaT)hY zo75I#MT@aEOkhT*bD&BV%-t>FTjEvlN9iNa5gevR|Jkd)DVN)JsboOv!Mv!7k6(fo9 zWMIG-B!%{xL6w7WO!3BII4jguQoL>nTOGi_Wfz($BPvvMHV(qw_!KJM(c!*Jp~6qA>oRM#c_LA~BMgai%A^ipKnXV- zHD=b8iZWqeQ%2Aj#l=G8a~p$Z91{6~o3fqWTiNTxskwGkx&R9Z zJEt@~#VHhfvMFmQ1f0QBuprY&b)VSeveofR;fz=n7&`#`3$py2^!m9BJsKT}mDF)O zA(jmoaSB$!jt>ymui{iOC8`Z}Fql%SOy^fBqa&el1wPhMOw$`A(9eK#TIW*}rpr+= zPQwcLjMZrAP?sU@bzsli7u%hS04J$Be zh#xYH7#8D)we^XgN-3PMs=IEL5x_X=uICZ$(@dBEs?RQWB7}H0SI#ZH$6*WQiVFz=r3quQZ^9G zb{oOScrR=%M!xMv#Mw6>Z~L5~0hx_Sr)8MUIDtv5%kXt#9Io*@fAYtY`_TQe?(@GT zyPtmoDKJaq##?Tc_Yb}&dw=$QS=_WuKJ~dT%K3NSk*ojj6HQ8?LS7@aOcNX#Id?FHzdT{(AF3K80pgY=c9_&USU@4jmt zGK?^cp5X!5JT7hMc=hc+AbH68bLW@;MsB*}PC0Y@m|Q-C$-|w)NCjIag>dXIedXU} zvJIoPm>>*K8F~D%5HHTP7tX)N{^NY};Uta0;V*z=JdTFRhhsVbd>tkk=fS?d(tPPh zTF6S|`_H8#Ka9B}s~TkC!jDq74xMdcb&8k zBfcBmiwk`s6`V*g)+OyoS$g{oRZ>%)i;h5#tXfisFp?43aLe72k8|g}&cL!VbSBnp zx#)uu*k;zIpF+l>fx>4-jJ211FYFG)A0}yMFUc+jM00@Zp1S`dj45 z?|(x+_r?EJ=FeM#j=~vT>6RnzTesgV*RFKPpZ@V5$)EoDpGp(HMsQ;92)-=vOP$}n z`UG{K)4m~2#+d&LtTzePZcI|UpjXVUrKN0n8@cK?NBh-LLwN${TZZe! z^uYs&&(FpC&zyG9hc=Gw%L4w>)!|?VWoU*VB?we}zKO&2D!_n6E;1htQ_jowHSUb89SQhLxrD{rH|GDU^ClaA|W^v2B0HE zwY(haSKvg_JO+0h=?Kx6f&y8=f6COqK(7ZYD@W8pePkp{CC&sfs{j0?3FhOMa9axKTHd zDkW#a6KE4#0+w*{8EK$T;S^3h=}2lgRiq&2Rb-H(h{&UMr}j z@_95VJnDb!5_tMvA_3VlkC8{gj#Ek!8`>CEeuOwK$VX9+PW0gu{KGqC2&-^16i1DM zKjIfLnuyWpDNII$cYt%sl@f&h3?o%2Covb` z+&XZs_rk&W6!OnA)ucYV+5)!YOELeWbO2IsOnqs&EiNmKR|4GyY*Hp0!<)uIKLGFu zoZfmke=9Jmzi6Oest{LQUV+q>$hAHKXSf$3Q)5R?Njc^_Z20rPP>17{FML7P{rz7f zyaD;`54|T#&~aj3_46$q^57#6$%!~E6v~kCMIw%kj8uOmmFlVX?yp8y#2L*mBt4@E;%p%L^gio zN$J4iNqc|rKV|0^eot0!+$f!J{GR{*cjeUo{kO8fblD4bZ1cr*Nm&Rbs@ z7KbZ>vxYXwL+7Bs2(CHq!Kr17WeU0Y2M-gISaF; zw`iU8jm<_@nJGDYu0u}s&yjY7jx3*@Crf4($ff49=m?Zc(?WCt;IyybwngSOEt8=U z+=sBc6pK-<-f)YQRLsIcR#?M=_d5PDkclJztu3wc)qnX%dF)f4K^CAZ^4`JyvIF5) z#YLF7IyH<*thMskEsw~be)-SjhBa&9bYpG@M%E{Ae0}d8gfQJ9C((JxN88n6?g87N zZf+eq0n0FvxJnl((^R?P2DWG3?knC?ESWthbHo{23DUT-L(q#3`xQKceF$q}n$R+S z;XqhW2_{Ih&i79~zSMCW863bIh&H*}d`jBdTJZ&?REkQgkvg;(Ya?LtKCTx#?d|An zb>Tj_ip9_>N~UCS{VX|i5%VzyCgq>^T#;Y7tx4{?W3%LqoRdZ6Zz5ExR{D`$iuwd! z4n`4Xl#7WSg?U)qZDI@y2M)`r3uAKVM8BNA(2p>%E~zR(h!Q$|{R4T@-PR%H#S4** zX%jjSi=+~B1IFOE_n$f;0|-}R85L5gFQ1gxH{K-YIuXu=FIEFf z7vq!FW$AtQkW_5hBzaAZI3La`4|4@@Oq?XPMzY~@V8f0_yhn=9H484P49u$5ucV45 zg%Yxcl)UH=jYH-zXkrII34`lqLKB_9rJcG-JOkWvIN{wf&O-#tfk*EF$KmMr1Zj9L znFJMMyA-X;rd@#XU~;u&S_!vm2939sAB`V`q)p4xYLKUbjK=x=n8EKnL9x*|ACR<6 zMG{8415QyyIG)7>Z)Ap#WmcU&Lmycc8Dy9&QYXBsS?dP$y749a#$>A8HrBixg+|#< zOH4S~ls!ftv^YA_5n%jAmxu@)eqI6La*PQ;=T8_}O7v%y4GDZAfED|%2h*T*P6Lpd zL0>tIHlk_!kJtgQ7ok1@_WVE)3Q#~Fg1!3aFcFSFZh8ni9*izxSkM<`CIewkgM$4j zEfI#oo+qa`Cs0hnYt=z3X4&;5oXj0GFz1?181g?z~u0#nv^NP3=sKL zSDMc8;i%eF4ETA(P9+7H>eMoRO!P<+6dX_LPMkD0oMW_SI~KaLpBIo=VJ78Sy8?$$7prkAi@!lGrpv0 zp48s=pyb!qAw?$^B0{#CevE*(ojWfVpZc+syz~EY_8#DU9LK@;p!ZHRq7WoN60Bko zMT(-jL|N6ACD%B%5<7|C*q>uN{eAMLI&l(ziT$QHvE#&vTV%(wEz9bal1Pza@4bKo zK!E7I1K)3Eckh1y=|sJjr=S#0uu70lSuYCyyb+@R3}YUo12>4rXs_{f9VHM8hQXr#*bJ#15)o{YSW!qq znHy!Lp|2Oy8?dIAuaus78O&rKA;J%#Mso}0zO7rOqN+~5_*c(K%XF9&i3!c zCn5)vtyG+6|M{Q)MOLj|BKJP8Ay z8*Y*}n5j=@pfMlWUSiO+28a5}`3vO9AAL_g{LzmQfvC=Q(A9yv{&R=#Yd&YfSc^J< z4(Rn=P~~3#ql=movMTXB2KzDB{;wf;2Z#XF-h3Jpp*GCs(#-ZhmoTPz*wSY(K<>e` zM$NwZQN*vHMCax*NW~0jh<9s9za26lm)eK8r!gG!i{y#DgR-SQTOQhalVr_wNoDq% zgitMEwMoqjwGWKR(9ozfwT_xy|G|^}(%;+724Fq3AwB?@38@47=x~`-&#!0a-z8Fx zWAY3Gl%b24q>sP?;{)A-XNlzKV4vrff!{zzVXpZNq%lB9Z$2dxzwn6cUbIAZ<`hUN zc;ovIvY$w=6fgi738sX!5e?;9mFuilwHI5<>1|N~2|Bn=swkZvPSMjwrH#p_^S!li z8v~wX#RbjLI~>L1PbodEWgL?7;5lcq55bJCAQa~N_eIeim7@=7&nYU?H^cEy<((?- z?3K>4LNl$?!GK}Mu3EFn?+RQMI)knS9IlL<{duU;xd9mwGXI?Kgz9Uy^gbe_gl zVrANXj%?0sexUcbij=4$(0IAs4Jap*-(6f?v*=+CB|KczQis88m z4cGO-7=A==(kZ6nWmRaMR)f7T;oc%S4Al^4*Ka)BNt-Df+v8Cb_Vj@PnI?YTOlgTs zU^?6*nM29i+0$z4i08JxNg+^Bp_%YS8 zWE@jm$nPO%x^V~V}3+P0#y&EUZ z_pyo7wLUWXfmY?Nn|goaPyWme0JwMk`HMbDzInAZwbw=kz}=*{0nD@U5@EaHc^qLiL*a}o%+nG8d>n6_sbyn*45f9z3ir(N*v6ZI(FQx zSR~!;?Q-Iuz9u<)j>`If{3_16*|O)CAH(2#sU(%-#K>dF$S;#h?BUB-u9O@i%Z#Ed z^)s*-JatAce)(@L1Z&C1J|^|}1az`#722Al(=Mt~AAjLF$uFNLtxYH8iMNkR8w%8& zo7T$eWs9Zl*l9^+W47{rd!^w|zaU8r;M&fflFYsdl)3_DmoG~5{#{ZEr>v?47AWm1(` zMWu^qpBYPIAi!$Lm<|NMcQf%sh0?xAJ8QViLCk1|W(F`*V$g+eKwnuNGx_b3)OS&C zec)5Fn%$*G2ad|${{0)rfIeFQ06+jqL_t(?W_+<^rw+;>UZkrlrwBobl8IArcFMTq z@|>>Quz`IKFegf4WejKF%}-hK?Py{;G<91}0`{ zJgbb<4Ez=tknjyjqNAjNuiv~BoUhX_osy*Yzeo1mut{F#4VcfpkF)C7{rom5c{i(F ze8+5d-jsQWv^BLKy5_YO)+V)9_04Na9XPIGtpt2`HC)pAjo0?J4G)#A@d!9`Y5cb) z;z7Sfo*dd+1sS5>xB;`{^LBMwCehYGCI=>`t2ti&S!IsDW2I?B(z7K4 zMSSoV6$RXgg-;j@)zF~!X{E7@OK{frBqEHJX^jEbh$9M1_&QxWkj40ff;rd!(Fs_E zwS$*4N-MzUwF-ml%NrfwhAda5)U3lb06B%Yw5B2g0~ti229I)a8DbSAk`B|(0T^gv zSI1a+TLu2&X#*WlOZxoJ<7phOLE~9lC3gP`2tcl`MSLAv0FO{?S$E>>%JdSbBHU0G zu~uxwcYugiv(bGRqgZ_oKcZ6(;eH~Sv^4P5au^z(yV_ZSo-UMY-l6)dDyAOCmBn~E zCK0}?F7OO>`umt$k4h8c>scw(|EUxqZODmwEbHa-IPRh}R_Ji&lxbg{%wcx;fu zzF+#DKOk8POHmw&UV@XNdfurs?cnpTqc~Q`1h@*b&AhM~pUmTjmgqZ||LZv^#_2Z+ zrBGk|6qJZe9UyR3vyN#L?`iDTul&p7M26{?dADv90;tO{QAsq~ND?z{8et?^HJczZ z!s#kRy3XR0o+cDuGT{|9?zr8lJ{Qtzznd{KA_K2%lO%R(O=V*%9SGP5zoDb6EO9u?||}}eIy_*mB=SP zis;l3X?u*Lh<3w!gfOLxn9bipy!*|x>1ygJZ@D5_L@KF&@B67QMOxq3CPj}B(Wk0P zp8A)+l&S@dn10ktYx6~U_36jCkvv(BNlQlueiR*S9QF8jrSRrkuz!C@hPUmM@-27B zl6xPNg*V?S1(-QZU{gQXj+5l2i*lLGw<^|bWHx-c3~YZx(hCUbNLb6l`o*m9oREHO z(2r1m?-M_k#h-jk8t-IxU}pWNyM|;6MfBL-11PR}*o~v$&ZNu8kN-igd(KIMU$EpdtDMEkhduiMfZI1ST6V8 zy&eZ*o=FQc-fRNa)_h3{SzRfaS7s4x#u=FOwx3}a-C`VtnN_6^s`9Tlq&xf8Em|le zL(E=di>@ml8ltt30km!+)`H`_D!2y^>|rCZA~}5E5aBP^$+G1uiX7{pIv~?pfa-{;WOY{nUzlnJNs5t1Esfm?`Nh zz!Wp<-Kx4fEI=Ad~*ugY4}n{V)FHDLJ{1jo|vbEwWEa zHjcHZ+%1^YG_|zhB;71U1$;kd7!>5-Y)d?)eWyp|=y?Wvtef1pG+!RRZHW}8_ux}8 zUz*yBFjo$&&FtlDE_(hmuw~lbajSSU=Wi$%>Cl$q5VNkjAly8B$d^I zS~dzR#N_Z0gO@4Zjp1irk?f6Yh$6*+kA6vqvi7uoY3&+X)xJU@V^?kW_`%bN4sCOL zHr6j`8skc_eiiE!OFPyJ*jY-KA^gT4=Tpb3Vg>j@sNmr$VEB8NuQ(j$N^ z6U#+BDF`)%YXopaj*BnUz7~$aI|fSBpp9xrxX#YG`sbD<@|N<9UD}rgIpVw{0Rln1 zoj~+$;v~?#Pl4_zu72K%5wZ2?ahW{GT_S!_!odRre+^mXtZ9esq2Ylfkic;F;jk?m zlPT2Ys~}im?oR2iKEBUN*Q$yaKrt?IL4FzLve)qKMnu_ zW~5+608KcduPOtc5WwG9{Gx@L_efS02z*h*TM-T6=i$dX7d&S1^0bcJ@tIXV7vE4K zY$xAb86AUJ^+fj{@l%nFnYB?=PR{-Mx^l-_@qC@0x8_|kz}|Gfu94Wuq|uM>6@g&=M!3t9RBt z&M7l`g9RGBI)Gjxvlq`h$QiYP$rVUqvd)1kM?H*Ql_ivuz8Bw;p-vR@8<$GP3c?*? zS}}!UJ%xR*M%YP4iJz%N`Br6J6$g}9{qSTl>(~3zo0xPE|NUl6X;|J)CU*ZICMg3u z_e*a50+~Qb%tpyk8{4U6^-{5Ejm)5oYADBScuw)-JB1v<4?*wKespy(pg+FUVfzn| z)*ob(+cl?C{+Uhfc;A|i_{UBdm~ z*MMomyi?so30cG-N54yRzf`cH&Ji5|Y8Vy`&p?O?Tvjk44yqpTUQV%=Uy4cw59#XF{xO; zUZ%5(ajv~0!>rVtIeq~Xi(J`w>unYr|I$-WN-FW%xpTZYE2Qq8t9!}M?gJlVBeacj;^21Kx#J1B<@QJAHp0%1weM&1uT1G4L5Uyjlk(zh zLUZP@S3n=DH|h8hV3vk5ug<@z3?`>ja^%Y8vnZjNl2=&fRv(aqKVFS7l-MfU>Gn&1 z{smdOV!0GBSorCWe<%%$mmpUu=PK8_Pp%e`KD~T zksX(@)z?8qFMT`H?D?nRU2O`z-l(=&I9z`vr!e2gb#+8%`_<&9pYWWQFP@M~=W)_* z!Ks(FN=eVP0Yxc;?osySxN!E29A?+%w_bl;j_=urc@*zH1Lsjpt9IkKf8-RVHv@e# zFw73j$vE4Jt75E z%fk1Oy9{y#7J+4)g{B?cVMXm|KvxpMJf_h^%slr{iDw>(q4}sRB;3_M#W;ea_PnDi z!gF$^5xc-G0%&;z^vGPIJqfNV^ECu`xWYt}v)VOk%m^t_K}bdYGXO%{Y92bOi&MKk z79j3w68X9e5_l#WBf*^1EE%mNh8TYcbLx&$x|)L=PG(p4tg5b=d50!I{!vGDkTBsw zL(eWxC|Fu&MC4MTK};Oz62+j#^P#}QEbCw{>C2TS+?r?RE)Jeh{+ukK%#j4%o`+*h zk%t?J<8ByHl_Wf_yF>-E?=i?`=z4N^cD8h)ekYw)9b{1~rBRSk%qjD5Ly46~by$JX z>nY-4={fa8Jm$!Aje6sJf@~(Si7R7XAd{j69s%a$)ZfD-?02V$>XT7bE~6;W z>h_0EB_}j5%xhHfoiclYFx$YyIzNu%Z||4ZZF^JI#xjl> zk}8bqw5uO2eFXL%gtk&M6_or=l>hc~7i5V#@8Qrpg`;m8IHP;^%F!SF38Txb-yv)2THh|I@ z*lxMBcdzt+^Kof->@ivXz=Lw&$4}r~*)0q2yGQ!5FCU;ibaP*+m{Lb%5<88Oe>6c!V>mGhsTF;)Ax|OTt90QTJKJ`ht@oQg~ zESziK{Dluo=CYNh(CYF`sybgXBFiMy>_=9CnKOs7Y zZ~{)p8FC7ZUk6*=8a@=cN(kxM0c|GsRvGLVJjO~^K1%aAO7B=vj*Jm{vx5g#P+czf zJoE?=Y4YV8|M$_}xMICj)GW17n))i~cR@GFN@e!CmqF$E^Jj_1 zb5vGcw-$T)9LuL?WXsTCudG?Oo|S@bl==!OWL4$y?|d8UHzH->czgKJZu!(_KF6RV zOLFMjd6?#8@yvCvf$-|jbe)I^rBlX5Ax_e+<|m&J=J+@c_({^b};Z`Wics} zC_ec9q*cnog=?j@5{F(^9mZ&@?&Bw=Z?|*k1=FHZrB3s$NXxYTp2DCmnLdz|$vZfo zy$v$eZ)k{>4F>!~5Yl%(75{;B?Cx39zyX;c1Q&^&wUZTz>KytrPRBWua`wT8yf&~NJj>{?2Ii!&sJ+SihPUsDWg~zijlm)uWeX4cZ&>;aHDSoc zQvC+hY)56Wr|S^FGsKA2k@@Ezl_@93E5TDSLp_=d={T*U33a$@zzZ~1qoW68g2#DT zaiCFt4nN#G0F}(sYk5ffYjh8uF323`qeS{=C_bG40Jj2HhsUv6HErloBEn7ZO2`Lx zRIZgpJmPSL8aqA3@Lfd-dRJ&Xf_PpSB~om=CN4l6&|UPbdAnFag12WF$>)ke4T(AU zR#hmo8ujF`gK&YTp?P{k@^pcMY*cEax2RSMJg!}0@Hu><=Vd&9{z-L-cXsGI3Z{E~ zXQ#ru9WkO<<#q!YGU26n#1Y!;tmka#iIOPgt91DY8W$?!8xl4nn#h>&+J2EZeh?E- z5;y28vjX>%5aIkc31w&ZZ8-dp1U3K@a0(;wJpvb#$-@(amf3Y{abOvVF_*W$K@Df7 zKV?@P*8nL~lP_LI+Ukm6QNpo|XQQ-s$V9Ei(+eDjM-4NpQRYY*8U)_6N7~@|h7Hv! zZ$0eHDK59KK9m|>q7{8nG7%sIE(|`m^$H7Mde+aWvaf;X6(nXGjG{< zMrv7Em`1V4?(W5uC`Wq0(=dZM2aYfRA)Mbs_u{D8DKqd*UeRbDF_V$OfX>9Zdx3~{ zLjnsAIkaP^^k9mx_~Rcor{mF+rzLZ{lTNxPgL;iIEjOp|8*l#E@ya+&=t*?6k@kK`xp%!3-*>-^aQ`Py9>v*m6z9nzsjFWqr62f!9A^gj>|gv1 zv)C!J_L29=@h5&Lr+)o&lKb9=u%}KV{Ntc>;oMk&E%fGJ`>YhObL(&qPMF6}$Ted`I?*F7v34jq?|eC&Nv z^Vp+uf%Z&3d`jk_jOXOiK2NXIMc<*FdwDMC_C5Io&Y1J$`oH`eb_y<$?v^I&TWaQ$Nhed&u^|+B zoxLB-N|7EEH;wnNPU(506LL8lg%B_D91Q?OeZx2eXD}Gi!D>2+Yai{bgNJPF($&>+ zlD5yrENqy;P&R!ci#poJM;It>lI6GFf)b5QKkZ(>xPdzG5h2tmmTR=#l|E?CokB_L*trN%;aZdnN^N* zzaK`^QeM-@AYja1cb$1x)1Z=)V#d`B(3o*Pk8^Y}<|Y{^;2KJFN#hFHP1wp?Z@blY z(S7_o|AASMt_oDkWgM>G|KX3Zt8f|0c8T%QzCOmF(xP|K{-J;BuD<#)(H(QO-U;rz zr=yt_3U0rP|`|$0`nb*LIMHX_i+6K*`-Mi%wk)BTPJ0w?5w@UWndMRAlC}Rx9 z_MgJ(oVMud7@@yn!d6wtMtvnxT(yW5!$LW7c35_u5V>ttk=$|v{jRxN?z&^SOylcw zXzyEu4Q-Lr$KH^hyi(b+=|Q>7>P0I)`;*C)><(NmtC%F1$3(ykt37=eo8{E@?J~|l zLszzPbihg5rgJ~(tfHkb)31?{%%4Ul6&MI6*Jnu*5sbzexDI!=Yb*ew6wwS>=<+m& zjV;NimR7McfQe5X{pm-T8WmuebVX$G^UukhA1IP%iRe^FUxdU~LhaXpcBY$haPr@7 zd+#-EjUHVR2@f~?C{3}Zm6u-0XwsZ}nf#cb&rZ@e%)BwscvQvH5TfJU|1>!6;|)-c zz)yv=3LJR$+116D%)k~dlw_UcXE_I7 z=>vywFEL0&n_%H@e&E@hn**=0U(1UV>Ota|^80bgZbsJ<4pc0LDoz z?RuQbrG-&3fUx%JJqNxCPIIceJw9F{@ zkDAJDG#)p|6y2NhcI0~IFHyh2J)Oe|^??)7Iee?fSOtEwuXYdcGBQsa>I%F<-jHH) zIJS=8wQv$VW3q$pB{O#Jq_>xl%cZ?c?gm{G_jMp-?W!6sGBG%7Z%mYL;CERJ?2(R{j}drk5eV*7pF z3K?PG(2Ej2jKa7cXTe`!#`>XkYorr%f>S67!b*WU>LxWTG)H20zX{nbr6=UkPenR2 zgvDDnNirrgDVWBj)z>?p14`3zSe(Cfv1DRup__lr;C$Nllb;gDzDd%sy}mTkCmZH1 zmFqXKdo4HNe|w@Imk=psh?(-|-*^L?d=v-jbRTSO6Y^dT{jp|mBH4%{{vaC{UC-;Z z3WaGk%5N!3dC7uhQhnz=a{2W)q^sqkRR8KPOV8-A?0)GfW{Ou3VsV5`vrfw19j{64 zBAj(=Dlv&@mC2`mhC_C~G%#4uO_@fJznEC`i|)KnG_+XNE*Hy_4nQ`6D9d_@c4Nm$;?MF z>|jtei3!R)Ise)-l8I?dCjJPy8`j8t>MFYbekpnAA*p)gQCZCYg0-x+uo5x#_6|Zd zVmr->O+Guv>K+1VJi{SOHO7hkzW9#2Wn7&WQ9`F#Dd<6t`D@pp>`vgk{Ew2Gl8cf) zWw!kzL_q4JAL$+kc{=c9Brw2WY6M+p3i>Si=@5M=li6N<{)5@<5)2FZ$t5aKDkFtlX0QjlE<>9s#g(Nno{)1#56SLlpOV(2N93NzeoGcM zG-7XmNX{L9k-@A(I$I8f<6qjOBqVE@S>R?u%WggEUpFIU$ec=T{v_62dZ-;!~gOB3lQ7iY} z|FHb@M?bO%PGjtLd;P|BvJ%s+1_mlicxTdR12qA1@20&Dw1)4Sw1fJtq+(K};Zlcj z#BDi$RL&lITUy&%iOjT`!5;nX+wF>k*3pUq`Tv|l$JHfijAAutnGR^xBHwF95^A%Z@3YYo+N2wg{bN2 zpUKeaQ>^ffNH+cjIT`HC%r_!4D^Jo;@Kfm%7$ut7pw5LS598pwq=41S6ec3tcovt; ze~7UllNGcJd{b}|PhrW*tjk!(N?}BhQIR953o>M4N3SHa3YUZ#VM%V9bS+pYc-7cS zqPDRHLu^ENmhGo zQjm01wec{)EEQ*+fEvT7dWYyrlXMbG59O&BJI_uz3@z~r9P%10P71xzCKv>k5l2mU zl0-cbexjB*LBKay!1dRV)iQm~vv5M*K@$~g9@IE(K$&}u*X{5fjbmWAmQ3Vb z*5w0#$1;JVtgJG-<$$Y@koGAh^tk?FbO{+_G=XD4gmy}o=$S!RbC$qbKP(zfGm{^w zq1Sie5IW2cF+an=)kk0wC3fCoBFC&>$dNFbb$T zG;350-K}^UegmvNOtCv@Dk}iV3r#lh zh*(w7hSZ^#HrD(&eM=9Wfz~+xs6Px6l9~O-^hc3-UP`2^RHG<{x*vtE3Jjp|W$SN? zK38b-&3}L}q0r~{j7cBLa2JEHW_&EV80_TNEtG~E*|m7>M%xK@`)kk2*ie&Hln`}_ zeqUaeDNSdN$?-M@J<}O-vAtIs>gGvJWu9DSa5+55Y%-gWjS+&fq@)xaY}gA*rK7Ex z+2>&?DXUdckQc{fosp+6>Tba+R?cpn~o;9+LsGv!j#S^9di)Z!m=(=E4{ zLa(a>`o4`ZP}V-G0||X0G`7F%t0?UZZc=sdq5Y$+i2=-RIeYqu^kSbslZL5~4iI_g zl8LM|NWVVGfM*}84R62vnvC>ZVIh$FS-KeK`CMl6o2Y{U1n;#r-3&^2T3!*(>)A5S z9tL^o1#i&m7ey!(suEXR4!O0bqnhm zB=pMDubz}o|HiK{sJb5q;cPj5mc1v4c$IqesPr5@B;)OElAD3wP$r5$J}OxSL=VE$ zN$*ST_tjTOBYx?i+w$}g-Klt@G*kNe+K{n8G7GB-7m8_N5-TtI(V*dJa*YQdse}pA zg`(6{R!tZPWDt&ahK(ksP7JYG8BXj6_DVYM*dgV^GgQ+}YO{YN96wFyL6JUE#n2;C zKwVZJk2|(=$^v^=S3vO0pbKn6iGF|Gadn%_MNUxr7VsD2;M0L` zq*F%#5}_)RarB7qtos5v!sp&B?Epp_m4yoC^3+PMMv8Gr5c-M|G9^-x5D}{=Vf0QG z4+~_L^_h4>gmSHqzo=gtC+)!j;t;J}JZpy%T1v|!X0wu!yhh+o5sMhfRd|XttNa@I z7|)Q@iMjv&P^LUsyZ9T_=RB*UDhDrs6V^#$pg6KCj09C4p3Lfqn8s)vr#T|dsXXEl z(B_oKY6%$b8WDzCBEW1s%|%7-K?j5g8~}z(M+hwAaDcPHo>yRE9UhE;=i4EG6E*vk zuf&l%&f3MSmZ%LQ2$F;{lAwobO=JUk>7b1iUZVm%AV++azyrDHdvf(=aK@BV>@a$M zfH{I>fwc#kY?d}8l}VYqi^J7S0xi6w4jQ<+oFT@r4H_ymp<|4~LjxX?Q7xXv&G=|W z=|Ua;s`sV}HNx5ej;tveC_x#_Vh-;;ES;?=)kLsSn`XTy4Yi2sE$NL7X0xA8q>z@U zUzPEPw@NP2gKjJ+MA@#A74zpyDR$qwbgxRb`W0w+##(;le|`Nr`77$~Bce}^mMLS^ zaaiY`!CWDj0h!1uohm>$D5hd6Fo`+KR5Ak=4ZNB`{iW!~yLr0!k!NX2!Sm1JkgP}dbn&&`(;-~Ug! z^iN-xf~9LD6(`2p_kTd@fB%2WvCn*3GSqo=a6np_$xXu{GAX~3hDw*-?|fHM7cP-9 z6sZ~Z7HB?lSS}ntC`bR{-=t>C&C+nkJyQGW&qz^K4YT4EgssHHg29@0jVWfUr?5Mo zoFptP_pVK(?})yiso>0Ogzt(*8M^Zh86+yrl~dd=ky(0(T$9v`E%~!gOB??SQMA%g zxMdI%Guk-4n!ch>mzivPw(!+KL?NpLd6=VgGkvQj3dKD8ZZMT*kd-6d6CeX2y6~$g zr`_2LS2CdMhX!_(5!w(sokh)H)?Wt&x~p)KDzW@h*x-&0)iNH6M}xbI()Wn1sk zo3ehEj)_%PI;KdS9mM|^S;XM$$ljObXj88|{Kx}x>y?Z0`+s~)mfcV$&%Aj`9=&TJ zW-cq`i6?hU>nJi$wPIPeM^;|HMMi0}wCobhe9o~-)-Ov|-%9=9@ZO}Lk*euVUVgUR zarb?)?Ufg>UP@tApg zMh3ybIl2x9a<$Fh^F2(NX#MP^%=T;OELL6S^BgAGb@w+uxmLDpxnBA)DH3UfL@6RH6wbn#$cfVeZK|zW*wTz?6afm9KYdF# zd<*8NwwapAMWIThLTS>DkZ{0|n_cEfl++^xJoRDGBjoi5N#|1aaU0xU?US8A@`dga zi4!FpTx$&`KM_MKf>FdPu=2v$kJ6k%iXwRw-EdrAw5(%s^*Qj0$rVd_e1E_3Mvai1 z98osZpx_{45X>W4+XcLEjTl5kR-!d4qW}%)nvY6ISUMo-1GIDiBt%hq#no~x4R@xX z**wU594(7DgnMy7N8{6x*-WBZU!vs3J*vd#0;QG5+r_a6SX!b-oN*}gETRiIR+k6F zNrDU!ZX74Z4;p=+!|$$P&7zGnoy#nde`hNI)axFyBUCZ;qaPhw?tlppfCMN(?O=9x zA0%aERGeKRf;(`6RuQZoPI`NWZe)Qr)ae-od}ZVW^cP{QS)|0Em^Y^$0CT)Kn z7V!*uEmj1VkCf;ruY&OL_4x!ZrBO0Rr&v)MSd>=oilQ(@atspr05>Gh!w|2{!#F5z zMCW;WzEQnVxxD%ioiCftLG$;TnsIy3!;*$*zMm)o%CMOjffK}un8 zF@~wZmACdt3QD@}96N~J^7xsv(s`M<j?L|)G^0*Tqu8JCACY^PmCELkZo&wrOGDbYlrO->{<@p7&t-;K)d^y> zr!b3I&%h?5ajCSS$X)sBKTFwdnDD&&5jlz@=LEaG=CY)pKRqGS%@<{WC_ppADYEXD zJ|j!-zeh5Nr9VWR|CX0umJ^@*O&Lacth@I?546!BWw_x4-TcIsKlFI*tk zt-n#$UYE|sU9|mpfizvdBoDpoM$Cb#Hz%?NAKJc$tNmPMMZ_=pcD_WB6A4Snxk*+kR$t#$vN6| z7!#%JGMs-|rD(x~>EzjqL>FSCJ!mL0saidvWNlvaAB#m@7XOCtO%wuz|bgUx|*lo2mOkv6SFDf`kwM% z*M-dfpE5kVnfb@Gi}0Sk&G;ov_tEZ{{mtM$j?;VE41-QJ8{?a${8I59N#lEyN+(Fc zhhwrSiSGle1-eAQDuyhom1Fa(WgJ{Jqtec1{a+u0)@K*Jy0nLc65v6RL{>Y3Vx>i3 z2e4+LGWrK;8G6T-ZcdT;yLUC*vhpmB1n)#GJ)*y z4bi0ogE@Si42g4urq9xj2;%QJz!Nm~!pE{IM}!s0>G(w12q8`w=sa$?iy%TA)yfhD z#?H5|V;#!EHMB{B$k|H3l{LDYC<75;QKA$j7l&9+$WB#L1wVjm*h(B! ziPvT6YvF|Z4f0-|IiEr6X*`)eYvxLU@4{qtxBjWWK>IJr}}Fa1Q=b5bz)fm~r02}ftq zuXGZwaR-q@h}%sx8&%FVoTAdUboB5eUL-~9S4-#KgOYK+MgH>3eFzG}B%3HKR@=@wav2V{pIc-OgPE(%-5q%wSf{ua)FZOf4S&zTmwp3+}p`&7R&MKK>rU zAeLf&aY}Z*@;sX;%}C>#bux}_F?xhucb|A%O77e$3s8{SzVa0r+qp+F7Oaq(ja#H{ z^UYGdYK28Z={$X2uI$;5Vl$7y2jMP}Vf^5JLU$HO14{cirb814PBUwqj;;UqF?AXw z3JNp)D1|A6Oiaqbmx6{)WLgwFnyHwI{!$r(Y zA3rWR3=StyfOD9^9Yld6;ET-+t2xL7_33^9>7+BU{~t)l=~t(3d8W?%2esBKj{1Y5 zehTBGXI$d?Ch% zFcB)7k7CdLvRa{ofJp`_>EL8xrZ&lQ(7Y+0uCc9cIk6((cJ9>`guc#Jxp?M?oISCR zeFV;-(3VP3d7TvCxL=OqKS6lXPFBYby#BiE+qMHgfHvvrBXsCAv)wxIQF+)9Ze*}s zHmt~!2ku%V%Npz0jd+#pJ=}qxK!MzT%LXFoBuP1|TU9uO_Yo3xe7F~yUX=4oa^VcS zCZ9PVWu;3PJhGxP#C>F?$|pYcIay18PC_AHTvx#0Ekj;>@l|>8nJ49JONYGt>VA3s zmA4ph;5R^|qg)(+=MkBy@6Fwk(K{k}w7K@9DOPWi_1mrQyY@pr5Os>b>x$MTdHzZL zlSD~E*GPyJtrWkJ3YpBU#RO_TD?gY?O?G2C2QJROGLR`F&$6>F zivfJpBxSr?#@DTqgBA1f_+{dX5j^K6`nt5@OaZgX|-pooUa1$~D4o+zHt zl2f*jl5kfp{&0Affsx{bvT)ThtzDy~74sb)Q|I6a%P6%rmx!)DYnMcs@(j5+Mo33| z!c7Kb6DDL-n)ngRg=9b_A3#yX5g^7R8YBeRwUB(7FS3;mKyhgjR3YWtG{_UKbEeTRf;{gx@&_%JJF#MGWd$Llldbm^+<^lMbO{X zfa$JtvH-7!%;KRL-(LfVKw)?RS%Kggdf*xm9ibwGk_d9G#5)=QaBIdd)bCzmlftSo z#_@)VrCp_QdY5)IdN%G{9Ctg%=}Eg1MU7G~Skmv8~aB{jb zEAeQKnX(A@F?xR7j2T@Oz15`+RpFY@zmWDRFK1{Mj})+sNKx#YVf4l+aiYLxeVLI> zZM!19FYja~T_>4w3}(jiQgggy|y5sE#_WDYz(&((}6(Z?eU%>!i?Gj*^jd-PBuezErL&%UR z`~`+_T7L8JKDmEmiL9zBkpfH%Qr_Gq4YxjkGwj1MRGKd>2M$X0tvAW3(?q^O!B|vZ zC(Rcx$@Z6Dm&*D^S%STM_l5H^M95N1kfr^Zr=|KsA7O{z4@&j>9+ic+Z9(C~iM6+1 z`cN7tFw^O4>$Dm6YV7P&nJJyD#e@l^`ttYLOied9V}^8S-yWu7i73NtbN&N>uNC?t&$;63U&07kHcyr_j-@_~jJ8)+CHB!wm*L((y z<5bRMJElR&wkJS7_9ps+J;Y!jmw}r44`ed{%fPAF-3QMV*)!oWPMFYv`cfRBX~$k> z#Cw}08^4J~tJkw@HHt2gdornK4Ey<49{+))&8v}HaO6I^?{z+OfN3L`_kY(RES&YvQR)!E}R0{>Jt9jmBbh?xz84hH2t z40JExcz)=`SLD#s&&kCr1JXvXn;>dbFSGtV?8ZGl-Y5Av!_v4gQ`WAmk_ELDa;1Al z_MaY+H}^Hkfz$Xhuwqfjz-T^$`^5`NkZVeg9oa48Bds`Nw-Q>lTXGmk4B+Q;^PTUK zb(?RI1FvE4Uyvm4`N+pL7!&v3C&x}V%b)!D-^wxekQkgukzjO2tbMevYf2v|DK+Xz z>zkBJ28>rQm3w0}NnUGbW3ld0**7pHZ{fv%X^aiyvWPfTwt`)TG5zUf)!^lEnQX;2 z2%ixRKb6Y990T{a7c{!;^(0JaZ|No22!z9_Lm zvLL4O4Nc=aqfx5puKtLts|uoCyEl>%jz^7wY$8M}XQfM{2VDcz6X~}PJbxHo5L&BJ z_*~*pe}XI$NpIMpyFy3rVIE(<>CvI>U`JF)F2-2P0*c}Jte4U5(@^Fh8E%|soKND8 zBdRFjY7f~+l5k(XAd27bWpX0B=N>?D5#lh%)19N+kM7x*MiqNXpVyWQvPC@S0uoFk zt`U*pChp&OfIpXo!b3OE^xSgmpK}lrI4CukH9$8 zVfj#ZU><16>z@Z(MkUd_2U?K>1W;6_5}7=dJ3NEv$-}wEDsX9s<5?=Er%hZH=KkC@ zkxt+^@vK&G6YzN5#@h=P;k$&%=ZfMyNNYC6FT$}RJsAWvm$qySKdRpety!xp&QmLy zOXv6*wiY{@K?*Ny zbTS#7vSBd&sOWzb%uGxH`kATg!V&OnN1sUBh}5i_FSilt=Z1BwrE$q(si~eXr@Ff2 zkBC^4h51I=s^#)W_unh?n0;5JM$H{eF{K{&y@Iz2qSc`An6iyRrUMRDDgpCDFY*Gh zzrT3+uq?%dVM^~A%~MT8w8hL6MP~<@oQGJw*hF~GGx zMae+1JcZKt(Y24rFMZ-czEP_5qww-0s^%>E(Vyr$EzRHh6G>V4kjRQUDMtBD&6;O3 zw7XyUnY4ZB>vI3MzbiG&7QXU#e@p!KQK{W}yYvnAFlZRWNm}i@i=>u_KK&QY$?4zy zf>hjcr&MpfgGfD%3{0|dRxFf$9B{Y)_5YFK?T2N{zdtU09hV4)+9!?oy-VKs@?S{f zJ&!PR%r2p4Rff$Qgvr#^|6>deT=;Zu9t>S z{hE}oUxiXjJ2J!1q%-#ivbB}AwLTYXb*JovFSKg<3fCe%fk)FBu9Dib^$Le7>Z6#5 zDc>aO&Qiy0NK|PXXO@}e6jK~h7?|lZv{_xsr%{B)h%nQ3=!o`yNBaH0tbP_FV716a~Cr6;IlrkQx2~ zOi4v62fXeuyqOh5e#7N zbVNqF&to=p7&D$+b^u06hW2c$$nSmjBl6Kt{5p=t6LJ&>+R4GovTW^2X=-YbFMa7- zz$Xb|T10#Ucb||8U;V!1ZN|Br z!PBKzwqe496EtRSGYnwVIN$Vg+EO=p(}AXjkX2PYNuT$Ed>O&7p%VvrZjVj#P_{wK zrJv+8=vu_ag{5pfHnHsrU4rjQHYR9Xr|Cb1cjQXTgCCUtJDe{SIxzsg_Gw!MV-RNF z7_RCMltM6s>Bf4Q!YST18Pt2z2dSN3FZ@^96b7TZdgUO%bae_G4gDF%b?MpP;=s>c z16L(8h|z0GS3z|pKzXI(sC zS_d2sboJHoxfWa*>Yuy%l!I9X0S?Gjs0mk(rvbxYN)%8+!sP>xME#D$D7|Pt?U*Si zWv7h8A6El7{8+hx1Fn@SY8+SDggjUG7lS#XIE~^5iUh6lQQUZ$%g4{WA+t!dZ0_-n zRsf6$ZtiEyv*4u(hourH5NBb6X2gc>$Q-R;002M$Nkl%{ydZ)K82A(*)TLMQy3lgu1LA19_ZChJfj=`m#pU`f~FFmyO3<`}3F&>^M${zUA`1cikc% z`{+aR$&YZmrol^F^Nk zd!sc@xz2vhs8Y&xdJ6Lqw4WrMI^q@1PL6n~~l*b7* z7f_fUD!cv&GFVE*;rGf@&q_a0Q-boZJH}3+IQB4e+Lb&h*OfKOn(J^z)n=RkbU=&0 z9G2c)+nIeIlc}^(Hs!*Wc-ifey{I0RYT_c&Nwk*&?CQ%FHAvsQ969_ue}Jv~-LmSw z`=n(TW)?qvmT-l|%(tdW9*S;CSEqFEKa7%+BiDcS^HP7`U6O}lJBduaO--`*8{d?? zy2XSeTqv#Bo_Dpiq4+DPPL{xii4<}@?y;}gR&boR8Ae){vW<~Keqm8*$z#C=a;FR#sG9Y_0&K5)%j!$#do z5u%K(0x6y$D=x@N%Rg;qHUAlBwL;^yANjX$$jMh`@jJZ$YVvU!%=OL8&}y*kK6#z8jdx^(uSoWnG!^>T}vxl2CbM6_FISLhd(2{XJaX=Eoxq- z&p`*^`mQq2=36#{VqQU1qSb2_N>vS;(a}fq$_k`>Rior>T4$>k*+h=2zUyv$Fq&li z^l?ey{nCvBb)cl*%YdLez);b2NW>wuRY3ReFXJtFdu z@Hkc&P7oN_(-@tV1>`vu1+b@gSv_mZ=;41q$XMRvTiPM`f&_(8%_&pj1SnByfVrCV z><`}{vwpuq8P_14yIZ&&Q2D_?nc)a+V6_Srv9$sJ*)(U)SXkD@%VlT0#UD0ejm*ecgiWI?A z0?#khr*{>l1FjM1iU00T(XOI3&iYN&V=mvo%ZmKH8xB;Sb)ZR*`!Wx3as?Tbh{O0M zgfbi}3bZjitH^G_(fPbVltnCW$$;-Nlxurgr3qZ6(=}KJj^MN9h{<4hDq8~PNR1J2 zpNo|TT)n#D7(Ea}jg=|Dvw@kz4RoO(@Y0Wd;O|8*{FWs$F1=T1i_0*M&Y0n#k#Vn@Ibj%V=x$kDjP-geX>+8%BIF+a+xa_HEA*4w6||W?0VQf+dut_jBR^UGB6pbS-(-1-mz6G8y3nS_U`S3oILZ~tCGRWKw&MRQMbJy z7vI<=E8qL5l-#sQ`o8gX8RA~X+AmA%Km3FAy@G=(yYD6^rAr!{L8TEPCyg1-G@{>R z;Ov=!Q*EX?)^cw;!=H5I5RsVH%DON7xvY6`EA`+fK>JPWj3X_ekHEgE;aTX_{_`$z zwO+$uL1*`^PiQg!d@r##H@jseOG;C%ZV|0>`9@;^!w1BSQv?Ua@4*2}6*nu_sT+61@^uD8s;+7a@)0H%h` zyAMmv_1ClV!JY)X&l5WEX8@?HO4eUttvysHXw>}8tqM{d1A%Ft{dD_?Ok)O=gfstS z8}uE7QRR6jt1X_Ih7oTzy0uucRuoAxJ3=3sER~bvn4ht?i0)RdtD#z%`+i$O zZ%2~&<`J$al0{+mK5@}+d@2KvX#yuq)l|p~Z4^eLL2kuQqpxb?xPgGu8y6DRWOmh* z(uDWW1Hp|_Q94F$GDbLotrOCN;|!FS<`XcdF*wky8C^wR78iyCSC8&IB7+^MUF!9D!@901d4W@_OqDh9RXAyL1AQsKLREgQtz_BmvLL z>C1L-Nz@oH!qww|5Nfp&$H3?Un?Rw@LaAo+bkx3U1l0fb`i=$wR*`-r0xO?Th$bx? zmk>Y34b-D z2&PE-&;JFY=&GclT+Ltf1qmwt@105kgeD6^d}Z ztvn~NzwaWReGbd;Gt{L!W%jTMRXaWe87PT5%cw0l!VmqeE2`ze>P%^1Mz#1?;&ZxyeAFiXvOC~FAMLy9mQZ=+GvX*9P~~;^OO|S zE|>DPtL4rA^>N8qybMM1UDErr?@J%EtfecLv-&{H_1AIsC5&cz9W(bRDoL!c=*Mt| zS!$h))Qy6yZ|GDuzxHa1pgW^ZpE@e#kNv9L_}ibAie>e-1MiH^lrkVf&$H(g?3wie zy8cChwGJ0Od|$J^5T32kx?+7MNMMRwGUhdtn5P~3{`aK^hf|GsqXUudylg2fDVMy; z`O=3e&?Kt@mtS~64!-fK95{PUp4tAo{09S_L&wfaI*z>>eJGz*f>a{TeE)C1g89gG zvU~$h)9^m{!zZN*pMex?`m^(MacIt#n&m6y^f&)mX7t%!Y?4vz!&9>{YoY%P`TNY| znQQc?0u;QYNmcy$LUTXdD&p%v0W&17xg!ihJNu;v<$RizpS;>CDXgkt5Y{J`o_bE& zSbZwQ$-Eb3dfyMeC(Zc7Z2ZL!$!%NjL!mE`UE5z}^E+(Y`wOLJ;Ud|za!CIDTNfmq z`!CE+!R9_$YVxKrqiNQy4p@oGm;UxjfpLAh5G=+&z zI=20lIIve@$}&Lw{IjP{%g$|Y$bmOsl~&}LgkeE>1*=&zthltwn+MLxOK+W!^Ud5h zJ|m-;Bvn_{NmcD4Ieu|Q_MW4Crn002yZ&jSPPMgPVQ|*TCSB~9J8_xKaNDFXwTD@6 z%$ab|?in0mrAp+NKlxdC=#ls1m|MbXz!53q876ZbJ9R?3XwIT78)PlvY}J%TBNMSM zWBu()M>pY9kFiQbxKm7=)ci+H(g`uhksRJ##M9 zpPU84Fp;WCQOfc8nC|KzauB9MH5vHFR7u*>d>rRBoT{#%iR>CJl|cp%nJ3SPpyW@h zle)6xT?+4z^(T8VwZQ%iN8h1vOf!j*(y&0-=GX>44olx4_a-@+@j&99O@}akp5E>S zPKp{>IxJVJ!03FOs_oudN4vA$&W*vZRac%EmX@S3T2GypJ4DvZ^y5&%}QxXuwq zg$vaiji+^K(OWBo_X6zCrX33@*E8%L&v7>hU124xQMyIkGQ@i)T!w`I3 z#?>))92H-Wz*DaQ28Jf1d<@4ED~7I0yR4oKN3Z(lt_CA%kigqt18*m{Q5X*=k`Y-x z@N#%ss)s6c99m5zn*%7mR^iGMd@XMT#?}!Vi9`07j;G?$IfKZG<__PxZGzOL^+P;_ zg8%zB-z2v;HnIb!&b(@nPTmof&Hq<=lL36A^vrc|u&}aHmZFsX!#I z6nk5+5#PCs6^L=Ey!SyVuBkDb{$l(hE@8gYak1Ux-~OrpCDreKRIVdle{a(nsamm0 z%4y$ozx7!{VzPrVv-=|`bsf(?C(}bX@8-;7S5nNHhA^^5xwCu3WJwPl9%*AGF__Wm z@8k?l`57{H{)E*0{vXN8U-|_}XSGP}?$wk^_b!NjDtJcjM^J}c@S^Rbfq`s@*0lDtl!rM`I?tqsFfCaV6PR$M$)$yL(q6Yv zPL-C+sh(aOZUH4@pMX6&WloHRp3RrP02aH;Oi=H^4nP#f>!i z6zbGSGASsbc~irzrc6l(nqNJ>67~3I^q)Q_)sMbMit1|R@YnxUa_bk#^&kEaJ1;Mg zJe*9cku#5W-nVP7wByjbZo}Qu+;Ry(k&M+%Ihz_B(FaEf}9}S zt480-r`={)S-66Nev0y^@Etj@uT9!9?U{!oZ89^>X}P5g3X8GR&yy1;*oy$?<2)Sp z2Z!;uxO~ZG`(?CU@{_JeNm>`HYbexX3vc(EB}Hfb_4&H51T6&o%z!xNm_aS?I zq2%6}E18X$g>7Dey+5Iix8Uf@Zot#T(6nBo|KO0ZKbO*uhiJTK<{M)<{|*^PpXMdVWEXDz6_~T#9r%TOMCG{YIjT>;KT&xQEkI`19&&c|DEdXZ>Imdk7Rtlb zVTZ^*0d-cXmpe%5aAsk^Boe?g461%l@)TU_#;78JlSn0QM$03il}V5&swosZ zabrC69gT6fj_s+8V+=LH?CRA2{{etjt}k=osV{VN=u55-AqMm1_VRl?E!TF7umX-k zJW%nYTaC(L;M3vi&}Y+GHCCYVIB6U&hZphoIEo+1=kZMtE5AlrOa_nQ={z#P8@z#u?$F52n?#11^=lyeVX7O;$X31#^l$Xi)ngEG9 z9KEZ%bj8UrW`<)e%o zAeNk6MuGoExOxrWUM;KJ6#MWJ>J_`{QLgV^x&)=2*)V49H2R3jr*&w(j@t7Gz1mk| z$|m&ngduD|A^Zvo@&wEF{~u}Z0cJ;%+;>L%MjJF5-3@OVXm~#Z3}!Ii@2ulG?vA)z zT8X4cN~G>c>ZEhukvfW$*GK7iON!)jjn>b4Gafq_i-8?@@6iAnroDIf`$uNhtJj#N zhTm29tIUjyh>Xh0s*22vj9kBXq1Cep*9T*h*zj`CGvLbws1CVB)CXllF$ zUMrYQ7($7>vSbl^5wWn2S%Gmp{FI|;mM}A*4}JHmZ`d_F{!}npEIVOIDaD|Vf|oQ` zvX&R~Ch!LKp%~2IT6E2)eRlEF?9c+X&ihcN9w*0>PO}pdD{HOc!HS4~35m%2ai2TxjvpIL%V+%g` z0o(WQ|DDxi<2=!Q(@y-yf9Lkb6Fuxk`{Iun#qPtE>3o!aJo#Yg?TevVv?@iw7cEl{ zYPa4^bVZhn!tBKu6)(YC&G6Zyw&aig#MXTBBg_`iUtr|i7cBbKt2%jy>E?+;s{7o% z3?P*enuyn+}74s_GGvdKk@7AU;M8u3Z)~po|%9$ zI-!?$p=j^jV+-zo(3aeDKcm*2cI{i=vL-rf_y6`kwuS6DFgAOh-D01I%7gpa#0%w? z*{JGa?7JyTb*D9$x;8Z~HCO%Qg{Mq=BCzOqCax&^QGN&54Y_&qMmAz=WAu1{`_gYc zmvD8vf(~&*qjfN|)P)(!iCu5ozAt^n);;yKtz5gwj_iK}oBikP;m1FXYuP*OGI9)! zVS>e?V$Eb#O$^z=qwQ`lKa&pf5au=IbW*e^S_)#-G|ap(PwMA+IrPo}+x6P(_U213 zAt&C5Sj^kdf-=g&-Xpl#-MRmS?LT(WE?n$ECQO88&timrj&+wZlTkX&dM~n|m1pFa zo?L9d@BunBcvyPv;58fVy@=POPHU{VW=&PyR$J0*W9)X^%?v|X!%|zZ@gcis-g@8Jw|niOrxhP;=*9*7@4o z%%ZSZTCH2{oX&!q00AjwrlERMwbgEAEfKpDS2S1Q6{?G-ch2gTY_bv*e;OqVuz7!Q ze|kk_-51=YD{zw`|cHJZ6gC(K6&flCH<| zV_AAPrz2fPq)y-vX5~gMDebv2Q3Ok5p@39>K``=)a6@jomO!a9^^)P`1a*WgBje>5 z5iOUSDyt)WhkT9})kVSH&AUR%m+2t~( zMB@b)U3b2cogQ8=%Zj0L3-KJkJQENKS6IkUEU+xV#34(0BnhA6{T`z4u>(-dJgX!M zcEREW7s}(d7QqVi1$Yi7!oV~I3E*%w5?y1W&B_-Yd0A1;GVpaAaU;{?5h)+{?2zkt z&aIePMq5lbh39*qNwT}J5-V43fp_6r96w|TIm0jFBdGFH`Gf^tQ{V|lHReRA?wq0+ z7AiuR&RM0fYqfM6#C>@z4OXr%t0~{@m%U$xk2AZWOhL7c8*Z)9byw?7pZR9nPB&+^~>W zOn4zD-i}gY%NP}0jETd)`N>bPRUfl;ix)Gh$@Du)4;pHa4csyX#zzVzk&5t_ z2oZG>WL{KXKi$?YZ?hvPc~>zFXh7LSW3%2jcG^wsi2F~ScEwCCE@k$U4(CM&qXCnP z6^m+Y_+kg6{n)BEP{Ighv9MU11j$CDnohvYZ{gRUO^Y_*$!K6~#Pd{nD@x0+3z`lln#BaHG&@w6dFaA7_pY1 z7t@?dMrS9q7#Kxw`8`{0DQhT}K5(D4Jo>nmv@tr33)V75=}Tz}{^nH^=a0t33<`05 z$@t0Z55ltu784fQ&eeIdt(%eH3%maszx6ubGCQi0UzBzf#<6qf9>0N`?-Nz%(>RsJO_87^}d(H$xD59@W@Hq zz55^wJ{ZZaYjE?V$=W9C9IB!HkJ-YOT6S@6wmSgRAOy}zqHuJSJ7T8-mw%gWwwy-zIY+ulgr)&nDo}P0TZG3>)3$-tvpE51vZPeoXA*BwrD%9VeA z^``fho}=(15*{;e-68IeR|YMPC@+x+Tg`A{F6(>PL~oQ1a+W!TNj~X3oNdr4ib}}8 z@11|3R5{xGPJ;t_pSq+1>WD!W$Xc5*Qt0&g((-kc zG0&t)Yzp@coE$HY#+wqrDU&cGF7VA_0|h{Qk=3*G;+M3z#X zLtPF>BpLZ7*$5*VSyS=?amdf|9H3@=Q{ zj8`Z-K~z>MPQ-yn!bzd9gM#QNftSN{-GN6)rg%XX=ONaP8S~$R%z;GsUP4irl_j1+ z)X5_Ro>bbg3i%PuGdx?g1-!r`l8HFtC=yu{1(-{_WCA7p3^5cIl8zt@r}r|`L+1z~ z;jfzX)+Urvrx9oUx=~;sUN9dMfa!WfT?|oW<%1*dJzA8RLNsnL3Li(|m-C@nf#TMT z0{{H+qjn!VrB1J5WIl)(KddB>OPv6{9mX^j4}bqDE0pRp0s3e)ur^`k%$c_T;w3gV zI&YV;{Xcu{hHWV$&x`Kbiju>Qu_xJSc-Jm_=Xd{^&3xc7 zJk~6+8ss|mH=ng3{3BMQ+>NqJ@$_YFcH)2eee1n)6>}syKPRr(z#_~GP+n>oc}8uv zn~d65U_V`j@}hdvqrGF>U9VnvFA20Ce%}IeYu%m+d_6Ob=tK z)yciqp^etKENs3}#`q26f#ntpw@2yZsq_aPe9+oZ{-@IkT8Z+n&YyO_?dk5Zx8Hsn zd+-@7OzpJYd-qz$-d*^eM^2Q_J#?Zv&Yq&f^9h^3d5c}84V?ViSKNC{GoEOsW3SyX zZ=SVn!GjDlHl5%7hR^IwG83S>@!1tM4;G-h8B-7zFD`UKF(oPMWU=VY9=qIg)2@zS zB7zcB}KWZP@at zojm-qU1q)dlOKG{9@&aVo-6&f_g1BCTwHIfmo-{bLnS-!USo!!%+8;_YWRV>Q8Klbrm%%;%&yvsd4FiHtA|&jm>`UM~7X1ZKn;fHllWbN@V8h+#tJf zuUKdsw%v)>pdQ=LMraRhTa8)I`{{htSq=K^bd>#OM)(&q12(H^4jX{IZ9o3bx9#3- z_wuat+O;#s?b4y6_Ji*|XWf`#jrR|Fd)bGX)bIY2U$Q$Mc^`Wd9AI|slC>;agxgrW zd%g08o&U=}cbokZ{QFPho>+^tYww+H)yo;ZUpt!);zAo7>}P)x7FjQO2yaXb7F;^O zJ^{?Mm9ya*o&SkRoEf0(mry5zrSt6VraNsnE>mln*%-lWQLS0efd6RIYP?R`GbyD z-PId7Qs}Y~Jj#V5;$(_eO6PMUEL}tq+mJ|EPL&hLqdAsY78mN^3=qXpknm%e)mD}+ z;AUbMK#4r#lWv4N6LJ2D(YqBM7=@|}^%$^JtNA0!f13csypxKkYe+fblCQ4<-+13* zNqJMSe94Muuj<@A&iLeD!WBF#FE4K-2r?$>yqrN|XP2_!mR(bfgsh^gbDSKB#E4f_ z9C5FQo|{hMlQ!jsb1o4-@t8t8wVWVcZ*DALF!ck}`&jGuh#`72N%d zJU=jt#g`~z?cBgCj0{g8JHq*T1NmF;r!zB%8Op;e=h!_nQSc64u*tInu9%{GV=};t zTt&o7^hL8Mf)y>zcJ04^-pbZ)w3QFtZ}qs`9LH5)_r=RL*nR~?yviDvudy0-xh+Fk zXliS<0o)5}SKju2_a~Tf^xE|=f7N<%|A!&GO<+P&!sb>bXhh@Gn_N%go5%(!SflT? z%#g@@feS?zPSQN|3xJ?x#Myw-2Fywr`EUG%e`xD}>F0bMz&QT$HBzaHOPzplUE#uX zE~{kMg}M?@3cKaHe^c21twS4f%Hjqu9RNGbOLWv3TE_lL2$fBD7d?U`r3 zftk-V8>Y_7(Fx`D(DflsD(e=eIyX=*7cE|7TeseA%a$#(yYIQjR;^lPCypQY5#kya zm~Ve+yB#`=uX*m_x1afzojH3JpZj=aVbSj;Mtv`T=NTKid>N%18~;sr*gQs~`|vn4 z4P|cm0}s=29I~tDFJlff15+C6o6hOXw#C-Tw87vjFJc!z+a{@_cq!a-)kwG=U1osu ztOM5$!_`a?^w877I>e6ccoqA4ZVodS7%=(9VD-#y)i$=+#goVEGM(FZUU|h%z4el9 z{qV12;aN z!>A3jsg~7X-%s6NxpC9ZoaY`-@3k$P7TT(nYi-($7V8?Uw71WUS^vpl7W&rNXFhp{ zt(sSBPk(g1&BKiB*x|#hFL=w|Ik?Yu?buS=`II0XixjERuf~cf*s+xVZ@%9Zani_$R;h>nyfkW_xfG+jaT^ z=1UVSzMf$Nr!KI@fRTIFHB`4%TEogZo3XCV2H6m9c<`dtF2sC`_e9UN(>%-bt$x93 z%!gRG+;z^%X>TQL(l)`q2eL^V$NcL`-8y@9##-A~Qq8&ueGf1(B$TVq&=@ z=x9vx+-EGDdm)u#A=EjRe4Bh^`E!&DomU{qd!EQD>*^`s1di7wPs$jIZyM>ohH zWeU2%6x=*f;!o({{Ix{90MGMCHKCjk&+bvmiaA;R!#&R@RZrlmbB<8SShk|d3%OHq zZif~mN|Yh=Gnvjd@^Kgdx#HLOt>ys$RBO`;rbba~& zt5Xqhq*TiNXcHbuwyec}{`Mc)oSXf&d|rz!#y9>nl%4Xb3jCVaS_>VH*2a2!cy_(r zKYxx@9=~KmKYHCN7tXWsJ~TUx1nXIk^`WTO9!iEl6_{9D|N1xWDw}wn`oll6Y3uK{ zI$W||eS4QJ*mk#Fc=>soxAk7Dn?2o5{gBPZP8_$6?|u&x1YDmUx@aZrjesi=v@R6? zDn7U@}2 zLOsS_52fr}TaKb#iP@6yR4wkRQ5B+cmBvOwvk#rOuGxS4fBwwA@YkQSL&q;*l0&CX zijnG$u$+55qD~k`cW1Xf{O}{T7E`JF?z_+L+rkA48O5%(D=hfbwH`cxSEbkAaFd|H zp+Ve(p0UNPi}7{O2(8+lIu>+PdKWCRN^VL$9fYCwcDsQ4)RI{XY=|-{x!>9ttQp=i z$Ew2PN>vRTWU)S?ip8bvU->fiHUnPBsf**#rDg9rC4g%qD1Q#Pni`r%UHf(4iMj-L zpCA48Uv<0olVABhGdCqHOg>@5TyGDZjy}Bh)S)nM{ou!K{yGtSsaMkn+JRBC-3yx_U~S?hwiAdU--;D_FKRDA^iH!L5c0R=UK?!ap@So_y_IW z@pEh(cb3J<3v3Q@Em^aM4#k-D>^@`08 zwqJevUfc5UX50PZ+l=%-Z$Eh9d)%LyjPC!${^HL*ZwHT`u~FL8TJ{TAJhQ>Ny4&%v z!$xMb{~fO#!P}EI?V{sOr(!-GId!@&yu96pzxZWqd;C$GvvPy=cCthE=%9^XxMbrS z7TRdtur<=*sK$gzo3Bld-n41Wi_dn z+o6W__Ty;_@MwhJf9|Q2V;`VU+t-hF8bVsRr^B;FhFXytQuwK!;>*nIOld#J_XZcA z?F3c`T;C!87U`wqM+(KCLpULpo%0H307hIAiuo(eGxEg5c|VL}hUo}_FkyvMRuI=n z+_@$ee!a!ABsp?wWso)FlPe@2P2xtp44p_U2J8eC_jf@Qzl_hj;AS)-FJU-Qq;puz z@E{M5@`kcQMuA5x+6Sj3sq#Z^F-}UQ@OC~aM;tvjpd{&|6y$PKJ&Q1-iMYB~=}-qM z-~~uT35g=5I^`r{wZjlkIU-8A&LAcVSfK?7KTqShI!y%@Zmy#!JL9iL8}U8hl-idg z{~f3I-T{E+ZHkl^6uC=4FI{Qj79}0#IgXPdf)p#gkXb0lVc`_W0-aN2EJ9hr@+0y~ zN@@}AyOiaELMS}RoYLY|xZWw{PUSBo&5pBeCZXTbSAAw#8Q+Oqq7ZUQEza$9n=2#Xy!hcA6Tqk~BTyYrWbEJp@ zvw%W6T({Sg;ttm-#uLw2ps*w8_VOZ56e0$pT<0f9;+L2ZMp67p%cen{8c_OD=%wQE zNvlEWx{3M9O1zOY$$JlJ5lg`fkE={}D(v;6$Lwdm@MV;;ep}N#)2`y(r4@hUGW!UJ zKAwET=><%~G)KP9$9Vyb&~cE-Pz4@Ee1y$q)pZA1D_HEOqm)thN_?<~eF0Q*(B34b z+z8e-v&eJFQoH%WcdhdLb(_WRs*Ax|!Ut|S3h^qmy*4(Qs^9*sHQw>0t@`w*v8~4L z`3>xV=i@RIr7QaoimA${h*IR$jKu^iYD*af9o>J7PQxO*_1&-9^oJg^#g9B>$G-G= z>-w9&wGLd6cD(kwb$|c+Hn?veva<6kBh96C)n1=^-vthw03YzY(?E6RQ zh;-lyrUj+2AN%m1{nXE5LoXlj6YeFZ6B8hH-oF36@4KQV#lDJ><-x%LpFPq&uV>xK z7@m22=85}3ZMZp-c6q%4ehKDS^Qp5Q+@#jsd%v~Ox#&K9iuz*@1Ujx)54=O?5x1x; zlCHv*d^-D33}H@l^LyXK{Ufsg`2P0`Qd1IhE-sWo6u$l*zz$yD!8**D&(Qe#goWp0`HKyJ~SCdj7fRtmXYr*yayD#m>hynB`B$<>q`$PWtS*FMgJFBdz$* zzsqi1++i>8E3xNxRWoWW^AbGlcbD0z(`W5NPi(T;O=|B$wqS0x-MO~OU8wdBRoaCc zrFQZ%{`AjcLr?i11NS2zy@OHs0XElS_wA!6>~o*}D?5AWMLhHz;_0ZdrsjF<3s7o@ zF&o-&*CzXizxg}tu)7Imcn}?)XZnH7Hp;WQA0PdP+4G{Vb~+o8&Bpr@iht{DYyZnH zxv7F)b8Q)mcw1O}{MsA4?FchE)vTk~ z$}Zs*%x3I8#ztmWM(x?}zm3T5K&#H`v>|4%-W_ z@330jwzgsgxD0Pnb7|`(Z@q2h7q3|(=17AVFWA*#_HDR!fQE9-7H`{(ebFrIzjl&Y zAJ&3Y)>|L536qmOHf>fbk71b&-MDPi7cM2g$&MYtYga9^5%usYYqs;%i)=^D65C(K z{p2~S;#wzky*!s;0ep;W=8bosch2>W@VK4|z2^xP)!`v0H7Ff=r{su1@J0Owh zeW1-S(wKQ@$jxnWDbjk=#tZs zIORb8?09}&D@_FHs<`k(n`Na)QAS9p-inWWI@MJqRHf=jd@_LpT;M#lHwrNyr`^kw2^i|qfq~x3 z2vMLp+W{G&NRv^Hl&>tevu~Qoyz#T zcumPmJObY!Q(!-Z|I{*L9VL0v)wwK1Wk4AIy$+P{Y@Pg{Qy%73C74IDYjpk*T)1AR zbUuMulmgy?YvAF$rj`*3_bg|dc>7bzi5FXl61svKV6y42g8x}Ok!Uy9mF)D}fa0#j zzJZTMNs)$+U^C_xlU-f567!h*S1z%cjM!<%&l>QhN%_bbM5@CyvMQyoqLNW#HbW|9 zn%@;JT@ODU9&l18Kpubu_di1M@D05PwQx^<#H&z3J3HFhcxn&!z?D{Z`8qp*UbZSm z2g~s>UfMm#BEY%U`NMBn)z)pc;$t6UqolShRg^(ixL^3 zFQbD{#%M2_AOzXQDy)kU>%qYu>&9NWq-m~|^s)KTjRC8`ETXi&$=!~61!+V-zTCo< zacw{*;N6A2`E-=?Q9k&kDF4-6jNq%2HM`RKS1>xhsL?JnYjFZ|lNYa-v9oZw%|J(N zXY;b&hMTtHGrwm`AA0}=jmZF%sk1xZwhMcAV)uR0PQAIqDo3iUWmy{=n{qEPPZ~qH zIL2;zYK8eFa3qz|Hv+f;w?pnNZi z(=B+Fa$j1ofxof+d2cXszk2ojSv&Qw{>a8?lS}Sq{{~!c?t|w<9Sd!1W?0vEUu1Nd z5oPXzI(X8;)a*m&jE|7o8E_9(G>+saQ9w&EZ>pqYd-*%xvEg?PS`GD8+C7Z9Q;E%( zGs~`@I&PD6cxqX1aN*El+efEr*Rwxl7Gj=#{8xV4>Tp%M=gpnQ{!?~!u*L>Za7Ss^ z)0q{z+Q)1cJMKRI*fx9c;YWOD;EUJUB&~xE!cYUdBx}t}oqgny1@_Pb8!#DSVQkkG zJ9_wt{nh{bUzlO(wdwUO+~*1#Lcw0XdbNG*>Cf1vyYI8t|Mo|A=R>RQfhQlwEa-qe zk6h>23~LV?oPGXtFXFA|fbDqoupP%;?MgO0n>}l$)y-+PK6S2MrVX(u)i>3mUG_It z+ts;^)`^MF@&~utID0poI)2V>?tIbaY`EKYu@>g_uYcYaH_xS`bINYCcd&g$tsOnd zW@60FEMlWQO$81zsL+r9{+bFp@3`nah#61oidA$_%dDBj^D9=b$Kgas+ zwO_N|J}nxaYZnG8?ECC^e0s)wJ6${94plPpUpd1@WfxELDnW)Y@*k9brPZnRk$>)2 z>HsLMmz2M+)Gqb&LvJaLEFGXa>%FB#$`yxC_{PIya;^{uRphCuzNe4bB4$15uxe-T z+YacRcX}k$d^4mFqcuAO)Oe&wl23A^Ji&5`m#0#maspyz?lMKWEASCb;GeN}UWvX? zb|!IB&VNehK$Ll^lu9y9$&75FC?=9%g#)H8QL*5Ke2)d03yeZK-c`rQ7m=6eU3mix z9Ktzk7xDTFywZJ0kcdx-Y4F#3jFKRs#4rS@-4*gvTS)kstdU1zlk%gW%5|YL2|x_- zi~k979n7wE+%yNQu!flmOWw5Q+^Lh&c&{|?E;6Fi`JhR{KF5gc870$zZ} zN=$heA{It|uT;RE|f4 zg`fZrmy2xR1}Nv-IwHz<)_!tKPe&SM`oB)fP!K|;6Mlk)v=bE3CA^GR;xmP(^T}Xd zTE<6rOeN=W9HU4cM+lfn%z)&y*);%5F9An`xwnY)LL_wMI)!|!HU9fDidiM2R-3U2 zmjCh4icpmKXlaDDep-#&_g|qCFqi54dOW}kjSR7nkq^9&Aj|Y5D)G=ubSd@P=*K^< zl03qd=Th>Pa9Nb14E?D*g~Aa`qs}r(85$}2G#~m&6#5c6He+m{)Vbqj%3@subwe-4O6d4Z;>%qhakqI=z3PX&x;~F0w*az{ z*QQpz`taj*sK1WQv=-u~v2CWEpEKP~P^ZW7PrmOGT@g%#p4w1i_ufq(WK)IB-h`>c z8ccaASKE!Z4zlk6vl7>@+jIZvU)jhK?6Ps2xU>D1onn)%*&8<5{8ep~Ie~|j0Xz5V z>sSumw3d8mfdBwN07*naR3Yxs7$fqd)FBt;qmPv=V4Xg1K0CJ7TmRWJc76MHyYwS= z@jY_fE*?8+os7_{b5sr9HB5J2`s&x%Ep?_1VXh+E@DVx~3oteL_{Tqvx0e<=chi^+ z7_paMVsC@%9d?;cg%^Poq>L?2VsWIJjuR0H8(qx z{k6C3EHfon*o}68PTUA>W)Lqzqtw54R4&zY5BJ3tUD}B^LEafULW(@fF2#zg25(KJ zb!_H@SqY8TI}0+~s=a|HoRja^EoM;qafMpT4A|U_8?9~q8e6k|qb+J}vwd{V#=G~~ z4D8hh8Koa&gDJRJJu^Yio#5UaJ8MUdU9#=Fd+gRI=1YubPiKeeadrisU^b$uVT_IN zZrb1e#g}Zy=f7k_6&Gk%6SjHVBaHHI;hxYb+jZQ2`!|2h?z#VA?CCGtihJ8^%e~v| z`5!-T|NPhgg`H|=mW7HOr=2cX&}j4KHL*!plMUdx=c|ADw|4jaYi%L2Hm_;3>vXcN zKEEGDpX+DlfhNRyi*D@409`<$ziaH&xpw>Rw_dW&>8yKcU1o3p$$zvm}ydK0QYbi|kza4BI)%o)yfzRMY8}U;YxV(On6n)q0 zeB|Gie<}T821KF1hf}C`7I8nqi%SoBXg^Aa|B%mFAhp+0>QcK`7jz|PsM}EnE=GA* z`N(|Ymr>^;@0O=$gCho%m0}5ANc%Meu%B}|IjExkBowX##0bgC@t0cSk}=96DaS*d zl3jm+QLHb|jA*H1Vqtl1nT@$#rhcR_COw!UWmaE$kHiDA^d)mh#wN)V0U10-vU&~a zVt$Evap*W1pTa#7Rt6@L#hpCk%)3Wlz1)#Y_;*EFS$!y;a1)OJNLQxZtR54p1M`W( zy%xX3DT`zPXqvc{!+>EzSB0SMKw)0S)Bk1HZD4AsOOy})D zp%n5G&j8Hj1%klV&ygkv4+7uLE6MMu0bepW7v=HG;yGE8yi-HR&*TjJ5>9q)DL;mR z#xF`ymEz@k%vq@ZJtKw=bUX*=_~^ABI&Gp6$`o9`wg@9nD8k7?CyKBD41A(Y4)S=S z1ET+k8`wpDAtA(=FTB7(0L4-VQ{XZ_CbAU|M~+5-_?*VfLXaL#g(z22^oCGu7omXt z%ljX&hgLAMCfo8@Y+w}D1ZaIg9Us*NcwW&cvle1jv+L#vp>_q8ZMLM59ly&fCgI=3 z$yiD}ikFB!@=HRU0L?~>u_#b^noST)hh`(j`P#dw2yrP5-IySZHa9Z^5xl*i<%SVz zbs|vURa=#q3|;xs=dAv|M{UVRK4k6hylxYxx~!zR&XxC`X?W?ujAI5P*JUWZeH2#( zeFdZSS`^sDDEuHMHIvwtYsXoQB$q1>MO_P_v2O|&At7DVaD{FP}q1s*l$?I?MDYydW3&5u547vFrzYAaCmSZq6r2cF|EzHB3m z-j`tSj~$M?=A4GyRopiQvu$vo&-zZ1&j@TKi?++?OpRbhG=}f}foGq!D?i#{XE3Mg zU_^gnc)%{OXtN&ksNp_32PjoqKOp=59u^3nJ$u%^`jxM+ShyD(?=Blc@smP75BHj9 z&Yoe!m_?w>-ps}m(h)|pcQb;lPu=5BJnriQKKJ?0S!-*n-?vniYC7eZq?BWhp$?g5 z0!C2Y<}jNvynipF@VLudw;sh0C5yELSKoTg2F{)yXfrgfBBX* zEv)DHVGjj5)aUW8G=gWEvC+$RVBa%#>*9H^Ofe;sQ| zPF?P^d+uJ2KmNt=8nK1A>YV+dhgql5W7pq!&BpOK)v)dk8)d!2Fbl8eESYUjfARzN z6wlDu%x0@9(ezCZp`E5%f8nr8nt;39Vw8``zj+bGY-IHUSw4Ktac z7{%4^1#6_d=`-hB`{{G;T6o6HMa%+q*opRD7Jg6K0h?}bRn^)6>lr#x>?>(66Enxn^eTMWpf`~r(2oE$jg?{X>S%oHZ-6z1|$nZnmWp*gGobGW4A zATzNo%nB6H3dD&^2m^JbObT>jlyMCF12^RG{D73WZN9t4$8C@}ANF`VbQ^~oIsOLtMloQy-6oF!ii}H%< zB<2U2bS`EXIOP$uD=cQ5uUKalDE;G|SQBRLC&KcwF2!FQNo+DgmY)MoAPpFS5R!Mv4}^~A`5B!e z0pGbNyewbE==uXrWZ>z98Ve6~Am9{!8Q(~dPkUSpa%B|qLz($>VDWBnU;=xPMWQI; zkn%lNkWsQG8p+_Y#8Z|AF1!SG0>MNoc!-Dm6jvyOK*kcQn44_{|<+G-*;wisSn^#N$~Hq}r)Jn2M7~qyOpvKx&r; zhwaft3+%(}wp+`hTrCI{Uc7wb$s8znhMC4_yUczx5s)m<7f z3p^;q8A^^MicBuByO(JX%Gx-J{}}e?!}$2tY(p8N`auqL48S9Q1e za=~I7LILVRhDz|uP|*Bp`G8NN^lJ2@oQ1-dzW6uR`0!)4zd`wL%V*H&a~n1(A( zKGG$Ys%bRXUn{~)Jd6jGi^V{F1$5#I5a!pJFw{X1%z4T)$zxEm^XJPQp1i{aLwcrG1JWk~Q+$x}??V zUwZBZTextcuRTdFT~&wE*lR%ROXMCC-P~?5lO+4;dfMN`AAb*5tLC*tE!MPglU?}!^ER!Ejmj`ll8Kkh$YkqXL*2VMkUq*uVS;bEU%F|by^^ms%ujA& zwN^m=Jt>7WKSpjRY$hf^qimElFsBI{^9J?<=&<9jykPu)o=UB8RyiBg_0iG0WMjRIo>$)FUR|=3eZ~p;`HTzrCkJ)`sJZ!UB2wzUc)YLX$Zgb0CXRSy3bxiW8H<{)ks$W|c z@*J1(z{{lS(MQ*^FT)}_F2hzyhrbE)re-=D*Tzb1-u(~R+Q*-?(JnTw`^j@wId7iz z(5ae1CvluMbou;QYHAFxSj%h{YY8TXI_+*|Cx%hNzw*sztdY_EF?O|HOTkNfu3Ouk zl(lTR9og}QoqFc$cJfdEj5P(PZQ9DEX6xqJ(8`%M&{Agun8XZY$3H>`Vq}Ep7w=&c z-1|N}`OIeap{g8{o_)Jm@Xx*6`Y=i+C++VL>mZix?vM{u5QyU+Lw`zOJWa zMgvgprMwwMr9X56qOzZqf6WpopX+l|Ms);e8~!dM&ks5X)pU}}8Enuf{#50LVmP>H zuW)Dy^|lV9o}LJN@@J{+h_kM!FM0mY)EDK}e;uLjBS;$1n=*SlI<0!z@*fO#h2|-2#DmZ#~2tP^S z*%1eV3_HamudJLbt@1K#kL%_nSYR9S6Rc1!@JJf+V%h^`gtTJmqFk~7NFdKE@Q$)4 zoJ8xabV~V-5R33kN(=b{`XxC^jK{nPa@hiYkgW(VV*eL37x$!70aijmzzIPf7W2q( zXgbBT=(2jwa1w5wPd=W?^Ma!Y&_M4;3_}2H3SY;{aHi6Pvh|@F!oAxBAq=AI5m$xi zg%$)4dHz-qOh6t&G#R~!^%0XIKMzxpjVNLA=bpWwlUz;)F6_NNpplYSUCoFail7$x zR-q)z=X*Ie)Mbp^N?FpO;=IE_nXb@Nt`>&+Vp0^5aZE=hQ2a+xFh;c)6a`1K9D0GO zQ!qX@#K=EC@W%M?s$+4r{XAw79oGENL)L;~-#s~OV{abDS9-mVc6z}Q7G+Vx-4%F= zIs3)0+03V&u!Y#Hx4-xd$}uB@jP6(Ae}48SK48-~tg!Ltwp%G1fJxpm%9joK03DQm zdCoxrtivs+7W`^dI97(&hb#SF*<3S|AF5x~vhGbO{fWN%2|HXp3Lh<;WwC0-g#FGZ zt8DW+Y|49P+i~2Kws%jbQ-weH8P)ckXRq2_8>iWm51_PAo;oV?X7^ju9dm8(+k0)| z{Ge_6(1$QTX|W^EeV;u7u;<1WzMJ~m^GE;2>QUGxP9C>X%!4LSHU}|n8pbQp1TGV` zNtV_n%=+|)Z3Ozm=iBYTg{!_kp%RmsZZ@y#ncv8DciZU14HUnN*1Gj6l=(hPeWqi= zvBI{${+6{+UbU|kVPj?L(A$jeHGgV_+->g+T<_@MHn7l>(dJpqw9Lef=N&9kZCl0$ zZ?bLwtG{;TU!6Wt>E93T->BA2pa6QCL+KtL9I|%W0@ms%tn;kz$|XDWjc?eZC*JQn z_Fkcb(s${+wSMpeR>nqEo!g(IqtoOa!v>7qOBscioZ&ev+{5sIq^Af0^i1(jZMnj) z*&t17g?r9DrURu;K{?ANt{pvuiOUTedHywD+Q^akFA+O4Vl3LP)ju}t)$a9_r^exL0-HfaCoAN`^|{h43Hvrmi7 z#N?@c&mp`6RoIy`XYdqMj*`uq4(dl8sZ#vO-k>hN^NsH_^P*=G+ZY7aeNcU>{!8e| z)RR}qX!ua~MSK5;AGW!;5yj3;7shjjS0y?#^Rct7lCPgd;zWTzmw!Wm?mZDHMm({S4 z`m~*72jv^jy~wo>+r%1t`>$c6w}msBF~seu*6SDq0B<)tQ;Y5@%*1g?|6ypyL|7mf{NuRkj2t7{!^q$to?dP zWa+>-tJhpP?;4F2FZ@)3;}vd5Afpb8iXaj2IcJ@bSOTC7H!+O>PiFX0$}BCqM47@I zEb&q?-Zm0W3MEP&DT*$h`RgHGC@0`&9CEURtBCi`SqV48^y@FALRmlU{N6eMQTFh{ zPpkk&xF9Z0N-OkuYG46FXTg)`0maXrD)63h@gc)%oXbN4x56JIYmWmNGmE~wUrMSQ$FXNMNgdc#B zKH`cxFe>m#=|mIhLf~8qWk>#rw`9q$+YpUl{^ALw0i+jA{$+zArH14qt-$qs4x_lw zL7BU&wUtpermX{|pCw{=xC2uu66ugL| z_)DoD8R`#;zm$K>h{pMFhfV@GeE7$KN%0>CU))N)Jh^);W3=$P^b*ojNG*`7Pu-+g4h)w{TE-}(y#jm1w*s8Fjo<_$+HsG=Z@lird3jDRl3({*w z^%Oe>t}r6PB%|)*b!_}Jy~>Vbeltl&Ym95S)^GOyyIAPkywKh}QqC^1UAX7$w}Ihm zo7-G&cdQz;6K4i&)#6D!&|t#SPiG7J?1tK2t6#Rzj=k~&%zJ9>ZaM+87PQ*Qw_md( zDCK3tCARVBf8NS5^|<`<^ET4di1`UpqVTIe^pe;52y3dhOSFTRUfE-3Pqic0s9ixJ zx-g9QCT3KQ?0VCBZtk(=cRp$NeeyT$%DFRkY3Ff!>eHXH!w2@lpBV*4;Rm!Pfcvjb zS!!e6#&aJHrDe0eXZJ2V1qJ*A2M*c~e(*#4?_c~9i&~j|U=-FnezXzcr=Mh2n;9M& zupvxQ1_oH*jndnMiO~cdn)*$f8MR(xS6_X@TCgpzM^T=E;y;Ez`B7Z7&bjA)MuJ(_ za6khE1I7z>O?kf~p#9g3YO#YnYL$WNpPH8(fuL#ysgJN@}9{m>S)&9^S{gG0O< zH25&V^ID=FHuWn{R(dzp)X!jz5gvp(I&qa+&OQw_w)f;Md%1%hjakoei}y$!rfv=E zRvFVzT&ms=DDuoeR?t3&_8+$TJ2$ZComm)euIfqakQ_&N{Fn{_t`2|{ej0{{!sX|k z0PeZ&zyJHwZe#3~GA_O0vsb(OCeo2tH8vdP~Q zV;AI8EU?J<1vvvSJ(KBi^XY0HP9IIuL#m%XV*Ez=m^Lw+aChqxIsj4@Ls|Y-5hEQQ z26~mt=hngHn0(Y=N3YGkO0_^%nv@W{EI#Ih8eQ~JevRZ~Dm0E#Fyb8mTosa5XCNs5 zCq6;2kDJDW zcqTc7Vsu$D(XqLKB7E+p*KFf`_t~rm?y((gymSSd^*M9r;zu4Aknc?3Wi(<5PWwp(piTfBvhxZ>Xvl-auUt`4lFgxuX}r`xYu3wHUeJGDk+T)$<#E!(sKPbua0%1ftg`Pw^d1-9j~ z-@nLc@3G@YZ0WiUcJIUY+ZVs~E%pPzYY?lPWnNK+c@D*ddQfFiJ8Co9PofHQi3Ub< zM^M-fG3x&gn>-D$aCg?M*^aOJD@86>yl7Wa0A=nqjBUTWD`iAm=0zpcUmb30SFT)% z>&zB=f?a|)Jo%Vizrbc~w>oU@!d5%|hktC-H)D46Gaq3w^pN%Z@EK+U=2E9&tw`aW z5T7$-l$?@Shv)NH_~F+Z3-?qbMF zFI=?hS@UhA4!4`b`>m;x&8?W#8n}VIJo{OcG_ACCDE-?u-ft@z?XSJnW%XAsTHn>P zjIQ@uA0}}pP8|hjoh`-d&yF9xW|hNTEa0xQUAuR(2f;L(K4TW^GOB0?>{N`u{Uf{g z+ToKIF)zAFTVzem$N+mSG~3ZtTp7Bnx8F=$q!#bTiTC9f!z1?h#*H4`e(;1Q3pK4t$WvO%?HQp@(@%*aI z)G@orYr^(i8n8F7jN93pV|Kc`-)8X)YZjw~`&rA(UhSIIxP(Qy=Q*uZXMzstB&I}F zcr_|#Z<9&V+ITNh{H5e;#GlY-Pt=hoAGbZ+=UivNn=mJD7@R72w#ir9lo^@U_QXs@ zIMk3hoFv8rB+Jru`Vp0)A}pQ(PrqAUj!&S8e1Hd<$Tl!f*hwP41W_a^eOrr;Sf)eu z5OXAqC{+8NYNz@@2{{P^YAji~|fj9s#NR0G$F%L@6wA$ru*sC7q50 ziA3=_MUZmxSWc2Duc@FsW?(r5;$&hNt}x^}bz%WVh{khPDLFaF^4uKrfbEQ3-fZ!= zaD?x;IUbTE5T!tn+YjiRl#|dSn-GcgfvAuWPA0Z8rL&~$DGeckgOGt!IFplWccL%g z=JDP={@yzPIf4A*bcscJlg z{||7FCs>vNDsewT=xNW6aLJY7MBXu-;3+IBH=_x1D^JoCz$zq4p2}0&i_PI?IC+=^ z7Oo>_d^|k`mI@5Gk$+Z(NOOFhZIG$Z0h&_QlxqmA0*x^9M^O5KWFHqjW#Q)?0X}BJ z(WXQVxMJMaw#26KG1Vx1xD2@ai!wZ#qH!0ZuvBZ8o|HNQuEe1XyF4mVe=_yqr^UiD z@6isNV|>*|QSvpqFC|Yl_+bseD6;_M(HRIo@=&Psajwt^B^?bPm4kOBi~YtJ$$sOd z|7u5%cG{nP_S-gF_SSP|+B=LO9>V)ZJ4$CirVk9bqNwuWCSJvd{|2MBCtlf!JHlnw zwsEB$-2awczk=`Zh8DYnoomY*r`z$bec5+?)wS{;u1R&Gj)Z<3CF&@lT=<)hJUs{F z*V=8g=Nev27TDp|2HV48(Y-gvQDR4I?Gn5U4UFO8rNZvM6JPZ#-hE}~HCxa!VC&mP zZF<$P^`XQbJbc|QGP>V1vx>SJ#W%f74aV6_YQkPSP;Os;e%NkxW3I7mk#&9T>o&b@ zrLBJWA#9`pC2P)};3)m79ZZiBnJCv5L|_5kP}usYT` z$Pqv_O1fs(blaxWej3-Wvk5u@evi2JGGOIW;t9)Inpn)Qoy(Dw@+E79o>M|SyZ$Z# z*Bc*v)k*das2ZaVh29`A1q82>&T<*EP%J>esxY;Yfa+(ir6^P)G$bM+Gdvpwc$V!L zDV1XsK`BRk6faW#NC#k|6M!QnQwUNP*HlyqAoevWrmXHz6_Om9ob zmTAgU{!lJtX%PdMFxl$Nm?|13HiKqe;lpA zHN;XHf>;NETY-UND4DC9fb-MO|35kaDoBij0AAHot|%yFvGDxEp1XiRmvF=_&o9CS zO=U&ekPNuWj4>F5m;ycK37*L!Tn85L{2EAR*pY{bi(pENUROO8C#5B_aD?QT1)72~ z8o5TA$kEZK(gk4Tl<*Zs{!W`E74eKrzJi=NnH)b51^Pr2WLJ;U*-YUjVB(j;p9YhB zfp;Nv++3Yx*WkrZkw;~vD)hM00Y~6`xgqJ;0Uq;<;hqv12b@Ag2@a)GEQA8+fs$gM zUP%7oQCctle8>k;urWFSwJ84gwYA}qBP_m+Y%_eu@qJ;fE5*`^VdbNC&}%f!3)Ke} z1=&khK6n#+@a5S@3cp-MD%6a?7|OrA)r`u<7cVozn055`bulvBjXWAjg%3*mBqNaJ zm?ulaWr=JYdH>ft;0F@3KX|{*SHU-mSLt&;b;Fy!zZzYERuWWNVh+ zwAQ(}6&>pJ&Cag%%&@vV?tcD;jg%6*ga z?+0xQ@w7`bmE`q@I8-80&!FB^cT}h3ALV`zRI^bV%I=tUcvdG60=36#cud1|s)`QF z7-=oC9>V+uD-}Emq1aQ8+6Q3x;u)))waDh*@j+X&;c;7niHkA%s*I+dPw z7F(}%H=5PeHOvY$*%FlUwxx^MYoX2Nv%q{FrcvwGZnYLRM^i`qCTj-v?|H|@>Cn`o z_{*Eu>u^F-cmwEjqo!?p2SDSI;b=sugyja{bpJp9PdRAUFAepPp%dpNba)5$YWH4&2;dZ=aBOzHsqyRm#SB z6POfL^4=nYHWb={w<@(CKh$D4yqy=GgOHcbjuG%8NN>$_1p16&E=TQ=Lv7T<0!;wq z&i_MY3fk}wk@)-_Jh>LnEr^sWD9Qki$70eEG8qE!UCAS-@NFuvO>8`bFr|f&F28^+ zV0Hylz>(7LM^RQx=slz;r-+)c3gv(kQ9>{UF%cFB5{p6@NwO+|W1eSdF9|)?r6+S` zMPi3!;8?33#8#B#C@LWFj`$>noyn7{pD0-BtMK?Bm%b5?lD z$QPDi?;e)e=FR^D?t#!{)k`POM-MKC=fzMDbU0#ON(z{#7oL8qunaC(BF~lO;FuvA zvGP-b1xQQo36w&+`i9 z1U`i_Ra7h^hAHi#qlcHLu!^rC@vB1s@?t%RFyVMqaOKAru9#+J|1?~|g_h^* zjI*+1Y0fJzkHZNU7K-ox#^`P{A>U>g7hd{Wkn0@^O?{IqCA<_fk#a`T zlqWNwu?duUyqZj7(O|iI@L{A6-mds#<|BJ$?dCgzIf9S;6W8KI{bU9-fbw6?NZsst zi8Izj@PcojPsT_w2Tw*Wb22%y={tFoIdk8L$qbfN#3z4r`+WaOUg< ztH;gb2s0ur$IhV~mRQH~Mb^x$$oT#v*4a6P%{$(C7R|LomrvVA|KML*$Bk?DhyVIN z*akWRqbQcuc*K#5P_;Eb5K8S&(gh_>qrTj8MvI5IKVx(T%eamq?E5cXzC=f<%~r2m zV$b~GMf=bH;g1;+o@U?p>|faXKKTiI>)-xso83R#rWrfMK5(y9Z{5hIZAj) zA%+<3ch`?|I{zp z$Spc(Z|+6eKZ{w-QY)9ItS-C^&15uwaf1!8D0!fP{SK&uA!hv4F_>TxwD!<&a~)(+ z+t)e|e|Mmbmt#7nj(vac1mx(0k9-x}E{_8v3-RK}>cQhV{~j{{JY0JGRYG_s3FE^Vd3%1!6D*&f zkLU87YoZ}^9vNxk?-`;h@bs*Z?=PN^D+K>{PBA;k8#zZg@-#^i&0vwYDD-lQNkZPZ z8P7~ohh;omL?H#jKpTiM9ApS^39T4uA6iN9Dfq&W+^G&dR65WXl6jnz=SWT)$OE01 zl;|Bb&<2p7Lz$^;$r$lfZisuPPM$7YpEE3`j|3TxXq=I7#ZSy*8F^fl<#>J;qT?$p z@JjS4J13yr+-wAyAi7JABk$ah>h?FyRL0`ivQLbDuy;XZZm<+3v?F8?!dCPwHcYc?V?JnDm(yQxOuwa2Nrc{Sua1gs|8tv9QH(M>XNBe$!o>?Klfnubnw>%{RK3DL~=hy2%adgV!wjVk`+1o-?f>j&tz`KMTXD~QHrTw`ZjANdtpsHV^NImnL7uzW zW~VOTHg&iM1-cyn>z#J(dYA1y&|%+v{-m8af7z~F>##L*=G(`fe8PT?&diga__%Gp z|2~_KLNg5ohnlBDg+j%(l=+BdXhTYKqgYspNd_i4HI0qdxOAz_-Ll1IvtK~nwry69 z`^Q0CXqKEmODBQ-4=`(xyVDZxy-cHKEM8z2&M_k0H)stgf7ORB+H^Ft2}ZZ&67|;6 zBerPOdOQnN*x7Rz>{swlf91kC7zDq`lQuXPG{c-OrdILV9$al9@Y|!qGPIF#(2&~ z=@6*CCxLgN{8y}R^D^yk=<;D(wsM{Czfe{_Va+Y9 z3Bdg5%H>ExeR4gzJuANPkrP= zEMV@#ZR-(R_`aXDM%thj`VYRcm(lil%p~>O#5^|6TQkG@RyA8M>s-26KQurcY4(O* ztk(h6swT>h*)n=VGV`fmW@H*OG-a5^^>MN1uaDW0>w|WxXT%1WDU_*R4fn*?A?c+T zfAYpv%Gv{Z4fGBe1YoD;Id|V_vcQ{x0GT3%3k*1Zt%B&9;aSnu zW0lNmj=?JcL)!@0LJ~D$lqXZ<04X;!^YPkr^xIF~1BqbKsppylGCn6i-F)#5}GCVZIh-5zh#jEIu<>*ByVm(Y!*!l1( zp5JiGU(kHeH0o3;1)Sdv@E%{<>ORP2i?7AFzIay)>rnQ!=uNT&x!@Z|#^laZ@luq& z5@rP^8C{pjkK6sbX%8Dtv8!lzXNPrT!>!JOA?`p`I&t`O0+r;VbxQZ&-+oGi=WRyuYxc>X9=&_Qt`p zcs%I>e~Ufw;Dh!wcJ8YdFGaCqk?8%~u(!w7nb{Dv0o~~`;+oNrsfsrc?q8{FrKwca zYbA?%wE>dMFVq=O9af>}&uneAd7C!ce61U}?><|we7TKZzh)PXoUl!g+;6Ly)o5vG zvx~`u;a~X$`~Nt56EMAw>dyQ0zN zwM(sC)?&-H>I1oqz1elOXzC1Je9)`>enUG`xlY}tIYjEic;lUEON6x?8>P+xPpQx^>_CwgeM$rG9VKsdG-9Tet4Lr>f35HOiFl!CeRK zvMra|iG!#79v5>Tv|-pJ=0@(&%W8z828}WsuDJ7)48)F{JYn~~_g=g2JrCNpr@m$X z@9+PyEvD{++qc=0MGMSMj^IZ+%kKE?|7e%pezP?#T!gKAr7c^3k@d9o+V+>XVz*vr zm#pyg_RjglTV{h)W5^$#bu)ksUooQ%S;-#4 zFblJ{Dh7K6#f^53P`He!?FYLFd5VKG8O(fwoxK$2@P4F+ix2mpg#NbRsw=E&#c~@s z-R5RE^RBqmO4(1Mlt@QvuObGNg@mFVX=5;iXSp>A_c)7_(1=$#t9%vs+>F<<&WF4@R8`6`RSdl-{3M0`UKE6U#80we&>OI4{N^wN zeadVG9$7sw$&p;XfG(fFUV0(xmFM9yVX-eM9MWeP(wtv%L}oC7>94anick+D&FI%k-Q1f`?O7pli+3ficw${cm=YU&Yk06B*PX`mnvzeAbXbnJl?8F|DA0}grxsEzaWgz zLb;kS${Wvle1(?5&6VZgX&s61LGD~zN4|beaGY9%8JbiUU^$*Zd2rLblaR~cM(t)sKUPO~Y{ zHCJ6t+;bwaQ1_`*E%xfGTWuc^X&P~IJ;MjO2ZeXtrI*;syKb@L`w!Wv@c}#CzLU_J zXOX7Q${3VX&1tZGfA~ckVAggCGmLTquEqIw=v;@@UwZ>Ht7oj`|NBc@_mPiVSyQ9! zc=36hITzUpBC`C!m-kr5@LcrKQtQDUzmLJq=@SR+_?b>y!;JiU?!DLE_wIY_k|j%R zj@p)$j59xZ()!Q#+0rYwpyUzWlz&oG>E*Ij#!Eyjdri0CtCUfXIN|KpFW^|T*3IT?LT_dKK=jvmTlg0m9-w(Ywv&f12%|4fBN_Vq8(v+)4dNLgZ0?L z&$9!MJZ5uNuVpvdCDhFfJu~DQK&;%b!G?+YG}v{nh z8nTz4f5~2ZXFmg|b{vVz ztP7>SsBxh+E?91FzjerV?%QR{@RPZiwpmJ;+PNLe5o@{zM}3t4 zDe5a{a-tVL1?PILbUCJjEp0a5)nkoUZN}j`I0qwG!i#fa3Y6BP{y<+UZneeU}c!5bRc?qM!UrFP?jM~ zB+0F4B(mwA`vC<>zq-gIDe(qU8hGHFWCEiB2Fm~dKmbWZK~zD&LJmJNw2`ym*>u{1 z+_%6lDNT`*M244mM?j_`0!cssd61PC7;Pb5DSh0+8EUY?5Q ztbCa|B~Qc)C^`E4dNOz_;0Q{cCvrS8@YrpW!t?P%g%Uwj{?Bn!nF2hZ2?-oO1sR=x zq)p)@{C~jx*)rz%1vdVx3sX(b$0bmuUa>$S9pnh|IaLCP>3DVuWhi%;ID|qKkq%G? zCO846LMQXX`^J?^?J&_; z&UW`RQ(tWtU-cfFw|oF{K#jj6vvgI~+tqKy`wm(EGp}1I3ThD{M=R=QTP2%n)o!@R z3KuT06JPt5UG&}u@I4r`(}Zv=VdlMc_ZwE#Sc`r3AQ4vxKZ?1+{deAP4?pmL-EjG3 zwn#I;%=mVH?-3h#=>;3!fg;k?Z3V{;vEkV*R<~qPxCh?IC=RrjcHJ$*-d=X}Qnt(4 ztf`M#(0!lzFLvUYXRHhBgQ3!KYdOBxCXu_Oi1s0BiqDF2FXcBO)2$NBCz_TnwpoO$ zT(Du2&AR0_t7GM4f>n?4J^O8{^*9ciV^+nis7xA4xhIpvXs=}EcaU(Fb62jmW2cTW zNU3K7t6#Dgp8h_jH*5~ZfKDN1t18P;atQ%?_y{xCU$BL9=h+};D3@b0wFhU@a%OMm zENQYu7cH^=?pBoC0ovyb=2C1-Mnst1U;1;aSkP?q*R13om%EL-R(h7NU(beBy|$0O zTQhH-EnB@DCAG%do`1zRJsV+Ge+)C7ag<>BGfcBWB0u3FX3hsNvGL8(q`=a3nS{o! z->izkLMbxKUVRvIpkbN#(6_Y`ARiMN-9{9h2NRqk?B3_U`wqM4BOkVT@4CSz>9b=y zU$;V{_DnPQ(lemv!w2K~a8QX9PVI8d_<`M-F^NI(9%LtN?P9GV-U#=144;dF)hlqo zooB}h<$1il*N*(-H>?n~=;|1Fz`vpP*>b*x%c;9Sp? zyiLw8v9YyH)<@u^UN+e4W*{`e{dC_BR{3ZSE)F8DL#Be7oN%XkcD}<3i5;w$S<~`M zZO)2~R<~dYei&6YcUGBQd&6c{4a{EMwwq1i^ls5RglAvx5-IDXeb7c;@1Aj<%}SK% z3fiKYfwIkR^f>%73z}e%KZw#^b={R#z{*Jf-u;9It+T348@Z=pK)cK;FgLzzb;tXVf+%is_PV_tS#UO2$l%)Z~t2vZwmj;Pk@ zeLG2?8|V4C@WC5Q{PYaMbDY7T>M57+28ULX(t5q29h|^IrFnAjKJ+6aPfAZgHXRT% z=uX2=hBn2?X}**v2pMJjwMD8dhftFH4HV&5_dk2Yevy+V;h05>mBay-BoxeX62uvN)jlc- zr16@vHOF+eq6p)h;g`MD8H`-}c_pDHJv;FToOAiyHD*()OE_6PaR{&|U3QSD(w}ww z90P!)8idYOPbz5gIaubR95W(2JT$X|5Z$QW>GR@53ZN_1D{h2mfz8@RlA3tg(CkL$o2h-Chk6=>4j!ZWW(Dro@`tXd+TfEj*uHN9Y zp`Go_&Js3Ks|c};d_|#P()x(ta=PstasGR)0>!8ddEL(d5p==&c2D}3wfEisfPLh{ zAGWn~=UDmaQ`Y3E-Yw!UQThj-W+Op!WIvq=^k zphr18;5Vv~4duhy8lHl@wIi3KZ2Px7Uo&D!7C zW@W6XEWG7b8z!2~$hH?TNntZN21q*eocOcNJuA?&MAn~u&c)-HzyKRWHu)l;cH&IS zA7()N=x=Yl^^R36TVPF>ZM5T0JZ(Gw?(eLg0YN2wxsDy1uf}HoNL!B`Z)vx=^JiNx zv*E+|Zj54XrE64Z%y$@AzWeT5*;%*VF2Cv;D`hjf!L#i)e)_bH{Oi-0I2F@BF;7}P z8#AAJ8(xNE^&IxDV1;5BnaAYF%sa$q`FZ(hhFh-~`2}g*UxA~vp0_dbRkK#%AF|mR z7O%7#_G&0$fT}@!Rdu;7U$qPws;skX#9rC8mwhmB=x3G09c~llKg|5=9SNM5O(F76 zck_I%UTNbD=G|OJWx_|nuD*D^70_pkSlQ}f_ut0No2-BVj=%q;=+pN8jsf3=)%$}# znQs;BKWJ^wuzNHE8?CC%UboV!iQqNLAWh1@?wKEwg9(TN27c2F=4F~B{^=2u8JOQ< z@koxeC?*mbeZ`}~sBcM(Fcs;tXD4w*O3*~M1i{N9h&ob{R37V0a2*Xk5j_FtP6=_2 zi)u@-BV$3*bd)9n!Z}bRze!sLt>rwCLfw%(kz__TmCre5E1!Xw$_iqrJ&?w_)gJjI zQO10zs02B`s>n5-lX}i4_lmPvS(Nlv#)=%9{*cXQD+iuemdDJA`MDs_3q_k{=XsUT z9x=)*pS@0mUm!%zC3?nw@@L$!W@Tl~7p~I6@$|FYEZ5kQ^)|G)#;WG8vJH3KZs%H$q7bt4EHi2oS{g?=2_ti6%;2REm~KYI z2ULwTO}R{WO4%h;AA5bc^*WKVpbvXrH;#Fr4r%w$x;fUvO#Cpmw($xzsPM3$<3nCg zZ}&Odx$A&+brI!*S@p^aqLiSR`QQWPXbL58jEF*`IIoU++;PJMsKtK#!cS}gW;&8_ zE9O0KzVo)7IB~*P0m_lf#B*=j zIuyHNl-`{${>a7&)j80K84wE86f>$N=h$VHb{Kg1S(|sy{XVll(%Gq{5j*mu*EKd zCykH8BLk`_977o_6wjS&11~&nv#z|J+0-RCdJeLJaoC=F_F4PxcmKuy@gKf{196uf zJ$cHG?%Qtz2anmBO_yQAOqkRcpC+7WmtC~^e%o}{FJTr@YllAbyVmpg(v!lbzExgfnmn z_iGBJXx^fwcI?MLw$`_{)3=se6AJS6ciw7OUA)n{pL!blOBwtW+V(&FbL)Qc$9CiY z_{cd(`&6@w#1n+e5Z|-3EI0IU657XG_;?bn}g${Q9S@ zcs7Hf<;$&vRfS1rOf@Sz7k`e@$~xK%=hDai)k@pWVy456utcjVmPrcDN*Cn0px2R+ z*+n_ZStb4mC9E=NBeWrAy`}g`xhtVx7Yi4qZA~(s$ny>Rrdae?zQ{h|B#*OArAeaoi=OzS{uOZXXE?cV;5h# z%GOG8MG0>`ei~mJoa~1f+`>t#Q!PhN+2_CT8T-xO{v8H>gLal(qx*>H^ZJ+m(nhzw zZgqvVR&A6-ik?W4U9)czw=CDzh2 zX^-scu`4dV%9bo$NQ1L_sCJ~>XWALi$bU!XTiuvQz4X>@qD$ol0RFz9ZNluo-W~iY z5B)fU=&JH^E5lJ;hxoW-FJ+9*5Qae-s~rUluq!YHn_^HaGcKQ;(al$z>s=*W&I;{Y zudm1f+z`Z5k-5&$#jNjh`fZ5t25LCB%zP8 zggOJWSSCS(Sh=%f1Yp7{;hmAk=~MnuE{T!j6Zz&~;+!k@bR=~;GJ!}W&MQ!4(ph*? zzw^-x+|j~0)JZzcrir8q$q~y*sn}%*XYtDBLsfxCpbNB-ho2)&BG-l5I8>RXO?ZkX zk1oojOGx^aQ2n7uYIFSbDWQyX`Y?x2aeQ7hd!#=p{xXXhLb(~mRG}WFe+^&i%W=S4 zPqdnOZ*8-R7xvn4GqdV;w6^H{zq;N3?!EFG9yt~&{9GPx`L$-E@eeT?NLb2QR2LhqO`ZPwA%6G zC&8<9gHio0> zq(W}C5G`lL8k=+JCaXem?|SAjYkPgCExG+Rt0ipb(2>K|g^hgY(>NOAe^5z#77;I9 zQDq88kYpTlp28Yt0U1oucBPoC6r-$64fa|aGtn)y;SV1Do_+1B|6p%!-{rHXi*R-< z$MmU;nbI?ud7Rm|n>hJLY{j+j@*RC&{ob?IxQg9UY3H-2PT4dLjuo>PT46_@4ZifO zbw2TgwPOa-b-L9zP!}J;k1GBbZda+`;Mt3&2 zbGyv~Pp_{c##PJbHQ5Smw@0u)FW7s?x?X^@GK>YQ-hC4ETD?xcV{K=snx%VOeoxu!+^HZRcP7Z`!QU7ObNGa?MguOHiC^ zXE#~vPl#3jgKt|&;{q!tvP|(Hp*op`FU6s@oY0n1_{*8;FQ&aA#37dOl^S5uS2QDB z%nDF(Dfd9(D0y~<3vuMV;ac19(U01kO`8cb+Gs0oyVZ`q`MO`%z$4$Y&RsigiT>O>gU|F-_Q*4J&T+3Kp>BEHT`u9G_j5;e<4XoVM%(2&Y?y%!0yVxzc z%$m6qD|<(5@o2woy!jeC!e(FXPd;HKySG~Z>w9h1TEcm5T5Q9c7|hKlq7N%1!#wL_ zw2>kvNl8X({t!%8fKE*Ke?oLJeqj(k&Zwyqd!?f&{yWc%Sm(gF^>>WfHEcfCG^f_D zTPuih0H9SAIj+m0{M@-wdx6>driR=Az-Rn<4yE`j&cCnpC2gdrQUfPWS$!jR{j;%2 zay)Q27pY^?4+`;pDJB|_tz2ORI15i>I#o!2RUdZVYG-6eAS-3xiqlU#YXwydDk#?; z7B#aQtZXCCNyJm#96lqj1o=W%uG}$LbtdJ3sSu;GDdcbnElGvvNtpHBBD9_cN z6h=T=DZGFMaKy=HDXPbUC@)lp)3lq5klPJvOZBc7cu;o}%t8Dcu&k)?6Yfu-}#$&$zcZI)l4&6NfEgn{Zw z@Y6a}XJ8=I{PIvhd5+#|b2d3xAQMpkv*&=5Pw%yap9DWXk4~F?qj*6qg}0toW->?k zhz;=JtmH$u5_5-3akSjf)?$ly?6B&WU$@CU$E~;HoE1NKr!Bwdc5ANhAp~I!L0(#H zKjs0)-)5$qS?JgQ>@Tcg%@vrNtg{18J!Xx|R$-1pculUMh*>X%o%GO?i3q+D;0l7& zX}+x}t-|wSe>>qYiM{ji0Gsq+jx#{){nLD$$57N2!qYbiLs?f$`0;UBKjU0Vn8?G2 zTUe&Au+_`wSrrPJW*xm6oKa(Z?MY^CWwxT3#$I;N-SONjR)#}wHIacTE34tjPO>P( zJ$&pv`V6zG60DN;QKE--D`i%(28C-LG05MG61S3>si?-~epRfitaq8T$(@uZupX|)nAGNiA z^at20PuY>r{Wm-JoYhvqtq=~V)HN`((7}S>#Sn-*C#op*ETj<3l7HPCy(34 zYi_V=W-PZq|2W|!t8E>Mbtfi8qeRN7BJ^YlCOE~c$`tet5l0;}p(lT2BPG=~8?%~1 zlxht+eeVQXOr~BV+#9u>x?Kf|=iC*`*|=)Gt-9k@;__c_6)5OcIQn)R+RF_1aXa?X z%hruqQ}LXI)}Z|XFlnmb{uK0d*|G;7^w6VqbLz3%ZnD!vL8_%K%W%paEnpuAOn!Qp z%|3Rl#m-{3RCMCBHDO1-idBOp46w?$ck&A2_ayMDd*$59xEh`KXKdyVS)Xk%jWU=pJ=D*y}t&K=!v1*@7Fl+n(&-))!NcOMSl zmsuAMrU(A;zgzK&Ww!a@hZ*#YTEUz~YkuE@b{6v|J%?RH+&S{O-(|xu!h2pybSU`) zaBq#lvl>mWjcNMdG^RCSQ!@F!XdtSI00!C!U5>d;DGGQg_p*{f-_V|2thh9}Da<)S zej3klH7i(!Y|3`Lx5L(5b0a%ISK|l63L6`ejlcMUt*w}4%NgJ`@?6cq_udesYAM0V4%= zqHn?u^iJAQo|{2v%eaP0o};dTNxSZ{OKd(na!cu!(jNx^@vH$r7a>TWdt-YT08oS8 zhkl<>{PjF*#=nqN!t%%ilejtt)MX4RW$xpho%u1m^Ef z-UmKG0w3|$p%sN9R=y@#HJf|KjaIXw*{0e%tZvhKo93C)eF`ByNos(>^Ce36y`qjV zWg~#Nk=Mh(kt&-)4plik{$xRcB7r#1h$Vg(Nas*PA^B8}C`d|{D~Uzfx*aX8B&jU9 z25~(PH!=x?NltGb9RWLQyB*s@2c zV`e$<2#V(f5I^bua!aTqk03`Nh@5kb66DAagd7ej;ISxWn*h>2LqU2ABD<6*MfMWM z%TPymrTTZ%^UrZz-<+Wc53#?syu~k+-UY^`5Iqh|2(_ycYn)H z9eB|$dDne*^Cv!K`?tQv?CK>%1*v4WQD#T=@#Mo>fN4qzA8ILJathSPUS>d}!`PN< zHjWRcOm#GSSb{QAT{n-}_YOC^Iey@K~g zQ=r*hlB>+ zqT8&!_BvaB>E$-gegzwUx|8Q z3AW*jRxY#3_rKS^{XhTMHr;!p?_Kbd@BRSul|wdsYM-sY@fYmUE3RZehh?m+aIc8Q zB=fZBIKJnRNA1j)|I8{^tYd>H%w%ZOLfQw(@h`x!R^dI%=#LCeHG5q`JE?aTa=oJr zrz5}fMa+e$PqF^FPX+umYE;Ax0ywBql>UJKna)G=8m)FgA@+%57QG#4W zK_1|u&wv9w3-BspKk!UmQ|F{iWKzQ^nPk&Mnir4ci0v`snj%d6$!^V`Nt%`ia;TlW+nV%kjNS(3#@#}I@zdnFugssonILclxAH6Gx>%F$`oK+ABqwMGzt3^pFBkp|f!bNuO zsaLE7hr0sIWM(mwICz{*tJrL6;LK5b?zeu=dKYZ4ji0*IuGp~Ls>aH!fsl2Jh;%bL z&~0D))!(oO{^W115%ZFrkN?mvzWZ)hPK&6okdLmS3Gtcb!yDy7)j-jbo%93>NvW3N zIdoZ4!>UnQidqh#bdFj-J^)3`ek=aJl#2pn^9{%NK=(3RKa3;oQbK3;_4E@~v)@M8 zsYnV$F+L2M9Y>|}559Vx21{iq96cR`(p-C`U36KQeeGM1+aeS&DTk$e@EHQxAcKq^ z6t5-X= zcG*J@*)AM;+yBpBTjg@1{q)I{2vkfav^mkl{x%f+0xMg(-sZmVKC4~XY(tnO?EU+{ zw{c7}&`DA1m>F%tu@@!EV?(Qf(1i-I)t0HvD&(4>rzvf4kkFI5A^c4ff_1WKuD$c>(^kSN!?hp%WkNabwI}X* z*qUnQ5?h}E0JFEcLH@yI6fy-pV=F73x0L(CjI|$XWhrXJ#%Gf!?T9P08*Lm_ivP%j zlr0SaP__p!xzKEU5hgUtF1^$ivNAAv|GRC&2S3Qb>J$T@bNF6#5NW8%mfv`j&0>%@ zPG2cuP%(^2RTaC|zVCPbvmJc>6+3{LO8vfLw&9k$*}&{Gws`eQ_I!{}%D9`9jpHa? zLLbv?^-cx~Cx7q1TIEXiY`{jokhaw-ks|mEF@RD`f9;Q;C_9>2SKNPwON91B`Nv7Q zaK&QV^oM`Ms>>8g{C3-L=iT<|cfM`I2lw0b?gKX7ddv!Uykl?E_t$T^-X`w2-%kI* z=k55N_gLXmPxvm)<(sxx`SNA9=;NQTs%8dG3=sGH+OOEkKlxKz{pbJ9_I~Q4>QZWM zD-gF;Gq5wrBw`#QmAFuQ=+YVAi*#d`n~v_%a|*ndKO zYnv_AJGSSHhZB|U{x~Zx1#HwcHowM3Yw(TWnH^PRB33SBn?J$xhV`5){knfXctjbe zsTkN%J?)0;3yS}UwRDH)r;LGpDYQPD&e?^Q_@woWO6k@hR!V*x07T_q0|DVH9I7S~ zlvbH|iCzN{?Qt;Y`s>_uN2WHkkhfU@{mf_OX%;E_4kRsS-eOG}oH%MFYgUEmIp9vR z>R3EDWTo`0G5T2%3jLG@s{|HkWryk7i&o;df~g(2YUfGG;}5fVhC#Kmn$(zNMZpzX zwHMgoh$*!}NJmJ-@NZ6%(f2XD=_6J=L!Gh+u!t#A$#B5~noxE=f^N%sWl0_9Vdnut zCf1o2kx0`SVH}3=8c64t>zyH*q*A8|82NY<{4~W=G$053EFWi<{$%U8Ag+KZpFkGy zl#YB8NLrBPD*EK^Mf7-%^l5`94AOk4&jm?U5vt&MN}fi?Xc5LP+|F^f3V_gh>-ZI0EaW z0!}#{Il?$cnM9Jv=+~bhyA(?6;FM63$!{emRcV%=V`V`(K4KS-l&9C3=CYMV)XX{H zMeJ;~p_W(zNs{!Ft^r~7A;~ZB%ggW&$sCu=^+I}H9iS(7EXUVbL=K#(GvoqwtUv8- z>e&ewf0;xy=ac&pR-hF&NL){tNlBpO^$At{b%j;@!1RbMkmrjwJ z?A);~mkR(pBrN5@lg(|33Sd4}8SRQA1bXdz;Oj6t)#bys^|QZk%{N_P#tirz%ok=&4>5c|scD>VXUb<=6N>$fR}#;ku%Bau!L&E_x(O3Iqj_H{Kw+p` zwb9!C&!1w?U2AI}`k-~A#I}9s`!;*UT1*Wvc1Hm&;93f6QAlY6-LqjLtn^^I(evaF zF)=B%*&qG5RS=n^o5vEZB&3wdI7fS+GME$Q;H$YPNK*bOSwUbk;#S}qqXaDFPjT3+wv~!U@Z3J zU;Me<_Q~I{!4G}J&V2jZR)^Cr+eP_3L|kqLKbWOVvw~B+7zf*ODc4%rp-hrdhm>e- z?xy=y#J&PDtE#}0h!CF5n>N|vjT=xjQKrBxmg!ES zOevJ7Z1^RE{77mW8(2lqplrU?-*TT-aep*xTZyu!l?Uw=QI6s-GqW)UEc+jQ!dm~} z_ZX0^vq?;bCL}`*(Wj7S8q*gkVZK8zb)c1^0FM!Jky&Z_GxlM&;@AI!t-a}HJA3@N zo!-08y7%m~W3Rk~Z^CAKV+Cwc zr48d-GRAW{%Ke(+zW9#bw4Y45r2H$&7wR+(Pdm{S%JdxbPa!(b4HmEy^{BNEO=urA ztK{C#A~KQQY2k3;lKufba))=XoPHSqFnCozRlke_0Dm8Vr+Y3O5eG+KiGjHgZPs-C zH8xGeC=G@cEs5L7bI(&h%tl`tcw!3Vokc<!v@teJBQCB@ z?>}hOE0)t^zH;skQwfpc5iT83X^pb^;gBPNnQ5tT3IS zPUNKpbcEmhlyYjF&_?0AlEX|WBBAcH*XaZz^&=LCOg@cr-Y--bX_FcqKc*v-AdHZ6 zVg$qs|0aDfA2~8h&M}*|fB;EFQKmecB$J?|A_b{JRiNa-T`!^iQeb4LbCRYmPo;H6 zWZjf9!+Q?2W755O-7#1FNOMr%a0?KKZ~cdYESCXNl#D? zmg5s-$>l})e>;9oAArCvyrh(N>1LdOC14jdO(&wLBRORTFM&A*>3D=>lJ`@f^$L{d zFG2zhxdfh;r2HH?h?c^@O49M1Af#~d&6SCH!a1qO>vwP>N#xBr0S6h+gD1RFq?k|6 zUQyuTCRgH;;$BFGK$jr7%mF>&Cu0Avjuv>GcU_5$S-49O7zNgz)=S@;!s`*=M51s` z>T+1*Nr_)a%xBLjJqe{L3!vON@Cs$wwBrGud1PN!!if*KKEFeJjq58*?7gGiHt*?Y zY~ZOEtnQ&-u@x+5AAamxcKU1IXDOSH^@!v9ve^O36TG;LO)M=FF5?ewv94U@c zRu$4y=07L-P){k=KfEiLj+TkWAbSb8`H$*_ZxQ7MtQ`2ko1>5&f`_q>|K1;c#;$zt z$LzshxXZrrjqlo(M6J31j@xW43g_%&To?0+MK|AOm;L6)?QF@IooMf4)_07JwwPT- zDJVwX_BVIoq*!6)%t~s;Sl@;|G_omHLJofa+t#>#ldZk^7CS*CrT$~BggHdnV^u)? zPA^=|lxt>p=(Xo;;&8XE`lH{sr62o<)vvqA6|ng?++gjG{i9hwD=7^q!cv|WH`<(E z`mi;B`Zw(igQtn|0ye;^wI`l>*5)+LL-7tuvJ@x{nkJD;v!-fS^`~)o4CBN&idm3$ zP9A2Dg?=IuwXhM?Z0^fN7hP=gR<2r`v zWspQ)m_lJzd&xOjCS&SLy1q&j<0jg>lGyf&mQze*B07(og9%47%mWM#_k8th*74;( zwIa-ZhHxMsK(Qajwtos7&2a15ilNu4#VB(1vL8b!o3<65ZL`V4hiub-`CV4MR{FKb zX6hA*!0s zW={kCR=Z@G_0oSQ#s}FM8uKUyLJP0H%FSqM7cR6BaOSOFXAO7WZms|H1ZF&hHEm?i z4a{pac+%nRjO=kx;En7hl<^F!{rnwABAO13GCMy!3&nla92?)K&6m1+X=fiW za9xw!YrUIv-=gV*l=CuH)U;wEUj6J=e4>BS_F>+Gz635@wIy+KQ&MAkP2pu#Y5oB+17Eu=(%AzI*&xAU|FUL6&r;sEO z^Im0S0EY;d4Dm>dGj(}cM9Cn8meVD~!YD!D=BTb5lGlq=M+P?l_@yXth%zPoa%@x7 zlusZ_enhuSU;J7$!{cyJXB|<{#YL9b8NHior6YZf{@PgArnhoq*#g2 z0K~GuE4EL(07&F> z5C@uUI=Qm&fkzX!)^EZ(cD(J*lnqy1X~X*u6FLxw zMphLn2$QE(DJf%8NG9F67Q1D)>y@sinBkhOM!6$BI>Jt{DDk7z+tGHM0YE#7M~Tg0 zW1lHj9;8H0p!jKr*V8A7iO;NP4FiTM!cva1ee0gx?_mB>XElViq*m$;dkv_eq)2L@ zp_t~aPi?hD%pjg(=620+wcW;wKm$s{z~Lj-M!fU>jT>$8wU<~WitRa^04tgKY-Au( zP8;`}YOz{o50~C>xpfd8w4!&20SF3BHOejgE3p%=sIIg26YP^fl$c&`IZ(WJ?Pt(W{P!cL zPoaGF+Nw1x?e=SLwCh*0_X3J31}AJpw%vM<9K;H1!pfwiYn1~&hy`O3%ob1eowcfK zueJGCZSh(5u=+@=$IeQdtG%U9$`nXpU$tSI`ho^>n%UK^#KBL1*!c`je3gSii_D6q zaK@FXn4Sj>BBvNk2w(bv`iuq;QYd_oK_Ae7(mO8l%b`@-;hA@K+3x@KWjpuS_iTg^ zoPG4w3F?<}SmaTB7&ww2L(v>;@3f)T<5s?4p{@SlFWKTNud+)%`3WmryN+FiyV8x6t zw{epz|Jrw8q`l4NY}jCDh;TGL&1^e+9n51Rs!AM$`&(PA<>jq*_^-ZVEr0oC>%lB# z+3mMj(|hi)))$Fd#ZJCO^BPf7nekQ|a}9ov)w#*La;2pHX^khn?=uL32jrw3Y!MsBdm&@LTNwTKV|#- zC#(xR?ebg!j#hBOOG@=h;np90AyN314g&$b2a*9m=eXU$;BgU~kxAI7_-o*(wC-;i z_vI`DfG3`RjWECXX3$4w0h_b=a#qHO+9OKU0e^(BV)~aRMJBPsS6@~8_yIrhlxa^X zbd6issE<`P(U$W!hX0e^Khrn}m-Y5o(K15CF6LQfg+aRrtF8Ue!=$?CUkYka!pccK ze^r;SwP^-=!E`ji%{y`ZDUXC*B3d4rw>%KXj^{EU5xPhTEEeTz%LL)Grbj~o5wbYk-H-^#ChbQ9GtW`@CkJZ81mtybih>&p)6OP;zXJZ zP67(@I7y`AoaA%#PMB03>(e>Vs8of4>;mwlEZ|4}A_=&Wie3NC*vRUHS@}JBx{DY0uiq{`Z3z*?Wc!l>I(X2M%D|J=f z-JRCTvV0MavvZiC)5ccA3=aB;3e(4o^)$1%qfQT$8n?6x=T=+jSGAId+L`Gl~nw+SK| zz5UWw%r@Z1#z$_0c5rk7Lz&3vz#Y^Te(>JSa zoqx6pc2M2;?)!*lLPVq2U$bHqOsyigjTVC$nXOE<9Jg+4%qtcxB&;NLG2rMYU%6nB z&A;m|Yy0NkTT$II%tX#uE6%!SzxlYWe&2g-CyII<8z^0O<2CjtU-~~*%YdZ}vj!=( z>JN&TG{P*u{)X7o;MDPB*lG9JdSm1<~gjYj3MKRzx^94#I#}j zL_52>&LW0BcIB8aO-pO$zjP`&Z%?vkK-uLeaMxbt3cJcQJIsmhic+S#NLxq=3mZeB zd?BC0v1&jt!hKMvN8Q(P28L4ZH3$f@qg>&D>Vrcb0@+uG)ddYgWZDG`xD+lQa0Jnu zhZM*j`oO*)JZ}5`^Jj@%gPBwFGMi%11SN6%S#hE-PQs)A(0&{2I%}gH?bb}Bp+z^} zWZnCB*g_)u)X>jIvCnUUw*TBYuCde>u3Bk_o_`rGtWqJ#k!PNtmfL=~N9kd$4=2p#~Ydtt8m*K=Le}V!AnH4yq)(~x}am@;=p1;W2FwNWf^?$UT z|Laez^^I3-5G8d2GrXQR-(c|BY0bCYWDD-O&Dsc^I>BaqMMSt^%H7*Q_c%WP`U<(? z&%kMls5=u3aK`52$a@JJb*-wko~CN+sVuc_+F?xnPB%&nxKUaul9iWFUh|$%Afhr> z2BsK%cMVL~!P6tQ12dmiHnoGjmD9h<_zUk-DgR*r5R~x%_q3FA+S%jqllB1txLN@? z+c{=;-EcJn08DTYLJGQ8fl5*Ebq|#;N07ENgZ9H$->})$;pw+>jw@WwQ~AiA?A6btQ-{+Ij96PpJ@hP6H@5mQw&}e z&(ARL#z_VP{=Q)1K!^I8oR^Dfq=KWz2@8s|ar0s;UNoP0|MPqgmEOdIikJK$Yp5cXM5dU3Bzq8-Dy0&VYQ#n88&f7!0v(x`&z0-A9ST z-C~2M&sp=WH`ownAayI(S>1XZN|{IlHikz3i8H?QH9DJBMRr4`wEn^A<2GUm27{iOok?hkv*| zr60^Tm<^Rl$ONV~vXAd&0B~|IQF3rDteK7TZAY8!BW{0hFJ?H{8Q0(lIwoGsj@LKN zW;a!0wDWo%wYah51pNb)NpKZ5N6xA~)FzcbdJ`FDVdTcg2 zeHm@6`&7&ztQsY*nsz$#oo`yjrB~Y82j9y8>4c5Ewatp=&$nsn^nL+uA*KWK_;kYn z06+jqL_t)Om^-yU{g|!z-eYICZnZKL$TC(@#u;b~z4p9K5puL(oYfMP`0hQ2 zi8GHAB)h^s|KoqP4}a{VhN-_j{?s!zpE&n@Y`UfBJ44-l?Eczf-Q0^iue;vfcl%v- zBP%t{m}s%tf`@z@{P7QM9H-VH!dFhOU2EOdHFkvEfe)ZeonSU~4iRDM@jpQCWfql1 z40v`gWz#X7uIm~UzaE86_S*afa~?Xg_h(KT44}+Oi5E0U z!I(Yy077PB2an-9!Shf&X^TJfA-n8T|AD<1?j&sFd|P|_?N+z(a_dIHn~SnvNLbk+ z?8RlawEZ*x&03Efz;EWTo&1}>vXN(=W<#w~n@cpK**D#S1Nhf$DLWVsb#++l7ymo{ z0}MjhoUXVW#rwojn@h;cn)&1z91dbicIfG!*bBe$>()o)&-EYvkTw0n{kGwkKWGc@ zy2C22z0wAWP}TL=4;V=Av!$#AEWG1ZYa?{%*xsF1gt^x=ejyr-(InyBK(wDpl=bm? zd>byRu)+0p*0Yp9oO*j142;O{fP0{?n%Yfztp;X(CQiRL>r%8HZE7|`-)+IfXE%!f z9^&=)5gn+EXHJU06l!N6CZxmt%_#Z61q-wPA)O8eREEr@4077xd-qM(+Tum5YVgcx z09e5QX}D+D+o*(rp&|sGX&W>v!Kf}Ds|&%|j~V`}g@Qh%r1hX|Q|id5<0>8LC^L*!K{`1+?dloPd^ zX{A&#k#NfJcG6g^bIO}E=%KzWLXu8c#cL8Y$PvoDIKhdi;+>`wHhuz_g~xQ#T%aTn z`cf=APq>JjL&(;U(8avUq3W0#MecU{7VVrFIe6zAps9RmOf z6eLO>*Hl1hf~&ljI-IoA1iS!uBH)2X zKEBxH;DNpP1wN`h`JdJs@Dq4K>nCRuXhq`(1(AO~o!1o565_~193*3`*pt8l`y9W3 zBh-i=Ma<#k)g2f)Qsm`QWawRH-L?1t=t0uM&7YnVElc;K5!^m&%xd0x9fwgY z&9EqSoAV-++QMQSK(}qR=3o8<@vt%d*|EoFHLu{~ta$k)w&1=yne{wn6K(xA%}k(_ z_6jKhuqokVTg*&%5g*RNQf9%}F?K|zJA6O~+Rs=UW*1AYy4LF05w`28AKMU4g;k3d z`|hkV{gF}^l>^Q6NvV^ah)g-8{3+C@l=Ys@c56A=O5FNt>pXSB-ueEM)^UUZ4YPs` z3!B`jbqqzka&EoNTQi@?Fy+=l4EV~bY9fSGu;JG^Ok;>$UyN3a+(nq2^mcVw-TcK| z>mr;UE3B-!+4eF}>0PnHx*BS&lUaZ5k{{(fqCrMQGE-b_(;T!>sO{!^CF|;Xv;t3eEfPAWr?V z6;{a#L(fa>@cQWYtpI25(tgZ8mSYc&3ByTdRrfF(dWxCiF_aQH#g1_A+fdAEas1Wb zuYG>Kjb4ALHL`QBHiYWkxzkOM^{0+t|2#8c@=YzWt8v|G|%}?YZY{^sP6n zV(kVt8Dl7?K_&M`D8_ndeAO@_=DERYSFQS zyRDOfT36RuYosmLTycdp+;oE-fAmRfd*xMD0&cd&x7}i`Ti>#=qr0qh&OF0-pD?rR z#LM$Cx(sLdjm-3~uC;Dv`@0$JCb|;CAJcwL;7Z3lH2KPZDANi+d&juF`{rwH z$s+csKvAgVJ#*|}t9|J!PuRPzzQ_lNr3{u%xAxf&PwcfzAG(X3c^mwNKjnY zl$^vFNEUGYlFn5p1`af~k8tE0P{d4sC##qRwbeG&)oaz4taG!rv6o-Nyla(*dllZ~ z$rc;gci1Yg+01M{{SkgT#8bOHkG=7ZO&vLAg{xQDv}XJn9LIVCZunJ8>;2}38jvI9 z<=Fu9&P=_fJ$+Wfo(0Yz%3m( z3FZZ{bS6=fPp&P43Rw;}aP>RlwWO;8Ar~vpP{abxc^4SqDJX5zTwOUzumt8r&*LY- z$q^^aGLnLl7Uvj|N@)F*!3Xa6z!Qu>mB@I@TWHiC*TY`LzCx549n5 za^KU65o@HC$goll#Egmm`Tc?$p|=au{MqI_YpyeOVA zh)87#l>esRf7bxO-*?HSht8C%E6ATON>t|3=Au{_?i3nH1L1j%kgLmU3JsOuiZmqs zmrR1=Jb~$dKnS&D%R>R>39Wd=wBsdk@!+4@TE(%3EUuV4w$nKyfdapTXDD~*jCzD9 zxDL209r>t0{}Ub|lgp>@h#&EsEYJoPq$BTyX9~~adey@9giusjkSR%rQ-lRvmm}qq zp$`mFJ{P{O+%=1Lij#LuvA*Qmlj}@saxy)(@tx*hXFdFxKh0Finepl>mbZ88N3kJ< zBeU{yQWc(?A;=Vg$RH&P7F*Z1e`qyCC7GP;Wk&e~jGoIGs{uejX04(_%7*Iu;( zc37Q4!P2a=b@QP@K`Foiw77l9s#uEe|JTR)VAfeJ;W!ojr4c1lw%cbhub4vN>A`fN z8@cMRf3INHE^KCm3@8b4)=OuP@FV44nh4j~a_p$JyuI5hn1LRh!jy$UOFc7{Q?1N` zV{bn}bfYSK6B<#5n=q9bBxL6}Gsz9awV!6DZs#|DM3j#jn~k}JOgK96C#c2#cLKZT z#&S(_zpzcKEQh zfAybj5dIZshpl2MNql+7C2eX;GQT)54oYU`Wxeh6f3L#rg+l+C4j?q3-M3^bS zM52#yhph~-w(UA-FQ7DyG2m$4$P71wC>@&3)eOG(SMSH_#i4&|LpCXeh458;emM|_ z5TUdecGy}4(n^5nHQTR2ht66xke$EG$VxP;&tS6s$Z;Dy)nbRf{axGt$N!V?qV0rf zWKh{KhZQWMI8o0S1I{U&JL}kZ?TX*}9b1UwaxHzd{orA%Cj6<|9&Bbu*}4`^k@45B@HH z@zGD)$?i6L>#ZHuaq2iLXh+$hx60-%BW6Di!Gn)JZaoK&+u~bqw59KrIT^k=+g`AV z`3*L-w$cVJuD2eX!MkhAdDhtQP0qTso1*K`*o;Ft>lMH~&_JY&fm5;UsCDGieH)z68bh3@ZTl z-g3Py#s@%yxzm`@J^1h!?7{ms*_JCd3Dtc$&UOyi$@x__tDy!nu5s&Rld`G}>uica zvS#E9_?xOCd==N{J~bWe@{5_1?D@SuqV)7I!7)j+sd?93VP$Jj;CaqUXAvqEIi@iO z(lSUf@0qGq%iNJy{v+|dD>X|!xdxuaDE=cvo6?{%91)Akb#PLfRO~sxNNdU_6q$;1 zQW_8i|lk$c|RyK_pDR}pw=0ZGcTjpV2SKTKTYvHdq?{#^rr zC`71QLP<#FbW@a{Q8z-TpiDYkODqX=As5o(k}A2*@_d|`_2uv*ZjM)A0Y#<}qYQa` zqKqk?Xq;LCC2S%f${6Z#Xhi0mz#zX&s?hz@+|!Z^|?BN$C8#oRtFt zpBZ_v5Pe{!jB^XPswouY!Ow%Gc%hzHFGML{=jz2d{vjLcghg6c;4irUS3%0h(*Zda zI-Pjs29WeWbwPhtc-(oRs7v~LML+zxnG1ZkRO1YKMkyRJjai*04$XhnQx!GzLFJRZg8;HQt$u6^lY)CYJNwd98c+Qcgg|?d+|F;gGuwrKa z#>NIw_E3m4gO5<&)_lN=6&4aDpckdMklDssW|9}9gf?tHX-&-V*I|BC$?R|u%6}1x zzv9A|&>j=#h^)gvsc$x`BFtziX853da#6}E>Kd%|AHQmix4+w#(5`JSK4H@>%;qAycSdum!8!MIVQ?aW12zBiSIvdb2eXTv+ugydJgO%L?La#jP&R`uV7C< zZCAbj{q952d8EzmdH7*lMR>!q)-wzkwqi>1FJ@eKHU0v|3PIbvdfS6($PN^zvkVSO zkhOyAmZ+LlAK{vGkJM-7h$$sz90hz3++q~n@na`2&0xn}cFMi|&Z}+J73=NfTko(! zB*$J>jOb^jn8*0;%i_sP-TN!bApaAEU*LcG%m0 z{+G7@ z-?P^mfG=FO(mGKl3wE5c0?dfojvTS_rOnniGH9)n^z98Rt$TK*_0UHBI0sL#BIcWA z(cWrjwYfh|nDi8JLo3-ixs;V0daRx8!I`&x%y#uou+bkkoqH{ZUTxavD>v!@N&06g z^(ylfJ?MWn9x{O|9IXJHIXhK51Llmf0tN?I9~>1&UiowAmu- zWIv0o>{dPtx(WI~?Zq2BENTfe`|dA7-suJ>Ol@{YXuwso-y+AQqzi`bNK@W3JK zeS42JGdM23^y1(<0^TH1xuzH-l=U$K&%0xkL9OimeO5mztKQ>yH*sw&D|-2)t}}sC zsi&wqoGDP5hxlcJVv0e9*P3mkpGF_45;^m)D9I(4pj_aa zy;m@fGGs1nX8Wal(>{pG5HVT0%h%Ka}T+Bi~SC#1mDntyPv(;N%Hb z7L-&Q=`$T7DdCh>8bDdeM3w_1xnSzwF#w>Jq#{4XAB1&T`Ej{boyz!2FE8RIMME_yw{2^)Vz$-DBeUWmq~5542?5kYUY%NjASIM;%+E;iPc z5b}K&jz3m<5Je246v&<*e$Vp6=_MXzmn@P5pVuxVySw_(X5 z>pgzTW}RcBDV#`4nUT|OqQ_q)`p<#mHpOnIcH%U%b!E2T+AUVb3dPI+{D^hq$l8ul zwjBj(5GARa2uYPFJBmT>CK290Xb*IrN|ahHpQ&%7^@0LrG4uL0DF^lWQ?E$EUykx7Kto z4yX6uZ>`_@I|c{vWFWybJ5%SX7$uH-KHb6qXxqz}X?@K4S`ORUfBL4CUbMlMGlSgS zaoT!cd5(6R#b#l1Z5V%y0ahVu7c8;zeoP)-e91b$`ZqR+U4JocSPgt+?mXMyRA<{! z`j4WV^fNe-!Y_5b2<3m=O>t-wRxs4%+-VyHOnw%%I9Hc3^WKk{(*#OVBiBDo^q~=E zm@nF}+O9_?R2e(=!>4T)ifa+3RI>4xGwe8FGu5}WbE|Crwc4W<0&VQ20f3x$$U##0M=@n;*?-s$JoTgFd?~&kcU$Y|fGz#S586gdqqcwLD>ldq(ODG5 z|DUw;0MP6x?tD!SJ3F&8n|Eh-HfQZBtg;Xi0!bi&Km-d60>NQ|iDw*+!)Ifk?`$77 zj`$7}1QY5!#b(@yvO+e-KvAwq*Isaut;KuLsqMS$*k`}&?O=ES>a93s+aCI&9pRMg-nomc z8#6O`?NL9a;FH38G#1o*1(&2ZwDd9({%=Pj>ya(D{kE zDB0O;e^UMx0uLK`HL%bCK`@??!Z@j*cu?>IT%9Q3#8A8=Oap*+1|P3|1p|P^vsuNW z4kvo;hBsYpGv{I6Mqd#>4a|?z|L%Q?&F-u+8SOl&LHUlIuJn&!MkmicI_cam;+p8_ z{mFw?f8KgyN3Tt6VKDWI%dJ8)|M2AS3#-t+4py0TsG#aLuD&PPwE9TME2014n@XTx z`!V{MEC2BKJTEZbAkme+$rJ3`2_{03pEC78(j~-ni68QdMX}77N?0KT*Nck0JmB4} z$Cd0j&(Z6bQKT{mqkI`p(kWNys&X!0LXKs{WWraNFft}dE-~W@xQU_&Q=Z^4k04>C zFktH*ApRTS$s|az{UcSTT!yqTr}B$UCQdOg@XH@Xs#OSc{Kzd8XD@I#N?2Imn^$WsZYXBhL;ROkiR5+prNd$1I93pflNO<`SZpunI zfj*F{;vqkfr;6q{2_Y*tp+o4Tr3~^$if~sX1M`UQiO4n-{$e;@(I5)=QMRnSAbTc5 zh!ol&5>i~^pF$O0tdGMT{S0tPE#6L}XyO~fAWnhK!MgF6l^t;-ZBdR4XDVG*j#w4= z39jEXg@HK49YrujMB|x(HsXaW&xr7Zn_wbWJma2q{E`=dFMz+t`VwgB7UgP$H*I}W zCGPUNZFo07beNgzw>R}s&Bm&H0Zq@Z!;A#w?qTeR|{B8?mI|G~Ng9w>j6pjm6_T_R@c&kva6Y0DQ^fT@p1F%`vCCMu8;nq{rhdax!Kw_ zV4u&%Wo&B@3v-+w{>)}GfUwSf>p6PDChvdLS|(@Oy0_fK3?aVwQT&cKl-vDx-eucS zaC#cq8^GQK{lqq~DOfX{HPy^Gqhz3VFo4kPKc+?e2ul&stg}KXQ&NoOndW3YuKrNq z8gv+w6po|aR&l{n>wnp1`w<&}pJW#AQ2(IKnu||!;?rxADmdJ16kGP5JAYt(KYz%^_wBJ7PJXRvWP>ix2`$l{ zub#9AQHbiOZG5j=RX^7oP8mq|707(zEI<#nShGP`>wV>ZyT1 zIe#+ik7gZ*WtknQK5$_Ik_?Kk|s}|Mqw6@jv=QJ6b(r=l{vaZTTgax_x=$tQj_qf$vJ5R~dt)qx7MU zuYB1WSb^auR^O-rVkpuT|Kl{jIcKA>J3Lo{eY;;AV^(<78}{0G7h|qdRHyC-#Hik{;-z8(DBh>!2i((vL0rAZe7`gRi1G_Rs_(=y=7Ej!)LC?8 zVMvC1%8M{hmT=3E{hWw|mdIl0AD0X>A;s29I9cQ5t*VCb>cG=NHHU7K?CbpeS&UxPdm~kVT3N06JVe3J8U0QJ%a>0yLFeLYvqp~vC1gAcu~fYv0T>|?!kmC~p77_A@KTvm!vZT&{v!0L z+1%~g1Txt#;PX2~@k zNVu2ui1Sw6SUqU(u?7G0kF4dqv#pO=-5n3zZ`-y$WBd2)x0?D!o5@o79DaP|Q@??Y zrcwqgF~#XSbr@HJRs3kr!hPiuTmJU9+MfO%+x?lpwdogLhF76BWWu%{rL}|2b1ScV zwRJuHh@JfW?RZA1u{rD4A}{7IxFId$hh4LA+5qeuK&eM9%K89%6{_o+?b6Gx#0LL6 zw*T?xQGSJZy^?;OuzlN$jU5ZT9SD>&N|M^>OIuPv`sqPW(l|@1eaLs~XvOJ8DnA z?IU*X?SF6Q-1cRA`YktG<=hq6tMIA997wX3vDvp`?lL?0$&cHy^%vOUTR2&G=d*V3 zv!Az-H@(d^yz3pzIQQ7$PydZgTe03I*oexsx%6!8_j#@;N8@9|z5-!*aFXN7GE8G8 zXQD)+$W5Z$kE7IUFeJ||Lzs~82uNd=!x*4~0gz^w)n869b3Mw;=@^RG5cO}sQ&YpV zW(Guk);O~PGo>T;+)p2{RtB3(mMy{cVqN0G)&la)8F_x&AmLtBkY%i7k(_WU1w9Io0}Jje!Ev$H<_ z3Hcjk79t-rL`f;#q08f8q1Cmrd5kw(YkIue;PPxa_62YU8<9_Qo4* z2LqH{fAXg``mx`$&F_7mZM*ef?BMVJu~p5Zeq9V!hS+Pf22VHFZ?b_pT=DXK(T3hh z+MhXYJz#ZSLj9*ziM#)NOxG$H9E{4Ae~=B^n28;xub-md*1;z0i3Y8n`@7XzWNm+>^=MZ9vrGDD8ILI+KlBN2Gq!&?aKVgd? z5T$@H0{n@lcw`v^J?qnQ00@>o>(O z0>|JMU;#hJ%+NAWUUD8&W@#!z&mw2$9J8lnmhvi1Icfxz=7?7g$zrkHJl8u!sIzc0 zoGIlO`FID?w?%EH|3ou%XON}5G8s=#{c^WoVE~W{RmkNP3-KhtY0701UKLS=xP+?@ zZhnPEaad#&Q4?~geMTE7#Ub!gI**+>uFhF36Ov*wwJ>}FW}caI_Rnd73|#0kSqm(~ zfh4(vIo|0sl0Ls;X@wxqLu7~RrVIX=+yRo`qx_Li)+T_x7LhK?7Gd^`5;WG=ld)Z5 zR@M@+81WBTsa&PFQYVg~_YblhSE&32x)g>~EX`RI8a$*Ug)q}4(ZkCUlJurdF8N;e7}#wrZme1E#G~o=ZAD+AAayZ^gg_qY_hJ-WA@V@f8UNC z=)%-xn$4QG*pX$DQH!^Y(a{0x!M=S)ISM}}H5E)V?%wu{b#%7bvgIqRmKn@>uX&Zd z@cVyZJqO0D_0#_yTj=R-!#zWP-*d)-Pq{P};e2F%Pl$7}7ifB0wC!G`Z$zyJF>Ndd0iu{-N)#DQ=O ze^QU7Ct4qW9sIEc6D6N&BS<*|&e^rotpbH#`zHo@h7$}DDv+g)K|}eDt-d%S`t!f^ zWj{lqla+#2HX!$~S@x0N`KZmj>5L~bAR%G7(C2pP({De854&&=nL9e zFMFxYfB7qXrDm9wo9PU2k5)fvPyNHEZT9=x_ZbJ&jW zZMW)+mb<*#kE0F0qx9KPJTjG?y@^#yR+Thj5NAU9?5C=j03Nh)p63K^SH)9iF&a2b zGBBvT_(Ff%>D*4I_EeJw*+L?u0cClGe6K@N{sadtDm{sle_I9j+;~&@DNWq344~2r z`O3`lvPhueUWyy?!)k+MiL``4;mpVc2ni2#bEF81c?mu8NhFD_DWN;q%{|0&)j z&(e+&>v6_1g-{|y;yEQO;t-FeKwHcpss55cM1!l=2yg+2r~F^G>?xxB=S_fID3=CS z>GP&^sEFj!U;5ys42KD>OFTSOZXWl}OVT0vE#M?HXk*m*DDIF1JVSmcD`Sw+>mwLM zIX%xa0OzGeTt`h%M{t215||a_3J)=m_#L(iBV9rEOb#LeUs5X`aXrw@b2GUEKcPl= zppNB4xYLGsh(1fBT2lQTMEI7$FB@~jd1Ad5Qu)si^T-J!@ z_?ZmOFT4bSI=l^j*UO}cJ}msn7Pg;o)AULXuj*o^8#j~-v4gGcx3OnOth#}c_&DoF zaS~;*vURD=ebWuhm{!_T58r3opWSaWF<;S)oEXo-c6z}=Jkek~-hjfczB_=o9k*4M z0zERu%sVa*@vC2lJ+yqB_oDoaW6pDuO_0@iPHALjx`I`MYG$DaFlnjZyurqMajE(3 zA6X5y(6yNPxDw6)V3a>wV!~PDFjoj&?j})${StF^+4`xvOo>m9Ma4 z9Y<}94Zr0a`ZdWWhGR`^hD4#QM{z>mav5dbAVuD7lWA3b3cX$9V^Dj`ghEP)+y2vb zZW;u==rov>Hx->)tAme*n5piA|03!=G}>oRJ^qZ1Jh2C*t`XO#=i2rYr)(ei$2lFi z2|xO^tip_9lF*C&@T@nd)9<&#^sk>f_!)uy6b1w-Eo5UU&y%z zxUz-567NOLoa(yvJ@2y_7qXH1f{WRFyTEqbew)o;P&CRxZ!?w#x2s*dw{zO^E36K) zrkR|yjGAhPwrsJ7zxXA4;!pp?P7Qb3AP1!N(%%M-ow8BRs$dVct!7Wh5F5Qu?0()> zT?~JoQ`_Q&*2thwgOjF(OKk1g=P)2XXnlA5fK?%s_J$TadG`1*mh##qqP%l=&h#z z`w9%ov43-<3=`LTk<58CP*z-cQ}gt$IG*Pv8o~ruSi(Ex0Sq{Vil;xPLpHe;J#uu& zZoKwNYinf_F#S&Nn>>IW-f_^DtXyDgHZ5_5{wN-De#S}64Vb7+NcQd?D`Ov#^Q0;G zuMw=vKgoccWhCRoLaXiUV(`fR5_Rr)Nzan9j6|t1Lp*SCtdQpjF)zfuBri;~jv9g# zccl@y>Z>c^DxP49b9q)oQ!1cxFVZ-ozF8SXh^2DQfX>VBIJ#x*Gf0S}(n5;olt^M2 z=n@dDLbS-LX#P`#7iI9WO6c`Xi`Xelg2wb|8kv4ktac&b2h zuEorN7xHvJ<8v%!CiYXV93hW^k}6yZB*ROJJPL9NlC^ovE()u7kr(kP)QRXn4FB^3 z0B1*0@quN97Sj&Qa-h&huOLSu;SVI@ry27A3j{ICd4!_FBTVrSdI=s?L5U_|s_SG$ zl9}KM81Qv3;w3C6h{ZW3XfZEiDvjNRB(Ms1evTi@jF}0il!tg0h;lj3pk#Eg&u2Z`&cE1N*o-_d+GX|An}h9s)wmryxW{^W z>+NVeW)d9gR6%{qIhD5y^Q8UEzE@H=xt3J>Nx6|Jike8zA=o<;=R@T%nnLC;QnFIh z3a)DmxdhW50nNUW@=d3s;CDdRgvn7Wis~@4wAXy}!*)LHco;wZy(ju?0p4NuJ-&r~ z5Q8=i1#JkM`AW>0rlZ7Fa)6VbQ#q>)+J7;=cZ(h0ve%aX#+z&g2P63)pm{FRg3L%p zUR`9;qd`FT&;H$Ju?o+S6J)im)NOo+pM1f#^7Uki=kYX6J>p}{kZjG&U126 ztJSVqhH2QCji6x7U?9@f-A@}2GILx@9n0BZJ!<`IVC}~XPG5H?rbQf;g(B|C9d%_J zug#cbV1W70e3Z4-?R{3iCILskO~?$eG$*=OEB{)PcIN z$ytM`azd^2bTWY}`+S*vxw#U`exp`ics5$e=-Ri-hL0b!)|=mKEt}7?0akm?x$#Ce zL?5`-@N8 z)*pVwmcR3Dw()(xWh<__(pIp7FdNgK`pYh~BbfVie(PJ9OO4s4H@?A6?r*ntPV`-Q z&bhV_&q9^ewbp_hYgVkZp*{QT;Q##srbi66+Su5>tik#>uR!siWnFZ(e)eCu`4+Bw z^I1|p_^Y9PbkgnM2&+xF@7#*w|0K$EC#zIdJojnL_GgE6(O2~zCxt)6 zW7^?)-f7Ce1_r|MKfODOCz!(0KL8~#rS;auH_u}vNV3|bl`>8ie*HD<0a(OIygZ9K z20qViIb!>E9I@5x2N`#(#nV<^---%W)?x6CUXsa$8%5=~vlN zT);9ounRVO-y6eZNOtj(pqzf@r}`=}Ejnch54m)i063$&!N=C zQN8|wcB;yju?Y<0J@AaB0ShsQMqrUo7SHm;Ch*XQE9X6cMG9<*D zItW#06X=Sm0%npVV0cF07iyMxL!Y8~B+wR^IZ7d&F;BD!kfnv32m&z38DJS&q$`Dz zTR_M-dEbSgke7<}Fcn9l5G_gMq+q0HE#d+}z$pO8E`7csFXxrV#Ojy5egzXCxlXNi)!gNWBMKub1csIfkqBRJtgRD?=P>dx*?Tl92^SA$KOFr;!8)MV;w$J_uuQK2B z6=cnGmLEmwna6^e2;pMjYrI*-jRw|zO;y*FlzR}+QJ0G&!zxdB~*TZ{k!|FAh z7R-iP6suuoSw}dOOsfFepsCH4)2P4ZlKa`zy96_o#kii7GS5@A$~u%V+*ZnzqKdX_ zz^1;1eF!zIR`@|>^hCK+^uCYas&AQQd8xDFy$#xUjdF&PM}%!4@Z_9^@%|HDm)dhL zwDaEmR-X4^6#RFxVV9MGAO3`uE6ylbzQlgchTz%DmfB1PoqK-d+3mq4-a;XWsoTJLgMZW{^RfB75uQFJ&;%Vry@D1Mf#S z`%~)e2nVWd`PfICU*Gu~?UGM^2D7Van5H~whxhI09hk<-SgUP1Z?nx>+-8q55ZZs+ zzcJV@x6N<8#h(4{_iXEXKVq|PxE`-rGi|hg*gAIYv608ww0-${>uZ{6ec1N*^Uapa zNXb0LYMqR?q^SDf378s?mQoY>w_}Wfz)5WT+p+OKqz%~&vg#miVTD5&>Q%|qM;*q$ zE235BQA%M+THury;)%xb0XZMX@q}&}Ur&To9f^s7J; z070BkCm==X5^mxZ2;#k@{*pFfXAA>GNt)g-8r1P3YQl`U5hs_Sn4h?Zb_uDXd6454 z3B-+b5HqJPDJzpXD>~1H#Hk`_#@gX2GvZ9)lb&JLCXvUPu$3j=y6MsB3W2CS2S_SC zB7u;Z)D)jXq!)hbQHk4`E0dR2QiaGTl`1U1ih!)FlzAE;We|p%y~Vh;6Y^9B>xC5k919%&UghSP?)qtL+vyTq@MCkh9LJkiJhyrfxa zjug-moPVe92K}p{zt#q)}OZ(G_EFBobZ@h5DgOf6VFH5frxNm{8P@u)z|vA!ePcQBo@B zSMp=ofeTG$37czd{8}M9afs1?HY1{yjAAO%jET?u*7?ljGegYgz52_qvL>E7twoUMrhF3x#~h28RdiAZ0%H=>4|u zg~Qg)hUI}#yx7cG;0J7tU>4F}&Ww6_17-s&ndKg`XEDo>4p4*l8}}oyy_?*ZFz{Z-byafLm=Az4Gn(2ru%fCAfxInEGmP}SFs$qciEO!BG~%9vHJqz%Wm zKW@kOowSws^RLBB>e%i7g0~yo9%6#So@<^rCG$+!sf{P3Z(8?#_fes0TlntxSQ~!- z>zO6*?mA-aoPE&u$}6o3FExWh?RN6W(|APTyn*gbMO={MaOss^$ctVc_!5i3I|z@n1$QM z6~FafP8hzLVMjTN`4zV6%9q)0X5qKq|A4JH{{rjhY=n9|Pwju`Av^x5KSz>sJ9+yz zZSe7*d4Fnp)vIh8GxN0^aJKr5Z^AsL);id%TZIWyt!9o{X_|HQ)mDWWQvFO;wpJ{) z2FywNIjrlzUH90|Py7jocKytjveHnucAf3H?_O)Y=|*c_zQn%zcmH6I-1$x0wg0Gf z96Q1wv%`)aI$-P0-b_EAY3)C`-;4pm5Cg=u*ImyU6AW~|^DP^|EM=hc1rF`PWa#|m z*3(>Pr+D&msVeuUjH>9547%u)n(^0ruYnTkqt%eDwj01t{$b2~w&AmXd;b{jKhG-D+N%jv|%6D4fAbYrC zUP=-wSA)#MtXjN*e!6JUEZ#c}aQQ~?4yKorYWsKN7`Fd+-F>h1fBT0v@21yTIbO%K zg5&*Oz6v+@&i_$j${d}P|rp5 z`c0|f909ex+=Nc3EREPAukb`gA^!e9mMfUlFI^!c@N)p* zjq`ZIaqbaZnje4(<}xJmAdhGi002M$Nklg zV4>C_89r)BmMl*+1-vYtV9JmDJT?Vhu2?K5b26>!1b2+QyLE)KN%)@^rLPcYFa(mrF=oqAUTE`j_D^hnEhaiGGwk?*!)y-5W}iVvH!BxaoE+Rl{i@hZTFn4M zFPTmW))#MrXH$hu{O~gm+NqQMwuX(Rm8+MtS^5s(tqj=MCaXT7K?AZ?EnH;doyV>1 zcYe?2U$ohFf9-Z#aM=|$|H{j)Vf|S)%s}jg!-s9(V_&yLt1q#$ul`MITDIIC`oFi@ z;`7d7&@+PBSD)2#BJ3~<{B#sADXuMe#+lVSVyl_OT!tyu9Plvuq7N}}qIfB#^3p$} zqRHyZs;!p#$mOI4P=0`tD~5c=89>N%X@a^B;r*zO)sR8{CfFw;MNfmN0oG+1S7Dwp zLD^;Y^1u9Z2CL&Xgz3$62BZh?zT0YNvUz-{&vyL9pF!KeL2~nK$GtzbI@;Qvd)9`w zvp3|tjn;h4bqs(mU<2?a*06Y~J@xw^vns+m6!Vd;F8V&+idL+)zQg-%-lmP#$l+e{ zLUdru^Y-Yc{=uI8+fUiChaLcnKy<&fia{!O{D}1q584U_6J_+J_6P2<1q><-x0F4n z25iIG>ul-LWejL_SXG&=#IsL7gXB}+{SKx^Y)1a+U3QH3V`zeR0@J(U^H$p6iiOt0 zfV_`-4zYhEnf3U)L0iy--Uln`d-$uOowX6W!a9b^ZD;SeJ=-&C2N^JEd@8^Fepr|K zgBVEJBuomtz8Ohz*L#=-0v_u5xKba&l;RcV z?WRFqj?my&zL4`17*P6Zl9NJ6Y2|#cs!p6_{}WRpl3Cz%`3tW$&w(D(fPoc3;p>59 z<@iSy;sU-hLrHvgX(Oj`3aO+I&X`}GvgyF{`5aF2+16fiWaMc6WAuH0(}AIBuW0$#mRX`nv8FfOYkU1PF@tG zAj%Y(GG2+d!eR#zev&QKAS)y?OX`3tiy7cC9rH37;giUm0f~T;paGCl5+cR3 z4`qUR#*}iLJW@oNLm*gym-2A}7tb*qIlvq{@^~>hqVRbgoHWpjsY?fsBCk}whssc| z2?(LhW0`?A@d(_6m*_K@3j9Trvn!Naf+N9Fo(q|78Sj!ZqC7c`goWN^o+3{U6o$|; zJcyjGgpZ>{M*6{xIEmJi@x{zupY) zs%N9Zwcz3930&f}a_G*_pRj(+31+NbjnDnFY?K-M0~};^h-LGWDD~Ya?cJ22fj~F2 z+AHj5_uR>b;}Hf6VYXAJ)B35h{J`s(%E!O<2e=m? z+QAKc$#S?KBKeOs#%@UjJ_+(@b~s$pr%8>D(AIY&%<}y ziM_{d-P_-4);7;he(Rf7)w;+g86-$ilNKnO`SJ-?7rHvxSFxCV6)UII z=bp1Y-~WMiH_fxTOEy_Edky+oIq1fQ`q}Su8ZCP&Zu!^;?9_>)cK0KX+v=t|n|-R! zRxqGhfCrozEKjHpC8eM3xXk?1K0xbhXITyY_2s$6l|@wmnPiJyNp;3K@N9&3@5jui zuMr>Y>=DqOlL^|OckfOcV*pvjz^Il!BU|=S24Ia0G-~E^N;InhQc4FnLt^=>Ut^sz z?O+w8wq=$b_|oU>#1Fq`$DexK%256n;y!cf`#xYT>o;J!(`$1sxWE>$H)50-<0d@# z9K{T0l$qw%OE1Rj(oD{*m~PE%%k z;|vyt9(;hq+&XOi>tB!j)7Yr}h^=IRv3SiYTefnw_vsn9oZWQMAhe6idDDM z@2l9jyMB>%H4NH`CJvFC+2rre0PmOfk;v7pdfNCnv&DM$Ton@-RS~ZuuS%;SY0cy=t4F@YCi}d-;oSQxG^n7KZ^^-A3V|@ z5uR6RI^_XH;*g)=cr65u@R-*3C}N+M7X|?A0pML-9QOdIjC2KMly4P-t^)^-+g%+; zZOv7ea;^rG7PO--Z#`)Ap85=OB3HTW?HJs_iQxA=Xtf*G;SnpW1muJs;}(cip4zIs zqtnU`xBGy1l7T}w_>1yD3r{Q2@eU>c5t*h1UJ;mOCj1ZvtWc&y65bRtB@;)-OC%A$ zsLG|RP(ol7V3BD;h{;rLF&Sv5-ixKgJpYj?rSz0;37nM|03}=!4q=KqXHP^3bxbTm zsR^@$Q=|_)GGmt7bBZz^r4L0V9M}fV;T|~wOyxzYluU4hb5NF!2njDMY%1Wz@E|Bb zB@zCU5nCdwPe^-9q(&;C4TUGs@|FxpB1vQ(OSFW7r)1zF)cI_@{@7XCMXJ|Lf+Ixhw^qi6+UF z$@?O-c|PSkTglk@>~o%hL^D;C~Zy%>5~3V$*sU_sorqCnT7 zd@ZcTSORm6QS9$^uv7J{=~mv%hTEt6tfFnMjXwCe_3qq_hn5+(Y{harf8A=kWYr3L z$;xGR(ZacQAv4=oE^V_{tzBhTY+P&Sty^nz@wHuto&79a?#*Nqqc%aluzQz1cHcdi z-b}OEm|+Cb{O*c|M3k};Z0xn`MF5-mNI=qLR!vB1yb#2*aja_oniHVLjE;FlIg#tYL(hKa-#~!xxFS*>7u3l*0 z#b&szK3n6|NgJtq84PuIuma)v zT4=$wBHmrfM$E3e>5VpHVXF<@{h*Dq!FKn~9ag>Tpv_{?H2qmlLS_#}qddO!WBbn^ zQ<%(obO8S95zAsqlNd}`D14NSqbRXAOP89 z>cEM<T{y;uW$G;RCO1E!4KxU-0b0+hOKtTG6n|WF)-&50 z#n-^nl~3AM3hn^QO?}gAZG@ASC7(95%AM!P_#i7!^X#k-f5ett`%3HD_B^Id_~A$4 zolcw7;??HV_r8v+(|(&qKdYTPAHJ1#07d-izx_L#IDC**kP&Nn?Q3ks+itNL%T`&_ znl*UxS!i2-=MSv!o*!{8M4i>)b?Vg4U9`ibEk${6#>A%%+wXb?90wnM)SmnEzq02) z^Y?bNyxY$H!#}X4cmo<{)uBP=aqN>>#tie!^Ut*-m}>QY?|U}HGhh4aS9AE-uYtZO|;U$jy-nZpT1~g9Y<{Jthv^^e1>(+thZk3KE&XAm=!A;hW29r zgPu3EGWXG#y^K(+bJaAablQ&L3fnh;6;bzy?ZFe1%+RLsu2iA;`?o<4UJ5;YGR5AN zcPaGx1MbSbaAMl=&k$F>H3fI0!CZ`ILrXx zm8TB?^ge3lznsoIf(ha&MwQzaarOeMd0KtbMKgLi{>_u}ExGh@iI<`^)UAenNF&(e zmubb#FES(`K|!_AL-9lD#@MHEp85m@Vl$*jRi}$|}4^0O_qKT-*`Z_4(i|n-L5{Y0Ia6>u_ zI>9Fy;H9z$3B)gpojG!b{8CUZZ3#R}1bG7U08|x{OoICxnD7hzNqGWi9J0D+kdo#I zt5%6h;fq~xO)?Zwk_-h{N%?~7-7Gd*lqn}ovIWXwJyS&l^KMY+3xy(oVf0rX0C-bI z`I4AHsE`Wsq#T7*!YdqM1mSZT!vyxQB;l0^AKO$PC?iUW1hN23Wfx(h%y>lNlpjLJ z5LRL-g4oVr2+0G-&hs)synw6>$MU?$Ba%7KkeT5MrYi(0KOz$(3340<3OoK6u4u%8 zi%3o%sRfI9j+5{sQNo`ZCSF;`b>7aXq>La+5FqdfGNccy!-4=}$)%fc6ikt=kWRRP zgnIxG1RA}ho)=#tXD9Z$(hH98l0Q#}l>mHY*s~}Vvrr=Eln=UXwRA@*S2go+OId^4 z&8G&ea>-0iQ|+=o4%_PC05IIWxF`4dY|L%r6wQUqW-pvG6CeAyUPNgf(`+~gIGw~M z`!FZL?s)Vu+w!%qS;uGo*=FMT<~U{>y;U`M58}jM)dxi}*!hNpfX&#}8cVhzpHtN{-yC-&^M+CJ*gRAc?M*zeD2 zv8R9X6I-@!v#sY;ddmQ?hx$nWNNH^{T^&E9T)}90Vth0xuuGBvzZxQZF|0PyH&Aa zcJ;aE+NE!}(bimaDN6Z;Hi|Maw(E#{X7L(p7PB7nk#3$x*FKx*>#%7r#}@h>w^$qY z{4HzN`reA2U-+DLpX{}D>uwh)A>xL++j}7Jh$T-13s)Cu*Q8v@| z?cZ$`3=VD2^S1c4Z??-m{6WlddaQH%4jW?@zGf$W-aAi#uU<;IGv_gz-er?0Y$MF7 z@B43mX-A%W+-lfJzW%p=+p1V?+IZ7j8C+Ik&)>vMe?LkaCk|Y2w$*OhWUVj1+D`4> zX$$b;)4XDt5BTIIXdCW3bz*e$k|oyu@B?;=Rgkm(@Z)SWue5J}`BuC0oBw8C|J)sR z;^^~iL>;$P>(<+BR#f(L8nNATuXP?cWGk+@hE=9EJNSP-Wdp44bliErow^ItwS$k? z(5i*jzhbU+G~kXCrM{N~)1=`~GSCi#OxjHCrT3U;R;fR|xBT_eUk>25^ZA}}dmh{V zPF4!opKPWIT>{`Fp~Wi_O7ZoT~& z_qsTf^?`TB5M0f?SF_?%!9JNWdH#y40}3aYoRB@f92V#sU2@Uv>`)pBAR<=y%G~mnvOpun{P8xMLNQSv)T-XA?8k7t(d+Xv|GK3P_1Ag=B@? z@NEr=2uXP%=@dzK6qR#Nd1nk0gIET{B{brg=wj=Ne*%RtrGy*fv09k|4n@dO260aW zNcJ2fjWRta@sJFWI#4(u+){Z71VZE*!!x6~6hcg8Ci)bfR**6ZK%!?PMV>RlBj5N0 zJ;fUsp@DCKd$FX58&SzgR0%1xRt7B@G&_|uj`_rk1!sMf4I6&e~rQB!+TuMze+4B!n%v*msAZiG@%i98JrwYF#fUYj>(k^T4o@w+yM zvlK>|O@7I1f5SFkdZ`WJ`m-O`luKXnGL+^@JOACkWrNs}KmXgmZ}Z;t2Aj2MgYCcL z%T}{sv3q+8f6rak`_L0sdH0iS=B?zf!KUHra(tZ8q4%L+-(OqS$f0j2{nbsdtVQXEH~;nA z%28^yzeHXo#xPeJz_xz?yY^9LYs+M6MIRYO@#@>N-KJl1k*&V@9kv1A_=~T--pyUA z*dH<--}+(=nHORQ=Irc3+V84#hU(FbG_)cr7LKRo`ZRp0a)8*Xf{@~3uL z&E`$Ef|GQQA3WfG-bXr4`r%oF%+Qbac3T^(3e#DUYUIGKF7`gWaL-R|`^W!+JrrLt z!`*Gy-9NJW3of!HuYH~Ed-^e3^wO8wk(0+csO?V7gBIH2)yr(nx(y7t4%5eKZOMvN z*1mg>mA`;V$lmRkO0jqVc2s82b<6Ue9{XBl@z*LLrqF#*NrSQvh zRZ`4d9xbzIKp?RbdJI!i9C$2_BHVEXuhaN$)y|z|&70R*)#6qgWl&JOinJNu0zy*U za)nlzi7JITB(%3s3VA6WL8?N5B5=#lvxs9QRHyOpZ2~7|Q}ILE?+_Jp3o4|4F9Yw0 zks*eN--Dp3K*Az!ipP*v_gJcH$%7ILw9;c({Ej1F8maWk&HgUg%k3o(&lYXe&M-fEF+8j5vLqD<;@nbB9h+c zT&RQ}8D&9$Cms%t3C}5z1%6^FU??<1OORqtRzQdpX!4vWxB!J{&MlASG`~3ZYYzYl zvV_vSM@UBH@RtyPr)WgX^T>&0k)(hb=|VFGe$FXF2{7kbEW^P<3i*l!0aTV!>PE`* zoEW5d2veSuW_T$tFbuo`>l9CPd0P3d ziAHFFj{^fd5ae`49+5VpP?P|0%K$MR06E<0gkHq;q{Iar`GkbS0oOY|L9Hm%Fi^LAL$@*PJ@m3A^uejPq9})Fdc?*&b zRH+q&Idkn)?@8Oq;Zl>>_0DQN+m@|=g)LgP*=AsNbohl`R=@R-P3MGO9ePy7#>|le z%-k(qYxT?L+r#(WZ@=~4ccXv~+T9O4VzW7%%H3X~u=VzZ1IGqY`ukD%W!Hb=WQVnL zxYIm5AvH6*zJ2#@d&e!e*e&mTvwh*#FWKu}^IF_4PTKwle{QqdyO~iRw?!A6V-1*@ zOkkqY`Lp|MXtLU7tzT=?E!H3 zc+mEK{hM~^)1R{bM;^jdh=Cc3td!!)+4JrAw{EwJ)n~CW`1PzloU*|O@3+c@>96$SI*N33GYvo;gtX(-v1Y(!;bgWWkN z?2ciEMZ4FO&)^i~nH-pf(odfF%8W*jMXLe~|9qq4kZk)|y%?N^kq~~{g*aIaZ0C0D ztnuT&3LANB_ZQ+BXXVSTwC8bA+IQfft-khJ+xz|RS~I3QRhU&YUV51=x#pFwB=_F? z1M0$oT7CHM?>lAF-~C=&{gDq_3vOU57&LS-AUO52`)#sqnYCcUf9mItS@X&@c&=ja z!=m}tw0MCHv*NJ(XAjx^fAbIa^k@FgI>!5LbopExz_h1t-#)8uTWzOUp=mgGvn_wk zjkcFITzdA|>@QegOP4LSS(pfQcJ$cX#Y=3}#?97?dDKY`O{?wY9pM18!Ba=<@U|b= zz`8c;n9J$bm^k&KU=FbvS*ALAmt+%D?038zg+E3vux&neBJ}zyyzfddd7B z&sg~WCrHB4%UhBsKm^4wrvsqxlkk7RB{}J0cBI$rrfXkj3+CgAihikq`6%a6eD0rb zvpau$kNw?W{hrO4hv^opK@YMr)I=R*+NfgErEl9fbYpnf3bX%7{f-#a1(bMYk%E}O zlFVuX25sXEjLYZGwK`;);Q5Zpdz6+<)ka*|_f_!{Y19OH85v)}QW-J3WN?txX)2OR ziyRAV3sE5;Pom4P9qxDqBK zd5Iq+nOuoH;wN~9ngE%kiPst0C-I6XdbWW)+%ul1m7f(7IOJM*;&^(fGSnXnImLJ^ z5g{Y*EHn0DPp5KYW)d(Z#k)YK_uH=w7LvNBn&uEko`+V%j~@Kaz4KlNdbw4#KUO= zk>4Y)Ko|I(1`mM9(i0N2AgbshTu~RwBO$J=RF1e14@uz!Y^N&XMf{8|ri*fBw28+Q z98Zd;%jyv&AS;wxLX+n?qSHA+UXK@{FUkUPz>oCafzt znH=W;9JCVIzz*?)HXWtzH7$dj-pXb}?At3*0%|!EV6ywT4S!>+)m?bC&AIWFEW@+u z5TE}uI8f|3_SZukI#kbWeq~j)%|-E^JG;@gZ+(_o;s)EZeHZ2wRm{-OVH0gNcKIyD zQ@;@g4l=Dt8xqwPf=ll3v!)MQsE5ybf~y~RR2etJ8RJkf4FbAP9kU<)>*ws5JD;~} z-*dBVzHqa3p6s;!JGa@uBhT7wW_ZilR>BvU_H*}*BVS*)~sl=88hna$9F$qx8C}B+smo0 zKmE=F_VK^`g#D0Bs1Mxn9ou~Et861~2dhqbrHWom$M zh!)SwXWp4rFPl+ogUmv&{`6;T@x|xZWB>DiSpWC$v?|UCnB;s0bW1lkDQ8t?{OC@r ze(BY=)_d!{||7yk#7j7RO#zy3RGyNrP*t2BBadKf&lKk>A^@EP34p4DU< z-}N3=0_OQ(Rd(dVtl}I$bkKHT4%V>csMWUbvNeDCX{%ww`SySR9?xYRs|NF|kBz^h zw0R?kjcJAAz*oP{$=Tbj;_NmXZmD8l1A`t0pmOOt$$O*Iv}rZkNv0!gWTqi>y0-S$ zXcePIgD3_>qnJtc@cfV9xBo!@5T{3vSv@p*?=t(__<;$Z5Zatbif7*#Jqn&hNGq!E zodW|*asMB~z`*gGGNnZo$ef?@!c~L|k|9yCkW9bt1qOk%co*(3xW-w1tY#qjOxL)5 z^MC%4ox5f+?ta+^!aI5QPad@Y^8TCcGk<%VU31+9-o{U#IANc9@FAPccV|>9k($|8 zIr?@m((;qd_5E|1fvJ4*!bLiZriijbT%l^}R4E&nvenN$muIOWBbEY>D~zQPiNvB+ zcF2q|M-1?oFGVv_IBk+APzL-!oN)_fOrdjpM+q`}xv^9i0sL^Kd{T)=mM2guGnVJ+ zC}S}$W~7t6Q^Qi;d6|KKfp_E+nn~rv^2M7x^)=CiR4g;$crxM(L-P5hc&v-k2`)a4 z67Z5NF$G>JO@cd3#v|~PJf5F!;+>UEEF=O?B|IIe6p#D@IPvn7=bafYHcssP5>6~u zOkoQ&bmS0MCZJe?$Kx%_&)ZG7&NbkN0urc{*7*ipA*8oQU?B!ELKt9)+=YoU#t7De67DcbG2NM+R-RE-P(+EEP2RQUf zGmY{Q-_4Bq3`}&UVIN*qKOGN13=UWwkP@zgjr@v2`HUHHDf#;G){MU^N~$ZctbWv4 zra_Wb#ea~!X_88?0JMHNw*u%hSyZVvV%xD!# zn97{S;ZA$8L*M<#^LEq6K8%7kV&D78JvO&xChj}CQ94H5>yH$_bJs7nBfECn+KuPi zdpKmPbN{o{ZLV!twbbtY?EkY-P8hZazHiH~{Y|_2t#7s=X1p60wqdW|W+$I{-j-i| zErW?3D{IA+)v(TR=(pmZNXJ9w^5$e2@X-}zV`u4t9Z_=eyD5sL=&N# zFrv`v(_dRd>|M4GfHs#i~a5x+uZmJlZZF%!M*kIml6YQsW;U7PZH!2QOV>P3* z{g4ggp=k4mK58BNUa*5d`myyqa6f~-4y&LH^_7;^#n|sJvhzRqA!}K-%=$UJtcufh zx8HGxZU4k4tn25G*uYhr?Lzh#)YLcF;|#2}JoTitGvJZ!{fc$#Y~I1JHL8|b#mxe87^JN*l>RGNB7vtFMiR+7frLFvvJ)yZ@P7GU{^QF zpf;tCqrhvkvv254?-wm6bFxa{I@FH;DE;Le#y4SGJBDp5dp)`th+s~R3s0H2`OBb& z=dUnxA7}o3cAx$q2F_Dv`=QNDeW1@*03uxZ(294!Q>b!6ND;AIV92e!@aM@qPuT)_ z{}84UfsdkRyukg17i~Cm!F&!btFt2vEN^_pOKm=zueIk#Wo_j&>z7`2qh0^%iy4=) za!Hv-vGKnbGob0TUDU(9m@>XyHN3}Ve3!=QE81v%+I0q*q_(6>^$Mw2;gnXAcJ$MO zg^)hJM8nGy!;}tCZz2b&PlQMTeQHS}Ivti374sY;#>0ci=>m1)5yGs%L?by;R*Gb4 ziI68emM2B&R|X=I#S5`gq)3wx3;Z*Z$R{1p7%0L$Jd;FR%t?InJUz?wBmjx7Sdw4~CCE%k5fFkY{5+Xa6j%kk3_yP_ffN#jXkNAm&%`!k7@vpU%_4)C zpOc2nyzhs0%ku*PUxN^#vRPgN70S#D6CS*?vQs3ZhAMwX86s#!j6|QPy{OpW87w`3 z5;=ak#IH2~@FHm7Twr4UmPSZP9@q{Jc_DgwTs(sU=-icXvYa&1WB?-JzqeIR8{rvV zD&7Ik+;P=GxODfDJQC~VS$Tf=&&IgUTN~VdnhN!yunw>x(>;dl*=>u?Imf!o$L+bVf5)bG zv9Xsu5HcC6Wfi0s<>BzL!}i}l@rU;6H(qCd{;9vV8!%UCqpa`#>HoI*^B3C{H@?y4 ztzKnqSG~rj*G;pg1+8{!%hNV~tP9`rt8C7O)wb=9Z`ho5oBY(*5oVKXXU(#i=bdYf z45kK|0pI_<@7vx#|KHa8-~(2U?X%o^men`=3BQKvkS~>Jxr9xm^5oT{!^x*8u6zIJ zy?#VM=uDpZ}i?JhO$pADoii z%Es^u*IIYWH2MsOb&ZVp-VpU-b?XT=5?xy>B;`CLH=p7itYk1c#JL+sITd?{HuPfO z-_CPYzn{h|b+w+O7)0e?g8=XI@Np%+Bu$>+J|GZH9?xjt6>y3nxPr&OV%)#6D&M~s z;OL){x)jOsNUJ{xobvLNAivs09mW`BExLe{ldpWKRW-1Aox$AYOPAV$dQR+S@Fdr~ z>(5zjYuC3?IQ@}0FM$$-z<10Erl6L=u5d zyL@wH5uv~%L)OQGs{}1&MqqgR15z$qQq({?jc?+a=OygCpve3*+9|@gEP*;w_smiR^F1P=Hyl^CUZrcl30DIUu$1|IhxC&faKP)uAix-4HgxSRhyJJQ-OlonKjx0x8kw?{Jbf$N%MHzuo{K3agK%U-4s^)qzNsCj|0S zp2v!0fq~zPc>duE(7-FBNt{we6;)r*o zh&(+=Fh^7(@XTb5xFvA?pcnZ@+JGubXPWU6Z9oa|R6;I~qXv#bar6+$>kr(yWN0as zh5oXn7cYH4$(4>-5Akly5^7L37uJR!TAdM4$?R}>)qwTx+RCix3)Xk=hz&Dic=tn( z;H!J7EoK(BzqiX}sz3>s6s}N8Jm{5Cp-sGmvV)e4;qwq)U7z^`s#SpS5s+G?cO5ML zWd5T|bQ36@PV1U5-hoiWWV_#tImi%-K`pcR)0k0Tg$YL&E+#v-<7J0K&T5z~A7IIT z7}tT*nHg_roMk=FK5o0&wA+mGf8JZ(W)(ONx`$ccW;__J-F%*1IGe4}xDq}0oQ+oZ z{G+z}fd{Otz1=GIAF+!+^t*T&>9l7*_Pf?{_4T%B?Q+}oy&v0}*S#Lw7gkR25kG*p zqV_NSJtjPDR?p@^nfTPV%y#Abz<0lGdp`X)Hi-gL*SgZG>RN09bDA>FFqqUvY&{Uw zSd~^^l5sTcplDf7H_CqphiOf7oBIJ2+VR=5ZQqwaXDwG;ZA)MCDm(rh1Ci}}t(*<8 zlPLdUGl|>MiWdC-KX9jY+zjwH*CNp3GY#Or#kPV3ve6B>AzJBdgz-AS%K+2(r$fs-ODN0>`h_CU zvr`?%ZDiGK8``+g2G|SG&%O&CcsGPeirm_c%REXK4dw5u4*>Al&oin=VMRsdur9N` zZreX38CIQ z&+|~_DXl!o9nwSs%<~Fx<;P1g|0~cqAR)Y17+%{K%XPR`mC8`kM;LHdGizVDX`}U^ z(7yz4P8tBnn~zQrfAY!w?7gXBZ<2f=(Ymx@duO-ZN1tor)Nc&{q^MUA4zdqtoPJf$ z2LDOE50iW!^zMXz0=iV<|`(w2MdK8$c-|W06Nn zDD&F9CRgd08P@a?j+0PVx9;94BWLTgZ_UG=@`>fw0h`CHZ+G z#gZ_Y90^eJR3dgs`KcW;f(#Jqk;DB}1(=l)BMJiNsnX=Mzf9~`-vdyPD34~bAh0KM zm;}m{HJ6UO@LxH3EuDl9V*w{b6D*+z41LTMQ&R*|?*89X37HUZK*(Srnedb!<1tj= z+ymki9)V#-qg)6A2Pe$s@vM*&g(xX26c=e@*?AozFDKUxycqW|;%9QEbPQdl6b~Xs z9)WM*=L{7UcWxn_>Q>4-l`phJr*I0KJkOoV%hTjINyLG=D5vvHbS{r)r<>C{Z?}vW ztzKO5q8F$m_=gUd6iLOUTod;_0L*NKy#Q!>ic6{1Y!`oWjdz?`-|HL4ZDSKQ%y2Ac zM!cqc)Lm^3KC{)zem2u)ee4Fi^Z93N5+CKa{FhrexU1IoGV@$sGu`Sjx2UMV>_@Yk zu~)iC#JwCrB}@7kyST!LS7>*s6 zPO^!Trt-ccC1_O25au~c-*&T2$HeQzmTh*?2R^_lxF_uBLn!o5KWm*2{>)n6#X(%J ze1$94jT#sn+-KW9`e7JR75-!hHuwD>u(=!0qE8Ll{vY4Po{>5RPp`F}_Jj7=$N#|2 z`fs1)1nPy>vE>ugK5QMh@7(d=gSPk1Z`-UJuDAIN2CDGT(tV=Cj^Zh4 z;>qW&mhzUp?*q0B7oCrMO=llqTC#49^)djc19#WX-8{1fTfSJ>!MUZKi0nXyU0Syen6&gEpJ;c4ItMvovoNDDwm0UGF*;c-uuLC7nZy==mcu1)2L z3IyXu4Mfap7BpZnWC>OI&DYQ2;rx=tQ!jRv?ERUjJ85@r!+5k+WrY!Lc1VqHXmblm+tDZAuS znT0#ibG@DNG+eDt!F6d6Ms_Fs>ucb9QwjfYwJcEw7f?)Ytd)Z>%wMc2ms6#yqyZsB z%P!g?WvlB%j{jB6;P*naN80;Vaq~yS*XY&m= z!6?p^S$vhK!-j4%lLK=6JKvYJ@3=@p0>u*>Vzw46e0{S$Y6U0(Up z=VW^O8oAE**?+Qc@D#10`dd*dmzik72!zX3vyZ0gjQjP5V03!SR?B`gI zu^0P9)JiS}f;AYRuEKz6>gWmSyz3h>k39$Gx7Nu>TZIhOmtpS+gfT@Q&2S9`zKHN1 z<^7882zMUtT?}9ga9yx-0|rh@_&Sg$XC_4U4bRF;*tCpMfXbj-F$_n2PI z+5Xh5zR&ji?0=luk2H`)e#l{}^n5=64`7h150{k{mXrZhT>vJzpP0d)9STO)baq0= zBIQH+%Z~G*feb#=6Y$|L#Phud8@c7;`6Cmmevw0fGSP##Fo zL!pUgtg%0cRG`?mVzP+gtIszyX^3l(hRwg5gGfR zVo6LaB8@aKXcF?^$iTUTpgVCoL!G7rF#gs!J@JW1gQA=XN|i#^cu?@Zib5Qas=%|6 zhC;k;hBPh{u4g|PC{%-j{dbAW(@=-AM*@9#P-jX#%?3cI2ISN$Da8f?MEcmLE+FRW)QQ+S*@rvvRN&%z_^%>sjJT*2gDSw0`W4wlQJv_~*OGT$;C^JQy{#p8^^|ihs zZ)i_swT#u5;7DixjYspT4)*q@<*FjCOH%NhrU|`@&%|j7Hw=mJpAoJPVvm3|aA#SC z6`-&efhvaGgSqKS`1$wGNa^aevT@S}ME60AcDT*7A{=8WHq{!yAON1}@KdLz_=g{B zHCA9o<^)$DHDXv5${bzrUQo9PJmFM<_2|=$o7naMNDLlz8-OetWQF*#XFcs_dSw*G z?O^Nf_8ipM6exeteINPmjq_ zEFf*Z=4M%U%k?t$*yD)9f1_M*`)x7`SCTSDf*I+N=YR9JWUQnX3#5zW&^Ny!%@^&G zE$_WW$`K+oA72lqMld6Ov{Ra~2B7othhRkJ$xejo>^b;~42;Z3JGPAd!FTVI@BjQU z>8BwF111N0z`jR6{RE>T@|6_wGU5|nO z;K3Jue+9!Y=1NsbsT5+j*=gvMhkh@E{K6T2fr0tY4Z$!Y-g51A=)75(A03l2EZ%Lt z_A2RxpL{-|J~du-6&Bml-3Obqed&wR_w?gZa@pllhqhN-ewDQDxmo#^q|7|{ zGbw`H?YF!~23~kc2EOVGJ+g^X9W2QW1d<%O~4VBz>(zF``)ML_m;9 zJ{8h^s8xp=ZFL&Z^% zfDYgw1;B89G#6-M_kvjI0dR4V&T)Z9la!t*dNRji%w!wu5s?yT@>1NufzSIVMQIgy zTY@a7^CG!ZDyFh&NlD&S3QSr|Jp&n?lC&`4XO2u>DS26GsMxekX_3Asj8O$Rg{J_% zspD-J06>Mb7NKEjP;4wz)SE05nV`K>C=mHbmdY#4=~D1S2w4MX#8aO3x@q8O)L{Kj zy#BXNRQ?n!$cu6*CDxH*agDX!M4;2MMUgE{qog?TAY8LaS;5Ym2(a2hIo6?N73kt9 z)a0t5L_YN~AtWK(>a@i3#;dGOPud{MWGg#`Byh5^q_kQfAkbJjsgH<+#-!k^V4f(( zQ!T38OgQO{CQ!tLaFZETP@Kb5PJsB25^Q9BP*1?XX)BtSqD2^em=@*^xdkw~a|>sr zcJ&7R91m|1%)kvJ8qk!iU5~Jqc?&XtA9Jn;$iXZy<9O$D7CE+oFD%Zg!qCJ3z>J}w z8>;0DsI3{G@lT`4=xEr6w?}X<;#YzKX>4qimX>p|C#zK1r6?EKyTMK-vgytbX@r-~ zBgdr`yTA?{KM4S0K%KwC5QB{q2c)Q>R;uA=+=vCekP)9lX|qd7)H+Ep%c=yrcufot6Dm3+Xy>RF;Y>5j|#|T!^nYUB?ed zUGrM0!Ww|?=buM_BJ8p7BYX+iyj4mO0(A7L$7Ko8nPywDc4F6BnL*!9z#VD?hT{x; z^li6kK12Lkg?^$Dj%z}{@?v~0DZsrvhtXr-VT0ocAsb zO5Av6yd&>3_KA^?CojSSU6#S0HvWAO;3+Sh4WKPW0skozx+B#;r6JslX&jn}gFgv? z8bKr^;581=|I*`pXdr}(*k`d>Tk{RqN(sIIEq0wnq@@RBWEieo^ZD{2L;+g6rdBsl z({~c}3kR$40l;G%0H81F`m=!D$iui+?`1WLbZ|hk0wzFo2VTRr)M@mkUEvaQUK-BQ;_SD2%`k$MMkAX zK>@Ce*{8^*Ov>lFWRq%HDUfrM)XQn&0E_jfXpnWzGzS$|s>tIRr%uU;jDf~UO@itc zL8Q%KO$sjANDLmI5fl{??~TCc7uHiS#JWfl$S6~WWu90XdSU0 zXV5h8hrCj|43!9kT62L3Nm3(n0UY(vvH>lNb3zoe5oZ;eOk;~Q+CXJDM4BhI53*xE z=$lCw^z}9wQgzCpV=wZ*>q@ynHxuiv&V;W-pXM{X%T|F}x8)qJ96=|8QJIt~EaD)J z^*arVsdAuseVr1yT7ilRa>Mh$S>3b@*37z9d@AQ1YDl8;~u}p6M=@BkWKK$-y`+Mab|KZQ1X??Ri{_&5?DBL#&5eI%= zuh>M!xN0P7*p^vS6Sx!^+|k<}MmBqjKYP*q(c{V%_O1=43_!!?)7 zsqcMF&VJ^vrSgWGq#s`tUU=z{Jn+P0@?ZY>A7vLd!MX_{F*m}+Wq5E<-KX-#sy_Y9_=(kGv#*bmf|7Aqg89vb=Ef{z-v@}ZB*|XA(#i;f0f#0-ymrT{c z_`w%~yzX-d*$Kb&dd!|4+bg|?J7hg}-L1aqI_duUmnFBR5gmaFV9>H3*%d_?0C6C) zG`oPX|1kCuZy!Ca#yH;{s{k*az|6P~=n7@}$SJA3>|!a#ENjP4ek#5H@OLsf(1UdY zMN)k8O)^!!N-p^1uj5M*!kgZMaGKaTx^CBQ3>u5DK)XiTAAJPTLQ7@Sd)|e05zV;H z3v%kEm*nYx`ny`_i?Rxld)8if zfy`j!cF{#U5P_)>gU>Npvvs>Pw{4aItb-W2=ZA1vD#fi@EhiuNK8*HLGJp9t8Eq_+ zVeC>ohATXU&syB5i?jWFNpgo?8rB?e@?Spsgob}U_Oh79H?h;${Oi@hIoUTpCnGwD z#2y&)r$g8|JVDRIH)_X#q4d%o1tXhRUDhhB`%X;yrS|@N64X!x7 z^9`hw%W+15Gat_MkzG#X()l+)$F^|INg3|bJQ(0z_rv(d0J9WPfVxgi$cJvfQ3n9r z2uueysd`vV8~|XVp%T{smkQ5$%J>2e*KQPGP@0R0fMhq|OeJ&h3@tqNG&YlKH{uU4E#}2YbY84UTtuwbxj^13V1^z@(7)jCp@JT}ZtcREe!|xTX%x0J^5B z>&B-i9D&q1sEl4i0zgDMQ$6&J^QGBi+mdc_vM84T?;EYeG|;o20;PdT>>{8;l2;&T zGRGr{ZrZYxK1oB#8HJndtfB$m*!isw0C3?`mm}!tngvYi=HQFkv6^8|1c1KCQ~GC= zoiEBFq46qvI9Z}+ljMA$jjRzy5w1_bC&KjQV?t7NL5OmBok)4pMfpk&V3ckAloi|L zIG5)#yiGy26-}1%n~+4d^9R19PV%JdV=*NM*+4)j33+}U{m4!J6m2M{;mc&XToX=a ztIFY7sp)U^P?j6>CRc@I@~c9GC%XHOhV`|{G73}Q@}Uk24mwa&F=j&j zZI_aZcSzs;-;j&`pFSnpT90u@bO=L(Kg+|xN#lg&SQ|#c?g?o!H~^`;d$oZ zK^Zx8NXG8|iWF?SL`tx*^f|<=fAZ{rJd5y@PdxcF7Dg9K19t9hLI}*YF#c;XgT7|X z8X3jffZ>s0^{1!n5{($x!rDd-ffjKcCgJ~H0^_zCZLfIwWofV)u9+O_yx!>tZtQw{m;ul&yZ}wAfV*(OQrYjuS!wfYJ~Th zm)u!AwdeynMin4m1ecb47`A!%%2R}etR*n~i?DDSUSQZ*$!K%oa>T{2LqGkV^xppy z8N{9gWgq*56kPKTEK;tP%V79(2jm%ijo604&IBSGwcmTMj2<~HZ8u#H!);EZ_*Ac7 z4>z(w%=SMjPyM?;moDj%w)ekVw*JN^W!G>0nykL@-Pi=|Iyr~+CX-m;JN&(Sq~V5} zWy5XnmzV$PGgxN;_p==rVIPPM*!j60gQB&vZY`n!ojfHSpTA2ArZJ=2QYaH`#WJ^N zvrJ&;*b&|vXdm~G;MXAD?-(1RameT|625$(FSuPDUB>9fHkw;1ry=Xbfk`yN*~$fG%lS#UpnXEvxj?Ws;gUu4jj~VCk1#G3-D}qbWx(6%@uuYe5zy5R!!7zY68FD}zYY)~{0*8>j`_X5c2=#tTIVb|u1FT|H9Tvff; zl#`ew6kUY1OAD*G)SrFg4e^v9J|p3XmP>>)a7XkVpk!9 z$#hGD;_VcSUT2H^ULVr9H-Zy|R1?pua3@GHlOIB3-O!U%v5Y)_50kPBOv#APA*eF+ z_4<%{Hb`R8WTqrX8de$!lrCPUP_1`sC}t&;naIsTo>%d$4**mJDB*fAMWf943gFmr z)QK-^raV%7EF}nMG_fiAgoM0A@S?e#NSMe1O@sz!O9IsKS`4%y?}}P66PMJPYDSPx zJ{Q4;I6o*e^vWzdC8+H`iB-6XbzmYR_LtU|;I)3TTFq9c2}yKOauOMz*O8Uu;_WpP_c%$3P`CumIQ(XWIWDDA{@pO zWE;p}$YXxpjAIbxaz+iaX!$VWPS6(|_w~9}`Izx6lLx)_V*&fx787gsof!AO0iK2zQZM ztZ``Cv=tF##$@mJzbmIc`&k)-`$_elYo&4HI*eTAqz~Z;PvdLHtEbM$v%P(C6b9)e zjG0A58mg(Sf{_VB8ts4i<$Z9UpGF(2^lL>0z92mR+zZf)Up-)Y>I`(aSD+^&$IL=k z&Xkt)ofEnEBFS&8mcG6LIoESeD!|u-8PmnF5t)Y}wPV+IEPO?r`hjs6uNX9;vleiT zh7o7~+~~ZnL&({-QBK`+H$s!PU{r)b7cL0ntm{7v^yu!w_~%+iABUey#I;BN!TpJg zK|m(c7{E;8dX>VT|I*+7ZEVWbCY!FgT1KE(VP&0k9oP?-A4E*T^=!hxW7n^JL{>F5 zA-?`bHT+)u>%WuZ|M$O__NSke(%<@kT=KDx<31~q{rmSzPglG2^z=&;+A(MB>HYG*$l_YK8*Q(V zk>+w4!scWXxF=_@x!W8DH1qgsL^Gf5QrELE04Tuy$3O0aFpjwW9g{h7WMWBP9-NeJ zEON*4PhHeY<6MnQHNa`m^N-hz#(84o>zbD|E|oW&@qj7td#X3J-q(Eg`A=z>M^;ak zQJm5!JdNWM!fTiOC47one&TaQhV(($+kIrqq|uINTfh0?-YdYpc)kMwF7|#DYeA}b zO>jMP@Kr1q5w*A(ofwCI%voJn-~%hX5!nu`Lh zQa9+m-jJrXbOBxuRnvSHkJDwOQIOZ`sZ;UkO<*S1nF1X3Boxkv)ay@yG)v-$GtO8H zlHzp+snto&Oru#jy?+eNGpK+uu~rIsUkDu0X&U8BPDxFnZK272X-OI7C6(dUcA@?@ zPh@J2XeS{cX}F^Gr1%sOvZ<2MtprOXq;e@v>W2SpN(vfilNKvrCB0VQN>%hrvv11) z!0rZpRa=Fr7ls;eY?)`t0duZ8QQn12Tv5K z+$x(nFMDdDD9`8=&bpLa86s~sEqPp~_GelK`CSfE#|3yseNL;DruBdbtHH>F42NdR z@Hz-L(xhIkBGyd_IFb`fR%EKo>}k`5asO2y8p&DmIU2Hf@UTu)j!oxD8RptHAOg;& z3oeJ-kNNf&W8v>KjNM7Zu;(9w=1Es4;=VUw_Pn)8&UJUePR4Gs_!Lj$sem*8kV)4I zx<}9jq@=6@hJQT_`5f%VJ1hqfg7e#7`-(jI$dlMe2@8=Cai#!1_Pm)P0+W4k(SVCg zA!gT0OUv+^UoMq!|EWaems+^PbPNwk)1{YUokFEd|MW>Is;R>=xb~k)_U-XHu>23|cXO&4xQ zXwFtF2!2&Yi%VqZZ+}|O!g#y)3x6vwJpH`fec#VzQ!5q|_jO7|MUAWh|C!#iQq(^s zJ@?)%)mPmp8-L|jr2ilOtIX|vRYsn9UdB$nC{qm>)Lpt&CL7@9gL`Edo6^nW-r)jK zPX5l~+UMimV+)tCz?!j*iqO9t@XTUVb8b@P$oLXmeCDMCead+Mr64YWEM2S)THbu; zGu!V21DnmyagWyb@0uc0Tm4N0a(t*8xELboc^*&HOOT$Byn5$T2F2i%LFvGd8ZLvvWguMvt9)idX5n3jEXgV( zR1o_Pk~8Wg4*&*pViV-*B>0R9lu@6N0M^75bb)Ei@_JW*7=zhLjt(WDlAH@p>%FXH z=ojK$rKnWwuaE&zXt~y*(1a;em8vOrjPnQXDA%>iN@FFS@f38Pg^YOnFRz(h5J}^` zN;>CP9$pnHlL16Ar65pADU)tlFY|X3(v&_$>ab<>s>2&Q;V17c9;#i^B$q}A73DR{ z#_BaDkeSdLOR^}*8$p(dysQWy-P9z~5Xd74Wey4?FVMu$b24RJ#;@3{Q@9vWf%GGo z)Mreg9$xq;JJ4j8ogkyFq2EBO4;SPl{Xmf>i#XFF=;Bpqr-RC626$G3f~q89))dnb zG%ItSkb1LYf09jEvIteG!FcB3`ew*9M5q-77lRC2MS%BkM3E;Pv28486R2W|6wUxp zmh0m(Jf$(Bvji}9;N8JZXK^y>JcjOsal)U_T12LKWEckge7Cgje@S*?H`W=%-si0S zR)l#p!vrA_VHjgxO`dt;ak=J(>t)^g4RY%E2^dbfvZ}fsbTn>E{yYru>8UYkKY2u6 z!XnYLXV1u?SC7aGPwkZgxXtv9jLY{Qd{qAEfBikV=K5>&s{qVY%&5cP98qf+YLs6H z%3!P)VX#71A^OkP(U8YrU{!5}v;$Ix2JqVH{sfq5UqqPD1?k7YqfV;ccZ)P$euet9 z&yNhjb*NpABW&c^pZ-L0F)&$}82Cd zEJgH>M;|TH7@;2zW|Fy(nHPtyOZmvtaN+EKS7)!BZaAas6^hL3ySat|+ImuK@t-V7LyQI3kz-U;hW9<H@cJqSE60EQuQFW>cP)lx{rn@kIn$-T{p+&(FaJV*^1fe@ z9Jnu)A_`CI`ZifrzaUp$QweV({9)H&em!cyOl~Ru@-Vqu(%dE||L${G({Q~kUA7xL z6wk;)12$|cLIfWuJO?9x8tWDKaRYa*-p5cm-g7hzc~5gjpRR7hvw6}5qyG#R^A2!u z2wI3joOwPIyrSW`L0;dZl*KEpW$T-aau!ahDTZ7sPEVFs+91zJj4qXDHd3e@E&7Q_ zJsf3)RLLH*K(#`Wjn6Kxz>)zvANup5QK9H-(&CGw?IDs;lNR`;ucQonbe!#%pM3Rx zX}EHoZuC_!JRL_>qg8X&p4rKEnM$6ti}+a+(1ODOxdhN{m{t zh4*BFPF2L;EmUj}lj5a>9=T;QGO#4bP@mXXFB?k!bhXYNU|Ms!eJa3-ka`0>b*){d zi$@ws$VPaeaScOJg~xo%ggU+K!n~}F2!)V1NxFTM;`LDhXZJMJqKU#B5tTKmu@4;% zNwGe1djWW6dAPiYiom2VsFULr?R_8XArwcN2t`*@aq;9tX{_fBm$YNK45wU4c;MEW zR5b#4#43|^unq?&1ePO9tVeU83~f~&y-`SoBM7l1p;P`uh?4r1Rd8B{W4&Ls{N_$? z&ldo+N?$mx16!vpHGtt17y(HMxug((7z|`M&4-gEdJcT4x}y?=vD=J}uOZDEv+9rx z3V_PsGZj@4WiuHjN+ppY$l!(d`iWBp695{einKuvu=Ycmlqrv724Ti?4m7+{M9^!< z4}uJ9#3nAt46?1xY#3E1XPQqzrdyDmK@(^#F?ngc)}vxq&=>NQBc4!ZKEh32ygs3R z(=XxmGOMw6X~tw55PAGl;R=X2tC~3DaRiNZ9?4x~`C>p0U{P>k|7mHhg-b_c6K3Oz zrM#jNW;Y&L7{7CvU8SKtKR+#J;1;uP!zRqiSIN2FZbSqswD6UXO&|X0X&89*HBwTP zCr>=~u>A8^?w3+Tt69YC{vc+3Z@cxK@*AK2r0m9`)AI82VDOhp5jJ!x#q4o)Rkem5 zokM8K9{9hXICfNy9y}n!@Goy((t7X5eb%vq@^ ztCY3PSp1BEz|z5^(ugk+we3ULt#}@L4-`uNFcw%MwC2QvKaz3mAbi0GenpDgnq~0Y z_eg2;TEU8182{m#GvR;*1~R`0EMiST9*n6%d_h2>1DOTvrLZtNE+wm~r4F(8TXyb{ z3qSl3DPO%>dQP>=%isNhJok@(FY}F+(sswKa^ZX5D{C*=ErYADnD!q(hXF^qY=#kE zg|!1met4g(!M+LgYuC!Q3wGeT!EI@DTxuFuOUv3e88~`W#=iXnxE57lW*3HiOD>G{ zBQmiTn@ClbVnOc$A}!5g4a%H`ft|xWIFG@T4Ky*B!G&Rr7k>3A#z0N-OJ#7WR1S|W z$_s;2auyMQI8-Y`d%3vO{Oi#PVV2%z>kY0m`w9=`RGyTCIl|03)(w}RSUA{#^OAIHA>Ko8L5=( z@T9#E884h;0mBhkEw6>p;1pRZs~oO|$!D9DJ)W#+XT5e2L()L(Jep?09Ob0mW!V)) zI?B&zY^X3Q8f%3JBTVyV=ok=u7def-mtq?XN+~I+$u;t-o!*6L*$NR9bY4mI%=Tna zoX4~4)xTc)whREYBf`xU)r>crJ`%~zrvw4!nt_(!fbty5_!k8d914LxVNc)&Lpe*`VDgvJYty-s7-lSe7Q5`5#)d@O~}*o+_;&6mPsvqlnDkfK zlVX^o2PS5vY^YP(S~g%-zgk@@=*F{v8P?f(#FC$$(#4jY9cSRrJuDaQ!e&~Cn|}^I z+lBD;&d2V;tgm`imF$E|$TVi5%Me4p9Fc4$;M2Y9;tS;CpZbK{3L}?B@~TR>@L(}< z8C-n|F&kU~gT8rn18lA(IeGGw96GR1I!~UEzD_Lu?dp=5{$VUm9+LL`ugcQlUbv&c z&$t9`Mjw8^w0-iU(s1!kHO@~U*8Ki^zAqzRy9+zy=E?MibY_$k?p`3aQWF}^$ zplP*?KJ;U_@zlr;=#Yyq4&&d$#$*`G6%As+F&6z6;2O?D_lW}3&94{m|AF}>bPwa# zpnMqr#eE~#z-yOW@fUw8Z8u(z0nW4>e)3s)^6&mp&K!DKiZ56%yFUF1so%62>mA^d zgvI5h7^JM;x>e4>ji~)|pOYL6^tRvpPAS0Gg1vwLFH(bz(@Jp<73CF5b!CkdV-vdm zL;Ixf&;DBS5z;dk)AREeSIOA=2AKr!@azoS!)7g1BtMlvS2Y2U<$4PG+Vi^%On&qy z+_M%6qzi6r`-f)W+dmU<=dsVV^Tiz$NwN@{YRt-0RxIQ zuGawoYoL1UBOV;c>L)cmoUXTKL%|PLV`4k3AjXlLThbRA{XWgtKkJX32{mfWK~f| zf?5B&kU+|!p)8~4K$B{yLRhA_fJQE(-&sy@Uavw)7%~ZsLo`)#hXm3TEDPg8lj>Bg zQ6>Fh<-~LjZ0RH|So2vt0dK7d*UXy+oT0OLC_nId>RqQO$Eh9}1%>$C5DF^7FS)V! zz2g*2v*dU&-S27gz~W?z3WW@q^Q3{Aw@%QrD(9Wz3~xMr>n=d3le(Ecnp>s?Zw|X5 zkO?H&lq~a5mmbZq5XlLNM|4w(kdR4Tanr{-h;{RkRvn;>{$408@~Akuc}LuVc8X9Ob(WWPP(se}{l$#Q%ysQDh1fHso1k^FKjV<>>sUqB< z`qBbD|2dv430L4&B=VlRP^MPhavrDg{tUeCmSZ}i)!GJxS79#K!;4J*z^AIL38;YEORv26 z{EOIq_?*m+j>`J+()-vm zGWX)M0>j^WS@-Q>qd2a|_B< zhmK2m-?(m=w1h?4OB=9g7JCEa<65j+w^>d$JuK7vPDmrdw=Q6&zX0w)U4Q?dB?oR) z7vA|{xH!#9*Ju7#3O4MJslhRX^R$@gWwUG(X58^LAQ$Z{gr9r~eB%p1zl1@-V($

;hvpG|4%{Z!RZ|7oW%Wz1=w?N4=F{5){q{9 zGd^~FD)_$8%NX;7@qY?O8Uq@A$lE(GO;0q+dZgtNpc0s9p65^q^&2F!U@(`s5>6@X z;S2&^Cm~(>$S$XG|Go3n1+Hk`Mh>+2e&*jC)}mZ>^X0f~wzdXOE*AU(hXG_!DMG%Y z&q?PCA+=e672s=9F4hRlVzKYaO=Zur4mQ>(^f!UUj3dphcTMEcYhwbGBgqDND%Yd8sVHS`0$cC}n#cUYG22i5?Dltu%0gf%SPG@;+4=Q3=HwFu?c>sm>WR2Gjdo z;f7RugDNDMz)YYYF4)RR8!}s$SpscB=z^eDkfk~zA8DA6WSU{o-m)pU(*(ZA9@^}b zu{quu0m1r7%DPmP%To{vYA~hnqzy-kbeXRD;)29*7b-_)TLD7FuCG5EF5A*{4I%Fg zAjrV-edf4S*5$>z9S~DUVF#pyCB+nw^ry}u2&O;8_sD%J6yK2L|WE?Bi2DZf})<9f~pEBGii<4-ZSJ? zyaKff%el^Ew>+$QgnmSLJ^TRsJBqYC_|oA{vC|kioEjLEx`kO;vlfeHVK@Q>pM1<< zV-Nukc0>r8&=8^fUV09Ze5&Ol#BX0(n3i$;C>LPi>=cZ{QAAm(#NtuTzH-L2p`lU3 zf38A=o=W@`V#b+KbV}g%gGoTdd>@s4FFz;u-u*2(ck+xZo;xQKr{I@AJc=-aSlEeK z@&bhD9K@P}#Z~pPW6w@$@931GbA58|TldNE(~ry27#4YAHoWN%eqCyJZ;|0CxC#yR zfCv7=_$pCx}I0pTf2F)%7D#)3zLx~%#iJ|c7L>ScU> zNG68Q$~o*(JB!)$BDgb6_YP>3lswFQ7q+y@$dA7(3(f0g>jyt51Gsc&9=u<2L5I&c zxb}R^L3-xI8MzoPTqQ*?#80=&hD}>!HNvj;W6^Wx-~6={Abe*929QJJ z-I(d0lNo$17^y9lktsxQ0!<|bGUHeyFo03&2*S!PE@I&}dW2tIxK1Jme^{2RQGD{S zeqmuTPX?xOZz690{^40Uimz3(7%h}wd{Bbxrg8f@(8aY$X8SpVkABwchCFaS+s}OV z48P$V&eZ7*rq>MjqCU60Zj>GVnAZn|cZ$LkZ71RsuaBBuccpfC3TG7I?7ximJDGvX zDEu;f2Js4oH_HD@=+&mcD3bljqkvxk&R`Mnd$AE1b^@NnSGW>Haww< zStOL9M;af{gaHSVl|#| zT4(h#m^_=o=g z=>v0y4CM~&-s>jbfchh5wI}jJ#VVcopbrH{4P2KfiGP)a@X7Cp{$5387bM6 zVckU_{_H9zKB?|7xryxZ}Nd=$DTF_@Dk%KJ}^JkkzZ3 z)Zc$>bW)yp{Ba!&96oXcp+jrr@;#Tzm+$(vtY6on*9Kz=b+6)2BQA#y$_C*2Qvo-f z(&-r)!>sAq(ma{M;^$&~NjSFe1?lV@l&A3}Lkdf!6#d+H@-#+Ilh_~&Mlv>Rn?od? zGxvT=3b$V@7u<0>cEm+Qp$8w5A{bM}a2G0@f^0;@DS%rLS0gXs8cPBG@Q~%g7|W}~ zAYhXG=?qTz%b@@ZHAR1q|S7o7YH9J=%@g z_u{$=nL6{T%zg8_azut?ux3uGcdU`(%^Tp}!$IOXe0iA0mx>CR!54?|$uTTdz<$)| zV>tMz@t@Bx6Zn-az?Xy>eBtQ8g5Co|v-0ZLtPCIu5GRw%ptl+QDDVabzZvv4P}4k( zd>ZVEL!POY15L;~TnDR4lhE3Lg3k{Au^#*}^*;b`Z`hx~P~;J4t>6@vX5*YDrsw-3 zxDwq;uqb$i%=yxvFCDAEGqPsWM*U*6fHfQ(Fn1#y(?>sai>z+IPR?EZ(%#-LuO2-l zEimA7`PBy3oFRfc+K1)4KX_bL*WrsK){o>jHR>}-vAKv0m5;9i^LVzoSbY&YP1~$K zl(YYuk~Xm(wM2krg3+U;015~v)RZV1dQK9Jz5uW!Ir9$CV;KWvI1+UetwpCp+3m1c z88VLMAe0%mAkl2RKg@Yz;8Uu{va+PXMaM%!hLP z+Th|H!Lkd=#zB~&oFKEboRN6^rO9JwyKqN(`Snw4DQVJtp10IX+Wxe-$Q*fl(8CtOLSC zS>=g%l#N4~RY+is@~r>(dJKm%&u| zsAHmQgax{ES;ael(9Q8~)O$IdY7NS#im(W@N{c$A%L(4-i6eDV2Q^k9Je#aQ6A(&Z zT#1Z843YpdW(B*xQ4dn3bTm?}HR?>B47e6>%H{)zx<|B@5mz7X78S!|QiKR83;5Ap zq#**WgsPB7B5n2)F&r=_vD3=25d>W}mI=%9>XM!u=J6-L++z5>juvAcKgtI`J- zAO6^LR;&u2<*V=m&CRjs*273XGgvS?ghi|;P8^q4UwTCjA2=Y-J^QSD^^0GWfB5`2 zunTUV#?fzt0o~S6BZY|Z&b12kPcMLxxqzrSE%!m@yv323lp+Fdka!W$4&3 znS>92Zw2Dzudb1fy)Vn5r}s+#LOwRpnvweP0$GQ}h0~qg_^Qw@W9_FAZ-15S`Mux6 z?zBtt!k4}x|K>BFmAd*;x#vfSLQ+!;V-a5F93-JHX#SglN~5#@>mT~CUZGTOxbX&U z|L6bZEAr`2e+pkSO5~qD_XT-%?tdnCe??(vLV={y<91B=e(q1i0wIv@STg8ji-!4EZRMZ9fB)%UoAVaCSZJWSmfbHq_nC@um!Q+C-kAtfhC=T z*>kQ(pbj}`?;_lRa%o(3c1YK=`=sugD`dxQHzVrLPcd7Iu%tV8$-1^SsX-sj!GLdC z3zwwz8)X<_VUHeoT$ZN0W!JU0NyB?@k;B8?F#Otao$90li;{=%^<`uTgDymbDJrjp z;fEcF;l9LJ{(M#DVMafXUzu{S3oth8IyI3aFZWH#(NU~D0j?B%L^mLPK5)|sF9@#?jSfw4(lYcRg!zn10ifc8FdDE?Y>+`Y_M5J`A~IrJ0EmJy7-;|^)U8S2Rdm!* zu|^Yk5~-ygN&3X4P*7kAX{_HRIUePB52j#=A}Isj@vJc9;{YruMX>dSYi0cq8Cbu| zVLr2gw(Q3 z@rQrV^3kEUcZ9v2lcs1oOb)2;$xk>E2lnlifBMQjSp1rU=pT(54QLKgU+DMSicO*lD3?wkj8_jsmHQ2F!>3bNS1{c> zC{-{d+qPXU7ub7@E^Y-e(z)oV6bt#Q&l8>lD zSY@mCg!*3biif&&2WJjMFfh!)AZ-5ht8(_G!_sgSA{*Uwt(-u3(EO50sad}sg8_uq z#7&YjJ0X1!JSyEke?UfHn~jY2O8vIoSeJ1TW_eG`aPMKMsHsO3s7CA?a8AZ>-AZ8a zl~>lnn87`TL1ZrOCC=(kAtF)FRIVHznU`1kCZrSLV)-?o3`U^N_VXs?pBnf!5HRDO zu369}W&9_3ql-pA_|?EydghZqmCgPj4F6d6JX6IpbsA=QIL=DsjDOjAKp&gCbo*Wl?M&4d#lgvDxNCg7}`*$$KI+=`3WH^EVKTAE>$S`i7( zU_2Yl7}I*QBNeBlffM&KiwdIf(7#3)Xjn)HyaFXLa7sdu=bZ66M7>za+jG3F0|0A6 zY$Y^AJ`^?49|TvN4`axO42uTB*>NNRK3&wZ0vw7oWDRTu6PqBS6eBX0M2QT20+-gU zS^}W_DP5hxXq6z)sM48wFXLOG{Z8XLrBc>m^(XzocW8!AUIvu^dFYQZsY2N^8E{7; zbu!W!*dX?!t`Y%vn3a{*D&v`zvPR|SO-%Ykt`aDWIit-?4IDUFm-91ANs6L;&19tk zuSp7@qNNPOP&DPR#?%qYOy==JJ%JhQS@?JRi_RZRBeOw384Rl92&cG+K|n)AwQRlc zVtvR9;hK{R8B2%^w16<2Qy5I}70-Arr;ZA9zrpM)#=bo2$-}zB#S=S_Yee3&hF~UxwFl6%K zdSjpA=>lYiCO12)t*gWiw+H3tKYvO(I?u>6Pd_XB@l~U@yW0$VbR^w{xYl7D(R{XT z+lrpY>?j6Bjc|M5rfT$mhHzdmv=v4W;_#1Qr`@rke#x7gk!D<+Jh<%?fxqbRVX5AI ziCp^O_rV1M3v`cQJppF^hhZ3uqrLN($)AS*{wf&MHN%JuGy^vp^l#VQcS*^ft7YTu zw@QD<8JT(cMaiqfrb;j-c%N`5VD)8&VWkfEOrg>uXC4s_cH!tz88|n92uqj9hHI~t z17G~Q%uT~`@sI!jKmbWZK~!Lu==Q_X-ih6oyI+J4evTAv-Xdo}*WY^#gSlFn#mxSp zeJ^4M<8xA3w+f*@n`Ihpo9J(cJ5!F7SG8b}g*#?)T*jsr<=Ehyyf`o`$3|!15;SMN z{k%V6P+A|^tiBrdH1wf+H0q(V8~i#TNaL8tb>rkh!V~C;3;l0$(`Dw-7yifROX&?1 z;lzi7IW0L)3g*2F;N%OKX8D$!}l^F2O;aQ$SPyk+s zJlq3qcf3dPw``V9JkKB4wN1(wFu;WCoAo>18fedb-+f9BJbzMlUAj>^&f*Ke44wki11}u?GOwkIdsaiU)rr!eRDYW~XrOf8qI8BnM%Gb6Zwp_mXg3g7HUgw*%Rq zi7}KZCymkSz@!v@V)=EhF{z`bULhMyeoa)6m01B{xR>+b5;ywr3;1$}e#AS1>vJX$ zRAKUXkCb3wRfxg)On7$}0M9Q5=_5Vp2sNb9$R{l(LRE9ZRO;C@vo#|NgZdQ`+UQLU zy$<&DP$MlZ)NP$%2yF}W^D2-AP>RuzDUzT-x~6m+oid1sMen!>0DIif=5waQR9 zqF7C;ptozPoXpO9{Xs7@50m#NAk655~ zrnGF{`wsUM^{Ol_JJ8dhloqWJJR-2r>;72$-aK6&z#*dQ&eGW@JHziU|2w2g>#z;uE@9m(xXDLhpJSKY3jcb0#aw zR1{AJk31{LSCG@W&XJC-q;wU?vz9gEGy&(yYqrJdGtwY8z)S{Vp(cj|q1h~W(%wuR z`NKe*N(rZgmMseH(8OpB6nJ8N3RPJlr+QG9{rKQ%f-sdG>f`f8DN9@&3FBu8Mh<@z zynfc5$FjadV~1n}M&UUArtrrwo=Y%RD-l9+5`MoE@aJZI(^J#Z0C%Bl zu0c%sp;2k9uazPg&zv2GR2f7V%p-@7N!QCqr4qB@l|y|}h7g;Dt*a3&qyoF;Vm|?F zGS&O=eefN}qT-QJnZW|)tAFbg7*G^RDfBBZt%OU$xV-d>r{pJ}|DKe?*`{{u2IR%7-$mkXhxDQBV49cU+9r=VX2`eM~8 zENn$c&`B7@^DtZ)NdSUCeZPn=Pg^hzHt5fVzdwKQ=du}w(7JVPSiIbh+0sIM3Fs!F zOo4Y4>nA4Q56|d2^Dw@PAY?VJUoQGn5RP+d-5P1Sat~ae;XcvbD+TyE(}1rJ+`MZZ z5rb+^w##a`@07z$Ct>n5#%(>_ zXEEp*L-Z&t^u$JR9jA`N^=nWXnkuCh5sU_h#${w0(VpPSQN0R#Ctye7)7T04!LCW^ zm_(bQLMeUw(e5}fqOs3@&oJ_Fck8tXINtYOPUp!3I2&mENEIJa=EEN^tmQ$CJj=>Q zUd3tA;EF@pK_OM16ix|V>%@nPhgDV=HW_O%5K7Rf*SsdF#b7tpa=EBkv5LmiO%gE z%5pTjPzc=GCKaHkz(v_Xu0HfCKcRA4KY@5HX-HNc@^bJD6r-Kf?R{9=gvl1%!+a)k zkRR%Hnu^9C9wmXG_GjR!ZfCFG{N7+HCwmL{fIvj-v zS2inU_Hq~$rFc|^8Qk$V_)sa|?}01c->!yYqELk< zG}I}`00wWvgbOUOtYFh8eKul9OR<>!CdBB2!Q~EgNZA$BOcTeAmf}pbT(Nqs(P;Kx&ee$K@pT5l@4F3iB_~ zBdyPJJ|$Kjr%PxE1~es0#ZzY^4r-Gs3q~4M!_o{HO3G8fkz2EhP&j?2Y2au~Z1lS8 z!HQuTAqM=2%%AL(a{Q1kV$rO=T2)9QBbPEv3DrfjF$YO_sT9IkKM12bujiDstX_vu zo)`oG&bav+B?yM%JPh+e?A)0LzwTS!^G<}n%#pq$$7BZXIx~IP5It028F-AD!{*PmyfLm|43>$zg!i{D|cPBPBqZ`Gz?6~Yox$(B!WvKlm237b9gEbiq+czVg`YCzg zN57CdY~)pbs#BVd_DCD9Y#nA+izeZh!;cEkm$Tk*$kqkax#-(D)L*q_hg9v_DW|{v zHJQPemdUbQ>_LFYPgrz33vVaRBreV3RLWgjaSuWNJQ&doIyns&pWM82xCWcx4pa>nuS4+G=)u4Ui-A+RVMBpGDbaL_(GU^;~X%fwA9a+#7XcN^8nXXGA&f}@;j&cB528>#E zx{&HUeUzzL%ZIXwF`UvUIpsJXc^q&2E=Xw<#Z%xm z#+A!Krd8oG2@Lf)Z_tn`8cs7w+tPKZ7@oZTOdj&<{~()^7BJ&eJvb^wn0cRtFMs+T zp&?a>&*o*P5bXv(#scGi0WLp$!5E#2!;Y|dQa&&&Mg550Q-dFDB`_S%tVd^p0nf?J zmy-xlSv=ScpZ#@GhQ)Z?8MqWP#H7Q|ExrPbAav+Px%S#CbJVcaf*|teWF}q#AWs9u8^+p+Z=|$-} z4L6&iIcbOCpIhG|+p(+dG0akSB3e#YCuY%Ma7@5&zpQnw)L{47iZhckl0Prcd>`RF zfB*N@Px)@-8?h-G`y(H-_Bz97Ze&-!9o=c=?MC7KM-=(vieFw0f0MuphrRE~yc|=gEd1=3_ z>7I~Aghg6~P?`m}4(d{Y>rNY5U3q99L5UoEWyx)*mBFVTmG*r{PFUn z`~+Nu&dBODJF%e~7GZbx;HyHfRMxa&KvpHkPWQo&U+@*C386l7<z$HgXnQf<5d{c`q(3G!$Z6css1JGd?TKiVJTyuoy6xrA19tH zgR7Z_^O8Fbc@|TD**GP5yHETX$UatrWz%Gr-waQ-jMphsye>{fstd^xp0jG_4yjbP zH#`&gS~i49gWtRLWAd&WE{6fno0ENOLOGD;SG8h<`R(o*lka@vVXVn1M!3*vY1z77 zDzV094%e}uqYJa(Ws;A9^8yUtc$nn`ap{KQ9`+(qW@FhI9q(mLR|2LCAg2YHsc-ap z4tkIzWQruD}#XGTvVoj5|HR1l8 z!DNL>fDl#{bz(WK2n$guB5*j3WpOs{1g;WP4s(h%5K76B0ZO%3DS$M*okIW5NpyS*1wW$XcEAx7a1bG6-?I^c(pdIJLnbYnNVn=hUWvFSLiZ5b$(|I zGOTF4iQH5<(7%@6Y5qtPWZNh;t#78T>H17f;Df&2z*vrbnJFXU17EuA`IU53Tm}!Q zNT`Wr6dm;m^@4=6v(xYer;%5RAKZC_+vMl&z^-9F=dn>!4x;4Dz}5ZZ(M(g?D?HfNey-h9^4PNB7_iJy<@BN?R#0OHp0+os+G#G-5`I?4 zg1f1cM`YvmH(}6JDlcJS@xS?V4K^~R^&z(S7DeTTXjq5$nKe%w^Vh~n@4a7>JaA6@L@w8$< zS&bh{7-2bEuzT{xX3598jDZP!;mPfn+J+Wf?Q%JO@F3O_3`$Ge9xRwHk?xLD7?kD9 z`n7GcfPLG3wzpGW9GR5E9V7Dd!-)Qa_7}l-xd;Qd3JktVVdT)z*N8;H;7=R>num_0 zdDFA~yw7=YLdv|C3FEaim|a$d1vnsj7!|UF`(MDFSAxs(hK`l!SAw07&^OBWM(9(t z>?0n0AMtsvU*9G@_yRci!w011qHP%D?EqkAjQ?8T%hadOxx2@L$_)NCzl1@P#}H z5^&7(#iw8=^ECElkR19Xw8CGfhQwLn&Kqc1iGd;_2uoG(N<~Q~OgU0)o=uaHbs3zU zqDM$$5;AO;lejQ11Ly5?RJ!bBPK37<$O6=n84M0g$h^Om*J*vQ#YzFwR~@q{_E-;T za5$?r#tY;{&Z5A$2Sn@WV|CnAk+jHq@0yi@(jGuDX(QgLxKR;#1X1o zK!w^OozsLAiUyR)i|qnFlEw_NkuLTb1Smx!D6pE0sB@%KDN#RW()>=JmQQ6=yoyw6 zYO(^K;Y=0goiCF%)=3F!UnAB3X&%!vC`w5w8f2{!W=I&z2FHvoer#tjyU)ij(ML&P zj>9Iz4@53!f|cE65O2EjbNV6-GJm)YYC4d{4*QX#={tZ8nMM)Lu^fYd#%6{G#g8`! z0ociw3xc^{KoflF2eFf{aA1OnHF+>rVPQ%OBJDJKxXu}tR4f6D(Psq#9?2}b6oO55;Csh~> zv|ZgICF>ew?K`j=X)|`)g$qL8s|V%KqmRfPzx%t0dQ&J*-hY>Dy6^%-u^C2N>8b$3 z8F64gBlv1jkHJMTjQ#3D^f~*D9mSgwM!o)_Uy^X0xcfr8 z;+KF}Hk{Eq9aH@2;K5*&tz}JF56i?^o@D^-pW?KrbcRFOK_OMR@+s<l`{is( zu@dh}uwN$b&G7s(nQ8nA^4Y62>?<+bKXtZ8I$t^1rU?S8rtAZi6ntQ z6VFEhp+8)R-dmA#@?*y@E6!B5RREfiPAdGlAhPCU5fqfZ9Ogpmaz~MgD+jF2M(C{n0TZ zoRuh0rhZ7Gap#09;bI+>6Kl(mNw`&EcoPR$D6$^*vD1(`;z%3|#$ZL{^}oTCOaV!m z1pF8NYig%NzRGqvo`yPAQm8xjMHUVDm5wzTL#PLd0+fN+P_@$syz_XSq3rZl)U)y@ z+|C~$X+D<~QcFM(+oBMhz#Bwco-~HD#E{+&r;R!gp#P1I!n~hiiVLeF@xbhG)}pp( zkioJZN@scnsmiai{U+gbK>Fns2#GENt{r~j^TWMT1*57SAwn6yn=UzJ*yw9&Y6Oda zkISmsR_p~(3Rj#1m^IInSYQ%hoWuLR9qQEi@9kE%x?8-N<FzkMXWpQKYjQn`o_*{sbRTjFZ_e$S44#>KX z+>c>KJ7oWF{T3#wqOwZ~; z$*CKE`1@tUN8cyIEqH@pJB&5^2c!q%?+38CP-{!QENQ`{)v;kr8r~v5@`-KrL|zTX53}x!HDNBsRoIai z*M=i6I8T8;g;Ud$$P@M;Kwj)C!Zf}zAYb^(F^v2Sk4_^mQ}{xF&AqtvAm@0TIEBg7 z6S8FGQZz>D<-pN#X>MB}8`iFnL)dTOk002ImRhYmcHp$Uj9sC-aouBRkA=X8JvQ!f z(nfjF;5Yhfz3pe&rv|=u4ycEW@*4PG9@qN;bS(^CC6$S!=@}2SAZx^Vs;jKmKJf;j zsq;CiWtpx%=Au>0%$0sUdKaQIhb)KiuuZ@>{S7FyW2eu^;wx6mk{fT3-tF6D_v3x? zbD#K8EF-)e^$M$0;f25`RswtAD^JR&f9Esuxd$<^yk=DH-*CT-)Qw8_efMCV3RVNd zJynY(bL+4>IL5o-g$L?4zaH?qc;k)FzjT~6?h+~*4Oh}!x1=|RY>0tXeThqGz#-qn z{j32`_%o6lu%zD0PDyN!Fd$yC>G@XiB+OK%ps6CQ{)KD-wF_)M~@Zu<3W-kyZ%Q*4pU8TDiL^@|49cR z=2jAdO2o}2O_q&0yctuUTqn${-OL{8%pZQnJ;tm?+O?|XK~`y;G%SH<#p#$4unbMq zJq!4-hqUEcU4d*-rbe0LObi~WzBs57ixNm;^k4=Jw(uQtNhiBV;jN5?KYijTVK7=>Hr?D>gV=umhp(jo9(VzMeG>&_up|x9%9M~uK-upJJii1g^ z`*-6FB36~bPQZQrSnUTJQuX(CNJHlWX_&@W1au;FSJ~gBFmP@$>+bN%Z%RkQy-IFG<^4M-6y~D3qLJ?^(TLgarhk=%Cr!353m&% z8quTJb|IS3qb!SO=8{%DqC+0HR63yWAQ*5*f@Lmv$F0Yi`Q*1isJ@G%n{3j|>< z2hvTL=sh&uDNh{0^+1{SO&*k;`%cS}MVP;U>$naRtBGoZJiOkq^5KsGc^Wc}f11#M z%xWGcc1j_I)EL!TcjIb z@^o`7)JuLru!B#;@?q)XY}dDtN-;h|aiqqkrSxo|F6nZ{4twAwAX8yFUDm`)5yhQ zTS-@uAnvwPMnXVY4r3mBp! zFuPO}B}L8-P*|hPxl)dC5y55X0Pyl>2Y-lI!TpCR<7m__q5iZvi`p!u2t3Wo6F*wY zEaXb?AZsHq)Ci*j23VATQPGX>Hr0Fj9QGLv|3XF`&{HN>sJIVi(IlA9Kq0;G*~+Vg ztSUIAGINZKq zmK2@DFqwY5No(- zYFWCbSvp#$WYLBVGKh)ClRFN}*3W!K4r5LJpZL>1mJ?VCwVlg~c6Q2%qo>jNz#B`%)yIB9Ui{bp2RcA2q^1+YBrsmOg2q-I z#`o)5=xAunU{xO8L%MPc-oiIFHeuX98vPR(0yH&@joHw70(}bhn6Flh&u(q5M}vPt zUg>SdT$480G|(u=&R{PG*lvd3pL=4DEJjDH8DB-%EYo_%`o#Ln|1`*y21+2A4C6Vy zTE5T?4A*g81_@WAimJ3ya#n%_YWks$MdCcexVg?#yd-uu-Luh4%4bQu9^KcYGlzNH zY4}2f&L%pM3-JXFp96J+yjP#uA|sf~Gp`dv6bFaA9-!{w-aK`@SN{BO9+i9FcZ=M6 z$D8G?Z@WcStX?eN-L+T7pTtIa-`*{!4<3~XbX;rk#cKll2uxs??pD;X_PcMF3EIK4 zV$P!~U#WqQhh)LB7@wQzU>udg+Fd!rB|u`GQI4|{w$g)0d5ahL&Lb=Hf*X2up=|m& z4=XC9isDpK;avq%PE#x+=Hy%^(GlT(AND)oRMIkUQt1F7r>hyr8sBu2t4cQ?C}&&` zBLO;pm*^Ksp<5QFawxbb$qA?9!XyzDH-Vf6vdILL5_lrLz%fV4cnKV0Dj66N5<@u! zp@^x81VKsnP8pVG&lmhiSu-_=2Zc|;kTYiLThKQCt7POQ^bw}~sZ)-T@fi&(g+1ye zD&Y(Jt~=Xa6}Gvh*m|8^k3p3rjb&UFD5oz$>N0cyUc)OE07{7km5!XoJcFr$o(jn# zMomjqi6}YAu>kRdr7|IJBr}}^ku;$Qj9=2Ej0vg#F0X=ar%Jh;M@I}p;gzL%MrBUE zxgEzPU73oAggW5PLqeC`***L zaph;^;LaN9-E~HKF?6K;*fCiSJFOVIJAU|x3}Ok&#dq8!1Nb`7KZGSL7mDoNcR+gZ zwtENvhTnydGdEYD_xjpaMOo=2#w|*eEsN0 zgSlT?J6omZrt4%6#`_PRJ}etnZI+$i_?Enk9ew}pFMd)U`r23Jg{OAN5;R!2nh)Qg z-*DqP`Q~??mG{2qhvj|0`OETO|HH3hBdndWpsicBKl&H)5Z=ajptG_2!Osb2Y_u&{ zCJhVPrKV>{Dpui2KH{3?rW}*uC=RV!H@r_ocYG%7@~#A*H~x2;rK9iRGpS# zbew81d6FM@YJfk9uOu@V#>1T$xXMrq<`OiaOfh8u!-KFY5z2ZTLzikW_P>IadoVgf z&S2G{FYcO&1}&Q`&eGQ5oKQme90` z@k%=%v4S5sWa6N%hnm(?$UDW93pQe^L&_Yyk{}bT@>GcXAdi!Op-14%rFSmgT=GGC zJ$e_a^BVHJzC-u|R)e`f$FN_=DCYi5aeO}->-AXSi(ePxIm+Q$6WFg}-PJ4Qv4?+8 z>e2A+#AM%T)TJ@h&++5vX#Um%()70ZGJ^@j_0Z+Bh}UcA=qU^XT#ovSFHHWd3fHuu z5s7rcpawaT?TPP&Mm(i?+5=MgI5cjAkusrjs;r+<08taUFyfJ9%{6~y57~2@ z2qtAuV%JDPAW$q36Rzo&Wvt4owS=vC%*1H5z$4%)~&y9sX@)!^f??5g`)R3(ffa0ucKp7BISwq+IWL6TC7LW=nDuoQIDu2eU z^1-mGT~ll~z<^T8cW34@Ikd_u!LS|1MCh2CEQRDc%cCYAXXq5=Qy^+PB4o}QrW$M# zab1xzq;Lo+6t>s)V5$z~)E1w^g?Yof$n&M|0BEg^j9AGri|TmzZ#gp8HO|VSQs>N0 z-iRv;1|TXd3-Ps}3URMpTK2O&a5>&`)&2zpP4OmSXiH8N#zQ82&C?p!3Tg78MLLg2 zN4XUtIArEvs!$LtW?oZH%OkTznvP{Akj4p+*;H_()7@X>F-fTro_M&oN{f^yJkUF+ zbYX%)eZ*ml9uq3cI?6psniv(-VxA=>s^6BU5Gu(K2!~y-Ky}~AU^J0E;X2w0s1mUi zSBKnddMweoa?Q1J<9+Xw1CM?~`nT?oDXg^g z^8fWya`kWjuDt2ze^CxT{vGVRd|0|R-+&ImVeG%~U8%WcrA#iu{sV1T?FWU_k2kc3 zF&ye7mmUSdCKh5&2FiF9zHD5%0`}?~FgytRFrYc#fG-D)XqZj(3}e^d5tIo!YnUW_ z0M~*;eb~Tb*%RBw<$FCxz0vxPVvoi@D^bMtmht;WX{EShK;CZhEKO9>^&lW4Mkwec zC83bi&=O@{VlX4YVmyws#e;vYFxRb?I~T87cCIw_!{531Zxqe*5l@M6dhNBzI{53eVBJdPPjFQq)GaP3pm10*tPYLham+)B#y>mu%P^t1^@i(Y4D}A{ z8=EX2hB)Gq>+{xa8HI-`~onHjRG0!p}$XMdsQf!g>>n?@#QXo=lP{M0y=DpKu}3+)9`;Ns&P9R z$rQB%rBRbtiIR?jxMH%B1I>1UT!XiQLOeAR!7!E!gdC`vGtXW~6+Jc+jNB)F!ZVk& zqGbLjTgi^gAg2W@3O$}g zv$EtMQ3zTB6v_xJStRwx6H#l_QG^MG%Csw?c9ckvLe^3cCkm^MqS=iOosxTM&+Kc% zSfjwCoI`66W?Vj!YRVj=2lyiZ|8O9gH%g5fGA0t|f?C9sr%9f8IBv3IvV}%f8cEBm zmq7>yOk@zq)(LYPa5|Mcd9;iZX*?{zIq*n~ats>M`o=zNB)a(&SH;NABnFRwRx+<( z*v#aRG4mP1DsK-*CR8f?aX{LmkI?}0Oc<96I9OI@0mFdMa@L8J90r8{MrRuu%|cAx z8{f3fItX|>*NnUEFn*k$JToP4S=4~H+xS5n9mjB(1+sWGCID72G4xT4BS$Bot*H~s z_cfpofR%S%*e0i+-y*eZ*Xh{un!UR*`j?IPc4_QfDwP&AMA66;Z1PpX&a$m{U5|;r z_v5Yke5q|~N5=p|T;Md<5TC#>oRNbEWMtP)nRsLiR@NDo$}%+X`SuWv2z`*Dl{$@v zX>E6d^!?8-$UrA16k=noMK@h7d!E~Zp+{44C>J#qq*BZpsjQC5HaCuQ)^K6&-gDLMAo z<8tcDe)1YC~~|D+qVOg8XU)A{;*4k#E=J18SQ zlg4!8F65cAxTiQdpNFZ2CDkbG62V9&>*s>xv9Pavo&ry!iJD`XRKbdCnRMY}_!hE! z6cD+vpSx$jN6L$n%7=Dl%MlVzL_CZn#UieuCp^1}nWwWyf%79DupfdR>crvPK=8xW z+-T4u42;lE@F1Y>m~mt3%UtBdQ;MMX3^5#s8mtlwONS|yNP!-@%1kyhQNr`0>0w%t zN>U&cH9hBM<>sC%LN1~pBqWbmwQ*#5&Ez#&h^qFbI$in>faZf4$$oUIyk%ZWmkc@N zbuc~-|oP(ffz8MBZ$t~$dB9)wDX7psw0a%~n4L-$GHBO}`E||(SFjr4LTgA!p zt{6~pP_^qybCwbuu^}v(vsCt^H79~cU+hSJFlm`V#N~n+p{WFy3MN~{PdGt$Tn6Ei zT5!5Oq#ayuEXrA>))IkUDt7<`EH#qLDQ=}ho*p3#L2dA)YZ7G<0%dX6b_lPP;fEX5 zA0_^;Z|qc(<3aq#$&8VjJ)EFQN;~9U9+{MO%=LToq81&m zi}tj%wJ(>h)sr&xmIj&nT17^WkK!u<-sq22qXX|@0CZs@+H~(*)L1ol^djU zvPD*51EQr^;6EDl&*XY=8Mx>BeeE+b}tK zC06cf9UYRTKl)=>Ic2S!#3bLwl~>5}H{ULg{`#k7#k=p9b$8#1Ra1JUXU}0Qf4V}h z`o*7@`nC=^zICg-@(VvBHFw@DllR{)1DM+|QipN;=sVTpVz!{8wD)kIJb(_sD$EOL z!3EQ+73PRHi2x z6?A!1GFc*dT4fa)7#?~|Z8_0c%Eu{mjcGj1To4k15lXy}xdh?);GU1n`MC0WaV|uU zvQG?6T#2ha8mPpFV?0!t<5S;iST6oxkxf zy>ZptszIE1xSq!O+meA8TRBR$SaA+xL7}Sqkw{5~PU4`9#Vi>Kgl^rr{GF&04o%05 zPEkN;UT7i_G&hA!r(2MpGlv)jD=rt48V}tB&fi28EenuJzoWxN06&tv=OfaDWSoba znImDOLLwY;txPd+3yoY>e}Q4g{8yQjrvg13$zX%zumvZ@W?iqsgA{{v6ibK4!z-g( z4wR+Q**Qx3nv+PCX6rI_s`61Deo?@tjozT6;pkWK9`N*$zhw*1$bF)JO4{otWOF-~_``}IGxIQv zr+KMNFB_G~w_`o)&mWbUkwIz1(lOIxQy6=WCou-|W4bBEnF9p#1#0nWyk_{AG_1Hu z7Jle{nTG~(GjPtFJSAIS`mUV8aG^E~@!^>D_OAIdA1jWG3=aUON#;`@!cY9@uuP%jabgc9KG!wM#KFDt=Ku6-nB=%j9(mwF=|4Rpi}6OY=HzK<#_Bq4 z|M-|}`nNwX-Pdix)(OM1@m=qc-UIuj2fG#D{_~%ZBab{Hr*}5X$~$kB7ysywrFqqQ ztd=w;M;`n-{5&WV-+#Ldp-nM@`3SrgHREXfV_1*wzX1EkunJQbIwHKrQ^>wv>!>VV zZ*=h|#1~-MP}U!-4>;puvyl=L6m_VF)aEYv!N1H@JJCP${f5x>N3Po-m?zU=uq$&&(pIM&XW*$=P9mYuSbW9bLo*bS3c&F zRpZ&|d}KnLvbj9!)ihSv>ezgROybKJZYtrfz{ekY40~g=O7nehlTp4D@aI!JrwFId zMvL%lup#G!+>{FG$*Cc$$;f=JVb9bMb4VDXjLBtDqj=-Lu$8o&RNy;;LaFu4g(Q{H z6e$=mtkG}|iAV>jB%db&BRq<9C{~4<3>nvPW2iFeDg-A`EeyQ~LqpRzg)K;zkU%$; zQ1pVJ3Xz>(6i+amZ`M`LqQ+NUS7H#nh?8G*fK)nnu>cRl5vr)khi{$%Z5AaE7YUx) z4_ZbHSQ^x}6U!;d(Mf6=Atxt01)DK#mn1oT(_?kJgh@I4Rio;aNXkS5r4S?`S4@z8 z_Za^YoiASp02wTPUywUy5C`*Zjk+j-f~NvJxoo8Ejd)4{BYyZ4%^3xr-UBdF{CL7H zh~`g#^D@)`9LKaITQ_6gSbP3N`6yw1%u!~N=C`+QU>_mQ$g6()o z3h7ifA)i{z)aK!!0j42NN)Cg;Gz~q6tt>QKl*Iw(>3^w#O)~xksv3c~%Bhl_3=)!b zqo^dRO&ww|v=~D7fdRou*K4bE+SC*xUY68{(Hz?RGC9IfmieKm$vL=UG6(!Cw9F?e zssoIuu8JY5jem3k2&TCF+)lcga4|!f#x=sa9P(ffmI8#?HH~=lKZMWqtr!+GZ-tDk z!dU(HW0K$B9kLZc(2bblf}9v*PE@RxkBPi^+m6P3WzAYy@#8-tZL5}}vD_oOc07mG zg&vnfI}Tv1K6b&y>N{PSK)Z0!d}+dvq&BRMGdg@46LvAB6&q5uc67_a8*i5SpKX)_ zpZYJ@a{yy)(P*ea2Lm%)(OE!#Fb6@f4*99y`$LS%M?)X~YA5lQzZN?ZV<6HrCMPyR zuJ&-h%-py}PFJSn_^x9tT3Nhutt?!!67v?uWXYOU(s%Nt44xd3Gixxv0dLA%mM)fC z@4QL+PxZ*??tQZG&|axM)hoMRd`X`Aoj;HTS8bN|SGMYqr*%L6aas4%ACuw!VQk1& zBfCELXL9XFJ}lkKmdVuEkPIIgmsM|lE8MQgwl95EPCSX_Ngw-jnOL((#xXx&sIm?# z_e^4V7CJdmKX8F~?YNT9*w85EWZ>;R(!6k53wQzb@cN`_)&Z|S=}o^&QO|WWq$rU{ z%i<;i0?G|%<(pi@Ei{(tYJn0>6$-ur&q{_65kkV^1%Rh7b-)XMuA`ctr}Ox^FwVw% zz4{lbcP@GISo|Rq;n{q?7DUDx_YStjUK~$V3*3B6Epg1Wa);)eQ9&H^k|W z#}igTa&zvr%Nd5V3@s9VEiI=BFL7ZiBW7?aq3Ps5FjCwkEtzTMdCP1R7cG~i0MpEi zUh$GfCaH8wTRsXw`b2au4<`I5Vjv{HgM0DeW!MNToU+0weym8(3J6jE=?jJQ!>I%n zEhOScl@N*QG69f&R7pTW*&fdVGVNa>K$0GTk?duPikRsXc{5_-Ytro}KS1RFJgwM9 zGvgFdp-7Txu4SRQq(+nNw|e>1GT->QTgX zOv#DL(Rf+f*z~~;3!4$VGBP78@Roi7CJ1oH*t&)$G(xe`1vZhI>Ox0g*R(Wt;f)>E z=;zX(kic*gY*dAH`D-TzW%)1tJ6U)wcHYHKvtR#*ugG(cKZ&)&o1_b?g>=kcAPbf) zMk9PBIs+Zj-;aj>AUYjQ9T+MwBZpr-fKA7+v^Y8mElZYS?fiBb_{vu>9B3g{#X$!F zjZ^&+fVly+_{!0O4Zj+&7eHkitCir*KX>_U#5(zvfx|Lf-zIyfF~sN{ZO+I#Mh)7xH>`J1jm zqg~|rkNuSN9P5!oPkl=cAADSfu2>@jYw*|Jjiov9vxuQqby$6cyD@Vm9(!;jk9go$ z&;dXx%OG~<-3Px~IP?J5SSReVk&f5y|0uHnJNrR z!zahodWJabj$v4wX_X5 z+tubSR3~gz<6NS2Jvz3B4~)q_|KMA&tnGYk=V2Srp zm5UOVnHtPn>A<-E;a9fHsjoaHi|>D%G`#5s8AnH+f~QRnV#k*d+2DV3B4p%A6~yl!e(9o06+jqL_t*ODjP?7AkbKGBDiY? zGl?SNG#9bJ6B(vqXWS48nZiOYYH{Z=2sOGMaSh$a^yMXVT&T!GNvib$vcd2P*+fdz@LwqLw4dgXn?Lct)wRx5ui)x^ed3vrIFh8k!|5?z}>J z++|a}%N(PQOBMc*ANUbLy6`KQ8L%>gu9?D#nZ=*t5rA|(Ick-DWIkY!F1^v#G!UW| z8kG8)d<$J#fLvyh#?>xErK@aGAh{$E@Ikg)B+fx)Xp-T+UBsM@GKPb>Ig8`0^x_&Q z-3_yTG41dXXg%YER$XaBWqDFf4ZS9*Vo(b{$O*~)av}XeV?iQKZ>{XvpaTJI!&wJ2 z%%dvgGM5kIZG1-)*3@sqepF~QH`aGZW9w>}-Y_HM@4&>^Etn|WjSZ@LYSA8tjgD5C zKC@5e{ooH__t5KQulY2lnih7RYpAt?!>T9R4Hagbxtbyw_x}g^~@vCn<6=cRaob4>dnICO$FaxTXl#&;uqeUb6_8@!5xRSYX93 zmkJfqp<5K)EFMeWiLp{oXcZQ73NMX&2(n(h1OWo#%Fk62kQ3+RnUJ!o_)PLJH=XH$ zyKVwF=c@UTg%YEji0mtdR$9%E< (h{mhNNrWM-W4NicG~zlW_ktcixkA`R(uzJQ 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%0AZxErmsqRO=yz6Jbz1MM+*80WszQ@yF zFINW~8I#Kw1tN{pb%hX^a2-Ho=8=365ge`Z#q#Ly84+Da7mhpuMD!dTYiZ^3MF2(= zj-%tG&tj>3{NK1#B9|{#IJw4q{4kS=%1C-lZ-yfn(4%a`rpZ_U_=21kvOiIlO%_XDYv>$=v`Vb0N*)z(B|xeUl`jWyP|uG_Til&yRBcXoGA zT6X5UM{fzL>4|%C-6NF%`P)az$mP%Ub-h=yF@{6lmS_)lIkN0TbqR?z3Kp~Zk`~W95)?IjZ%_&Qqnlzip#c-~p(EMK_-?!W)+tFO8DH@D6j^v}BRyyQ(cRHu_5e05)oY2^Zk;EBG>gy7-}`9 zVSM!Xu#pXY6!KVzIF6Rag$f@d05BH=W(0v)W=4Rc7}uX?)*Q=p5GM3v(d8GxV&?Ma zE;M*VCinRT?O~L*{cj#0^#TM2PNxzKz(g^Pb9`2b1;h~0(JJOVaI}icloGU-M2sk; z0tFI|Tw@^s3lN86jOk>Oh)iU>(Um-%N)Ryk=SCQqqrmg(vyE+J!eVZyWl~Fd zZ?=yBnE^P}-e?M?auj-#+8QZ%YSq&%D^{Fw!pZ9%c;Lc@=ILjgx$&=$pJJ2(kB|W| z0-HEtUiIv0Y)oaLA7$EuBP3y!E@CDoLMee6Q3xTeG5O)4L@GJyHJ3YWO^1GeHy!L| zVgQbSokcU-Zn`=HurDZXxSoz zmLejP@lsXQRfXQZ)=AT{*=nWSVsWH$`V&e?C8Z)JtaKC{kF0gvXzxsNxU@C zI+dy-ny{?A)OZ(MLANn80n_0d9|Sn+_D^w1qePR3 zcR7c(xGD{Nwtqcp$-twl`mB}YXz%&#SMw+v=znqZ#m{>CVY2H{mxA!zk9y8Jh6qy1 zkz76uBN&qpfB8A!ICOKyvV~_XTln{`%m1j2TN3c7FVEDspZc0x{@%^{pD+Zl#z-O3 znXK!(C`2wdoJb~tSSW3bu|$$NnM|Wl#ZuAHT1l;4r)SODwkcC)oqUEF?$1n|v~Sme z75Cn^D47n+fwOSdv{ziT=U2b;=AV*Ux@7uDA$Qiu6OTM_D&o{LPJi&x2QE7Il1ENn zuwv!vQwxnM;etl0N;h0^x^QIWKyl;%6(24H0L5uK64lEA|wP@1pky3u!%E#JSXXngIG`4bI7a;n@ zlH+=zE)Nd$lQl{^hHPt7W1*0Ay<|Q=!j_^aRIVeHBLx$g;emnU@|uVMFz4(WUp|_K z9LL+ntGIYkz2d^tPgpohN&yVU*ov}H7x0hz(r%7?~u#0Yq}{5bo7 zC{A%_V{PomiOJeZO)3u&iI{99oM3FMNCL!cYz3`it))>my|{H8x0K?VFaYF>rMA{a z7}FW)<>!FmsBde0PlYc*ix+5ld=x+bW#J6W^fwZhFG=I$I^qBTAVy&jg?<9W&xKCi8fmDniZOu65@> zL3q-o=WqW0PqGUaoO<%93E*`r9zVaf9!@*`krj`gc+#?`mn~VfZu1GI#&zAy$qUny z+sIleH8aK9Z2$r)0b+poXg#VcBZR1223MY8%*JoY7IVW+eY)k6GaJu41rZ53@_j*s zN&{jPM}2`9!7>hQ-!t&oGydvLdLV~Vk!6VhTuIL*wk9-6X=I3T1`L%SGC~gQIJjly zlV@Ljm8?n`YXnOky=jf1K=JG2H8c#PWIA1U=E;Y)?{@RPjgR<<0#OKLMAUMpEae?N zlM}h!yZ4#W6qT$sQQw+XESZIf$|ckqwT_Rv)in(3O&bT28DtUB??3-q+}s16Cnr& z8OyQ)C?Va1+xg?a?AdWBbLrXj%NA=TV~sW%z4|#qDb5T4k?%Jynlrp)ez1I{&>DcH z!N?jEsI$q9W@I?2XNRgg80rE$ixbJH6apcjwE!|{Bp23-d^p+vX@0A|Ic2Sz5E<-taG<%+n(S4`617BUdk6X z$8SQ2VyS%LStp-;+Tt;YP5zh042b1i-+}cHq8OjlrWeZ)$V7>3!=%L*9#0|07_D`= znD6R5sFX6c64x@uXeHxAMHGd=&{*H>B|Ko(nPlCZS&;PF<}J{ko18UAhhh7|C9C@W zx-2LDKla``KCa?wA3tYiZri@<&6ay_*kBuMV~R1&bO;1UNC+W;^xk{#jWkjTfk0@X zLufX*_ueI|cWJf#mMOnK?yf9I^1etmdBZQ?^Z9^RE8V+yW@qNiob#OLX?_0Xy5&p9 z=Ded%{2eqsP+rsi{LB6O4pi&r;)^eP>9I%7k+OE)ywz)7IPbg*HY{DzA2K6jYL${e zP(cBqrj)PNh(7fP6i#0R01#=BZC@b*A*iJ9Xepw?q7~^Q&F4M>9M9(W*|JVvrAy8zL z0fUB)&ObaL9Jl7&#V94AI&gX1^A@|=m*cF6#VVGb+Pq`GmiIU>kY1Yc(pJsuPV(`d z)?=r-0`%1JGb$zFN&u2;J;duyXFDohz;lzOg97y|_1 z7tu*sT3%rV!Y8zqR0>|hMT{(Y}t9>v1iu? zEOUsah7w8$QJ@fDs0Omgxvc=O@TLMvh|hfn2#hg5(n}Bsr3Io>N{2?cUs?hRDD(Az z0dbh%uCLRp{5K2WDO%J69{!iZo&*@BfCx(YPofHMvf^JBM*{k3)ewpJxDvv`18d?theD5TbDGc-@o}a=-ve zO73|=IF6Ic{uZ=RsfJV)u^Y9-__CDy{%`dcebv0XS?T{L^<%#A_lF zZf8nsr-w>vM~7+5hRe-BCs z`b(oPL?{cz&BM$e^3pG|_cgl3%`obC%`Hw86SU=At?IsuVUzI zgNQ?sWHOYIL8Rn04%mNYLMRzbX1?{g_gr?tvQdNT_awkop_95%!`2N{Pk_qs`-z3+b~g z89FWgh)O9+(9o#k2{A&J-NHj6;Z$Qr;6z%g6i~_tWeNmAVtX#7Oc3d~+%GEiW4F3) z62=Hc!8t*+6RBOl{e8T444W`^)3&X%#!NJ#;VrBGJ||vzY}vBTbZ+9TS%I)sGINFy zyn0++Zr8rOe|dxe>s-5a-0Z2*tFB)6;`6if)l-+8xwEb1qS81aRLJ56ML{723`9yH zrSy0GKF1zKlu99h@+*i6Sbqdi5+wNR3m_p%`A8=~N(eQLf$qMxwcG91PN8A#+}X_y zji)R=_5AZzJoxC7$Bs3>Vo3eD$4cf-pE_mIqJ<0Y`sJ@}PwA$CNTe@%t`JB8!Bs32 zCm?|;kc6^1=L>llGze9`XnZ;YvS;&7EFKat1*wYg!gD&CAJ3iR0vXt6Rpf)MnDgQnGqPF9xxDsx>j)iLP(cOM3546jcAm3Lb{$L1e5|p zqljR;V${HkLVXuK>FYKEfMMvRCDB+kEQX1!ABPj4*a!H#aM$G?=K<3|MAzdU=i!h6 z07|NC-Zl+Q(-#>A3WL|3I=ldoM{+~7R(ev?%sbiZ|7<%%f^kZK5)1xmC44V;l&GP zHnw!Mcl2r+8}a5El{f*h$^X3@rG$}Fy8DC!{mE?4K#m|vC96t8B~jDk(i8Gfb6-U~ zP!cgcAq*P_w78PmG9Z#(yrD-JZb)Y{JEnRC}Y`_!_T^9E*2dvVk1 zsU9JmM;D$Js;TZhbc7%>F6p^3PDLBsK3t_5+zW^D5HQ#86|`eiOQ7# zig)!WF3^t(K~W%96;a)w6rhw+cy4&|n7&xVR9bg!_1=TqrVExWiL~}MO~`1aw#+M+ zXR;Cm07#G$B!UoxAzGR)Mcze1G@Th5lS=5i!6nwmYr12oZ_LblsFv zP|eUaBVY#M1WWallu{@uM>I(ZVkYah_oWd~Dpe9Ot4f0&mzGXD`ZB$VTvchXvLtA` zT%+VzM?wfWz9u^QIb9?zKe6fXPZ|$CF@TUlh~Wh#ty0&!DoK!k{=xB?ku~$VY3Xe4O@-@J_5u9Qv zCA!XNF}^)gd$T&=f{k{%5rTQ!ojGm%o!|ddeO)C096i>4!F3a7p>)!k2S<@%{@u#0VWyL#nS9|ym-(-xw<=tNxrS5K#eo;!Pq*9~QF8YVtN>$** zAMNFqsXf2H>$i{XiiXU*!y`fc!`GgA%G8QyH#U9qPa9XAG2#8!%m=`xj=>+_x2KgB~hws-%cv(Lfy=H7Ajvtr{?r!RSF!`kJX#|(YbrghV- z@Yt2-A9>`l?u}a=rm0l2Di|@D(Y}4pgaxz7#h0yn`Ni`o1cL$Ta#>tGkHedR1AvqO z1W|!f60jgIUrc7HB0yRK0Hs*mjw1kol!R%Sfn=_sbL%5dj7=u1V`cfSKG8prRD*e@ zxaTEPDL0o@+|%_yE|>Q_Pe@2-(w^t(rm0DPPeKKN0woptNG@K0QUjt=2uLYN6&hbp z4NbXRA%gO`M3jFLANqon0@rpTm8GHC(>waJYj(aoHkFIaoVVk^_OTgN=3-vCfJl%D zg;HOSD!o0cKA@-(g=gOSwo4XX zaO+??dHXxBxaG!6=bifw+jic%a>Y-+{^1v1*>=+hzV3S7`DZWs$|r9gy7ni(`Rn1v zwx56NqeJhsclKU*{l|L;2Cuu~+}m!tV(9%f8+LSb_FcK^tXa$7cHudTe)^4%-1LF3 z?cRS>|KB+IU;WDw^r|Xsh(;^7^M-Z!f3y)oGTGb>SFWrok1xLH*5#MKzp1rze0?=2 zb?9hw?Yt{aJO37qu^X>Ge=wPGT+dH&X&U?Z?bp4ycH6j9uldLqe_B;h5)KA__>~WE zE>6GbJ*#f~L@;QbyKF%&@7Rt50C)ZL^P0vkyXn)d9lfK|MDinin#Kqrn#S-X8KIOA zGz??Z;|3A9l#}Y>cYb>1uRp!g(AkUITL{6IceXB@Q+u?1u&X~CFtq!hKU5wM{_*n{ z&6rR&kg|PQf)Rh1DkNikQpu6Eln_MJ4a0Wwj_Z1ydmiUpNCk-4nQ;F0a%)F_9uYm) z^|`1hp~*x-H_T8p+I#r0hqV6O^9J_pi}og$pL_P!qx;n1hSOJGu)guol#1H%t1j-S zDQRkH9DC74y;H`v#q{3sk3z5j= z`qNoYN`WW67Est5>|IqS3e(|EoW8&q=)cRwIR9>T_Wzkj2Fmyr)q4Z=e2pVIAkQ32udwqR{oQr(kEi52h*tVmT zVvJsY#d+IyADTaV@|1~Va<-!}+S8YqzU+qDd6(b$=f^(u?ze2&v4854w|@OccMT@f zXI}QcOW*#foNY%Vp*!z>Y}%6R|MJLlM~}75Is2v$fBq+5`0no#$@Cw7{F$$R=GMPF z^4z1(t_z2PCkPdK?Ud@KBLhN*Acw&VUF&*t3` z6Dj`-Lr?;!DH0Wgj`kD`1TkxSI}Z0`^X_2Ut|<*Rwhy-VroVpcvTxtLY1_f>F_q!| zWWKf{{HLe)%@|)YeO!s{@{t};lme!)-roK{-u35Ew^u1Oaq`qL9yfG-=ZUAe5LzRvfV07c?m zKY3aJGy_WI7Z^*wbHSHZ5((9NNBnSKo&9^HrqI3P#Rf z)ipREl?wF+T%vmW5>G$y$kvzFwRUuQ$xLmiM3lxlni|S;_Ug8-eAWv`OO@erkb-mY zwT%e%6bD97)0C1ZmC_kk!U7o5Ji z>EPIw?n*t9;|_o#2wd@Cb=|~E&J#*@x3*ig)q`Cf*xw$it_*0p;)0o`76?1s^SCFt zRLF%w#r+s82q74up65-PG1s09H1gZYxM>B$kV2}&tl*Pnj& zxg6a^fuF1+t5nJ|wY6K1=(?^(2^f7n{iLvfYytp4f`pJ<-d;Fw`mE^_&U?#;|MIJ^ zTzbLMH5+yaDPqyk9pC&&eJNL-tXhFupBw6?%!trwGLQ@f`P}MTYte@KlYAm zFI;}cDQ~&-oOgZXTYde>nyRv&eB;BE(kGu=|A+gYJnM{8e9{)FlwoKe`QlI4ZrXkA z<>!9j=BsYFa>ebR{-ILJzh(Q zDb;jcA2osdKf5VK$~-pe6R-kclnf;Ezkgzn$K@$gDlb_&>46sxMnh)M(#BLoHty}X zVDWfD@JMT7Vr}e~5ABo+&N;O{oA*YsjUb4cu8k&Or~LI*B7zV?_`Ey>=`dX>N~luG z37fP;trbqO1?e0p9C{TfS%@nl zsv?S1O5vx23nybl1dsNKD>4V%`lcQ>wIwru6<(@x#AX2Tg9cj}d;6UNtJJThnY zsX&dEV8yO&TeIyAWeTDkPn|No>gr2>@r92rsG8Uw43rPR3cJC=R}feKG!z^076tIpNmJrp?Rll+_a{o zwPRu+o{^qFsg(5Tl)PN_=%y{M<9MDOBS08cLLvaST|{7pE&%iSJof}8RM&M%P!-Dw z2%@1IoO3A!5&}XJg1W8?F>;WB|BWCeE&?BMR!ad80(pnu_uN4tWNk(GEi0xy^x|Pd zr&1}~<&^jV1&IJs0v8fM38`R|;b%|^7^S+d5k*cGXNZ(i*Yp!XlD}RGzJX-_Kx*H?V^>|g{EOfItq_I4?prQBXUCqyZ+rjObxkvM-LDHbbY03q z=!H^h8agGEAR4-+>6*&qLIDd3C|c&a9+H#Jqkq!uztjN}f|+dYj&FXXt7qWtANWQz z9NhZ%-<`Yc)Q0BvgGZZJzU3nU%gow#HfI9>=YkM)J+HDXe#f^y`n4bZ@$8G=bHN46 zp8m@ZBB5YgXYZ94E&tooF9!qWL%;j>BTuc_vhyJ4{H70nJs7Z_z3+!_f6Mv5yz6gO zWu<)NKuv<^I?lX#bFRGdijiLXzgm8v<>h-fkx|V$MDVz*ua180)}=0&0h4jAb{_4u z9saF9ZL(e7lgM=sWP_$wUlsZ0ZD-#209 zT?U|hvAdykDIr7*BcUY}6#$_G6#8U+K0w+RUo33A2w{wBf#5)A|ML$#n15l->8C7Q zQ&;!WlaHNu*;UUkQG3^InbN^S(|q@+*^tVAZ24xh2G{+4%QG$^@?fPNZV0f6%B zA(bjJcmWUqR0O0XuH!~3%X+-Q(uS6)p;FruN+^^H2r3Q;B%kc@cC`a&0=V1W!|H25 z*Rs8ROo0^$@sJw|1|>=W<#8_%42DeuBoBrIgUMVlXaOoj)o}Dk&bBGg_uc;P>#n`} zL`KNYC)+!Zv}@)_s0IAsg;cSS@zqeC^RE*B|@X zTTdkf1~ay<5h+zPWQ?vd5fMGlU3uQQk(%iz(%64$9)01y$JYk~2Am{?n}6)B{zSU0 zBvxJ$YiaA5IIh-ly>Kva&e8>juK(?i-!d(IOikt7S(6;sO=hwe-}s3S-Ez%$zj*ty zMRT5cX_L>;!i5-~@$g>@DYy`bn9bQ`rLiA;`TftlxN*VUY2W_bZ8zNhm5Q?Xe=J?Z zo7@49wpaaWvuoecZ-4%_>n>lx1+S~F_~@5@w(_jgqT!J1aYL8kU?7vpN5X+fI3%Ss zG_9+<-?rVy?)uK*hL);|(#GbFwVQW+>!)}B;@cnFyXNkoW$K3h^oyG&kFR5lxh~&x zVBbSetp3*LZrir|@PWh4mZ^_o*7;jSDdp(2PX9%}DL}MsXLP%8Kho&9Je&6@B}6C$ zT)(Haqc8J=51t(h8C=MZ{P@McZ#s6t>EnNL|F-Ks|5$&@dFy%8Tu+Q{%kJZAM%`TQ zd5qFvC?vVd7!yJ%B}3r|1qcNVE&+%xrSdC%gb;Z9ih;fsm@R6Frp|LaaEq zZ2W}%_dZk&a@vHt7w-R4WjJ#7``&kG?S}c6T^T4Z-TK&Lfow9Ev!?`NpwJbbtgZ=+ zsYV4#fsm36Bd;fbQV9S83Zzt&u|k+y`cj8}jMp#q5r_y#`nv}@w>$@p9btm|m8UkZ zJMFYHwoJw6pMHGNl4a}XPT#w8ui4NvK3-Wnb7sj!=id9BttB)!Pjf@3PD#kVo@{#0 z{lBjmTa_2t!T!GX%82UiTm&)2B}l0V0#P6p0uf3GC9%AsZuZow#j`MCDDD*~sfSY2 zScC`ys6tv-fv+(kC6@pUCXcNfjFur+Af%F@IQr2Dr9`l_nlqa0Zjk`YGV=oiHg~}x z%rKD>&-Rp^4+O)EX+kQ_dAOvE5!6jhX^vDXm&+l7rfVA0f`PDZnEoIcO_WF}Konx+ z?8*udl_yjx=OO_{h|6U%>n@u+X3PHWFW$MXt|D}_ZE)qn`ueKK{HaxUJg}WoGJ8^a zWl7NW#3%DO_oKmVlz<6cju4Fp9`r$j;I(sHh81sei{ASg8 zXG|PdyX?~2+B^Fwquc)eyW8J!#hwF= z|@Cl;Kd|uD?Egq_OS%vla>|pMPcRD;sx4!hw#iKFcr=QE(BkjKBQtc|+4pLzhY- zAvb;S8<$_OY{t}aojv`JJ+s#J_@mFf(%jm)YUPr=?LPeEngd6gEJOd{ukLdkHyjFl z^Cy35@9L|rDBXXkY4oi`^oj3JRtVaky2W7Kh^4p)qT`9_<4S^-&bjo1r-rWGbkVG` zsOfTPne66Ov-?x|g)^%^a^0y1n)^?gQaN*cneFnC)BP1n=ttLfA2m$~sseLL0jX=- zIm(C>YB23mN(do-{Mpb=Pzr$B`TXW}@jUU&!eQ$8`#NI8t?7e$JrLpd< zd*Xx12@@tZb+jfsdV7x?S#{r)D(M$|5+9liNHon;cxd;&O^-d1X=v0fQ;$TWl~qRv`o+36D_2~! zwxr~l=bpas!pqlL=IU40pBAZcDiWF9hsIWw4=}O8N#43_PJG^^?xrL8e15@_v-a-X zz3q;lMoX(%Feq|TQItvm1t35OYK#mH^iMx~c|~niq%0ymF8NTEwek%9hRB*;0><@@~tGL;g(jJ4<3RMRZWkW%WV<q(Xv9fv(YyU4QDvJsqvR=}VVQS}?ULXM1nIXy(|eh~tTK7mStigtE7O_SBc> z82w#d)dN29_#4P_sg%-nt)r{=ig$kIlJl3A#v(uX)qM{?x#sc<&-~K&es`>;(=?4t zHvh@5{i32QcHnT+w|{nzkkT~tkA3N9H(a%{s-mp1n2s z-XV?w0FX)r1LiX?Z8~t|7$Q`Z#kcP{^y54K%DMRa>MdXS!S5|oH}p494EO}?P3wRW zDJ8^L7agrd!of}3_pe^R0{|?`C@+h@xOO||JQ@!9G*97R;DN_pQc^|2L8+9FWxwa) zzk42Ml!k(qWf*|C`#|HyZTk^16tpTzV@Hm)@BHbXqmf|HG6z$cum0fomT3e7mQOW2 zq9-Jjys;AlM{{#TaJig5p?uEds+{dnN?oBA&#EB=bGAp2xSm`*yOt8n+TNmBHOuCW zaXewWd=!gg0XBT13k?#2j1aDf?Kny*N|_RzF`$OerB~EIP=aYpHw-1DVQ9>C2lnlc z)zs81nvbT1xpX?02Z2;$JQP@X$rV+J0i&XP%2_LRty#D6sfWjLYEjg5jg*z_Lf7G9 zV(nNYgdmaNpU)^1QOrX6<-WyqFi0Ppq7*6slz^ao35NVYx_9js{YcXyX{w1c38G^= zdO+9bEP7_+>gOJR?82+AS$)=->t1;Jtn)8^aT)C0u-!axM7DHQXt^U{RazOYt*sJG zZ5Gekl?X;s}q;m{fb|3Ob>hJC5gaA6_hBZ0iXm$3_@%lXeJR^rn}kMZ%n@CN;KHcyYICJTB#9LLQ18m zsRKnsbR36!f>EaHx|B)?PECU#lS&{G&vT>%+s@f`#xN~7QOQmmCPMXk2Pc=RraU~M zHlDRTP~dYH3JH|b^A=5D6g@8U4p#sgqnDjI84+@MPbeTrM&W~TbUTIr-3sHM6kYp2 z-IV*A#n%EyhDbVwYXYi&vawf6S*F?A-t*l%?vYaJx*m;&pLlLP_joKCl1ha`fk&TN zD}*p~eeLEw(Qwc*jn1C_FMj8@p`cX~i|pKec>U%*u}Fv#p9cn%RH1dU@Lg1cLrelxEwPW6CMgbB=D|Kq5Swd-e%7 zmQqGFT_{;yHO4RvE`)yyky3<15j&UFb)9J%=bpxNzqZwJTw<8vS#!eErcNF|rfI|0 zcu>!Ec4j*IkfQ5)+3sG~vk&drDSHQw?%ol|*)bX+0JNlH8|3>sn@iAY*wh0B1Q7&0#T)};-_mINbAAIJx@KI-+#~$3MkB-|?dHSgpmtL`k&~;n3hP+fN!n9yupt1Fp^&7LPw42X(j&tPT z{+9M`mvi9CbrnL8>AGf^+;yD1J?Y|AMA|gl|?$P*PPd0<%4}<5Jo@>!8suW z34oLc$URpJ7)E)S-PDeh2u~>@RRQ$v>EW`{Su>A3@r0Ypl};G1k_nYcP)ZTd%jBg3 zB~|U1iNSCj5ryDN$zUjw&!(l2LJ89haPHapTv=&3C|M-r8vO_np2M9S4wI^VoyGxj z+2a$T&_w`)`J5`!2qORou=6?aVZft(NJPS&yp$(O`}G?0yUlaGbUMcdC3G;AsjsVo6W!gv#t;CQ z9w;3%gV0eqVD-;#`5Ia5;k)2h=~$2KQ3ZFyrFAFRU?rsxLf3T?jS@;Z=en+gQbI^g z({f;USV#BM&pVB+WjUKzC4vhMiWtNv!I(I0+Tm1xZp)^t7cPCF;lQI$KXJ}E=k1Qf z9((M8@`Z4aJ&*0@bDekix$$BDkEZ0^ei- zR5AP_ESA>~ds7ulyVa|2UwHkGT}LVDPox~jgHfGh-h2+&4`VJ{G za~%Ng+we*}99ekIMUOuD__#crd;0l1MBY2LKSZqHKyIE^LgVGac2e9OJ9oy!a~J7B zle-Q8VnMOEST}`;1(jlduTbn(r4#|Bq!NDZGJq1rBOfS*1S#m6FQoQr55DNfb5>vUq?7Kp};a3VijQ;^T<|CKLgbkkWCy#S3P@f0Z8a z|Fi#Ruip^SwViw}V^}6*8bS12hY&=nan1<>G76xWrb{6Rs8~2UFffo#CbU2x+tQre zvnRlz<8P1GEnOI@DoHnY5~e|af~7N3LGEw^G`8Bunp2a;Zx`uIXXoNb&4B{xi_olbwS?4#0TJry; zjUq_-=5xUQ&Lx@3>^aatDIGPH#GAqp(Br(OvTV}$x|1mX>F-$Ge7e7N-$~p@zd@#? z)U9yo*qJBNT!jhd8o7@4 zaQzqrKq0bi?ILS4O;o#5hWz#?U_@iEnjqIzec(m4)0#~ zQgq71g=e4n@*{tf5v%I5l}8?Zg49&RFFXK(L4Cfb;pMevReAjE(|4}lgt1`g>?QlQ zY*&UJUb=Yuq5a*7uKEjCZf@AC1+1yl7I}8QY5g{B{G_=nRxDVt%(C=cIu#0qOvCKy z?>0}fRb`&zWiwf>gzLKQV6T%-216muFf_{~j13OUnNORZUrG<#1+|(b+)zK_`e6wY|HoqlYmDpy;cG ze*Hr*ElS}Q-vk7plnl|S4j1w(hS{+oBUn`T^PhUS{NM2i5h-X~l3`f0qA0Jz<5ID& zx!gbN9@p_54pn%WJ8{pRa4O3A=r>XsWW`QcYSAf-H6R5kv5%MNtzc;csoYNO?(eSMv&{^1WsVu*yh z`FPFLCD(uT#2Ssdp?9=4_w;snu8^VtcOnEi=R@cx)3l=Ds8UJ_K`pcPg7b5ODI*vV zc^jB!S_T|G-1xwg$`jW3I==Vt?kArwKkuxPYcAi_)X@F>3yUMQ4I%W}+7_3NIY9Dd zy`4G|g+Apv7UTpKC@k{n7Z(V@dHuMtZHJE?{`K7z3J=!TbtDFfMr|P*kL^4E+$Cu{ z-A)uvoRFe)+wQ$~B%aG=*00+%sA!7PP1|?%<($D>e*5l&eOYHv!mhoC1~R!pM)n>$ zl1}CFhS}WODVgC$!u{zyp;S~=rsLsVO-JMga^_iQDg?)Igit_yekD{zeB*I^4G!%i zh$5(jP(l&{MRjO3w3_-@=mKa~NK~L9(HU{2LJ5E%0dtPSJ=d{w9HnB^v!x^ibw&+c z3s}swa(P=RE`;FuoRk6q0Z|nc7l;s^0tkgdAQd2Jx(=gVZT;zRbkn0fN4GFDGzvZ7 zSIvdjxvGqA5F_#I%%ZD5TM>#YsYY2z{0}CCWQ_jlfoHyR$33O-=x{=@*J}DA6m&F; zX>2T#dlw4^eYfogLi{4Y0uvRbWJu|Y65{Xb{4$S%7CR}PwTT}cdW};ji0H?_2`xNR z;Y|gIKq&zQpo(Q$P>_2sIDI_sp=qJ|L;1Y;P@wjs1VJf40*v|`y^2!i3m79J8`_jm z;){p+Z+f10+dHnDKDpkP;~Y`Xzxf>S(3fEvx@j0{w6P~bh>}Vw>3@Yn$l<<%QsUzX zh9-59Z=jg}@~MCjhh7ju{LBQUR7$0kqLhGALP~!ajiM5qQev8hroACw6B5FVAfarO z;L%|$9#SemEDT?K)%}K+#8G|-A|heBd7_O4&^1GNjz)Dy=7iu1KyoFdBm^lzLWp4) zx^58arx(4lcx2yi|6De1LgGMAZz41GqKoW?!!1w#T~m}Y>Tcfe3D8W|_tGodiQ{y4 zF0P!g7o22g>!R{;`jeuNA+xB#g5JCu%lxda~ zpoAzTHBHwv{RBq{(@bWDG$Wu!K2L`a@}WqT53d~>^-3v1P!@;4D2Fj2pcE2zLU;KW zMkzIP&CoS2$k5Tk2bT|91F;y+DO4n><3K&7R53HkhjqZK%EgNlK^=z{2q74yQc8c3 z^a&-JXovLA{$ki~hZ+Ki zn9JLjU2x{~$@Qa9e1Ee#;KG;atB8;4@=PX&1a)1@Wpe-!v@AgMU9wUtn{$Jfg#`i! zfMPj;7*_T~2@y&XKt$w1q%&E|Gyx!$&ISUeuCYuu=c_(=+;bc^5)O`7_8tLzhNeQB zPqwL%sht7vqMN})U{DWZ^y6w2fai?_c6J+7cP!mmmVeFrDfP^DbYMM}Bn zF-8m{)Ysb+4d|1{$J%={J%dg(7L#1KuH!hiPPJIPB+=6!t{+!Du71OF&n^DI`wl(( z_nKLADyPoqS-Xt|OzC)3BVI*(FLnEl9=>?#itsth`@i#z1;NT)A{pu(96x?)m!(Y= zs(`s-1d3eH{`pcCV$ub;>A*meW%4V|Ja^ZTgU-&~D;6$$X6*}}=j2n_&Cfn#O{lj5 zLCHPWbqS@qru(372|$Y>I7BoIgL5H;Fs%R(1f{G%5Gk>1}D8wrJ6+cf1XhrvRjXgjL72BUNFwCH{gdxI{!keeVkdnNqxPJOTm* z0ZA#9@RY=Pvo^OMCdhIG9UE9aT?)MJv~&72o#5Qi)G5ifwlPc2?%%Q@P*y_CfFP70 zYLpQqnx=6sgdkID=%vdhKJeWB#_pUWM0M>L!3BciLgw<>Ts8~;0;f8XF+If7J%WJ+ zfI>>&Ne}`WA&w{fQ{9kX0t8cMjwf_Rq*5LqjVNbf9Q&udlWW6I?L)UezE{AZ!|tmu zC{`N{osfr=c8C6SSY5S$cs+g#fXPNtCXajj`@i;;PrU28%U2LW9)0GOZ~gS{fx*toen@z(-8ksa%q_gRL2k^{gR&}`o zsXS>+s;j-=?7m2-zO#M$wAt~cO9BR2P&uyMwd1LLw5oPzva76Bg5yCrNGSC@0ZO4P zPU%86tT4x=^fZkI#@DWU_@Vl7<9Bu*oVj`Pd8aH~b8v^9n%8DknU0g_Nqk{~6*^BAREaH1$83MoWB$26TWO$y=K0uczMnZy7Qy_67@ z$tfw25UCVO0YH4bs}Hp*pq%|yowmt zNq%5pKmk+^>A%U4-D2iDO<`yZxhI{Mp`vjo<$KZFM!}HI?PDXjn=qr3!}vbu|@dEty|k zSvFy8&1v(d*VR<$hE`El5(x!YowwvYZ@>I|zqt2nKl^gO-cSkTf|Z*P@SZQj?J%G#!`wRWdmE^b~m`=*O#RmKAzAC+EuG1G&i)dSXa zT`6T4rfuhyQX11WjWNmwbNtEm?F}7iM5K)Qe#6jBLTNUeC6o?q-rBZzfB7j3_T2Z7 zR#Mixd3)Q7YpqC_>4cX@H)jXC4jqaovYiZ)>4A74)TjxPOoqxTwxzmCJZEAwp6VYU z2#gZq7XkY%D#Y>%0}>Gd>0n}D+?-kQ3sxRIdi3mbS8lZjd)99}wWMCAmt_?(-e$Ju=XPs7M=#!1mEVCrHZfjL#MTCp3FRykObne?bD7ZbC7LLQYm(SUN zNC@SgE2WG?0&Dm8z5A;#ZatV#fCSMrLsEg`<%Q>QkNW|tQRo2^LI|Ox$X7bjkqHQ> zu%kCKe@ey8m&_hh8U4c(dvlJr|5$%VU#7Jywg1>aEMy*R>c8)~gV(N@*4dZ&>+=Uq zosN3@tCZ3;ogkh}Jz$Oby>~)XCa>2DN6oRd6=P~EAAWMp=A8%U&YX1V`Afg~+4sD( zVf#0Ka`y%2EdK5nZnqtmP?EQuuYcy&N#pC@^U3eNvT661KYnv06nxk9t3LgK8y|f9 zr61q<*SB4B{wLpmeco{=)YllsNVGKm1ME$F0v@#?fRHki&DYme)l`*!<%fT0Zt0?g zNFmp6-Fw$xpRTMdIdA!ChN0*4wiLe4P>7hx=6m`Q^Jh&iiARqfYpbm;r$~H__gu~f zfH^ZJJ^9?aRX2WO_x{HB-F#Ij7+8MA`x~0tU5|%D!CP)v_1k+MAF6eGU8WSJB$-S# zH8pu$jH1r$U)~ppooGFQs5SyZJZvnRTbH%nC)PLEF7Hj`_cZjr_sV&9J-K)H(Y^~$ zAK%fN0l=L{dS;Fo~nw;LOeji#Ld2*5dymzL@gNT)3Bd5OdzB}5?r zfTuulMF{ac?s=Z3X^b)ManJEw+XIj1+FEptR?L{nfS%Kk~wh=by9kh4rhwZJWjX8H0m^xm?bqI;Bhq!88p7QbM@kh5AS(QNiVx zUSgT1RBHeJ{d@QBr<8K;QKJ0dsFGYNB|T4LOb9_4GfZP}FlkwONyIvuP7MY%P1pPl zkMuFGew7pe5~2W=l2Qs7g3W+Dj!-RlqG60kh=d?x#2;=s$IE8DXe74V&ON&3(EyN2 z8Vw*ecXgb4-U@cCJ#k>a7NA}(%Nb>XfC5D+V@%UD-4nLsxQHMCJt6(CHJ8sx&O_l) zd3l9tnu$d6*s&(R!h3YnA)Cz-LPi#UE+heg5}Yxyo)Jc=F)QjQA!nyh8}!!b>){zKJmWm-*V|W$yDb0+rCm(5>92Z1B0pYW2(D) z2lgInJpb&40n4-OKlpP?;38hMal74N8;=XDEm55SEP(Udq z#1BvxYDN5!>ZIc2SedhX$gyjN(@Wr zq2}yhW}qt&4UAH^%dX-w>QkL~fe5OVbVxk^cm>8n@2-0SXOC{9SyVR#dy3R>F!1I@Z&j1pBd!glzS zpW%@8`H#NC&Z955odw0#dv48U&gJ$!hkRh3&z}GQQYl1yWy8*| zefr&b+xg~C?!Nx2m3{&#o3pRE<*&sSn)n;Nz=fkx+eI)z+Pd z2!S(Boz*vx%w+SXuD$*s2_fh>&WveOZ@cZCp2trX8J1ECk!E@u4?K5A0Z}>9ZUo?5 zR+Wa{b?F=-&3fNu)JR zm!3xuJ?=@Vdb>LZ69dsPwJe`F^2a{}bjy(<{P7Ql$JSQPnz3{1`qRfv44pFX#Rva# z`Rw^+OP2oqC*M2cf=g4gYy1AReJnA?giE@0(w9%w_VKi!=7u8i6=#)p!{+5iP@b%Vp=>@wZ$94@dvkIbZ-F1oC<38=t=Q?blpz z-`}1;>-1C7nQTvQqO>Hs@9?olpIKW~QL1YU00IG1)0huVV2nm1q1^`>!l6JaojrK8 zMPm#REz>{(W9urv`I-0p`N3z~yLzWju7CK+HBUUZ?(-kH>Cr!a`}g-fF?-s?bC;d^ z>97CNb-jRPj3fYsQYq6kqS5F{?+50^MlYz0=z4+@TrjQD^#mnkPeX4*+u$vi&4~sL zkBguDb^C@r?akfkhPJ`eW>ht{51zMh93NHWO)13~i^pT5Z>o}ZE|*Sa?0m-cT;X|v zK(L~++H-B)Fce~Gso}XUAR<9Z8TZ_Hyry>SnEg-uJv?jn^vf@267r4%K(g(f_Jqlq zzW#BwRbDIxwjGFrv_t2G6P74s($?#hE%)|ktU1~ z;-A|T01#xFm9t&ui7BVe?Ww3(^YZih*eMQo{PK4tCDnDGL5~2+f_||;0Mjrd;qaj& zM`q8S)zsYl;6o2b!ePO=&y2yC=D7|*6v6|a#ZW092Y^J4n^@QJ(l+nVF?T&JZEIS3 z*+tQKL~u!vAR$}`$)%q*1|bTJ2*qP=vB;``w(;rt5y3xao0?WqSsHDNYdRM)o6UwIQ9zKWMPsE3 zA)86-x{=T4lgXq65)1}nu@jmj`bc)hud$rX>#HLRXI7^&b~@)iyQ%5CMdMDNU5g4H zz(X%=X)!eRll!-|_N4b5?X9nl>KYY7j#7Flrn^yr=6|Kwlq{AyEc=k4#j^5Lgm&f88j5=v)t*Ijn*=RbVYkAL&m>dI08 zIB=xtxA#8r!!Li}Pj`GFo6X;R{i+}S`aZ#>X&AS^^U8}>oNgJ$_PvLnd2wUVGEY#g z=Z&`iItQ$j(lxEKr~jhsKmMr?+;GeFm$Y^E-15EK#{#Bt{T1g~mT~`M zFaGeC_vLN(E${xq2XDFN+RM)E>ra00b3cCg$u;3{V1(%(g$2HHC5lIolhFwhk#NpO zc|C%VvLs@St%_uGp36lzpdV{boiep@`6*+hQiewNHuksoWv@Pa%3V+G+qkduy7Q)= zF}o(`@R1g(4}EK+TO9qmWbSc7sIKXf>#3yYI!-E?^jw#FBC9;51Y<0h%^;#_8ir{~ zDa$IVVrAu-eFqx*lV!7JawXCBnjU>hwsnj@{{leduIJ|Rgizsfk;y9sQV1XbT$E3n zdbIiI#Io`L(*C95{T=NTiQrz; zGA7QNpDHWc`}mWNuE)oY2LQ^Lulqxl;=-c@g;I!wQB+b@RFqRf?!M>VmtK4+6buy8 zVTgcsK1V5Ilu8ARF)5`GE`nx-!rL}%A%g>BC(b<7*KZnn$L6hFUEOC~a^ciDGnD7~ zGES5cP)Z4bfUhEdKmx^T&O&;C5-Ft+LU>+DNt6R_*t}!wn&&_V3th)?kRrq)hf>Lw z13LmG6G3kN6E zL_c`Vf+yBDjHw9UaQ+M|5_dG|Fy%>&2$2f9t1r|K!dG#*MAow(H=+dD9opn@%YaQatwTE1`h(27#YXmc5A` zaFKTfN7}_ws!$-XXMe-B@BR{{L zw0rfs9h$~I^7)?vg2vdz*MCCO*suQhs8T8(4gc)75B=f~k02uFA`mbmp+IAE=WU<- zK4X5JI7GsMe-L*2-`eOCA{2y5@nl7uirCx2eMef*MG$iiKVxp)(s^}UD5kNzD^@HT zcflDGvJO`Y@{YLi!kK!@3^a@yf=dyEa*&umX}z4PFq8C3?Cy zJ@dCfEUufT-Pd=?W$wZ;<3RVq6_vXW97aGNfJ7-p08oAjIx@Pbrt3PM>+1fe10ZF}^OTf=bEH&)vUAz`i4&ZGP<1G@sH)z{=XG88JU8*;hQ7Qg zoj#F*a3~ZAprI%FdJs`4Wd(x>=y{$G(`A|= zxaWDEQWBLi4J#0gn1+dklliD5w}vh(K+0bC@KV4u`tchVN~O4vfLK!&{?fabav_sB z4*+IPDF5oD3eLrOi^re4XdFTGxbTGZsT@cCphe(UVP!Zu3&QaQX6Pf{Fvq175JVxw zb?^BSr6e3IoJm5K_2|>D{Oze%2q9dEaM1D@jSO8+B+~Eu^bdUKj8ZBb3IM<#?|bS` ze|-iKgplD-pszo9#XCPYq*TZli-p6Z2D^>8QKP-^&Fg@bRLVaZj^bh=glQV)u)0zq zq#teew}Jj$hrcuQqt8p_zwn_hh#;kmMuL90gCI(!JT7#NnYt!@&<)@yMni!bZi=vAO43R!|5oxJM~N1+JTS?0jg(jQTlqjz0H1aRm)qwTl;X$5ny@ zBB2xzJ;z4RaczftULY7SgFz{kW*DY|anq(ZWzyXPeY0I|>beiRQUFM3B9XK#Q4)&< zO5&a2XR;?VARS!o~^0x1cjN`UY@sieGpY)3$0#HJAro~H3 zB4f%2Hts5~9Mjd-l^Gn61Tvg=Zred8kDqzzg_Gw_SDvdBp@baI`}(8@#~FVMbb!7e zMnpm&7zz$_4IJLPE78)Zg~oBuc08xQt8+u+6P}%)v~0Nwhjy)d2?C)~N#nh}X%Ae- zRl1!~5M-KCiW=68*$Z^TGz<%rK*U@o69`5eC!fn_7-8XPj0;aUEGrN=@yVd1P*RS9 z3Ck73PR|IAE1>AeJYIO6$=O(>ibKTFo;Hb;;teVm^2>|;6$g$}0RD4W+i;4?*S=qP z^)G%~d^^C5B2iZ15EYMxeZeJyq`2-80A-naz%r$hegMW_NK4~UpEZRLB85}{f#H1M zg*%`0I@{M0@FL<68}=yd&FX*=P-9Hfm^?{ik(`X^?$A9bz|dG2dcj8i5tI^5V<%CF z@KuI{8395y0Qk=h)F44Zsdl1Nl!Ty@%MyY{AZS{Fd^V#6G^%Nc#4;>p1tO97V4{~Y zO`}9`x4*kPol2EVnPeJTYWFUSnt3N*w|r^otZ6)NQ$mI7M$5|Po_isw9#b`L-1O5H zx{m9^tc;Mw2uxhQr0-Z`;`!BX&wvUC2>?>6lp=(B9yb`DABra!V>%(IY6+_#BxnUE zG1IVUKIbZeW_d*iV;diPI!$Ed_^Ff-*Rd6V&NPp60Pq?3bX}KHxUSpP-Ca>xv3vJ! z&vlf7yln@9!P{>n`K>#4LsvTop{OqNHV{G;LD%J; zr|YI^20SNEkRYYGTqY0-J9f?rg>}<#9hXwdbe2t}2{}=kbgCK53~EN;#A(;wI4kHe zpKxRUc@Gf67$p=bkmEwR_)jDS{eb^JY6}jD7XrY)QY0MuxWZM%-@IP;YZ{`fGw4|x6({nvg zC?)q%SCmpEm6V0ogM-O)3#qQT`pS4b_RC-1xp(irIkRVd=iA@>(wD!w zdiBe}V9@hihD0jRG|jQ?vZ^XTxoq*W@-&ZEkDDDWrG!aPic89xg$kAO55a|+Dn#&QTnRyqF{IQz+%Pt4=jWcfY1bAcG;EgCmez@e*2vx?Ofi+{ z&o(s~*|Y#9Kqx7QQUt&RP>wAmH>{vz=cPi|a}XgEiVBYh!V$v?CVILxUGw=tP>qJ* zW!UgQ0GM^|I}4Hz|H*~`N>R;JpiZV9FeL!+t{YZee&Mp>$AFN+cT~qUcL57A-hw`^ z@Ow*$g4^|x5dL5&a_NIo1^HeCBBU7NMHixgkCH+Rxp2;f|CIOV6ANLhH2qE4_+)~1Hkg@qWB99EnQ-_44G4l#fNA*2s8 z^!vo8;>_ipin17tN(Lq8j3%9wu^X=E(aPXPO0Kv;T!s8<62_cE=rFQMFSTIXB zH2|No5eOkU*EuG6HKV<)jYk`gb=sM#XryOwpfTCsc<``c=n*9`nZWd5)wnTcS-iQe z!*7blw1OreC;(tZCVIkHGMQ>`Z|~~r8dF#I_P5voRG^*YZMeNrQr2l8yiLNz%9|kNfof_!rYWFwwj4?`?kOB#E&-2CP1sA1d6_HT5 zx2G31R=ND_{6La2WQ<86!c!&%%gTUr06?ZEdwN7JOErxWqA^l7evAS_kO)t3?r)QY zA<=DY$qfwZwUq#%lq9G?2?-F4MB_mf(s;7J%hZVLc$66;m(KLIySgdH)b*D|+jM=y z-=EJA8L1qrgU_f1OxFRFR1%aTl=*o(P18$CO3F%0_UzqPT2c~=#lG|1AKd-tdjh8Q z^LkkoNR?oF^I&^MPK=G%eH6BM~heX>2^y-qvzlrVa>YR7nLO0nu|^C1q9J z*k~kf+YX$t7(*d=`k$>JThtyp$q$JD9_KI@-ntx_4^>5m9(f zqLh4D@l&7Q)NrateSDs+2?pQVAgxA%sy10E{um$;V=ml4yAClaD11 zH&D~k3E^3XGM#bfl=r*~J-2(*GI%G#Ql6DBmY zw96vTq7p*WG{L#>xgi0i5W!F|7!3UC&fnc|!*$)=Jwk|ZII>{={PWLW+1b(A*Vktl zIwpVY9Fo&psLMLJqLOxr=ju)!9bP)R9JjcTs+lv2l@eSz-Und$3i;b5Sm zq<8Paj^5<*Z)e|OIlzyHgVCGm)law5m&d0|M?mr&xT zNPQaZf@rS)mkJTV*DO~6blAI$G9MI0DIt^;lypf!h?n{ltsoJAGUiKwP)Z700q`ll zp-AplR2OEx3>Xl^A(RYd)W-u71WK7d94V#57ZOJFD+q?}Ul97G!=8i?Re0t?+KUiE z3ZW~cloaS@2%$yEVL(_oZ+cm2Y@|{#@Md(t{^ZEn&Y`0%!GL)plLZM91gXG>{ZTSh zlcQwuo#RjgEb#3W7!?RXKq;kvg!H$IY8WcJuz@V7v=pKfg|xxzHcH7rBGuiS065`Q z=C!?u!n2dz4TNg1Qp|k)H&7spR}HU+kW%5RP=Tll)W`U0IK%7vj*xK2MtWkX6GXu| z(+s6JW4fjZ$FZdnlrh)k+~bT<&IKV;Q*c{|zLH(~mei3?6?YHLSCQiOo| z9J!QIAq1cz1asLe=i<6+uW4`ZXgqc-ok`#N?swMLkNMsYe$;fVsjjZJy0%(K#WW_R z1W;0e&R8asnK^Z4Fu-ujLA}S8E@wW8Goq9N2@y&Fq6D>I#?<(k=NxTrDVsmnAI*Nu z0E@6JK>u6{T*_e33RzZfV{>yhkrgWGI<}L~=bRkR=4CztbPUl9T@Q~L>$G%~pSnOR zFHLs#@SaXBQqFYE$N1!OIoEZ3z_0>>Qe^Ws(+KHvH01;R=43;_re#A zn9n;8{r(&0ES)c<@+$;izrFb!uy2GA%QOln;F0?d06>DdyzO{g*O<@xoz2@)DgZ?g zLjemAGufQ3X{MnAfX8{>wi#uXWdJ}nXGS%ay`NQ)F6VTGgnAo zt$k=St5LLFUQ8X1i0__&0?JNEZXF8?qEEsr38MyDiGlv0sm-5M+TNFK>P(eaR0_fU z5)@4{!qHeL9I~cNo-}v%p~s$_blufXCR;lGEU7aEz;xZo=kkg!y5?;rhuFCK#pj)` zbC6OZBGWYlRMOX4MhYai_i(;15veQ{Tu??i7o3XHRI;nB^QDa&4aT6Ox1tWB%siUP zZP>IfpUw8B)90_8)wpBhw$5|sxpC+-8;|W*E zpke5Q1Oh=&iV(=#eAZa~`U~g%<>`G}5B2G~Hg^2vTqcbOQYpfiX&NUu9VpYOZZgey z-6&|^Hz@=(bm|8uq?C?ZKp_QmszCYmcuFZGXzEN#<+vOOj;h)g0Z~bD;*jru(i8y3 zXuvcq%NPPBz3SH^xYPe+K5CY8ZaZ$kG_u(|AtV|KQbrxe%i9iPBp3*xf}w+f0+r3# zLdamiG!5PJc-FRkRFtkU%kufFksxGpwp6MlX#LB69j<)*kI(k6e)<=Gi~vZ`XP+Kn zKNalF>VN^@MCyPgC^zrTn>D$rJl@pWz4t&vI2<^0@w}jAB4Rd|-?H<7;9|wHQ=8hl zTid%4vAi@oeahT{M0(GG213c=1vA6J!0rP_`}zk7Aq(bAEia8VHg_C6(i{p{S=*U1 zY0Sj>+TQ-b?RySODNmU_MPqcw?!%fk0>(Qm6z08AF)^hSjJ)VVfno%D2XgIw8UNg0 zQy!`;32>oYSL`|3Q&Scyj|aGr3Q%Jtk;-@WXQqygtK&Q1*J}t;y{Zy=G*B$56rogj zu8_hHh@r;v`Bu+{bc!g!Z98vSRxX!S02dlx_I(;e{#=t=T{3#P(`r0?A z-F$P+;?soVa)jW_8K~pV=bv3Vd3rlT6)&xuGX3cKS5OfIL?9@9{%3)J(4Wk-b_Ob9 zAcaqWgp>?=d|)8Knp>q5z55Q1S+Kl!aIm|l9}gZG?CEuqqNjgA2p%mht*Wl*9!x2v zs4p0YD5azXl|o9HR6+_0AQ>IS(`OklqN+pBA z5HhNy^h1kC2tmRzyx+bImDM0Xsro@IFW?z4QHk*xv%j3~# zI++kk8io-G$8`Nf3e}1gEF)7CE*yS^l6xBl9G5Evra>pwmG}py{m1$MU{YO72%$5Y zbNQa5y^(-6p)SV7$j=P`01Cm^@hZ2Dp|zuD-@#*+sUs4H^96IK8oIW5=K*^1AmabC5kNnrG`h>*#144Wh6LTb^SO`Q zbn{zR0VqS)fAPnMzjMbuzxvL{;<1RIV}9!S^|ycehj;({3*WutFW>*gy^PV*=1u?k zw?Ee1n^>~yz2Q*cFTeVdq3c)Q@`Zs!^3T8c;<80^J&$V|`^}#p|Mb^?dDFEQe(h7Y zFh&hse`VvYi*NkICvLyKtR%Yp^7oa-bTLAQI%2M`*Jq>F9aB=7roQcP({CT$RT>TC z9naL+hp#<#;moQh)-`_nPn#|}W5P$TJJsU?0Vu++9@){=pZ)PiR*2EE51imSgNR&k zRY)R8JD(>^Cxmh-HXlk5078gg#cNstP1AzG@UiA&sbpgCz(E{8dGe~u_dorD5sQO_ zo}IfVUU-3!Dmr08%aJ3ETi30q8<%yQwx*-83ocUYU-s4LrIMOqAX1;`A9K0v;YPJ! zhMzYw485wdA|0?Y8k5bPkw`deX&wR3(vy}!Te~#fOb>ST9y&VCR)HmpD<_Y8@GlQ@ z&XHiD^azQNf*|ovU{upx&vPB;%rloBK5`Tkgu)?2x@+g|wd>Xyh7pTKeeN#l^EFZ; zIHv~V+?z6UZp_rv((gp&RfT;XpDo+Wb>x2>EIAd$7C*Jf9V{El_IH61_i2@Lb zB1-v*7(@U?7?Xg>&IDxax@aWT-`}}wS5;a0gt=o*U%ITeetcqYv)0m93MALOEi`MU zBZR$qdo&(BaOhyan+tdMhAormIugo-aMC$~R4Ng$jJA&6yPi6v699l@GLy~bgpibg z=emrM6F&iug6`DM8oG}6%ZGOkr1GZD(mC(!`E|EnbxQX@?pt?lWR!gOealOu)<8P{ zgL}5L^rWR!*PJu;inFHVM@!2J>J3>A{%x6WLP##_o-i3Um}zK)kTvUf-2Ukwfit6y+8QX{g$D}W8uI4=Bv7BmefejhfMw{qkn*En{Fy%Htj~V)*B7lgWBl0ap1whkb3c?SmEv54g672W zwKJxU0|lPP)9LJoZoPKdqPaJ|@2fMG-SCC){N~*^UUL4~i*CGn<+dHvW57HjoRQYR4b3rR;ietaPDwEB|Yf9`_ce)fWJK!15> zD*~?F(YE5$`ePl*_P#VFBxtdhwzcdz+8d9UCw7jv6#y zJMTvtsShSWGy?%d;GXMo?(<(V-LyN}S~qP_O7Z^wlJVmQHf-+QwT~JmLFj2XT3S1H z^8Cd#9*>lkR*##Ao=ubj1)k?B$rUOog;F57BtQo@?nt$CDawFAKA%rzQj_P+n>cN5 zO+{VEj8B>{v#h!zURE}D!Rh11Oqx(XdBMUZ^%Lrw1>gAMOAp`mC!a}-b1szx1=Rln zM8Twzw&V2l_P+BSZ##VWFqcvx@hK33fq<^-iVy%4Tp%K$)EBM?r3}M5y8lqqo_*Qs zibr}IAMI;;G|}?dKb#-Y#!d11KG6TnwnTH;JcJsDDW|{nogex}{g~=$lj~iV+qN@n+Jv)~%>VdT?if4&%Afz?;kue~rIhD+ zt8V<{q{Y|%>~{}-{I=_-Ppa?fOI*F`tk(9PmiDeIFJ7L_+yAcSoRIz3oq&C5on$Ke z$dfO>{hAAwoHqNZ7dCwF7x#J|R|=Lanr*x8%Ci>Qwv$X}b&X+R$Eh?*v-$kthStTW z&WuMw+xHxrJ$<5O87r5c_T=;HA9?EK%JPz5-SxM3UBBvra~A#i!N33TD<4?@4P?K4`HS8Ac3I* zkOWncItnP29lf0|Z3x_Oxj`uawlufQU9#Y`v(F%eC@H0sgkb&Di3`s?OA6t*PB3UC z`UcZZHXMr?WhFiRDOpGXN=?%Vf|4MFBm_Yb$vw$=BogWA?JF-U6GHemB!o(#g!Bm0 zh*E?SDI|cD0F-G`O3!s@IMmVGH6vDW;RUPge4Y}5P$)kVp65|&O&GJ_!gF*}+SWlI*dKihA_BQk44-Vu2_9FDk7-WU5Lx=+|G1ONw!ge(M^ zx9vG|<}5mW2>^Nende_z{mST$aR?xRjK!9)uF274WPkwdZR|tDZHKy}L7ft^Zg=}t zXH9PJ&8*$kanTtQW=<&k_U&g@l?J;9v*T-`hR(9KM@AmmQA!z_{@CMBreGsId8&a@ zs-UHB+kU__jem*Cn|tAvZO^~5jS^y- zx)9=EL-WC-%|H3thi|^_;)kACbLZWUpE_q6B1vU(gQ?7K{`~lDH(fDr=A=zK_P_Ot z^M3WGzged7p0{82{a^lti~o39mH$Eq48AvI?0uj4;WIC8ylU0*ci(vF6&EeP{2iap z=JFSvd-}Oc7xX1kANu@Hx_Sn5T{}Lb5v5e?x9q*>oW+EYHS2fIojI8hq?9_YM;SGA zEraNKyd)a=>2DuwZST4IlC#b`^VA!!T6xB*_vCWUXo}nsq?DmhXzZ9e*OP?cNlE)4 zC<#a%OLZL_Z65-oB$;*|eCe=h*|1psoO_N`ssBb-ZQ8wELewc=r4; zx=wc<>CqX`S;btJh1N0U7R71b3|0-+?I&pM9J53GEON&qRP zloCA8L8dUDpQx~I$>~+&>+iq!0RUixC?rBkpbV7sahis%`79!3rKPE4va+%gqyhrq z|Bs-QN^s9-TO|ZImx2q4(l88VJ9T4gCZD~i_o3&^-3Ro%hZ4XdNT{boeEhgE7o8WJ zTrYupe*6ZN4}J!M1r#&@rL2E2x$)sggKIX7p%Fnf1vGo)SU8tkT2rYln*74nP2D@! z8>V6CT2d({RkG!<7K_=4iH^f2Fq5%dJe*Ln!gWP12eyk5?z(Qy&MO5-h?0sB2pf7d z5^3umkV5)NzHBzv-PuX0Hfh4Rl9G5~bdP*ED?q)wMdk)z*>)EkXcLQdL$}l$tdZM=0&` zuT4s+YXC4o&%QJoX_rDCFXnzDO@U&J_9s&B`S^Dcas1e7C6$uOG;~TZ6bjmo!?|RP z4kk0JZv5nRm#?_+oJC*#)GepZoBFfgJ%osiF+T9}t6Q-fnRF*B8 zKV$9YJ&|DG-zD)hO8c*KzyvX8JJToE|KuAV{@9m(cEMF2y7Br|ci-`aF*Oy0kk5Ye z*MGeK=~y_Jcbs6ray{-->j4xv_SSCN^{(qz4W=?%b{*6;Et|Es>^yMwssKU3dJr`U@_& z;G}njooHQi&x>SK6+VdIaams-`Nn(Cz z8wnDn1V@chjD`<$-nZuE#B({YVwR@4jtx>FL4uffT|m%uLjp(zC>3SQv`i~tQH>Jx zH9|Ndp_GCUlu{)nB4JGPgdnFO`=MU~+l-&RPL0^Mp%Yn|hlgoec@Xn^r2z#H$fP)bRVG_`ddZfH?b&73;^YoB`el@~An#*gkgW8v)k ze*KkCeB~EUJ-=RoddsEfUVr6zH@@#H-}u4r@A&Q~ZoF#c@9%xmc3j(Wlc~%V7cJ8@ zwsqH`D=u7?&E-FS+jRhtx1CGRU;5%J+b|S-!<%wq_Fw0Kl~RVGH#B#oGr6b#@`IN4 z?&`|2^;`EIINV%UU2YmWA{vIy7?VoIA|cZ>q*6pFL)T-`@X@ArA;n-a-Q3p67>!1P z-~YwE%NNgE{kJ<>+k3{=R<2pU<9GKyF@8+-_rLu9kKO*(a4^u_n|S`^t=C+7PBiEctU>cCogT- z)A6NuosoCNi(8w!2eM0M*ZHMNBYjvz^yyef)l!9sp66KstF*Mt^PEgNY1_7!_W*%X zmUfiq*_2Yw31b=|)X)q~(+OkLGLk!Y@xDam#TOwL5iUA6Z_n)5x$t8j@LZ=n7;N6Y zW!+0JoV8>{>ycyI9)DovtWzKqR8mr=QAU9aKq85ch!%To;i@ zB?%#@PzYYsm{SVC<6a~bN{MWa0V-BiH*O%6BZ!PLi4s6@&!v zO`krkysQk7`23Lm;S2yMfRaK=pNoL_%O4jUBsX-uqqjS5#c0-97_Tg=sAS{DhEJPS zJ!6utQO9-wkrLDmBcHdG&$>(qqf|4kotw7iH|-R*vvb}0(`U>rx#F5Fk3BJ?x4WXE znoueU5D!2>CYzZyZStJc=6Cn@goQhH`YHX*?Yy(s+q4zy>ynW`YTH(FB2p7O5H%u#PTCVHla_K-I$QVUb`CLvGBKf1#0~SJ%k(S9R zUuO%_IoI`kLS)s{nS5bu^DURoIcxqHg819V_Pn&MrM4{em%ksJR2TjHuV0P?jgMWw zP-9To&5Z0>fgswp9g^~7>H%}X7qo!7|I;71 z@$J`~UtL+YYv0k0TlZR~$pzoC^S~EB_KpK<@9pa8udA;3>2Dv*;65 znu_}$eW9l>@rn1{@Qoke_2XavRe}2A$8P@MEm!~e*Y^)3(!OTh8{MS;LOH@wngSpQ zu8?ni@0TxHv3TORy4LpYr(f7;yY5$i@Q3Yt4g~||5RLd(zW@8}dk$NMjs$n_JNnfh z{vnmle*Rl`X0mo-F#XM+{Hde6ue&d?>g}IA@66N2)K=^}*!27>TQrS*>3hF>Y2Ehu zbEgg_Gk;&bxj&J-?{ClRx@MWi2(d{1d_Y2oQlrF}{F6>leyztS?}muB%V$k2FNvC5 zN&w(eMML^6m(C6cb;lEiPTzUStiiNXT^2HQ2B5}OM{3GLjwePF9|VP?#nq1d2IdR_NF77)}B9OHZ_=%{*4teG(w19gN(xG7$B-QJ@CSY@_92*0a7BA zk_evb5xYUhVb3#=mf(zFce(AQ7(sNycg}P(HSR#||d-QooWp}K5c}dO0X%}4h!h;X2!ll#B zU$OW82bbrfBob9hAV@-psT;zxtpHQh)A|RYEg4B?LDE=VjWSGg%G7~GI&)+<5FHrR z3|%)(*L7l=9*)EUR!B%e2$52Ho*;x+0n;)qmufkHKp?2=y5xe=LM85~9dNNoeMA!h z{DS!F&YM_S|WwOsTM4K?$y0Twf8lkdXIYF;__CauEsW1V>MKsQ?Hm zEC?sd0TZHpW}%aExBun&l{9tj=&`nM{P?cKV45I$9uHW?_kMBjy3Ko*ESlZk+4uOf zYi--rbxkK)b6fYhSATfbd8e0_#P%L&e0KGw%JPzL{^V}M&?q4Xk2XK?-1^$8vTy(F z&ksGhCK$4mRQEjeY&M?{SZ4n~>fg{JIDx$2o7Dj$0HcIbGMe3u0#heSsfQk4?QzZ+ z3kNMj(|-BKzgdev4!6M1r2(Ci#gql)cI&(sK*7hi6o=~SwuO@`#Y>!ata-*jCeGP#4vTob(y9SfufDQ!%zNJ+KXnFCigQjW9-kkIuUK`}D~~>OZZs~gzG}@APo90+dkz zecinSJ$-G1iPprR0$D}E?9idXl2|NYpzum&oZ5HvfEEc#Q0ZhUSW+TEl~<36msPlq zBbAbzXVOV2rTw~?(canj zlixfL2?upU^NFV-p}@v%`&O^tPALtC0+wa?gC`WUQt8Z{cRwbC)O8jK1qYMqAN~41 zUpZJ~ED{d(^(Vjoi@!u8L0w}2(Az)wgJ0Yi2?b13A5IT>{Atvy9&{uT4|t8Y#S^3D zezQ7YkMsUS%5gn8^6HkNgg6jF7-I@xFr8Hj7$v#9lgZ_Mc{RWCC-1n~ybS=pj`_e~ znouIRNF>vg(R4PS%H$A{62cf0N(~IA{c8y!Ok*}WIpJ|npvdF}Vj9?l zp0eVCEn7ExnGAwVB>IA(kmQ0;rn0%kW2d^~CO`Dt6IN}ll!`G*iSBvc&|u)6=P&E7 z>rtkamX=B-x#v+z34oM>GNy#^Ik})X?4^{ZX$sB(k$^tX+8gap&${HC@VqHJn=yky z03xN5Tp|GkluA-c^k6VGkm}fb?76%CG`1^o`id1VJ@eRE+jdS{x_sN}moNC}$9i_` zU<9>*sZx0Wg-8)lxV90rvbMW()2?(j>l(}m$E!-pv-#})Ok&*3X(3=jA=j8x0zeU< z24PCb{{Ftw@@l~ap+uuvUS!Nb0Fmg1?z>^8>kjucO}DJTi9>C;lXLSase~HIz5K-_ zpH)TTWbgp8X;owoF8uf^U=tqaryTKgAjGq?Qt%UP?Q2W{0Oa#dUm^vFTnzPqIxdc@ zhX3$7JLaE!O5xXtlwvZK8Fm2@LNrZ7fOMuX(XhxStudx)sFX^kvw)}@y8moSK`N6& z0LwD+w(F-z5HVmGj_WzDH}oL>t^AKF%4rt($W%dV?jHpwh7)TJXV*Rc*FH#P)HRlG zJ_qcN-HGFBfB2R6Go}IjM}yo>(2x+@ac4~(4<}WJ#24<2lI{v~t- z0#d{SudD?rCth$KA<8tZl6dJrMY-k4Xe^Q{D`AEX1eM@sz@&`%j931;iwZSD|3CJ= zI!>M5c)&2hH(c0e^T4|lw>z(sk80dLj-TmG>RkzMPM;om@WlQPrIMmW_5DARel1xMw!7tOY?GQ1WNe`Slb=jwXKi|?AD^3c-G7>Xf zs4xkwbYZ$kLTJNXdyh50xFTV>^QX?d_ru$N_M=%7#x)g30SzH29Td#b zfDJ2+QeN4+zkFcr!oH)G(t!$t&~H3=B+;4{RTc5M<24)9L3>L}*VzMz5x+AnB9TZu zCM{{Xkz6*NNF4~c z5-7Nu2l3Jx__YQi6{ZWz7SE`tC~<8oR6X4aN^3TSpkID7sn=+&jVWXvD6M;}*$PRz zh|H|CE)bVC#^@g9sn)u{Vg)%%fert^c-@{HVy(Gncij{`&w*JR?#cA!Hxq|J8_lN2 z@VVfTUI-F?GZI)EQ{Yfzj4|AEs6sd~Vj=w(5aDWKF+)~43=d% zj;mB?fP-v?5sA=o9IcIzme#r_+aL_IQqqzU+x3|T-L#amIm>oPAS>fUoQ`A10Kgb< zh#JnFKD_bu!KF3MsFC?hIveVOkvL!NEV^3MM8igDT~Il*HYCJ3lcv6v(`)Y}DOt)9 z$x6e95Rn7|#A^ES*1aQA}=yt3NzL|Y>QWKt=RWJ@cb$w?tx#}0zLA7CsI3j-Bo zGq!E#^EunLlkr$4o6dHp%F0TW;(RXSxDGOEUFhqIwoc)zvv*?woV`4miog(82u!KWM(vR5fyVys{!_ zZ_+{Du`DSCFy}HUH=Ybb-^*u%Ajs!)uHz_UY$w71UM|Z;MQyDumSw|rMX~-05CCdN z&iYNCr`I~_Un2n%08E=SdfKGXzv)-?>%^NS<3gNtfj0~MT97-wS^Im_1?_6`1j3sS zEtqs(t&3=53hiHp3(8Pr=AvW_uIm>4&LiMA->)}kOuy@3?C~1v#r2~g8O?Teb*H%o$ zYRP2-Uk#Zuz2U^EHQ)Njp^rWxN=gcuwE$o{wvbdXNhV@e3~W#mYmTCoZAtNngbWoh z=pY0DKs0O^v^FNZhvWUK=PtT=!z(LTnMXeS z*y}I7T7S9zp^rSack7PhhmYOy;Cl}3+Ou!xt|z|u`4dM^tbOU#rH|g-6&Q3K43(EkRn3?r2vr!2y5}LMq{wZI=81;fey7T2!(0}iCjkSckkcmD+t_&e zv|W@4eXG;Y_Z>B&PoJ7A2M@J2w*`J+nAs8-jZnrB99phpISyMETb7qgojrMwgk)os zR#I9$nFq{9g%{2q)mm3o_AMqHqJ^5?7{Mifjzb+x={}d36F|mj{ zY;eEpKL&ydl?p@0v3xJ<`9YxwmSJW#L;{$@Fa$)`ag)j7!1q#_yqC$eY}sJTsPetG zTH8MOIZTsl2@O0^1Lr zykApNp6Y1Fw)O#)ecCV7o94FaM9Jw)E}G5VFlO9^14p>Mv&?prC@7UKu_7f_G-zsx zSWd!rO?!L4;iIZ6`gUJwMvaMN5)duhK`GhvsIHh$3MYN>O2>}jArAZsHK zg%HA$v5}*>q9k+RfLmOAX2aUW@B7e(=boN?)6K)@E#MWKLN;9vwUO=%xMlUKY^JTF zt1F++WmBoL!+Yk>zqxDwv6k&y7!ZIAumZ0WL^=@<$&!wYR8^G?9NyS)A)n6|EPoNv z_dV#zsw1TWX0|Qcum(Z@F2LuSaqiNUR4OavHER<8SAn3l9x|X$G7-C)MD=R}5yEvC zk^JWI-@gm|pMLY-{PeAk;CeracPat*;_ZNqL84=)F5LOVA3K))wndNsgCL|#K0j^Z zs1?8X=Jmf`X3Mh5$}4>@i->%+3sy=AEImJ8NE?;XmX;N9qePVRR9AafV(_rBvu5u3 z)_0PnO+ZbJ++jVU4;-%9UE~_9e6Qwsl{)8oI(D30>SeCSUbg)Rsh8$aE zg3HgZ=-#p$nmeShgl+2}EY#$f!D#K;cK_M)R4!m4D@Ts-5V5p)wySQIUoch6F3S+6Z$-F^B@=;yWXTeehr11JqE046{Z5{w2QQi6@PE!(mj zW}^$HA%GHz2t%cn4iGsOjoG%NjVUfFwe9NxQ8I3{`K_(238Jo4 z=9%yP*^>EFjrp}11N_bd|I=^&o1gwqqnCi+y&xjnvTRFUAN>;b1XUaTW_sB#tL23a zf;R)?0YC`)PikEM&9m6bvgF%3Q4!D&{A|wC%4a}n+XU3z)?HCrG-_bUxw^2iJ)cY_ z1zE;$5cr8i(zfi{K2?dDs%*MDllR8mf6w7x{DKk6h7K`WA&DZ_wQ`xWyLXK%uM9G& z)4R718b8sAMVVPhA&96@eg$kGxbDPRyM{;dLyS$3N{aeQLPZB|4C*@5^rPhhv zr&{V;iWBi7kJ)v6-%BJME8?m^MIv!K5lA6K-diwcQv2mgwLyN)!W(5i2)omB#!X7s zH#hIzHF4B9ymZ+jCs|tFcHy#h^wiif#eNjHLkpmo9h3K>|S2}9{PeJVu1`c;o!4DDC<4zZe>g>AJdsM%14^H+uH8%Br%{hmUBN5Q&iz<$cqg9eu`)i}&k$ ze&0SywYkY?)N&9pT2#zzd_OM=W?^7W8%TFA8uKsD>^*+5OImiHe*N>=3<66j-VAcS z{u2a1N@3fUZCOTK+o68hXx<~+>4Bg^J|h&El1*VtkqHTZ<+`{g2qN3EdN-tgXV6Q) z?_MzUC=;$DiwqId*?ivfrJzJSDtc@I(DQ>#HiwAGL{ux2^ZcS@yl}T@?@T$46>+Z3 z>W>SGreDVzotcehA!HaR6sVO_elAK@v7^pqGZmFpf$tMT82Vl=7x-T22h9ieyR&Z` zblaU_EIRD|`#a8E@(v!j;e+oDbjX8-mJJ*_$#Dmjmo~I^Oj>&D@Nr|#E`Jq(!@O?{ z=ur0rtReuT?bt09iGA6&vgVF{V<)uF7+G3c1k74W3_@fE114fck6&^xw{X-A!hi?_ zSp!E7KXc+jcPj5%0+0n#A-GjaOjcC_0~+Nwx5|N@5EM;BT`w%|H*m-5mBYqN7&m#! z(JhtDGAhF$uL0bcd)3vM$g;zXSNGzI?)7iTuB>f4+6%N& zgj5LqE$B+wXaKYvx3sdvD@&B_vutTnd0SVkm^5d8cikm%%hJZi`szredi0pQ zCFPaItdmc5w$xMcHf@Jh@qymw9LYbyS7EkN^BtrkOk#(8QZoE z0~;_#cXp&3o11lz&E@l!Hi)FPQKW>BwiEd^NECY}A=eg4hzNcVX0mx>3?dXI6G9ZO z1?WtrgD`Y$CmwU#JGvdmj<_}e<~-l?{h~zdI#ykUYxeD53%&R)K`#Nni}B0C=e7ME z5oL0@+0({<^zl27oH+ljAHSqRC8f;gy+H$NKKrqUv$_1&|KX>zrjEO5{?sr3)%Sx? z0r1~^?Grop9({S$)?_^T?-IZN`=MT+pWK@b34+MW=YbWlK}6ee5{Y<6Dzkb=iUa|m zB`p;MNGPOaqlIN%IB_m>>ioI(bbRnor^789JR~@G-fM2j=kj1VH6uoDd+nvx*4B~l zegB06`$N~hed!`L8ksFeN-1nxTDFA*fFPxHxh!(5t*$iG{g*6AO&snrD@2j=CyGnYu3KJ}$~l$gf$uvAuH(u`bo-{wODE2_*wWT^ z>Ue*aZd=>sWKv{vC(oZAJ8)oP;>7jOJUM>moM6%vF=U`FjYEAyT~kZ8v$G`RV@|HEh6wSvUOPZ~rKr&OUI* zjW>)R(b1I}Gh*-)58TqxmA)=3O2EPQzX*W)Kt=^RtU?EI7L;}iLxRL!wWmNpI`TS zd1blwy_O4gg;q$T*%$^>@R0%;b2Eec9P4VXEG-%I$US=UNHAJSik@kx_{I9-ReR#Q zPO~IqOZQY=q^=EO(LQ(HS~Pm7%4OZ515&PY!_Bu=&YaWT-96{72V&)AEmxWbkDKHS z9}!!&Y}|eK&414aE^6<};r-JeczEQeK2v=6om*aCF}k?2=DqLpZ8^@0c3!Ic$v6IL z{poqB}s&cBz1Ky9s~gqX|2N`^!&U5gNTK0=WB&1^hjU38c`tS^8Wl86Bo^$+St-w zNQWe%bS8Jp!Wn=4<&PI7B2kLt%j-rTqKvKJ#x+t@y>az7hlh0Bd7nvB;AzuKUqbEB@f44-OgFXVV)8 znp@j%ziIZC{VB(sWzl;cB5Vp0oU-y``*3z~j5sXAj0^jdw??6DM zR4f`5L`vzxU7lG1fDp2%q)ZuYROk-uH+=D;Q_sKb)zu3U4T_`jn9*!lb7&Y)qx>_5y@64Pz({KI)|6*P4%w@D~ zG)79H0tJYy*%)KTBFf9Ow6w%ZOOHMCi@A5*83kRFj2?LAXUWC4Rt^}H`~Hu)zA>8j zrq@j^kEVSI1+q_O|wt;u5X(b?8wIvn7Nd_=wjg zfo5PL95k@@(6KWs*1d7?=$Y2`uA-tuDwVx!+1%}W4$ryuqi1(Nw`9T8fBE5y-}{@- zRacfOrKe07_3=OcTl{r8>-6HCie3Wl#kGN%BaVIS4d|bmJARCp$bDF zp*-I<+*TCp5`N{x@yZw?w2xjW-h9~V$|%P&+7L4tF4}f9*WN7~T1{n9a>@k1p&=|9 zRXT5a_xFEBnM|&!Ay;={z_Q!Y%?&5_?wUJqZf8rY5munXeonMb+WS+D3oFZ_=PnE% zKH~JzgY3qJ-gEcGk-yX!w6&MtFwu?1IaHqKb*8$)P+5lazTbplOGjp= zJ9*%^0gdHVm-p?5ZjT~vB;q0=5oL4vY&JtENT8q3+3}EgWE5GxTmx*Y~#F2#L2jSM8hhp)F?(JQE*Q1w!dvVQBT9=g; zjTqYReV_Tu)935H{nvju^`;NDcXgMQ6fIsb^*cX(<><-tFa78**KFMN?5i6dxo62o zAHORejjVY6jabaR)>J`6R7zEpmw)hs@4L1w{h~0GpyPxV(Bj07DpDIec*V6Cb?u zkG^JUQ#E|Zr20##x;jq8001lrhzR|dOoFnCC5S$TbX z=gG~R=8PVDZtVEl31c^Y>t6?yRV{t+k;BK1wq3kb zYpJTdl1^6%iK9n~&eXWl@^fKuDcf0NIfkrgMU_^em&=qm78t`yF%lC3kU;~+07-)g zNFow(e6Lv2v8Kksqecw4`SvtXQF)cg=j-?F8*305ENK}MI-hrnqqT$kW%5Csf@o1v z1}ZNp=vy z9Q*9)Q$e6BD=R+mzQ+d*8g%_DU@4DW`qugSHrI~6brxr4%aY&!`D;f{opnJ*=+-ng^9qr0N4`1*v1F9G-B z+8_j_(%Czf&iRKw|MYu4{H;y3^hjkpJnoIZE4 z;R~OBeErtFr_a?DCF0i}>x+ijaoqm>uHT3Q06N;+8rxDx(9zN1dwvk6fq~hCDg*}0 zvJg>9DWznFc(SCey*=#Xv5=LuwW%H3vt6m;fdjHZsFlukbmfDf@1jLr9jym8teG-+ zcm`DEn2CK8iMo?VNk{=?yY89RMjAJg@>yUG0)MEmLv;2YI6B0w(t>cSgatA`CM>CTPG>a87Zr;Z;V*mqD>|H0K$CSH2_nNc;> zjW)IH-cvDU`sG^}2i3Lb)^6*waAx|*iJ-YP)!acOLO&Eyml3qmLJA^6DL@hz#95Yw zL@m4D7!Z$MI&!4nL-*C~*f6mA0n2eE=7l9eE8j2}Hf%J7VAF4*ylZ+)#RmHEUM{;s^VX!X;7xA^`~|HJp5`HMgPkW%_D|LJFE&e!=txMt(7 zkH7DpmsV`PZsQ&-tbwlTnXhSyQ+RwBhPLBaj;+E#sZc3JB#@YOPn#wi4M;%{AhKo2 zSR(2BURP^t>9om{mMqxy_y6h#VWg_MX6)EAKl{1uIwgGvR*e|7<&~GtY*;(HqB7eZ zZ|?4%bN|D5;s}Q-lS@aZOsLDI?0k+HD&vWCTemrOI5B-HTe3&;!)S~FW+5mvx)4W8 zh^D2hW9R;;TkM}acd4@*1;rxni4!MmA?l7Ft-p97rom}!rPAWo`uYhY$1S__!Q+=3 zcKz%JHzfM7K9ozx8|xqY>wBrVAxkMz>Flg8OW6&G$oIpKe(swC`c`+Rv#o7iCB=!kcYM6Ht?O^T_0)5(Zd6(~G`7Z~t|jGn ze)`I@uWoE=X-~!rW!`HaBNmdw3Tb-R9-)dzhz5*OArcjplouBRAd)~KEJOlCONt-} zm>HOzNHm@4Ho7d6_o^n2Z#r=*?T3Bl&8a(bxX+FAqy778rA+8|wzbAf%OlZ*AB4hk z;$;>2_I81yYWkGpF0cuu<1icf#-R~IM%7hTrO#f7AfpB_z@lL3&O(p@0D%a|icN^r zmQHWqFQpaKHF@<{*pg-a`*a=OQ;LvkZalkXy9@D1>xkGb50&Uv}xNL!zPU1F=oh-J-fQko(D$qLIyI0FyWY;DT&wn87g+|?zTR8 ztN{Qvh@``wq~U_%9JFR-7|<|)VG}A*ToeMTe16h`DQ-k|=hAtlJCz>~{Bzl^_V&yG zWMMm62idkJBFuKDIF~0uvb;2#%|w%>H%yg(tv@qM51{6Ns#uzT#)ZT)Vcmw?~J;GTc3wY9%6_m?0p)-_2XlJThT z2N&y_Y)i&t(T1irM2N?tg`S*T&QGNpZQFwDYGULb-Syio*dc>syCj9Q9f8OUh8YPX zk(h1Sc`uhp2yF^Ux+JC0%#Pz;+_ZJ@j9CNjyRW#W${sqR^VGRi!xdp!UTgE&RV#-q zx^b6nNjjETDM&c9H9xEXvB>~3dv?yt&yN7 z>P<5`f#vzX(TZbcmcAugb-4wz)QICAn@Yl6_vN&QF7D#iUCz)7RK3fb_R$JYX${ycwVAuYG=T>dG=Z^a~7Z-1S?bXH0?#NG?cw+zF z)cVyoE?T-Pyred7yX&sIpLaH$K7YXyHb&SmgJEPQO9!4;M$U|pV;Up!@bVQy(y3C{ zK>%S910yp4hdGaxDi9$s2qGXdmSq@{iK60?L|0cw-#+~hR+QA+VgFdHYT~%WkyDXN z=ei*T01X6*CI2n(%cXS(LBCf;C^^L7W7;$Z_&BeMV$F>Awp%PPfrG*eJOI)v5?CLe! zi{BOW67ahk3}AXL=xgR+0CXG+0F=>y=r|TLXrpag0)RF>QfDHx9qYPDw6H3@X0MQc z2cu08hB4a##Ly2A$*|F(vZNjQKC{UNX~%Mjz_O$YRp@z+WBU#D_51f)(P-=b-KB$u zruOdD>24rm)-e^H-n*w%+S&U0?!)^zf=yLPk?E2`*wJXm8@oqOpVMJEMoI=yd7qW> za~=vLS?EwkVN2~PAqWsTWFduS&CJLEqLBO=%IX2D*KN3b=wP3IL*nI?PHE}UmgXX> z``oU5Qy+P#s=7>Ckjdu5mM#cG8F#xoyG;jE+$Mo}WiISE(0r+G>rXv(+n2u7J#BJJy1m-Afx$2rh!0r^%R(d_Dx(w<8N-@E zvvG@(b~OI-&t3`wpN-MEpr-G@sP9*`v~x0v#8c$fZo6BbTs+s58xE8nv*Lb38qopMPgk}Q( zwk?4{8}sHx@usr6aA{n3csso5Uf0XPzboh^;CCYm`(&es4_fhyZ(eiF?tdM|m}tcP zl~}ZE1|lk@wN|#{guc&~ZAr@*CGEICnNFopkS!e{r6gj*N`;cBXh5GaANZgM0za3N zw)B0k?}tCow0aG&wrq=pg`pZVY($gtRb`@b@PHtj2cp!u3k$|g*_Fz9sWb~|LQ{x> z$ax+VR`ZAqtc?*!NT7`&L}PT1rEpJpI0{KhsR@tXeRSROL9yc2hK6AiCXSsx>)?jh zt%zIP)~dF=(Oyv+AKc$6DFGp*YfIaSRoS`rRKksVjBl)7eQC|g*){!UO`ElA_YMc} zjNcBgzOdwud$dtQEF(cSl1wsm~#W@p7KH{N#F7Rz~k^{PZPrj=%606{Zr0u%T# z$L(rsk5-h$%S)vt5iB4ASqNo^!1pzWh*;FD=ggQlZs-^TCY#Lx zD-n;jUAR~}eR|*FL%KRUfgqE~WxCVQTyHvBBT^t6h((Kv%9uHu=>Py@lx5jq0D zjvqDTH$95Cj<>UJ01{-|mR3Pi<7EJ3U?K`t$cCYihf}B%0wjt`ENMy0;y|5Vxyp`3 ztA>xzK5^imdTph?bh*#G8GbI0l@+z4N7W_HmJc7og!!&ivM3pJW-hLH-5xkn#-hlE zBrz}&qCg>~<=BM8n#n@epp`~K0AT2;pt1(mEG)su0DzJVLy*l>#iJ$~$#=D*#HzG6 zUX;tGjK6xL$Cxci+9gGzs902$VR6!`tq%KCH|*G5mGk|EOC5fG`{4s~4cs_w_Rgb+ z7|f-7{*{-Wn>}~I@sUF}zxdp=8yCsB^AGRXo>~6l?724{S~BnG;e$3>S}9;A0Axm% z+RL{eK2TLv^UO0(i*uLy+;z7`UyDmHNvlgx2cf z*;6D4k#rauHb7*zwFH6Rf54C-Lq=THG+qBJZBYN(-}D)NZRhlF`^32yZvnjo{O&~% zhMisM-}(h`q1#fF7AN1CCxTUtQ61^!Tv5#{@OSmNU>Whkg)`#pjHixNql9Kk!7v z5d}>%01IRU1SCrU0Ryu(j3j`73LCE*JjTE-x-xJm>VOBgc2_S$x;MV#@R*`}VBbz3t{~ ze%{0zR&C!Dk#-Y_&6_veb^k+KBkrcxURiSggW=5CC->~~USG5H_PfOm(@yN$;|j^z zKtY(q>?D#NiSx?m%gtkziO1pyjD&?8EFmmG(vG--L?MEL6@xZRj0}|bjUOs6@1?SS z=y{OSU<@b<5+V{)L8v@0QeI(>9m}RVsl1dBC5n71WlA%Fm-l>6GXpb%XAA?d(z-Ak zLxgA~YP+rziM;*Otg}1q`@wJjveFnXDULg~)vL(*9Y8MuzZ+5L);MF@gFWbe)WfMJ`8^4i?{SFM3~EYlg1AF#kaqD-LIFKUE7MdkV<#kj;*v- zN)?(}mDXAt0@g;mt{aI&q!dPJtyMak8F}|zZjjsdPv1$FRy0VO_~>H;Dk~1YzGCo= z^Zfyp*_I~TaX9Z$eXG@XKuK|_(OO8s+7xF^Flrr`f*i{dq@}Pd)B&;t)XchS{+y-*2XdF{wZx*KgKB5bY1+Epj=G!= z@~JF3<;mhw6R5hn%YMEGG<=l(y?SM8dY5TuTc8SKe^LfC=MIzP8HGWP+qS{MJQo zQIQG)3q{w(%i;QMvz9K~f8yBLh@B`Y(aMk%CUj5q4n{U-)C!ITfc=Op~x71Y4nLcaxzCE@Rx#;HCzWl~Uz&C2 zU2^uk1DjqK%U_$i;Krh%quZNWG%L-lvU$f6LkA4H{Kob#|PRDc8ohy}S68?98VZ%x&>aUFGaDw7TZPa7id<9oB6?GUZA_2E9TBxQz(9fuee6PrHyO9^ul~|a@x}^K@dhTVB~BzC@M-CZ44WMm`o%DiD)c( z>_$Z3){V z5{3ABn*}iIAhcb_acy8=Z2+k!brumdqd@>L%8*0MKmr-TfI&v1j6m}1T9Cn(f;9^Q zFs9JQ%*bpQ4eL-FW6&-vSVh;l`a~GsH*fCxvWo2+*Dkp6rpV-JhxYDyZPU61V{ceG zXW_;JyFu{fT<+!Po>_X^9Y>OhwNE~|^tL--_WZ*;ceJcoRUI$#RG`r?g31N9prSDm z%du?2NNG_BMo3A7K!6OuY`_>}7(qG~A_B5uCP1YW6S6L>*O}22CTs-a%KD9Eb7q=| z$XvM`wx_(yXRWA{ZfbRPN(RaAza2MA#p zGLn#Q_f{qZSyEb-eCyrng)j!s57HUW7$%}v)O8#?oyls=MTsaNWHNaa6mjfSCabk( zW)t0{T1SY4 z^wv8)n33OX54o<_2mr>g<5&@eUM{e0TdBO!J;!TK`8^LML0}|GZA@ERdqg4tJMmW7o(jGwKfQV!v;)2n#I6~LINRUPX|lkza#{*Vb*K_ zm)RJCnzbsMef{O|1Kg{ArWd?%Ez@(NV$M zUtf3YUH5FBH)G{%FD|<8fnfTK(?qm%jL^$CHWZ*Z=+}#_;Dp@kncX*K2FH zfAg!KNXBDA(CKq^KlsI~O|6}-ZC~qXulqvi#cwBiw-9=9jUdc<-q*kI;eY!2XOi(~ zaZ&uAzwrlO`pn~DsP0-i_ZwgQNKrB-g}CR|1?8p1BZdsPGhaY=5 zlg(f2{GEG@u&zH3*tRS-8o?-SjA10<2fk80oj-zl3d4n+%YqSy@B6-&H(uVC)G?qc zGis11N}yw7N4I!xU2ONUXs9!5);6wOT^xy~>d)10f1@px5~$|$V>K@$1hsg4a>7ml7_CXQSG>Wh=e88~u`Us1a5*a3Cm@bt;kLV{R4S?}QM zFTOCRqHkpO^!+PWFR1A^aLkx!%A4K7Q&Tj$#UImYZks-T^x`EgQOoJ*7-1zM@dOuo znTd>HB0+=#5gE1OY!GlxlPPow6ELvWjD~@)?uBxJKpRe<>TYa?ni}d`!$byv9GhH6 zxQ;Sf3P}JpLCU^F3`~Mt+m%FYLajqYkWv)-yz??31H!3Q3> zEmX>N?ADI1iqhhbJ%0E1e*TKqItpSxIp-v_=F1nQe#{rHC;z2jRydMWRDQpmSF zk!M5*!?3Nb4FIpt3tEMt?ZzAq1&Ov+C!hC`kl8qnV-q4mI+@^dNFtgIM^I&ZMDc#yllZGdfvEoRgaQDdE!Ll?mar}g3|I_bE~#&HyMTEL>PtzQ!S;mK(qu%VoS)tSB`Bng9?LW zvM3gdIkwZ))g6t-j5c`fjn2fI?4h4=j4`AZEWh75S{ zu0^5J=}cB>{YRgC&&t<#baiF2xjZxbLGbA>|Krvj2bV6Ix$4QknLl&l@^x<%C*rzy zMf)yBF9G-B8bFAC7>*b+KpV4m^PWNdYTo#Eg|13{W4q9YH4l#$AA9T+v&R)Hf92|i9{l? zSoHPvuScR$BnpFINdF|0ee!|_*dt5M=ksnPR$N+n#dvDg1j)uQ$AmjTS+UC889r$u z5!0Ei+rB$!?X-M8{bT#7R149kO2|c zFfoBKWQoFdDI%}{5Fn9^HbRhL!-|=hfe}#UyxQsG4z^r^GY!KdaX>GnH|XI1Rmy?xcL?Kh9QVd?DI>-X+P0}Xcm zl~T0C`nT;WV6aoSQ0&^HEuO0B%Ls{Ps z>l@-X-gxQofv$WiT2>ly93t=y5Rx&*umL6zv_P&ucZtK=}dOWz&>H9dRM^ja`X~#FRlU1EC@TgQi76JnMs9rZg(VL>yn5)stv~t6(kI@#a*5va^14YS z{jfNK0iZ!L2!$#%g8-p(`PTjWbAH}(qxqbtln#J}Q92Y1YzU>4(P*?FbaEWmiYE+F zD(}UMO93#OPPwjg_RQ(P4+jn$@CSeJnP@D=#$1O#1sh{o^62Gnox7GiU_=Z<)!CIE z*ta^L&ec|x-F?gap@aH-?2oc4R86hzzj$%&UwrYy?VYK^$Ice=PBQ6yTSxbRXvDGY zOfFyelzZ`RMlS*P;u>HKMOhky(kqy|eZChSGXG~_$;Gy&8EvT-o(MoHhqbvu+E8Ut>QyB`|!c2x7 z2mKr-;)5T4C|Xmcyu8syx=wXbvSH=wDPzWFny=)uS!6(9Bw)iP)LLm z?Jc+6y>9lDbF{zY5{v!fo|L^|v_k2HOhO*M)U%asH zy$>#%H*?|}yN?i&AeuOKs9}EZgSXhWwSCv&NW|sdP{MaNdI`7}*9IXd@A)76>|cH3 ziywLN+g}5K!^h8l;p^Yg#)P4AT>JF-`fq;g$uE5BF~cU8_sU9&Uis-?A>xTM7eD*8 ze<_G$u1(2_Xs(JsuQLxg2!s^L;u6o#8C_^oCK7^;MnoxP7%JC|PMJD&>a^)nT1IOF z9LWSji_7%o`cv!H+qQ%8$fS>bxZ?1Mrj2h{18a*0_c`;upLv(AkZp%L9Qx5mBmHWV z#nHY4`hjNbvEg6@AVABpl~Ra|1i(yE8fAzOQ2;O+gu>piF+vIkMnMJJXvIth3O&|{ zmN5o3U|@)VnW^wzFcJ}JHmJb@MmC0ljRJ#Y2_#}B$H}y`$F}UgYwFBR$)b%L*3Ox? zFgb1Zkpp|y?%qB>Gydk;3$`BK2gY2qvoAmQ%-jVx9vwS$-7`PGY01)E3!H5mc23r{ z(L|gDTT*nLJcsMw=re!ei)+^|o-mE)%vt&Ji}PmBJGpGp{7z!b-_4I(AsZSvfxS*SRtAD7qNhD%V zzr3NMyyU}=-tqe%ey}^8`Qekx*KOYYf%n{&?dTSQ{`~KM{OY9tQwSRlmHy^eKM4R` zsmve!`L|A=uTR9Hy{W+Oa`X~#FRl%R4Ac{+FWvRtFZ8ReB*MCemO$yEc=X2mKGo5c zuB|Hn@zX2UZrt74(RJx^^RE4$EbOaYX=+nSM_tF5Yb(4V6p~u6KMxp*5Gm9lGnQA@ z3TcIYzzD{GAT(^MtEo5r!cc)6v$^(b71zdI;*!wg5Xj(Q!EN{jSc?&l3?N z6qO_)oer)vIkA||=Q!_Kwv>Vd5lI3B!>F}U$VecGv>+h_A_5^uKtUW{6*vPU6>k2- zR2VU^2E&X9Oo)J5X~PVHq!4TXH1{li1%d%IK!h5NK`;OYjnOPMNn40`%=iH-jfkns zS7Kp!+u{XlTxaw0S8u-O0e9B?Jv+Cr*thfMRDQvG?rYWKFiGfkgJSrQDJoZq!`|MbPP!)3R;{M_^R&cE3#TeRZY7jIj#Z2$OC z8=imm*7rQV(ZK$vpI`c(hgJ|Ccx~N8SyI?~Kwv}w212w*h)}swkmiCG$+9e?In3oD zX4{sm?K`ldx{onN5-Fn!Nsd};%W|YZC*lgEwwA_RHq-OoUi%q>00w*VfUo^x0Lv2J z{MTRn=&2Q@CCSdNbZdK;>)LHNIHg#88Eh#KZ0&v}x7AZv- z>Qp8R2mokX(y?u0SX_%vm5@l#+jQtffLuNo21YuOL~$ts=|~8Ge%_D8W5b6J?bolC z0DTn(VR+%(`3vVS)K-+nB9RNrR}WmWc+97NkBtr#UtYU8bM%xIi+ER>>-HTPaL=9j z84W^MS>NY)S^b)|{T>^n*|0Wjw6LTkG7KP)u@Hhp%nYJuOqvZ5A|N3_A!$w-0yNBw zEG$8SSTh<%Nk9OK5y2=%1Sm`$5Ky4;G!lVLM8L$-U|>S0ro1hi>aM>qc=(8j8^OGX z%8<13%^e+UH!hqz?fG%7E1!Srj)xx0PnvSjglkS6yv2g~)8}m5wLON|VPM0HFWq$C zy;~Q|+rDn~ogetn3zC_VeD3ah z@85OP!WBRN>5_*YSw6IF>yLkO`+FaMb!m8b#hQ_#OdtUxGZTom-Mg!oEUunBQAp9+ z)O2d+HXAt8(h)C8T2UvDI`4VK$x^LVERkSi{4gXW1FUtJ%j8NcDm1h2`^>^|oWdFM zb~H^yC!mZfw=+T#qHo_m&HD}*%N2fTv_|I8nEpeD4j(lt9*q_Zin5JY&Ye7& zO=n{HTtb#d5(%rL`_j`d*p=mmfdXaf8&MgJM5*AyPoJs2d5Kd~6J&imQQW?9bNF*8UVmT!x0)~fB^}$ViIJC1riY%Z3?YLSTJ#95JE6$qYN69 z22dbb#F`BlLPTZ)5;n5WCZpM9wt<<$AS@~?mNf}K)y83H$l*{EG64!9^6lMb$G%%; z&ssyY{X z^1XEEdyegbQWS=ub!k!3QaKx-rnaJL%D7u^zfDSc9rfp5xgao`%Xf8W-rRA&#`6pi z(1#$yd4`@C4#QV31YqD_xey?@?qn}P)R{^v)oVrhJAz&UemA1vxin&M|0lowRU!h0 zw-fev75`b>!ZoEY{JVo9Dy>V3;@6!t$83n`i(mfQ$Derg!ja=;!j@rZmlXG(KE2O~ zk<4r?5oWTN_wH#weJbWg5=w_TuVff`O)V5?(V5YWod66%6s)P3n1m25sg@rG`DXic))D)F0h#iTRlg@Wz z5ZXq9ZRNGELyaLK18OEl2pMhE%&ghAEtbMJ#?zs;x$E%Z^2(|KDKv6Uf=fyG{d=Uy5Z8P z=?i9ysEnE@0vlulnivsSI!>;$Tdm!?VBYkd_mw>N;!C$rm?jr2c=3g2?p(C=+@g7J zJoEG&_dmF~x@ynL6?ffs$GW2AsjWN4>sZ20D5VTw;Q88182|@akn0JI^y`}}D)zHk z@)b5TbwJqZXVbZSSy@SSX(fdw5-I>p)>J}1Ra;s9$v^!{B3bDk)Cfa^sBO z^jQ8kUM>J6i;4&|XY*0Zsu(-IX6}qgJg(V*5UG7fTXyWtcX!)_A!flS3rHV4)426a z%r};88*Pw*096o@MWC5A0D=&fg#?077L1?_YYm1WG-%j%Y!m{t0RUrEVe_}Jo6TrY ziU4$|LjsCKVrU2jvSCz4YaIw?KYhc89)4ln%7*<1X3LU6OXj_L`cTW+bF58hbR-^; zOiF2iWQE?(%f{^%XDQdf&tDm%p1Ocw} zX}dd>C@u;@>fU=~!IHVw1NXo9^Pk^ea{KrPA6)*-v&(M0xn<6@l|TQ*(ud!(VOsw1 zisg%!E?qyDFKyg2UdE^_&Wbr?1|VAkqDE7a>C9fr1XkXb0xZGC3~<~bG71$^I*!a> zkjrP=+Mpy+-KT$fG*KQG(RjSDV0}BA6b0g*I&tK0`b53fVfPa7J086R{O-kdR@;6P zKzv(wSZ4NpFO%v_CKAIJE-4x_0+_YHu%)|W&F0L}lM-YpSOD69mVhymiCoIHTwyyL zYSada$VLnS3Uy8bL@Y!<5dafN6j$X`BnX+|&0HPU21zjYSTQn!wC#L4Q$1zu@y2>M zf2EHdEx2hY!`fG|%5r;r|2I~z7}D0F%ZnT1bg9az?eCVyhI5%6gkdb|Hq!f)`nCl^7ZlmZ1K=G(j4 zH*H%qf7Z%St$N|vCHLOnJ$B-$BL`L=-m}D_+0*B)u78>sfJkYLh*~fsbj6*MerGlT zkjhnEZX4Tgke{Z;^;>2xo~s^x&*~Rmcwo`(^5KWqJ^#Y(x8J>G39WkS=L_$?d-d?{ zBP-X;oI7*Xn1Lsbo*zfmG8tE(5TRgmEiAjDtjhNDn%MvwjU**2lq?)+tL{*Pkszzb zOwctIW5!RaDk=+dt$scqjU|2^^_w1VvUdciAR6n%J0HCS{O$!Jyc_aFjWI$9BI-MI zbmgL6^O9Xl?Ms_s`h zd(N=~ht6HPGP>W8Tw7=B+ATAu-=J^4`Pr4P-n!r>T()f8@|Wf>zWL}ai+69^yk!33 z^@dMv-!W~}sNJLC$f<_W2u?h%*%T5T7?9XFwxt2VBF$`=8IXvK0U#lfIAZr*Feh|` zY3-;UGrI9o3VWtyzXmpXn?k={^x`_ud(QRZcNT@sJRw9|TiYwkSM?h;Areby`{PF4p0>#v(grJjH=39GRrxAnZPHvN$B=tNQjP zaHN|^G^e$&9ow-PF{PysXvZRFF4yfpxbJdXvri}p@?jW_#iP-v<3?@UvQZm0k!0MC z#_GxyPNGQh?CEd3_~N30BmMCsyN{llRnjLlVaQ&;Luc}qZ41{X%VI#o zg_K3GNII5l3)?1X5m^FVOMqh+&zMv>VR$m@SHu$~wbeTCdRemy;)!*o=~67^*PWnJ+n> zdFAO>b7V`4gtQ%3zO?+chAZugT^WXkO>I0LztYsds=D_5PaOXK4~Hm&wxzWaww3GX z#tqw-EuQ~!CcWa>r*3-S;netvrqCeeSO&qcAt3;*%F0dZID2l zLIxokt(6K9g<*|G3qXs=axFGW5)vEKY#~{ImOueOh>6u$f) zk!naa96sgbjg<=Rv>$OJ$#_xHio_c8Ge<43BjvkZ-@SL!?rp2KKL6ype2WKd8IuoK z>(ZiRkaU_FE)5+yDsY{gp9NzG01Xphrn#kU-G&=)n2{Sf_|W!^lShscv8Xmihl&wE z5Fr6l-LBoEM~`dpa@`$m&d?zz59}{B0)VyF%s@iq+d3N8Zkkiof7IP~J^RY@gWA*M z9(r)wz8&)``{UH{d$w+zF<@llfQt5`M`xAQdXt77>ZsQpY0Hwru`DTtX2B!@1t2k4 zQdmNO0cXVEL5t@Gml`jJ$70-|308h{9It=L#t z_-d`UZr#3h+x8#`5it^pOuk{l5B}j#yDr!DcN4Y;zyt^c2#91rYD9rX83BMkuwW3t zY@iT|5HLCf1y{+d9V9)zON?3@LNLl$w&-eXX=`k<$B!ofW({v9s3V4fQVI?0#ONW1 z{Lb?yj>WZ@Rz1KTJz>imTWptdc~1}#Asav`1lgOv`Ii~iBt-In|L!pGa{$V!XtC1ExG@Jec$^|QCUKzT}dRRux*PBaHz^g4L+{ZCx7~Vir7wR zGF}!_0*@uh?`RxWRAVeuV1yvQqw~u0*C)=LY#w{~*%x10I%dk~n{Hmca{0W;Gfpj- zdv4FZC6lM_D{no$d)LDG^Y)dOZQHP8GFK+5D+H12SRorg)Y@Rg7E*el=ZqgUVClll zk<%R;cSfX?mZLpC@cb|cdRM@`ct_(MOTdUA#BX{Kz4$Fcp$^PV?CB2)oc*1^{| z7Dda4Po5~8h~?OplqdG=?QCuwJ$rUCUee!^SXEtV1y)3ipD{gIQE5Q9uGQV#c5KVm z5z}UlpEA8tai1xZQv(t^*Mt?76Do!b4wb2_u2M?x*}SE7%|;`1?clzLElG$Hs8D1t z*d^=GuNgl&7&M??d*!TIGh>-BEGoMFlONjn;>+3HCqacQ*f0PJL=1CYYWKmpOBc%f z?|tRxPu}T>0XHpKxBRtR=PuqoZp^{0n{T}JwoSHmY1_`lx8Az>*2v*Cn`d=6R#75E z6pSRLuo$Hb2xHSH4Y+Bcf4QN3{dSv4SVWqMkWesRLws*9dhuI`cOU^9210%AV*cAd zLdSj^UGu$oCjb%rKn&~``Q!)xvxgK`nM4!>!N!eScI@0`j6ovTb#Giaf7-Mu0MOOh zZo82@^Hs}WCW8oQ3=1X%MuQRv3;;3#fHBNHTfabH6r%tpU}n_J03->p$79k`Xd;ol z(rapH9&aU|f8`a^(%3O-Qd3<+Qdn$^3PWSGQHrG0tikA8A9`%$!&9x%KtUCB;Q#)L$MtwCsVq#>`z@ce%czsw!SweD?5>@i&aS>%$+taIxMJ zV%)gVPkrzE9T(2s`|;mvZffq+rv?P7%))k+Yf%?KC<0of9z^tB4ZKpUf# zf|$#MN-4*}4}R*CHG_t}v3uY6k;BF_9@@IKph`1uZfKFv+T_#e=JlIrEm^>izh~_; z&pl9j8{T#2idSB_<>uRW&zQP?`SN+oZd=p0bN?%^-1MG@*Ua;FuiG*i22n|p5W%o? zERS`3`VD=T%vViq&8s$vK!NQTttFCC3W=m;b1wt;;+>3lAOW)h5avo_{$GB8@hDuQ zvwtt%VIbm6)|xTd{p1J#!)jxp=8TAE&YoMndTmovvy_%GX3Ut;H{Z0lw6w$+gNTTP z3<7&N0vQD%7D~R_un}k&3x#RJYybqH0HX~d0V1UOM zZQ(3&_dPGa{L12)^W0^3?Ap3@+N?PzmMqx0b>o5sH||bEw!QfL%$si7xs>*A-8m}o zW7Sn`k#BTl{K&rZXZdF?U3qOCrm`e0(kvwaFp)G`D;4~v&(2=-;%(s_NWg`jKWR~E z3C5ytD^L@$N5_HipAb32)mt_cmfDE$|E;+T7DtGnGys4Uh48$dks1R?|Bvfj;kgi? z-~p*MNcqcS8iPWxF+c>yfH5d#PZ_Xh7*`JnSI7LzSMfi!ABKY1F#OlW2IgPBIlsn{ z5TR{jQS#p(@lCN+E|-6O{f51J_ah=ACgQQhOKzMvVLSj_WnTnltrP+v10y3NNdi&$ z^hgjQGipSEvcTs6QW6szWk?_)5d&yIflPpgz<@!pqzq&30msjDw$E~_jzvQ5&h{%V z+pAKEOm37_LY68RbO;iNXuufeXe1I(B$^uQisCY!tgzguYm2I?@;P%^goA*PlL9vn+^s64oK?XpK6-B?z( z`?*)9wM)0Q!k#du|I$U7L&uv|ye>imQW~W|0<#ddi$dx!G+JLhE3VU~v=_bj&ElO% zzyJWi3|g^PZ)*i?3|baz4a_|nA0j{iZGai103Zkz6dd#|3z)gUm&ROWBL+tBL(Y4c zhyx;bbb{-GW%bC!EDMzW<;?*Rf)HE>m?4t`B8){$S2wyYFtgI+I;OiDV=>6)z>*ko zO;-wC2ZSgL5=n5uik%sxKq3wmMqE}3f)Ir0VZj20BLHB}XbW5BZ;qVkmyd+PZYTA8 zTTna|nBEvbG~H>mEO6{!@~hTYA9nQ!Qi9e!bCFO3{mO59BvcFx*DRf52CZ4^o;gi{ z=6l+32>^~AKe1-b>+KyKQV3(rq)8KRT5@9|k$97ye;Fj)GkszJ1j3#yKtY6r8c7hK z5rC|i1rTEBYi5wPU;r?nH6tMc=ztLn2oN>}MeYGBZ0qcpW)&ZggnoBdKatq&btE&{ z@f;Hbxxi;cV;F=m$bkx(A@8e9F7Wc+g_C=Rjh@$+E3+B&;B&Y!)}UUd*+#&=ik^dclN5MpStCt_iUZyZ+qtF ziywdgn!EI|Et_YInca8U60g3YdHFi23|Ueur2z~Ww1pI4jLvqZ5#BU}>Sf~B_w06zCjY>MXw3pQ=feEjob#E|4OKR}}H zyPt^u`4_?sTfHAYg|5q~G&nXUVw}x^F%X6jiJ3Ih6s&#z+L?(V{ia zWj_5yd*K{0bWrMvPoNv&j!v*`Ovb_U*$)cbiHSH|zqz(X#8fK1cHQfT z4jm~ladAoU(wi2K8Z{EG)}?>-Ag0j8O9YaD5d;`!(c?~K7z&-Z$P8Qvr$Drk(12vo zGjfE&Y8VUsseqo4yCKuj(KUe*7b56)cP$tgT{=js;=Ge`ufwSPO7%{5fjF)TCp;p>b!XQ%Iei?YfH-*pu3|r zB1QGs@k&Zal(4j8wSASe^N4OF=9ZVIOmOb_5nz+g=MEk`($?A}y|AdOH9m8GeB@Bp z%8Eo7!Gziols5bV-7x2RmuX*~p`);{I-FwffmtMO4j=Og*p11Pp zUo3vlqpLdGxBU1=)0f?P`iVy?CQS$%n_FI6FM<#)o3#O81W-W$MDcjSNhEa`vasGU z?vcId#eal%Gy%U25JKK_9=r=5qIC z0iDMlz=&(#c}xCZf5RO3Ts1<+Mrq_-VEO zFo&TWHpH4UU7b7=Zrw$FYwShybzOs;G%nn|&s=GW{>f)K2*Qoqsl1f676bbEFR#Sn zr1Qvqrmi7aw+Z7h(XS7>4wjZsO*Ln8)VGiO*nRr+`C!9VF=D6~IuJ;J(&2_J;5gUB z!GsX{e#4b306nW{LTqem+OT0$cXx^e0l>`Z(-tjS5Q#+IT=@Qf2a!TpmaX9GLR^rr zk+4v0W-v?^L1++>B#{CVvdQFfCO{9N(2j)2#t4ttFiVoIeMv&DD?d>ty5qKK@2aV- zKGN4ZedU6P#^a;M6ql3;KxsQiRp|Lz^%;=r_6I)r@WIQMTI)_t1?&8grcAm^+L3`Z zWtr^7x+}#2n-j;6g(|#!_DE~0xi}x+viilwrpA2UJ9qL#uB$CtTHRQG`OyB|UEN(Z zHT`NU%1&K86FXde_Vn>=HVuq^ZMA2ci?6?t`sS{%cYzl(1V<)1Mr=G|KP+QyO1-X(Eml-ly887Nk zdiVaFrI8@h-FfM9T`rTUEHBe0otif4jlSh&MbWCVa>urq4G{(^uT5Q~g(>Y5LB1o^ zvUba~>67&B%bs7kV)3-uH{5yWhBd3^%wBMM*-bmwzrJMQ!Z+fH3tjC~Zoap%vu)S+ ze$c-;ovf$~e4m71W@8lER@KCj``52288={1WVRcRajyiV7w=?x-8$8qw!2iM}<_Klpg+!4G=>_KRTSmf+=8;qLw1 zoe~54#lHHv%vFlZJ3$G-#sHtawB5*TAmo`_P4!2`U1{(<|MkA!PC zWq$v&kxzWsG&HG0$KvhvJaVu9%*)n-*~y=M z8zYg}AADS2yi6s zA2<)+$Jq>br;2|59jdBuAH16e^$*u?jr`sRgBO;IVS_Oi4Y%$rdg-Sih5PWm9E9lD z$)9~k4C=4z8ub3dVB2q{LmlEhZ@MO_U{<9Ps^I60OET z!o`xZiYFeu`~0~x)2EJ@I%WF#%k4$UqC0P0OuAbqhkfWnA8u)Cv84Uz2R>R_UVifQ z*~i}h1RLmTYhQfJ9aE=I-}uJ92Os<3f5ED+fZj{QkqgmX3%CC zZOE$S>$iOQV@v1Gzqz@wJyw)_=;8YZRPws>!IpE)R9xniROZReqSKuAhKw42;Zj4q zp-m_xLctJbvi{{OW2a5?hxFU9{ME5`G&X(emRDa|IBZO|fA!JjD<)5#UjFc%t-JQP zXY0F4lE)A4uToMv4g;`Z1~9XnE6yFanC6!J4}W6cbDR6v z{oc3#&Hcy|=-Amm`m^M7Kje;1)6`1+YVF1IfdPmp5@A2UXeoywCSv;HWifalES$qy z_iVTVqb0ekTOB;=JaC8TQ>(V^avr(|fWh-kCKvh4NA%%iT?_8CZeD2W8|8$ty0NKq z{;iP@JZ{gQ)iG+OY40pOx6gggeb%D6!KUr0J0G=gS)}V5lRy7XuzExHgAYeP^_kc= z{v>te1cYJk8-K4394Wi7-*k4VtvetZ$$#rd(Jy^Ac;VIV_di;)X1%`L&^c$RbJy)f zFa0!lX(i-6AOaycn{^(#i~3Xt|MWeos*HW{_cNdW8Y`9l;P0#Br>MFTw7#Z~3jvKW z`Md`O2~|(tE;x=efBxKs3+5H57ZLvpXJ8@%WTnDrabs;dQZ zzHq2Dw`J3sVIzhOA2Gb8;o{Dn+fyBl$9JxB+=^+l z=Y-1Jxp759!<8)?*DstqW$wZo5$V*?0}b_;5A569zs#LDYjzk0#}Dt_zjrUF_6sL> z)bt-127VN}I<6ckj+eGvX+C)3*z)t|EtFU=x|RYA3&f$-71R0*h{j6JpE}aFB2isi zQR2tS?3VLgEtV0j9IQHhY~ATo@pw^jA~B|-xLP+6t!zyHPOpI>_OZ5=bG>|FWc!a;q{pFeB1?ppN32f~|{oL;eEjO#$e zkx~XK(Aiww)}6!pj4Y`gh=SOdUL%fPyrc1MBwz$&qn%rqU_4g5?m4Qd5&ine8^#CA z*8l)$14@GgATrIZoX@*YJmf$50uaHFfrX`W`a{2;|F@q|Njax8_QE+Jgf(S?|Lm*5 znhnmf#m-%~X21A#d)XqYsV>>JS_~V4#Ys6~T=dI-Xil7V9=;bX+kM|7?)%>pyu7me z1CN%SIve@q2TV&VCgYszM$6`$AN%t!ct89_>W@BE+0^2G?0wnKeHDZN22eWO{6_3A zzNF8cSBH-~k3R^^Y#4>0l44zV1&Gw11E!-LBQCdfAWAW8ux@NNZ5^D+nT9LWuMfuK z`uHi3GT62Y4O3;g|H5kkq)(p*DX65FJ&)TvFc#%dp>0DX0)PdzwrOc4QAyR6>fliT zV=mRR=V4hXhao^gGi9ixm{S=!c9c4F)PHdW#-ot;APlLj^jbw&h@g#57A2S7yaWKQ zrrm>9dg#z0{rdHVUlC;e7bu9ZEXxkMGfqS6phPJdKt$H8f!(U&woE$J-YJ+ememN@ z#|YQ5x8>WEQj&-b3rR+EVXGJgfnkqKP0kq}EjdiNgzr@v=r9aIvLO-@Yz7Ds5Rm*_ z-UkLm&zM_DwSJoW_vJluN*2W~NM|Nsv$JJVBL@)*sISi1Ql|CFcji~H9c))-k ztUUALrsvZEXsw@HZj_OYDxxHUuS3AR&a`%AKXcEmhj;99{p=`98l4Xf6A-W_!hCCc z%j?^xEtsM2zjwv+FWkClnZEn(-J3Vx`q59k*x3#(R|bq4_0sF>k}F?a@W4aQpFG~x z&|Xn8v;)+|TsIQOE}t0`hG8x*NMbJm_u?IncOL;Gay~Cc4tMUpE&Hc`tqvap=EQgY zHuB-e{Fh&YhzrpO00T3|q5vH3KOFhk`@-G(tr=4=76T%%Ea$NY#OUD=i(we%{^|Sv zigk$}{*yI#rmk6N3kMKlqus(iHjhhbiJxMOmO}a3l$?(K4PWK2EyJa{z21WO1@cXFQY61F}+@h*MFhK~uSJAhh0FaW(iV~&Cm>>H8x+ADAi}@N)T)2Ft>&&>JW5*92 zub5efVW2~;^IBO_D$|oOTsX8VB?D=rNT39mFk)0R;&!IG17q^Jv>z%)3d0b=q;olA zproWY;zY~iiK0X_mCHwMI~s8h9zWUK*}(unLMufmkc444c>Zio7-4{o1_EOg8wO(- z3G7JVd*`}42ag(ZK4z;(G$A0!Wmwu$o58V267Xz&y{Ak`G~V9Up2?&f+sSse3L<4# zO3=*O7(xL8a~&Q2@^v$p%*Xrgf9d5HKlIr@I4rb`m`QVH>P)7pf8Y3kfkztZ=M^U^ zhW4kfv-YSl$M`&m004L$GIeRp`L>?r?FO*^jB*XaMf0DI>| zZyoPG0w!cXkP}9Sd-i!hdXh6)&Svx9`k}paF;!IRW2d;K4TWGq>fjN5sZJj`t_~bg zhmTQZIhGa!Vz_OW=-*ci><38fdGwQ~GoSdJKK?=b&ZU-Z2g}#w|K?lHWA_KE*85Mr z1X4gY=l$>(R8yJx+*jH2>;<#&FaE^)*B@d@QS49uIR58f@P6=f|Jj$pwrM~=YsTcv zAOER7b}IY%KaG9q529cB!`$C}%YXJ|OvJf6W$GH#!K0?JDcG_j+^|(Qx2l6jAPm*+ z1DwiuKl%mr?;HEeKjHQcwf`_C;vfYiu`{3eygG2$T&}}-H1^kD zGtDjP)LH+<*FaGG@BUn$znJ~xpJ5`Y_8&5y2U@EGM-sBL zQj-79j{!0E^)H#mrqsh9;_hyB;0Skh>oey#41?F!=D+!`vA_R1WU{%x|F&uG40rG2 zLQdbc0|B+^3Ag`$e*Rz9oc}*Cm_#z>TS6dO(gA~L0KuRT0x@1uoXnZ(LH!fu$;neD zZQi=)Kw8D)vHtPCQzni$fA&IGXJ_g{K!9KXkb+S4)l?Bn>^G^BY&cQJJPZr{8_w%L^Epd`pOH(r6L-Q3A(PY>%mZ2q)qCoW$OZ7UwN+dI-# z6=hlBZrr*Bq7hIU2mt_$0g`|cfPurfMZ@B5&MQ58q2c`H3%S4#ln#v!HHTV9Bx%O1 zVau|M9j7|xR+c2&vwl2LGIz?9#Y^UV<_F*NlomvVy1HO63>=YQjD|upH&>Sz4J<3R zg{_g&e%R4`C6;eFUe|cBwONpG1tuH>0KpiK#*1RbQ>sfwjhWyF`bW>a*qOT)DEzlGfI`PN!!Q5+FCO{-{ty3WCRhl- z|Dp8cE&cI3&&p975ESm%o4WT2h+VG}7BhGrL?S)SvUv{}&~-QnfEjI@0U!u~2#Gid zz_!5{FdA$Je4n+xYJve2i!mEcWk3jIV68A72SV_Dj70&E0U(zHAu!?sAZrDlhtVke z0q62)NmdHuabV_b4haDO6AAWw@O-dD&u2mw-pAAn;+5P%RM1gEoT z304Y(K-&SM!L|VrGFb-3f(u0=fhsha99R~FAzBu=4yV#++Z=`%iGU@*^TDwJ5c~ja z3zX_#2AXsRrC_ZA5MvSW1905yxxW!XHY=t~ zDt`6n*LS`!Ga}~mxxe__$1kti-oHV+EKw3lWI(Va1m2QA`@^jrOaCdtAQ* z31@#wb)XG_0*i#LKeh0N)aA1cjm?Q@9Dqqk*Rd?(s4Z-ZQrRHX^u!Y%Ol4InlNmE= zNK12LK9^no#{M10Pr8m>$X~LB^n*a707O?>UXY(Ouy6l_d-C+@Kn2DaZA_?GTEb}7 z+Ss-<+Ax689C7W4E16B8I0)2$KD8sqPkVC1rcf!@v5|@~wQQ^4>j6kaNCFX~6~)v4_DkRT!k^5aG2M&W<sMyFOhkC~r-DSGr-10q zhU{OV@T&$mSAU2A{2M3u-!{AxSHKJapcHqdKoyKQu8D*3mrfKx>X%~$7= z{W(-X$fu=aNh%@p7|gVhpJ%9#bLH*z`#HP z7#MmE&IMUC9!_W`1w;rTv$c|Za`C{Qft zJrGwtOn^C+0Yvcqo&mqr&kGA9=S-F|nYVe;5K(t3<#~Z5%OatHSr8hK2rNKr%|?Y< zcXoB}*>kY2z9F9n05U<%zKld$+nqIQ*VkRR90XcuW;TY+0I&zS#Rni8$$B^FxFljk z4hsgA2uKWoBw4Ab1$(z`8b4(CU3c7XTQ&n$R#md$Y&IKD#HElr45V$fcXz2kJC=3f z!o}`%w`1E2Cyl*h&U7hdCYx~`$98NXNNET{<=R$DYfCg5i^k$($KPPvjyCMrw(Hs* zo$ZbrwJl493Xt7ML>orNOeQUav@FYYEHCc?;@^Jy<1HgEH9fCQXmRIU}j@X zCX$Eo0_%sw??_+57GQIf`Tb>h4LKZ!hQ5 zDV=ge5(*$dLgZ*N2AnW9HaO!PaQ1t~*?!Jog2^Ulp@?!$r_-HI7j!vpp48p-`(t)b z0^{F9f%nWq^@nsfH#^(YJKNP&_0{*~6_}Z%bcHVv*u8bltIJ`H(Tl3NuR83_u#Z~}lb=6&rw z`d1GQ!5H)Ao>EFZ(jEegQg4MI-a!BWV2ly)4iZL*7tB)12+2Z1vReU9Hj~gd?GFG( zMnZuw$~;0JkC_et2@tAy!$U?Hr34TN5SAk~$_@{_;pJ|GQbwt_LUO^+IBoWrnrd&a ze@rv~9(2GSmwrK1z4Sb)8-S-o3I7f4g0@Y^k2&GX5Cn-RRmKPsMhFAS6v7n6 zbqJGGa*QADAMPHi=iGALkZzE8ysfJM{pa`I28Zm|jv`jDm+k zfxe+wNgxsm1T(e+Qgn3oXhDBbalYVgAQE+4Y4{DtG7Iubii-<+`}!(tC-e^uD@H)q zLW~iLplBKe**~1n^8BjLUtU@`G#GPSQCe79n4f25GO>8V7xI-=ln)ON+qN6ZE1{ak zEw`X7S~qs|V8@}%j(x8+Z3I{3`}~c`R3Il;gaDLLKq93CAVNy!v8yNy2!IrnsK7Z& zi9*KXgEn!)b7rj@Y)YBVw9^)Bc<}{aRbj!>CCO-@Vc(jJnV|x>ZKD)f$8a(pR>w?R z$syJ7%VWU_ddsoQ<>5S61aCS*2+5u1HK~(h*o40I?I`6|S_=2X@A{w3;XIa3A_bA_ zQ#dln?52dgC8bLVl@if&w+O=X+?06nf*fhn#;iN{9)}TTT`7?ekcgBJN<7a>q?8h+ z$6@E?V{#7>0YFM9%Ip;o@U1g>Wb;H2kpQ8D3KZE$3JJ~e_yj_}SOLGNz_lO398RYmYELvHOt8W5<^kB>oPB0 z=><}VQVNwaU?YpIL@AL_q}d#$YuiXb)il#I)7&f=Rh4XNPo*;wz;=WdR+WH~v20)z zQ3@d>7bh`VrIb;o5~fo6P8~4G5yJX(1po*TE@Z}bRmKdRc}E;BEQb>ylt9Q(0U%?! zh(M1^N|6vsnffjzaw#DSV~nwPa(zNTaB16)&oBr9)3Ol2Zy1PR+P2CRS8%_f=bSE> zwk5dqJ}*sGJ<;xf&xe47g6+7r<#Vc&oQHLI`(V6oN8M3OB#5u1n*)c5f$y3du>s zR;KBS-;V@BL$PblzwnhqjT>HgTJr}qLydKGnwgB$6=7nyvKU5{7YGv4H48YC(nDfX zg;IqA0f7Q203o0d6vTBnB4+?9LqlbT;U^%*j~OKiC6u`?pEzzzCY|m)+%szQC;&M; zG*nw#naS8i1<|77Vn2gWz!whr2qBJTHyu1QYvzpJp59b4RaIV5RaH40PcVP5tEa!T zFu%8du(PW-6bSZo_vVFzQaGmRNUFr+X-dh^aLmy4fq`MuvI3z{Ygdn<=}ggVmseI* z_w)}rjuXv`6qi)=_6}IK%_UV;Z77~{C6z)@K--0(!FVrs6o0U#wasT3)Rb5hDny(UN>a+W41bIvgi$qWu z8H{CiHua$dA!TVnaMpz4uKv`X=6*mBD92Pp$5ln8loDaZmR2EQ-sDnEWn3Iz4;3Py z^g=_4Ku^vZh$s&+w~iIfG^hBoQ-?Oj~J6 znQBB3kxOKn?@)U;dSzSHA4{16)0EJG;rK}QO=N5UF#N&Z!2|;ghay!~<+j5u+cr&` zGU`e$B;l56b8fjV3N8f)MiB``hKR(AQnI>BAcbIxqA`UKqA&#=i&4ci`LoZjs;VB9 zXZQvOTP0$1`yQw&D_gSQ^hck6 zQDMyCTwx3V8Kq~RKJUPxLtFRm3;O*7!^49^F#uqUNg*|+{QMhV&6wt@O`ET|=z{UJ zqdxSduYUbgpV)h#apR6%w(U$AHx3c^A8f8JE4%wMpSu64XAicvRg@O@^bfk6j~_Lv zw|_96OxBGat!wImLoKf0x~>W#BEjH-*|RiFLy3eCA>_i@Go_SkHg661eNsxtbr;W_ zGn`Cr-@9+lv}wQj&NpxT{Fe^2wE7H9{*SPnzGofqDLZAyVuX;MuEVx%QK}P4Q~g6} zO==83bmwOZii(iip@47GhP99V_2KZ4p;N{fsjjUFL;`ga#{0r~(Qt6n%H=QbKcxBn z4ls!#<(iT(5U4OJk)y);n+~OEwZnrlmL`e<<%I~qg`|`Spxs?vXP+^*Kk0HVDIs2# zi%>!s6~aTsQO9vcDu{@LF$Dkw7hWMs0+omaL2^zR0RUiGAPaa!)+}-r387L*ukIzK zB!qc@KSC%0Pje6nKn_mm#iv9{Nhr&q?0_;xfk+9AQ9wcfq*qFpD5X?YmAg(ycW*cn z3Is!{s#3}<+p#5@j^hf!1y`6t2?wSyMu{ZZ^t@MdBZL8P?h*tkIH(FC#6!6OVTxpf zLkVUKj-4~7&(~%uDF7r?OFAm?MI@y_DbqCykVquc8Izt!`0F+OQ)XEfrN>yD&FOkJXJX zmkJ}ED(SHrrL?cV-%|Tf@{LO>}{)0DxXAy0Mlzcq=dYudrKwx0fh31i1Nwte7G zi^AByr z5z%qoUHcFG<*_I8^CB738j8n(kjI{X>DLcDG^)J(rThMP#j>T}{^f7{J_F#`2>XuD zPC4LH_P#Jeh~Tc20wpSn7C+eH>x40*iZYg4WIF2eNj14vNA|CbjDRdXOsH3dLXs_Sjj)6f z1Ox(nx;|4q(n-I>o{5EC`6yn=OrL1A+~FykcdQ46~-9noVy%6 zdXEVdFz1{BF%!M9L_AV{dJRvustT3BEz9uhyLRt>{)JaYL^zJu zP$HX=-&3HgT;ef!^BgT|%5?5~elKHmS5yD_r;nl(xRgR504$tV{`%Iofmr75k1brj zrR^`z?fKyO6T<;5nYQV%hp-Z*u4*s6{A!=IULoSRJoww)2coVh&3%2kroY3PWQ@iW z*51aZnG+{aN;mA-8SwcR%$gDK`F8DZ5K@MM0aaCJO`fFdS~8hRWip@r@Xeq7@XY{l z?H!*-z)&ySOsnng{{o(gN|Cz^r^K;vAe)r(RzyJHApShs3cKvwCG`iJpM2@nijorBcCxT) zAdFGQD5I27rYJ09npa)0?5Ycv0YGfdR#jCcO26MfdhB=rsVZtyV?%Fuk74+1+ZsP{VnJb{6w={*)A|jzWdeZ9-Dxvt z6&Du+rTh2p?(6NX9yO-8q}XTp9M{Qqp=9?oqPVC~({FKfq=$n#2@e*Mr@!@ zBBB%o6t5qi5F!OK3e3~DMgSnv%g9R!LI7oyB2!s7q!N)i+}>PRQJLuPAIu1o1nBU9 z7BVPNPzXTCq|N!$r;Q&s{zO4Zh(KA(+P}uT>J?4JV{EJ-1cbmtT`@#BYgW}YOD1fp z?UYGB737ajXk3I6quI>10K~03f8) zRrT2wtG3<$fTjlCk^4bll&#yg{c|6=g%bM3AN^-I82H*JKMn*QfB6-KG1uh*zwZ~{ z{Azw)WXM2eBe-vrY>_iCxkezTUK0zh?m^@$>RL{>n^$Qb04|o z^>rI8+wtaY?5OH#6YG4sJ`{^lLOt*v0gzHUj+-$p0B{`V)8GF7cRur}|NQEg_B9^d zxNBEuU!OO(C^3;r#S%$f*QCHuAo%!;FaPY%_vPnBOxt!`*Q;mu4GaeS{(@+XGO2lIE}FVt`ySEGX6i zK~$*y97h|au0z^W7ma;t61Rz8rGRhQ9VJbtxy}nP%7*kY~94RA=>4s_&qA)mT z@!U`(knZR&A69FPh-p%v79Aewig#eFFQw(H5>ZGQ3Wp+*yp!^HbQ?zOSj&FIqiMr% zQ2WM*=Lh|o%Y~{iDUlN5aB10m)sFU1K=bL!mwvta#`7lClt#J-(nE2pwk%@1$FtB& zDT@jVqa{Tr?TeAKyl5Uu`3^_qWubS~H-v*hm-B-p`b*pKiKSYK5atX`HRn3 zFmuM}s>)yg?Lk#h{>K2mryTGpdtaE8SXNQx_?u+hasY=N(?wriG&pALc*k~AX`6Fo zsxooPG{#6_UIdB46eXEVx(;_-S&(0ppP%p7m4mH^1xn5Dr;2Ku*3`N&nRGG{@7=d& z+uq%KE!*0=duPq4Dn=-yK!5@gN~u2(3`jQ=3gyaCN86EBLj)j{65@H;Y)h$>0ssi5 zfD$N`f-|Z}M8+6l)a$#*awbSAgz%E0Qlg=0>sGuHi5C3m=fAD2taNS5<2VQfLd&;3 zXWLHgm@##A za8MPscVIvd_ydMc00|?4U|R5&zTt2%SX-J8eVZks1WAa(7!@E13L*(gRGGpQMM^;w z9VkIW#+aK*yOzxWTr(M|4*SjM=I5S=c+wv%?-?2_iWcwQwJ9;2po&5$QB+L`L5`VS z{H^9~dZauao+bh)1g1FDj<-+U;OF^A$wC7s!S zuvsE@_w`L2Gdh+`av^#K1}P;z-H4}B5@o>f8M>}8mNCslDusx;rnPl-ef2+ocISs~ zx_99ZhGOv_{_YR$on5c3TYvo}7k2jcuG+Zym*4(c!@)xXLqnl}|M?ZGZu!6!2M)D9 z_QFedef*;hhYof1_BoDQQdszrt3Qy+WL9k0^x7L6f_}f_x-RF*bowi|eGCB@rN8>y zgRLDMXU?5-=G@b~FW0BO^}Y7a?qz2zyx^=eGa2)@4?MJH^Ok`B*m}WF#7;TjQ}(_v zN@*%Shg{ zDpgb_xKK3(QKmBKWI9ujmmdrUUG8wn35A)bEin8czpkeVLjGs}cyRTrFE2WCad~yMMCtSS{_)u3#bxD7F1+}uhaY<7 zg=a6h`~#+GGRB$?9OyiJSW%QfIJES<3mn@D21Bb>zTVT_J$v5#2@@xl6qjU@S(G&* zQVK{gl`)$R9-2ONl9UL5nx-p$d||`-Yi7?J8`ipCTdQfB!4%>ON+|+Lf)bEXf?T+! zC57a+4NRwqD5Xd25cK)m4jyhl)LvXv(w!f+0ev9Y*1e-g)i5NWhfz*D{9NbpSo(Mp(y}FVZ?D|U3LDKZk$7aNW_}5a9KgXvc>Hmm~rOJDk0_M z(S?jsahz>PM-7)A*P!42dh`gG{2gD?Bg4A=n|C9ErYZpN$!~p^0EB{po%rQ`uvw2*YW#(w&Mnafj>R^IHlAu3?Zc7FkW1>cIAf6exG4lcE+-zk;r{d zKK0CNE0XE-BhSAS4Tt-O2J<5k+vPv|%ir#O;;B?RvwdIvpC5fPo=p0DhTvlL=B@WX z^^D&zdItsxC90}untHIc{mM_=A+mfP#O3ZY3j4_){*0KV^{^fHYd`%tA=JZXB~q!N z&nN!}8(dF0;8XU#FiJ==nY1j+mtQLVdZw!-s%oKNP)b=-Q&SMlqm&^E;hI7~I_)Z& z8VH2AkQvJg_Nt$CkAj z+r$7MAp+61?Sa1jp}|-*KT4PaxsdCq)iX=uCz0Iur#~pFQczs%x~`%q9qsLY!?^y# zAA9DpN6)_C!YBUzz=AW*YS_2;vTLt<D0tYQw&`n93HY9yQT5KM{fI6O-+sK zx{NW)vQ$NN1>e4Ht7VzD-1>2knVd3`7l{-`^D3$;yE;375JJJW?fd`y$C8Sw%Icam zD_0Kn4=i4?#7d`6U$AKLl5+zAe}7Nk{=Iu@$ByyhBt!xPIOlcaMuox=)3hwxvK_%Q z=|I8^2K^tr=F%N2UbU>06ey)b97!obM2+gIUqwnlQ;}u82qGe-LI_M-h8}c=?7rTE zd7*H6n2jr|R_h`eVP*QPeSHTsUtrdS7paB$h*DLRlSxUD%c}z%Ls%&hqme*qVc4`? z?=cgI1$qAR;*fWO<4T7Mj}B|r#4-Y4+FT-1M)6j&*M{)5PucszB%*HkG);FcD^groP>?_DBoJjhp0G0+h~{N7ap@*HTN}IETa7?a zQy>@&SB^ccvSu7e2ay_@wsXh!!KOCF7fL46{y=Ee6AvHQxl2mnGkk-wWb>g0;?qBV z$LAd`2ZaIL293I0`uzc_uz~)*fX_(VUWVAK?2e$HJxU*t661-)Juqreeb_mg76FX2lineN0N`?-%4C?rMyM#Wf62}>=1x5N zk4SP@LV&EtmLo9!qhd*tOZwoO-!un?fDv3G$(=UR2QV^|Ifg3_;GEsQ5P+i_2TU-J zep8aA^gqJ?If8#YGM14~!^-|jvXZoK^Etic7-P(|EOERk>-VYy_E_WJHHE2vFC&zm zNT=h!HpKstX7iIV1#p5Je*)mz779TW_25AFf&LClCzfdj13u|GQt-5ye);LAmcOz* zm9`8+Wt0{~!;>fPxbX6;rp=ybTO1Kprs|rS5gY)dblX{*7oq<{%U5d z+S=OlFTXMr3v)X4Ew}0jfdHDq>Fbgh5 zM1*~N_HKM*-L&a5=FVRb&WljWq!6X0#bp&`u5HhrJ=?KuAq65*MlZVb@~*bFc>my; zOU@ZzH_Ohtue28OY@+3N4=GIX=GT?{4*&RxPCn<~eQSbqCwg8%@G zo^wh0goTtT|IT6zKnMyRE*b^L5k3EF^Po>>&N=OmKfIeUMTl%MILGls5OBmRODUzy zcD->S0Du4pDYKsi0+-p&b>Z>E9epX1rF!-*C8Pw21c*eL^I=(HDbIZiDZG(Lk)^Rj zKrTe~npqw?K!og=$q`;E1e8L0Y$v&q003|)Jf|TMz2SM+^ahWJLJF@NkdJU;d%R;= zT~LYHO$nlul(J+h9S#P(Pv=-?{=Mpe2_eTydwt6O$;e6Jvj3m56B2kp!2IIUVcc0h zqb^i8s&n1zmtB3sf%*fX!qURBD$Ou9zqIO!C!euhCV|8)TUC@;YS7{J0ppR9qG&<+ zIP_>U7y%@LfMr?pmYuio!b|OR#Q}z`Eq}m2G(0S%Os3QQgM)^qTeb<*%N!yhz&X#0=3VlEs~>;(q1}7-Y}>Z!u5aFr z0E{Vpy?u-^N=S;5Kp+S}C}oc0-uL_e@`XZW6_xERhq~HYmtAymDw&!zY4Y?LGr15e zUw(P-zCDnO-3bC9GDYd{?K6D-NM6`-oC#y=Doe{8%UpEkqO$yOaY=z-loN-QLZ`ZDk>rdOZCr~+R<)e=-F+#X#{y;{d&${^Fa=0DW9@2anp9UeG&GdSWR@&F zH=eSI$3mHtWEuH9AjdNm2!`g&pKn`sbxk!;>NpM%xcQ^Ec6N5WzWlXhBKg2y{&eSE zUo9vo1jOmHPBVM~-Ox)bDz|Ok)d;b29xtCm&I%moH6|Y|K+0X57YgStuuln}apZnP_8XtRT z$+y3?(l5sg78*ag`H5#_EGCngiqocAPP%_@{ir$91?MO6$wg0M=imL?kga8&G_|oe z%>ce5{1N`kUry?MzUlwB``bIa&cCi>AIoLlwDRWYa85!H_}+8CQX*qyZ)4Lpe)h{y zFp$HGXPpxs(SL^QGLfynzz9*$(e@TL){)b^-`@Q45jCysaqr}jEBQ<$Nvl*+5P0|F-Px*j{Zd8 zpQrwv86ku_RI)n((xkB>(4wrttk(>(x4IhTY| zLMS4U0!-WO9!MQ*+CTM-jH(*xRML|KCIG;t>$;kvD#2iPuVRGD5NT{^c=pV>y6%y= zqwDg9!`+EQObcp*L&>(5Lq+AIIOj(YSR+-gY-yO-mQ`9(cJ2iiWin}hAh>benq(@; zn4&4l=-ScaKlN$Lc7OBJpQMvXLTM@yJLjBp7c5vv8MRHTtK;zOIdexYt}5!ems}bO zhKh=dbX~L3X`qBsl1`_3dOFX$=(1Oydny@=kE^S597m<}=373(xp2(P6<1$fR9I-) zmZoYM%N&Zu7oIt@vb?;YAYXDZ^05*^P(mhSM)L9~$aKaOz)FkrEZZ7RnNp%|_^G0) ziZIPgb!7$BeQWnW9P;}izi7w0H&Vl~^pIn1+Hu8o*FHWp5bJC)Ei2=g1{EwnuQ4{b z)a6l@KC? zI2vEzDJ^rJll3MSba)q@B0{O=3lgU0-uze$y()m` zIY3Ah0vRQY9@)AIfe4_mEDn-O1UzQ$JOY$ZRndJXc(YPUzu%{*iUjZlgM>3(0HGKeKSr;uoHJ;)-joD=VwuLgW?Xzw*-aJGO5n zh?G*t6_hE3MMWqiAw&uh4u|*b-1+3HhXQ{8MHgQ>Zo&l1$}q*>P+x!GKtoOK*q)xA zhW+(*lc#{=2#JwU$V0?Lqfy(kC?U3OO`bAkRPE^3UVizp2mW^JCqFfA+!)(-avu#y z#7sKv4+KGQKw@aRPE`=DCXy3o&eN%_g+k-Uk9Scs!V#PEZHL?1_v{Xa^AkI_m&H?o z{K}!$)*00$H50}NA*-iMNfVYzW*8+zQ4GIdAym~g6yorf9f(v9`t5W^=(-@1=>~V~ ze|Kkj%Kq=#|6eEg9ol=)0RsR4A_^fr2j=~n7Y+*{lIb)7k{1qhE)uDv%ehCJ(my!J zg$xA)`H=`_aVo@d9MiUo^7B2nDWx138e)twO2PBoQWg~yAYxDdfTk)Xg@ws<+O#Y~ z*YhKhcrxXcDtzu$k~zP-EK4j&d=EIt3cE3UcLu^b?vD2hU;KvWe)*HkWC0#sGi z?yk;4) zFhzB3t9Hz|(y~&*Skr-q7oT}%>a01pfA$NN<>gLx{MiH!q6`Fsj>}bwh&Y@`Xh9zm zwr%~&V6;l6`ZOcjU4PKDEXlcH`s@l}r_Jtq(BoYq&|LS)FrIa!p2!8v{+ZWHB0{|Pg@4V|L_uTW< zySDG!|D_-O$6X))*e5@D-B15~?|(h`@ZWy=BOzp2anbg@_0uNQO`llj^`)t*`lJ8) z<11^{-Sf4(W>1~WIe&iT>Tm!2*B33G^QoI|xaQNJ8;r*;JLjAmFTdp4J3mJN7*%44 zM0I(^z5nrpzdrHg15ZC24M)6DA$rKe6X@K3vw1<7M0tF;CW+|Nl=?%1zj$;jCB)@2 z64F0=?QDh7@BMWH7m^T6W%yTbnWr-LqX#zXszM3eee1%C;*jHtW4#M6QallE8V@t? z4}=VVV4(h>+_JlBLUD?_y23c;mgAUdlK>M^0uZJU#uUN15N^gInid>RWK7!*3V}iZ zdH_(=G_9qnRlr&)ktu55;E>~Fl2%$R)yhf>-R8Il^^_=q$WSP-W%HK8f^c17rES}k z0ssOq0$Guv+=oKmSn+!6q2|d`rk-{Fg^xaXf5vqN2Zy+2Ra8`*f7z9XJ34mm+8qjo ze)o%?mz5QN;JO=&OUqox{o5b@Yv!Cer!QET$z*^qukFIC75W%uc@fH}r)A_g&Xmbh z)~%(s3@)Qazb9c#&!jjD5az-LjcJ|VNvn4*>kwytCzn#W$LuqbLQH%mE)d9 zMbYZ_HB6g6)v+DZ&Ny6JmTgOB`D&+4npVGUT}^pqAQG`90#h`iShih}bf@@3x)C4> zlUy)e1pq2Bq^Nsde$hDG(syX=zOCEK!jW`yD>B78*mdyFfA4keZq21cu)ZN>`Kp@9 z6aCXBD4Kc_As`+U?qprwD#|of{mw6cQ(jX1gD-q$ z)yBSY&``#*eTI$*jIp$t zxn#*Xcir~UXgHi*RdSVMO;f#W`N^F$pK<(oT>^v)sVVHvYi0#}>TjRi@zkoOtC!RX zDL;Gd?2>{&D(%#ig`Zm0G^wWGBbQ9g*gP6Cj!%T#>z6;l+cyjYq~ytz5-1%gi}Vm% zXG{V(j+3^X!ongc9EqqX3Zf*0P{veL31t$XXK0ubN-0$|O-cz!0MNF~g%_Q7&K1`u z5(&RwPiLIQz1tr7>mM&!az?DL<;697QnUmR8KIQ1=H}M=0|(ANbG~;&0FY&SARY=~ z1e8S@8uoABwzZ+@Kq`}3aMqIiqM`%)_x-KGp2b;ET+IYp)*Oru)3c)#dOG``7I`_PcWf34t&%dywq|~uYUog1t z+0|{G9p@}PZ}Yl0o_OTJTRwi9ZJI*J&70OMs^$*{2L}dR+g^6Tg#a)#FpwG^B9v{} zxJlQ2r!QD&TNa_{)oBn#aapNAj6@=a;VX=4x=?f~K6v#7`H{R#Z^MG63#ZLET>vz- zv{Y49|D>y%?`hRRkth`;M1XKy!CgeiFD_uwP^!5ZgoE7e-?1fh?m2;IM1d}cvKHW_ zg$0x6FFe@M-uTK(6#>65?;^&Olh{Z1E_t>0ke$35@Ox<*M{17m{QS29_1?;>a}4%> z!~p~GQnlIcZ6PJ2tbb_8b=?~-xu`fl{}=b(zhV2%1+!*KDd*3eJ{*s0s=8w1=8S1d zDd$X`67=~dj~~Z{=pP(X7z2d%&MpAB_1ddfZQA^mpZsk5-ug&5e94lz=(IxZpe?#rA#mEr&Zy+ivUZetGS>MYCs3t*g7^?jO9e=8Z@w zxOvx}&Ys@$7oVZ3%2z<7Y4h$Bi>B+iT%RgyMqy-`@ZCk6n9}u4&mUpF~~L_SNry z<>i2B+b7Eh6F^BAv-)ud4w=Rk94mKmhi)4z~3q3{9yUmESdx>K;t}<@r4e zr&f%q$aDBHhrfux6gE6O{OoftoWT8pkW%>aLyOOh6qc(B?Ax?j4+TJ>;YcJJi5j}1 zD#S2!?n(eOEmPNhOi=-(6mDr@UNGQSC~0jyI6O4S7;_LLKzV7gZ6@La-CA*p8Sh@b za(VAS|3eSlH)+aLrs<4iqbk8gI-Oc}{)IkGa@PeQ2sF!BkR|0H2!Mc;fUav7U3%G? z)hl=H*nZ`8H@^7nQ|VOd+dsLdw4^kdNp9P^>BG0*`NqoEm!5ZF`@x2=-?w|`&grw~ zeE8FM{_vaM95ZQZaap-zn~I_W5Fz-SxpTRY1fZg_GMR`GMgZFjOtoA9KGeXPnMOIT9%o^DiI(A5l{#O zPcs-8qZ(BdRZS#P8SbTL`udvN4tr1)Aix;&WG}tlzt_B;!~G)j4k8c&EJw#p2pIwS z)112U(O5Y;!dK$)M`7+D$!*UN8fIt!;$?D@xx*;H=B$;u(d+&Oe%V(r{6p|4+~CE{GU2>q;^*j!R0RUAol$i|Rg{oluN_sb`9lD(f9K}@?mkKs zDFg)=N~C>;UOT$BtgLj!YxRLZFp?KZXVQq$6@uqvz%@;yhF%(t=sGnyXH3a{>%l{% zd0ZS>=Af&ty*?btJAKg^sZ{zOk3RhTGf%08URYF8T3kGD&fMCn>hj8}waZ^wx9at| z^B0s?*O<1w@r^aTT^**GX*p0oIBjZvK>?zqgt=U-TfNHVE=ctG{S&54rGyC1iwg@E zoUyoO%;=u3j_T@al!zdGe*gIwU%GqS=8m>jswkIUd8KWegirufRjq!{4gknsdY(tA z=sf@)RW$*bOe7-#!**>h8C9sNDwNSoCYfJ0b~tYC-o1J5>GK&SeO(>tbdmxfK?ET= zQFH~7a94PZ(Fh;`xDZkb$8nHL7KrR54r!^+2NEnTPYe&X?%8kI4tHEPotE4^DZ!TK ze)g|^sIPgOYP>TszW*g7gt}I0&J}kRkDfU~6svu-u}fRmh%*U0lj2pr{BY3@QK=e2Y6)JMD3oM5&$G)m|Q z0oKTp!rpo&5KqX203cFIN1k2}q6>(GP@2PzQp&upOiBn-*pZzCA%I9JVU%HZ^$sZ8d! z>#t3w(-(i_6M2#F!@vCLEmvN4^`}4A*41_8dFQU!u&KVOxp!dTvZYHl?c5bhCW*)J zBGIFC5kfG^I(vI5A+x7VetqMnl7hnD-TkenUwhrM?RX-2#V76@7#_am%FA!N;aVXj zB}5_`hDHe+;e7G-o|a|Ln>**D*L>ilPg;7Q^^HfqM~_QPh5!hOk)ZyC8|N6B67s3} z5#OGJ{kp1r`KEc5#Ub0_ro-np;xz5jhWe56pj{^l#dy^{YEJ530glNf}f_umA7D6GGyJCjPDE*|sfElvh=Cb#_~}d+vo7mRDAIy#{~?Kq;V*qO82k?+;4h8ip?*sK!*+adcf< za`9DNoo#v1yjinn2P47$;bf$skUNf=UDBENgd+iO`6B>Q2%;zen8tJ{Khm;ySIkNA zvJ%Y|1DRNPSI3<5E{W-6ptoDEu2wXakdwK5F{Us@rA$3meoKTmVFW!FGD6drWth%Z zSiMIYj+@wyP%0JeWQiahxhwzxsEXqE`Fw`qIT9g+l&B~afJlk(<}a?y`s25D1&^py zBY;;?mJ&RwRhl~)0V$;@B?1T`J!kyZeUGP~kn0Z^;k=}|#uJ57ARrM5B~r){&pL8X z-kO}1^32_4P7Q?|732T_N<`1^dgqNWEqV!R&)<6-b_j$L$|#Xi0s%(Za6ED5+|%Yx zpLQHuxBm+c*xM1U*|PO>AGzg`U;WI`wVH~GjXQQ)wsY&XS1+DBr@8I$+4JYUy7mp% zb#zVr#kanaOr=#-J#eVy)wSywVALp;gn|KG)ihP< z=^uFDsb}xJ<)#@ECzci$jvqDZXMg?Ml=0&tpmkeIPP&S1L)-&q-pb#XdviQO~-XyfrzP$W7=-Ub{$tTN}pTT z{P>Ck#ZkZQ@@Zp>ELR-g%JY`~u45i95Zkf}i^?;B01N2R(xS%3oko5noyicUx;D=X zM@Eku+ql1(`VGmYL{t^crx75+AM{O{JXHu#CG&!qT$!t5yt8nmm8eBFD0_bi9P36usR&brUB@7pO$ZU8X6H>;((^N``WjiA@?S`(S#4O@NqAP@rK+mO zH|OtR2RyR*5>f{Jfk&Tz$+YaH3s1K!`>X%?^BwgKoby}1`ps)EzOc9;`oL4q-uuKq z%8H9tY}gp|`$NG1Atd1Ur84Q)*KZh##q;yRzrFvVa3C;!!i3$8jiEr`!Ka@a93H-8 z$=RV`@W;RZ^E0o#o*#*k)JtrTGMj4!>hy`)hbGkyUzc%lXoIl^R)8{!p7-S%B7T+D-Zz@gMMw%^a`J@c#kz> z^t0E^erEN-l<9oohB;LwA^X@N(AhUUULFs~dO8AxghF|mrrGhNVu`{1hk9FDKJ%Ts zYDU$h(`iuI#g|=ksPRxVy=OFB@B95fglI{W5JVTE_ud%6z}a}Zx%pDR;cG##48r4iII=eQZ~c{)F>88(R4^)|Jk!^FQB*Am zDfSi?`;xEO#?BNWO1D2%q5a)~F4DuEisY@Z-R!MTy%Ub?+19AB^N9)KU-i2Ey!S@C zM7GbkY`PZwS6i&w#L{FQJPJ<(`Y)sm;Ra2LP*P8dH23p+=+QPN!wk#uzvy&vcTak+ zT(9hU6nwj@#mw`i)+QZjq1cFf3BtB`@BAChfa3b^ z7K~AF#~RMrbMoRQpq4xEVZFK4h5`g2f0`@NI44zD@)!T`bn(=hTR|pC;FP=U*>8Y zj2uMQ?}3rEl1d|o`9+jtl5lQ1+so0AhxnVTt}a3I=hK_%r5l|6O!{C#K^Lt@q3=^S zyv3e^=LZ=jMVkO)_An#^b=ymzFh?RmgLWXPj#567PCpd`9GP5Q*>ckrZ{P|wH8Q^r z>V3NDHqMySd#N1Fpjo*h)v-KQr`3D$oF)X=8lX|9$d^TZnyt^@7w-lInhPHaIx?8r%Z^J;3w70xkozB$kNiN@3oxKdlV31$&FvH zRmZhi$LO|z@2hR&yHiy@<(D_U1Y9dTfVJ`}eUk-6&6ITo_vYa-`{heA&!aPBj5S@W z-BXaVh$qtbgCODkG>3m7GlUUO=Fjo{nP&zZ?Oq&hjQ5hNs{QI;G{sveT4m)&nPH0 zq;M!nSFpNElJ4Hj$}gFWfxEFPYT%Ed7M9z#UoBD{&HwVutI`+n4N>n{rQ-WC6mshR zYV_03BvLX=Qy6vdA@I~4Zf6C*Cdz76HDBa9T}I95y}f!oDPPv@FdfGAKMzzs2L&;) zii;M#?L=5AH}EKoG^I)mIW~)S|M>g@T8n(Tn;D6_LTqKXo6S$#Ikpz>J0t63_uFs3 zKIydFxd)pc+z2~bus5B-)##3ag$~q+_si9UMY}U4{U7}MYUDAxY-WdZqM5Engb7_$ zUXl4|{V*J!3e_S?h6&bJ*xC-pmBeQ9UtYOsL!r3W*Bs(V^2lJEYX8N%-rka39!p++ zzFvarOo=-#rcE`^(UeO&I|ikHt&R?sKnUcQ<*7X^5R_L65l-fMVR%g%XSN^pX--9F zTjJ)PzGd!b#qCOgT@|hzjz~+(dzCc2vCF5MHR5VNJVq1{GkQT3W9SBf48O4==62R= zo5B<&X@I}bUGa>)>))KMt^Q*8t4Wm%ya0z^gka%U^7;F{{ap*(AL89fWkI3iogsCO z+S?2L#c*)0u3rL(R1;sfqvbqi7fQbIjAQB=HeEU1Ey_a(7?i96dEU zdPL9QqsGPEUF@*KVYEu7!w$0B>>qGf<;j=RMaH zl%vXMeriS)Qy0iQ0Et1*gZY5Q^6jh4$_7@S;S>iJ0sA8=@{O!iBIttiZjYg#ACQ#9 zBx$Et-1c$?1CcYd}~>SX%DgoHhiU+%1crTmuL2a_jo*)Z7+xL*6f&x7%>| z#N4c|uAXqfbWD3^e(J}{roFCncJb{WDI+5S^^Rl$wv%>tGr(7AB%A**G`SptjpL+O zOKqkLJOZT(om(u;C&rcdkYIu~Eq(&j;vU(6FB{c>&V%+4BqLnR3^C=so5!GXw6$ql zorn(bo!RDiy7`U_!|-c%q2+lpa{mp+9(2*tPv+MC2r95^PIOq5n)eXvE4zDG0wf}o z-}4#XVG)%qzG0oAC)6rN58d_T$NCjz8FDp2m~rd0)bxL>NWk)`^Gl-|@=3sl@m-$H zJlgMW&dmDto~mXzncmeQcZn?4INzd2W5dxN+;M(HJsNW_BQ9czgzk0yp|i`xRA1|< ze5XSd`18;O2`El-@HsBiDp80*kP+_1UwpYd3yab38)-}utyRG*apa~fB0-tOA*gDL zV}6C@bFb+5q6i`iYzWH0L?f~`QvS0|ifROg&;(9c*Jp#l)eHy`YURF4DOrGEiqHa; zHWX-|l6BwIwaQ)9NzZ8q^2vvQ_lu3JWE4|{PzGA^)!|4Jq92+Pp9-)%!VuE&d+ z6glQ->D-pb+CbHZzJXp0<1&c=|HIv+!O?8}*JpNA$koA9n5G_{^DUPXrRc@jk(iIQ z&$r-^B$O^%UA#9Aw!)>%@IyiE><)XU^-ib9gVd<5D}H_=nL^Byw$WvwI>-C``fjS` zvol=(qd}|TOxNyW;*QoYhXn}B(QN+9?SQr?pWGH#W3!}9!Cd6nu(to%i0hjy|J`rD zJdd1is*e4T-Ntu!P0?=_{1KP)R|m*{eA*93opSblm!w}@q#i3~j4pvMhlAlF?!tM} z;>*}V=0W0I{_PxzWhAiPDyb_hZ>c(trb7N@=ysG=D{@QTqxaV&=#*HduYTR#tnj2Cv? z?y4R+**?Zs`P&$qX(~u{>Yi`;Zyiy6asN_v2A1QF162Y!YvKe^3>B{+3#%MtEkR2! zDAFj)&J@V1HV2kQnGemqO@oBCnOj4MEw#|tN{ao@R&%vw!7UM`WMAY4^9M5aaQ$}* zvCRmJEiypdZ-<>kCO76js&21-Thox9ap(i1Mo>DyBSLT>kU_OZG)&Fpz`bYii&w?m zk){>RH35R-GYBzwjh=Jngoz+QGBuM0C2KMWg%F;P#pFKhjENG7CW%huhk~d-!|82Y zee8Z_NXUtIBJyfSX-4aLpd^UI&dw>|;gT;bKi7my2Q_ ze18d%`CQ84Kfj3}p^sw;PpV&!8Yl7wB@78twYb68qjDvh{oG{Tlw@-b$yJ4(;}gox z{_y7IPSZ9e^F ztXJ)VV7Y$SHJkCvb8@z3q zk^F|JIqN%5dT=XdfoLc0O51i|n|(jRohF0S4Mt5l&GiIxLc?5S|!yVg#F*jr`n{cwe1lb9cX+AbDH}G?vTu#?4R`>vw78 zZ4q7!L7#i*J5qG^nwMmR_#hy1szW>LRoeEW2D|@cXKwE6OXT-aee!;syc29UEl2{G zIcz{uD;_?JaK;Rjm;4;^TMUO61q4=51^B2|eNF)$qu!|o;&w|5J=^St%@?BJpEU)o zj%P5x`G#!oE!}S|DGo^A=O}29HWS`?VbqAg5K!I;GS-6F7|ywQ!Sg1G+*|=VmGTwi z`taZFTr>yamRu^kNQcLPpiJbqkTaaei}2;bmBJ5GM&83flNDb{db+5Ct-FJ=uU9G1 z{HN=>{doih3niEuKapvu#^FCHkLN|e7tZG~yVxoe#%>@3DZ(C1*mMjRZ=L_s<3vWa z_@cZsj3BZLuSimXG1(xGSQ7^Yh8LPon38_lva0lc_p|o+1L>gcZplP-0pDLp3et^RwN@YgBs$t3$A=$@_dF z%p%PhNq*XgGid=SK#zjNlhNb0j;4x-f%B0=vbP1WgSq7d{^7u7;^>wbu1I;tVVuyG zFFyGB0oMOEMG3Iy;zS6e<-k&i`cN3G+O1dAZYgUHK45orLr$~NlH0Q0t!;eT1?P*{ z!Tv9jOYHP;B0Vaet5l3dkCJOl%N)a`1l)8Pl57xXNZ-TkMXL6FI{`!g*~?S|YoV*d zt z8NtS0FFb3zCjV&#(=bE|IHf;%3V`KRB3GZM}&Q`Sp7f$509w zO-%x>B7Vx!RPY4;Cq+;!7pznx3hd>qtZdr$@C>;tgMJ$ja|O%5nP3`{ZWHebWg`h04UGSI z&XKy_2dNobS-A|C1_iath#F~X9)Rd4)gEXf^K6At=>FItg|PHb4Q6(@+OZ>GrFH|c z+sfFtbupV>vRv~-FDt&nyC}UK0(4ECm1LLvIF1(Q#$31ge$Dy3?(u%iGafc|jz3ix zsr$#>tD^TY#*0E64d2}`;AD6E@h<83=^^#0sjBQY183B@$>n@n45>kSeoloPI}@1B zZLxkdlz80D+SQas>A(Ze)T;ef1@6ksF%Tx{AW7zAp|J_uow+?_eJhomMu+3}L*$-Q z`&tbEm{DEwTBM@#w|5p4_g+Y|abM?yo|4`HjcJo`h*uC{mY#y)67V}&GFa-_-9v65|XICwm|c{Kh3%R zhwL4zgF0Kk2DRZ)pXV=Ua$2l|MmfX6%z$HPobU1%ReRH~hU2W;^Je7T(!cudV*wRT zbR=+V0x`5bTV0-6lEs_$=~iL9Js>TvEiZqU4S}P42Po69A4wom(%@ncqYdkpZ<@Eewc0RSpx%qM@=wS z2^=!8b+}mZ!N{Zs*Zs)3Q77V5!dEnLUw%&IztiFdr5q^o*c0P(0$}gLbA}F5$ zGEJpzm<8ZSQdr-+^Z7)20$da_t(0>K$Gb-#52c%%TwHSVliy!{Yt^uNGOgbkYAxl5{mn~&cWFs$!w$~egEeOR zMy;iO4+=2C=rro_CWyGn^D-bjKo4MeL$g8328Oub)KF#6dUQhKwdfd zU9Zm=K8)K{HE(lVizDv_;88WoEgocHOG}G&HZzp-?)68DsY+IO&g&zF)#hjO5>J=^ zx#$FrZ#Dqb7NDp5blg?}dy|rR2`@i8IV(+l{k`JUL5R3l@4{?3zawc>PmWQ0LFvzx z!WsWOPm_}?rvQ!|CHsXYI}^bY&U(NF6_;ZKDO=?Mv^BrJ#pNeJjbs;fn4V*sf4um+ z4y>d-am9SMvJn2r-`zoh$C?6$Pm|??cFZi#&AQ`7pC;%PM;`CQI(&g`SQSu1>)^9* ztiOHr>eazQz{(a22M^mm%ae=h;OeW~e36A&&!0^{ip;MjnP7N>^|^-apQlQOEqZ#s zD`%sk0Z4$EX$PGK2Ok?3by?m1%CImAu`?OwBrdl@v_(Acr^af{t4CfZcMtOI{f6a* z>w%J8=?vPU!U^+;G@uAw+{{#6Ez0eiGdG^1<9vHVTfX<1%{lVG?Nh1ebWwAu@%eV> z_u=e^H3WzFV*^9SRlf*#VryGKtLI*08PE*+hbV@dE)Betb#OoeMVQ;Thep^3q*qhcKeV(%9 z{}Ayl2n&HYiarpk6GB09%w zkE&t8?UMAI_;B(5?oYpFBqhng@h?G+k!WDBUPhZa%A#bHg-W3nFllLTKkQV_7<;vA zjB{`Hj9j(d-6Q-TT5{P%k7Hbt;AYBS4M!b+ucirCx^?wcRkE@zHJe(k`;8iiKMi>= zKkQAX=IGv6$HU?N8aWAvqYnkgW3ObdsWh=OK!OJ5tODd?pXrqUxX8}AwFYv(<<<&) z&jV~f<+=_60b`tt8yYAdroTIz>X&ald6Co~LQiLQ5t(Y#gq-Pk84ixH)=OD$ri|fT zxn_z(e8`es14~55DtjUT-wOG(@n@PrGLme9}w7kQvr_Ll48jzd&Mzy7d+b zWq?7>hN)cWD5S+1@b{WF@hIJ6yvhjfk}{i&E}h<5tIFuYxuhrO^<=4NN*JtbwXu? zI)pXm1B1$itgjtXKm6M%)(YDB0C!kCKFQ9m-TuJ{*@%JfTriYkSd5tvmKxIa*m{2- z)agZwFW?5%i+h3nw!zs-Gr0gSQVRujEEghD+~fC1EnNoNz>`Ew+twll7}6oi$V^f@T;mo7Cn^5YJ{1YHA~PYDoMrlhKP6k?V!gJNPP98au@ zQ8)=L8uFpPqulLA4ZqxGmAx*RjD=kA787*0iG`QL%LiDZ=+2?qA7!F(C?Y|B4ONI# z_4M%|33!raI~gxACBZ@RPI3W1oT%Tj*<9FIhJ_XX6gb#nV~)b@;jT`Ti}ad6N$cx$ zp#k`ecU|J_MX6<{8DIVIbLE!)gz{2U?oT?A=)RXjqbY`Yi5igiA!<%WDsiaso4%hi zhg90Ud+VYB(Z)0!tPk;8c$)za#?~l+!!t@Ce*%|}`+q)v=6`%tphx1`JPyK(l@a~$ zYE=1)FfU!XUF5j@mANX6iSWf2BObyRUJ_m*qpK#IBIaNYh>&0z)`&gb8XnZ9_ixpFqo`^|{{80-mAfnnBo|sc%)?iQa>)nK5FwdwU;WT|JcBVIilDZ+8C~0f@=VMS(A026MG> zV(jwhQ3_HjbGG+OHLj9uesPiLq}=sQ&LV;;{^iR%RH<-$Tu)|vLNJ~D00}KM9^OQq zG8HYwkRa`chesXbM9hGck+?mZYz&IPbeHgp%!8W7@KiUBma*oA`=th z+dTTWs`5amrM{(3n(jbH+OA{6Te|vuM28mA>$qIoe|#=S+O0DYKey6uDJwwt>A7Z% zhO#@g4L*Cej2;AQNSgcgt~@o2D@r3z2Ai;$!AZt}hNm(*;`icx*IIqI1NvrNfR75n(-Y(7K4={51PpyOjQ14|jQl2i)T?wqf^C80}P9E0*3 zV4w;6ZM`@trNTl%qxn^V)O9rHh=6^jtE6x#*T5dl{B#AS^W^l=+Q1xa{W+C1K_C?N zjHzfwAQ00iEFFXo{D(OTh`^{`T;(t@Dhe7N*u2H7m{8-(qXy>gt%eLaslt&4TJcaE zo#JU`TjGLz1Pn~+-ISVm1+<$XU(%Rgk+Bq~IzX(3)QO0k4NS5%U){jkIAYZ2W<|2z zQrdd$rGL|PeJD#2?MecCM25$aejYTlm5yqyQHN~r=h0~j5s>X|F z+BiqF*c_~JI@wh!bEh-8o}~-1qZr*^XnE!_u9fCesGc~da~ORgZSr;9*fZEMP4^igr{sWVfYR#QGJMTMx(9X2g-2x zc|P!dP;EJ79`oBhI%;jk`tfj*RbKV)0kQnNcP6&UZ5F5t%|%AWQ{H#`)f9XF49Iif z6bnViPIsD7Q>_mCJP1-nzQ9LEE!ZF^(?%3hCsI?V!r>`s=Nh|iKl3KX)?-i$&{Wk@ z@lJxZ*JPjTdJ2EL7PjTd9vs{B(jI?(;e!}XEDX3>Q|h)-%H%h*w*Fb$S^ylk1w5lL z4S2@%3}PSBzVoApuMYSra!29Gqs;fsrHqvE$An~g1= zhs><(VrHl5DaogQ%v+5LR%PI&jgso_5Gca^Q#wu90LRhoVOG;Ggx|1en}+&Jj#TzU zcL6GRNem}#2wD_%XqT2qGWKMQToE-n6cH?Iku0#Fqh=&l>k`ciM1mw5{l9W#q|VLk zlvhT{bX!iQzE3zfu*&e~#xk!F#yAd&`|4T7ww7DGyX^n@w3O~NvSU5cc+L3L#$x|u z$KnQ6g}1Mg$N!-;X=qU(L7ZJApyH?^JW9=HWfv=RCFZo2ld-rlm8j2GG<}OhX_GX* zKB{^5=fsV~?jBWFYS@R=OA0Ud%ti*HB?K~#xkmrRR|}SlmS&W%!bxp3_$+G;e~T5~ zmsPC>w4F;4ZDD13p$~~G8F9V$z?jvEtaO53s-5tv0saX=197O(jk%wH7 zIO`W@l1i*dK>yuWjJko(g++|q7GM+$v$wc=n^O-J6fxtkwLb~k4*adw3V6bulSr!U zcyJ>Z+6D|l3_bsYr#*7Yz|}r5L16NMfpF%_fW|8O*@-P)Ay^xLLI0-g)5;d9ZdSHr|x>jN08?N~XX2q1SXmN?&-f zHpp)0Akyk_3CH1RIdJNDQWj3eM*o_fovokiwXlur;qFP#QxX7=Oh${1(E1AXZ3s*J9?Y_rpf-!g5$z|#DcQ=Fin#rK1aG#OU5 z$h|Niid!q>GPWwJqXV0(E8mP{czFGtBoy7I;Ekb+?6~)KjftcwvkaI*z3?~TdiKgI zhBxki7K-rkVAe1Ys;ne+T4=VH1JLsf?`i6!9BszD^>J4%$(xn)sWPreP3 zni=sFQ(_?ty;lopi{Yi-WA)J(^JJFk^7 zgV*rZv{Hh-N+Lh5+=M4-v& zbh?^q>GuOz8`6UrRovnjrx12^`7)!VnCQ*t?j7L;AqbXh=tp26b^g;Smy>WR zRh(CP9jXm>H#2MQh-dPiqPK#@+kW%mC)*`J;rWz7i{chFAstCefEN*h9~Ghoj@ZUs z#cWR3kTnIZ2zyxQ>guYu?+e2iL1cCCHA|th!Oq4m5V`eFjiiXVLHXP5+OEM*bzTuT{LNN1T>f8%U zM5JOW2)>I=qM2CsN>XU^%8Pd-u?^RIC}LUKXnFz1`O@|#)}<}T1^Q^uhI*Xf3}aUx z&VA^Po+G@j);w!YdsB(kdQHl@|tpH=*R<7)sJ zpXHBH&QD*z0!N^ir<1X_#U`J?(#B;W_DG*Y(<7uDM z4T89XyQ${m`seHDLH#*>)Yso*+HaX1^%HzP=Lql&Gn4}Japt|!eqS8gK6dtzN%?{dQwXsO}3YiTA?{^NX z7A}t*n5gJA-?CrLVxjUz3BR5kM7Mg#L)(Qw7*T=3-QvI8oAR(=0yV;3q2uGj3Nrn{ z#oB%BlAq+!fpYX|=(;F@LuKS3`S>N0whuiANN+4#G*FbB#<-SgECy~&2B-I_(6-ZZ zjm^UxAJ2ByQS~0ic|n!vwGuB!hCDrkO0Lb$bJQZ`a*j754xL?d8S2IK^o;Z%b)q`J zXx4tH&!C!pgnMHrH}!cH6|kCDuSyMb_Qp`yHH*rPOSY~y#c3Ks=?w&uApYqu{+P=444^Ssk9!y1zC=woygPE zcs>L?Pol6Xd$Nj{)z8{;!TOvPk^TAi_k)K|FapT}JXyU;3m2$53L5AYJBA46cn|)(~2$yui;}`2NqiU)ciS+PoO5q%h4N&Xc%?zr2evELl z#k&7qWxmB{yQHpMv+PgSEshw?J4ine*_`>IXCv%EjiZ_Lf*Bn}4{PVq~!&VYPH#cr5YwuMj!~omqAp1n5|a137>{a+-f?Y(671Ix5;~ zDCeEv^>dDpG2RC?S4Cyz;^kvkig1Fc5WL}k<3tBDcK5}rQQxo=K(GRscMqL79@$%Y zdv2c9_J3(6{^|j27P0Mnd-sZgu}<1^+MzVs8VINA88TDE};Emsv;{sQ=DR+ z?EH>eOHER1v2MYv5H`NHTU6!(&1u9C8aeD$daA8aV%H)mnY3KvT^82gWUwAnkn ze0N)Q)@2$Wu+G-zFiTYIPL4*-mxZwZ;$y_aCf+&8hy|&gQ2VF3PAz3l9QdFH33P}G%>9^PLA8M4?X@L; zGjlJw_*)swm0}0UTatoAtT$>KdoBIwPbz}-&0+ig-)yY#XAd4l(;PVF=#I5HI9A;3>lLAPg>&Btr5Usy%~O*Ug* z=UpmhDarG~5KdGW=)9Hg^9WQ~yA(U-<*SQuNO?$j*V)G?)(D}QkI_cB1YX{3XrP3p zPoeSv|1$w-rAxB^q>L@(vbN!D)V_Kh3hrDBM(wL*EY3QgVoBM5G%-~G@Jc74-=AFi zleKM|mzL(v_H!Tm(t*hOW?=(xlcRDxYdIWPeh%obi5AQRm)g`zt|3 zDx@nv)bw?ooW9j=Q3Fs~G>M@3-?{?iM8q^WEo1u0o1h;p2tb(mk_L&z%V^hsL*p!q ze37%FceMe2WApspWS#FaXB!4-*5?gZ*^X7?igJOvEXG8k-txlpi6>FZ|1wnKK6@Lw zNemPiQ7f=#{~LKiE^uG{t5=Sc3c`bs6kSdG=_B`-6zEE%!44-Z1S%M^W~)$pQ0B_{OFx<~=?&^HAJirtD)!O=6DvqC2%(BeZf;+oJzpwa6+TOS1a2$HMvI zCt_vwQdLdSQARXN)>Nj+?<_`Mn-nO2Ke(?3TFx0z3WQ#^%)(=YBrcbQ2}aMo{RPrh zkT2hnz0$yrpv0EQ=K6~A6p?umXSMuyJ>q?c#$JQQ}paucQk}NFZ9SVIvmm=a| zgb(RgO(8=50-FhsW>ABjKELULFBm3B@QupP7>1Wm8PbUFUeg zyXr;fO;rM4LK?og=94{#Fg2c(^5aQDq2P%9Ic!caBSD}&LFSkI8azi+Q_}z^G=?86~(cU!ex!2HbnhxZ}%nW>6jPi`6=*{`)R>eojANpcVw1kfg>t1AKlM zUs2c_lU7Zk3iKMM|C|{kVlh0XVybXL&d&<*M=o9sM!`}k9BmiQ_s-mUWw5`wGO0ON zTEmZKz7j$8=k%Xh(AZze zkn1AiPu<~Q5#+Zj2OA;)whVCA&$nml-TOY;i^VX8hC~*g5i3AT*hz)o0;}DwwV9l~OMBuFe$wq(;`9L|N zJEz1P0|ZKDHjVH9g#$~~nzA~mW}Vyn3P#)CR-7N!`zO((NAIt)bGaSnU2~sFch3Y| zMeoK$Msx-)4;2}vl7$^1VwL7D!WcqdpxwhX25XfEHK4;zBqa{Z53{OMQ`6!=g_vqv zO%`VXbJX&QZpkouss=Yix^qQM)E{64DmCkFrW2|9JaNwg(-~0t>+q;3~Eu+)(Rr48Mr%=8Y;__}$M4-|* zcf_1T6Exm$FO&gCHXGyxMj);xjpE;~r7Vx`TC<*hsZ1K!$KT%TM z;e3nDCUjgdQvb29dSGxsXxpgE+1g|b6Ky+NyyM3YElep!c^d2}#S#)%EvP4jb|X76 zyQU6p;uv3BfVK1Tqn`qgYfrK^)~b2ZIwp*pdc}E$!9qA2d#{H{p=N>S;&EBP;Dx0IuHYkuja8?$x@d!XJtu7VP9nf!=T|?h)W#UP(DzDmSR^J44p~}%`iPk+b@gAH>`m$vB+)}BEnXSS}SSR48_Z6%kwODoLtN&APc8i9MtFOZ_U@rws zaWf9{)%N4}gDLE~O{VK9i$3rH#nCiZz3%)J3gjL`Oc~n%$H}f9bM~zJN+68nWjG52 z@;RNsJSMIZ-h3VT{fdv`0_h8|+)VB5l`j>`r|swU1IA~g1MW9DYRSbH7RF7jGkgW+ z5&x6E{JHwv+hW+JNEqo>g{e`Ql%oLR z7IC#pUp-)rQ>?lH0hj<6gNBm&db(^%O3F_mOw8}(LB$27=(p%VzQ2r+yCV-&EQ&1@ z7PzBV4|byt5n-p{eS39zNwrk%FKYokG?AN`PG-S%SXP#N)yFg8fqPJPoLcaEwGge0 z|BOkKQB5EnAM7Q}Pw>0Wp^c7^jVe?xufW5=?8$$S`(2`%0v$&(f1gTDnoiS8P+ef< zj-HjawyJ7JmkOx)UfYmWN&4BQY-h&AiGVn- z#EK@B;nE2Zq)ugjdp=fo5eCMg*@9v1e&4b zRrhj8IvjTyxuHo&y>ktC*H*u(N?i9*`8Kqb`)FD8kh)qnxO;r2c^^l?17vTU7G02) zVb6ZOSM|N`(e`&aen?dNSy68Ha78g=?7Oo`jse5laoZD0uIX=mbS;&V|6LgUOc^bB2}mzYL}YgA zk}=%u1%IkeL4&^0k(b!m{*GT@<2@{QY}^fH+n@J5R`UznYJ5yk#X(D3woVe2S?sSY zn9(YRNN0LFYP}!=1xof>a4DXaaW+%`6Cr6ZILa7#GCM9`KM<_^aa;ip>vKxu{bb4C zPggj^^@n6$fjs=ztn!+@m%!{x`?O9J&7mQ>udLDOd=v6-x6=En^5I9xJ3iiQTxb&t%^6ZfNZ4@P1Uhr~gInh3OMrp-{18oBJ4Eq43FjSrbR5#zA z*4rN+o&1h?a4bitLCWSN1vR3i(K006XXaq0exVMada@k|8*t?C*d3-+l;C}5*W>i= zY6Opyl0X(u;v4*)qI30mt)}b6d{;o1rSCzj2c|OI?$JKdzFI{|{Cz z?O73vSf9J-YN@=UlbM6X)W5swxDqvQZ&}&R>FG9q9aCi`E9{M+?VCDH2APzhPNvKA zQ9WT!&J}M*LBhEv8?%7z{Ho=NGe|beRh4gFhdyI)15ztPHg;ndUji3*(~N|vF83vmCx3xT=AdSdCxyo{x@*D zDxxmTM&`g5SPJ_xqT&{JF<*y~y{cJ)9t&urE+n66Vt7V`0ygcchKw6a^P79qg}ZB{ zv&j6!7CFSOVHA;o;QL17D?_e_@GT@MN?U6#vL+{6#J1dy*-j39yrH?ovNy~7@G$#( zR=Zoz8F91<7iFwG8wy0o&GO{2vs1lLE;EH9>f_amA|;jFhslb|%h+-wzpLQEN)i$O ziN}(~3O40cnZsz$rQyuEmt-)tEHj`4!F(Yutd4_iP-Xvc6F@u3ag5t>PQ)>`O@UzTMI9s_!AZKI$C@09hFM z$&C*VYcSyUneAUUTAu7B4O7CeerfzoV~*ELS=XG}kWP4D$Q2Yes+F3XA)wlT*u{*rb_#%%Uz265kEU<_H@x-)v8 zilh667ENDUu!%5 zGhh{tTh}QW7vaoP5Xo^O-9l8gzKNGzb{)}mpMt*rAnb0mgI;YRDw648;vX6SE1ng{pMr~i|51w0Y}kQ6^6v|AH%Rd zGIu)Ardj>+B_EWi?b$QuH1MJ^R^PJ|msXa*h`4QJ`&z_rK_Ut_3f-ZO?FRvEfjD+S zM}9@UA3IxKXsaawc~9? zoo3NfOolN$9OqlT7m9!yXD7qcvtNAfu?$1xu1CeGl|~(=w|lX#dt>d6cL1fO5n?x@ zOD%%e7=VND^}8Kxxjv{@vUBr$kb7GFH7;M8pp3yxu0AjP)M`=q_HDq^zA@ z9lQ5va=B4J1#7zK?Igl)lzt+HtmneSGA|y+{suee7%$Iej%|3@0T7gYd!Ql>4$TL9 z`)k!{8saZzf*{LeJoVKs7mO9=?Akxzl{lw0DTewl-Wz>63v&K5*W@i7;MrGNU05=l zHZPIJQvRdgH4H>9_$&3QR_sofgjiRdpr3k5XTW`iP_+zg( zRVKsrm65#TA>x0w{5uMmhG7T+;+Va?i3B2YL;TMP_+bf}X%oiZ_Ms2fR90NM?7VOP z>h=Y*rk^l(_K)wl`}7kQC1O#}_bt<$HeuZ2IkV?Xo$~Ep-u|I$u4-xTC#?dLyyi)EU=^w(|O z!5F*x!extR&$KOTD4TuhjW;>xS6{Gf+Jp(GpRkA_dvV3eupK&fgFM+#Vh?xjGz+m&GDg5rI{aq(Pm_S67GF(BP0$bPG+Ea~ha>&Hy`I7o=T4tJY0MMP zJnJYRf_PbS&DxDqr%wxoLayr~med9UEy*pLHYoxGefrX~6N#vk&l`pj$O&kz3z^jH z*|V;?{(Zmy^{))W+`MVindhBn3K4u9k$IjsWy(}!Tq_BPzUKvVY~Pn{?d{=cq;cGY zWtU&|%kO`C%GBv)Wo7B1p=Y0XboBU1d-m+grPJqLc(LmhwDcnJWW(5TK42(hXVVz~ z;G7So)4t~~UAlDCsD{iye@XBNP?HX7QgN7+o6clnrX4Ad2*W^R1Kk~oS+m=EhenSd zuOv1#ADlgFR#jzrj)*bTj3Gm%B`4+=9nzXSp9_O&QY6i&Z3~Smy$gSvr73o z-w!Hf@>(GsiN74lFqIh`YwoLkGMdt>ADz!P{z3bI$(~Sur9ILL6vmn=)?fRTrG6l>W{A z4?gnzOJ(uc@>Og8_0ykNzjeFgdcKtRJ^9S_mtORXyYH_^Ccg5ikG-;LZFwRdi$s*x zj4{snP$si|Z&Of0ykqaabS?(~U;pVZZo2%k%g$Z8eAVh?Jl@{b%^9;yv!kbXe@kmy zSGQ#t-@fgi22$zIed~LU~IwTP+=3 zp}&X){kCvC03XM@0tg^|Uu%U7kx-@`p9*qv#hb6cGIR21-zf|Y_A>&bq2lSzEl=I| z8<#PK+PVFgb7oB!2&ti=?#@05$^*$PLy^+HoIY)`)N;-GO__q@gXr$*_a&Zq#(7;G zt-Zb7mK|!(6w&d*;jm$dvZ~68WSsP{4pvaaVwfFm?fredL^NaOta%F;`i^6oCSyp1 z02(=C%yjel>C>iGRaNx$^z{w&wYMCaGHt5wD@GiU7-y-$!E|ac8jAyCreRtki%4_9 z7oL2|Gmk&g-g;=ymW`99ObbUNLWo0$4hqA#;_7SK+FO71{qN2{;e?8c3hB#eD7-xdsn~l24nEpgZKW^7rtVfX33F|2uKGej9iFFEavqVgXDBs zMa7JHixp?_x(PGqpAwH)(umbGG&r7%i~(bTC=oIaoY}Fk!MI@=0Hmc<%I79teA#(p z$Bpf4@3wmUbzNP>gROMd(maF@Y~I%2*=tO#Gi=+iO`?(8dGuX_-eUe9S!iU4p06g4 zF8kt5Cx&eU5eb+6v$I zIp?-zDW!<0uBPhVC!Y>V20r=qe-BxfQkoD#mUZ2yKWlIi3R&O$PS zUSkLY5R}s4Q0SRgUw`7|SF|qCsZ7IIy?KjNa#%KmS*G#HfB8456c8w_8N+bsuRi^S z;{o_M-X+kQ%9D{^TPTNoQU#m6A%|+EH?=J8oA#UqCwN{l7LSct)T(Rh%92UW1(KRG zYtEvRPjMW_GOebjriM8S!UtLp-u?h%qTu*$XZz$iv-TZmw+yQYU@_fLl^9cBv-;I% zM~|QM>iVtSon4J_yO7V56jG{WdATlWUqP^fYMN$iTT4%OmnIrjR~L&!3;A3iHGqf! zoG1_^ppa$9qtVphU_PJk>*<*>YnJEvz?ddwfH9Ct9X!;!>b2!Tblyp)Qv0{P zUS3wcfA>aPgkO9536r4)+`oR^zAf7l93?5xT>HKuIB~`pCkBc%GR7EcUn<8brh0RO zf)$DfS8Ygo(B0J5H8>EDBo6F3kQq#&X{eyg_Sl7>VQHr$i@};GWQl0l^ks<>rAdcv zBOWn>9ek->Uj@l$L$EQmabN0T62MWMg%NTC-2a5N4JcEKMkFb>;7LU8M_ ziw??&|LaF^7&vE)^P?UL9S^|A@$NurXwNi(k2I+AL(-X2UVg)k@2{+`O{KDhLM|GO zEvy=U@+oIWqp|<2=~_2x3;=YkUvuD&2f5(YwROMx-oLGQe!1sKCFNi~pU(DK<+0`e z^x0J2o76)c_8}j6(Q&1uNW#daGfvTs2>UHrT}0`56DCf&eNmD$>MP!0KyCM_7d>bm!7-&2YhW9f9dxp}{@)X+fx^cgdzOquF? zZvCi+NmHlv_xHz}H}WU zSH&oXwyfP?n+7ATJQp}OV^PzzkEw;=uo~!*k+4vaR_bs~3{*-+=S8& zrMCVq^vsSNLDGOTp3Y?b!)lz42*(5Pal9+Q5c~R5j^k-CG%55|)D*Vhv5+M_-!Mch z77v9Yroj^y^Er0&`7oU5&roMj1mW}5uyYTv(KIoHI zEEI~_YkFO&trSj9^p|V7U zU0v^i+q`j~=lXUyJZ9R=SmP*}&uY(S$HI;M8SQPDh4Hm14Xui8UetNmX)a&`N94!A7lg5O)>nk-!{ObqDmckv&J+ zBqF6%FqKxiB)m$Rv{pe-lS&P1lWC;_Ep(8&q&7uFYWPf)Qu@y}0!keu7=Q?d_XMSM zAYG@4lvaV;Qb5EG#Mgsdcc8DShBMD280Dnm3L9C`*Cu*~5N0^+d%jPa01P1jnGmH+)QIZ~6T)>JK;{f& z{FdH2!vd)pB1bgRE{v`3wCqSs7vgcnOw^>c)<{I;I_{Lo;{h}>4r(ONiO5hBNyk9| z#(*)Tl2hSf@fTSzlakU02(+KEWd8;Tq>;4r{lzDq{K$j%J@Lo`@4fbh3opCODHOC) z_2b4(pF3~H>^Yab_gdSsJkK)>V<0o|!z!z9XxhJT?!rYtS{T;B{mpN__G)=$ zbxn13A(K+7nltXY{`Q?anJ|`|eJ&b?@B71J5dvUJd68H&8jDKlOULsNA6~oShJ|CR zYesM0v?pd`cl)7f^G@jL>g?<7o;`owk_8LbJ@Hb}lK?uK>8!NE(dugHx?Zs;JUIe0Hed<}JfgC?fH4Axc_wjPbndtbXwo zzo?{A%n+WGT$AsUVB8}e8C7R04WOjps0{!Gz=%j`Z5m?3x^;_BJON8KzA)^81dJgo zaalROQK}@?{XC3+a@_ zMd!hT&AWCqG>odNKGXBOs_N>i-}ipUbz+f7G#+>IIb@8qN|cwMcIKI!bJufYi3AtI z_x!T*^3zX0v%R&|w5*9!r!dB}(hN}&X;PfA!T!E@JXTp=W|{^fX7icdy}7`h{QvpX|L5%RzdaECr=8w%R6Jt5Qv)y} zz9ou#97hQ(S#rKR5Q&C314u-7^!IcX2M1+g1~3#B(_|P%u8{ZK)MF1ky=C2-0yzUH zuPlqk6X%|P+2pw=YORqm$1M!?_xir1z$Q?W^i*J8hRED(-ZxC`N;D7*lN={FuGZT3 zJz<+e1AT1r)PSf7Be8>YK*ZHrX|1_1Om0doTblRRHZ&Th87!np=`-Sjv(l0o4##nZ zTI+SjaHId1Zl zpWbulIp;4s<;*jc@7p2!;QpqK8`d_C8!vsCO%04{c#jZ#sK5V-#~!Y3Xw*`zU$^?b z*WX~7rdBGLrgO$}xpXF-s;VgCTnKI;L0QCPq!SfYshl%$%9K$JqYFi6+Kidec&vj{ zs+ccJ8M1G1(e$}azBtt1)7joN{){usbiqMnc8H3F#pf;?NDsxG)QQ(!?+@lik8V&y z>6ZH+O1E{^UU1&RGtV8|w0)?307gfS<+$`u*uQ_z_-mcye-T6e*A435ZFuJe;2{5g zsJ-Kj^&1UC98(s?-yIk-$8+aTpFV5q;7t2|<+O>p%E*C(TNa&os&9&>-Ppve zGsdLvazijcq!JM{pvXvHGRF7q*}HS|hD)xznhQZ%BQn#nCyt*mcfrEu{Y_gl)sF%SRr(_pau>djJ`bR-^$KC#AHn z0S_bPl#Y&ouIm?yPAWAdJ(m=O)19NM^t9RYWUen9tK-7#@9Wb9oM=OPTS~iCzUtkw z*A9nlJEU9}?NEPr_s)kOKJ~Kq&O2>sZ+CZA`iW2|R#_cyYuPTV_q2th5%#Xwo0V@?yGo=kh-U z{Qe{RIFw%eBQkIQ*@wJz_W~Es;h&GRXoN~s;bM9Hl(!#%2Zqv)>%}X}B1vQJ!iCp; z>?6PZ@el65`|evlUNLI)nEktUzr1{f6ftDNB`#grGf)WG7ItM`eg3hrQ)WwTXe|W? zMT$jZU0U|{cOel21fK?>&{Zt>ZZV%Jg5p?^Sd}EkNE1gi!{J;uH*Wj{(=wIRfWe)> z66scH&c(hxd)BUAy?xu(zJUS9@xt-g+KrnExlAY&TDxxTlqpj#y!g^_6DRq;gFNU_ z7<6*OFxom=w{6%pFf@kJC1iW-gyByc;lO+-ubz z(ZlOal~Rn0?yins{_H0MgDF5(JF32J)R?UsH&~{1;&~VD-@Ch~r)&MDEe8)C{JB^rvjg+ivcClQTmtr1xvUufF5r@6VQam@Ix zr(3SM@uqM%LP`bauL*41O2lGXNknQ)#N%UQ{Rg*P@}4tms_Iv-kDh$y1*udvo68g( zucD&j<$La-=592Q6LMr6kpPD}df0*Xi%vhctF~&_npF#H%jchW(e_=tT79?qk9VGO z?gim1FWOL72423=@zY&>3P5qHm@vAl@4zwqI?$htz5lL(!$g2%i(z8TF>3jLYUb@8 z=D!-v|1HwxM=`T_3-7=H3;-qGxeh4fh#-Ccgt@cxg~IOr2a)08*)wzb!j7hW@mTbX z6BmapYunzYmX6Mbn(8Hs76@LFo$K!JZ*FNjcge{@a0K*xf7_nDgXy$k8bDBV3sq(1 zr=PG$DYaqy&U7|&)+r~pc69A;X>F{pojh*b?)}Z3J-yQ>O^ijuobjP_IvI~AV=<{D zBIAthYiZfN|3H0B^%;v76+R~^ympNl315B9HO&W`ANu3nL;V8-ne^k2JTz|nBw-m^ z6XOt610lnFHobTEu2?*=Y5kgW&cC3hzQOlh+cuZK{DK4=HLAgNy{%if-qdhQBAFQI z8~DSof1!aL?C5y*xhHQO{Rtp4O>_I!E$i04Ic~zF{Y_1C7tFuvnj4hog(CJ9*IxgV z?|%E_Q_px~`HSgPIv$IAQU)0sj;NLLeBUwzAeJYS0-5YqOBalJ;nn>H>as*+_QJ(L z-uexj=FMNU>&;a|Y`wt+K&jFhlr*9tRhcv$XKGDlcEb35TXsyZsAx!*xtzC!tyO!r zUFj}ceEvmi)~uM;Gmv_51&i3m$qOQ5YI{>H$MD;L$lm44oyUna|ND5S24FaxDu=A- zzxfwm|LWv%V;N(D^N)Y+8`)g$yZ`)I0Pv+0 zoImsG>%V>A;qQLobHNrvh(qn|w|?nssa#GgHDSz{AAR`?m1RlGH1oycwV(RzN3Xl~ zP)Em&pZWY}KJ@+@F1`3y_df9NKmXO2K7MO=-@xRtW7cim-dJBZf5x<+6H6)o{TIIu z+xE}@^()~}h%t7kqx0s^eqsKM>0kKhht7WA2h!QxDGL{T=$fm}yXk|B@j}r#ZSjKd zfARB%5Zm`Qee^3|mr@2&EkvNT)|wEHQ6wfJ3`AIurU+hZvTbpwEAt=stSgJzQt6^6 zKlR=P^_7wD-m^9qwgks)!T;>_i#qyqKYC!Jl&YaB{?!kjWLrkCE^ve>l>@!ai;hHN zrfKB|202El=w!OPLKRWYn8^*-mz`bxz5=Bcnp`R$0ZD2iDK&5F&t=jBWi{gzh$(Xy z>@x1xnuK7Z>uT!8)b8JRAYaU-i|*EK+nNp>xZ`)fuCA*K3WNYjN}11QY!TYk)ZEqG zIdRI2l9mD@0V=Hx(|q-X=hm!R&ABM6toX<$|6#(o@jJF`=7z8=J3TNsZ_d1NW5@sQ zS3lpgXLoB``=<4)PdW1}-}4X+WTZ()?C6@EJGO1vTwPm-rhV_-cYN}*|BQedK-lKe zGtZebcm6<6?;XGWh3mScbtD$O@`jrgk!{(AVQSLI&~=hBx1hGR&N59crSg45 z1g*-G$&*h#^QlK4n78nRs+t<#bAxB{){IeWttpeurLwu+?tDRo?tOaij-9*CU3UH( zuf5#R+HvNYXK>QWDM;VNfXqz<1X?PlRciB&vUzhUmvgpko>w<|`GErm9=`9Q_kU!Y zDR?5;PV)KNf4881^hxJm_S(xYjLoL1?fUK)-l(28-87Dk4MTvwmTkpMKj(jeA;I4e zh+6rTV`qnAl|aYLt49+t#NGRw-`un%WLcUh2*$x6kq;|9A;9n|7%|2eW5Jr5;KSlp z3`a_F7~_b6%r-K{O0rp;v0>Ru##rzcXDn!+5RmbbcLHZ@WYflQzm!x^vs+*vAUvSR88$4AAh=`y2|mqTmJdWlxfArlaURwUE zdml(fV~_sor(1UKz3toI8`Dt#jeq*otSOUn#X=^RPi3>|Y&MLZINJhsxNTU`8@(f8)caHdIC&UujLB{po8LoIL)rQzt&Se6QolaLCZ|$d5^MOfJ77nXnma zePf+r@rkF;K3K>`H7TO5o-SYeslglrMNJ?Fj!jfyg{3f5Met3dJgqAuE%#2F^F{ z-2IK8{302TssCcI`zNw6e|k#88CZfqb7NS+4M+AK;p`(DiCc#W$zaI_1F_^uMWtbS zDaw^xq=H{ZTE(E-5&{Cl5e^N&Tfs6A-{On~5?;eP*Epi}8pwBzI3_X9f}9%zWSj*T z#TW}nMS#dl$}fbBAu=G~oaGC}fBe9WOHV#g{dek>|2_V%1YiI*QZ0)JfMGkdvuXdq zw)XFS;dA>AwmiA~mB(LvdC{C%oUY#x~STr3k<>&7C`UJsS$SzISwktp5t6 zkqfuaK6)V`LWH6tUs`v_5Nv-(>cr`F4AGPNXAf^efU2_am1jg zC&P}fj`Wp51YGdJ!J)^Wc#D@tdxuIGSlIgSHJq_vYRa3Mlgcf&iQommpe!5?N29*)E2U33Ss;a8$10VXxzNWox zhYrk}J1>__GscwfPnkMZDV0j4rq7u-Vf=WfSP;TU_YbUFyXK5@mKAgP=bwIR;^Zl1 zWo3q8?%lIHo5^h7zIE}bXBeSSI-RPhsO;+M+P-I(=Xsf-A*bk$A3veGy4v?;K*9rL znQS(jFGM2|L>NO`HS6Mwy3@I_lcr`}H0;p0iIeP5s8}qZCLX+LHIUZK z5WZBXq+to<=FqOD%JE~a{P0J9eCsW_j@C#xil!N@8+D+!_q9jvd*3gAv1j}2%xjw( zIVU1u1{>BRdHWDn$O^^8kp^J;lYfFqX%L4X;P4Zbf`NvSgcBa^_YRQ(veJz3SSHL7 z04&oiOT-hgs5*=m`sX{nbgb*U=GXPS_z;q$_vtbxO;7b_@ zV_K%cIoDd#pPu}mJZcDzTAH1w(wS5)d-$GzIsWeiU;^?zsgzPmNu^A~7|LXB`rH@J zJ@w=>Pdwo>x4eJK_;L3?{Tu-7Z)weDvxZ>|rPD#8V^8zJ*;6Mc>5G=0dD^0d|NhxeH`LbL^Y~Lm$9eyi@5yAd&#zc{&BYg9bIAqm-94?H zU6x@G5$8-W4uA|9=e(4zArgWiU{!fpFgTP-?QGiTdfw#m<0_KLpt2(<nFW9vd7?52iA?e7>)@ z@4$|2$$0G9NAKUfWjh#_(vl-g96gGZ5`s5WSB|bM1IxHV$h7RvuFlq$7U_Fh zOVD5#hV;GJbLUN+IZJTEG#HUK1P{jE(s#42)6vmBci}?tH6Rk9FwD;O_7|UdYG^R^ z(hJX|2M5kNf0SaxK^@|U-6-$EMKt$h8uo8MnvRxYJiQB^r-(Mh{@Y~w;)cFpx= z~o$`Pd1kow4kq%MR^t62c%LhODBjTnM9^88tO^QkF6pB_0_O0A;iJ zx|(VPm_2FSrp?VmS^3OkPe!6;-3PiK?HDNJi(%Vzimq1Fx&KfMR7ZXgfFYqGO;X3~ zP%IkP0Hh?hLpxr3y`#NZ`;rqd!L?LEXfqm34-TZ-+QQ*z(J2U%rw99$Pyv(t*h~b2 zg6m-+!@vAfh#-bjqYP0gt&}o23!*G%%=48mwP`TUSTNi4VSY9+N& zf7x;m0&1la@pwg9*>H6l4yIG7TsBySBN{e+LQqO`WXLd(rWsB_mzZCOSajTwWlfzh z&hzDgwl;$c0t(r-)>1woIbGXtj)UZrj#T*Qfkn2*80* zcq)^fJbtWg+p$P^RBg?Qb?dKOcJ2+AU2^LezxIoJ?*GYGzj)f>g^$0q-1Gf!{`}Vm zT3bW54T$q+Op{XnecYb>3AG7&FzEJqe4}aP}IP`(5uK4(k*J@3I^GuN@VCMGHUp-YbszearP7dh>zprA*6_Lu)FF+5i5LQzN!P0D`lwfxKn# zYtNZBsyga=Dp&Lv;z={>-+R{7O?!Jg`}6asu_K+YAfojBs`|={uKdv3yxy;W^22Sv zdtm;u%gpjvIP29-oT&2sVcW`TK9tE;R8|5s1LKTwB66HO`+t! zHSgGp8tqu9YE;cj&pddjxlL(Oq_RaPUl{Byuin9X>Q6Hh&zBTkw;g>hsk5WzAH(=>=Q0s=B3LWC2RoH}9ZG$F*a z88f8k4d=}Wh?o#0M8o)TANq&SM8hHF%Ru<+;GyOPC!Cy0rSrM$!Trr_5>-~!C@If7 z|9lzPvLb3J0h!i19I|fy;H{QrceJ;SYHTz(cU`BZzTS?69oL&Ncdlvh+J<`1^@d|G z0BK@bj}wTx6Ix*L)k_HK!RHj*(>%xTV*)`~pT+6wdX(W5qjH#47|Ja=|a zZzmCH(x~5704^B@9Qja`h-`!JX&Jop*_~2pU+Vg*=!Y(u-O-o5>$#moAeEjnru@B2 zr&J_D2fNaDKC{#H<&Dc`OdeC=`SPg84WvnHO?0$T{69gHM*Wtv!e0o^ST>t~?}f`g zbIbcjHvZS59BN=;E`_xb=%)D~rbmGg+-E5)Ks$?#JGDZB<#>m%sm$ zSTu|bLZMJ9lMzCMZ9A38c)k>zMI#Zxxz<`R{+n-p{l|Z}`~Ih&tt=}`XL29D_UaE@ zb@|8%f8o17uuSV;{^8?6H|Xl^{rq>nzoTitZCkP#?cD$XX68vmK~#UqSch~lXgkU~ z|9>F>6Mzun(HCC&-WNW%^1*uq<5H{F)~+iQorc<)l@H!Cl*v>ilRy0Zou21grup0- ze(m|b;C$oG-9Nqa9w9_yUF{1iR{r33cYN_7D!bpS)n+);)WD&)?D1bn^VU+xG0yS|<~+ux)EigpiEKZPQ|$WwP0C z{o>dE`sq)ex@ch}9O~-pdvWEP%T7Nn8IM<$mmxxBc`^}=0ssIqkI+eR0o|E1N@>m@}!$^^Q0NJ$%0O_C*(vF*F2OhSU_Vu9-A{-W$(9 zvu)Fkg=e1M+1EQ~?%X$5uH}a9D8%D{MYWjiK+MJc6~WQalFkjks8t)4pV zy4Kd#fu62uGw0+oDaM$R@`NR4yt(rA`caK%oPADLds|sqg_aTlv{X1OiVpxW$aeu3XVLX8iW;TjnfSaK+U(04OE>Wfxo&oCYF#o*OLl4IASjDHV^}(wD`8Gmy{j zYwul9$A9y!>z{jRZ(pMBhFd;mhGMF1$(#LM@HdK30GsPlq!OgYz zh=hF%iMyP$Bb{6ZN}~Cq-`<+3jU;ZW!oci(&YdFPxkXZGfuyB>V@g;`T3pSE}b zXDpS;-T%z9#iDcdh3AiHXt?5I{}79WKY7#jr!8K1(-oIa9yj*J%P)On-G)!xbbWau z@zR^C4z#r0bor%@=Uu#I+n7=HEghXNu3Ytz>#pwX>3Qz871v&L;ryA?TRXZQeg4IC zE*C8Mmh#D^uayp2*1`6Un?C!`A=+|thInDd&4k-1^nKDfuVHzyTAF}p^o;-vg8vlzd}U5FBxODWv$$}`SOo`>ePh`gy3tp zZQs4WxuQJz+-oaR+3eaa+bYVE&%gFYI+J^I{Hx03V+xBceAFLTi!l9>Ld2Jw- z8b7A-<&~?mxqOfY39fX+EBhGTH~LfC?IQysdcGQ66T5NQ3{#*c;EXAytI9$jym)pp zY7vnT%<|`C<8DamD9+dp{%^zFwMeXibpKriTE*`cgOqv{xSb3jmV4R_07^InHSRDK@bybmQRBIL3IUtdi+AX?Pb+WcHSz8`y zKG2-*ZENrBYHr%~+#~k}MYJK#v{KUdP0J*1j&7)JsIAO6GN6?N&w(Kjkd}TRm=(x9 z2P5&fu6LL%BBe_u2UZ-WqacwMT=ez!u3x#TZ*cIbCmy`v=37oV^-SM$mC`j;)k~I~ zF?q)Hf$namlrRkGdkh!>Arb%!(no-xq)L=mo_x;v4WmY%c-A>W2+wmFFal7%Pc+Pg z3HW!UOG6?=U;4d0J(X3phG~Q>%k|vejB(H7J2!9LId8%2M<0B!u5s+Rabs$$YaK;a zXWt2EwKKD~udBSetf!?%N@AQb&Xn>LNdnC|4)pf*WqOkpvCi%;gGZE-ibyAc;=oK) z%0t0({r!=$x&y7Pt5>cHl{{#V{tH3KBZFOrVI0|Ox5N~JMAW+U)QM$rd)J}C{!~E| zR3<`KES;Q)Sfi?JqMh#1()(Vb}FO zb<+(y_wB#^{)aw#{Wb5sXxW{QJpS?bU0+jKxn=jB4_|xr@>Q!Je{nfSW(s4=u02;@ zbisE%|Cv=AH-GOpf7svJdd8G!frDFi?E!>v$hJ+30J6FK{ZBuuHJPRnjYRrW={p{Iykv?Fzy*(lLU%s;L?j$C z3;_W5J@qW-JQ@jUO|fvet-Jeo4?RKvA3<_uld77<92qQNE26Sk z=z^2S7aSQ>H4uT+v}k&r5Ul7*PwJy#G9yD|Z@1in2oQ@-kqO?pd8f4PJ~!3&>MPEu zs>LVWR8di0aNM%8@_7pvEPwHJ5w6f$dX9&Pj8rnlX3n2S%uq@ZXRa$5pwi0q{3yzv zuC5tVCWmK;haPxv{FLdvJ?*XSt#u8Jj0>SjNu4Qp91%@(*R~x~CtqAt*|&^Sk%sA- z3=XU151#mNUUXyx7VI{XEFJz60b}U;{=tscP$YW(d#*IYk-%py6birg_#>moPf)Hi zI54=NEHmfo=FUteo9XE49X&o-URB-R-8Z(;F0ZQE-`h2~b!)cFh%cB> zUE7FYH*eXmfIu)5f@wvH`a652lvUL=Wfc|e$=*~;MssdP%rG~Vr)SQaKlsu{U&%~& zk3F`^_vOIgU?d!Vn*mq@w|r@iT;*T-xl+MQD(8IS`^%-$1y_Fdx`kSUFLf&Gc)qGk zhD?E719^ipP2~HEF)RkDprfLXA!06<%N2$=9K!%imT49Wg<-z&5u6SY8JtfXGnyeH zW07#!mvZlcgJ1goj~30IMMOWjTCuIGL0 zm$$cdbyt>`an2uqX?f4Uz>Sw*cEz%DZ@m1{4}AVht2S;fPb8jx<@G%W4$Yo2X>@(P zCQ4;3QGEGgIBLe`A$OASr zGOe{`nv=$kHG}|!ux)G7jIl^K%o#5_E&!N@dGu-JBf&d004uE>&of=)@bXZGEE)*| zfY#b^T>wDDNGJpVMC3RQ4F4J+nD0hHA+5A46#zs+AtG`e4*+}sM2v>R0HBH7!y42| z6{Tc|(NIWh<+?I#+cdmSkc%$5?uhMcEF1v9>=SxKLu{s` ztCf8F*UPy8LZ)@?q;Y+n2a28TQzng_GJV!S-(Xo~g)q&luD-UcvZk}M)Av0l&@#h` zXk^j6nJ1opUeQwwxtq(TQ#l0m^M1N-=%jNO){h>wYSY%*y1H>wW(^L#Id$@^_gr`5 z>n}c~l`l)-lR1uKbK5FQY~H?O^q6rFh)@It6vK19Y zvwG#Y@sqOI%+8%#uf6FOLkI|>j4su21ZNiRc-FsUb z8X+7>92{&W-<>#ZY^6Qu<8619?+Bt>yXlr71x-YsxbeDlE|-kQLbj!} zmP%HYCjn4vjR;Bwr9tTVzG)iCM2tWeJ@>1h`dC|M*EOH~r^@oOXMXpqOU_!_+1snN zW(>do#oP8BI`q;TtCW;dsYu9{N+F_Unx5|urqi79NGSCB+I64*&i7_bnR4mbOXp6T z_K`3Dix3mcy|F!YX3&26AjfCv64fT=m+e|(ET_YG=$D@%%EOywX9}^$|FkwcLwM_88XGwcR zRK9CR%im5TLD)A9lLKNw7Iy5f4B>!Q$hjnPhKiL%oOg?*%42rUgR; z62f4Hk?$S!lL;dB)&qcHW5Ho*0;0p6=Kf@Xa9B$l|9pP}0;ZL6^7&w07LhSz8o+m* zla`#edezFBy83W58ZykX@-pA`vBcd94j+`sFyHg)8pp)tb5o7sx3vzuaG&86Jt4U7Q=yRAzhj?O+vs;T z?`diwvwY^{@v%@$s*ILOn;IAbP*rUm`1*}E)+TCNmdu}o)-|d@fc|XD5W^(zJD~N5QeOww&sO9e~SQI zh)17)5fKxys4pc$CO9_@VsdG;~`HT}6 zw{~{D=bW=R!*PwH-dMl!(sR!GrVE zQq7n&@zs0phi! zdFrBtPycq_u@Zv$y9QBk$;XU=HT*VDRE=43g3#{EcW> zsr*j}I#gP=AHJFqJB;9WO$dzPp9v#rqDVM&!G)J-DE>F>QZ zdQ@^$2-|kQp){m>x|m@wW=6tM!G$F(We6$V{=VKwEY7GyaLxrMDTzqCjwwXgHp|K@ zD=Mn`xd3FOvwQc8oFnGVnAsg#k3K5L<%TgVsqpr7g^!99fk2upQ`D44@{UhLQj=lu zXvmC3%x6|MOGT3!lh>U$4FNuI@vJ{Qy`!r?|G|rA*|u;zdDKPtrL#R+58D5>!6UqW zO=MZ-_NJyso_{f9S%Fv|qTR9eTv;X59F>`+_B*-K8+ntpxn11mRds;MX+T~`;4gg*3z zuU>b_h3(zlzx?C--qs~K+<&YlTX)HR&ve|SuR)D(X=lTwr$G_RJ0t|-MMeyBhSASvP?j{>#-+Z zTDdwB3H>ibUw9`5-~fmy{#Q~2|CfOyR`CDVfd~M?RGf1Gz=dfTI*qQ+c;8?@4Hf$O z(~b2tV@8jvuZfUWhGm$BX_yg2@_i41d{xM~#Z=BS3{w~eQ(Ah(h374sdHR{!ajdW{ zjL@1DF9;znzWzhM_|bPBU$MhLuB6le;b@Erv%9Bz{FqTiAAtN|nj7c=4WA+4TW4C@ zL@bPCf@C>?sV^pWj;OBmx2?&;g%WFcip$wDMd4 z;3e&X!=}C^MtVTP0wOI8BNj_&DH#`@RHh-$z3>vpcgBouXnXyobL+>twbl3i_y<$R zOs<$TwY|HmtM#DA{7f#JOAQW@*E7&tB}^bftr>x78WiTP_8bQX`}>=kn=l@sKGx$y zZM53pK531>x%T~Bj@x$W-W{u6QeqqYr42Gf*H@Frlz;jCCk0PX2S7%ix#B8#P=b-L2r$fs!V{%u5L2nkf6xil=@hr{#Ow#nTMmyL6<|c^i2%qj zL?j$$oLQz7vaFYOY#m!w`}u3$bNa&BziZkt&^x$c-MU&PWJ_}_WS=&AO50F=N2WJ) z((Ll`3a60ovJ41>e}|WuGlOYv@Uu=@oGdT51e z;Uo+%M+cI_y4y{?S4u}M2 zp6gDYFm~dM8QEfy7#6en+`3e(se>ty1uxy7nw^M71&favV=}#R-!97%1A_yvy!>Lc zyut@Gv}OQ;As509SyLyBU9)o4lBH)0!`4cbWNY7=nZ8xxGg91AI`0u3T^xzEFdTYE z>TyRv0f&g7w8Z!)ftd(E6R_a3iZlZ(&6>5QKyzNxVe8F-UltAr>|lo==rD%ly587H z~qs>g=NkWOaD_`0=ePU-Rc7t|UM=@Cyut@Q|*|E*7H9jx{PjYKsZkyg`0!vi2BA}M8X z163(b5?>Qo$Hwj4P#(83>@Xl7287(^9E`WMG(v z^rceTFifo^5i!O+-!mBZr8Z2#8P{6-o+k_uFn|~`9 z3>n|FXP=u&r}yqT;j}Z?KlO}g?;5nNTvR9~(!MvY;2zrFT3tW3kj)Y+T@*?HPm!;~ zk??`N`?7;wRyeWU%lqI}F)HitX;qG3R83Rnh2!vUCRBq|SYd`l_^0cb==S&!ULdh2J> z!;K!kr`96}Re?}51{QE7F-tjIL7@+iEN#@KgKDj{21Fo|S|5IT44LD)bEZv&VSdsP;dlT(j&}t}>kobIUnWkP z^YGWcddZj?t39^c&X1D*36m$q!(5=|M15UdYu9cao%0thx?uUzo-gPd;VIUBCM|B4bM1g2hAj zKu@=b7VB#pCr_Cw3t8K&bA1L{$D+}Eu>i^^1ddzWn6n3|S$cnK*uYZ+A~J86D^!>>nD8L}TMd zk3P`aCODWvH?g|pd0$g~f<`sV1q?3w3Xv~u|i+%;xY z)J(hVlILD{a^OI3-+|s_S#QFQTEant14AHEN;ZsdtV`6T4h;^r3{=n_oal`sschbKx5KCE^cLy=#*yAX=;_(1{9PbJs zLx%k9E3ewTZqdJ%W9FZ};=HZ98E`QN5O{sKOUthsV*>w$1zOp9eC^Ex}qn0QY zCXxvrDcibr7ZFVv-`IZWV0%Zm=M+yp>EzDNj;1}kQJBfHO0A@2iC8?AN@Wna?|Yzi zG#Vb)&~T`|BbCXQm6uD;@s#%cf|4?sELTcJkWWkjQ~fxbS**)+q5*yiqi`*UR#4Gj%@oAwW;Qsue)_%UN$MJkhP zsHsU04es8xyQ95z;R%cPH8pj1_l;?+SFYPRkkVS_2L~rlo1!%qeVz4Kckd7)>lnxk zWc*k-s+2m|**&G)Hc>P^`c$H>_B69xdxdab*=x3(ZC1L5#ThfC;RzvQLJJOBbIWkL z`cjWPzf{MiZ41jrhe?ygCeI8t)JLX_4#%R*@%BIVFxDi`f8Q+tN8>;9|HV6nSn}6e zfBWwUe*c@G|6%LVoYMdNnYY(I8+I=~QXCJ!$MG%!D&-4d#G=tYUnOTxt8HZ)o_+xg z-r&+1OHMoBJG-_%8;L~fH5)souA#Sn!)q_@-x5;3WDE?$wnI_$eGUwy4##4(qw5CM z%qfc&7hNY53g@!feY-ZstLnzhJ#qbO&%U^;b5JlWvi?j?Ngqk|r3MQ{uf3-?60!@~ zOj&jH%1zreNoGepU-b_SaRz$G&1Tb{A|NOh98y}U#D;-E&zJFdq@%6Hjz&1=5j&j9 z<$4DOLbjdCW^Ge+_VqS2)ValME|>RQ_fTtr3nmafrSmy71dD_WPh(GCe>7xs!Q0zg zCpOe-{eO!(Py8RY{-1hA#{=+jyepu!62j>3?cDUzOVej8 z>~&#Q<(Tm3nbjwpoHUGRSI2bp>L$#|?%i8Gc2du#t+g$^SG?!ux(O3IR<1~I-DZ%X z^Q4qjh6a!qvRFk;VouHCv#+_nr>jG7h(_YiK4uKG9hy6C)Y-E>l)3Z4XSR3b&2W8v z@?h(sn%ZJrndL?e0>K%?EK7)@a&w;RB7)8MP%0gXgni#1C=A%PRV+9}z&Ri6%W%O5 z1_y=)Y|FBX#Q`Fn;@l7hAm)ph&ldy-!?L;#4cV6AYdzRi00dzQ0Q6iRS&0h77y~3H z!yU&bp#6KdA>&HvPT%E>YXD)0z8-4cyUq2zUd!TKAdzVZVOX3IFurqV8|Msx3fWFX zv1wfgB6@BSh+^^R#PMS^HwOlW9M@afbTH+(G{VHzXqpCR43sp+jj32TR|v+W>Un8} z7*$ujXs(}5^}o0RBu|`vVq#Q7YWJSLH`Xy8syO%T~;2vh*2Ah&YHhq)4DAa-*cLXhQ{(xM2p;;YtFdrvV(=7UY6LirRT{Gs}9r0Lf+_-T{%Y(fg*;Lv#EsdCye$=3Pahkfo$jT5BMibITOcm+^SCvZ8YPf&Q(n z9ZU$VH821`*Y|0F`n^%ZsJ zoy#L3>3go{xsF*mXGY&6PxWltH2wNZ$2X# zbnC%ppJ*_Z=7>H0L&;?9>{CxPO)yN$Ef)GRUTtkdMND+|^d9W!wm20q{LTBHT{L4x zDwE&4Z+{PFE6aFuXYZJ*_@suqorAiwZxFym#*m?w8bJpYMF1Hz`$OSaj@ckJAOnrS z1qc(Q0%X7dGyxa;`m>L0-j&bgTD!X*-`!l4iW!V)P0}Y)Do~!J6p}_DFwBSdzU;Xg z?PR>HESt$Ko;Kyx_I(Tx0hR9y!6lMFP{cxI(Qr7_{mTCKEjwvc?YO$K{olXeMLz4( zAI=vGers#%uYT)acSX(8C56Gk?5nH#_w5he`u@rp&91p<9@$LZ8yi?9>7(eBg@42RC!$G~LNt)QSzqx$zi50VE)J~r?*w>fp z8>l(&yyWBw?oglfi-sjk)65QJ)2%(|DyE1F&NXPq7u8hy1D*%Qja?XP} zv|Gp{3d^>&9AbhIBhq>>H7K<#@97KAofWF7$>3h8Br&cUYoleAeVexCIy*;SaEAQE zhaF)1?tV}tbm-dlje4{y;S6(sd6cCKuLSo41`% zSvk0RZU2TXR#iEK&2%bf&zTvE#GI9DkYT}ZY3qr~w5d>ro%Xw8Kf>g(#;y`$WYYeiU0=k^_{ zJnckhVCdlYe}|SxPM>CM+qQqlA#y#pzrSMHS=F=W_1^PnLr&&J7;-)!GS0a~Hkdkb z)Wo%~ZAq;;zzsnfd?%Y0xhdCOuB_0?js0hyc-G>@HZow00YlORS~XUcy|J~awz8tV zrMbPm%XNL*)*t`yhkttKBdOHD4xzKz^r8LDyJD;-m6(?}rnxSu zQ8I>vq%~0B|G-M34xW!f5F&8{18D@MfC&(UN`VGa1WI8^=72!Cz!(Y>K$9e3Jdh-m zAVDx+saz`M_6`8yz`^#)x=KdTo*mn(Ph1$a!a~W+b1!!LJK&d2X1wJy95e5;GKyfe?NCpf56$TQ@ z9tTdqHK0ZUz>)_XLo;M)0AQ#A2mEZlG3v~mRoze(HXv-70i#I+0)oLwY0^Y{+j`7M z<*W(;EK+=wO0Cy$@fGngOBWjT;0$ma5v!6K391!teeg;??CMk3#|BmILz5sQx> z)5s7H4W{pVWz9z}J-@B5|34mkX~x)5^~vNj>o$Mt(xsE?s{XiQ)0(|4OmOmjLKxP( z)BsSDryN#%1_EL@oI?&QDj5(_;7K4Q001Iz4nQCkDh+}G;{*U&V<6y%fQ$nWC`}rW z7yyH?NtvOmrjD!MxqEP5v&jvRKJ%4nnP{0j8s>%pN~yjyC>4xSKroI-QgUv1o(ozt z3A`*UER%AM;7luRF~PKECXXe{%*NOyxBt9m+=OH3%6A;c@xP4Y0r)un&w~I^DS6LV zZrS_07cg!5QfW=V83-Qu`UG;1XmTO~OOVuv2#DlsMFdESG&2n%0*;cAMg{5NJJh`ovT!ckn=4Hk+-ltC}`-!lBkK*YPHdsU0e)%{z9DuC3nI(skP% zj{)OA1cnJx0uTy8(g((X01XSY1WmwLVCev)u_QB%5O_fl5$Azp5-0@>kaGY8rHHd( ztw0Qxdy$LMJYGpeB+da5lmw*#2n+*&(3hkLkpUAJvUOL-1yjaO>h2jh&>S*MrZf@> z!A%t8D}ys+2#Od6hXEl35tWW2wILWO4N?itk#o+$6eek98iFG;k^AUgc-PMx=gd7G zfRE#yi{mNie9S_~@6DV(j{#-xYGW@<@{g1;DuuZ0!*OgLjfZzyKH!5JxRF zw+*QjaU=lJWO1$u6lvmuh%}-W%wvopZ>WgRnN$-`CS@)!VhJDyz5~brIWVS`V$le< zx_|VW2mkF8H*ej#Z+mb5fu6z4VA{6LC!b$2Zfrw3lRI#*?PqsCQB_g)@ef|r*4f+K z+Ou}c)~l~vHoCU%=P$l_#`HE2sAS|Fb0g1)&v?6fdLvElmZ!q zR3eTb7RG&Oli~r+6QD(IFqkCt780EI8MSkj(0NNu>qLqZz7X+9Df@O`|7=o7NDwe z;>BP8+CbBumd96`%+eZ^(j_yX!1>2fU~(#{vy&!5ftoW=+Te@`2ti>Gu!5PPW{3(< z5eNX(njta9$#H$BNJ*H+a^ODOD3zwj@kRn zQx5PUP2jjD=S&j={hJXTjFdaq!LMYb;AweSn~Mv z_c-3sc*h3dxBo^yj&~POOG%7{;$c+85m5sI13hf`$B+m>Qs7Gq9ED(nKnNrO2|#c{ z@JWG20OA0|7$Be~hQJwu@=23Y8VLj!jBzx?plW%^0*WLrU*D_zc z;k|oWI!6i9&K1U&C80m1xd_bR0{b=OoDfheAOu8GDllsWA|Ncev$4PhCIb|xV+VFO z2*F+8NI;;14+Iv$xspK;v62BWV#%WoOKv!T3;+;V;LpZPle9Dl5{X#IwoN7uyt$&T zzOK;G=B6?nSjY$=AP;Jod=i3@CPd%>ObAjMG?hXz5DP9%k;w!xEf`0RsEA2#=-{5J zvD5$7o$5G_<89%c8h|OA)7`x=Tz7aJ|7U>+T7zxzQT1=D9U>+~&w(91>$ezWkXA@w zFs4Zp5O73+K&X9<3!pMJSw*BGZ%EvEv|QH8B~O!wuUQ%2HMCVHUu| z2#7!vW1NVH6mkv${~6@4KWdPp=R_KSkcbF~Gthe2p_oeE>zYW2(z-7qY6Zvxqt()Z z1fbM_JduoDdCu8(u16D2JL}x~>C0?z$cS7tx_PZ*Dr zQpYF4M~Tvl`|o=M!x-fYV&R;`6ZgEGW(a8OlXva7`(d{^B{)~UW{4OR%>>g#9hBt& zN2WCaXbNV=9FU>(eHdG>^99!1kI^u3t~HTVC^#@60H%QvAfmyLNC9xr1V}s-u@Z4% zCv9Z_vRE|K-7_?l_ln&7#%~`;%xSDK?PuTI?SVI#NvD0aeB-v$7tfnFbBfaN*sH5v zTKz|e#+v(6>vuN+ATW-mIPl6FVDQpPZD|4;u%#3*R+`WcZzTd0Tzg(XI@68^jDclB zV5+J$AW(@3g@j0?1EN+i;|(HYK>jAu016GDV3JJ?002v&8W|Uijj~l^d8nbG@`_XE zwKgBvyJ=^>wPnkr-3B+@kS$GvDKdq@h#820njw%tL=cF9|1oD=D}{_P00w{z2{dEK zfsvA^$rOSS48GLdecqPxQ4{{&JMeKF$A6D^U;qYyK-$Oi!1G|l)A?;87({FR*3WMp zj7syc|Gb;lrGF8DAt)UbS^mlXBLjqCcj!|7JlNszT>7xlG;jt%T?_&Ql+?rjI&$d$ z?tK1if&B2x2~IU&#wta=MAIlqE8t-#6EqkcTK|7t$`3z*!*TdEzP;x{zE4uUjV1^H zN$dSk0|lu82ta1KfV09Y0%h0zEQQ8ovR zVI&MnQ8tI+Q1CA(MUIP+FbDyTLsDTR42YD?f$sw#aE9?%so6r2JP)H0Uo zV;GBq5TG?>a%fv%nxHkMv!FE?0wa;qP#`#TBpl2RL2Hagf=j@VO+^QV0NX0XTBRtP z1EnBXPK!o}2z-f#z*vk`lr50G6X~#UUocE)@x}s6Y+w7{^9oNkFL1w+iZwR5laJU zfFS1_io;)&oslJ&ZFXsHv&w=_?cBa`lO;GHa-#90>Lbyx zX&M{$9BA!a%Pey^A}Rtz7AR>D00X2F4H$v6Dm|cJPOmjEjtoeuiFK8qecz>bKmPKb zy?bxGXz5@o_2~02g5aovMO=WAV-f)ZXbnNzr9^YkaR9Ue&VnCdB*#56+h&LWNfV|{ z7*joN8dznGEqgX)w}CM|F=kAns@6{z(BKVoXY{S#td%ki)A#(4X)yrOn&I#$mJ|^& z;z1@{aK@1_%|H<|02vGFsFdkV|HS+1XU;jEe?E?PG~UU5mjVjOG5JqNfBpT~?LP$H zXH}Jn7avY8e=Pps?-DOQoOt&B@aH}e{nht?G@54oo?k}4`!AHsv(cmCfBdzWGc*3+ z@A!nV#(7KQ_x%Qw2^t)-uDv|^<8OjglrLBpotJpxp2W+K*zdm%To({^XO~zsFLuXI zF%+V7&OHCj#MAdC-+VUy_+6NYQ947#V(eGnGtOK>nJgfNzxvta%a2;`y^M+ua8AV{ zpEf!E;O|*Y73K5M?|d!($6ujk0_X9&e`%buIQoOHn^#>znJfrFj>9L8PdxPd(G4dpo}bHPEz=BzY|}8tjvE62U>X~D?YryoXT73R$mRqi&>DaUi698- znm`e1KmgPLgdBhcxo7|&z#uj&K#iaP38Z`Sf*FZe_~iLB3{yPy;&RvVfFXb;)Bu1; z2n48uk|RI@42p(>rPp9!p@9edZww^amF+*@f!5C_d3^_8Ui78^fVg#rOwMGP{iI<)`F^)hK z++omUB#iP2li*LrgU4|k?>xMd1MsoA0gUnm^)?9ijCK9Zn);#Bo&_`~jbc)ZI zYMyfjrPB6wSH%AC6HPSH63Y*t_AFJGaW z4}s_NN#o-W{LZ@a5>`{C2Z!vNuML0lRy~x8{p>r&{Ml3}pkYw|pt*F3m@$PV6V~-t znCC5JV@LB*_2#m(^iW1_*s9yw(J+uP(8S8ij5C+0whn*OcDZv8xvp+&mm9Vii{}C7 zeD)08+94LrC#gUxK7NdO=919+uS3%mGp1S>oMWDK8jHm!UjRTccNUf>DVqsy8XMcl z8tTNHnc~ES$T*)e0fhlVh$)kRGd8x-Jbx(wQZ~;gj1|)-Q@(g~lVAiOO`h-jzVCab z{~swl*Y$nB@4!C4kVnJPoH5&Erh&FehQTa@*#>ZqOmNHOwgrYj!$85&6x=ew5T#K7 zW8g{fe4IH^yzdfm#tBRqkSlN~{hbK3R9gAL$rEXAjT)7RM19W((q+lSmR(J+tbFsKXI^-H!$z>pU}ZWOM<5~~$I_UBm3YgDz&H-4 z3P#2#$WTj}EQ?;a4{_Ni=H30O(0cTY+$7o6GVo{0$Nr{J}YPl5wMg) zfYKRg0F9sl2tWcGPC)}9B4~}uL+LS8C=dw})%9~Pd(Wiv&KrI5$>UF$S00a>0LVyi z2B3%(DFsRk&Ou8ieU!fTTykC1Qh6?rB9e&22*_8QkTHM)Kk&?bxuI^x*zq;s<9O%d z9h-taRzM`zv)+H5`{>iGy3)S++RXbtmVN)H_?X7BEw2{-?R)O?FY$5XBVYa}K4Yqw zI?3O-l~t69`Lp@#>Hey9y0aUU0x3ah@;v(k*A;*Hdm0#|OcpFN{JD?2k3EyQ>Vsfg z_Dxq)D$N_~ty^#MUSDm@n*~~fW%I^*z5k$U+V8DcqgvWxU-=App6(k63P`Mr&vhSt zDt*=U6`lKyrKkEU*Fa6RYH5|b_KLZ)$(Opdo$^KFq=nQ!q`Q07_Fd5*eZzhDY43&C z7(>eCNJ{d3=k~i*OBU<$+_jgFZS+>G<};@zUVbEX(gg^V zT>e<<^ouE#p?rbz`Ov3sv9Ep)N#(Cvm;dUw(6*20jY&j?A$t4!pa1o5gAD*jv*t%c z$XGF*a^^2)^Ed@&@xz^f00N!Hk=9GgofIT>0f;DMV`=UP002c7IAf>Gx2BAf>$l>j zO{A3uAn6ll~U%ZQn==bn2!mP`sWv}4D1!?eKlCeN67 z)@dgd^7-myWkpjXC?;CX@^)$l#OGK!i*X zAQB-W5^>H*k<^-VWUkTm=<3+`7iV66BauQpt_Xb`??}A6127`E9v?f(IOT-&Ialxr zV`I1fkdLaTOa^NzfeS1ziLVgGQ8cc~(&d1jvv)U#{E4XHUbjgui}^ z?(Q{~oS^##<<^~)$+D_SFa)cu7V~D&Pzp^04Uu^IUI5Uk^x&k$Xd0}l(tB-{b^cj8 zlVP!_w|X7e78HtL8akC$JNB3tpT{ST_upJ=UAhd4PUPRd07?zcIU{`AC!*i|SO1OG zq0fDyc>CRjZ~drj({eOTAPQ2j0K*ZCG4OppZfxYspDBFjC%UUA`jc;YPro2nZ-8jz zh{#!p=zD&9M^})IJlbasL?A57sIApNfPouO>3oBAO)3SS!xujRf|6JS@O<=SaE%BE z3_%m+i>#u|y7=snllO`#B4R>t!v;{KH7Kd1l%Do{KTx~`0>&9=a`O4A3j5siFUaNd zYu5c?;-o2>6i7L5^7yOHIkmmL0~u>+>uhc9VTRD4f$@OUhKvz1AO*k(IdTn%3>gJ{ zX5c|ZRB64OVZoKFw(mj9+}+j*oC9IcKn6_%G?c_FhiBG63a}%j(zLR=qjy)H5KPS-1REQS=PU1PWH(86qJ9 z0|rtd5NQoWsEH#(tw0kwgqEpEa~?=RYb4|V#dfFImHAu0L5|}%-WJ~70hlvN<*h3( zVzFrWvmeK36vJWT%v0RE9so^11X2ZW8Sj-hLbu)socUk-4k#V^#0P-!;x~VYmIV|@ z6c7rY|L3nKp1Gejj-p(iiVpZbAKOR+L%Qf%S6_y^zSftR{l%h)Scb-&DVf0 zi$D4$1u}x^v~}6C==Z;&)0x7TzDY$Vd&@tnmR2+^^4wqoN&`dgO zkbjiQTd_Ly$q!LqzkAO^aK*)77;Mr6_pxUvm-1hF9X|7MF>3~BlIu3<{&u-z4_YP= zky7M&ASDf78hAb%RR>BLXP*v^>n(o+O_T75C$L(R9kQoQoBVdzu0({$a(#V6dz)FX z@-j?9FNstHDOX~Iib(1bc?*y@LrzNTvKW;mK$Yf&pot6)!qkV_)!HrIp4~WOG!ZGK z0CX@11>Zr2Z>-rmnDGolD5U{GYvP9C7PA%Q4Wy0QnlY7?Raz;ALHxwmS8aIm#aGT< zassJ<;mm*-CuD>Kz<>jR2F8Ff1YZMZ904UDfJOqY!PBIHA!k5@pjjxawPeBwlEuiF zCICdPKpr4H=TPPavypUgaJTc2vQ0Y@z6(ZW;K=MdH|pgwPX1I zwRh&hc3st(|JK@jpL54I=sk^=CEN0Vjcq&u#ux)JHbav@(j6+*1kxRv4waTOT^&jUx*(40M z=_(MqzkhUfbH?AcFaEvUgca!kR) zd0pTn>;lBtvB5xa!5I;1gej|^x4OM~b7S=ya@?JnS$gTz971D-w=nK_sy1r;J9^Di(tQ z@+xL#P@7!85#=E3EUmfns&+j+GWQi341)LUh#eV~JgyhK@I_m0ddc|4bCO0=%Di** z(c@dc{phV<>FhW{eUCB+ds8n4pC$}QTQ2#}uU&Wk(@ccisQx_Sbma^Vz|80m{ACyW z^S3Ph((B4wzXlPTool}PZSI2etUu7DC5u7^q-oreNf@ZV-hwmjHn(uro1)qQFv;E(DH@BO*+_Aj0g(V8X zj?d(u`(pjKehonH?eB@(cTl4a6OmchpCq6!jcuGcDi`vkS#6QIh$>18EK$q1GO44+aS~B z4uGNf{;3sNA`Eit_4UwUIefJI&V4pFubnQ{YrVI>r}csNOn&SCYJbpu!+*7-$GgA% zN3D1LZn)x7JvnP-DZBUPx8BzNzd8eni1Pn7{<}f~%oswG%Y z?4p#Ox#7rzgxq|m`?=fiu2boVh~T~J3}pL52YF)L4C_~~{+Z`q^PMdlZ@S@z_x;7E zrrpy2dczeLU$Ab_?J%oLY9;~~%A)7MNl1$#2N}5pCZ-0HByr5HDCHwxp8wjuV#oeH z?462{IaFH9is>3Y^2Td6p1ryll(l-3eIP_4&q;tpm{Y4XNvz7{eMpGeC&}#b6aR2` z@umAt+`Z=kz!|if3#LlN12Bn0H7<<+i0SCAovq2~$#v_R&DQa)-|o#Vq#-3HcAi^h z`;v9fc+G#j;CU~5d?Gu(;oOba+_2^4zi{_^|KQ|p_hFWys7<)8gR=XGzSvG$K7^KX@Vn^d`o1I4z9+TcQrA7nH*6jhHMt%62h}tbH z3glIs1DLth&`uYs0K=5(HH1*jJ%5j@ktDXfOs%FBB}A&Tvupq{ch-8HUqr8ucGJ3D zS~W?;mS-BkR6&iIrdK{HNyPsX21EeEdG8WO!P6R@zVWiFU-y=cmt1}7Y5(4spq6_o>z$FboG5+xn z{nf6eb8oou#--&Y6=5Gf`I%dfoSd6~^pRKH{DLd5zPi<_|K%tD?ocNlnO{0SzqqF1 zfBSX6__CXx|KY#>hd=+jFJ3%d`}8}nTf6BT2!Wvz*%V0=CPn9D(rinfyQBrj+Fzv5 zA~raN3*8g@KKpIG>)7-MZuwiP*EP?FHFYK^T{^*Ed;iZ)op&w3@f5$f-82jo&_TkTd8c7n%0xH#NbA$YO4f@poeC5-wdOAXL_m@BM z)h`|DA6q}Rc3ldPNUhP>a@7_0f8vw04w^6SlXRD~XKnsORv!1S09$5Z|d z!ItM3^x?y)l}lS#ss=M`VG+)uG8=c!Ivo&ORqyI_K?Lt%R&8dvV35H(IB!LXEQfdS zjwZ%!Fn}42wTFYP&ZCT$FTpu5)5JuzxQnr|74==%;u4s_RP_woatF;uwJ^6561?>X z0N@;e$GtXNTCP0lR;2S)7nUA75je|o^at?%UtPEAY7F3g70XXu1gg~m=*&rYkFh31 zsoh3@U;vn`vs|r(>&ZC;Z=D{PD`gURM`La4_tEX5Q5$MHJgHgU?;fprY8}u3smdMi z|DB^>`sa9{aKVAhvE#(Ukzeo5{gt1)@|S;OY}MN8F`&of$;=EYvgU$I&%JK(tV}o|uU`y*Sy6 zS`t&iNeZeBmD-4)f=YkVrzkSG1j;cloVgg?p+k@Md(-VC?P2KTPz^0rH>VnfLOur> zsAz3+a`UAZ-Sgo;qs~A@8`D#*4IBE0kGi^VT{iW?|MvEYb(>U#oqJp*d8HFhrM-H? zv)}ZtZQ*URU)U-~2}%|toVOk?eBsc;&ChMP{Q4)~R4`)1PYS1P0G6ozK6`IJy4WER ziuhfBJ(c|w<>R+|T*P|Z>&G_x?(HA{`d=REd%cqv-{UiUzm0$J>HLcn^Ly<6{SP?Y zc;y5izb_HW_`Uba%g1f-B=`NnFrz=PJbxtPg61VU8_U7|0XirR>Ja%}ZRbRVm?Bt0Pw>^lWWL%krD=g4K^IlRRaid0E=qkLXyodrK}q+c-rBu+g5GdX#H|--@c^X za%*wftAF`a^!?scPmYu~)}(3?85Gd3V7D5|gfd{)cDOOI>2A2H(e<1`Gw z%mBjkub=qJXP$IDbHr%}5s9GPdg@28m7fG=)!+*hL`1>4M(WPCjnBW?b5M!wzW0BJ zDj{AqwFX zjzHif__4Hc!PKT_-2{O6hcwex-4bigzhwQht~hw)+w9q*fe5Aq9?q>*T8R?DftcaF zNPNi)u6_1(*LFG`1I8NZ-QU@D*#&36>DON~H#cum9G_Xb>BTp%S-a-eFMfH`rn9ze zzHHlF_tb*Vi|7C*@`zey(3S#oI(4`h>q!Y!1yq&Es;R142riEnR>MT{u4yz?@4Xeq zMDg)?q8X8~Pbf6Oo{Z+O?r`4bm@88$F`5Bz#Gc3z`B+-I8a~xX;I!(sMrlJK*kKY% zJoGJ$Pyrm^pz4zPhD$Gxy&m<;FxH+}ySBggfHpguo_&3i)=ULI?6Si^j5SwYdvxtT z74tx0Dv?C0h6X@R%P+AJBLJMn&#tYQ1&#Qr$A;b;Pj!C+!0c;dlSEZxG83`$0WDek z%&W&&uYV#Q4@6`tX|1{WhUXo;^-d~@RCOQ}Km-RCGgVV5I3yaODu`K{`Y(O{j$7}z zw^x<|%geIY&+pp)z?B!B^JunwVo=mVvMH(cJNf3#XYJUzcX_!lE?MknE=d@GDTv@a z95cgt4{;)SgqEge0tFKTR7Pu=5X?7M#a^L(lx2|@84;-ps=g+(#D!o4gOmlV1c*_R zDj{aD!X%Qah`}7#5eM%YFlK`m#0`@oibzyj>4vk%cdIc`NWl$+mbt{VbhY%XXI+Is zku7vWJxzTQ56{@NuDRgiQ@7@c&|0@SS<}q-bdA6;M3u5sl~Mh9#A(fG8-R%_1G5n$ zo(M#2R6n)4PfX;TOR2SbJy6BDA3jc6<$LY5>s%w~BG@^NN=jS}QdhQzX0gAhl!6=# zDl*p{oLne-62%Ov@a{|Z?%lfcp^KhAr8S6e%Gzh#zIA)LbN8X+GgITOv|cmEmDLC_ zxwH{#ZR^jIh=Clj8FJIgm3PG^5C9w0JA%TeE$JUORVD(UFfuhL%)yL|D(Pr|pz3_h zC5e?TA{MG*Qn>?{hSC(us#Jw?#`>+62xKMT$w}0&8 zHYn;o4Iv~+ZF0?e*GSXm81TfRXBF9f;+rYgdR7cAxo8;rM_&RXPGe5n06b#E6Q)XV zeXXsgl>j2AOpZ7qm!?nlXg+xI%nl}EWU2;sL_`M1%mgz9k@G2FCgObv#!NO`G$nA7 zoHY?X^lLYqf8k~TpZN6s+ox9l>T6!Seb=6c9(wr3pLy;dy#EtbzdaKilS$6bThV2g zIOhZ_N}6f}gAs^^y@;eBGmS~T77{O}Ami#^iHQ(Z9l&txyor%x;^3G;q?M|aDNKi^ zzaTXuP@1Oj-pYQ=dZLm9$4YFF6{o6UK5PaKfCG`KF*Au3y-u?}78>p8b2np9ND(O( zPqwMuBm&0X8L3%iB4c3pRHxELjQELQ6o5yZ0hoeZW7R4Gm@2OV5EGFrdX*;06Z#sj z%GABt6DUp9%&amEQUF%TfFj0BwcyZ>`5^c*I1dmzrxGjkT{1XmGg!Ok>a{u&KCplL z?3}D0uWx$6Gw)lws_4wulaN(PQXq-_-s17GskP?oYH<)tdCVk1hYrCowMwGd0o4$5 z4dBXkoq0Ia-TTMKlF$@GWUIzD)?pT7U&mMm#W2>&Hf9*xFf+C&+asfp5!uR?WT|AU zC=s#_Dr*~sNQ4Mc@|&LP_kF(C^ZPx|U!Tu)o!9%m?{i=0b3W(%aqjau$1{$Z$E+U7 zF{|c2m0~Gf<+Ko4$%orGFHgYw3nCNZanB4O5Si+eF1?sl7b7uHv>iYmzhNaF6f@R% zBFUqk)PGQ`^W$I&B^bKk7vU9tb|&gp_|N#QLE|1#UwVcsc2??XeMF{Glfu~A88;VCP2Ree+jd z=jI8r|2eJ#o}(or3Wvc|43JS#yp#6jxZ+uJ?GY|0TX`+xDSHgGWt|O^W1=HN(Ddju4k} z{w3f8+oyM%y{wDAr-g*>PiKf7%Bs60ku7fiE9-=;xJDwo8pND;#tF*l`pDklm>aIu z<2PL6Q1cl)Qv_WGL9)U#u(0d zk*GI)tLU@J`B9xyZj$3}s(dh<5Hx2e^nUF7!69ML$ob;3{5*cp(Uz6FlTTd-Q&db1 zAl-oVd)%V@m0E1$K>#GP7B<~ z_6VcQzMWH&x7-dX1Bt6pm2Hqy+{P#W>TzQ*5pO%M9?O!k$xUGNC2c3OH(&=S zXBTGY){lLEdt`29s^uP~$Rg-Ae7h~Eh=W-f)7l^Gh-LYO6B$bytQY@PDNPBsH`N?|cWOT32ovX+_ z6e&A(z4pwOKD}Q7PB_`1%Xt_ki$r87)ovNaDONVht(cT~db*lCpm#z+JW1N4S)nynM_WJws5=}$T@;0SfCDIxjAMDC`dT$s(Jvres+~-eaQ?ZC=cVom&PlVDTiik6+BhA zc-o3;O7TwM8S+FrlpW*`GsY*SDuaMBGT|`ev|Mc3(JRWyZY*?*69u(6IHG6WlTsyX zm21qKF5I2LC|fp_f#>sd+jK&_x!st#RWZz?wNbWe`|L0(_?uVpg*ZtUUEg!4hTetfb zor7QYWr%@vaw7D$_P#{VM@$AMH%4M6;61gz_E+T!e|&Zx&7YCgYX{vz{T^GX#s2lL zSJ_v2ny(nI97C?zkE3(0Q&9+JIi}@9hy^`26mu0DRW)rmsDvv_+k|)8&CXb34hFw;jzy;7h(+@aH`Kk+1~^>TLR5x&_2Kv zRT*Qyj#?AmxZaebdPI`+=KkQRoqhq?ioGRQqAS|iA zI>`m=@bn^u4{hFv*d;{l?S_vKqYqfPKV!Vw&QOP5X4hbzD{v=~Z0|(}cQT4>%sC=E z#W_HE{)CvFwW*lhGp!rR`rt&e`#oCioBmCWM&v};(m8fT=`Tx*9xw9^3$EzKX@A-v zrAtknpMUYDweYBF{|u9wA$GwWSO!SZkwI`hw`{s9H~QMoO+ez(fN$g8Kz+Z-s|4|< zxR1p*HQ&{x^z!ke5G_mXjwRSj@7mH0YMnr1818`A(*~6ZnYtw!O!Lf5`OD!|cLL-? zH5?uH(Rhitvn%SYextMKsNQee1Dlao1cIPBXEN*Gb)_vgLv1OIZ_JoEL?!rTqK4f-b~VIa1xb~+dG+YwTZ7dB zO329jgovdyNrJGMZ47e*!>p+q9lQ2$^muXWS#0xFVr}aUUd`q2bZ!4#@BR+sLA*=g0Z(& zS}e3#oKc3a^luC`eQp}Ujd7B?urK{Sz5@yx+$}KI<>qqnS;OpYr4puRG*V z=xLUCv{c~AAuAw1^L`>5cY{2d=xF9CD|5r&oxyi)M2dlX@^en*T+5*&#hfyhd<2-Z zoSpJn_L3@PbCw%!&0+~9!LL++Tv2B*aT(d=W#$VH5Bq6Iw0`dkzy&1m0u{mXJ#9b_ zu6?sfqB^L>3w_VyhaHDcxzlOU-j0?r;h&x}Yhr~(dtK^+W6Obt8;`B#rq?=>4>y&7 zL9_P^$x~#bgxpTv_i}=vl&Iy4d%u1JsJHs#V~%}wXj24S*1iHp46E!7$Lcf@y4&Z& zxq~ar5H9X+;!p+p(K#gu^C2GBo0KIOAD^L!=kv61BAbKwQd#)4l#4Q35+(% z)(c2QOMO;8N%*!=_Fw`kUye0xn0?=q+J<@|?BW#dIf z*OR>Z)6^B`NWKr=b=w4%jD!-F85r1)t+-84CM(_&S zab#a|m34{}>r);;yOc9a2rKPweHm?b?%=)ns|G`1HySVt-U~hXWdE_m3K~nGv_g>MY8q9|8~m1ZvqSto(SzuLtM>C?6B>v$!Bsde(sXD>C?Gyulxts^&|QDJ_;F7pLJK*V?MW9G`Z ztez-=Aq*rbv!crqAYOpsq*;1j-C9ekEqe5;`N3YHK&1hQ?+!an)6$aL3+dV&6>GO- zwbQiFHqz<2Jq0Ow7u$7sYAY+Ht0L!*UGINF zS2Q@*%L{f$tI$w0!LZETS8tEf-<6|JBoc;hmv#YB5MS;#Ja?QdXO=3$tMJ4A@wY?p? zp`w27OF*Wbq!K0dd!^U!StQqy$Z*VdwIZ=?ML8F^s0B4kf%-JuU$oh&Wmla>K%kFFf4ELI0nzkK~0}t4ok;HVT#Df>5o);0%1YQG@o*uzo-2CRib85yzh!DY_S*S* zi%=Ggn!a@j2RIgb!Mn=Q=Ck_1m!F@Cj{f|111r9m-{pfb zhh^AjGpM(QKUh0F3LW-Vr)Fy2x^?lT+*RqXq;|#Y*^^&A?9a1pf zEZiB_d+SU3M_jq{#B*F1^igk6aE4{p+vN9c<;*sI6@Cz5C0Eh%#hvlotc&PTR+NC| zrJGM=r$J*fHRU$hrNdcSPkp>) z(#j+5YARmK_lX+xuT0(ohSa{9`gGIlvpy!z;nNl(5B7YBPHV+|9Zz18HY< zlp>z)OKzU2+{vFmQ@=2Gq^5O82dD{x?b*GV1IeD0{d0avyLgWV(5<)d4S%Z_JC#0I z$W^Olj0a|m=e;6l?+HmVPK%_w^0~m*gpmhCAti(UR|o^6SF&_HY7zz4Im#6Ekg(Rr zpZ4!Qp0vtij%4mc)*DV{Q7c7Hh7`+;$zDI97COu03X$O%%xRXmG#9C2o?=!aQ7}V* zYjvUrLXF+CJ`0mJ)#R^``g6=emzcuX7M?X}Vv%0})n0zi)g%x=)_{(T`*Vw^n7Sny ztxa~IDNWAbkU3+f`G>hscG1o3a+|FVH%Fg=6J5^TCh?l7soA;N)}I9ZFr$@nm`}Qv zb`tAPU)~TDx{!w_ zaw5@jCzI5Wx#Wln5kZMD2{MUJgR$jSrUPoS#|CFBIAL=o#6(w=LSTgr@Z>A0S2HKO zoXXnctO)s04`&Ehx;ifJOvl-#PF}5TUjYtQ;HMO4&_!_aB)&FXCppfVhUQ{B$#E0Td1l##h=oFeC zB?N403TDTt4OVm}2m4SWXiA%*cYN4VslTLjzpx*U4h4|AM;yAC$h5(!xfye+NJ& z5OfKYkSHqI*N+Y`{m&a%k)Q;I>*#2MEr}6U6=S2wcqWXY;XU;1)YTG$Vi*4i2 zvGUu750OTol0$xn4xrgvput!(Q%$&zrY01j26w*m+JX&3{^KynD>#hgMWBaKiBtd^ z1pCqHA-d}75fKq;WFkS0;3pLeuwg5-{!&nUh=G5ie;Ea1h$OGDKsxxhHv)SYhf%?_ a-vb#81^C@f6 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%0D3g^p!K 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

uiI0 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

7|_UdvSZFh9ri&qIJZji3N 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

o8*HN9qPjsAUm!$dZr%6fhwa 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 OMwm1~xCoaXMilkb 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

?n2M$hiGa|I7buFMsDd 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 literal 0 HcmV?d00001 diff --git a/images/capturedMetaData.PNG b/images/capturedMetaData.PNG new file mode 100644 index 0000000000000000000000000000000000000000..e3c08c4d07acfa07fa1656e4f03a2f87f9f3defe GIT binary patch literal 9033 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 R%-{0vJ3F^Y|Mcg-{5#xjKyUy6 literal 0 HcmV?d00001 diff --git a/images/cliMenu.png b/images/cliMenu.png new file mode 100644 index 0000000000000000000000000000000000000000..77e38db1968704193c7389489eee2acc20475b29 GIT binary patch literal 26049 zcmZU4WmFwYvo;bWIKkcB*|@s|cZc8*+}(n^yE{p6Cpa5-cXxN!Z|A({z4xy5?H_y1 zbWhiGSJm{?Q}s-^qP!#`94;If7#O0ol$bIY7o}3D!s$z*b(D^Wp#{hm5wEpQx?dxH_3=AI0XYwQzG>8ZS9Q=Tq zJW_~=0#Q^bI$~pCu^MJrj%uXAyu7GDC_LI1e~Qu5oHhOz!GoL!Ue1TsjrI+X4PH(# z#Yy^nW{ea_V!1dHxSPAYf!_WphfYY?E`Kn#0E$QkOjZ$5NbrKCgN?f_fiKaAF-xkI zejjh0Uvq#Mb>RLYsPda(OO~*?5~mb8)Wcw4E?`$DW~Q*E%>;%Surw%J9W?S8TT?Xh zX=ZF`G2yT`VrkG|Iip7531GxCsDk{7*+IJ`tz_0Do0m|q@Tjh)H=6iCv1ELL3=BRI zL}b=Um#KWxek19`V?#z1(jFzLmRs$QMuxOja~~e~A3Byl6PEZ9P{?k?d<_Rxz`5%> zl5W9h;J^G3HA|mJkI6O5>1A?ESu&bv*4nRbgDA3634}D~j=umV?GJsE7-iKsB@h@X zxMe=l4<}XVr>_%pdiknMTI@@hN;8%_78#baC+n+vNgt`w1G#U+SL_>4E~_o5v3bJM zR25tQz;v{4^dQvq{_h`A;|hCG2e=$t7G=0P;78AH?`# z0cCM;MNmhgC2<(LU@ao+ip1#9eIi$iU&#H*Cvh#%RKYNWizkK4FnPeUgBgVv@(B;Y z*}$TO?DCnI;V6M@nvfj+SY1fWkVyVyo5l8D+91Y5oVF_LKkI%b3dY-#xs-b(Tt)8u zF`xt{E<%%EuVh9IlSD=P2_y8YSh(Ve;!~NCD#b6txgWX2jIx+zWf3SpCk77z(T#sGn=@-L zKQN1?A#2jBf3^y17s`^?~@<6AKnLqpl}@7AzBtJ$tNU33`4vv=KNs$ zNM^A#;$bwzaK>I(BUT5pnjlSuHW6=GZ%NX4XQ`MXadH7m$e%&ZSUt>h_u@zTo9Fh=*)xR?AvF_3AB_gQx>xR$(In1!R@t%h+b?rmt$X=(jj{{Aw%q4)f0N&VNOHI=KeI zaX~>s*+IpKRQ8YrkH7`0qN}AIOPi{2Dj};>DTZ2TW{^Zn%amYD#!UUOFphwW;D}I) zpu-qJpP;*^%TGc`O8ffr>q?S5?V83jtAa71F`?UfipSlJ?Ziu2dC6(zsM@%Otzt*% zt9Wqbc11!#t!T0IUO27xoR~}e_mpGbIl5nk-`UvB*&DSxmZcj)kE{QLd!{{qzY{&q zKHkC2!0o^liEhVDWtU)2W?N%VWOuXFpTwUk_}=pUs=?J#Z`M;c%Te$oA7ED>SCLinl4=OxPy4md32q6xjeZl-S`e3mxjh^fJa3$x#MQzG~<$4 zp;)+#yNrBo_LJfR!F!IA#T&`zxEG#X4I6SR(R=Dg_oI3X**p4s?>`JjrOfb6+wQ9` zQ9QD)9uJRpTjuNL;P>`Uk}u}=DmDp@^p4+VB?qX6O2^Gd7v|j>?0ysVGj-X88ZfB@ z4w=of4!oYdEj%~D#6k8zeud0|%J>ukq4Q&t_#-b{I5zMu5UN{_gg6MN7O*Q_W_TDe zX@F^n70gJhbIUi%YAvTJ$;IyN@fd%Jj7o^QLP{u(EB=*qrNE>xMQl#OC+a?eG2%Q{ z3#E=@->m#QyMlb|=dAtFaPdOwPevI%SKpRX$N6iO ztF*_%N3tseEt2xD^X?FUd_Kddv!QjMZ=b`#>2{R8UbFZrRybq0csNj+QJObV!rivb zXq|c^(O}pw@ibL8{*{G-yqL$7m7S-71Thyg*Ht}_SPHei)T*RP_5w8n?k4DsE=&DX zpM??*MJ=4T)#|pVJaGs*vN~fw-!0l}kdIOOiFC0&W<2}PTUM1MDv@gVWbL%AWn1z#_LZo$QPXazbO&$xT-c#|LBw?{I+xy$_Q}%G zYJ0xY#&zZ1Zon4Hy0a5#BPkc}t>ikjIi8mt-Fn!1?bg20?)`9Ql(`+j-^-uC|3(o& zG3Ir5Z@cl*kfh;RHCkAnuiNe|^EBX-<y<=;-g4cae9|-TyUkcw2N) zG(9wjD28YCst!2Op!Q1*N^Rp8)Z81pA^TaweM5ufY^?R~z!P#8GRai@Gl6}V@|N}T z_ius9qTLSmx{j}V;g4t!3eZ{BynFV)-s|6wt^u=vr)b5UU;QzA9Xei z;|%7$EFZU&?C-J5-hnj*fRM*uyn>;o+2zlObMVCXvW1n(W1?Ie6 zA6Ks^o<}0X%d48JC^n)x8@!Pp-`!bl9F+&Z)RahqqZ`>9k%HO%j^`%91pCg(DoCG` zURnw@_6n0md70~Owx5H^x`r=ASaS|0)&QYc0}dt{L=zTFin)dK&C2TMo65GB)$erO zB1#iBnw%`}(9sw!W3Y}pd3kv@IeFjTA`w2YLMNf=+`eCVjKQ#96sF{!L@ukIVV1uk z^Y=Vyea7 zC;jIN9?o`;Fa&CQL`4ZvvUXwJmK&CSik%*w>d$^g28!O6qc+0dQA)`{#tLjEg9%+$%) z(bC@8($1FnuUtbTI~QkuQqsRS`k&u_=4t9~`M-Cvb^3Q%panAh?O|eJWM=vw*`T3( ze_MGJE!|D6HN`A#Ol_S&_YeSZbMXCh{r}hVzjypUBeni_BrAaH|Bn1WJ^zm6WBR** z|FfX~XzQO=kh%om_?Z4j^#X98Cx3ek^)v%v#K97WDUG8h?qV?B50SVMjx;D;ZxHS!<%45@0|GU?-|Fz8^~kEAj!&J$!y&Q~gw$d^u}G^}WtpBC)Ft86|0lW$(No^L*p zW4LxVA2}`6T0!-3+tzq%*QccssR zfS@IVF(kB&Tog*#G?b3lZFp0B=2%bjET8e~s?KMg(M&->?}s(FEBe5;Ywilg4u1&W z`x?#5h!Reo;L7A;gRqzvUWgcfvg!iZqL)tPTiO*rwQS$~ER#)xPG5`VB1?;@0&$BK z*Y?X-r-_hoG^!x8v5epll@eJs3B$reXYftc=CD8-U<8-;ul?R%aU6T*S?r|g>84Uy zi-H&igvmfhnk2v4<+=Een#PBQ?Mop-^2tX*hweyDTmdoi z<5nn9&krd0Te}Wfa%k%&(KLRq##bK#T<6pJDRCwBp-L>)Cq0jv>(V|>KhIymMQD+vL@qALBAO`3{;m#tJuHa6n&A_ z2)-~#l*|tG<&|~}Q94Z>?39c>->O%USEqD1&~poo=3J)6ciwy_4aunTy<-hOa!sYz z`hv@8TX3?1=ro+Qv?T`pXs6z3$W`#JZJ77^Q(^Xj_GYnBA2``$_+~#)OJUekTbz#W zIK)+GrP0QDqA7^aQtgYqsD~ZP>Q7zom+G1CxA1H@5-r-i6O2MB6>4{Mn_+~RGO)^M z6@1jnhG<|jPfcr2xqf<%2s|Z31ZLSH0wolDi00E9#S+np(Solse|17{W=q4S+RT(h zdkif6R4M({R^@iFo^J>YIqq~mn!dbSFbLJEGwZ|qOgzIPZhXGlV)%S}q(m70YN)@~ z>V|x_(u8dPh%E3ZBmwTU&DRpn5+O8QVSnnX1SOR~i4D>-%ge>lKK|0h?+2$5J=M<7VG7qhUdx*SdCya;yDeT_v5W*pN;? zl~J#!AJ49wtwc7xAbN~-DAX?$i2#E4&VHo$-RWQ)9$-E``&xU%%8nt+vEhAlxn!Oj zT-EVR%Sh(z^>B`1Jn{0ppJ~?xYiM&n*2xWPfUO(+OF^(I(&d^4-}TBf;sxdbBbJfk@EvWcwy zahc%&_`UOK>G}u~b2hz(8(*Ek=jgS%BH~FONUZF)>M%-zU(a&#(Il2JZkhj-b3#RU-u|1;7qD*vREiK&D^qfn^TOov*`glgQQuaz;(SLKnh-X8Un)13T?~e`SIy=L?oHhBmgNAR*Z%e%>czeu)f|8{4X(w18UkWKL2+c38RSWMl~-@d7-nXsdgvf?WI2d&ZJdf zv;g$pTgKV&x@dQBa9wp6=pqV4Kj!_`<+=rWnoWTF#VM9`MShjrza80gI%Gqy_}EEYQ3>7R@qkOzI!= z_ltvy^dBwXFar1Ttx_wO%Ov3H@IER>rO1!KVepBw`;oSau?(Utq;;(TfyGWF(-m041b+&*F97R zk20pfg=7v=*J#z1Ol$d-nl$i#T`tY>WNo{8#`D~S<#StdS(wz|so@-G*CPKIZLMqk z8ei^yWJOx;anq2@qU*Y3`enmH>XQ!%i8Vu1dS8!KWz70Zb#_QF!Kc=#!rYXl?pJFu zR>&I!M4k%c7;YYK)}6%a`{l6$W|HMv@sUYMiLr+bzubB@bFPqb`D1lMzs1KZ8|)(DwREknonYJ9c`B2?5#=quZ)kSgRI{z<~PXKYmAEht5VDJ z1;IC~Qk`nl1KlP8n__~~wJ zSaO?dWI;qU&&=70;#6r7bSe96GAm3a@QkA!_X6leIND(8z)+5G(G>}{K&?m&W*Nr`k8K%D$I*RR)ycVY#sMpAO9r;(h za(gIKy+vNjHGPn`bG7ed>~-@t{Q2$|4@-6?l78g>VT7}npuZ8RYbi5&?fX2VQt&_; zfIu&gy8kC2%q2s*^l4g#i4Ibany4bVFb6@1FeQEa6At}mllxV|Wpq?eIPyEDLRFIZ zh_OrEfmk+$NX>IoVoXOzxmE{lU3jsKU!3$St52#`#T>OYDJl81EhAta*|cQ%9H&=2 z=|LN3s`GJLCPR?4)so1Eyzpt_76%nJ^7mt+?~Gil42>wd0pI?J`nX#V&fVz}U6a6< z)QcYv5rfKv;=5cLD|Fe8`Og5fBN7jrjwehlPjXDGxooQ-)X_)|U>8L=?-V=Z!frd? zVcm0u_bdECGVK7|9+S($vr{xPrsH!*!}u)AO{kzeRy$3WBgb8Yucs8GnwUGe+BL3| zsx*c08U-WHfpM5btK^Fq(vk9Eoe7wp!y1Kc0-p9{e~S>blx@@lQ7y?>!V1+Eh5d~`E_e(tp`^d0 zxBGdZ3-BTp7SZEbW?1eppzq6PQ3v>qU?enpw~(K>3SWsn9tXA=z0f~N%P)@K3-#ID<(87jogBD3pOdKy8=c2; zz_!AvYP*hjzAC(8bsj{94s@643w<;^bWBoO^?>m90=?Bfyjb<-t@9%k)zfq zI#=1SG!8$XBdGvB^OCMuO2?835`DT!6gQID_T(^5z_p&lJ;tE?FO#{d@9AI`R5vsS z>lT>9fFnDHLT$0mAwF0I0VltyV64MsZ4R6BwWm&QCSCWbKJK&r!;u2F+ph%%U-p^g z8He~3+Ja=S*(zX%`79$mgeSh!Ue&TWT|~wYB1Tf182p~>ri%|%^1bTA>fyEPtT0^T zIHM%Xx1A1%o>4Auwau*Vv=)za_=5Yc@SV6UDyi?J zsT;b($WD_P!;C-}!e+s&%S5!EngIej6h`<$3I3e?tTDlG#3TD80v05In8ZE2$(d|+ z8%#9W5O2g_Xh5`KdixiEXs*teOKPMR-+Eh=;6kMBNTyEMu)O(rjtGQIq|DlDef!zY z+%Q(u&(WyyU*LCnk(QJ;rU2KnIPL~YON9nz`W4z0WIt2sL=Bpy#Fo;rCxg0gcrsz@ zKF(k0$%K9SR$Dg8((1Fr3e&dQ-|lt5DT^7EK1_U(1z!cVba=JqGw(k)t$SJ((ErdV zct=I`1w2x>hkfZ-;%#kmCy#%DdrG8@NPK&j%9Mr~6ML7)6%ckpiQRrP2x**-^P<2s zwXBERn~;byVuYKhFO}_eM+9CEeF>|55yHI#!;q1df<|fA7JIdKB(c>Ud<+p9arSuJ zyfHNt(nxREl#+2A(ait4IVmBoNS&G0h{fqx_3zP=f+@A6=aVY)5z;d$A3Z%2Ipe`NlIyLr(x|TOc+p5kO;->&V~Tow+Z zg3<#7K3;Fq4*B-R!%8*O`l!v#*}yLpjVT)5+J5rwKp$@Q&lNrVU{?22*~Sjc6Qzgt^OC zp@P6eP-A{3LmB~t=A{ibz|0z($GNPsTaofLg~1KjkNut36a)2U3a?Sxe5ohnYu z^iQl`bE~Pf2Z(h?NVYKhUYm!B9E?5VQ=e4`3esjmqRsc2NU_+7<#J)`*mN0IxUzcz zfAqv}XVqQ9`IuTG^N0>eei9Fqz51ZuRF@4Pl}?y^9UsTTv`UwN96PCvgXizXHi+aB zMWcl4s__wnT_dkr&;-OWZQbOWP9%mN^~C^d>A`c_qpndTi`Rr7Xs>L& z8@l^!?993svQ=#nMJ+~JhJc%eB5bLBWhya1dTC*ZJ(V$hefh(AGmNDC{Yym;f9nz> zRzCtsExYGY^OX~+eu6DBPI16OChMPmB0lUhi50%WhYguti?B=y{&#om)NmNRYh4|Q zgKvBWX38t@Gv6H2T}rdA#lS4NTV0RJ3wkYp0fU#p9`fi82z9tTTI-#~rqJIXhFG0q zXPBR8)cux`5Z;eUa}x;s;n@&RaOwFbOn(0&FJU09opw#kAMsM6+Nv`pfOGh57F5b+ zhIxm25m6ekk0R5ML|}SKUg%w4!9AUWF+d$oc`@BmH@;fNiL^{#Uk6T_E@-H&KuhHp zG{xABXf|NW$I#hJ8nI<^bjux|a={cqbw#1fDqv}!k*muoU7!xWX* zVb5lP%h3AE;H|o{S4(5ttW3IBcF6+DmFOVu#P~_F;~71J&4#qF42j$Cl(sslVi)q5 zdP|Qp9<_ySQWTk=+?(%hr>lV7;V}?;)DVccGGg?YVt6P&9cTJ|{C;nyG|eA2 z1l2E-fF+D$gFfHq55laurVnq;C#Bgv zj-76t=zP?@D%7iPg~xpvJm+=|Si8Kyt0$}vC<{svEur+(syx66L0q9hz~z(Lx$%98 zpmtc6oC(q*{!`;DO^b1{<4$or5hKvpO6WM4UmN_#MpI#44&`L@`Fjfero!B+JF<duk#}F?MkD81?`C|?**UiiJ*LMYug91fV)AT z{AmOv?>wHx!|8W2{*{oX6G!f$E?HORYyO?o=n9sC1B7=B(LydI9+5L{X^Mw+qr-+z z@2GnD+7j>F&S(@v3{I*dz9SC(L3K}(N4xkE94)f9#*PLNqnC{owU-nziR(Oo>SpKu zX&Inm7(hir12aj77$@T^Ur$F?9oy2lH_=08+Jueq^)?4|>tv;V%%J?i_G9?mQjNm&}1_K%0?oJpz zwzy~_4wQr2vL%%s7&&R-{QwaW1*^x>Hf>CX=KE@0U5S4C^PheHs7yx%EQz}=NaX$% zt_uCx=xn;zntA^)+3Zi6SsMBtY9^Cow~ClASMeKwZAq~{#xJa)cJ}!N;=QhIyh)gfm|h?TOfr!@EeB zUF)~FtRRqjx89sOM;Kd=aR^;?qVb>N&P&J`Cr-n7Zzn~8Ouh~w)A&qB2EI=iavQ}m zSb7`ASe)kJ*j>b5Ol^X+xLPao6!th5^L)Tm#(nMIe>7GjD0x65L90D%dYt!^H%ayj%_L52yGu<&Ndu%)b}VGZ+)!xnkEF&o6wTM6saCo|KQy2zp1{ zHTg|Xx-AeF@;Z#nTBk`r!z=Vts+(F3R@(q+74fW29lP2RIB6`JP9SsvSgPgJGQ+%J z{0!j!mO3aHTK}}7HqH2bhIn-Sk5<}@j!7Y&_@0%(Tj=EXo}TJ+yp7;~C)P-#43%Rl zVJfPkBtKR@k6h8Bs8A70w0GGj2j`sOTQG9e947_Ec28Q$JfPXL-YmrtIa$do4P zW*xHusUJ4VwJ8$5HknMqc#FawT4?gMLI~A`F@)(l`d6J{K~(+DfLRTblX9{trQ{QL zg{zk&v1jXcogcnP?I7L;&KMJlMBx)gL}p@jmuP-HjUR{FrTzg^9JqGQ!$zJjq>WR# z)~=P4^EUpem@^z?lpZP3GJ+BN`?L)YPA*d1vlFK1ipCEKq!5P!QqBZ*URB^)0i{Jo zs{YtUr8`LJq>{+oZyG#&3fgUO)Af(8$z^})71a zL(7xbP>yW`E$k_wr4zXE*emzr#xgpeD5@}kwdjS_10*Y;%0eS>deuK~ElHxqr6(+&-7*H0ersI(XxojZ0mkU?#4dmk~UnZpm!7@#^w z$kni&pH@UlYI5lBC)1mz)(FGis>k=b+r-;ug;we+-RC1NK6C2+Eb6b_QM)C0A7k7I z1-q^zs5k^4QpvUA5$6R4BV2f2F&N}*=L(vaX8Fu>3q;J`3Ra_2`l5{X_EGy}-}fg3 zBT(n!z3V)*j_M307!2MeLakIwO^zH#QZkWgYCYWFLo#<1Mx+{}54l%T5NK|i%tAD-`qnKlsk3VQ7Xw8{jId7{mnXW5BkzqYrdP<+mC1j27BDxHFKsqKOcUL_EiB^u#EAL4$7Z@DGmba=siKIweg zp3$kcc*p5@rA8lgy-!s*qKbsmPmylzvhEU3d41LR${P7#4JnDXDVBI=J6^Z(b2OCKXo^CLk^ZV@f|0_}TdlUC3xlB7VHr3(`)0Savr2ILqDL zyY*8-PC55O=@N-eBPietEEkX( zJPzhRgoP5aZ(hn-hUG^L-6t2YTo5rr>3{ptsAKp4o^@qJ_*WU0|Fl~_Is2!V0@XfV zl>+?c5X5%agf0IG`-osH=X0ZP_m6biNTL1NrYb{KOs?2}q;+M4_~!yOXV#k+7XD5+ zfR;2a-7xH^6(t0T;MaY@Oi}gY-8k? zl@SV9tseSzTwlo7ckTVOm)cjf<9cNBtosXe?u^hz@Yv+<()VW$iBcgatEtL*0r?CKH`% zj**A&WjBn+OtK2-(1@m-cFzGMJ!$6tRY#NmO*lAah#!vBpIua!Ur7L)u7&}71rlVK zzxMgg522~VWS2R% z%a*t&!9N1Zo|Ri3kTLwp6r*8H#?QEc zWfD=@_5VnBfdm&k(&Jn&TJM8tw>e1$1M zrJKl&BI(5HkN1~QmjykyWb_o3=eL&!0}7AiL}_3MA}~)l5FL^Yt=u*hnMfX#Xj(LU zmed+?IjQROU3A;<5q*1p5|mUu#a@f%TyNH`b>Ue5^^SQ=AD3K?{mZaE7zu}!yzTw@ z#PDW}Q{xNUDk%1#cs(^2q?1ml_j}zTg7k7;QzL=^5k7>QH-Es3ROz>?Qzuq5t!r=G z#qgeMCXL5S65{y2-{fLNCnB9r6-qYWPRoeSl*r8p)7_4$K6b+pA*34kdT^c9&uqK? z5fRg1b`bF9Shgs%-wc2`b`y1Pu?5vOk+JmM4K3!&wbseKjX|-71=qu>Q=o;}AfCD0 zwXW7i4~XdzF+ZmoSjI>rVaIiH`+0Z$Rf7$nVBmyO?WX%n4764^{k^!pX_wB}nr%i7BLwW#&Su=dq^VmziYN}_w{&>6a zBbo4%40_XQx>Q%=PhON2@0eBFL;U{Z6C`Slbb)J#K zP|mlwRPcLFj7b93a(BBd?ln4})gD2d0MSn0w;oW6x10#A4rlc1?NQ zZo|J-a;u64b$5`$fLi9+7?=#&MTML_%T0DfiW2T16NbKAbPD3T%qnexGK~w520nMm zgx^RmWEfk-PMqh|G=f1R%08%ay$ekLJgj>)Acdj$g1&JHwq5&UNyTb8O->M8NF5(< z%Hj>G*BQyhXI0L6zPL~mo(}*MrU2qN{q}U)_zYT2F@vVhQXEIy!8fVQKP4ijf@~c{yn40 zm6hJ`VP)8|m*d(^wiO$269BVOMOc)IYrTmq?mGIP(lo2{z4kNeze#@@fiaU7s}S&sXZTg39g-zcICOc?p=a`JxkUy`7`J#PXhV$w|U|Jpc||fpYD? z{@eg2_*C#bR~l{ZfU;)QAQD8-csB1}h7FWS2OGpWs#nuq7o}kp+k=O21=f|5}Gsq4}@i)4o7~f%vv}#SlSxI>uRzXF!QfDgJ zw7iKvUyEE2dn3a&r@qSPeu?UJmr8JoJlF5Nr4lFY*k>8p=H%^RW5IqtybE86?hLJD zz17VQkuF4`<{I4!CMCvo%&q5JP@_hSsB8ns!oi@e!YUnAi=~-n?|8b&9z=sXS;q9~ zCVIbw@rkV`aPls!H+?2`QxokHQ>MTPi8rqgLwGv=T{Vy97xpQ1HaNbjCs_s$)K>^h9$T@Apkz zWrDfSS0+!*p_BygHce|Kh2Cb!^pw+2GbA&X%*rKBoreXH&Zr4mVCORmf^&bIK0uj@ zqp;+uC~h;|s0bQf0>&8mA2~qfEy5K^5gK(DpekY39wm3#$8T*>_vzyLMTmXX8wo@*{?F!TpJP zmf>D!x%kvSVu4pO_R`lal-7=b$03_*hz)wEZ23s}-)?6h8`Zv1r=&7)U;!n=F&=43 z37CPKdN&Lt>vZf=-7oa#NIp z<%@Qxw@6awYaS;eb<-@udvYlb~5 zDoAXFIjZ+!Si#tJJeeg+tBjMyaFKe0cDV=wNYoR}Z^zEn&gJ!1W?iEhqe@J#0$*5Y zAklQMeYDz!bw?~=?qg{1V&vDb)jQhKo|GARzOE$Sfp~5wfcJZ!T^XI!4k&0YDWSCZ zoiwdl;ZM5uw-}>*s})=jJizK$2rc4q0eXq`{WvWwr>I#RAC_o^m^SG|CI$jlGJ7<5 zX1yYny+RyL+pKZ6IAN!Wfv$nX)5Du7dUb)G$25CuKUrR5l&DjC4xi%00i43=PzXWH zfl4vn=fgr5)s7Y0R;XjqojqfDSD~k4qdnoM(7NkG(ftE|NF+rMKB9qN_F?=ee%1S3 zVXp&%?=|DJGafp;UqRGe#(AXcKBj@#rO#(qpnM}zIpo_mR;MC#u56@x{2i=VsB`(K zi9PRWbs%fx#_K-kR-7o()E)2Z$Qr$n?mAT+u!yddV39Wjb<_H?ho8+-L;4Rw^P?F` zG0A#Er;0o`1-))_oC%bk-ZLgPGojNcOTa|{dmZTc;5Y@*Ssd1$N^tzI1=iFM!O^6T z5CTyV5s@dK+^v7vl4U#Aej^`+pe|Gt!zgat?YQiLU%nzH^1YkWxHAPT8*7h+Wuo$p z23bDKr9<751F1`8kGPy2y-lL{a7bo6h@2;d|2#?$^f~81*)lJJwjFlv$YRPEsTsP1 z^nL`VJg0)KX_DlfGCCsuYyhjvaF(mJh)|JA`hy8uoC{uEKk_M#5?L)UH=R_&PV4!fvzo8w5gPYkn7+B(Kr)L{#k}Y$LLX$&rG8Hp&BD4SYz3Z`^?`BQS_TlRJVq5k)%!< zmqS5iyAT=+{KY2+0-H#rcyDY3l3{UGozb~syMS(R0$d|Ou}-cc?EOV4`{SRb$8J9k zSM>H!2eVe-hnX!#>7iGU&Bwo1QKt!Hmm-h;IGWe;D3MwNS)()S z!F%R+)UFM;%>6}yG-QJ2p>f#*Bw0|_JSq~$QLCEYdb{0m@HHhPi3o7E!P6K3sD;v+ zBpT%enz(dza|^HVdf@}4e2XNkg;B2*4h6ts8x|+I;l}s?Kq3SYc6;=71w!9t&2_Z| zL}A04S(v&^1LQPoW{`kK4J6Z%2S~a+{32L!;YDz5p0YeX%P`m9qpsW zEs^xPt0i}kDuPNdKOO>O<6i`WsUc03@CB%m`m8?ut z@cDJ%KX~@r97!Da5kZxq{VxmxHee{S20Oumu2Zx=_gv&K>@9KrG58%3GwQ6`X2el} zq$TllF&6_ozkIE}^OU$}9~jcFUWYPnp<=*2(kk~~#Iy-J%lrxS_Msz$Yny}$Htr8V zB1zgvXXQ(p-3k@P-Oe!6nGug|hj8lc&d-H;6FA%xoGvPtJB>ERP z;|BO^t*Yz=4t;3{1(8FNbA5p@1ynOFu{csmP}`vCaL%nt??@EMEypX8zVG~n%OJ#N zj5?@fmqTx=y_A7N(p~vbrc{`qbeH1-GfzFa7aO8oFHzu=@>pbQ7NFK{G>nkAtV3tA zN%+sqxgdUH1&EOTbpDx!`t93ipO-S^{(FeyjDc7pqW&0y-yz@Ojtb0ej1DLBzkfan zfFV@8nge0!a!Rc+3p5UN6bFYsUkIM}wf`yt{}bygX>F)*jp9`_oW;zGow#XAR}3X) z)z~OW9n?I5eV_AGEIv0Yh`lY2H4WmPYD6Og4cCC!(13WrIG5;|MWHgEC5;T)W9+}i zj~2>PJ|5Fb>`K7kIY{ic{t8k89vU;QwMetm-<(Aks^%T6s#bf;BCuKg)KFFPmQfvQ zp6;3(q0zp-AkKLHM=-$c-?cU%gI)lA2h86MFxq&f)E10GT$hEnExPgc8JrwzCBZH{GuHcLRw+uMlVRAiTO*?WE2_|R8y(!la5J^9z3 zaVe zrXPOpPWOzZQ7P#yX3oS6J~iY6g)>`&WU&Yq`Ff!50FuL#j1h*+@R*b8>5|QPIt2gM z=)=si#ask;^_DZvHr=(1rpS;L4MoBu)~&8*v-(ZNEVxgVW^RQb693j-s=;`;(GmR8 z=3w|K^1rS%7vUdXlw_Fpq-O0x2FJ4N02yMDF@#lAf8 z8&(_W+Xln^(e$k~w+*$ihTXmln0sc;k4F$J#UCC5jQ868n+f`b@z-T1g^*_SdbK|t z4{N0^T9#(d;?tR_68S!EF@pecLti^6Tnh$;2|8HKT3x3>HTpeqO;@wuaoZ%r27B<=aN0Mu5okG zkkyqD*WQ&K*T}lp%%~8`UKyDY*}7aSTSk-$HzQdY;VPkQ%19#V`@F{c^T+SM-+!0; zy06#kxz2f<$2pI)4Hk&wBZ%1DL6I8eNAc=^RwDf_8l4Xg4LBvUng8k>=3Vlc)XMSQ z<>!w=_gwipPf@^RbL3-tcX;^A0)8Pj+AHFCU*gaPh*RmNgDBJ7ck+9a2Q-otX=o_{ zkIwN|C!C@%S?f7zt++-rj_=}lelf_5ApEUVxLCMq`5rb@5THF+a?|(ZwBs`(N z3+}GpIJI>6cXbgzI(D)T@o|`aYRl(<%uEI>W65dssn3UxqYr&Hijb*p^|4?*!G0(E z3!v&0Q~~1?tFehVGQZa&m93M80YivCU!0w6#AY0332Z**jVw_^NSuN+Dfj~%QOXoIcA0FoPJar>{3U4t7jKa zIWM#a_?@ds>+VNyH4+l?^iq{OL%5aU4iCYtY-yvgJ%Pf)+nl8p6Y%aoOrZ`JNbbf! z#|o4sy;?{q$<_7axi5*Cd-mBNEYLZSP9#PD*sR!`b-=m?3fE`y$!2ec0|P4G#n?aN zkLKBg1;QD`oIf2{!~}AL_b<};To4~Zo3hGf8_3?u7swJFlaMP90?baw$nS|S`$gLg z6Aymx{H(HbVD#r6Yi|w@9c{h)cC;ZewLO#}HCacr;9Ss>=H|;M}h=9$Vd1s&8ypD!L)) zlEq|gG3p$-yC2OdEPQLWR{IWt5Y`a@q33BYBWr|Wy9gcOjEapywLhDWtxTBmM!{Xw zpg-5q#7fbIX5XxLH5qx;aP-Er@M?M7mrtCUvNwErj;^ZKycqXpZ}tMpmF9Y;rx z)HocA35d6c0`7N+Wzm(Oy}gS(z%FOV?QKNq1QZwJO$b@HU&}V{E|rzK@Su318Z&RD zmlS1sAp0E-)~v;>4^UC_pgcDsMMX{{Y_r_bAJIgfo4j%vMU1X zzE-UC_q%1lWydun!+L4@t{ly@5fCfZhFMsN41$Fvu>=57a^$RcCj4 zZwIlI!Sk9+lvOfj`h$K+=*}x04U>&o*+Nv#;wvXb&PBfh#1Jxgf6u*FYIGr$%;z7_ zrKlF`<@`i{wz&POP>0;gNM^;}(r>Yl;E@Ow=Oes0?Vt)N!^8)NkHjc+-5t z_i`*gMTFq_$VW-CCHQD#2*F8eu}`X65Ci;KUL~t7d2#LoSQWoSs%Uen1oyYb&WD z@;8_bN|AGW@B{N#Gb5;!i}A(FKOTH(_T40Mu1lF}7a??E-V|*Zp|Lm0o2x13jcjXD zo!{sd)&2>dBEa z#g}c=g0#+Bw{X?{pufA$8D_OI3)pbul@qUQXKVJV|Ad;wOP%~^ejFdLYKGkLmyMlt zXZ&XDoWM=&V3XxBf0(gMg3e{BQ-a- z|Mw=Rki6=UAVA@E7Uq-exH%XwblW-9WJD_1c~N)VA;#ybd%p8I9Nca~Ca2z~k6$Y@ zsc2K$Urz+Zf2NtwZH_$E1|0sL<3&ZoH2^Dk(H$-PwcazDSzF=1Rwv39-hC7ip-W8xd}6CW*d*6p{%{7-x+>VxUkGUyf9R;qUEOx6INO#Qg@%WA zKa~LS-`rYmv-bQMjP^&v@7yA*a{0x^{goqs4JCDiI#gg-&rb6lEw$@O$Qh1Tqo)zg zmH!OX|8OnxzTvKwLGoN$wBI2cPoz72?H z-F}&YjI?J_p-YSm^BxZwQem5Oy+%@Vh)_I(oX$v?ayVJwzrA@SJJFi4JVboMrOA7C z2@o~o$6%K5AtfhO?tCZ0QHQVJWc{AX$R=?86u0ZRPki)M8-e3^rlngAerM2P6k%{O zTCWgT1{aF4*Hb}2wn{k9Q5&TKp*xqiPv*}>tPm#Z^o+f!a*#QSG-ScVgh!Hq*3yI9 zz3M@^!TUQzah>ZVBC_BQNIz5*H(tS?zXb-9Oa2_#wW$5Se~8TeQ}J`gSr+4u>U{KM zNk}-UiM;?M4-put7WxbvEZ$W9G2LRy9N#kLd@lBx;aQGOAy7mtaS}y?7o6T%9A;VAWL(SAD^0P zx#U#83~6v!6?ioO=3ItLf-jv)g72r**6PG1hE47xe~}tR!oKYe*5X%`IG^U~LO__u zKn7lY@D~Ck1*0C;MPW4BR)hrh3$mndW?rvT3tt5h3g;=mg*-Fz)VQ?QS^{DWnKHHY z7?b@qwNDP+ROin*S{yHQc>sC3)iw=Hep{Yy0|*xU z5_x;_0M;k%twqpD&e-;)N=A3NUwHL1+4}GQD2fo}n0+NjsQq7%nsGVTXItl-Cgl$W z(C0M)4?l%5YZjg*)H$;-$gj1m;duXE#kZgF;u3urYyDWEVn_G%r7VQ zHj#+>q`FtJUY5ZJpt^-wFhLo$iuuV541l#i>N_3oo(bQn>9m+MI;RR!{1uc(G;WNr ze1tI2TYOBbNu_)*3QTzEa%+#U@Okq52r?&Vq5H-$W~1wjZV-{>IWhwY%GBi9m=uz( z@B=GgHpGmMVij|;xXEWQFf?3gB}X3w>>4pgX$b@%Y7HP5RLC;q_L0Pd+qK=NMp-|s zA_?(7jO9C-1zjV>?YkbjFXTl<-sxAkgw>FKqL$N1%(J4P=@*)dcADrDGJk0{%Y(-o z7%^9GdOGwX3_KEq)@{$d`~vL0JHYeH)T^1-7wwxqQD~i{KeUBdDo93Py*U2HaEYPJ zY>LtF#%E$eR7g2p9DBbyMePSGj03M#IS>1dW;(i?ULR{v8f0 zjk)WCiM9q%^A5ZJ{GdfC*<%eLN2zJ4rQ8Gvjb%q5;m0x5W{KD@T1x(D0`UHbi*kbO<)#?LJ*{i*13&e zELuL?`ok!4ozrYpm=&OcpT;FB(g5?|2Lz&&5R=sbQB;E3&?>-aCVIm%40W7Mj3D>( z7Y&WBPp3w2=a&NL^+1iD+DB3B#X^2I%aX8d_*W1sP=hRc(^3E(W~B-d^rY`RjLpAQu=-ag)g*K{W^Aej&hqj}(4UDf6wq<0QA-x4npDr( zv8fO-21BksCn!xgah_VZ!a^!BSg8B{-cBBnRh=k{*Ar}{^Lc6d7^l{Gm6zc5fqM&} zNkM0$Yh5o|0c}R(nAT50nX@C_$%B)YWYPsV(ZfZN{d#-$#FSuULKN^UEtzp3s-MyL z;q)X>8vYmwVi!E1Fe)aTYFwgvc%x|6LGO*F7i6{qDUiW;{76-9Q3-OMWoU_*R$rp? zM_W)l22{?aO{N<=03=E75(l$Sk?IeOxgBlDt#I6!#oA#!8Y4hN=L(Hct8U0$kVI1b zm+p<0kXx)aY!$;1A@+d|+$q=Baf*cJ<-;C~9rxWf>T@Zq9<5$x&liS@_0fSXpJE78 zXp>e|Derqk4#4W}=fZ+Amv9{DpyF~f#+<3I{O@?J-|ivX=FLjV8D3U~W(-}kBXThRS(&7hJ93@+0$u1yqiySNe)=j-e}kTV|ey?Ym#O= zF`7o}YPL8+*SR{nDaba<(k(>4bz|5g245U;04=3jSOSz{rksu0xx!CSUhBw%1W=9T z-wklTU~_u=h!J!rrz3TOM&ADq`0%4$p{ce|x8T(;Z-TAE?)m(fwAzxP=aH#aVyaH)GFxzu?ej1szJo)hz2NF4oDozMGE8JTg4)oT!> z?Cy_;<@x{&fNMwudsvppoxoQ56O`jMuvht?3M9&3+yh{t-{O3q{U;DX`$^mND{PlD z6&H;^AwFpHm>y(Xy4Dpg+EhM)?P69iam_Ddpo?VWt;|dry65Q_9sb0*bJ_@c_w^e< zS4hJG3l(Z#G8LwjJgj+Cb7kg6@SF}4G_|bYfYA#bi3sUM2-PnDn{}6RNGwb2H{fb{ zPJuob?tnxr4*%H%9$r$pA!1gI9gKl)LQG;6OrZPpSw|uqx>Fi0M^F@isWhgAI5LK-`2iY zraKNtX36_{mW$nYsw3P2^73630e&J^x%E@}x~)h1ivErJ7lU+$+ozc|qoZSK#+wD% zO-kjXpQfwiMT`5glW9aEx&hFk&>7C0>$n(W?Zc{>6J5g~Gexp$ybsvY(pU73A~2-a zz@s^I>?@{EfW#^@gU@AMx}8hl+gY~xSL$@*Dkfx?br9F#(3dSsI&m8DXQ^}^RCMqV z%SN6iU(uV=2mLfq3pl?>Y5WRnjxB;~vXw~fpz8bof~pv!`czfqQlc7}%C&6{i$+6T zV3X6=0H0yCE)hv8DoJ@-iW(bFVtLa&JgAQQR-;P2q!K9h)$pK{AXxvHd{y5JT0~%j zl&&NGd5|v&K{6gqZh`(pFrxZ%cWXJ#2vzsohy4$0tz++CABzXexe7ojX0jwQ#wErZ zegZ8GID+r7KTZEj9sB6VRmwn6F;+IszoFTmn!|9xaWmfxy2C2OSp04gktS+U)RC0D zEDA7(>DHOC1?=l+6&>8I*UwBl68l)sYD8&jbx`{v<c&#Z-b5{De{?~ zoV~WQOrmdq0Za6GLC%gR*#&%(-qfq12Y7OedY3}Uva;NPdBm9|rxvCa^eq{}sT>75 zQXo=)8`8|^mG+^b`h#k5zd~^K)FrI|f*|ZtW?~cr%thryRmnQhZGM%K8Z@L(ztZl0 zp;J%0RY#$PxulnBj4qtvB-dn9yi5X$nx1hbhTI7`G4av_!D7Nf*i7OF zE*OKrNCEEAeBxG!=jWP>vDiEI!|^ASG*bk%?7I`SCz>zMnTy2LMRcqE<#gsRwJnG_ zYng>=J^efUsb?5W%?OkWJ>xREx;(+3==m9B(0LmOF2ZaW?9*+~5y7NL+wZ6KbhRRt z0A?N5`-)g2&%la9c{Qgz=zGGzNs%ZVNebi75#RU)`p&q(Zjd!Dm7cSOue2JO5}>tQ zk^-ASu}%6)e3}z&qRpj zm=Mfm(P#kn2Dept(mCno;w1V8woh1h2*zMqZu|vDhPGT5z3D+46%fPtZgL zSq8UpO!QjYfoi^PpOHNK>#-A}JE7i?b_=Vbpw}XiMwUl?i=`jDW_8@{>utU%EhR z0xa!vI)(c@)vyEk%FAKC$wrT_b>WWo{R+Hfyb`Y5Wq2#kcV`GmH5DV8n+U153|`6Y zZq}@{!X_M#9t@oyc*_4myz`^3&r%32Zj-|%z>ov|$W@X3`M?&a0iceSTE zcnw}D9eJMZ2hdf6&{;b#tIAZ3Nj^H>8va_7I+%nYHa=s=vZ3IaS)6!9K!P6fiLfc3 z15%VOEJN~U{IiU8vDh@myN=MtYd+WGB5h!y$Z+8MOPFvLik6x|A|aEYknXxZ(wWCr zu+5BaF2*t^u?J}$pE4iC5X#JxkkDXMte5EnD1D(veUDE6Qf+SMjZN>$S~MPChu{T? z2idG=HB6{wYm@9~QB*i5X~82J;(7=U)5IBoZ2XLoZ1#xG{e*?^`jgTVDerr zUAG^J{bf#jrj(>(v2bc!UV?VN=d@5<*~8vgTTEd$J`x4oglCcnb4Lyt~b3oa5*I#HAHs+yfFH+s~qL%CQxihjtB!Zux{lV`e_ z#Zj%m?yQbn;p;1!?_Pvq(9TVBn>d~+Ul1NFwFO^P+>UT}GKDXD2mi+NN>WRlok)tH z{BbI7bA*h!px08e1^~-?x=@;52p8?0*hAkH)YZbAI1p<3(W9GlvswmuNAK?plY>>z z&MZ<6o#i3RFsB*SAto57T!XloFQTpA8AlcWtY|b7ELg&6WRRm!YKCZ1LOoSw+^@|- z(fgzhj>@XAg|VT8o1f?yOd?(WO0EX<_mo0^he*UuM%u_Wsxf}bOR5`!6!nB;P-lkL z*iX_?tk@&ND}I)rl7Z|DO1 zC>~tk{vborsT}(z%KpK{P4Aw!n3NtWg(txDc?MfF_NO&G4)U?J-xJj6m)u1k{Zz` zr(uS3T>Ny834Um3&uc2zkBX0^G+A!GckGZ&bt~#x*Mdm?m~rY=1bbt%8Lq<7}h z(zzZAlKqlM>8P2u+CHSV(^wp4`*t3R~@oR)|bO zj#2hTuM-)`7Hd%vS4Wr!kGh_-lO;{C#3nP9w1a1T9Wb@mIsK%9Ofn$q{A3~TL)bs*`?v7&_7r40f5T>p7wn?-ttk1ZLD|+rWSzzb~}#*=Is`^dg8$il+aU)_`;U zsSoZqR5a^mS6AdFF%fm-jK*y|o#=B~4#_bWDYD}YU1TuXH~WV!t2k0Wgr+7cqf!~4 z^#y*8E)$6LHz~i?0N)rVsjlmh+z_X2y9s+cf+yj;cB$Ggfh|36ZA^M1Q=~ac_VZdu#lUlC7=X|iiOMIzLdtaf4A&u#w zh1&1TAKabvEk=(42|NpkKyvkp`WGIARhmy|YjP7!fV%O&(RO#&s3XP*RcAW#yZ-1dNTvY$CWh@A2 zxKr=BDe^!c8zFT1Q&gD=+d_USkrq3FpX( zTV;9hxj~+tXJQyty5Ayv}7`) zsmbWSzFx5ERhIKTSgj=pB%VtO^hM;bE*Nb+$WSe*hgj8@f8C+OAq{;92Nq$Nl$_~G z&Dts*j-gqnD(qkqM;<88eX_P!UW^t<5KJE>W|0s*$NG$qB;@z)8aG;{rWE|y4v8yH zs^4NyQ$zEI4&Nm~pk)Oz?+W$a)9~LqSOGI|MgDfT@&{11Ph_7unM2G)K+QG~ZtN)> zU*kcp&R=i;?xYh`IHADk@K(13&;*x2dfcryPF05~P2so@=Q8ienl=OEpH~|qM{fJUp^TSdVWtbXKVzLt9=Y6=JZjo~(hfXw?+)B@ReQC-V z-pcpN;dH*DQfI&Zw_tlIkT&<_;r&U7(iB?jWR4F9H_QwH@8{BHv3BurJ~x@&WBsN6 z!F;I?4+%3>qu(aiI#)B(;Tl88El;EV_j9fg1@FlRS9_>Y<(`i{!!Geyp zn2xwavN&82$S9cVpO^nHgC5^PaIJ#<{+Mi#msgK4;>0@dwy$FOm z8?Q?>L^T9pxdD2U{`)93ENkTA+BfiTm!|oK;sD7(-_uVXZSM>|{%RVdiIm^TZoY7? zD!}9Fhs#mth+o`D`~Ua?$Q*8dqy+^%IvP$_Ec!g(Pnr*1l?$GfXI9f?1e_Fy<2tHG zc?sl~Y-J^43$@cKlgBmkVmLPRN8BQKX=jbPf+Hk!m<3bx`TiMiumy<_Kd|*7G_VGW z5qn1OOn=u9KbXqkSwmHKSU2>~*i3g4KiEvu8IjX~-z%jC{J%Fs{pu3IfySZTf{h!U c-=_bOX8jXd(9}Q<5c^eM(a=+`R7HpVA1&YJ$N&HU literal 0 HcmV?d00001 diff --git a/images/deviceIdConnect.png b/images/deviceIdConnect.png new file mode 100644 index 0000000000000000000000000000000000000000..4570ff0e40999458c6dc285ddc810d4e73d42da5 GIT binary patch literal 23537 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%0A16LEp>KGAwd1tp_d9qU;DdHo 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 uAZQjjiDT literal 0 HcmV?d00001 diff --git a/images/graph.PNG b/images/graph.PNG new file mode 100644 index 0000000000000000000000000000000000000000..2bf5c6c0567c6950e563256344ba38a04df5c6a4 GIT binary patch literal 332736 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%0D2t94Kdfq8b&0Sx-b)#x!64U5EuAy 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

Mmg_K;KyJQ9n8QX>>;+!%Ga{$ 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�TiV+jZ&RFDmxwkdscMgipz`PMt#|ba^fcd z{tvlvtjtnT)9Uqo>L~Fq6LJ4RQ7o-hT)676z)!m~`=XV+rx=1|nU71fZ!Ec*fNAdj zQzH+!qPj5$W-PckxD_xEv#t;!zpYDVI|VsNx#J>6!@dPOVXb@&yih5(X{&qbPQTV{ z?{tp`b%>WhlJMYoO&4xv@^FnGmBX;c74*{XtD9wBKOZZ&6KM5P-hXdFd!gV%bEP%x z)s)&~Fx`dm9tXwC@lU5S86)yAio#xTDhK>eNRf_skT_m@VntwY&o#>Nq8XVl;}Jmi z4vLSEr=+L^FY@C55T_3Dn9E(nL})wM>d4_iJ39Ij7;1vt{?C9x*EP2~#_09tx4|>wLZ>waP;r z@RXb?8r*@MsT|;U3(q{z{X&qd!5g-_qAUh9s}DqeK*dDn122}6*(67AcUJD(Zm%4v zxG#?W-3nWroL=6Tvrrltnb0rX8#Eocqs?o0I#-kQ9~2)u_}t|jJ`8DhR1*1d*jQO9 zzsKr7!9$x%f|mdN2MW0<;r4sqSVQ@+{BRm^Jsfx_kBkZ}c=jzWHH#-hqnv{m<@;rZCTyDGTM-Gssp`t>si(Em14B7G@)x(cjtY0PQ)*pD|Bm zcytq+dwK{#NMd~(zL!y{3db+Ko3OBE^8w(0}T?bz-hm(!kGRXI5 z?-Zb%X_8!*CR0dIUEpFX152xD^v}=Guc?z$aBIM{7!@`&pRUU&EQE%a~n^37HQv&hZ&sLEfn*{2*GR}NDwr3{o^C6QjPk8F&e|xAC!G=)%baBEWq#u zItBjxJSIOCHtqd~L74Su_w4a*0U^IaAAjZEQ_tB`dvQ&M2WGn>a)FOpv^WK>Ezh$j zBc_^?kE92RWvZc9Y4Cn;?;_FsP{L1{NMn5TPf_k8cj`F=oyF)_Cwsf?zAuaZkrLlk zsG}Ftag5spPBG4-u8>rhp_-7x){5$E;`Tj+E&i-FFtD9KO5N1%5#1FWP`orDHF3^` zJv#zLH`XpJ3xHaBgT2%|{3jfaLX(}r3G`=ji-8%Q79DcPAlU&L7~>yDoFm*-j}>xk z9gImq+g(4p(2vm$PP>IE_JPL(+`dUVy`q1HCBs3nS+=X5;C)I;;3ODezg;I7|zR?v&J%R?Nao=E5=cfm4 z5V0^%$r=CaL3#^%l-T($g1z*pWyChlsdzm z<^7qhod`y?*jWhInnEa7_-pS0|0mU#%o2!n>%u&LD{0FfHe;&qfq$B=tyO`FRnpES zE~4md-T$1*mzc3=r_qRv_OH@fpfVDjy9fRGhzwvK*eB~ps$YHWd+{j1W7ITnoP<#^ zljK#;l|#|O-NLq?;;-MT?B0N9d462<&p@iHAN%RC<86WSch0@yYc^|K8khYe$IgP8FK&+Qy5{`^^C8$m!Tamb8mbEQyC>|s{Yn{zp;%SW)>l(F@`!xL7k zoyJm6gh9LtcXSe_xBmn&>2@mCM>JNgnKChS0PBN`9Ww^%^qZt^J{W(kl0n~%=$9?9 zbC~yp6n9<^wR>v|wU*DFw`aTzxJnYDdOfaT(l;~SRj{Nm-taW^*Rgc3+R)D< zC3Q7`gaG4MHJ%R>Aux@4jJ8Q>uylWNN>rTd) zGoQU$W-R3AKKharSA=$$-LZt3NxsgWnVc2P7^rbtDya$7TE7CCM9X_^o(3&qJrfDb zpY3sS7{-sw#k6yHr?*+S#nqx+^_A6B9xG&b+J-TatZFY*QtklVr7WXF`ynoZm0ilpl`(W|hF{U??L0E=`{fuTy?N$oMESSF zcS%uBxyhC-0bbwkm>;qgjDc;{M{A`+kj+d0ZLPfmd3kP@JGYubIV}yNF0z|(`yl#Z z?`L8?+A8f=X%8X7Kkw<&oz&C!!v7JHE6O+P7zT-E`by~@*5PzLxFFJ)Dh~smB%M%Y z@36xII-~cL3Vrh;=a1^n9|!Ji+E5UGx_nlzQ(x8xZ{5Ui-S^QifGxsV4sWeqn2=5i z@-)86;%+BtP^RYCwB%l$hr|VMccIyB7Av`oIXLdVtogv$sHr=Zi4UiX&3@w;w_Rsf zsT%us`732mmM@)1t5Tm1Q!X`zea1M3!V-<}mo$biu)V7Wg)HzUxa_}+ZBs3*NIbr> zN_E7|6W`AD|J8#_L`rrS(IRPa_8XTaAfV2q6Xpxc>1cr2vZjf#e5m34Yh;+y3Zs}$+ zx+F(R*YCVP-`{`xdymI?o!7bV=kvPS(XX$*28eZ(XJFx&xA~Sv?rOWfHn9sloW2WK zz*R*(Fl*dWRxk6PSKVcwd<2fEQRjeuv37_)xCOuugIROFoWuzX*NbfWMho3t)mV?K zqgBM=gU%!l{ZodB6N4YuY2QE7h8#*tWp8#uA*G8!S80Kp%^u`d#gvkEcN}b93tu|Cqvf z9U(=Bl^4~u51u5zoL=;ID?acLFnWW71#(xf1d|)0w4Ggp`a1G}?Z&_1k-Gi`%aC1= z9iza3R(r$SWwx-Q#QP|fEip2GYVf>5%2yo}1mg%G?JBbpjtP^}6jt?_ujou$iSAP) zEN18C%ZKcDxB&_o;Ju3%JX6q~e==Hb&)w?s{WTJxHJgnW ztfT?Np^2Z#<{}lI3c~7tgD$lJv4IWYnR99T`?eQI2?pTeuuZSySR&OIm=7qUEHxyU z_DkFIgU*Nd!ai@Ppn(jgHDH2R8>tiKT&zd7l>F2$z)rOHQC`q5MIC<>Q{7NL`#&(%puUFQ`5L`=M1m`p~EMt@r2k8lC!xGB-ARwHIv8 zFK24@`5`i_$w<;#hqDr|AK2Q;Vk30|qnZ;>H|`&PoO_Odu&Qxg*uJRRvZQHo0~QnD zVZI!kiFBi041&`)$sLw7u)4lcji(8&;E~k`BSjti@F&r$FY9ocCA}K>#!SiE4eajS z>TJfe6`cs>M3qzDZR0WuFEvsW?F5)M@(TWxxC(3v<2Zk4)4PqlghaR9Ws zbT(+ObhY)ACF?HUXi>eYjI@3hG~edXp;1HBNGe2?v2Q-3Kf(KQIsE zL{OnITNe}qEO!kR=a(z=z6%tMxgqRsO-XgFIUae|VY7(5^RRU=)+NKZS811J*KXo- zl7|0>@$c^qFEz&w7I`NNjRo1gaYa)!ObNPsu?0nbfJql!UTAP z>};35s|h$LiA~g>WPFD_vK$x=vuen>9GGvQuc5=&=v=haRk6 z`+uAipBaDYdl=@D&Z1IB8$GIWY)DGaA24f4AHxz>)H!Zfwi= zC9iq}fJN#Zo+Acj3?5A|oQoD_eftm!wiy~15}g&v3?foF_9@v*cd0KRLdGb`o=tM$ zzLlz$pGj-I^<1%AU+&e-5y^wsC4IJw)4Nux^2Or;DL66Qr``P3w1gi@%x|PUcVXA$l9z}st=eSz*1_}b;~yHm(rRF$FDGeCJE?<4t9>g4ZM4UfyA02+XBT*96@F!=QO-<8P^{WA?qgi>9y-$eu zs_@zkG~Ux#KAo9Q(%5XAV~(`9gd^qJ$qMq$jcd9&ty2(6#fSfLoqD-09l2o;VIOd5 zW>8;pC_F2+`<~Wug2h(B!vZ@y#Elh^FygqulguIVxwPdGOzM>e4v5qax3E48bDzX0 z-X)Pm8v~VbxK4#2d4uzlgW+P<>*}fpFTXecw3y@1VWe3a1`(D+e-8%c+N{3BVI^)u zyYG$R;TMCCsj^!H$|EzJuTxDZqC)COW=RPm)Tut4Eg9P{1D|S50b^#a<1Hs0loL2x z!WH@Kd<_oKxN)U%HO~`vVPtCWpoO+C_eESZF*ERA6Jl$+=AtY8Ie>H&b<#|0u!0S8 zJCZp5=_)}*$HMRzIDJL3^?Ezjv*mqi6!eW|7M@?#mHy?;)SKk6iaj1OQ@l4vHhSA- zoF5Ucah25Ntk`dSZ!R|A=wUr~sU3J9<@jHgY=Vm-P(gxbkJ0-P-aDMi89xItazctA z=e9R%i?Ozp7XOT%&I(J4uB?YW9sb)Nc&FQGKp1bZc!J-1gTr_+;ySY+PlE$7sa}9Fly-7WQ=Cd6CvvNzw)s4k~pWbG5sS4*c z_h0QNE|}&|47G@jC%95Coz+XN_fo7=8;VD1RrNsF>#vX5k2G8jV(PxOGk86zWUA_t z@pro}1`@pt1%sA#DecV743t0yqStlwe!f9sAYiYi-0vco5d&rvZXAd8xV{^Q;s*Y^ zgx3ewD}IvU>rd8a=K4W*XPqhYaZT)^p4_h1fXk-0%(s%!DyCND6Dlv$$6GHQ4a7#9 zw?ol;FKz5;bX=)mGOzb;oBhc^?l9>~;s{_qAqIF_+bj*QLQaiBVo!V~wiC<<5C${! zsNB**L=UY-^9f^a%gMkqaL>w@dFp*Zz0j)#}6Xf&A?cbq8s z6QX=}(~WV_~t~XEE*JevTZCn%Gx8lI!NlrGRn24QdW=NnoqouY~ z29}M%u+Vm$>xxyeZy~bU?4dIX61KQ%mKjSj-%L;n2VTUcy{{UzF&`$0CQ0$5Qjhj* zq?EU#n?BXn$|D1qh5gU^JI|&xXzV^Zv^&*QsFd^+xDUS6t(DfI+LY*y7mv5zfv zmfWEah*|R%Apcfrb3bkO;#(RNnt7FUspA!^FCJ$(D>ZLhr#mMX$kD~l#11ktEtcE# zh7h*Q(j;X*S=R5FdR*l=ur-islTl^%FZyq!rKz!WGX`6p; zmK35VFZF-pSCGqJubHLPfQBUDB-Pg|0aKKeG^lUwjgPES0BS4xp!59RdB`YFWnVc?)zjWs$GV`(AjUm!ngBvu;Y>^rGdDTkuQZad(f9eQ57$G z;cl`E56g|q1$D4DqN%zUdt%8K8CiLyWreP|>a9Mjw|2 zc*{jzdtvH*Ka-&s2@oW!oh>}AC36nnc$S+pq-p=0?sxlj%pL~il1-)B@p#ug_+#>; zk1rCkJ>2OXTSdZ#c>d)5nPX{yo54dy=d7CV|skGcM$&;!Zg-spg!pZt}C1G*gtAX5VH0}5@*(F8F7}%!k>_EJ2f`>3Dt~tufP+ne&h%3RgKm9Ed9$nWyvC^_qIbGAy8Rt+#4LOTVev_{ z9f~CTzjd67xl7J}`}RCj55}LGc~ki*#vTuoAu}7`#z>T)uQ-t_)yRreh4}+*plZHQ zztNgyY4md>r}yV^wBza}2KFSpc2)7>6KLl9a6nirHjOM#6^Y8UjNh0}X8q?$Gx zI$_WKsC1)6{EEAj2Wt5#-GrwGyzt+_JHv`aI*&P}tfc7)bQD3uUvrywQd?LM4#MKOz7X^nJ+@8EefUQZeCqmE4CRODcjw@ScL>XL}#VF&lflS7|e8%$u%mm6Q9YWq5* z$t><4Ed8=aUBs3_-CtOb=D$Wgu&I3}w%&3m3bAo8^yc@4Uz%%@WMdz9Vhd1bj5)e7 z4}A=|k+AXSnI1)jl{@9xm@E^s_IA_rr6q0M_csURt)>Aze~X}hqNLAo3S|GN%(vHr zeD-90oo;7x#Y$R-vgQmM1NTtAuaE@^z7z>qrxKb1h$9o<8!v4m-((bD=Yh`iv!%DA z0u|3y{MOoW^Czh5Ei^2i@OeeMpkm+x)6V#a(!KO*uYZGvk@A;2er0`n&&EP{-u-RV zeja~g_*rl}>0a`=6@%NlEywdl%dtJ3s<2WM_<3~@PH>`KeS5s{c3=UQIOmqnxb0)c zAId*SFl0q;TL*?l&yiw=R~}m&MihHjh`g%6yAN&4lRbL1F2@y@84LEKQQn#Ohz!7f zC%g++G&-4l3Kasf{uhNOl8r8^U~KlGhCH{W_;x1p=>A8hd6C|)xxQfrTg`9XpyhGy zxc=Yn)UOva?4i?@v;+)fi}@33d26}c_3JwJ+r|wgQqD(v*dae&2khI~@=v9a#S3HI za#W?Qd%4+sfXv5b^Io%>068JY;$)Po^WC?5gd8{ikKvsu1B`c6KkRFiXm~g6RKedt zA64OOFN@;$+1_^L^v(mU+@}P=6B4x;)YdQ)pmeL4rQ-uHZF_fonYxKL8 z4nH>>@<;<1Ube=)#9#5vwEH>Mp{sZ;XWnH0g!9endNum4=7d^Sa1-q7XLh2e;=gfi zvoAWQ^H=WM8za*>UMVJ{Zd!~p=QBmosH4)Wg>yF_l1aV6OHs5)WwxuPHeU~eN42^5 zx^@-QLT@K%rtdCDU*=Rw7GRF)hwn49l?`tG#0FIJ;o^ZdyD0ixOZ=#JyU+a%=F0vl zmlkTkO1twJ{HH)>ZLlEJwwN?VZ<1*}Ydh*`^@}{Q)%3~aNfRQVwe~)>WocY-!7>Qj zhJ6cVUV#@(&Q|N0V8l`qYA^s6u)5O104E6kkF?48ZM=d`UA;I^(9H)MMk~;Im+}=2 zc3A4FC7TJm+A5*HgraAnol1ud)ibbCPEXEsM0Nf%)1I*Mf&8&1PFxp?P0mNiN*ps9 zl;QNVTTF#{uPx*BF2_GY8;e72^H^7fMxJ1-`4llitH>=qLqxXPPQ}RU-kd$V!^nSn zh7n14Ne_pgiT}BF;UAyqm~xI63?@O;cth{s0N_CH0@ujb9Bz-Ndli`@ACA^8mP1t^ z@XSOQN3K~gml8Fx+HY$S|C zf}%rSmZHeUkiP>-9K=D{Lv{5M(=#b6oQcE{08jf{n`*B3yHTc!qWMc(CMw?G-RmvJ z1av)QU2yRW)bQd(ODwv5pj|9sa=Kv)`J0+4s;yf6YNQ2JiT5n33wo|A7zaOslzN~! zqJPtk57bDyL$CrxK?mK%cV|+74H`#8-8|VaWWO;|p7BZ-h~`$cxFNcyqKoTaR9m&K zc~aTGwAoL?jDk6EQ#-Ce;7vkpeNe_wp=gC$T$Gy6Fw(Yt{cIfNDXbhmZUQB2GX0^j(k%fZ$P&oSgch;jV25siSgG`@{~pPk zY?rJNg|Ks*oy-QDl{@{`62fUC?N4aoobm=`*d?LFjKqK4;wF=gSy^3lS7GX(x_$Ff z5hp6x`c0yzBlqD4IQKpx+9l0nuS!c=i@s2Y8ukYcHa?LN%2baM*SxM7pTRQ+vHC~G z-TXN*dFK1Tkh0_So&%l}Xm01RYM?NP5r1OVy0KUHSCg>Ic>v*gGtS!~`MHX(lgW%~ zxdGpouMGDCCEqV)|MxV02KmBzqPP*_gjsW#lqXGPgKJ~<&2d`6Il`dEEHjA!jn0Ft zos^dBQqzMO--|K4ko{8bbn!*ce$H9%qMOw?ErVNLzXV)#o8DlYH^~tJTJNeWrIB@U z=j-%SciJS@MUHp6CFyFlyfFzpC3qi-0}fwTg%LLr^C4>8!VSzx*LCr}>R;70K3}xK zr3H^m zj?2>CQ4C^$a<3Ekeo>4v8~i$7Yr{RM(zO4~+;@o&N@d>Ww$cs)XVRd}XD@6vyeWOm zNk3A;nQh?-v3q0PbZj<@p2T)GgGj|!4@Q3_VB6e|9&{4=3m>*y2t$Zk_<>2CVm3kc zd+7U5$rR>%tSoD@!IC(xqLjBF4}al*KzQ|^2PAxar$#l(M{hf`5z!fim%roFHk zG#Tj_I~!O@m+l_{r>pG9uk2aJZ^NLf zhEV_c-^Ga7?zgr03M+p^qYFWI9N&UQmU_gBiDdazOpG!#{ge5Wr0@d+q(sW#btFuT zF$oaTi7Jx=Px1TLQ?E2qFP~6RcyC60iQS^G{O{|m^{ma#pN~=S{_iy^w8)|ma06Hl zYxXsj1`7ktZP|{j)RS>GJcPk6@&m}`2z+%x-n3d1>fmqW-2fQ|_ncctX@6aPi}Oc? zTIb-OF&7xycT#SpQalgdJ~v`{VhmQr#Vzl`tE@t>162wzC3W}B5ACv6wF&n3xD77A z#?z*VztJX^VT1s6Z2MtH`$8tIoq>fCJ4m@ypHnUh%*av_sm8JYl`{p639{_!(l2(n zT0alC4(qxp9i_cz9;z4?vwKC}CPxe8;Ik8eSD_F)^y&4dqA68;jB{*})lY@IY!GI@ zr6l4r&F64eW1lgPNbSwN`C$3i6!CCzkI?s9>4F>NSZk^y)mqV>huEu^s|GNh+WG zwF?r!caT~j&HgUYPt|tc9W;0k40?U4ya~eD|JHtQi4cMV1eqt3X$HqZFiK$YMBkx$ zdb0|!Y9ONvz}y$YeYJOt)N*IHgqCI5N@$ydcmIN2IW@R#E2hKw1--DYwJuk-A=tLJ z{z4?6IdlHAhxo1Khmp)zg8R^RKh5M0@w5Np-@%;2Z7hk9hZ<+qEzY z!#KV}d4s~*t&T+8uJgBfg4`CFA6K?NV?Q30Fed$Iu2}I%*iIT)>a(G+i2|evJJe4J zb)2{Qc%;2TIq+ZBl0XD###+ui#D`^6Q|*`)@wY>p?EI5DJl!mv}|2&;WS@OI9RV< zAe@p1mhAp#<gfj&G?+29T|m9P62GUaU8D;B3{4Gdt58# z3nwF5R}+eo-kyp25J?C90PE>m`D^6f z02W{Ci`(TJH)K(!+CnIpH2Ap8tW(;tA_OCxj!1t;?eEiABBFuxwp0;ND7$U2PHoC= zqhj2>dR#^iSF3$7L`G-zbdk?pX^IoQ{wXJ>Y`N{eSy(CtUS*WnI+<9i$m!Kup$UHDE`lp`cvUQIsz)v-u@A(eZV$bS*>!7ZBBi3-ipm(6N${JoJ!5~Wf8D>AS9p9~D!dKK_gbFTI19K}d z@~e^G$jbU~B;;gpsxA9o+B4_dJt0C=qJjmUDv?b$ltAJ>!LMsn9M0CkH-+AZf0{iv zY~4@B@Gwv3Nk*gmtWF_r0+L?a0`FjvbrpRIcxXUMQl|_v0PqRFHoIsM=-2N(qhBKO zZpQ;cJPT4CD5_+6qFl-qTKF~8+%8^xbd9uZuB9@(iirwfmVmKv2S+YBn;8BBIG^70f-OeOCv zFhRYF|N8GVu~Op-#HguVe0t zhj`c*v10YUd6UOLW}x6M6m=8APFMWrMgX~>cMT&|kNr0LEYwn0`)nYJ7S><&|5MYP+Q_yxyZuTMj$@DEvGsDPNfuDY2w$D$G6-2%C7d`;jf*W{ktQaowweuH(gL#g<3xk(i zb&MyR9#T5CYU!dLz4uQ4Dzg++k&Q-aG!ngKj3T3aFuZc68`N%1ncQ88Om-`7e@oY{ zRW#X4xXU*|T42`ryBNbuP4gY*sjfv{ch&KQ=|5cef3&QLu+dnet4U7Tci|eIyJ`2G zMtOLR0!(h7UyPLT>w^k>pF~BJUw1Cr+x@L98WysHNX{37dcZ@ zDoqR5kQnz&e`@FT*}RURkNuz7^6%Vs542cA7F21;$!x#)lU5NsDXAU8e^=>WOx5QJ`fQ}IFuR@TIWWsEPcQ!QhF|W@HL-xg zoPU_hd#N37TyVcmPCG_$BSkimzXUpwNDhxBfyc2U>=`CrgD?tfLLdfiHy}3*-mNp+ zM7E~a(I?kuZD{uMJ>!i+Mni)}=j!lx|EZZQj6pXa5 zv#ZySkv-FZu)9y}kYyr6FNEY7Hb(n0;;w#_ft*W`=Nt^`)}9hDJGCBe(NTx< zL}ct6&i8YF!pwx1f0IcF2XVG}w244)MEI^d)MTj1^AQYFXXuqc3Pz-_{}ak_Wb96g zAR$*=Eiqft>1vd+981i`R7lys3u~)(0>w<-F7KQPQkZ(;gff^?Fqi=(@w>{JT7D&% zolbYFob@H&W5UW`FXeS^9Do38tRxWxn_XpM)v58iTT*zDVL?>l#Vo$@b0vT3+`Gy@ zOum?aA8pb)E?bkSB5v9+vEM`-_ruf`)QHO0Hk;FZ?$f0&)YD4*k*RBJDFca&0kQ}tMYUOP`&rY zu{<91t_t49qIpnE_Uab_+SV%9A+2B&zP@ZidGd|B$PC(1Nk7_=)zk)(0JZ4lq4x__ z+=BP@IcC_ZtO0GoD6#)f5h{ts7J$|`f)YRC#9S!z9QG03AIQ>fZ zslMc7yD$#TUdFsW+Ha*OmbRuP+2}n|K$p*CUfR4Ds=2=ndUCST9c9E%KN_Nv2^A=INetFJ|?b;dXDhJLQaN;Ibbb|$6Ais?y^7aA7He-<0RqR z#2j<7RAqS%SGKORubLc`mIWd_fyJ;-Ro<&V#ODjalk>zG+vjYHb!SnuuML-#^@626 z3s4^(>L^-dM?)qpNGFpcz3lWbO7J!HMB^VSbCyh7jJgh7#<+s(LiL)pB8?tOg5}7W zZ`p}3G{pXO0Zj_|YeHG-2D-;uB%moZ?Fx#GQP8dIR_^)gWmKWO#ba6i_KC5Ujc zWKD2GO|VGX%lAEA4fR3pO_&2ykmG}s>WW6uyZ-8`_4A&q<8Xh7t$YMAwY=0HO8H%+zWc=ZCbJ09M&H0V4ZJZg zVJ)2hJk9!vw$nU-*)D!P43;`~&}+Ra{ggMP@T=L;RO2ZRPm;9kOppENja`00&I{!_ z{wQHlT=9xSb|^E;j8L;GA1vFcCp=%G;O7y!FP=QMQT0 zZepBN?QS=SfHol@w4uGrUf84TFwwaV4}#+=r9f*h&IQA2!ukl`g7CGUM|mkJ%(Qh- z?FfsD7`Od0pv4A5#LD`G2n6XHNw+?}k{}D+xC&+FM6$wE&X==APTrferq9r;DL-_t zB-VN*1!HR0J^r^ZHZzh2=kt~ItXF3wCpZJyTm7Y+Ib z0_FBiSaxT9+n>^JJrT*^s}>5mX(I&ei#;1DVe_)$zM{ZA)5B7C$o-A7`xE zK+xE8OtU*me=k8m9pK$Hf(-3<)!U*FiCw@9Y|tGxEd%@g@<$DR(7$eT4tfn}PPZys zZ^&t=_iDhd^LUMbwOb~)D_L6-jua7UwT5uHG6c2qHMjvU;`8<+;2B1k6qIQ00tVi( z+gEVCj^f_jriKqcn>!gfv0Qu6ItkP^f>K;98s}2`)Y_vka`3Nkx**U%%!`$gB|Ztd zKlGn!m<)xnFF4jl-Zy?vj%=Xb?N=(;;NDsSi(!V6+6_9p=1SuynS&nAi96=FNtH=1 zjP=|~|H zqU^ZkR>r8_x_|g@-S*$jAmC9vYOyY>L$fvC@|Oq8MZ)UsZRhmQK9q(_djF@e$yZ*c z*ivPxs1PsBj%M68$J+zE?M5xwslOq`^a&r)88f@|tScC5fdSxL9m z0iB9fVrbrHL{$SY9J2Dt+a(_~N8~Ow;truP%rDA_>b!DD9rkzE7`ooSKm<g#$X&nW_#SR1n0cx} znYON*J{tNA(Sua3{j9AoT_m#JQi0bi>`?+J)_Yl3t z^gC`6UT0~q*MM(Ss4Z+Wt&w8{Y<)5gvSG?Z^d2;c@nM@;N=*FxjGn6n>1PRM!Av?RC z)6hbT>j1V3JauA)Ss99&D=tq5D8$D8i2|h`Hl?|6y@}hEfh<*MDZ(BVU;&fE$E^Fz z6Qim&vt8rL#{o~MSIYFGj`JhoN)-s^hpTt;`=LM+xQvl@tK}Hix(4i119f5CKH%v2 z_g!qqA80*2^IJ3`UnEp8**&-Gs)w!0r1Oi7DA1nnor2IjK75Jf@BS&3HNq~UM28H8 z77LEmPB+hA!TI0#X`qk43=vAAM6d7CMi?m*0BD-KOD17PJ%@Q-%n?4d;D_APXDxg! z=b9gGO;%>xy^I=8G!LRoGjB$}?3;#oM+B&icMtuq^bvet9%{g38#mCf7 zXZ=$E-i;Ke(z?IpGM?hj4&3wiZShdGa54I!oQm`%@=rdNGT50OUT!Yjr*TFy5j+O| z8x`D+3i{rZ)Du@~xcLjpLtshhEQ8cmRlZ|P2Jh}XhYGt=u2qTEJ_(;SQj1T9PJ5#-c(eI(*YNs0_L^TNj{ zwa_JJmFopGuEnnL5tRI|<_HWALS)ypwGml}o&X_m=~xQCYgW4Z+L`eOa;l z&zklU4enZ!iEF-Ui>}-~VbzOGb-|vm#u@m(Kz`@ht(u&fHUh}h#TD_hdzMX(fB*}D?U92rz^6zc=2AELDLe6QQ1^QLm}2>^?d^* zF$ME6T6O*(1bGT}sIRMOdGKl=GaJv9l}vUTR4t9i#CC^Wm2AM+v{=x1GzDyK113}3 zbS1}$$swZ*bi>7ee-IyS@6yNaUCsAE;qN2iYIhEG>R&a)1?5aQVxo`kSrQ@EDQ;BwBbRCWU-vT)#N{ zBLC~G7$*!<$H>Q=1rbkBjxGonw2V{`Zqpl#5i=y*o^JzfhOTVg@8+Eof{rK5z})VdfR)cyOSB%jx@J$c#?tL z$ewe{o0tsvrznhf0D7>!Hrwyw?d!-=RqzlQs+`A=Q3mfx{DxjDLvQUUndWIvBtaKqHC`l9ju zHpLoP!7rO1f9K&ij}dvrMFA1szb-V3?2pJ%kba`d)LCi_5VZ=z_BGHm z0cC1RLb-erM491~vJPF54d~5MV{wblEbEKw_z7Hg_?L+O?3ALFt+mk!j6s1(l?NJ-W5 zqF8>|4e)ZT(EQG$&namu23_ZQ};^#6aqTP{j>UQ_r-e@s$gH*D;qHS)hC zA;5nn>UF4yze00S$x|6AZUB4lB1W|4^dw1djJMEE;gZU}A(=fIHSu@Rq}Am;tUZ1l z{tGM*nUV0iT5E7)MYwd z)^jN`x2x@2w;bF9PnZ+PBy8^JEod+Gd~XX=8?IGv_)|`pD2<7N9=H5dDN}$i;4M%9 zYT~}t@$$T&h$)`K?YJIBbgeZLET3Zh!H|3q+4%!S85f&?Av4=wD)9L97#U&8jN&eF zHZ=1*0*HAx6t@#Sq?`c#D{R3*zpD6|i6lm~yTL}n#sBdWg)z7;x)K83ro3Oaj88_z z8b|?;&d^Qi2imSS=e;1DyWq8C5{w6>SqYP;_)5Jel{?WsMd?U=TF}4~O3Usey3vK# zFCs12!UzNxfgBe;#xmO=t}<|zNSy1zsNSOBuLz-gF#!*?*6HhFjY>jUI?yDn-hVG8 zLQON5_|eQ}TP~})1kcEzB)XeRS_>eY!+o7Pt}~=&zMWBt$XLKL5)hdLJ_m#?8h?IP zcAaKvz~?QMk8K9r*^D#Be&I~uMKR8nh;|-6LG~jQ`u#>XZ!rQ+eG;n6pumdT<(~+jhP(k6ZC9zo;Dn#`;)pqre8ruFs4J+} z0>4Cg&JB;Y(!C6h1w`XUW9)&M{=8@@M0x6H-U$CQ$DG?Udym9Tht-urM~A1hb}YOI zzZMU<^c}t0=OeY&E+1~sb_97T#mGx(3t^$vtC8!BkT{Ms+<&Y;(~piK+yPe#JJri= zoCUtv>}YQ=f@ikV@PQeDf>=Mz_rL&Ly$MFapHM$tBj($ADt>yGIlOHBj*;E9OK6B- zoEhEqYNJu+E05^(;FOUSQO{3inR@-yW>WpDMpczuFM^z!OqK~hQnK0ps2N*YA*yvc zvqch_Lw*8*lcVKCm3J4-&&=o+cRdQwh3j-uqGf!OYNJt~Td%LozXL-Nli0rMS>d45 zcpaFb-TGhY0o;q3zlru`HEhZCY_{T;q;)jEh=w!SMrnD7Oncuqv4`y9I>gs&E=2{@eKd2m269%+tV|I&{Ue{}d zu%@5((^IFz@0Qnmy0CK2`_oYJbo;?dP0Y*0)b7Hh1_br?cPZRk ztjCcFJ3nMPTHk$^Xw0@S#YSD?8T3${ouGB2br~eSUfmZLBYelBL@LN^)yKMg(S7g6 zc*JxWb1MXo|C>!J#1XlAu~SwQElXPgH**jb=h$M49kv=-Ye=oXOzG4J4|LPZcTtvX zv>%F6?yGvUIL;k81;`)#wsLopTlZ*t1<1`Ih1`EP^ajpDKP^E5$)72(1cO1|<$_T! zD6w^~+ieLAgFujH3Zr;3+{p%?TZWDa(^X zNnM8Xk!L@H3%*|&o(%cT6@KT&#mM7DaOm$o@wkVYXlJ!lnl+J^U4lhBF!Vv6DgrG}>F6GhDwNB@t(|<{rFloVr9aes=R#Y{@#Q7* z*HgA=_3>q|JpiSUz&3JD)%_Mu)tl0s?W=M~6eaCd?ZTzK;r|M-c+eSEqpmd5dnF0? z05cMWdNsF8RKu$!Ej?x7KNSbOTl`i>4GR#cIc%6}{S$M$;gVff?TPVKxm&0!>~^w& z7>TYa9evq{Q3lkJmxEzmDvwlSU+wSDiX=3V zRGgW%0%qK74*KfTBA=^#9Ud8;CB20Xn^p=v@^~5>AQpJ4E~Xf_4h5!mEbvVIk{KYj zlTK**y)}%Y@|e>@z9jpYLNqYL+PQWYMH}CRXwWJtZzIL9NA7^Wf#; zF@5n&7?tjosxfaQs9g-vYXu!}+XgMcrZ)#`kj>tUQ@s+6lk5zXsN-95;MYJ`YO)?P z8zL_~Ppl{bMx`oR=`f@ur}H%c(&koxsvV+kZ>=fA_Xv|0+`A9H(8b$v+-{v1?;Ul} zbU$L>ubD!kgdMB_q{C96h#4d3AX4KB2PAB(DsON!n|HzlL+tlUqi`zC0tqhKC4UtOF-=5#^Te3fXmT!iAh0xc{2=2y%8(|e^QGT*OtzQy zQ{m~Yx@b#!9W6PeOR;zk*IUravEbrIG%wY2!sP&Lu!_VL@M6GIa9H{N?=7a*ZqUz8L+9aNV_{GmnIgHa<5%TtZCJ((B$7kYjN>2$N7mkRMH zb)`45*=?a8jAm3C%*$H2koih?6>Iz5r4=l|nCu2$qVe@~o*Dx-7!PGKe`9se{x3IJpyli0xJfYE%NgBvOU({K@Sm7JWl&#mH5Cqd*v z2FYz;t%Q%pW;%?MqR5fDFyp^4+z1mxRs!dXOk~sKH91u9chviw;*Ta5+(=B-cz{oe zy-Puy5U#*)cU;)8*m^Ou&tf*y(4=RJQQIkg_@bQ=T~H^ygfAq+^2DDMHtceK;nq7m z6ZxCWbUoO~r1ix%T|ec%qBgQ=;%EV+HQ8%3n^_bq(o;$7@86yNsd_{|VgHyP`utgQ zSE4rGAZ6v5so>XUiz~L454}(ngY<`%iyX0^A`>!M`a)>fTEh$U)B~d%Uo~!^;Bb9} z71Tyrx{75sSITaiUdSXdH`WNR>(6N|au#^mj7}^x^OWN0b={?99~OI$)X>cde}#R^ zL<)pxqjYF+D-C?ld9eh=fXHcfl5iW6<%k#R#ZzUD_vgq~i;8*tR26MR}%p#-U~SL+$&<5I1_G0`)1q)GrOLhJRy*=|OYOgk$FG^t)&txxICT`4)K{ zC)Jf`9r;Vk|1zxqC*=^0M-aBY+sMV=>Cw$fSz!71_4S`e(-ZQax6=B2iyvS=!Ob$h z?|gKNEQ$!fY|+Lk5dwexMLu;`8&K(u5xSO&Kr&j|7RGnfW1@Bl0t4 zLAImzg2<+Fzw>b?6AX1;+Qaa4DI=6Og37o#lpnS4mIL@VSLp!N48kNi%3yiQYk#vP z_fFjF4r;FL7Js&Shi@|^mohpZ?>sDoE@`NB8vg0Lm%Oz_KZJNb^zHF8xo6Zr?mzHr zUt=}l5&tIXfA8@`l!iC<#rb@i=C%S^lDXdqBN%R(l>mDOUTY%%* zQ(m&JO)t(Dt%!N0&Nmjs_=<4jrZwN(1`@JE+e-WLO~UC3V^ z1}~%JUXRhs&3u!)b+8|ntx^v^?Jo&;8zwl~)D~nh;}-JkS-1N+Mm#qB?LlMc4Dn4> zp04d(T+_aJ7Vt zVtFYSZwlj_nK0p8KxlEf8yxh`ylv=yg=VD83$i2@dZOW0zw5iU|A6lQo}PA;rThiUfnw zd{C?5Rt!2qt&*rP+vKTuq(j-4)9ECH_{U7es_xPtQ$cdlV4jLxNxWjeN+{rI%oKZ5 z!{xJ){YP$avT&1DLnvkU_1HpnIAY^sQgA1hLl5uapEhPr<6m+&(cz~1bXhJUlW)c_(ksqzaoo+>{2gXv_E!(S zuRzTPI*#g%wNlmwG}{s-UglQvkLvZ}J@rh#O+$E0SB)av9_6anU0ii>p{@vxl4WY zn>R)G&qr5;nAO8~-%Y?`5iFR>CKLDw%PZ)s@PepE$M2M6g zAKo>_{4y?o=4V16;Hcz$7e_mHTfb$!M(<&~w8HwxY@|l=2~MsXRV_(l$0;du)zeY- zs}0@b&BB=NHzU?74kl|-kABTA@H90@qG}@xzY)Ik$|J=_x4v@tv?drt-&vHXCq0t= z2IB*BFtQ9hmo@N`Nh2}Gf20viNKBASi6YJkKTQh-Gyn6lP$`lT-gvuLDARa7VqE&W zXN{l4^0`pMp+-3Hc6#bj@1~vCCN=4FN6bd{JyPc}wwWv@(IQBiVEvk6X8MZ>c{TNR z1tvJ*=|s7~(-niGu-{3XIVLH1^MeJw{Ewe-s^W%Hw@K11WSbQ01$ehfs%^-Or^=&Z z#UEig{6FE0rKf3S1*6R0lU?vQk*exXKJDm>ZRikWvsAth!*cL2n?11|i2A{d7Ou!O zW9a?5>6C#GtbBBYV=?`JhRMv1GWE;pF`Bux)aDU({4dV~e{V%4bU86`W~%Kw;r%r- z?3&p}-zRPoh7&Do3Uo4b<^PYUw+?Iif4_jq(XDihMk(o%9xz%;q>)Ct#s}#ThScar z9jOQijP4LdJ3wMIg2-T?q?A1S{+{c4o`3e=cJ12Uuh)Io z0me*3T`qSiqxkM)LxjFUdAB+dGm3iI^n2#4hYpe`rGE%jZRhUT4~4LOJ3W|yv@?N} z;$yKxm*Oa2AJ_TDcyhGHxWewn^+R5?Qe~-oWa0OTnOB7?Z#@#+)GTr~gXY*8t%+67}7KB*(IamwP!gmF_0) z*I}C0vzbKn;ep-@XDQ9!@G0ssYG5jNl8^txE;6=+e|T&a22r7uQ=TqQFDO7N&21MN z2nJ7;#?C?y<4Yax$)jile8K{J|2CLhmOhGQxW%}vx{s=P5S`6BW#piDKYaRMee|(` zzo^Zu6*}kJ0W(ZZFA*B;5)`G_#br>pYlrP$(}pn$va;{aoo+5Ar& zg8KskGVoHX6r$ew^Hi@s8ig4(Wk+CzO)o=a9sWK$^3ops7Zz-(p|a}BvlSb0P~egA ze#a=|>$&xs!ehXPv8mCpy zP9l-vSQtOQR3Fv!voz*ck$SHf0-_dVs(%tTNyV#e-)PL=fNqc{#BzvW`(((Du`dv< zA5SWX1VSN5-7+muxc%Bs&k_KDh;0Uzm_$C`sGwy zZ5r=HeN7~Y{nS1L*^$0?HdzMI-=^I{{s1;=DZ2UZ59Z;XF)`40Uaq0LE`bGGT-Y=# zHX_?LEZq~qMMLIN@}&1P57bqXGBnbYT=FjaOmNTGj|F8fvKtrFe%V-qWd{Op%=)`>iJTWbiHs0yOK8o7pUtqr+Nck!-W`^brJn!GVG# z);$-GtJ*HwwHS5= z_t)Ahc5a6|a@6hRxk@uJa52~gy#m*EQ4=yJ3LJgGQH$yLc7bJVHNmqKhSnU)qX9@@9p8zSHQKKM~l?l-$c#7v_2` zBGRxx@=bh3uTND7VjQxOBkZmBt5ZHH(?gJ^dAK!h64Y1pKDFkQTKGZ*jagnUjO9?m!2gK+2tG$L~swk+L4htLm%fGZo zB=BW{lKxR=dg>WhA)iuvrbnLyeC;?ph7OCYve0{-r@7{VoEVR_l6=fZ1+mWDG1pkpAl|)9JI4mpq%`f zl27sK&4}XFWD9J!Zmdv^{MiYefwe8XwId zJtSc-F`)n;u9+Y%D!v24(@MJx;Zy4;J;Tu};Ho^q(RutDgQ$ z9$3sOF|*1~J{R`A{rk{T9Kh4LS6Cr%ui39@NDWQ@1I(gQZq?<62H*<&< z3+|fNzfNIe$gE)0_BV4vr@h6;nINsoQ&$ohbMPd~S4fK1k*iO%vPc7~j9ROH<{C`- z>2=2Cz08eybX*FtAjC&e>!$zkHuK8#lt{a9QpguN?auokjq;t9kbk1b=MeUscLk6y zP6X=eRzm%&Ao)?ejOP)<5HNiuj}du*mTZ0O$r1#<-GsT1$@cMAf|Q1HN+|}YSk&ef zhogJDHGv$>>ImZ`zFztl+qQq!O<1vb8eF&wliENyaWYP=fk}ri%Y&xUIn@Pdr_WRt zh)X8*sYFqa`LSYYy*|_R^OWP>qOHa}&>K6=CXLqb8nIaE1s%=6tGbe{tGo{mq2I^` z@p;C{?~Z_h9`ZnRWr@jR?rP3S>RdHwtHbM4LqpS3V*n~O^sR^c2wwVQ*Ze((y9!X( z{G$>PuwjW3yv%|M)yjC7pELllRx6n706FXhP1k!kA`K7N@@p6V=ZX)G2qj}MWZXUvL z4h)fn_;hiU(gMa{QpYp1@Tk`9AgDOlg$IFiWd|Vh|SU!1!8ZwDlP5mU^ z#x~z`qYPhL0DTZ0C~MDeoyHPDv>a#1cGiCVfZ>Bqi1(Rz(dC=@bfOLG5>SX;E$Hxz z^}f=VhgP&QSss1KvYx83vhn|<+B(hLuh@6gH$~dbxB|LQP&1XR%U^}N44s0Qm#N3>j_7bny<_J@ZH~gI^~I13kFYVm zC91B>^euVUnd?d_xUxLgKJ)Cla+A=WpCLjDY@qtJpCEJNX~tfl-}P`E5>kx)>NhR! z#ro}606=iWa=P{bRoI|ouywiJdRlLmirIbs!GD&3k4PJUbb&hFmJu!800RtrR<~2F zalI&c^5O*TNRb(&^7={zgZj4k##B(*;3M`uQP0yPJc9lhdC>n4f-jkw=b7^^i(eWh zI5#p|AU)?Vji9ko>>tUZFjjd7NzC&6x*8Y zc&P?_bijuhuHez%X$tRtc_9-6BnD9-I@KI-<%X&ofN3_^l=MGn5RaV1dh&&%ggMgo z-j)zVPxpHbHw%&@Mb)fD**BZFLq&&Wt+ZZ#v~T5~Eyx+v>^`hZd)EB7fcZm*jB+tp zW_DBq>cPzGr7>@0dbGiNWicoB@%1kp;u|i>T4O}j(_u1{4;VAGGb5>RhOw!7I;;=x zYrEGH<^h0Ny7ld0Zyf}K!jw}DgleWp^)e^xmUdJHRVL_pSgc&PAMU^$cEbZyTp0Nzvsi4j5#q#j*peB>S?~Wn zu7vQ?0ixL%84+~Xno|vo8-zGjZsSGkD~{T_-Xnw=l6YU`X+40hy8FWFGjZLSb%A|*u(?C9S$X%~K^jc$->pDOy0-!R^^-d8)jXJuEH z!|h9AE3Hmj`%AUTQTX%>kx{hgX^hcB_xIjTcUjsWxQD)Wa+@q35*>7xakEy1-(jj4#j0>UucA!O5;GtJR!8}>P ziB0q%3FZA%DvRkAMDKQafvOM#2wszfZFRz97g>?Wak@t{ltxW8cQH#wp93_xI6Nt4&E=2oD{dRF1OP)<^s_v!-FO*l{{Ymr z0>msvxy5zQW=C@;Xb2;EZP3GZN88h1f$)*2GXgzcFDxTc~u> zS^Yjcx`4Ysrqw(7m1UDM(ZItUjO8K8@M6@Np7nJ@ELXogp{uu=C3 z89p2Bu>^|qe|;&gP`20hLleD0MRCYO0SWL4=EnDJf5+OF8hzyXuKr9-w{GB7TrF-m zBK0{b!+k^v4_r7KwmHgWwzl_k=QHMmj^UlFLzK@u+)iO#FSBM`NZUq&c9pjlLi3;J z8IMWHFB-ivR~^_#ygi1dcUo4cBmPc+Q#1M6-_$o0R+|q8WhKJ(cx$W>-WKeMW7)>- z7k^|dm7W}&6ajMEm3aWaQANI%-}pvqR%=5s?QAw(6(@>gl|he_%$5`@Qu;Lt^3S0G ztAdGpP z>k6`DwhCw9j}EzXOO0O5T?hy#s(IfvX?p}w1wQ${R<2m5a(Y`XbLZ;3=VeLxKmaB!c>sT04u!yk&%eA_PxiB1P}qJuOt(yhGAdoD zvFniQ9~fGW_ZSU}^=LR^{T^74UfuT3issedvlx7%sAlyBZ-x&YtAMz;pCWKC?AEy9 zGR>;-I4M91mT1D?1Qb9WKOKViA2_qyrB!8JzI;zGcoxO{z%bhEDo^j#7$d>|Xe715 ziI0p)tumEOx)JxEi`I*?wEAB*92d{xv!a{xJ`e|VcZJ@G3LU&L?M-ggtcTtNk6((t zO3m9u3nRskh8Cg@HuLaK2B8Ut@9V+qkC(-Mk6i@2bj_=$y~>YD4)mmGr&~ilxTD(- zhn7$RK9|j(vtH;S2%+DUblc62k3!+4f$Cv0PKub4c)dh5&xg_I+eJQ4Qh6!I5teCAggo+9oqy0v@TG47q-Zd3skASuFBr z?a&qwbt7O&*ufOmOBLgzgSa7G|1gm&E5O$f=kc16kzcPgqERSvJuPS-Co6H=oWv2E zD$o$HhcTV)7Jg6Rj7r;K$~;^Of?-*|8{M;NH_t6f2F2Wu*&IG^v0K*8JbGE71fe=G zzp79&Il>**AFVNZOrhTY2W*|?Vt}r6x;rmm&py%(5!3TwR=d&;F}{{)$r=hf>SPp6 z;i_yak2a%ccVh!DPdD6oxMkuhvJ-O~U@3Y$G+1vkO#pahWD)wlLu|zP)fR$2eYZ|m zCQ<5`29>Ukb4Yrl5tFYa4h@o&7{Wr7>mwt+SLTVo&Avg1Jw?j}&3-RG5Hor_%<{U5 zb{@&E7DFXg@*NrgUHLd?+?m;;U$4L3qh9iEJKey|RGFS{PJUWot3H_YgA zxCoP5ZZYHJ3T`F>-5|8%7imO4O)Fpj1XQ>bh(3E~{Tq4_U^%P2`w75kJMp)(Sn(=B zZ}Le9dr!y_N;w>Dac1OYeyu+QeStJS0h54XX0V&-F&Ww)qRw9R=Ck-Or!SSBuhg1g z?B)bz9H4oG&F&3dWYW`nGo2^BR(1usTHt2PwH;ZY>_;5E6FQPM))N4)N_SYWA{Mz| z(ZY?QKCYZRGpHvqgD#47ZB?FrvZ3h63;UOeu@}`WKS`&w|I+^h7I7dpw(%MICYA*@ zmfg)sTOG7L{6moqf3V%Kmx*pD!)=mMf`^FYjTd2-GM~v;g_jcMDX+x6cW=@L9V*GU*=$>JcX#M^90ls}vtO-0*R7)Wi$9yo2&x!t z`~WFF>v@05rY8NR1)o(|lN?Df=1_`H@JSKzSweK3XGND6q%^H!f|WnbF_Cue(#|)( zhDOCg9u=^hAgD=sth5R@L{ZdEaOIJym?q;DHHQfEYlezd41*b3uFj5(QKOO)M2A(8 zOopI60sW(uy|UDz9`6tjQBmJ2ovFj4n;0&nP-Rv|k0-Nw0D;&b@; z&J(>SBdlcsaE>O%?FD$X=bmU*srvJ4Jfwei`aTsenrWJ-`A-C#W47=$9$j7E(EY#^ zJ@#p~IzG=y@<@`$p8S^sJdo0kbUZ2LUk$|GbK=X9=iA{&c^-29%KLACTn}zi3-Qlq z?{lGsA7g2@!p=(j0kyF`!jb$3g|H~Mfe%B|F?bX;pX|GK0veb81GPw<(udRdr;lGI zJQ=jp4ZX6LnWaWC5xR*Jl7{lEa-+$vW4-^^lZFFIKUzpi2}!Yml&Ej-{@)h$pSF=< z+ju%HYAvrM=xX~3$HREv2BPUw0zSTBeTZSkL<3WNeZ3{GWHZAnoz_QXlW`}KaGuWuU>u8@r@0%R8 z_`Xv?uCjCeXRrB(t;8l6Ev)m~?w=JCnR`I)?7djOlIk(&Eu64R;!P8%t^P931DDa>1-86sdGEc1O7JX=-pNnwS zWi9WO+U0j(he|3i<&YNqiM=>`KD;CGNUB@hHJ0UpJUQ)(h~qdOEV}-?I6Fhj%rJ{S z19rQBJzEm=nj3vuyj!Z2SecsIHCr!n+4Ocz_mxng(2T{l=JE1}bA07!J6em`8b$23 z{Fc9@(3@3yR6D4JAuVO(QOcA?`(Kb!-`%|*<4I~BN0RT_ zu0%EBlUHmEEjZdSjPvfk63$vfLyCQHOt-cZPs5@l&Wre!^ASvzUn$8#78*M!3$R=e0wDTd0d3`C|T3(xf`KaXoD5!vFd`*fW zVtAe3b-NdMvVsFqb9(#`cf-P`i6JGSAC6OaOv~Rl5pa99?__`=n$fnfLlhOR4GI0?0{G5w;KJjmSxEoW$ReQ92 zW*3J~xfA_*m(wh;wA(9CcSexlpU|wF#Tu)R{esjktB&P4%Xh-8=jv0N-C4KYys!W0 zAt>}Z1*8=n&R^~-J&{?5ziAa_ir7$N)tJr?&TJJj<$UHA_XeaCvdO3BfA`#VXq|~g zAYO}0M>pcd)qE4V0{8J3bp*xEYXHwlQH4lL%Fv?J*5k^jE*3f^qg+kB`HqIEKskhC15a&86GEm6wU{XyfNajus z=eT0yM-$5j6!~?Rch@RrHm&)Ts*-Nn9JEnxFchm|x^ek){TiK>vw1lb%y=42IOvR3 z>u?glPZ8xcA#Su?c>4Yz98}8nX7xJCj*YwJzv-#6DANg`lq2NvTsX07OjEz#II-uV zti9uTe2|cwCz#XB7+3vBY17>JF!diSnZ8QtY_LZlA>jBj|Cd`GX2wKW5-Z5yL&nfl z57p4M7X9L~!q7{$&k-OFCFpxGt3CqMG@g`cpi~zST^I3U#Q?YV3R3@0A$+POU99$& z<1*2stp;+<3Yhz~AtGA1zj7>Z{k{B-=fd(Q@aitE%Mf7`*8LE^=JF5f=1yl0b~|Lr zPK{;OF6LNfwjmsWFLTFuj&k>jzG5wo-+(Q6Ky9SE=&?>2&A^X!UPD39L|pGt4%0~~4LAq@R7@hAf~<4h zq((F%A-re{4ej;Z%iU<6MV5A8AL>=oXZQYiB;?35()(p(h8|KK!LXLTM&cbXZ%CR9 z$<;W6Le%W9T*Ci9RaN3h2zUxyh0QvC3MWjlPUhCFfXrVdacKAdO);f^lrmRCVJb`A zep{6z?8$}3qafwkL*X`fgbUiaZkWfcKT0ESFr4oC^v`q6a$V}uWw6 z9)nZ1YZ;zWcaFLvQ`3B;H{8_Tl=at+Fkfj*Fg;b-M#((%LgWnX>hQp%|Efe^I{fZ; zmR`M(f|#dpJ|YidOyr46?UShcoeYWQstA2~1J(Y{6q1Tjfu3Rpw9+;Ok0s~Sg5_EF zzm}E<9(^u*w;}o9*JR3RzswbKK^ep51h9x00Ts8>P&|ceI)5VeaW*D#>88H zK~Q%;E34*`-&$!Ki*VhUvLDZgg;c{MmqPRv_Fepa{YN-z_vf0}LZSqKp9@@vw!3m9 z044==XW-qR_?=zEY`;43vy8@bGqJG8l!woLrutjfL3j>RVf(D8*F<52S1~2j@#eIu z08$_#{-b^&AIhlR85GWrs#ohw^Xp~WFTbON%3&Tvj!Ep_r&NBH71)~vb>*t_3SMzo zXiJYT2`2&E6eY?ltq)0$rmT4iPbB1|U~OD#_a^4=zV%i&`dKHB;j|AWY95r)vfIcT zt!8Ka7t&q2BfxX$M!emYc-&htC0XrU#J+$D0WAHczl+m%}ZwbL8Pp{TqM@{tS^y=>+<09A^V~38_OWXY7kMSNEBYHg%8zQLb4%;8c6Lega z@2e(c&J8`vtb2KSoUac{s)@SJ-u3UeAXQJYW2um@-9!T;N57R&J2Fg7^L!!>*(wrp zYJjiRe12yYi8Oj=n0^QaM9TD;ncs%>0=@Td%crM9F zzdRKCfNH1XmL}GasEZDZmsNTP+XUq?q)o?tCKe4WecBi3xc;45^uVdITj%E~_fWF! z9^m_YeO2k))53Hf2B!i(6?B5kf(HP&9jr`Yv!}16A*zgBdg-!jx%CPcWNe!{ z#)YcaDs5u}HV`ZH`X3b?(C@W>cKxQ@^d{Bxfk*YLif$_LvhU!Fp93uX;=teK(|x61 zdSOwSvJ2P7efKTh&%s4PmW3`|3tYNV(|tUAE8L#nu3aDBE{%uDMPGli={lPfh%0?f z^jGz*5SlswbW=)<72UXeq9txtwXdJ*;iorsP$X^wx_Rz%(+awo53nqiF9C%&E^*N& zQT3Q*%AVcD#B2P|kq0~Ua?(*lXhv1HEbkG(dyKu=d1_c_WpL`o^YUe0+;4Mnk_QrE zW56`)&|;efx%$-0Bh8}e@%hm^qlcl7kVr%f~yTzVP>_?x{MJ) z)R7;eqwm93Gj6P-_uuW6H_3cFxOv|(y(xJ$pwZZ>_DQ=n9Hit!=%VB!dS!6^V*VjE z0>gHdkwEzxJK692vy?gzI#q2dd13^^f?7`_CC4CO$Qcerl`aP{E^{(q|F1XV)dox= zo!N+a>$&UxzN23MCs)n-V^EIvLRfl=&Lewk&gWRlJAMdUPgSzAcDX*E; zUx=ntVewLcng~HRa!g5bV1ys>PifwU*h#=l@k5frz3QJviJ3;H zop?+}47lc$iOyKwi&gnyT&G(_odUG*DnJ!Ki^I+m@VsCQ=OsI2L=L|Hm@c(aRASLl zK;U@;Degl|auAUo>%W>G#x_3I7uNOZnbd13E{-rh-zJ? zG;bQ@MN$1re#$IUx4jwL@9MnB5b)G4h4H>q7)(`v@13dXxZqnze1S(_vl<381_W&E zu56?PhAF9ARYeG+>~UgI#l1&Xue1I5JGz6MS}YHGc{HrVdG{L*kT_fVWTj{Bahk(R z{TdD?z-!a>$@ZK7qWaZ&(Vkw5UlU_Is;Lq^jJ=v?O2GOfLa1q;nlo2IGuA)sS_l%p zn;2~ioA78tl$g)IVYC*+K`mzZACrekXBPnj9R)D zyD?(Jky-ScA|ieurA^jD{HP$mJ}$(bFNUT~t!(MjS104F=q0b61~Gqho}NyNaD{09 z^SNI0{(hO0Cl#4O|M9HgL)4phG_4AbuNZO4p4biLQmh;j`4<#^SwMfN*E$Lc|9|;< zhb^TZ6B|kb-tj5s-|B)#Y^-u>B?5$r#3sA{RJ2zg&R+d6_e=3NkJ9lkA!w)cux*WSC^599duJ`BD7(JOZ$SjI2de-z5Dy!ojp=F}leTd0AeSB`ZEGN1LpxXyg zku0Wl5g^w_DpsXFfFy}Jvwm%NpZF96Qon!(v<=T;W9YHpouGQxuxDF$Z9EPv9x){X zSsb(MYUzZ*D_&+3_3&s};JPNf6dV!!J(rngW{)%Gs{!}Kl@HxKQ0aBJtJORi#{lp4Gss!pwdV zvfRfkMT^qPB3RRTnNV_Be}j(q>n8U#Y|lyNLQsw&rjC60E)*c81SMB7;L1&~gk?oK z(2hALPCD+^s^={Aq6PHO=w17^o3ZK#Ld)s~tf7j40Qy*jGt+MhP1s>-99Y|Sq)$UW zuTB3=_2)dK>tvele*=V!6_II=9qRgzq%+&7W;}6Rm4>=zQPgU1wUYyo5mTsovQ5WYgqQK>3 z@aPDh082SGlFIZ^DSCY`g~}Bap0S$IS{iE(g`AE45tKXUWqDFOiPOfIm9IwrB^!de zO8w4%q27w||Fa@V&^p-ngUL6YQkE18pm%Lg2J+KiLS!}=?qT=eRUUl1U-m20-IzIE zi&23gA;{>%)+3bGlyLMnZc$!_i^@cvMjDvC^VV~o6|(xxVsnImUD=L|`a`gfMtyZM zWUP%13F&pv1}SaihJT%vkbqD<)|mfSjDI;ussb%_#2vH?IS&U2VTpaJ)xpyKuVv#= zZ@y1-+pt1;kazq>=@F^*0%y}x7faIN00LSnPe&nCtb2^djPx)#W>Qx(6~C&narXu5 zKN(1AN%>yvR2YdNH^_ z7v>ib>=kZKp^UMGU$b~PewZ_Wb6_Eiio2ojQJk;??bc#WMc~`DjMr^Obz-Do?C8IngXl?=Z^+Lg+_&xH%HtU7Dmhk!bmVS5o(7TDf{I9Mv54csDvO-qT|% zY?w|y=RgeB_{bD#1H8oj_-Q@#l0G6u#f0atP>egwPF$varnvBm-x%7jS6wlVvY(_W!nw?DM?T1 zd*)~||9x@gh9k^?o3$UcdKVAnXkK;nF>OGbVoL{_8)g0)a(R5| zHRrx^yZel@Mv1@=MQ!a0Q_bt+WK!Zx{ccn8QmoDLXYImC6k0@fFL3RDpQng}w>>fk_%{23P zjN|*rA+ek$!Ynb@C7S1(o4Ww&z+DryLFRF=bg1QkG3e|m89Qo%SnZI@aPS!noGFr3XFOk`K{ha8$hYMft_?LvsOELh`#FK8pV}Kws3|4XaDY(2oyl+77=+fO+22{UqQm=1!7+Wuh1a zPkZ5=XyPlqDj92%ARtN?6g-)lP_5G+8$7=2^T=|&SLSiW8~_ylco?q+Wicse+Y-E* zI~&WuZN9D&Jk-+J;Jmcr#%bI^uS;U0HjwiV*aKLP4V?>3xTVnz2LMuIMl&0`|C}0* zIWAvsY`whdtC0Cfv3PFy?%7xY+)jJ=Nbt#*zzX=>Zd-+|&s(8Geqy@i)-Qr;svLnF zS4=y0IT7v>x)KYLGN1r}C`M*HbEyGX7qNJ&{b)tR1ugUQ?JzR3y-DfhHvcV(ikn6u zZ8!z43iZ`76+pJdJW2Xy;mNY>N7Ok!91LV(fURq{2PvCM!;TK)!AVcj4dQpCK!GMV zHT2jwKIMw<0}!1y$!=~GYQ0P?X}^Nnxn^j}rtX~wx**0LtjVpoR?BpZYh4^uc=J$} z;fKkinH?s2`Q>xkg8?%9fQ?;!Ni_{;y|va&%HqGerG zGyI>*e$^yYkm%4+9V+Sy8a?EbJci|EWOf=9Cn|@-Feg|5mTx2fM4fYMRU6lI?Uij^!A$NH3>6+73SaOBS%0LchJmv4ugAZ2@+0tI%15*X6ah?U`; zJUmwe-rw`oWG4kGtT*pNowP!hxnBb#7sUEB$h^U2!)Kk-0I+Ukk!|0Oo3TSkt?7uu z;!XiD^)sgnJs5z|aqH=@_)SR)|4(9mN}kdOn(Ka8;=Ld0^?Jmji7c+<#MPw#`M*{T zw+o!`La0F z5VfjSOyeW8Aby`-IxMki1F$K3wpZ#jCtUg%T4ihX+VjQ8R-ND1tMOveN8$5_bYvyyV-Vlz-;$?4?$Hv)qlRq#rGA)AnpF%)BpLb z)DPC>@%wWpbC?^?Kj6#@q4dzffJck5_!7XuOBa7Noj=7S<`?Rx+LTliaw}QY9p6E( zCBJ40-6m*%5gt?F9a*05Ty=jo-RRe&k8Cpsadhe8^tK!dHH9(ya?al?;_g=`oNuOd zE#>6*UhhqJ))&szheS-typ@W%)vw#}#P;JBYy`W1FqK}gF^zNSwB5~=0}YVF3h}K> z|7GY|&FJMv_pSQjE8HhuKZq^APPbVs1taC=ZebgFI(g!-#$~EsV^Ytu16xdcS4N)y zZ*jL*u4FQ`@E#@{R{zD9q0}K8CMn;^69!prF)Z<~V;IE^cX!_QiQPAJeWOT+l^d0gZj*$sY}xIJsDpW z%b5whOD*TJCM(pVkRJUK(y-&A;nW;EPnrsLIqpdEv)$0~~9;bMEHwy_# z6{)FuIxHSvGf5kFCJndKrEj!=AI=U@uNMzI=eaBVn#-RqV-zyqv4Y?AhDH5MA&2VP z1gUuVspeEly>uo|rR)G**>}iTUHI=wU$29^^;+$5JeAi>A_(uV`eF6q-{Clo*;g(~ zgyvBX>>JP8^j_mUrIRTvkE%yQxO?3ZM^9Q*fuR-lx*dkor4R;gR4?Cd@qlohWd@0h zQV5XQpWH3<%M9|Fe;1}W12+lQ{oeM+46Yqt`SI#Tz^(yttb+2D5=i~BO8#8-k<_i* z#-|)Rzzj62S~b>Vv|jRr(suy!0(TMeA{%%guGJeHPCoUlg->_9^OsA82wOg1ho=+o zKKb(S(02R@RxI-nIj#Oe3hakEg!LeXL`>^gH)rihvLu}R-fn2k%Mf*C9)df7Gp1s# z#KV3?E=)?AIMXc@5(a4g{oj!hNQqD8j_Ta04WzXAEn_c5TpbtdH1JtddT(O5A$E9S zz=5EV&u;Y{zR%HAjD`TpS2hbxak6r)o*qz#{qZ!adAB|G9?QJA)Z*Q|Q(Ev)Z8LEi zWH5!f|6A)ZSzPKSm4tWq$Wt74L3m%*PXo|AwE0sC-PsHOMM=0Hp6imt1`D09fdKCU zD)E}^k|7-#+AWuF>x5$v|8oO`a=dah{XH~jto1?Nwa-UkMp1ud=6)rX+#@#wFnHv1 zQ+Lv&ikpBrUIB#n-8_ggPv_Y#SsM&hJYs~pO($R?Tperg040BH5`&w78Pkm5YG#nB z=BvaT$t^7#HUn!uhBvdx-UJ+xr0{p;c*~Az8Q*C`$~c7crzv?XsmS~NF356ra_i_< zT8$O;;GJ_Zs~7i4zw?5gv|rgVIQ_VV5#>`i+bcSfmc5pEhS8j5iFEvyRb)&^vJs_e z-wf6pMZ&XIVe9h8BEJc6{yS=-xfdkEf5A}AVryDL3SO`MZh1nc)g`oRKwv|A@{f!T z-2iB{#_#)fl63XM$&!fGskd9h(*8ViKZjYg_NddWs-lCaJ8OdoQib~;1h9KkKBZ)< zdfQy%7;{>bH*huQ8}k)lxx*f2Z#oMu3W({1qH`|yVWD36m)>(vUyzdC`@h>IJt z66z+_bMOJ~vn{nXELsIaFdTphXvIrw_S=7j42nW(E-D)j2vivur}|?3`hG?B_{wptCFVWWaoZdu)_n;#0Me-S^}5N9p#>hkjY1 zezOCqEImwfq=hDGhHLd;hX&eV7IL0i_7+!6VPtOr{2SU8 z)T!@i1$TBBilWU-1*$5&gEDjZW*%Pza6&7dmbCgk{4Q-8$4OsQ(ut#dh`^$F?dzIy8Si3 zt0QPjLLuWvO4B=M-H$(3tL2E$jmlX}h=)^Sj(@a$``i^{E^O=gwlUj~Zx zEzkU+R>(LA-&Kh;758+Pryf|NMu}g}h9mDmWP#LtE$ce}j`M<)&TMHSq?V~q{$+*k zEao7%=1w^N({T)Y`shYp;YIP1npSjN3GIXPN=lMSE z;gf!yp2h*ql4*QT5|2t@38fpPZTi$D_T3DKI5ls=ZTFkNis5~9^=>;>2YwRZrV4{ zDQ&iKoS_seK@Bir#9JNa!))-ATL7LxLVce}2K#+m<(GdNuX?#$OZ+7>iF$iQ^XjsR zD%v@JyPsi9r8C0lFhMXxjeIQb@5{9b=Zh8<*=nbVwT z$RLE0k6`;au66*~zDZ$}QaYmCinC2vB9$8QdPwdY$|HA*KY9q1%2lt;FCJsrK2{8Vh;*|G$tm!P4?u*t%jp|>xksAvGo*X;C zcfj#2C&|;K3k~-avK;@0W0OG6j{JI*R_UAmaLb7s$BZX)T`!I*W8GDXGP87F(@Vxa zpuNIVjZHPcq006HN07d7&VvX>@E0xm&)IGhVgK^(AV&~r=X5J`=k=lg#Qkk+(Cy7C z{eN=%znxd@e{DyHGR*pKJcgAnK{tCt*dMYp?3jn@@2L|>P&6kGiQl|vEEDBzXP*mt zx}!(ZW4W^kzw9BzKpz~NaeRL&QNQeN6B7Y&1QkF(*YyWX|By48^B|au#mD)Y?lon{ z|Cs*EcUFY6L%g*K@Ht$MSV9e6)|r`F0H^=6bFyao5igy{$B$8>B6X2Sx0Zk<5^Q%o zl=KePCG&)P=J+!?_eEc~ZzdePQ^L}3?i1i}@|Q(q7<*_~G`JbUbL7gEpm+t|>7}+OU2^v@ zoUY+~xsk9#k%ORVrr)(q8Pa$8D0QU2d4;MLU;3J!slL#KZ8+YT5uN2~;xUq}H*yQJ9OzBpv zcto~^IVQZb<sAS+Tu*Aw-R!ZtWI~jYgJ=*P`j}i2?c5vn!n0n zrsK+do$STKnXuF4lgSU?_4NwkGi4N1yQ!b~dI};Ps@C&#Ii=pu^4yRxPIpLja9t)q zo$=mB|NFciq&-Uz%Sk)7C~Zec`{(}ls`_jxwZevkjE^HHK6heL?l%qk0ss-6()R+;5Y3<6SE()X8&l~z_5qaO1-E!@+i&e^o);Cq!n0vFH`Cp zztf8+S#|-w$8DT8T+5S9_BgY@l8rQlWS{izaD+Kt9qa`?A?3Nx)`4N;$k0py!2IDt z5F`%zV!cPdOslkVa#5cJzAmR9_JL9ewa%0y2>4*VyXK(-=Jknf&84KBES-(*Z^VIL z(=sg^o#Hl};AxZfRM2#iPr~04nA@r}=lbcb4RV%P+u0=wHvh#nh(`rv1Zae zQNfdXbW>U9&~tJq&=lDAe$}dDOOEjU(o~P>Xycy~DJX=Gl6!Y@BLl~=4eIMFeLdoR z3;|<~D}+4_waP+Ow{TXrCA?U>#;|DfunH{PZvLyWI3V*dsQLxod7yQm7|wQX+4MXa z;wD35)aBO50ehe>IU>EB<|3HIk;P%UHsJ z30~@0uttmhL?#}kJghK4Z>wpp$DOcQjeLbt!F`8 z{J^RkwH)^jCxy4Merl31Jc?Zb%0QKY*iVb;s*nD?2Sg=jRFx#$Y6}SA+-?6GsKgs6 zk>Og1EsQM;yM+uM<3;`=2!HABXG2_C9AlI|{h#pCXOgG`kvNP|K7;o8-kUE%_rbxc z0A1y|&T9e!DMI<`p6L?UgZ+zx)0A<+XwwAYs zx$yEs`rm~y6$5{rzFq*~r#bq`A1Y#)lZcpxhz8kD$O20}j8h+~4Zl`HGAu{A;^wdF zcR9i0{tjScp6|)+mQB=wMkPV;>8_FI(j2r~ppUhalyv@1&pgcQx@k_ND4+hWhczoc z;eN(rcY*6CnrTv>jv!-#e}=_3SD)Dd_KXgClIMT2!&9#~Sy3E6Rb$u_Y4?hS2B!WP zf-#q;m&AMsk}&NDXV%Axg!|uE*eLPBq?8KI2MFv3G+J>g_!Z?Xf)aC?7{hMe`+i3- zvks)T^ESY(Su2i(o2^+L4l8@fllZ7JZr@5+ZCvU`{%A&I*}QB_b6omZqZj6GA7x!e zkhYZX$Lwf&-zHfm@H2e)w;-I$G&uOHjJ`q*mvyk=N$-30k}~b(Bm<+u5(n-@SuhLt z_3P_-2EBfIt0~8X@mJ6-j*2b^_AQA;xlrx$5$6+}D~&RPfKR!J zAEL6;o`pVjw`*8s%37J;eTv}^8*T$?5Dyi0J4vjs7iQ~8Y6@wJopNxavs3oYaO2p_ zdoZznDJsycAipy00%%JUnXNKApz#6u1EKb5!jCVY085LMHrzjLNu9d@bK(QC3MACo zhW&brsl+N*coaqyuG4l_P-6QrFbDgLySuw+$DLO>dZmQs+E&LIZr8W4~i;ymyFob!nf zeB$ET`?>eJ*ZQqDqUxXj*owx$+Dl*B)_uJAxF`X)o9m*cZhe38I@=}YpQ!r0U!*(! zy9SSZj|F3QUx&Gs9F`VJ&=l=ivK3p6%jN($okD@l0kgx}>h zxo37Md;~4>Lq+$zxMbnGd73O2J!{LF)z+h_0FOaZ z>8s;Yz#c!2VoXL@^TvOnF4(?{tP19i+}yxGKbl68-UmJu45xY&@3 zr1@s|`rsw=mb!C;WPyla{}3~xLJ&U|8q!*1exp)P-&b46zk<5qjG^|+fg&GgZB1%i zko{TTTi}wZ{A@Pxr8Z;Efzli^wKI;YF?z%s(Wcb2pikxWTc@{jQ;I<`IS;PsX?RCBY##QNwHtz z->7VMseWi&GrbOuXf+P6VvUcCe)Uw9@#$|3f0j+rFO&J$(^_I*=85+bA|BNf{rO!U zkfc`nxKHXJ$HH_ymCHLlDft2ODXE4a8;l?wnT%*p4T5T5#KpTlE!G(F#CyaR1ePrR zN&F{DKZ;L-{FsymFF8PKeJGf9IDF7$2wQj%*4(V&Oh~16VHT?8Xf&81w?PfMjW}~O zdW}0oT~vKWbCdSZhDNxN{PC6*^aJfgg211a<&HxCiLDX8US&Is=LLT-iLTcC#yJYn z`LTS;&7o0&BI2WyN5Lf`7V16LIZA7pvit#_I?Wb_2|CuWm4QhY$Qx zzYC-V;u2CklOQT_%)}__eGFk7NUJ)2OtHj&K;^-XI<>@kuCyxNExp&UW!82cq;)i} znWdHigSrokOrDQg=_maAYiTCdq|j7;{WWFRIdi3FT{@wTW4)bB{cy2+g!$Rwgz|6T#6 zMERHAI8F{{Z#PSJstnQggF)m`-qcdN=i-6OdUGAypL8AV2m# z(EqZe@-WXgolj&*a)SrmTUD9zFLfK^NsT}omp`{Z)A7^YiBAulMkZyn(sV@&q zof13o$a;u(}g03KeaJWk{oDNGT-pG8=|MJDyS-aK!$w zyJ;syY5Q?LB}om9I!MlbL-A-{KyxuMm%riB(u+XwY;k8O`WG1OK!usk>B`wh9(MyQ zbdbHWdcUv%Yg&YUs)5eDTR61k)G_6k8a%1s{UNX~dR4k$%`oY9O`ZPhE;44gBW>bm zZEL|z5~{8Mpe)4%l18L!1WpkHk7P`FDPDzac$54TBk9YRM&6b16+YObKaVF9;TqY= zM4G;ccN!PKZabV_2?X4%a!GPFr2YhJIn0QZr_O2c=fEa+95il>(wvuVF6mPs{r8V` zFtuX)d)HD4FyE1~cfU&|~G zJS^uR4^@99-ac=R>H;P2lnAS@B5R_&2NM5Srn_W*H)-gsutvuELFz*9DIc-|c~b)x zsv@3V{|=3PUU$HUi)mi7V=g+v_y6y%uyE?By)iSHmv{8O`FQap5xS5YJ%i~OH8K1_ zQqK9p$&n^C1b&}zs0LQf*EA;_KhViiwHuGgFSe-pOGV)4F!^JZ6ox?_ZTOE1yVlh)nD>Ftctg7uymr zbM}Z{)!?DWvg$^iju)u2;`^jm5+F2_+ z;77W5A`st+_3p}ithM=&I`+tvj|-JQb9czQPc`p-V(|hSnSX(?-f46+JIGQg7Xmdq zww_4UE`~d6Ywl);EqZ5TX~(dg$MYVu)2|y5CeQi%x4g+TEOYbbk8R*i?hffc2>{(J%-^w%Ss>Sn|YWFQ;id^z7@mbns zjn?SfV5L6Egz7ev>s7+=XA&IYxWhjkofT*y-5F${4B=sxt&b9E&4y)2ttDv6U%2z` zXWt|N9&Xq(JRO=z6xc%faefy?vVcDENp%nBe@5?O(!;?8u3mvLh3OLN85ha{(kx-x z_?ax>sTvV<s|s}R z>9qQDMbxylUdsc^A`u8D>yC6xfeq6K-?sOLuQ@jfLU@obL=aW-6!3xR`zG;yV@-0! z9KzE7*&}VZZPrI*Tc|o*HB3nWb1RVc=+8^@)G7H}!6_-IG336&s7AVU&qc+|Xk6fn zeZ)wHnzYeZB%np4mT#cxL6&LOFkgy6M|l#5`09X&(tt4Qv3RKZ6d`x_aK1+pl+t{L z6;Vz6ycF;$b}(i3zTImCtV&6(^WcsqcN4s7ONdRXnG&Iq0L(HxD4dPbiQY=?)0{&K z)YpXuFzfb}q%LyMs>%YHqpmOTr7j6Hz${8biA@Sf1Ois%uV{B zVTU4lnW8*L(l0vgOqD*#eyCK0-GYW4ji&Cudyn}tQ4t5YqKZLuR}51fkhMBwRkC*6 zlp5H5&|pO`s>@uXj(0xb6{B7QTZXWW<^t!xmP3^6OVrPp{#H2}X?l*lh+23GZp5}U z)h(R7KILZ`Ht)N1a8M}=G{kE_nV%#qq-JttYKDxq^s5;uTIVNp|9`{mhF&P~oQxNv z_XORUtZVnDi!f~W1u#NY2-aI%zOVg>h~q9S_czDPIc%ew8QV7Q=TrKcyap*F*)U?- z1(q*7i%jzewv8WiV;S3>fYPclD~l31A0v*fCt1H( z{WKz=sCKN#G|%t=$O!kR1Aw~luaP6^J1Pydllg|oGH`%SQ1`t9l4C}xVWg9tAH=PX zytE1vQ{GnjyWK+EVYiM0&hsmKW1q#3jBv*k(!sRP;or(VTfBL2v>Lcx9(705aMm-~aLf|;ho4vt0 z){A|*%<HIrLZv3 zoT3-cq#A9Zwa{^xr}{YKR2qRL%MXLIGBMA$N2A8+oFb=!!@^zUN^mdaCsXU{ab|-A z++VLmvDGOCvihZ8R+8<+_G%;CixAk?pP90swu$W<&7c`6l%jdRuoo(pbi!oZIVbSa z;cVhGd5a{3>%iBRyy5K!3xLEihGpmB0n5bNQ+1P&_rsoffiMeUyyF2p92pz0{k9~T zLOhnUu#y5N5v7ja&FY@pkMt-Vj!TJQX=BE6|u{WlhqN zJKB6A+|0%j`DZV2yC;zNueS8%T8FO0Y}3D*l$?8P*VvTmPv z5aU2|_~OY->gLTlzUyH;g@e<3RXN&8_3*r_eqmoVNvoZDl8YPpM@9JGK?kYGR z!r=7^i(}{;rIx%b$kjehKXcyCQ1KvM>@TBCKOeSpzC6?<2Q5U=IZh}??5XtqKR@q+ zX(1VIJBC~9`4_Okd*VF)JRW+H?!^IjFRSY5F`ON)iVvvL(W(mrU-3E$$BZyQLkDA(!>e zu_hcc)L8{%u|Ae!jrzkFPes9oOFm3Y2(+cyW$SSFKf&DTa$mMrG|?34?`j!7`^?6g znTiVuCZDpF>j=D6$n;hHpz9Qjt#M_8EC~+^B-3!OBj0-o3DO*ZrQR00K{X$ph0ht$ zkav>RD6e9_%6@j*At7DsRILSCR6u>hr?hzaR&!`KJcHQ}+{HW2j67VTKH3f?o%Fb{ zp!l;bOI=lEKhOE&=CjeJ_}RUxO!*sZ8p6Qj?q2N(C;tcBd7%a#Ph3$-_Z z7^{#fVjV=UuI+=^Es{cIe$n89j_G37N)oB!-y?7cDhNJ*y)c2rUQ{bf7t$R!D;!Gd z)%fGHBWTHLod3hNECKYnKz+RnE3&l8cin(7le4Z6_(3=o1@1u9TdlM&UhKJr`NVpb z@W;vcDsEWuMenzm2m7CC`Z~;2!08%1r#M)tv9ny*WL=y1dxn@eT?IvWK-Envy;$Wu z)U2*ewL@L8HnrqSGHi=}s&F!bP=*gyvkbAm{tC^%m-jfm@r*bo6D4Fn9L(mawy)wh zgN}n#PMHTYl~iJs@h`k;b)-pTW1;t5L$kCn-&?{%RrJ@ASR~!q9bvFnKIwKz)>%Ac zhpu@}tpWFf&_+RViLYMpl#OVV!v+-EpbF_2Mn(F+4G!S=lUS{#M}W;n$R_m8HiGkC zOQ3p44{ZZIfK+=D=ze1h`hW2jJL}M~jKowO15K;zgpD^TSqezorui2Cu~4wtLg$AWzK2+I8dAp#cFV`&n9oZ2-y@=G{s_Q3;G+U^R${P3kc-mL(YryMYhQ%i3@npGA z2{#SCYQ<-zZ&(TLJ|Dj&^R%5%D{1=r&sjlmj_?`|Zm@z5W*Sm^2Q!8A{=!PAMP^F~ zU!CXQJs#QEXUHs`qR%OYiKj}9G7{){e@}vuR$Vh)Zsh0@FQ#4s4dXnYd`HKcoUeb& z{#6_pwJ|PEgU9TAPNBi=$T$O{`NoEf2|g4g_9wp^#`N>>K7f{8$NAEf2Y6Rgo^wQ0ApF9iF@HC@KyeslE4faCzASUE zT==8|RLUGh$#Z=KVLby`0150q6q?zbb1AD0mfgy7A7bKfr20(#JmiODqD+Y78p77; zjH-?cV)AJ@$(Mb9nM*G}R^-5r2YtdTBc3xT+r6@QT(~+RaJGan=@t6tsoq@!Oqo%WTW4A@IugJMsnN>$gibY;FRx=e zqjXfY&k(=-Nfx9nMc0I+MO7P)>@MWPMyNR4?y_tSFm`Yk z2!>O>Xoum%%#<+}6@=Pw7P$N+U(f4`JT8svjxMYnW<&gTW8yEF?cz5_4%ESK2HG+L zKD!PDSMK=o4`8CD8S5C|jeDM$!B!nXCH&IG$lh_&K{+%src*1qU65?V0LB*= zh%|BdQRYMX=M}tmE`aHAOAMp80fHtWjB+m?NgexV)!k`P#GqTp#vRAr^vXaaXbjKV z|2i!#d=z+=gPh=;_ua?(0ve^rJBqmMNY@w)z$KK1allMiov-tda+?#oYQHf2>4JA8 zOD&WMXx~lj246F(0K#mPS|jV$WbqV3_D-t0R9uUw%=ECAL)*;WXSpPI*1scJn6@wI z%^*P<*2ZPu)m6lQcX$-(%GE@6q}1NGY)P_N>N^iNjY#u>5dfPkE$1sU#ReRDV#e-s zO|&>R$1)3$(c<0$|7KYMrdsN&zexJOiT8#tdKWUa{M~{~88| z;skJUZbWeT4LSl*0jI7~>#^c@WkbIEapX|5}3FKBWlqALICw-xUBnW$jauI7e^Hx8CYzknCMFp#EHc z=5xw%+Hms=@vi+lWl+(vE>)yX;*`OUQkwDazW0S3b@*4AgXfS2 zai&RYR_?+)(4vFiLwG0Dm}s%M$@r{3n2j)gXeA2T*dJ7FFqg+l7UucMHt;H@^z$)0 z^4mAo(kEY@;*NWV5L9fP&HG>~4xj&vObO|GjEcQoJ+f7wWfoy zknjfn(mp=an;B`~&;bUvttXIX^TWn0MSueTNmX04V~|489<<82$owWYySZN%voS7k zh{{^vmxeDpLOy&2;aBi4fdvs;veOo2KoYpLsuUFZS>iN1I1QZ~P0xy8cNMq%3G8<> zOlS1zBU}H)Z{r^)7@1{5Gmlkem@oL{6*Oy5;4AG1$vPz>)=}5)-kO#N)D0Ih=fFQ? zwF5{&8^^8KAY-^LMJgh2dd$3KBOb06d%`zPV_h=cBUc7|EXHjf>mLEcjb`sn%UD}}{2**{iI%oz?N zyf96IR}|4MwAQl(JL`!`GC1q0&_B1^X>UW!BZV61Fu$~AK{>Hr>+>V)8(y5Pbm1al z?t?9xd3?3E?L95*K_(3Ro}YuvEuGPK&eaxITX7Az+8uPs!7pXe2Yu2|>KUgcnrh#5 zk9i=3B~HTMY9YNHVm=l6({e(t5L+bZ%&}?ITeo0B&V|OxsO`(^qy-aCS>fZ9Wq>i9 zyq|mkLeZwohgr$&lsmM4SLayNNfT~-^if95;(YD9z{lb6ugi=?zJtEAEF=Z);11my zbSQL(jumlze{m<$i;f5Ypb%N24f2)(rMKHm38x~?hzKvF(Ev@F|#wXc-*8Qcc1R)$6f?;^RCNnh*35&;7wUEOzO}V9-^;3 zLA}{e>|KHS@hThv6kr?Zz_kDJ3ISr7psr#sxIL{WOP*!ne{@Ye&B-{=rM&sUZ6|cI z6E6Z!Tl6^Zm5*0hZF|#5?SvWmouTvk_ZMi|=4q3pKwCVe`0`?8u3k9Ad(S0%P0r_h zR_mKyS)fv%YOCQ~W@*0g!n5Zx^$)?Eh~sAdqRkw5x`Q>tv%mNMR7a`onm0zXoL>`D zSHH}y8U;;Q20-@9zBsn;I)-D|8WTg*VbHHdbZflcmktO~M?nwcZ5cYB0PK}ef zG_$M2SI8*dBm=mSHl?ybSOE~2#&y7ei52)%f+3s$w0v=ute)!I;_Zc^gra|pE5&oT zsOZNtsTfz_$ie-tz#W?{TjV}z!C}D5nVt!O36`Zn{qzhe03wge$lGV={0r^oK=;a@ z3;4i8)aOw2;n!scO5tK`dt*Tq6D?)JBSAYQ9LPE~BAYs&(apoWL5hM4%8*&!J91zk zQ=O@en0^2w5h~|3qsx3Rnb-JyQkGF?+Y076hyK$OPu>M+!MjpL+WHJx6y^glWs;Ajb4;mNPR0@ckr(jJJsuPf;Qvx@v8HVCh<6||?j`dz8-Wj0YxiyI z|CFmZDaYP|nNNkGkejgt8udT!(+iDuS$}Is`Z}SitryH)2`TBb;B0&Yf#lTWs-~f~ zWT^GKe)?j8S`WSP>01(f6%3g}zOhGp&Y^J5kh=#nXQhyl47)(=Aa}u+S>1O*7m7lv zQ(bo)??U_&(*;WeJU0WL>euR@C*Plrfu?d`3tvlkp$rCpLzG`k0cuxAd$07oVu)Jo zMc=K{yl``oeb~;`9*Z?s;~*jFq#Fb%Z}gZK>7vkRgV`B>A}m@+fZ)?iu6C2wAALgQ zut9)8KlPL!lj7ZN7<4D+S@YMlnVmMmG^NjIFiOfK8bAgYaI(Wv803f|rF1EoPuHT$|y#M2laJx<52@+{YeGRY+vB`s3BLz^mB7X|`pFdjj9~hP=v}1*xy)01QoT75u5%8U6x;sTKB$BcTMm<( ztSTUs4Ku*M_fanBg4r0(byMS`=2vHRU8o zii#c$pdtn`@U^$psDaWNA+Di9gBfWw>37LHkn?#RXkTt?Kh|{5kA$F|$kU6LYSK-= zQ4QY6uA)%?{s^yVWpl}`w7Pv-53uD+@5PmNFO1=JS=R&7^e_NtwgzY3XG{d|@hBuWR&@^_VF?0jgW?8}mt-!VT=a88sQRZ|Ji`A zr_RKdfRh^SWr_LsziE~GG@W*?Xy9-k$|`GRXNbo=KUG9V-^L_Ixe&n+xRw}V=3V1I zxAG7qsq;*q`0&k3)seH<=qn1fIWq>Y(Tm0{e-~j6R2$(M6#V^mj4iOKO1Wn$N4?j}?7D1Pc0{kf!=$S`AT?yXJLUtvsm2Xo;6j8Wr!Xn(aqjrE8;N7TL z^%XOooyf_`80wr+=qhPuaQ zM*m{e?iu|bROmEavW#HslUg)~-yJ<*7&$#r7HC()zJ>soNEp9m5tVd>czGCqLm7QuBSxzpclZ(m-(E@Xc~;pa+ZM>0H_G;6)h_y z(S*8D6RzlSQR2Wt2v~N?Cwa(lK+w5;!d_RsAt`_jJ@JdBoP!!WnK!R&i=BOPdG70(I%Ly`*(No!bgCd)L|+iqwbE7HjaxE%;X$+( z(pZ3My;kc=f|#EL`BUti1tKZ7LQV^!UgnT}stNM}!a6G7av}+zbfeiil8SCt|DhW& z_<({MKgc8DuQ_RAKz&d^6AEv{8CpIMpHUXf9RVn>{GJ+NXds{ZB@bO~7qgg<^Du6PG ze$`Ot_|p4uczKD!`%V(4NzuY)y#9q*xccUBFcO>>;@s-zN^m^H)Xz$OTK%mZSN`$6 z;{)ln!*wdYy*ycsy{#o{5wjaLUF=7bUp-Iq8GGWDu?I$BeHf6D%f@3!bVHCRzd17u zWLzwRGd=}-KjpL~fc;JU)ymd{sUTFdZQa*nwL{I)OcLj;Rc(h7NLS-{**~}xs@9|| zz2M257HcR;8FeLdZm;8pT>nMbOM09>l57rsuIcR{rT2^f_jlIgJWl)8=QaJ(4m{GY zkt@KF2C$WF$o8i#AXM_6ny0EQ?V?rI=cQ)=si_>;sWPv|A=G@5Bae4>n&yVS31rSE zzY{;Ta{V-5`E&52oZy66j2?ic7)r_yh1OE%nyz=h4pwadPV!!(*r^4}j|elO-b4KT zB2pCIFv0bo%-AK|BhAJ7UY3Yv={I1sZ~~Ns0z3=5P{TXGF`#(7*&>O8J8kjKlrjiF~bzU;JGI__OJqo)VZ?=g_Z< zza=$N%$5fLX)%XQP+yEm9USpg+v%yfq*^PzQ-&e3#Od0)(s;}>{z2K`V=&z7w=m{G zSek~6w9brNM9)8NzN&;0#&P;=5@1%ZihUgON=+xKD?0Ea3xcR57HEv=ohlFNzLn^P z@vm7#3#`7i{DXCekk4Efk0@JPoH+#_g+R+E$+bVj)28%*G zhAoX|2fj~&7qkuiT|wKUuxbp<&*sym28_>BgG;P=(AfN*tj)~&vR`%E^B1RiNU*5$ zExOjCO$FOd$dWqtrgit9y%X{yw(tXR&y~}%5q!NTyfy6s+N`6aHu&Go-F#}DQ*Rs4 zh@x_>X5AWRxGXkh21BrOUn?mp$WR6YgSp0&BPcAfc~CxU>%K2KuMVgmWhp49*urh1YbsU!0jSiK z&{rUC4`3GjuJrIW7(~6u?M)OuD89-+<})CMPj}>r_S1z?9eoU~?*;0`!Mz zMW~YbG0NV*un6hR>%90LaEn4RE=nBYI(8o@a-BSSgpd?C79?iVzfA5TdIOOqHV%{e zy=XB0&i8ukzJpP04R+&m<)B2rM(Z5FwB;%2uacuI8b<%|CGX(BKm# z9KC_hEV_N{q%kXYFJxZ)#A{@-fazIuUcu)?S=C~%N_42NAtf_zYt}n<4`e7>1$ioBO z(aGy&W>BSuFM&A#+*6o5Y5@w|PgM6m{3^M#n#IIG_#Xi>$u;S}beC(ShRX#C43I8w z$5PQ|$R9m|5ZTu#97dsu337xA=pa|M-M>YqJ{F7Un#`#v&-?1mEREg;y^xCcKzH9# zNYs4mehk40*lv2H5 zhN!}y6ZAkqv>DVIn12+?L*xHfY;-{lr6QC}-DvqpuXx^A=Epy@B>@}qd?7`rf@<*{k7T@u zOH#~1g_tnguH?JENk$*acc;n~2;gFy(o}>baio0@4lc`X ze--2kG%m7NJxtYc94{kh&W|i-IxdKwjXW@0ar9uEVk%Q5N9Il8`LuTp6vVrbxZzov z)_j^xQz^TW22ZqTa^Cj1|FeyG-B; zka#*qJ}~w7m&ZU!G<_2sGLfKTKJCYE2(z^BZ?1KNSwf6fMVXN#MM28P<99HG8bwUS z5eP-sIOxN&7O|u2^qTMGY^;;KPJ7Di5Ha9s{3&}@T_um9-^k!b`95EUnR=YiVM<6t zo%Y#i{^X!@0rpa`o|$48=$-Q zAFoU~+h9spQm+HDe&vx|ff=|IKod*~^AT5Vx-TVmpL5B+C? zeyp~tph@De1pY{RwN-HG4q)+#avceu8Z4IQyYQOv2L=e*B6?ZON0fNaoE&|#xA3Hr zB>1EhG3-A!6ED<%GWhlC-=_f9?&mm?*k8a&cKGG-%R>5xphMBA3msmjTqiqV#0YOP zaKVQ8#{E|qS^$yct_yS;_xbfy!eC)lRL>P99|~1Br7sFnqjc;nzm!~3MN=-?y1${! z9@ki%q~x6x=)#P^8-;{ZInGhfdlLJPxgQO*@iBbVksY^thpkC<10vYU9%DA0%?Co# zvtDQYB+MTRz5~KV%}B~!mITJbQj2&_g!fxn&cf9N=}@l){KJP83+IO=pIcq41)p1o zySVlv(ml=??=@N7)v!AZ#?c##HT5P{_}T9XJIBH>cLStk4Metk&(Ejse^&d2kV0jl zwZT=I_>xua8h4gCRTX*DWb2i~$IjW7mR=Dr{uy;#L)v5&jSsErKi95F0%GL6QSHw5 zEWEWnB~}Cb%tS9W*HrEX;dzG1)gt2+bXJcMAN+1BeEt#TLyC zy=t5TXSe1_Tnv#Sbc^potc)uw-QT_&%BN|OGWx@iBjB6#`&q~Ak9gf=UKUmR6n3@upcjmsfMU$JLH>J;ZiC~zcL&hFYRZHcD6B6E)`ydDW5P1T5MkP`^q=MT z)KdO{1~Mz^c-NJxtUmnW&!gmAU-p@`u;@6Am!XI@?yZud0v+&$E=dM0`y}#L27)Hv zg5H$6a_60Zprv??0zy;O+Mh@k(^qP~IWGIe*S5_Jv!~~13RutVUYl^6gOJcw-g^2} zVE2s*bt&*5AN&=XY$N$Ok`OGL%DJ0NrhgPd25@G9Et#ngrb)gjLcSE-_H?wGRf|tG zpZ7#j=-};51g>6CdA#;RTK=?H^SW01fcMv7Qh(k2D1CS2Fr@g1ZPKkUcly_Y7xTR< zhqg>Zo|(w&)$dXI0Bzu_+M9sFS)E{LWXNTt8v3kj78`KE{F)TcyPg2hK;0yl&7N*+ zA*Ve^{CBrf)+04c-Oc8CV-0hdrrgAj4iuD{B}vBGCHzg0Gwm#`)NS9X zscw^0ls)b`p4~V?7Zi9SFZS&(Zyd*4%dGD|cX*?m*zI&+KLfX~CDod7Tf(z==Vv`2 ze?&_pnIvfYzx>GJAy?0aKBp68Ddc*<|1I$+C&l5Wp?o6%Gv!Wuq$?{p;g;8B*YKq; z%c6&y=*YY>{#Zagd@=7dIBuu*KqVk~(IJAYHN=T-kp`< z(y}Ic&eH~U#2!FI4^RzUQ|RiS@ApwqgUlhyE-7*A0~o=LNp`u|)Wjb*&B0CB zE#c<%&!M{4_aJ$6P*3dTPd9G&7wr{>rloZ9IRcE|S_BFS_2w4baEDXVx$j%f%&2n0 z9zG^R%XI&=q3iRQlChpXnjOjs!w|LEZ-|9I(QyiE#NmuZ}|S5Fi@xqtxqHgtU6 zI||$6kM!%1pUw-JrqjiDxPTwIPcMVF&p~xtt<;TeC8N2jL5JQ#Neee1HgMfPt2uO$ z_LigbJ{U~|-B}pOIBQGlZgNHiH*W<#ygsDqhz`n7w-`~`Bm_J6Lk5AnA;$_g(Y1bzchS`+q`fiL59ddIR`2W4rDfLJR%eawAH@XRaYvAs zChT0zAK&5w52cO!=!`7F<-LXHxL!C}NqQKhB;kMtv_>#27#LU{E0jwah!W(7J< z&K+za;bufhP;cSQ4=p28i$u!a^=cH796oW0GMmzDGEY`m6iXsMSn4u8Or=d^;n|~9 zPhEfg*LLpQ_gD8fKIsAA5_0zZeLkM+T>-42A=ls4aL4nyzOkWGrN}{YjgI-=WCOLW z_32MOj0wGxJ1}_S_$(sa%7fTEhSKNEmt=cH7;?WI{pwIntFy^*@q zVZmWUHq$S$mBXVj^#$dOCP#Re`cxUviJR)2?2R4ACOH+v`VB~FxbOw<11pYZ)!ZEk zB4BH4c*!+inrC;KYmeI}OoIZu1679fW7b+fSwIqoB+S-F>v+l zoqf?oI+=K@8?niVt&+95X42zt*E9HaV|&)SV%iLmJ0W7suA}8_J0ssbw-x;Nbt(Gy z{AMdj@J8_w$?Csy^kz;HL1MdZ7kdw5@PV+hNvQjXXF(cDeKq$W_#k2HC@1*3gJmh) zymzbM_Kko+kYbOMNit|K*47E`P_G$z7_G_E zG--F2PTvSVsmN?Y1|NmNS5AWKRauw^Rymjay7rYXr*#z$t?s7LBNTsVy3qO+=D0qc z-&R6eZqho#;UYptd=glq$U5P#x(XS;W-2)QE?T!KlD~XH9qw_GdpXvY35OiDn@e4$ zM+!ob_)HF`v_%B=?Xu0 zZ)QPAXDZ+$qrxJ5Z{o5xXk2<^m1VpH3&%fsCB+K%35SDrk*}tsn?u`sI*FEL_m|v^ zV-keMm)&=k?p&OAu+hKg#!hNqlA%tkss7mreY$MJOzm!;Grn@Ya-f(U3zaxdkk=>} zMV}>bk%6!N2LnbEQt8nyF#Wy^FW>cnSivk}EZm(cy>zuH+Zlsz^)H17&$Mmth^#r6 zYP}dg@vpT!Jg9G8s&8f^16I1dx=%COHGX<>e!pk!-n&1ID=-Apb5=% zMqlGE%XYOfH{2gbuE3f5ZJAaD9#Lz!!+Z(UH8dzF>`z{vVtZZd>Ks9vNEyf7-F?iI1+OhxeNYP%w3u)=xWXNR`!niCiN`LaL=?{A9EK<|uSZ~7YE6mBUA9deFWl+19#fxJ_gM@Y9 zQg$-<PA+sm$e1-R+K~?+wv?@)Ewsu$(kkeg8yZXzkAIW%P&McnfEb)CGJTwmxbY&+$F%Y zoGC7o3RU^%mh*^hb zcinYKuB3qnZV2zTEMi5XmR%(LHXOu$3Q5!4HSry_&cW*mxe) zF!h+AS1vjF6qbr7pKHiOS=Sz{+G<|8kmb~qrzZvw-2}sat;UiM#X+Z}ekHV$7g-Kn z9OM))0YFvXAsYkX+pjOP)fv==sXcjcN-+?#fSIhxb=nKUn6f5k?MQIW>?ip}2H?;QXaB1DudCVYlf5`daTuCg&yZFBcNdWg znZ4$pzG2SoG?Gj)He_WP4;~7)j@F};3LLuq@7>V%C>Npw#kNe>wiZjfaR8>C)dLt+ zPKhPR$V$3XQcz9n=7RzFL8xS6Z*#>FiT`|(3y#3wATJueLf~68pAwa&Y0}CVbej@t zaak9u{SZyrrg-(0vO~9Xi}`Zz;oZ#L_2p(q_szWsZui4KMLMsLf7>z31FKiImtpg_ zvX>W(-BeCSN0B6Vch)lZ3TJI0FgfDr{163L_SPK`jqk$AV=X?DD#n9}S-#UN^nB!E zuSi-dnQZCFC%`Ma@#R#&bXjiq+XqgIm&lUJT{;i-$`3y_XmMl>gcRRjm!mu9af$i$ z4~{>fj=ys-O(M^3v1umnSLfw7gO6#GT9dk@=YvjVwU*1eTMSNyj=6jpgA8i|9wg~J zy6=9BEZ26PvL6N9Pj3z0bd&i`N0*ckeIX2Ex^X=VIHpKrWmDM)kcYrdD7CiKazmh_ z+1=1zG?tiM6gPQ~MtC_j6{*QCezqkU>7XAFnmVR$I`>~S4F~z`DUs4kWMn0$t-Nq` z8a-KQ9+3(wM+rJ{0-f58fnwj>Bk#q+a zpVIO?v7UThM(mgd|7-ek_$$u+T(0`{<}}`PSEm7(OyllU876n-lk2CX^e#!H!u)ES zzqs(^qbuHyJQ+N*vmK-mBWiu?pA@Vqi;WfWg3^ew%iieJApS(nqlO8Qk`jhtx|g9* zMDLOa!EYDhfdtrEok@R$mK`=w@kL5co+aPRVp}Lug8{i<#IM|-A`M_j$1qO10Zym$ zetNr8SA6mC|VsUQU1GzI!04jimEW|IwxOLm_%iQf@c+fk=?_`{-T% zI`d_i`}>8U-JGPhq!8zPG^0DeN61Z(@lm6DtyjU_mk*a&Eyf*+_cbDyvF?K2j32!6 z1O5+7=NS&?_kDe$COV0zF}f&0v>^KEEuuv4g6M5T@4dGmdJm!xq7%Iv-DuJ4j07Q! z;km!R|MPBM&UKypoU_l~Ypu@%t;gDG(DA-!hWA`zuJ4KWkAdB)6M8d$SRCvp zW74WnP7TwLz=!9cu)rpY>SUWl9M#EqgxmaC`tO!n9TZW8!PhSx4?k4oK(a93DG`hi zT-oMpuKZDcw5r+hQ?~L@LQVlTG_8_DvPGOiy!BI!3?CypuQ<|_)i;Y$(;%YMCKx|8 zz&-KoHc>yrTaqJzX!ioKK!fLY@(Q@cqriD4C?Z{Ns}M)CV#C*XvKVtk z6e`eM>!|%zi<7vdjovv4O}zWGl{@&*b>pS@)l4)JTrU{QbYQvzm9mQOuTc zozspfw%4sZq4YVt0k4|uikalE2@bEbx}tbO=1r@!*TG>a&I0;7NvzNI#-(-I!&jGN=9qVblv(@lvaJW4xA4 zmz+nb5^pjgal#s2%hWTXZt|^!g0D$MnICxbdXRcqM83#&q@pBF!qt}$P$T^))#X?< z%w`${r#_umf+QJ7%?JTRVG4<^nA2x=QUHrlAQjY^LP%@+hG%+N4LV0sQ8H`efWUsB zg>~n75>7YV4Sji);*CFo_FCfds#k)8{PIokK=2qOTfi>;tTi_LbiM#JTyu7jwE5&m z=6YI<#CXfd`tn4WQw+r3A>Qs_bs13aPp6$wslmGSkP)vsh#UnD|L5H}6`+ct>t)Yu z#RWrCPT9!%naaTRa`hxvdL3sypFJtsUL+rz9RP1h;IzAGQCxqxDSC2UR&WL}L+zz| zJoKbE{b@F%hCG~)_ah4eC6BsKOk9!#Ia~Xa0&hz`r3c^51aPNTYCj-#i6Pk;KsxDIvv0-hX{F1%ag4JGpF z=q}-Lr_8`J>KofF$ylf9BC;TcCF%*q73+~qRA1sYGWPv!9r=k(uwgjQH{e?sB(eR( z5X+vJse*By3xH}pD@A~4mI?k#qxDkDa}8*!@PZ4an1HF-3Lz8+!ummN!jr$_R5wiOg81oPCCqxhUl7b#gHU*T)UhYD=9) zGCT=8wjoM-H|wHR*q-v!;5Qh2MGu)?nj;PTtY6}GB?MDDYDGY+taW^*{A!g^RJXfZ z%$6gv#YJ;K6lmBZ(q=oTh^iQ)i|(0mAQrwW{wZzD)g-p~YktXe*UTON5~X63S?w8) zsiaOkpUI}rxYxW#sn?eL^TeYC8!uU>6ZAL3ldbWLjYOcOEN>fyxH(j)3)Q!8Xq%*w zlENd9n^)A<|2c6G>E9Gm@ZZ=Air5EQ)EBn8Ds?_xXEd z#|BysD77HVPU7bS;(=>_)oXERYLs67RXmli_5>*$10%VcjzIA}xYHT63os zsXa+gCEJJ_0;!zHu&%yOC7OeD9R>RZ`YoZ9wrJM4GTzp227c+&UvRB-f_HM9|Mp@!yO&&dY1km62sKAq^UUw>F`5H6n8A zl1AUuDNx*{bWG+H0El)W;U|c8CWiy>qCgJ`ZV z4o~*hd8$mFJ7@R{_s<_Q`NTpMB1)s|?v4aB+pU$LA_>^mBG|Q~ZB+5tBGN4%u3VB4 zfF!?fBnKnT(Y9RrDJ;=#(tC^k>NA3N*seknSSo zwci~|=Rkau?c57ki%t2KvuxfIo_-nY4$U7fY;bKrZLfUg$~RJKHHO;lqBz{gOBE-? zW(Beb0cfrmsWvHDN=FEhdpu;9$iWA*ZAzM+?AwTF=RW2&-sYFH`*SJbAG}@6WGi}( zQ5_43Z_%}8slJq?2p+6Cn#yp2LBUTAxIKgC?F0_h~Pc4)jD#ibi5GRC(n zMh2}vc+;!oysB;R_;-g`@?lbFE&o@9||pb0V-Kc$|)%J-6k=(Y4w&I z>cSoR1XhcE_0!(IdPz5vZf23G2?wSDq@ukBe-`-txS{s7i6wzPi@0?);6b|rLh}bs zA=u*4u^;g+n-!oX8N@3EU&W7N2OfUCxseM1Z2~;bdxH%vwrnrF8%?Q4)QRP9t(#0p ze&pN!Sp`BYd~D1ySMiG1kq+U_CW;SoIwAohg_mBWm!&S^kEuH{AJ)2h;WD**rk%EI z!x(Rd^KFba^3JejrdnnE@==&lX8`~?`>4C6+sKx%9z*o@bizL#NR#HjqK*d>|4JJd zu}srZqZ&+9Q?pQS@*A}5M*Ti{SjX+FWkJQQ+4j`+qAz%_84rxRd#7lf zIdg$?--Hw~$A8KH!p)H#_?E;eYb+TjzuvzzDb!|OksH3+)@gY4S#6$5qeea+4fCe# z;Juekm+O$Dee{n9)qT~<05Q9n2=XdG{kn>KzL6*l9*^t3xSHY-+mNyL)eNpe_HI$^ zQ0@v|ikAwise~UM7B8lcJJ7k_07L2dFYY!bR<*`4$M&pIfS+ctnY2dIXU$6^&lP=P z86F81qcVP5w`+5Ds=Oos4CfMfI)rOgrz$-OK}=nG7$K%F6$w!S%WU3_UKA@7 z+xnUmQQhG*;@EXjxDkvJuS^B2WK#tx4FUk>%q$3z+B9*Q4k*EgJ?@ZgJD=mMxP|dU zv_=Q0j$b;FD(!GG&FoG0%Jy5*w$Z1mHA@!g(!8l!q$lh7U4G?`^Y$*qt2Re61Xr!r zMw4W7VQDi-!7sL+YF&1dt0=yo>(*AwAJPon<>_~5M%7WNHvvf_B75|o@N7*k{#B6= zH@g!J_{8i!26v>Mp5O0Aq#WkVGHw2psaU_!=m--XHK8t~)=BCvQ08{YFevjGwzyUy^um4q;;OEUU zBg+coBkH$ys*`Oo3j~~^eC__GxwoZL$?$O$C4fx1kR~0K^f-50*h3T;dK1k?9*lHx zGifPfRGxtM$PA({NFHO*3~njD`e;}y^=FwYLtmCD1V<+)MLKzBefErHm+neNm>YV~xvN4~drXwRPxy{7|j8dR=?^$6Imsy2iLWI2jd_398i!Ae)dno--h=_7z z#IY9$*an=H_`Dk_JKza;GlaL}tZPVaVvTvbyG2C(PCoCsmEYPE7_nXE>(yMf`a=OH z>Lr2CcH!bqOirfnn@5(Kd)Q-Xr5!0GrrbWJ))FLd6!R#Q(7OZ3`oo_U$+cUc1GZuS z>0w{ub(MmLs|uu8xYtOC=x4)Y?OM$RnmR<6?wrTPZ=IrDnc>;Z1Gn^VGd&P*JMwwD zS&tNHhNG{n7P>@oZF@7PpV3lS=40BNNA(#wvfP$W99T0Q=bT}83~he=DYbcy50EgW zA8+Co=e^ze$}@WPTik{mahs6gNMdabT7{kee@W5*ogFz_s)JdSex|x{Tvbl)n}KXx za!mX3$mxx*JKevV@^TVjW@fHP3KuV=OW;ylU4T5%(E42f!okeL>}IUz$8^9w0aBOY z?ypi9IbTMqRI%j0hpr&>!R>>T|DJ05=Xd)zT0lZT7|}`n_ok92JjlcqYASS8V_+F0 zPf8)SAQLl$%}8edMm*##TUA??gHE1f@e_uW_CbE+LwmDv0^OYb%Jw|D(A6IoF4u?4 zxpll+BCP|pO+UW_N_V}#LyW6~`q04^LNFGEvbwd9HCHNUgj4^k9@a{-NtJoopTznD zx5WzGt(xB}TZCY}5_2+OKCwM+&TM0`v)hBIANko7wN9P}coN5ZemX#uP2&{V2TFw! zxvv!H$3>a!kuLdEo^4b}%Uv6$x-UDHYvVWI23nXY+Ys+&N4xFX!j)!QWZ#M_!$I_c@X7p`z|$s5oK&zpT|u>qjLVNMw2wXcJH(7y1|O z%nh$yh&cik2YfcDdmMemk3%l%Z?x5tW+D#EbS$aU>E{cm9%fT~tzbYN8lQz|cB$h5otk92C zD^&VX0_)4#h-rtlGclJW=Un>V7N&8lz$%cj79Y?&nCYZ7Ybz`jWufrxCsmXHRD$MU z17`*UPpl?(PbsooQd46rMma&rB}B&j*Z?x-3bjhP!b3Ix(eoC{IAG z!#oeb-q#})gI`ahR+Kl+Pnr;wABBf{Tpbr{T89 zx6Hf(JyBN;q3VH|*OSz)7Liy14*!v_8>Y=!+%XD_H>81Cybht^X^oQ?lD$@vob;62 zmGfVkOVB)ePP4^XSZULH9jLlbKCx^}6u4vs?kH|Pvws(wfD?LOrx3cl2@#8w6fU*G z1`u02$yn?Ybn#uFW7E|Td~2n|p%Ci4#Xz0-gv@l$A#d z?}t~39cdds94v|q_=B3XmtTLk<|g|EzLFi16{F#I0P`DOC$A*8B=74gN~`o{}vuGZ?d^n~1VI@g^(?S$rNlk~U|4>mh4CcTxmDhbor6&nysS+tQL z#Ki{Jryx%i8xNwNds)?oq&Fg!efF!45gwYgBB5=i4#u`TzloHiQV;+zjm6^)RnbwJ z->Ge}1jP|BrWVF!ZTy6_!fdj;*lXEpPvlM6Z)34m`sr82^FPma1qq$IgQ!Bjt|WFI z1h)bPJW}~Z0Cq@@ps3Z$RV+7cTDESOm!rQUw;i{B3zFH9*_jLup31nw43*$aMHXWD z3DvbIj#A^};xk77Nga|&@J(p{$YrhC_1%%dUCy1snjoGk%DlCk5pg%}VidoGfjQ32 zfg7zqPm*Avo1Dt z2ufqTm1bsGw>+)86r8C86P!H7QGK*A3t5?7R;P{eC&yCJ8ot8vOb&MGi1UtV5OQXR zIX|ohgPcghBEYo*Gx*7ami%@|c~pxh@+Cgc@umL16S5pGb zAX~6wl%vqOzc#c<5lTBtb{c5(0<*ww7`Ys4cYQ)`Gg~WQUPA6RX}RXd2M=B`!1X02DJGJy7jZRw}w9t>X38Ek<}rcSPR^gmzvd$e{sC zy^fwb51?n0Sru4>S>s8z(Sc&EdB531w8NeudwS0M5;(3zI!DlhtFa=qrDp+aZ9Tr4 zb}u&W{@XAQ>{6umI**Fqaz7ck58UB>5IkSw$hG9x8ISu9$US1NK$h2{nTz+HweM$a z--ArJ&_GsDKI29AYKUz)^9seB3Td|0>blm+#-H;j9jWXQ{_>9xf4np44~4C*Fkf%{ zSwE#;_K@-TB+kRn^)PW2eZZ*aAK; z+0hVt9Ro3|$U9jc{!;_px)%73Hvfg7D)r;w0qkm+p}M`OLX>wTzGxq3vA+)u=KRNVhn+hG_wWC;&Ysl!NSTZ7i+9!j%~VIK_1)p8;1o;awEf@RpJl4QqDt$H_X9J~q2I zroCR`O{ZI@JN6x1bITUq29CMQ-rpr0n7{tyLtMX($dgeZ+nL5?Tfpq;bsU=4`Ct0t7>;8o04-`H}}V zesrGQ+RFfebK@3^;0v`b9=9^@ zXO*Yo1o`*tBukFMDi4>ovU9%|ANbTB_RJpjUw)9h7*#5nHRn3NxXzwN%k7F9S?op} zWKhAb|Em@8u&Knd3+EK9X2qNcUledF-m_A)`hBH8;;=jQ_Cjl`e3OloqyR7wd*q+&1FXox#4D8dGn2|_wWm? zpgYCS_rY#8*7!rsA$QjpjKDhGQ!d{e0ZKH8+c&_O8c3LBhuuLnj!P+06D}>%DDlXv z&_#Bvuhc}uB__c^~$H7!;ZAegk>1ER7ZpVkxRO^iG%w+ zC%7}y6W4G*_<*Y|2qOj(MidEdmho5QiZY~hDC1VWVQb(=oww)oGW-zA1i^zq~{x`S{V!U7Y4SWOeMMA^vBJ@AxD4SaY%vC=|AV;Qm*@_S;2c65G69LOZjW&N#41?0_Hq`+I zEUz6@ASV|8p@ghSzV%VqNt>>T*qh#F`l<`bvTnlZuBE@W?8WO3xPc4~zfizh3n)Q8 z77YGhH`NHp(Kro`&_pX;W%rHo#Y%uy9)8h2bfGE=99Q_1vh{9~3W(MFS1)WMj}Cf% z<6HwF0v}Qo%1FwMk@CYc@A%(x5r6G$1p)hx4%>X~*QNPPDI@(4&2ORV!#Lf2ZtU?S zv*||bmAj-YRSJVXFsuFL*AgfR-p+Y6BFV>H8}A3vOXbORy@M})f6$;ckx4PqFrt!F z7uylRiGKxWy%PG|)3rj<-PIPRb2Tgh#O|*xp7LuIMp!~|fZ&}2Sr#V`*=rnpN=f;p zuJ2a*HkQdXTJO7D-tU=y#kDoA-hFIsF+7rb0*K^F{67DQ7kk4UD&l?nIM0$Gzen)0y z0mr#4zRJo12-!k!OUvAErPJ+0toM!%=2Kpnz9|C(0Y&K_+^Awqhi)S6cuDc%goWo~ z632E>j|ur~7hr}`g zOk)+I2WRaGz|3|^QXZaBD5@c@oa$u`Vfvoe7n(=m@I2$QX+}%J1!yV;a`0w4?5(0l z4yFpFWZ87Zq@#)&&^L*jWmECvxZ+>pmp0&O5wWgb!5|F$bSVHkB}JU~(618J_j{7+ zIo1QS^>N;&)zj93pv#^dAUGtnZ2HgipOAIp$CGND(36zl(G(X7FQnePMw43>&kdhf zVZ&=l)WMxb0EwKSv*XhtFvq|CgPhEsuxac^n7CR``@#K zq(P=JjL3aO=}K`dEJ71z?c!4B)pI|Fw>~^$^$-aR-ESA8)-nT&Z2LLT|GdM?cM<4* zKJ*f>hpq>C14q&52Q=O_LuljF8N9|!sm8wm@zi(}><G@;TDGZ)O5JDEbKaI{mExy8y0|f$SMo6H|RWzo@Y)J&>w#4G$)Pj1=Jb^sGDv% zSR{83qQ;PSBn;H!eX!>KYLoGps@I_9%npk+X-s4YUt3Nsu*8o+2?Iy^3a>a^>91Po zdUB%Y^KbiAR27lAU!D0~{r1FhrRV6+O@tO07jgVIk88<3tjf*bhL3eZ%lAz>$dAWs zy^nvK6i61Od`ad|>!CLltJabr1%v-!6wiMc*wSxfNk;s~TLW~CYo%}4DNZuiv#7?n zzef2_jGX&q2nYLH9P^yx+Pv>}uM*KDDkBDYhxrqdA2_yNVjxWLl&uhJm-I_c zSgjTUGb9k}_CT0_ST>Wb6$*TVEH2lB8KqAj{6+*i)*Gc9inv1w( zF(qv@)8qWBHsh|y0|DrgV0GA2iUrO53}vNqIvLuSgQMbM+3c$n!HbIR~_yPG~{A0hIDH&qMs(u{jFQ2$7*ffLR4JXK=Qn&U5>#Y*j1G9khv52 z8+lp)5WwxLV)o*D31dtBa)0tMDbi#1<7=fDnXEJXXg7e zLK*o*h;pJR(rL>Y)}!n6 zScJQMXbtF`+b2AF$Xc=icn0RPGcx;fqnem&=pH)~%O+fDf9lV(YrAJ;kdQP*>xI=< zbn8zgT1FcremN<*xf>pbbvbz6TZi6a*=tCw)=IibCCVtI4rBDIDSKDO4Oe01IbdlW zD^|BdH=Gq)P`&tSv|i`5VL*frXbVe}8drmJ(7c9`yun4b+k;Pn;-@&j-xv{3z6Zt0 zhc&{f{)k{Y#@Bgv;1;n_#yGB4NobB(_EVlPb{X{T5MXxL|Uui{lj4?SFZ z{7+|EnAy$HzOC+CFBd#*#%>PXrGr~kCFH6l=ohBGQ@BC(f5-dA5g4w@-~MX$19nRABnRJnkUCWL7LzRJ+4)-~$k=u0CFUWh zPN@K+ZHka>m-6$6VgzFeReW={MzR5^Y4&b=5+JHrrfj45Y;RwYDj`o4@Jak1_WSr8 zEGKfdOGiu$A;9v@TUq_se-OrYo8JQtcEfiOs zGGo&kh4B{R_06}m^3a1N$3?pXfC-Rs>@URtz|S|c;!2hI;4-SElcyk+D>*OTS`DJ+xaGfH&ClY z`W{tqZ&4cJBk&nvq!DX1bLw7YRAyzLF;%2~VIJm4@}KUSm^u9}Igz8a-Ka!1C7Q#Y z+Oy1w+cHb1k!Y5yu0>P4Cu&U0Ma-Qr>I^pKykH^DHblItXuWBwPfH{vN_`-igR|zOWN{t)trtcLwI|MmbYxz^@IjCO_FI$d$D)p0JV&gCv z4GfX*w+-D%_Mn>krT;9AVrJ} zOG8^n1PqgtWJ>bBK|;uoEhCPA)kBx$RcXn}xNn7=LFVHRYm)o1a0T5d)*hdcJz>Hh zC1QopKmH7MFAoF>+nL%D{YW$N6FlRg1(>izVkxknI|a;n2K@q-UwuG$bXMY?^v(7K z%ZxYG)|7ct%BdmSV5RvCM;-r`O2?4buU&Q9I345`Ukmf*Ef%l$$$J;QvRdvuzuCzG zU*kOW;!RhecV0ekVC@=%U(S^9=`2-@D=}-A{>EF19AOw}_uPJ(g~WOB#Y)|;fJD9P zA7VFGN{ygr{lC}(6cSH25vW-bhLo$WLi=|yFPMl71YhxYAvw#Yr@plBs}525ScYRP zNihw_(UKn>p}`Gui*ouxSDLZ?Qor0w)x(tPUm~*&8%dEP_@r*pmzc9pE{QImk)A@& zz<#nC4SR1;nPp~0yemYoDgF^IR(KR;sCTSWiuj}a43l-%!^N}irH}$DSRn}*m+M$R z-e|an6hS#i+^5ljvjU`OKDyVH0sARI@dP3@IAS(LI}2&H5ik4R)l1?C2-)H+Pfs8% zOejm6#|{t55T!&o&?3V3?nzq_bIuBIg^{aYU+wc)!5!7s9rNSs7&$Ts-j&&X0N?^% zu?myU0)7NPIK5lMyB^DwWMw>4e8Fc|PY)wL9B(X5sv;{W@vxS;s1CAR(1nsz3c^j9 zR}DO3o1Mg>4)%;RzF8Z%$@Ofob544bL&pif@KMQPlxRXPHtt-)=p6-mwD*4r?P31^ z7RqqpwhIW9IhV@6wOvtX%!%){!b~aI6_&zq&oFfKq32fjdfMzJ7F97Fuz_CRd@#E< zyZ^V761i{s`-(wyXXEc$7;^7Ie%4M%Rc^8BtXs57Vx-{Pop^k&7OQWUEM1Y|h>+WR zLxq9SOeYU_jnNj$mEs`6n|xMW;XLX2t`;nMf?aA@)rh7b@l-p_itG#Pm=a2_$u8`p z!9u=@MbA3K1B#k3tB`j5XC{xOv@9jw@FVs!V3h9n;9z#TLHkPhs%HbqBMj+XO+G^> z9sH+UE<>JzEB)Rb_i23nM#!=kx25I@Ioth8ONr(0kB+4!m7{z_yZz&b%{!uj2?u_{ zmq3(PNR9Ew{ElZo@D8lzEB};FH#Dh3nB6~1<5>G2yp9k3|5E$f1^8$D0XL-=L{~{vTayqVo#Oj*4zc4juNQm zmFAyD|H+DS_UD=77WaB5%?jRq8y%3Jgk*)E5n|l_P2OCw{Qg{7vKU4T+mP@xELmNR z`9cDF-5s*uKt!E=9Adupo>H0zNvHiXb8V<}yb7^^?|CeNrE33qdI}qh0bI{a&@Yja zJnF*AB$2`fXIvNZ?V<)!I_TXcm{TRf^VyAN({+2iSkN+|8Orn+sc$ipPa_?V*q`ju zN_80`0D&<{`*jZ>s9Bw+uZ8SJ1)j$GZHnx-pZV{FD^%6w264`KOSsABT>`p(uc;WS zMR~2Vd~$?R*We$f0?%J+$56B9#Nr$xP^&i;TEiq_|Gp3w^TpX+UFs%q?|PfAZ(J^8 zviN!dd_Bk$nM55-0&R*IwI1k^@mXs~=TtRPH#G_q6n(Zw0Qkq)3{Svq70etq1Y1~S zg0_nt4s}aRJS^5dzNv_N!!ZN^Nm zonYYkT=oI9zau=Q(=h=MF`|%w@+D`|b?m8KxOrHztVXQg33I-uc0_FZ7xToiav3HpP3~cgEf{wSDG{cia zZKvN6z5li6$*dTDDp~(hY^t_a^NKre4Ep!?;Z?kKPzq|i^_dG*nYU6u-|=*@^o;P` zY-Z2t{ZWBr#n4d=IP~sLGvDisQV#W>`|}O*!E{rouH9fW@9lE*r~kX1X%D%Zs>Cx~ z`?DRAi61k4e?}cOpQ|D&T^j1kFJ0w3WYSIbXeGl0&JSJ}c;Z=Xpld=yZ?+)1eVkIH zG<75q6V3LO61{~6iVVDOF!$7tNGcsxyc`3PkyuinUTz$Z-&s888_!?7 zIJMaFY?;ku&=$-l%l zK^&A~LH_-uW-rf?F$_4-F1PYUcrDy&SV zcKj&?B3NX->Fu++E4>noD@^P|tut>mFMUN*+AX1LG!a+A}4a65ztm|@f#k23SpoJccNYbZo&JC!0emau9&MO4DGU- zcm^eYd6Q?dbT9*!Vsg^^YE4qmtc|Xq7uQ?giQNqZpcFI8wm&kv53dsBZZ?iir3Pjwzpr`4w{9(qmu2s=UEw zodRRvAhkKK-?Hel2(T?i)u-v}(71O7xvO{km@~-d^*pP$IIKtksZ8a~%Ws2h#!5FO znXbp6ZUPq+C}bA2a&K0+C@(IT;P$5#*Yosv&LQG-6vs=@-c0dX^u~CaFr9lePuz|c zgz+Thy*dAf=$A^xqkqR=F$Q2^Qw%&IyH>kVOrx?4x<5^W7f@wqRE`Jk!!MBYX(53f zsTQ+}DN~fJa4Vx-4J`3+cUhJrJ&0;N?bfR8U7{HK5CRV@9)1NN9L>RE2vPw@&%Tc& z6Dn4H@1r3ZeW?)gVj#Iz#NC7kOS@Lt(e&1>c+tQw;s6Bu*~^S|YAlB>YAsgkOZu1| zS^}>fdtlwJ@Sqn%2(Z^G(U>tJc5%8Q`?Qsu3cjsBp&adIg-NzUd0^eoez1eZ11J%# zpP=IsB~z2w2)y$QB7n{j^hq5i(S8^^h*#fE?q%}yjmQVb>#-J@ghcj-Q3n6Qjuj2q z@asc0DW(6?5swOyM)zs^6W^``VYLDF((qxj|MIVZaKcl?CT8k1dX*vn)oh~CEUB9- zMUnXTdOJPiLEUb*Hq&p=1GWzn=wA${figu5{%1k%1^*(vuDzwiPbF`8hS$!zu1?mY zOaT+Pk*4jD_ytnrQ?ug1W?rP22>5YKlb47XHXTd(y=<0nwA}QgsN_xX3T~EbbJxxj z&mS?ab;mR?2gqtj=v`!>i4xgshTl21jW!m8H2l(8FU&v(GN0tvcOVuN_Rbt=m zeL=OdH@j$m@cIcPcxo~CS#*V;?iJ+G5ary6$G}lkAuFe79b=JJr5bCCJ$$-uzpVM4 z)aB$#R4tLu^ohs1xY5* z)Lm{$$)+os*rMU$@EwtA_HWbaXBeQOm?w(FRZ7QC$$qJPOX6<7Z_}n>B>wY=jJRAw zlI`=_WG-cx8C?Xc8`X@C*&D@lgiuCg$Zx>=f793}M0p)%S1~1!hFfEv@Tu<1tIbkP7G7`X;H;iW{OD>rS7+Gv^q*C&VxYie zddqmc%LY0cxC2d+su^MXqNAF{ zYIG@Ma?%QDHH-%}3-;q87YsvL@}29+yhttRj8hKQ7gy~`)m`1$_*|u=e0AM*#fmI( z858wHj6`j|-w%AqXFMd=o-eoU^4gje-7J;4wsKyYGCNwnd^bi@(NvtXNn0uz_*(b3Onb zM5%5f7GzQ~rTGM4NX=p?Co3LKQ~V)rOG~%18b4UOJF2$7q57yU^BveRU<$G;!k_0- z;aLh$5}sr6LBRHccLh}uQ_e2zR>-J9QU9aDu@n*b+_E|tZ?*Q~G{R2m)m6EC<4L@_ zebe&St`2S|YQrOp)ZD9-zif*GugWDXg^8_&Zcmjy%0w=yFlhLVxF{XsHiUHyf6+}O zTm6dqrqBj$xV%tk1f&2S*nR=N+(5VQ_=~#JLW-GOu;d5QPLtaVk%9BnhC(=|KLT7Wuh1ls7la)#*oq3^F+LkXkePp|SPhnHSXbJ0+Aog4B zN1QsTM8#dg$<{z^^FH!_L76~Ygk3AnyChv```z(Jku|d}<=6WRL1T0Lcf*=d``hcN zem30aCFwu z^StD;V1s}Aet+0-{eRIC{VxA}ugQEqY-D@0lZ+6Y@0yY!1b-%5$*YG@a+P!hvP0N| z!?CTOgT1@ndQODVpL=g&s*YDZHYN|4!)H;UA9yV=@;B(A?`B%LrW z9b(5gAGA$wKh+xxEOseDdI%IY4T9=xXeeiIz7och#0fV)9K{Qawuoa!v(f45soRo` zb=Y8^K1;Uru>>=s!w8?;Hh_`1!(kj%kza7H1Kk{*zFuvjKd%-!$lY%%!q;3nRdQDk zUc6ghiu`h`?t@_`m8{R{z~CM*$DR)QxGLGW+dllk_-x?QSAUI(T-UUU+Oa=7oJ3@- zj7=0!W7V#Z(gDz9#+eSw5Ea2eQ2=qDx}XH?xM`b|+r%HvV@4irg~3lO%FhmZk{8|k z>!I5Dc6Z15e89^2YXB+opy2(ZjVRF<3Q!NtXh?0u#F^adk9MY;8QJ`X5IZc{;;#2_ z4193HB2f$k&Z-0!;v4({p8B|VF5rAOu=9#hgVgES*|B1?w#&%Haret5Nw1&H>My)& zC}_1#lTUSHs6T9oml+}>cq)U<>&^%$Gt2JBCDbog;Dk~IH9UW=O^@`2FCy2?_EBkQFBkC!Rgm zlPgFomoZ4e-J%t;L3Mb2K87nq`1tg3jR?3?Mw;omulSoTeI*D^RBS@W%M3^Rx@Lu3 z_*6I*`$d!xP6=JM1s<_eEnCM48twm_?!XkA1}B#cPl?gkRqv!XNeP60c@S6?b%ce& z^Dm1bRm{1G)@K>MG?!Yr!y;Pb9F9#l467LdgR}XqthR#1`I0z~p1l5qoZqP$R+Tch zqtAk!YhZ7K!um)N?nGFfmt4sz6W|L6gDJUIsv%DhhQRlv%8zpGKM2QTk;nSzGIRu0Qz`6tkxH)AZC4_mOWIeRwqQHyi0LZ2(-N zS79piV_Q*RCniK;w;A+Tl@|5a-|^9y-p6ogh}al^3kZEb>nsOdwftse55;PVK;MVk z0*;><>5gSoXT?K&UN0J7*s|V2eiwW4enc=1B>oE3#hlh5X}oYq zgJ#=OBfmKyg-7tpzaEINd49oyjc|whmNxn^Ck*B;AvgRv#U<2HR-1;dcB{!ron^h~ zFP%GnyCyyd6H2dHtey-W+Ptfx*p?>rW?F(hcTt`ERLV%kk<18gk>mD^k9FhOEAS#b zmCSzk{{6YJ@?Ri-S9|s3yflF$1)`B=@MfB+;ND6x*YtM9#kLaZAYhZgx%7?kv}K&P6{brW zuS?$H{V*Hok7!h#%3DO$|6nG&g4CFrV}#3jUusXAaY+_pNFI3?Sj&; zwCGa49lUtDERAb)p80m^E#|D5|8Se}wIronrpb}yT{-vlpH?~#sSDY-90^7*ZMrqk*P9;-|Hv0MzUC4YZ9%CTk#I9WWF%F%4Cx_z-sDE9OFt9`#2b(Q#bx$Jx5v;c7}kq|+Wrd?m+mP9cXZ;Bp}E&$jrG+J zzAfUM410&BB6PXSCBB^ji3htgR`tLoYrG?P?@7yVQG8!2u$|7Fsxzig@z6q96F!A6j)T$_&P8%vX$QWy4>}OnM zgu8`fye6T6y~^WFX|Pi+5i#LRq)n7ON^I}JJdd3U!FkR&A7gnSs?u`N6U<>6Pr_8n zxCYY`NIik{M)SAayTnJWL+-qvyy+o5P0q{PHWwzD`n0jTu=cIUw=S4l%{id%O9C7J z9Y;w{UQ}W2rT5ZdvDKN+{UB1r>~An?xBw{$bsBjo%-WGMK^&C6*io4BN?q(;2m~fGofYBS9*Wd z+xB5LOQK$DM6XO-`vGwMz<;SSN9=P{QukT3DQNVCt;yMh^3uyA%OWe5qGPH<##!TI z5p(GpK%zJ;adq-Nb3OE};6Z}_p17eP z$~CA4)q7%k8h8+ax8@=R#4rpO9JTF1!biMDF1@?1v5?dEcR?<(=25|b*6>~}3AoUl z|9W?Dc9`|jIXi0Zfner&d8h2xrh58ogAB<> z@JwSEYKDe9<_9mB@j^~W_WLm(40d->XyLRd8vWoR1K=nCFHDy(w z8E`4io{4K^!~&H^KKpJ`VXV*K+Y|ElaaIit&`Vt(2D&SyPt=8nnBWWlkE*whY65=0 z$CXAJL>fkm#3ZCf=a3Rm5NVi%lyo-|(hUNlgn%G9MuULT(m7&MlA{?h#=d)h-kvd>vOuIEO{B$)QZhZ9_Vm950oKWWmKL z0~4spF^s*FcRZ>r-@VLnJ|0P9vO5m%xyzq*jCFMAF@{<6k=49#L3hp(PMHfF^;X}X zJ5;i-uI6P5IQ0D)%j-|P$VLRb>fc#GjD6|SnV=GD|DtmP>5@W7*R~1D|Fj8s7sYvS z*-bH@??P>^{U6znhtgj1tqt6?q-phM`CN+QZOUe>?sETZ=>Zr;&24I98gHcpBF(09Nt0kRFx6y$WYH zLWxsG9JI_T+$l>Tcr!FLq*8&$dlzwF;sBmf+kEybD35ksxvk{T{ikRY^+uQMC#rhB zF?yP6??>Lj;H|nMr>PELNmnyY9!S~#3~=}`j&h@u*j|6nHgj;BnzTPM6&-=IF4>yB z+;xfhIA&1E-Fdk7@lYvaWsIz3vHNJM-kV^N14Haivjtj+nP3lo=KXr{6zdz-+(@y; z_CNF6CHK&kZ|kgl8|8h(vk%7HYF_Uw%fG2SsZ*jd66A!Z#fO`J#f1SG-ls-YFQ&el zKk{TIddA$|VmI@O-`>1$qPR+bY}cK~V1agW^)Z@xONL_SEB`m2_lZX)ysl)s%40Ek z;;CZPzW0XkxQ-JRfRAbLYpPve?7NhdGMKVR_%e)HFvM=WVs5HQDEmm0R7#$FUoTFW z@wa<1BCU|=?@HRRGF}ukjZffg(8#Hs`*9Yk6v_)&cA|Rl>+zpjhQ60@{-3?0mA}3I zlR4KMxJ56*dAZ3-!agFnCl(W`yb)ftlQ$uE|2G?V%{?~XSx`d#rxE-L*NQ3)nDJiuN!(w+cHM|`vPcOY5xqQ-V)N;~y}|Lcp$0>~64jGCl6e9a z4`1y)jhdy-`aaFB(KJoPVUJ7T!KWn4JWrMUW_j@a*Qi!u#IL|dIAI>gkG;idkofVN zxli8ll^e{9UP~dG`lDX}9e_rXBE{mxebHDP!JJ3U! zYdP(C_)nF?QGWQiJpDTXtAMh-HteQ2uiwg}#eKv|gZd$_oH~PcloCp zKScH%`!pe)+F##3OmDS9DfdpJ3YA2(iSHHRvecg0M$!GDwE0NDYWCrl@1|8ov{HPL zF%x2)#-yy)x83NQ-_*`2(O_|)#p4vHkpt}{mskQiz6?|j>89Mot>b<~D3Gv>u5yG? z*>YHTuSNxJKDXN3rtii)_UBk8^JMBKBJIe$YEo;ad#cnuwV?R5u?W_tKv$afjN;=S z@j2VI$dz{4pC}PQVY4>S1aZR`=>pYPpfu!q7_{tH=mR`op)fb%7OSqS;|N$6)CZbq{Uo{Prwa9~9(yXoCTV~wyZRQQ5HG3fUA8uV zVyTMHc&y)S znf+>V>pAa{?C+ z9S+N{P`a%#YwG_=GE;NC)Zg!VUfH*0n4Rm<>t4LVH1Wh`&xBUqiW~~CWi4^xAc%N<) z_pdNO=J|2*Et&p+2;-pKIqFh*0DQ4170N+b%vSEg{pqoz=J$OZQ`3d|eHijQUH)&E zcLH+I3X4P_KT2O>6J567pwT&TlF{8uxJc`32I6JnZkdsg1GD5dMgKDzztaP!q>tQB z@*c|&tpVhia_wFiqhD0A;8IVlXKW6Ly&i=O;KEV@eP6rYw=dg#zSIxk5i=9I8nrzq zhiDddvpxSr{A%ElCu=&hAq!VNOnC41vGx4dtr{`lRKE&O{d=oW3-=oqHTBhNz+NHA z$YDJ%k_Au>NC1rECZ*#)wQtkh9tOU_IOnzC)^-cVS)#Xpw{-C$u^>6csVj$nQx}ef zb6~{P+S2#%T>Rm3_7!*}7r)NiC>{AV+ukTHc9q>+# z+a3%~KxmP9^H(p5I~%5(p5HJ<|5b2}691$rH2jC0pKIxI3V44tXFqpWGgCfc@R1}R z*Z2x0_zex<_1rQCfyjG~Rv`W(7TC@YRkX@&^@OC+pg3Rx8AireYHp9J`j=Cxp#K(mDOd};=<$v`tNxntU{r*xAvk*6=&`Y zjx(GyfU#%8FAF%mf*l7JRidArC$;zgDjgo4Sj*6;NosT8^KZu6eHfqoOr;2|QcB}d zW^ji0IY?22`n)dKPGdIy(1vpqQ@j#qDM=6%U^d+Oa_Wj!ph)U7!%W6Sn&BmA{coo> zYiCM_jQhCjpm7-XX12C%JZvrDkedUmdTAAUQFu5I`j24+czasg>eq$F9BzaiYaSYf zot7V_;NGdj6h(}p&j^+y1Jlhp5Vn?cmyfP5!l<_%N}UHD_F>$v$DLLE|3h#qiUj=K z*0P@QspJD_2pUvU@24Ue>yUj3Ps+rkgQk+IEvGi9fsA&HR#Yb5t?MWo6LIP7;UNB3 zcRc!g2C$j5<(SZ%k)s<0-Z25GpO4O0!e=~0kDpGMLKtZm6I*m+3go1Kx^={jI)L{0 zL0dpv51#iwhjDYG^p#S(*R1r#AqEAhbUUwOCJ%(5vOasHQbI?w{73Vm_1|s|Ius$G zFD^7rRB7Ylcn$Jp5YYH|2K4EUlB`oy>KxOX){0AxH?p-(cCb+mQ}XwvZ&p>|&io~PW^ibqiDrTdPFt&j(aI(7Qhyz5p>MTN`bp%yebp<6xG1+bdaQ;GA%h+#|EAI z{5NY=mZV-X4JU3Y9`pK?9>~rE+62uLHZlU>!o~7{<@m(yf+!J=jSYic_n~d^lCrOo z=!6wbcU4d%D|y>N5N1R6m?7*UY${#sZwSX#>hnL#*^0Gn*E4=uIQLH681*YZrA^9$ z!^?=X6)eFrIYceBV?sysO%`c`)#@y}`-I<|fBy^PC40*ACB46RxR)O6#PTUeQs67b zW#-x}qDL0)97hgz^mfU6G=4*W2UznR%tDc%6B;z~6*}I(i4QywburBEBx15wQ{p=< zJ?go3sPnf)rkkZI+>iVSM%{ciXgYfhW=qEx6JT@XR1%}E#Nz^(5*U{(0=rdstr^3= z9pInu4;TaAK^|Ym4#vibVIYIPBtP8KZq9n7x(;ACVfIZ*Plx{PS~;}yl=vEkSt=85 zC{oIs$)lMHBaFI>D2SxhU3fA@Rn^IbJt784(>-^4E_>$OE|A|XS+V|@TbP)RUOzF zGb8DJou3-*Gz!cA3dp_l#6g>!s%N`f;YY6CdNf_F4Nn3 zLw57y+}sa}=FX4i=C`j2*g3WP$RAI|e3QS{%)GL+|LFyE@gn-bl&H}V8{9|CuUK5O zDCi%9N}5W}Dmw~rawQW?v$0e5pa`_SmHz|G@ew!A;AF-Mo zVQOc+kJNcnicgR9`j{QVeqHNDI;>SsuTcxfp5bm!Z&NtKRjFv~Kj9RX($Bq#3@(=* z45k3gY$ngX{~5(>ncj|z#&s@#`ixF?lsaB*_IimiR>~AF^v_|Gphg;OKUP`HJ(5ds z8O1+rw#0;^&p5s#yjaq&H6Pws-4%6vbl;5mwQ^u~{aUanmLp&6eq-3zo6^Bw2meye zq>J|NmOu#P-L!sZA7;j>R5eh%+IJ zul}V_o~;JP<;61l__Usz?sod6<)y6#ndEJS`1qKZG#Le5yU7$NQN}3ZC$0h_QmuLH zsRsd-yiFa1oTG|KmP7$xI$2PkTc2C1CBf{O#*6V6M0KnyweB=D% zE-N?uOp6~6@<{Axp*}{@@GPYjf7h6c3GGQk!lmAa7Q9Z+G=w!|-{<}p?@I%A~Wgu>qYa71=MnC4x4SBYIW&eA%`#bNfIEOJIuZ1NDyr&LHdos8KA4{1a}4mT~WNP*I#sB(tx2cgI1U~jlri|#9L>zvX9-v zY@$XBJIwfIdSZehLq5T_zrmv#MUD=)n@l~sdVFvuRX3FAOcwV+cRpKYl~NHh;@SwF zqkuRBGH+FflP-nI11|CE#Y-?^YLu=7W+E201TSGJuSBmlaQM|I?vP3n!?}H=>xN&CigjqU<;wCK&XYWpogBs;$n&i zL2uzsaR2i`zEbjBHNf}63SBUe&wnxbBql_t7;{>33LDtpq64lpy21vN0z+=R!ZLTf zl;Az8PH-*|1+_!i*6riTv9kuCA} zj{W==hZ0P|8H{$3k$9eu=cPtNV!>T8jz>jl8W(A4vG)lU0eOSb+;l1DwFIRAsiG63cE%_IyEuLj1=0r|n%|0aM1j_YGN3F7OZ6o~%=L>Wi z@V9e*aKe46H{V35f#fJIpK!ss)fQ~R9lJ}Qe|QYR_uvyRk2D*DqR%eFmaOcrKNOw) zXi2it9J5#Qv?@2zm{(eaCT7lN<;#8%si517k$q6ry+V?}BY=E5!1m)@ExI+7NJyZj zH+QCoSu7ch)*jG{&ZiopVs(={T$mcwsyEZMW?zun+k}(EvKwVuwJpA*fRE6q}79tEonUBmHgV@ z${epDSG9)N*{>`~I^3HZ>d*Akecm@{qrH=dkN^bDrP041=h@zr=}q+_dW>Kbh!iD` zC;ysgKrClBk&$AWl^oAM=*vS9_w&d~&Y5!HU{_G14j=3%@mP4u0-=@rfKw6b-=F?d zrNK`H%C8PB8QS-TM|r*~XbdldzRTV4e&1B0``?jCqvmGeiBxSst zmO(xdZ?nxSN&76v%kxF8n2*265tB9Kpl!VmRqcS>_W;r-K5167TpS^jDI?Q2LY+sG zKQ6dCQWFBk(TWFQBe&`})Dw70)=-FrZEan0BQS-b*T0NRPZv#CGZjNG?wiU4HS4}y zgQ&tbpzF8kUvjs`&c{*J6&t_B6O10IHyyc5+y&UD**Z^!);Sv!-qb6%ceKhJrVZTF7 zgycYJuwAfWphHT2HC{A!rXJ+#6k3)|-^(7!Rvh6$6v?&}8O)lh0(Fh^;&V-t1Bh{S z+JSv(V^l3UW$smeV7;%#Fito>+JfIo8R28-aZ`iV3Ei~=c7@n}3J-_sR#}$OOX#e(9)&uKV9B3?4l89%-kMPF8O!ulsYwemlO?{ zhuv9roo^{h{XnIJ>@}WtQ7Le9%w7WTc5{$^cMk1!JATPzYj@ueSFQ=hTOCZ@cp-xW zR@ra=w_Duf(oOZL{Fr1q6Ijl?!_%qy;KQ#nwM11OV*Y1Bp3jp8PRBed*~}&Wcnq#B z8L8=>+}c8Ir0ovc5Rs6eTmxc2j_6?`xj|ntSd4plze7uugvL{Y+CWbvLiyPj%@m7< z$HCqU@lU+pw;lBDjiyq6jKkzI?^h=($@Z()&tLJhtJgbYdu5~l^DHXHm^X4#nEjqb9BlQIAt1r@D!?bgB zJHB1018r~n%4Xy+cX)2eH(&o_bOJrPecj`kk#rrdpk1_}qPT9U7U!lR+23in+W=be z<3Ia*oTZ5U6ub>WTr@vFqui#g^QQUp~XT+cW{9j;mhQc9|wVT6jP#!{L~tvZ1_ay z0f04*s;aSNbTsZ<=`}FO+CTw2j5!@ma7UyIdzM&Lrv@CM6$=21oGV5bit`;}b?RHCP&8$hgfv^h1jo5FsT zN50lD9x)Dm^7^{3lygbxlXz&*kS;w`6hrQ~J(yo7OqY-mn8=Q_s+vJj&*GmS-BfGM&KDgz{LPn4M>PDaNtOWp z4=#i$AsoqlmH`Mmt*2_x#=?Od1cVy>X?*2s~i@D``n>-M^t{V-jz$bkQ zo7h{7;^5Nibr23^bX(osnPGRZZ8wn;*x@kjr;bZ}4oR-NKkh;0LqBiVrpE`-inpTI z>p5L6N5NQmc_M80uCRN~W$1Aqj04TzElsu5g(*C0ICD6EaL#EJV)x2+NYaM}24Rsu zlzT=#0*@&xwtM-+*3NKFmgmDC{Pb5PdgfDJ)|(muqv>Caz4f0PjD&CQc;$X{)F&ch zjbXi{R!u%aEngP}NYO44^MFS5&feMXZTjZf?WP^94$~P!XD)Q!ybNrXWx_w>f9ro8 zDMOjMD$akDT}kIRvM{MF*5Yp*=%DvHz1z2#HkMvhZDY*e;6Mlm5f+mmCb0yxol4`o z=|%P?KDj+k^X2moY*cw5A=v8Cg06Rv(Ctlw%H2;b->^Ry?5B!bT-Ck@I_Sv8s5KDk zejbzIc_w>FT5OSYfD6U2T_CZQSGbI_I~%+9r(*t7X-yLt*!A(VOyy4DymQ`ZnbnP4 zVF=-nTf({2o#01ZutBV5i|QagKTA|~A`S8lWpb;@(tt5~9T~$wT7lHw9|QaD8SID4 zZgeR?OLpHK@ezQax;T3rL&EI0=J z*9X;kh#D?%Hd`^JZ>=@@O+*-Xb|PAe6oaUW zx)J@f!>TN?%h6zf)QgN{7MHi?1 zNvjF>iIj&*HS7A@_@K;W-Hl3wH=alezLQt8KD*-or7U;22zkhUW)XY{tWeBG6bCo zlI1C-2nk_#q#e@;X9Q=OjDn{?>h^h-j`Vu@+udixBPvTg97f6Ti3?f1U;JRTz{yfb zn>R%g=n$69y%zn=*h4_fBV$)Wma4@t!!Rz95j0pM%A~X6QLx!%2U5D0cB3vpEV}K} zAZPgJ9XIUIFVvu#admWS=Zj}g^2@4glvgnmuBWC&j&~?`pTL-1ajL6F=7F_BSB=LLU?97JHB3Y;eGNKtYoD!6Ke>wN%}Sm#`l|{`>XP&=Nq40MiuYu{rW=& z5w|PYwB`<^-_}Oab?-9+bHp9W&qWNW*tylbRd^Iw8@!faB^Jq=bP=Ze72S(__I+Kj z$$p*VsBLLh;MIC?!R4R8&>HTN97OC3`(Zt{7YzTFV`k{zYZUecYVgKb`ua3Klnhk! z=2L6O=ONwRl+*Ct0}(XH&%aBwo5{1;&Nv`#WqbyU&;4P2T?HdEZh2ip^bBQ2v^_e= z&rB=8kY1`naJmW#nj%3lHc0o8!PKD1B&b7=X)&LnR2dP1F3pC^ioOZg5eVmEJYQcP zB`vb!jLq|NbVZ3E12R}`(J0wEPZV{XM1nd!6wv0{huFy#cg}MS$rrCA$m2>f_MNU;U*mA+H~p#gu|;Gb+&EyJRX4@^gk)WdwFV zr57iYYJd5J5IazBomU+T3ipn!UezHO_l>%Fx*c)zV8({p(suQAxU~s!{hanr{z!-u zW2&EA%YS;!(k2y0yYAiYk35|EpcZ(0k|Px0^bL3u4a6*(&>8I6q?Oq~7?(Wsz>QCb z@-l0qg{QcS`~$Ls@3Kr!zm`9LySx0#edq?qFO~Du=m9r*(mdq!^%RIGTu5|2+eq2B z4>jq4mr3S{sVUS#Qdkw-zfcKJ`RZG-!a|-rH8rci@LYy@Uw7!bO?9h~q`#1NDS}K` zO%z?~ay%;zyc?z0{;XMQ{#v4=ky!aS(6uQGCVzwZ?RB|`yUw!9Npx%g`-c3B!oZZn z?0Pdj?&Rm)$YU zt(+Ys?o9zctQxjt>7D9mUVa8utKZLAPtB-pEM_Ggkz}@+C=D^~IKR!;rcA>RSow(4 zd^z8&K>k8?+ePJ=)ZTbi<8%P~QhE2nNotX-+E=ucnI9yPyhvoGThovLSs;?`o&H2o z%=JaGqk|6}-Glr|$MTf&6!uSwPFoZSl-o=~H7VLraM6PD5XUh*bjzx@>!X^&(0ho8 z`iOX{e#$)oM)e{Q5|TBz1tm@CSj8pspF#_8rgOh}xxIZnG3%>ZJB-ShgaD_8fAc@h zqmO#Vq4u3)YD)JG0~P6d@|d)79y@qnTO;iTc|mN+)~e|m%f z$VbWI1;1XoeD$3h;nOqhfT^*G})1dGC6nRW!G21hhwzTIBW-)%Fm-=Yy%h6KY{Kp0}0BdZ%b*Sr~<|L~=QA`17#_`=EE zrgoV9fFE#de(Y3Mmy3URHYVgVjq>N zW1U%Zvu?VWDknp9`1;w1xyn|wcN{6}nNwDud=wF^a?&#im=gUqSu-D>NOKCx+IvaP zt^h32Jj`6nBID!8D8mva+1vPZcYB_E{Z!K!*o*FqJ>CtxI8y@9)Y_L+~)gY(4|lQh$HqlDhsy9ZNDq*-^Z85(n$ zQ1aof)QT0zgywtU>hE0Nr%I`_$MZ!%Lu2vPhzgFc6q7(t)-kf(Bt8%=8TiT5`Zvo9 z&e3gYL{N1kmC$z!y>ACVOm!UlS;gfJ+)2^Uy>`M_R|~gday_#{POYfz7oJ z|G6fU3kom=Kk?t&+pttaXANvEl*MjN*AA!YD>hjvoJYztEpg>_M2Z0cM%};pt`sk1 z%;+0UiyZ#!%P!&gTFKRkM@>nsCrpg36&o^w?;C@)q+w)-WTXRBv`o5LAKr`8_n_`Y}$XHUmJGd3%_P-;6vdZ<=6 zoudqwEncDd1}+EuP{9VAejb3Jeyv367@Ic2ec;_~9&#jnz_jO)zskwa5gD2y;O!k7 z;S`2NJ*JEz;)8~FP3>Ag9}MYO z;P7IA)p(3f9`VhN)X?TPMW^iNvTnnS26my8MaGy?_RDaOjW6)rt9v%+(#To*`C1Io z<%r7@B+IdKFKql_X1vEIXW#ecWZV6SzY4_hzS_~>=X)-4T@vTYaem}4xG`;{- zHtgNN=5Awi^ZX}C8MQMG`3vj?ZvA~RdOq9y9BSuyYV{&ke%hoT_p8oFv=`+YFbLDa zTs^d~4pg({S$MsdQc~eZ6iwwTZuf5Hmo`fu`n+(aLY_AVM`7y$OqZOBw`){eAcQH) z+q-eZUGlAzk0k^EeExxk{rEJBnMORDblvA3=XDw-K95l6RUSR0xn)+5)WtB~u? z%g~==biv9EUh+;j(uL%$AG~5lt1cOam!WJBMHc(C7N-_3tsG&K*n1i(9I2ABg}b{q z*l_%6_OP}11=~HaJ2%{edL~y@adpsR6+c{>xXB~#a_GfOKYy8q!7LMCQ8msN`a%Xc zSev44$wtaPOFHK)PRisX0{9zm{hHreTtUf2-@+taq~EL_5#e;+VaV|5ucOM!~w6Y@H-ZI+Ev;UOAr(S zkxM)JV%{vg|9J{44-npN9gm4Z=0h2T03-EcE3ErG~7aEniKM)8nUCvR4BB zHrKZnMVm`t?*+aO<%wKke^=y?Cdpo%>pVVze;4Z2Afa*%U|c0qF1xLqZOC$tvkX4Z zHG=06ZSUT0Nj1-qz0Xxfpfk=%0j- zS9ogs9N+irH%f!_!dJ9@QqZyLhVYoO)or-(DL;{<%V4HnUhX!(P)_H6Di+b0QmEMP z9_;(G`#lecgcfP8DmJOdW!|qbJgnyZUqn#%iKNM(KTvS1u}cA6)b-@=^4*W}pwEZS z-04d+yK2=Xt?a=k9AZz0c+dli7p57>T9;X(lX^^;Q$ydq@c(ag;8I(lus-Hbj|Hzc zz&Hh7)wzhdEWL*=ioRoJ*;LiPZRx;HZV$&=v4X!9*l?^{@^PP`5Lr|q=SK59svqRA z{Z@BPa+p#6P1mE~oQ_?oP|ej-81~80^-s-*95BBwx+coJyK_win`CG;Bqw|*KNYdyJ~@s~BQvlQ%Ay%Q5)s3XN*lk|nhO}B1pH$i zqKx~*&*XI90GZUO(V`lYq&48r6ZBdQ6r(^?SEZl4y(&&fNB9i?%uq4-b^YU}C^C)G z96x ztPL)BV#4_4RT?rJJu^4y68}Q+>dN(WRGZ4BjU!@*3;vMSSsYl(8t2FlpNTlidyb3q zX|#G%tE70^TJ$7yyo1ZE>v%89b9~EdZwKM5C%XCgW|k-KmrQd7N(8veOu(1?x=R)! zHxGNmdwkm-^w5`z+nj^?qR@&i=TnUb_u|rk2~;21jAF;_02WNx8y)4n-P7LfvRY-U zQgli(75kTY z@~rq7xy*-iJT1aWC&jNvR0{8#<)w;(Ps4-PD+_clIV&ww*UyQm_Ybe_Rgz|b)xm3^ z5ULRHcT$B=2bSavN`WHOKG6af4cGDkIKeSRALkTkXe=UUt%hD$Yn*cz6(u#G=vkfF zP;XF$(!J8LdK;3BN};4KK6gm`Q{!%z7^C#TMRT1XAn#<$OR~SQjo7f;IE7fbunc2g zr&z|}SL8M8wiVn*R$eWqw%klPss+2F3@DTnkp_ip1sHQorc6=U>2F>OapI6)j%2a>U;Xt&A|D1cNGz7K1u+*QkyUP(w`$oEr$)Xz5>4xCiJ$r3 znc&{!=U0=qT8b%2*;fssihNd>#c(h5IO6z6^SLEU+Oi|J;&n!?F7;v0d>=5ltOLpB z%&o^B*dyo?6nE`Cgi4I}9p1^gtWs=8{Qnw4%VLDxpQ*Mfm`&v#b4CZeMN0v~qrAqi zg50f!{W3cW+H5_I&)IfuqguOIISSPez4+svqlh^zs*M*K;4I_t-#+RbfX*mh=K)`z z8g5#Jrap`q^9$X^>IeTjJIzMi;LZlySMAWmY-Y*h0il>5M|Edzd-OZ13MU`UtNzmy z7HfDQJd>)HCB;F*B=B24V1(sFYRtsu-FczZIfFKLyqFoNGu>Whj3-8(+L@y!`XSkeIs?lkT0-kop4ldORtZ z9JhXHbPf>y^k)BlI@_rfn8d3Z5bttv(9IvU9Unxk@%nx;(y4Bod5uy|EJTm8Dd}}) zr-fbnoc=fzL-kdU?Ote!NDKBh_AuDP#qcA10OwyOT~hF1i4<;Kmu!wvg2t-D@?8>X z4k!z6R`L%RcdO3mzOM2W1*+eDL(_nPadkS}>hTai0?;NC^S)Y*r(Di?=Hr={I5aR~ zq4_@z;`e;!aJePr^NRRhbIQtyT!R-R9*#3yJ8L^3ok)2$3Zz=g4fwe4qNJY*UiK?bm}I9FTU)7-1s^E{)O;4chTK4 z$0F>U-wK`J?r3%V46TD*1K+rYt=u!?QHjoHW1&M@z&vB(2TS}Etg?Y})|f}7US5by z-b3hPUpBvZh?FiW*(SwtzUyNLJzq#!2;=0$xsym5Z@Baar4Qf_9lXP=wrr7kXUed~ z$fQBvX(1Dqk9RYRCBc$r+6c}xCUiaF4ntlG1!zoPq2+=Xs$Gsp|R@0d-f7IsN z-6;iJo*@p8CRiU13!%w=1RTrag(F+9S77g zQ0Xw*8A`$S?lbOiBiQ589FRX`2zcRH1wyjB*t7b5VP_i}tC!YH zg$$Ue@~_6B!WBRn5*pB|+Lv>CN%2q+-0FYvLv!_PHeL4Iv%#!Z74F;~s}2zygwVDh z`7zDe$~nGBIknQ+3--0-k>S1G#cgv_y|*A@d~kshE6d@-y$IQ_ZpJz08gX?&;nTrN z6cSuHBi>&$Vp;HnT$X&+=#XdlTc=+K!j@Uvfw$h1-_X>SsR#sS6~1%k9<~kID^L)2 z4_E?i;oLE{nKUEn<?fvr6l_o`x~wFXHWSy$+M6-)W;8vRoGZ zM~CzPev*%Ov{EJ64`sY!>@gm=J4sKWYSDD$;f}>?Ex1)w8s2z;j-%O3hG;(jW^b(= zriu3rkmEUoCRI3fouSxU3!^q{?!h1MsZ&sR;~Fc`Ufj`4igSjv zoJfPbLG2sOb9q=KKnXgHN=|+?r1{yurUQFYl&W~QxUPH2O>IMMk=Fs3 zNB#G1?|nN%@?!lveT%mUB3R3SZiJv9jWt6R)7#p$o(+5xDYkEa6f{uUVW1n$>B+& z^1zl<<=x%PTT|J6r%vn)ckC8ft(>D8y6Dz?7uOfQB;D82BM7Vu18);DjYIPHHCcCx zYDWG;7vPi(M5Q=Y4C$XeQBQ@}nb)T>(}M214)lu^G#jtrKvfME0K5qpHKVTB4mCj9 zA^QNhS?$nT4Rl{*p%AX9Qo23=>s-1IUbNz5a6V|Q%hoxa{D**Nsinf<#@O%2K?;RF z$IvfcS~15Fy0oIQP<)JMol6e}ki0v>M5lyvbI;LNHCUdo+m3-a(9e8}^JT*ZLdRih zD>r5fupw*nk`A@$=KX-YX!RIAqlUuzY^?{Sb8$EJQ&A@(E=x()KIVGsb8fEU7V#d! zE=%4$A)F+U8-LA8)00TK;oA8@uFFtI-%icycZvTq^y75OUctqf4}z_vk=MYmddMu! zzHGzyuHC;D)Pg-V`W(EeWqLj(iFKwSfgR_0%)M@dyvZaz!}rs{Ir;_gih?1 znaL;g)26smbU&#k|6!hbf_u|$Hs9vSd%b!zz5>+VKFY~6x_qtnZz5e*{;XW6(mLUA zTr|GF+?5~nsHU0+UOEO?wvcGYO<6c|!bK1Ar_uMvlemW>Axw0}s}CY6Wh#S0%}38juL0cMFKrV?>FFPh~c|N1bym> zPaB)T2@l;LfA!%<%ANN#H{YDg`e>RNy~qjny#y(i9?N&Bl@uj=<@aUiNQqb-s{EfDuZMsn5`*GgCi6k{y71^QTn~VURpjV*$(bo& zzY7ImxaqPTX}9wSEojTvSTo4QCEFknkvA*SzhNqBMcQVc4hMbrtd7ViEuNHvdQlM$ zUyJQVYMzW+Hf(IrfAv7jPjiwfh;|a}>RiJi# zaI#wVHeV)GE7>COb+T3H>(%3h(%{1^;w?KMsIF2WTH&X9A;?pHCBEq;5aokQZL2Pw zjj7#tNl=S>-xzh*YT?>{5$9{1N}HCfGoO|~HMlF7k{>Ed7xX!Jv>>UOdVkPQsX=^_ zLLl)aIVM}39ml!3IJh`|!LWs}XC&-|vv^ctI=BA5=&lY5UM${`;m7!zcdG`g!az8! zaOZhbqVR%&IawN#`cUmJx3Fe+;S(&8uX825@BFvUx;|^CV^s|E?3lT(oVQVX&@HC;;PhC3NmQDr*JN^nT!|<3 zaGQo1T^zJn&<&5~7Gn~i65DF@mNVLTOMz=W%RXFiY^`i3_F4+zk(4+}6?&|C-QJBQ z&JPb-I=bt+h3AJY6|Znk1Ynz*J1kc3#t=CvdsvqN)Zx~q?dpwH=y-DXmdS(dY}v&} zIHkbY!6!HE%tg62A&bWHQn&X##d%uMP7n{*6v+I=lTZ|`}A@fCjUJr@9l*K5Qz<+VcaRe`rYd)mLR0ot(PcjW2ivYv9S zclQWh;9L!GQt)K{J^sq%#Cxa|eAb9j@kpD3+iIotB?UD{6F(NPG~+T~oX`)=^99qa z2?d|!^kS8ChNhr2)a^DG+?gmR5$ty=IyffXyRtWx^TmnTtbXtc&nLGfSywmr?Y-^C z1Ysp^rCOJsJBnQL=V3Q4k{q)5vHx4ImRR-ak(uC16J7jsW|lP}{& zDV_Xm>~XT9(qCk6_VB&9j)X@j7?qqxm=CdCzb8%(yKE z79$3)I_4K2#p50{V#xwcXpxo{RP}s{N)(n(wmy?JusPZZOx^I4hh!{+2LUXq=WX0e z782+;y1q>*n7hO~VdXmF@DPe?oL}5RPc%0K6oNYafZn=Vp;{u~-oVAuy9_*=o^Lxn z9`l1ZwmdrDG~HE2q!8%oz4Dik?Y3c=NTI7A57;RZ-re6RPCMWUZL-7VP}6-Fi@v`B zpzGf~+*fLS4BY196wF{sq#u&J()ePTyKH^SHBNky(8&Qq2EOqhvUqHK)m?Q&s~9HHlhaJHbM{hdq&jxXn&krE-FI!_U8htv zN$eI!TVS_Apyro(zvRWE-Edcnhe4hMpea$CrL%Q&x1iAR9s1YruBo~+g~QN|SmUk> zI7ix1$D!sX+Wl7QG|K8qiVMrB5=}C6wFbOnx$f>h=05F|x{bS?cE_LJWN{*07QPqYJ;f{TGjL_Fn920-C0>9FznD`Cchopdnq;w;KGz=Xxlma3#pv2H{9(}*>th3hn z2V4uEx$nL2YyYlmtM`N9mO-Vlu?%USH$1oy&^vdS`qWDoq`juuA7}nz|05*H{8M`w zlDr5gotAPhca&+f*xL%4nR7D))+N$Lgh&U+9EIU8@v>ZbU784CFR(`=Obx&(WZny(ykqCGe;X`E@)!UR0W#kzg{1{^i83nq{2 zQdMLB5M=dcOF>Ig6A57KBIW2vr>u3DUa*wyBYK3f`uI?oy~A*j*4GFKi2uBnAw4eFkl!zu|QjnwHkWH`i{QXsV#MX&WvH^b5 z;;(X-hZDJ%&mK+WZh!mi*GFvf_2tPB@CaiiId2nRwgO+sU0=ozc$?pV4z9$(f6GZ3 zsi*Ue1wMFJl?lSTmZ$wA)of%L%#JK0R3JECXbpri*b=dmjbvi~)L{)fjG z6u8u0Aw`Rnou?%#QEu9uc60=^ z#~?Bmr~Bxo$OMz%P0A!#q1|cL&4tT4ZD5Po;JJbMpzj{F`Yi4_Y0{*0K?lcUHlJ{dvAV7mMIk5Hj@*JrOmgetczk}GOI z_ZKWAUb?bg&;Y3fy2;;dZ0ML~B*l3aBu>6=@jUL1@l;Q!FMbf`FIF~K3k6vxLYSX* z*d4$(2nMlior?j)30@C$jJZo=H z(Ma~83-RhJx3jjnQ}D%30Qj0M%08ZynJwGn;!6CJ$3<%(Phj;JK#h7_q*u2<8c4pM zp^E2juDVG!%=T|;08*f{Q{{dH<;2#?)!s>r{F;p9{aj39v{hhSUFH9Kepy0z6~m^R z&9Csm)Gs!ylCj_@#iT<u})I!1g8WKaE-@^)|RB|m0B2n*4NlZ z<;7^bWwIYtjPpY~Zv+1j?bIy_Do81)A`J6M&c>s$97!Jx#KqM93LL8+WV8x8+CL&$ z#nkViWJO$bIqUlOg}B7sl}E@IWIw;IeKO#w5XGW*M{rvW>ba2UCj8^&N+`HZ{jp*d zIWs-L?k2W8Iq*yoIl@OMAih}02Igu0@=}Tb>8%xfNUqLQqk#%iz?A=)Q}gyZpY4T$%0Ld*iLING>!oP2mLZ_wCV2_cxVXBeMf#T+P+a z?^GJH3pq+RbY`6kv!fx33h_$RnGcyibIm1{T@nh^nw=1RU5Y>69%Mmz(aKURjJa_} zN=H;W{zl_L*d!1Xn#9^RvIolbu|Jo~;K1jyDzUNvKwABJH2|db?EgeDDHwRP-en=G zd9w}bJWgAF%LDdfPu$<>5b6Y4U7xFi>;1f|n|I)gw}If!i->>!h74{F+NJAyWk~L_ zeRDBjtt8Ot-`DP&1KKv6o8*&_mp1^p%CdjjaWatg_aqOy_?9bI9bV}id0&%sCY`LL z0UzYU?(}Uhg&Z)haTxy2n(r})^ksqtsiDQ$VKo~*5BnO^fR93zQk+uj;TV*7@9x5e zdH0Rvy)dZ@$s~ra0aMkbj0jRIz4<+$Q4di&7Dz&0sWOtX_I4Mu&mVm&qKBnwwB8Ta zA>W8i;R&bx`K;T29Ng2Wwa@-$9wmP~|Gq`f!U zvF0t;m}9lKC8^8e9wS)g^j!5&UOtm~Y>)@TryW6e*v1&%#_5JCuehoe#08k2%Llf1 zzFn+eNko_JGt}V%{slm=ix|XNcT%e%;_Ap8fF||0yObFgOsYR&Xk1cpwUOq*Z|>L3 z_$^bBdm7uScAew5z9$XL0GJn&5l|hmH@yE2b6JqRoY4eJq$AD8sxougKLvsOd45~* zgPRrybZ6hC@nozqmZ^U7B=z$P zjpv9bmc@y+|$8+$U45zXl@wT( zJ$4_4Tt2&w13Xtghv;P=*!t@b{w|UaBPlumj9Y6Tkx~C;*Tt{ z5Cp5bJar>Pz&&I~P3)IFVfX%H{lY#osD9*n@@{>V2|AXhurgE^4ZuH2gp*>vMyP&b z4djR$b+#N^537KTm-0`fX+zk@|9O-T;Hqm-BGsy$=R`mALO{`z`D1DwG~ukQ+%K#@ z8^!kdL-HgWmXgXNytNzBi|`XN9@4Q6mP*|PM(u3n#puZNUJ=!k(aD44mxpm8X+f{o zYx(-U`|;W3l}{$wwmcEmWj!_4x3^&yK9Ouknti_N>UoBf%;BRwX(MSi#lZaUUQ!l- zo*3267R)kp?NOyhot>vrVvlnD6 znu&p~U@G5jQrm=A?Q|1+1ruj0Y)YQh>qzG;CIzIMgrO@s#v(xOAk>?9P&IEP4cV^v zXWLW~w&5n}w@=}I{s}MJj~o|SdMMrL-c4>w{(V-k-Ez3DTz&GVoJF{oS(<$E#%QSBNFaIYrrHO?U-uRG zbg2=D)yF}$To5T{?`t-;tk4;%ro%i5Nc{Slx1_awLrmcG*9K9I57w)Q+34#69CK25#5%p zefR49MX{!d%-MP9mpy*SuJDzYjj3A7GhErkB|14z#)d#buL^nRH!qu11ByR;>qgZ( z*(XI}>KJ~lX=r%_nEJA}UuPdik|AktUr>i+7uBhxl)I2NF8TguL3bcX;7)x{>gU91 zT=crn3^b#j8#sl&>~{~KwiZ{z4u^pK1l}*PBGeko*O;s&!O|xs3j2gKr~kbIdX^^* zVEN3btfI!x=F5iz9vdF~K5_onACZasmj)$v83E^9E4~{0z?1(hW?2fMwM0k+4ZvfS zA?i#ba8Jsrm181voR7Aa*781iCOZ~UZO2ektNS1OJ5AuFL?1q50q6(R3E@7XIl2pi zuR~p(^?#z?ZFNgJLk?#B0DFTRcI_ZHGLL8FeAKxbXdqgN`B|pipfc2%zd5}ERG&m( zsx(;J{LTRIr}%I6_(u;m`s|kPrnE-{aK$5OZfBXGAtzE!CJ$tSZX<5@ONVhHaAMA|tk*HnuFx3XjCyG+=%P1DrB?PiwOy6(vepVFs| zt=O?%Bsddx6Srt9vU}nVGnq_VdTQTuEo#JBuTR{bF-xl42!V$ujJnXNks`xKl~h(~ z63ZowmbNg}8?GB(YE>iyY-vBSZ*!k)5T_yq8yGI^hEO1WNAE!!EOP*yQ5X# zCbe7$8Qhj1&N4$=_xg64`vsdz&smI173ASz-q-HlV`^ZWbQ%Mg=fT8U0dlZ@t22a z-}N;e+d(_?Og2VepR(-cOSmeFxzAIDdWsj~-rKdB3t_VkCTUBO(0P^}*G~95mIH## z2Y{G#5$LgZ956u{)?gR8ifa}&J#Vti^~k=+F(#i)V%gNIX38g`MW^Ll(@TeUI0@TNDhGZg#akw$$Ql6s!X(?_mUiIPHOa_r@mJq?diIrJ(#2d%MFK z@?p}i_QM;@xK7ps^pdLBpQB+2?94h8WqscQ?pGk?H+D7katM#pL!VgviV5jX0#kVbh?e0Bc)q#?V| zV7BYp)^j`0`X8V?P2}~^AP^YJfCb)Jv;HjYF`bODn&>6aul%B|Hf)UWP-XERD=hvq!c|?=NcwkOP(AT2Vn{$KYARL zdXDC%TLDVA4#YP_B7Xl6S*rHROx zme=XmXLz3}%Ud4lJ4{iTJKNJc+euC!q+d)J6x<4{j@4k8m>_b@ILtB^2K%R_g%ew$m zTp<2w%22M|-o{sbvzgA3cJ`(n-?d=&t$)Fia-C8qZTE7ac20=eyXV3Kf{!6AcMha0 zE=|HE@odfg3ic4Iqn{8OY0IDipgCUl$b3+?pBmaA<6cv2(qy-xFhWOLlV*blL7W)o z3?-H@23EE21N@ia$~)LOz#iZW7N|2%Cb7{leOct0u`^F_deWM@1~~@|ot@V=A_E+` zLrKUEA&r1TwjB3^gF^R%p|v?u3_t-59Q|nUk*}X6$D~JRYOVq^6_t)q@2ObR6-IXX=b5zt&2A-`&*F?cyYaMVoGj$UDN#>P9_CE zfB;FgWGqjlXS>^`4canrAi(dLbWyFx2)i%5G0Z;-P;;fOVr>Ex$eF1V?pNfpxTjnp z!t%zggL2CXeLFx{ivX>W`Zx;KHl6x8Xe`ZytjA>%8Kz_(7M$IDLFO||D7`+VgGndp zu+-^m#E0ERw)DKodmFcAFeTs4@wR%(PJ%qZ#9Vy-U$3G33fvZ#{tdN~AF72b285-5 zOUS(?NsVuP&bzL!_VQV;gthB!9+A(4#}Wfk%>&T5OoE9qo6sdg?E!J=*7=c zYhbfDw$=Ms1N@-LwA*zYdJ98k@{)C)4}J!$uKoOuXL-m0X(Icb%=^0!?)RFc3!W3=+MG3s8lwG0!b?JbGFhBMji5aWR^WMJM*gx-x?q8zAjsZM|IV6d`3e;d zs6a+Bj6On!O`@?9r68(dY!Utv&wL@DR6?iJV5`{hm`i;EH!8z1PK30lV zx=SG@(t+`wMK>h5aAhglx{hemy?RyD>Gb@kD#c&-`2Iil_+2l>rRSL?F#oVQM(N#H)!|Oy)r|N? zW!Is_hTP?L7A9w3d>z1#a(#sQ|2dh85j47nCf&zBMC*zZe2JqVMhm_1-fjoKrn&iGF#4@3qwB_C;;u zYvT)?jo_d+Lfr*p$MY%?7yYY7kMF9lw~@rD=P6 zXF_E2zniy*7$UBNWz7~9C9vN5 ziAh|q{Ne$BP9hM zQ%zJ2HC(Yak*SjY&J^plad5MaR~}KSQA!{g&8wYxSTB683L^cwntcCQCV5hN17Hh( zlZ@pgyrH*F_z`Rw>3YjQ!ZY%v`+4gx_ClQYelviNX!SaGG8elx)fyzBnupYLmK!=3HCOy=fm zA&dqLcuvOWzG}_}yr1t7j20=b{}C!l?##+nDPqjY%B`*)Fl7Q>#o=hLon z0tj4VcLxzUre1vNjiE_gZ)5rSZsFv(F!LyEiaqb~zYqxl`TBjnx2d~BZ#3YjWrMfi zx~=-IBgun~mAyYPjr?7MO+Ul}Y{CB}$@~t_s}l;a7^Es&Q@S!nc#vWqUrkg3!RcH zw9Ec6&^^@cT%I2{T~nT|@xvBm564bu4}e6Nef$4SgxN{-ABnc#7Y=EJZ8vXuP>PTk zd5W|CqTdiy=zrQ&)z9*USt(kougJ8id@m~%73||cWuC1+JKxO;XV8K8k^wO#$5k+mZE#dcUy7_ zk&Us{qgN`mdg)f^k~_%TSIWve`64Gslq1s-jIcpxePO;7`C)&)9H!kV8ww6a=Ct;w z3%q+Cw{lg}K#32vd1*xCwm!C*72&fp-mcuWHlPG;{?qY1UP)I}WI^(=?+tjiZj$qC zakocUv&&n)`h)54En`JlVo!fARTwfQkuioKMO5$!?uQMV5bSf9sT2(21Fv?tJ8_jj zP;a7ITgOtE-#8V${g%GQ8xFkYl;x2exF-p|*>mXPMe*?YSSTt+-3l)?;C?ltv(0CGs) zfJT!luZoh%7w}1INzwjLXv2=`QbQ)uM^0Vo41K4g4#11Wy2i8lQ4{mSw4rB~R%yOV z4dTQuzK}P7y@#nIdFk6|@=G@AV3v7n@=rujh46sy);sr_PtvyX!@l#?n`O?7p9gK( zxrdJCv!$m7phG^-kvcD>*KQ*$B%#F$>@k>_4e+9pd)olE1~PTqYedlLb+}*kD&1b^ zZ^^UeP~3?s2;t<4`bRQ>?@9SWWkGZ$Y>JpaHr7U!|8q$!YJ=NoEX@^P0*6-4qEkuM zF6_`_-6ilNN?23Qb?omQq2S(iMZcdEAGlqIyf5Lc0={UYtoSc?O6^zO+yChgenx_5 z-t{LKBPABLnnTsF@1Kuy^avdn@@kyrBQb-WPWjxIiuMjBnoJRfv)5TJ~TBi|ftBU{T84LPN>>P<<8e>yjnnJBbUHSU8T2=r}kPQVeOE0{C_pgY0OGapA6NK1cJBkF_;6|0Y`r z4pb7qHp%swn+?e)N^_)77;(uKGJPkH-sb{sGgmRSFwusvUVJ!rj(+8tteRk%U;#c> z5Tb9}VfHilGNFM?Z<2k%foy+=Bx+LD?J!Mw>aI7p;g$1Oaexx4MLe^Cau?*>VzaSM zh-Oa835WofB(#93X@Px;6!PNqiYb`lIP?1T(gCkT>2Ui$k32in( zcRG<$-NtqW5Tm{M+U>$h%L)rW=4xMnkf}PILV>{4%cm`_+K#P22EY^l&QId)=_{Vh zESugaEJ+JZ7SI8ISqS(8_|qIQ@3a09b%5#0AC2!FLnoZ?dqvi#0R4xxWmJQTOf`kt zZ!Wv6h4@8a#$oLFm`!4XZ8&IYNd|wrJ};Y7GzYqFEqnYagmyBX^aHWa zbwk%_Un}^+@cQ!Y`5 zSf$z@^M$cQ#_Hs+3s4aC1}O*L;C>%aH!X#xgxAxi#pHFr$KPK)*O@jWOMd(+ot5~b zRwSg2Apt53`LpLX3{fbUSmcHoC^Zt{SSuRnr;C&UyEnacBaU(@Cg#OG77Ms3$4ndG z*l%@)w&$m8)H43s=bPFKLRUhVHFfCrxmdRU`Pu383(zm-)~s_oy((OH%fPg25TjT@ zzuni!fr0J$Qk(Q@wrAw5AtVJCOk0EvD;!CmUCuKamNF^4O6DLl(<*KSETNO?DU09+w;ou!esakyDaF;Tk$%)Kr|YUzv)Y9+&YjI z{plDL1uJ?hPrO$7a~t8b^In!LH{ek=(vJHcuBSUW&SRXKvxBm8URf>!P0IN#vMlaQ zGa9+*KbkW#qBWGZ{)Sch8U1;nug7cb(Y>LsqVI8|W`)b|!6!Kkb-A-7A2pk^$CAvH zF;<-1_Mvkc){MuI=u$4^;RQIX4fp)2=6F^dJKnm%$1-AFI8~Y6dv#=c=ZuY+Ak?9w z{{mHCds+bDdn2X#on}?E6Me?a9~kq0yh4z@w-iP)byQau%^A9+&+vVB-FlhfB&JEH z{Y%qN=)?}_eX^|0iP-pDY(5{|ZwMH$L)J<_KF)*<#&S75kcA8I;XdJDX@r zd>KdfBc}Ofgg)x`hIQ1Ztl5EnKm&&naOXDdoStWOUC12(OA}#d-z;F!9fwz~T|k)^ zx|i;#2kdwLMBgq)g}|GhKT$J5+J~)zb8%yx)|F{g(?2@w!ue%>C^sr~Cb2#W=}^c) z_~wOG{>n^phk!m}dUBse)71ZJ+OPaI9Z=N+nwAuw`ySf(y^7C%S1I>(%zLH$x%CIS z18*%Se)#5qW&Ozc7*2N+3RP^J`E2}6@6-6k{NnEq+RaKV{;sUi8^!K_va60WDaL2L z%zC@GHhS;L7L_`t*WL{}+rW#sUSNAt5r3&Lv> z^ggyWV{oJ9{7Z7MaRTZCn;*X;ZNnh`(Y7(c7jP749TCEz&RryZaXT)tq(8(`+=i1r zROzu(;1N-MFwn~dqs0~Kc|xv;jxl2`#hn!l=%Rwo!Sr~as`d-AB1UITxscw_DZT5- zJeYpxpY%Z6Jm!_I-{0gKkiTl{mKr;NreC_N&Oq#EuHXJ~VKU;41sjT9?F)2$49|9J zw?pLqNg9Z3D44Lc5`o|<ro2u$E}SfUGz7Zq{%n?Qsa?b%>Cx z6~z;9c%37s+ta&OVyI5iqe>-@#&au~L7p$dPU=S1AfZP8)Gpkc1t z)q_(K>Tq|=4#F}lLGe>WDiv!8pOxwB>~Y^`_S3Uo)GfAPKUh#yDG2OydW>^ z-9{Ta%{u^ZaIVd;Kb(c0lBpa~oHyrD8-f_bIt^fpFrls&Le%oPq*ae3Yv^|S6EL^u zQq86y(7TDhS=HGT9J{3^ewSIwR$x!gyxbfn&x;>?tGM;N%dSH`M8LHp#!l^gJ`8?N zc_BtM{B?DY=%iP}Sf;-zB?g@@dX+%HawlQEBK+KZ zNzi7U457(f>o&$m{Y1#p_iEAO9J4Cuvj?n9PQz{J^qyq57Gsg%49vv}>gN=y>?VJy z7ZP(^S8&z*0BPCG6~sy6Y^v3xxhUS1LY#)#+f9Dp7OSw<<5hSjZ%)SNxbAx&(ElK9 zopxXG16At}D}I}fskg2c>{F;uP7lNO^a_zHd;R&N55xZBzU=N;(~$eP0P7En*7Zd-e9Q{7 z>3Gz^-b%7JhbGp!WG54NuySY0c3ID+R79;0Ya8V^o&P0@fK&Zd8;5LL4V=Fgvt~w{ zcO=sKcCA)5=g&H(hi>!uLG@_2pEf*qd#^N&&S$Y2cX$ux zcaBSym}h`)+>u<3SFDT|< zzFM+TVqdO2HtYSiX365XpHT}(JzB$cWIv7b_I4DcE8>Tc*W#jk1rnV6KNdTHwpqkKr zDSaSFSh6qpV=}2=Y^%=Z73Q4xNXz6%&qt$6G8Zhmso$?zzQo>Lf8C;*1vzY^uGcX! zE<&oOVQ0h$QtP#(R;dQ;XHK-KCC!RpMzi+_c9IfJme?MhSH$z?i3{OwWh$Y>EeTz< zj8j>|b_6Fw2`E8c^>PDM<9?Mjm?K#{S-4)0;?G`wnYf z_KS*u4FyPpGzF_XsE8sLZ1YHNyOXYJ{gf^}EpK(Wc{GT|6zs>6BttMDlAmg^B>8%H zlaG4)(Y~Z$EVhjyO;V=+Px$q~lmWzRfYf=@!G{9*e#B zb|#9dc9gRneE#T2-@jx(+kjf%@g}`mj8RPF%AVAe5}I_e z+h;4^HR_^Zvi<(80d3wRJuR5;wRw8o zyBfz{RCOLRx!@;6Xdsm1_={VqU!UL}{~CoC-~&*}m(3`Ow6rrVTr$dy%NPvwQW}A9gHGzVX2+CGr2~dytQ@<;;fDg4~b(sF(Hl#K&elh*U1x_MmS> z5(V=!_G}tv4>a1Cf(>EYskdWobGx#xfYBN!t!+_7N@lG~{YyX5s5#{dzX)NNP@gDT zB2>!90xv#0>?KCbo&I$W)T%%9_q?KXjR%i_Pzys94rrV@jOx;9vq}_SIHTdIaVmY9 zKuz;Ui)Yq_x-&A&TA_!NQjNSz9wi?G|71Vlw@CQ2<~=+uQkU`D>zTabg<1>aXsXy(opf6_Co2rObRJ62hFo z^nw0!?l#Kj-a@tAd8x9w7*?x9tDbVY7t(+WzWBOO4os_9DZ$uq&Zk&rH^%c_IuJ6Q z>q~$-uy4~ycA+N1MtmWoS+$-A9wuIJHUF{q@XkcQ?qrWp;6d%|!fTsoa4m2?S>*#! zg6*9u(n(QXIfb)x3@xYmY&W|(PhYz`9Z4q?J{OxvK*QHz=r+lv@t@YKXg0%WrOmObm>8QOh%cIYN=O38qM`w_GC?j_ zq|E^pZ^Gi{6cYFSZdOg)e_q_Ds^~cfRay3ghh72sBk}eelNXW)mEz)leT)0Ch|4uG zsrTaN$0Qc&R3B3iwJq+tZ_;s7fw-Q374}Z3KUBX2$YoQDCazEmPoO)DJJ60cfJPY2 zcZ%Ozt_$%noHOOuxk$9Jj|e!_f*|aWxjk9Oe@`HVZDCAGs!$1qLZ3{CKhf7KN|A!O zwsdE?`coJF*ag2I@6^$XF%s_nGBtT1H4F{TYAfAo9!4NaMwi~YP48f5?Qx6wf~Ye> z1Mw_gi!psUTv(-|e^Xn1bA$jGrY6o#*p@NAO7UH);+Ez5hAGsY7Gt^VXj8}>KTY%^ zAM62mMO14qCOI#hLS8qF)CXPJ_oTd(%;x&x@4Tk)F^0wx@b=x$p)@~&1hCZl}z4R>(sLVZ<_UhSB2-!17;Rb!s z+BSg(${l#S#AS*}PweIe>Zd)u>DF*RkK&-lalrptWKCXFkoWMBkR_0EQJfW3RRI9m z;)%S$PIg>E!?hEHqVBg;b#_oPCu9a_4hXbPTQ=W}Qk-c1VDHD9qy9FC*Navp<4Ks> zacdO;wMmO5;!|>k&)rb-=hV#2gwNG+S;84$B;@rYsN}f`X zDEKH4!1>G;e}Z8bhv{v?%Y2yv3r$=ZA6%wU^?XM%*sFU3c&cFeb3Jx=r6Rq_eddLR zD;g&BqhGyKofDK$Bte)o;zi;|2l`iVr$jHOzrdR4cr`S(a^A?;2u+L9c^#j?Ur^;| zdQq++)>!}>V`bN+PssI|H$!bovf}G88l$Q=4Ew#%WYihb4g`56aZ6l4AkIg2F-MB! zQ_reAPqEUv#MA7W)Q6X28MWqJ&KD`)SXKMs@8>hj_@TGO6e6+VJIalRz;?)RN7bam z&~?NFupV){U}5##a;CgVmj^}GjF--$aSDx$Qx^yGqki*u=H zzXG8+ro!ZqMaIh%%W-w~Rf$EsJsyh1$J1%`qbfBQj&p0V9@+u;k}Ols{S1Vpm`fz9 zLWuoI;Q~Rn{jXyi>vnsr^6&-ufAi;YH>1rDW4rVp%hg|)y}Z~N1F}TkR}6Wqm&?_8 z&j`SN-d-7MBd`eg$|RrpuW&tizr?2SQM)wjWvE6NzBmnOR;1^6Yl?1~iMazui^qiMT8}Ez4=4V7stQO-hIox5ZzkR4BebrSS$sB?!8Iyk| zDwk1bBm)bdxtth;_}tf>+e-lwJKpF7zWzkVfQdlG60Zs&M8@^3)+h-l*(Rm5Xw{1& z^osf2I}$0ut!V|RRSB?@5=}KF0nVAhtfcebCX`U6wyn2BttWrNe7q&M%w zoxg>@9UwS5?6Kk8MB58LOut~+QdcDA~Du+M)(xOt5gPRP*k?5&Be5lP6 z#y^%d<>>w5-BY|h*`;l@`fk3UPF(j}ExZPQ=&WeE>p*!g9$lDD11FbNH^QlwY25 zfs&AsyTnr3fm9NG(rx#W=R2{jJowBghyK*!i9Iq*#qU+0)rBDYJUN1iPO1f#U_U^3 ztt37#ou7}Y3<20qYZApVmSdq#|7AF|&nPJt`-wFO;6W@4LI7JcLXd7xeN1o(ZZdn1^&UsR znfv=Rd(Zt|29RcVaaYwS%dBPv1ni8zlcf2*7_majw*4+BaXlc`7cW~oF`Y6BIO%B` zWb7*T{5wBsUoZ~_9(T{#hg7J!$|W0vrQS8(`mCX-j)#g?)oqX5Sf^=|hDKT4JVL^9pEha`>wrT_p1F6$Gr8yHq5`%VhEaxlBL`>x`uP*|HxDf~BlLyjg+U%Rx_i2r8jR zmIyFNfjW*Vv4?1B?Pq=ML%M!G#!YQ{$)y*svJF&;V1)aF^BN}8)mv){Rj9F;HqwHr ze*Vm#(g=;rTO6$mTF<2XQe?#v`&APCVOzK4RxQ~!kI8d{)W>B$7i`i^y)|E9w^`ve z(0O~7z}}rEfBk?fy$09=M*p!wal7$z7@gpZ)DtF;h*;W2q%TwE&Fy11LQlHmN= za#?!pXyKyxn~n8!=UOfnN%!Bco#ts0{kuf;lTY-p10~T|U9=HDzwCQZo)@_g|JjSP ztQ(^S$L#Bc>a)iyTEEYyEVN9;ZS#47{_B5436%X`iRAY#4v4p@RqxY`e3TYLV(o1A zI0pKF_k9!+;ts7@}U#^}M{1f$^p{qd)s8OJg8zt2g2xjk@f?3YHm_$#$2+=Ukv5E2=4wc|b@l7vo%7eb+0Ta5Xj;Th`f~BrE*(5R3o&|e+AuDo>o6B1;iH+e({m@nq zMQ-0WK=S$2R7puEXEaVSX##-xsB>Z7i)o!lE&C+Hxwf)vZ!!i3bnzzZcOO}8wsX}C zUnII*_P_D@X}bU*WVwPNDh=` z68@xz`7K=M9oP@h5L_gnq?rltpL~LK=u?tS;uPJF^KX#tibYX6r-VIupy~L-rjVrF z|Ih7Y`|sCbke#3@6`2P0VysR6HxTEJv6pjqQ!41FX&fehE@Zq^awUk`7^Y;X8SositFPVanU7o> zkC(*7kyvd0;x-<^F?9L6<)Y}V{{m=-XD)YTVL6L!A(ZL)$G1)k2JOri!V=zJ;X5^u zP}jK_5dw0nfv*WRS-u45(?O3+NWpN?#K{yNyw5(rBW5M&b~BQdaWbcd9w~ScR({yg#jtlx3QKE^gS5O zgi!*|qj&$Jxu#YVcNv&c5v$84C~mwVlWDkf+GOiJ2dA=Rar1c>a-KAiBQ`ni6fL`w;x^Xu05At%T`eH}dX46$T0Go_ zFVZvwQ-(Tisxnro6#m$iX{>E^x-dg_X@bV?eynkj{~MKGGow13|B!Q>Br*tj(lD()vW4$F zz=-7DGaH5m$y2YZO7K%Wz({q<|M>aRxg8~_13?bW zDuAFZ1_s~g0hwi{LD!u1mD-rr^@H`1(tgW3^O`|gic79?O!)|>6(^a`7QdIB`dqvL zUMIQs&WWUx-|AkaG$UH*LvE$*>jz;r;<_^Um3Hh_%`T!+vqFvHjxcuBx)V*tB(a55c*5gLf4h6r89(!Td;SK#XL}rFn7R*YePo zP|6Q-fbzhDI2`&-bNQcunug^%MFXaenN5X(pDHJzt^00yLR0rHx4ac8xyl-U{dm|(;@Rf-|Z!v;Zy^FF;d%YzvAZ8#3JgzVe@<`TO zu|5z>{TlCaUyrL{{bUsBffSZs z#CzT+46IAHdoL3K*r#W6Ke?>X`x8arEc{lsU>cD0{UPiALYyqGb~y+QDuC_e-*A@3 zW)TN8%7z|sS)o6MByNZTnTr;Qp9|At64WDY@UpXh^?aI#5B58ybLp z0!f+K$Y;8*1(RDPiFd6guD-G2j>!o z!~YLcXC2pc+rEDZ2}SZoL>L`PDcwCvN|8>H38P~$q?JZsl+vLC>5c&+sR9#e5ZLIh zfg+5U!0*HTJkRU*{g1zd$;Ek{*Lfbt@$QEqKY!WodhHr5!+)3ELe3{@lBUx5Y_XEKVFl!{Omyj^BrOq>P1t?~Mg@g{?n=B5Jh3KQH0>8LLx%x~l3)|47_2fBuAG2S`MceViB?sI{CcpOP5?bvku{yIa@q zEc>*jKX7ZyBiqyRaOl)%R4-zvvsEFU=v9q(Q!YJ9;?YBRs2|Fa21(KFN_vlbZgdoJ zVTj!McR$Os?HqC&0^(jn=_i0P?_$f0JvB-3op3=gKqOg28@2w)ukcwG1ItIA38b*` z%z%jYwT~K(t9WOKu&NKMt%D!0PrU9+VV9!JDolSE-!Im0%xVj;L(vDx&sWV#tln3zXRhKvZaLPqlrKHyA2yv&xVAT@fP8C|Vy2j^35+_|`=$WY&` z5Q1zEIjL>R7^KJjaoQi>VQY_ulJ5~D!EL;Dc|e@c20tAx4hmP)bl!P2qw&7j^+)=s zA*geJFMAeNpAMaJ1tuXBbX+G;7F){X4diZp+Q@tZYipKmhsNJoJ>xkQm zeBG`7T2;VqIB`=-gH&ebT6VnOLVAaV?kdLM?I(QSx_Tw7>V#@dI6?|lD{w6+V)c?G zQM4@Cq^!@lHvE-J;j?x}V*Hn%Ivvtm;UOa<8*Jjy9ul0(y8>Dx4T=tImbd`9b0d0SV5dap=05;UMt_sfptU^EY3Kh5J?HA* z4B{||@QOThJmcNtCu2`x1xLQ$(mf0`aBoJZsnGuhMo60Lt~u||V?eI_Br64<)OyL# zjM|m8IQZR`f2a70wLELTEx2dn%(bYa4{8$?b7pgV{3Ha-DE+kRBRED8#cgRRoT45F zvYynH3rVyy0pf?;{ojHQ(bgKM;O(`UgH|&~H1}~q3WLA00RMi#4=x|ho18Z|$AHfc zLElM=v`cccJ3KPyREt?R%u$UU##miBM)eVW{lI~KL~_EJ8I^MRgz3}JKN zd$qZ$d^QBkEc6Mv7ff3ZH^j%x#xm4f$m7hq!$cySc}*D>M1?+;MH29!yHS{dHtog8lV7siKtz zU(+2vJ};P;$ABsr{;L|1t1zid9iSbgq|7?FjjnM?tq1yIXmuKa>BefqgQK*_@MVTQOs75d1Z0Z5a^1hLC+RpMPeiz z5u6b<>eEV74A$f`^XLiNiHQdq!Vx|}cgL7=G<*VVK#}fkvXy>bC1>9ms72^3I**?j z8Hv?KoF!jg-1LJdiUcOOmQYFe)cK9>s6sI8qxqTI_MM715`w4{xUrlroX=BOUuT*W z(r|@U+}#?Mx+mzjMmHoHkDJQNM+5pY7b9w2-xT$hLQcp(vwdANRI-Koc z(8IC3OAee)qm=(PTf7Uqjhq8@ur)|r8{Ipvqg(4t**nqt#ez?bs$@6?hm|MWHITu+ zmV;G zh@SK<9j>ZyN{^ZpSE6XC41O=I{)Qc>w&B36!J5DP!CPp}jwQ=rH6hLJz4h>b{4-g_ zRT8i~`gOqVmr~WdnC{;H9M@Vx9o=Y0vjSgJ-4gig>0zBNJ&VP|WrlX|SldRdeDubP zXM08NUw+3*6tfST<_NWv$8|h((;KXQqvH_#oogTiF!X=gKl}pD7nh2(!NOntLERe4 zp`zkZj??`!Ii%;r`wyZ14TWr;T)U~ZZ*cUH8(A=>ex0ZcKyUZMkU4pn>{6{$?GAZ)MR#eEb^Argg@2YO&!DJW z_?6*NDEdgPMmbb}D|^GA|B%y~VX9Zsr^@<|X6f)x!;-98# zPuRcx?C<`R&wiv*Zjk+mtHr)7#6tK$;dayzPizv$=+MQm;MOlboxhPKs-%Tj5O7#M zkTxlr$_L*-(@DWcw5wpdsd^xlk%ONb(CW9A!lN)n$dxZ^6ovr8&*M@6T%*%$U55MI_ zL_ulzXsG!yjLwIgDObweJiX2T8rkYUgW;W{8|-85agX?#Z*V-9tr0+#F&b_4Q&=rLf`${&=y~N4LQ%mZiH<^#4-JB8}6rv&g55v(A z-x-I(cv}g=N&O70(Xg3|>p$xIu1wo+mf_4jvZYhhoccYFDO`}<{DA_i&DBc7sc%9r zc-dwy-WALX0t1LYcUMNz6)uMT2|ri-UV86#)j#Tz^b*#rhq(tPS_@A7XnIQaeOVjt z>NgYdYn#9F0>F(JJfvW+j4gweMYs>Vaz6T4(U46gUAh8p^AB}OHk`*tbE3O7o*p(i zwHHD5O*VcXvwzZ8I;eL$UC+V%R2UxCWbXmK1#oB`(Y=S3`s4s)#ceL64_YML5}GiK zb=Tg5kPhtR$JOGhf!pedbh3`jy}bY`lH)iXx_EGmOwG0!09M00$)^^m^#rYcVrm}_ z5<|0nb>xbL|C4%_f-DMMrD5yP&!6Eur!W#NI7O>ponC;ww)-mhV2ymO^K4nqZ8$$O1J4hT^QLb}p0S=KnDC7pvNhW-7DQi#mw)kcsnNNq;UBho1}&y4 zI5O3H&+B01MpG%=o%@v&`G%h$^{z)$Vuhu$LWRtr!V2)VBObQ*Fe#x!^UQJ!crEbt z1$DKHA=~{%__hFEE_sSp3v3)%y=Ms;(Wy0(Oie}6<3hxZ9-@JXaP8*C7?$v11l#lkqP<~jJtXxn*KL_|740#rhf}u8 zMxMxb@1&CtXy5-?)s*$=hP)_$Ua0w&obb&UzIg$Nha+mY6CAv3i_|lN+w-Ncp&(jMTHfy@w%0~nA4hW?4=~V|27SMtD)vF&_+TYZl?MQ%74PC+DJ$h zwdEm%1BTmr@$T0{N;;3T-go!@Z=G?vykwawo8ZQO<8xzm_u-&CwqlLx!Cu-h^Js?v z?;mB`G~R_!SGUBvd;7Mur#-`Q0Jxk>`EQ4(iO2G{4%P?&Kqi9k|A&moyYohU7)eFt<{2C(_wJ{ca&tPwJz)Vtz4#oT;P|4{SPrqS;KrKk=M<}QM-2E&&1aV+ z80m*U)!EcN_!-2qh*MufD#2ft-aDx^Hd70kgIV1v#ttqjl{MSH)gBv zFxNE}f7bGk)XS7zk?eN8;XVN>3L$PRqfnVAyT#kBwBsVf#t0Smf9Gkla_=wIL|g$B z>iIhx%!8rK-Mi>-Pw8-nR)=lmg7P05TNk*neHp{(AHQ|S#Qnf;nrH@$2(E=4d9Kqn zD61#qujuBr``;I^jdvtMJ|;*{eF@cwj&j}j4Awq205uhDeH12PNyY8vd?Wx9*MPX6 zZTxNrnZc}p6w_Ry8B?Xl^PbV}@!X3Q`>Uv%vuDAtKcj*^cy$v2{!ND!I z7eM|+s6^WuxAQMkFVUa8vH1D>EaF*Ty;F7-)8<3esFNv~F_cpOr#pCVQ zY)U*D`)Mj@$TpmA*nS5&$Bjx{4gH<;eag;`V}XEE;kzW&)W{D|S&jGn=k#np?k~+-;m>+(#UCU{-?!hr?#f*r3f$F{L(ojcAw-5Sl_;JS>#9Nuj;tYb^tO|3h#TL@t?*2qCe%J*|OsAhMTig-wfb7K7>Qf5KLb5x^4VF=$xt>=$VKnI66kG}(iVl$4Zwd(oP z)^_M{)U035nf~TcoD}*i@&Jsn$J7OFX6wNAFAbS5VPnWDRWgYXC%3EaD;66)5YZ3%Tm3DOcHf76(AxKaN9&oy@i6IrGxF+))ltz^RG=&2uzr^r`c4Nf9 z^R;x6b9Xn0POmf%#;M6pK~O6J+UWug!Y=Lt^NgL1`pMg_TRG_+Wrbp4XKdVCEXxd< zs1iY+bYXFa(=CT zN|}7^wh+6kd6v9d;AU5T9&B*54lyE1!L6RwTC-oYdIwa%5c?#2Q8U&>IG}|4}vFWsTeAOn~5%^-yUF z5;gS})RPjAUW7zA=NlfH_Om?LH3X*y`G_rQt#x*;zxs=-F&#Ko*Et?svJ2(+=v$q> z-CezLFtnxd6Lxj6|J#jj$|J#((>J@^^L zU%BAn;~?+py)vozXkv z9=lzXuQG4Q4+U}v+`9+*60(*n@;&z8R~7|+vfmG2ew@tNPtoC`Cqq{Q6bjEO(@)O( z$&Z+&!XFhltwMnCKEr-~I}47my20~)|3>!Hv&(Ugfu%pjR{a2=T844ypqS4|r4W?x zNTU&E6O50=hdQ(6wwV^%45OPE<}%Dc4U`2OqaLHXmLfxDld=MnHY>L$ZL40j81i9K z3?9WprNJm5!L^xwGt7ZICh@Cn5;W!|8-OF~1Dr7cF)-~S%R#d!M>B|Gl$y@=@tp9Q zu=0H5K;CF^9$^^Hg2!i4RfZW7R8uq3*NQio1c$ zZ#Le+wNbV~@A8>a3wX+|H_g=>y8lS*2pE}Clprul5_1h3 zUKOV_`hv2fVT~6>_nIj3J5Wxw&jc=K&t%laJ4CyuiOgOkG>A|N;G%X8ku&WFOgrX% zV2N(H-ZO`^$z#1o6^ImQ15nTE$I0R#F_04XF{R=OltbnJx)QoY;LpM~iW{qQ_fvDF z3H94%DF3LN`?)Qcz3t(W<`xTnfi*;b*qRt8@xVTwg%%uR+j2-XYZ`8^}*b-8eu+hyJsPODscyAzjR@% z12r`%p68Cue;53V7Gi3J3BjjFJbXV;4&Hi9lD)0}wnidchW$Z@E&D;c0SDdu`TXpGOSpp{@tzrWpN%+UGJ4zB+T%+g+nX9$ihj*P z1u@VtZ4OLCQGghLx9b0L6pQDWzWBPPmFNami-sX55l^ET22=6C>=(9Zp1q62#FhFS zh$5im3d&1K7e{%hSU}BN49R4XV zx`zo31k3+AqgB$n`U7cWIc#O2!vSgI5^TB3&R}`UC(Hv3=*OIxb0yZ6^G(An72X+{ ziar2IA_$l`v-MaQVp-62G7ytK;d0jc&~=$HPmHoFJ4I_)yA0(vXHE4K-*Q}j^xuyO zTY8NRp6Lk6BTJ9%MCcJKZc2JA!|5Y`8bR+sU1p;+Bzx$zr%RIdFx(^5Yj;Kn#oga! zL(3z@rU8dv1=8|FqMvrPr;`ZcK1YoonF!EfS#sVk#M)w zgH*onus?X{+yCjWuSUvQDZ5=21y|G>`-W#DgH>Cp+d%G$Gw5wQn4`jh)$te3V{s&~ z;C`EIY6rs%s3LtTUmi+lgG#W<8$MQO+}>16KbK~m(8BkV+rCs$Iy24>#`DLo8HQH( zbZsPcC`?^7RZURQg%4}ytZ5D~YTzfBlk^sjBY3CDpptiG{k+lcn;9f7r7`ZXifben z@8zDf9+7CuF?i>1{fT$8_s0E^vxK(twOdTo-^UGq1az8kuJe?Gb^6^DseMjQdwhNR5zHI*^3(}{5 zTMe+5+`x?_{czt|khj61d?!QGP?)Mr>KtJYx55>aWE-dr>=8vv+#tUJ7pAx0Y%D3N z6rZmX|6ag!qvdhl+^oxkauAxE)s*#Xm0Yg0JcpAT{a_dkmJc+dwFqTj%$jg;H!E0* zh0~Xrp`0`uYcw03xIjQ|*nZl<&nK?@-3KG^d)$6~N3>M{fq0==Fb>OVza`sGXf0*_P57OKK#WQds8^KadFAK&fL&wZ>Uj zd@d96VP|8uqdDVQlHVhXf%k`cpr&___h#-yt36{nGWu_2C@pTX5QIPF_MeP?aZ3Em zueuFSWI=a%_*Nh}I&>tm_ofXclseoz^qYC*c?&c{tC(i;w*yb-c$kh9u4_kc;U{Pu zRvmjSq?P2K2MHeiqtMCH7k*hoj#`_owi(gyuPxPgd4(Pew-VE)Ft6rrn_-krrpMmY!hL63 z;}&qYA^Rr|9Sl1*Bpb&y?t@Kx)+$KHsUvM$^-fk}2Wht)D|>or`9z+S+9C@MTQ@O4Sc%_~oy${S9hQK}B=X+6E?Otxk_XJcecshIy{YvEJa4Sc+!ujQoPzqtvX<)BzN6cTl$|E;h9N zug!QA6{7pB#hgG|i4aTcf_RsjxI}YflRCLja3f3>9!LN!u4YD#6_g3!0O!OZU^tQMX+T$< z2t=QolPx4CG0EdEO0BlHe9PZM;*lLxSXXi94ojK@r`b2hpIHTT?o4c z_Z#I@)%lMhlVy7W6NG*s88LRog@p)P^}%V3uRqQ*UooKB`Kx#|kmqIcjA`AKUGHs^ zMrK7-=GOGEWZG(@l9ERXPVbSMM6uUA>l}i@lk0LkF4~U9ARyM#% z8BgBG%rztY#?D{g{`L{_)sCfiONb{y;;*>uv-T4A+RUAs{dzm-tdLv${>Q`(a zLZ9?T0W*1JC<%pp@6olTqi0G=7_(V(dYg9J1EcgdaZo9eC~L4Mk8Y^*Y#U-nvcyIZ<#OG7w1y~ z?yVI3hwJgIeX2d8;hVNHuy4pD4y^Y)NS2}}_JAYxqr=$sqKh~AFo1y<@3LVToA8|e zT74eGO2!{-@~&)UqY;yahO_oofnf`k(?c6TbYn?STO1sL{;D_>$cKK+666H&`ki2W zRgK4itLdzNgV0GE)(=Xox1597=okF@+csaE~40O0K}rkHG&Dy znsKRkxc6)-jV+z2XN%LfB8MUCIUqi4@rW}RakXKGGg*=`C49b8rw-8#+F)k+0g<#= zy%&ZaDN@im%rkvwie}Q!s$c+b-&Z>s^$}!bJmnz!M24LqTYKc$gCg~G*lb83Rq6*H z5RVfmQ!ynOj*k4RPu|ad+oix-?Q(zzN(Q{|_p)IVe8Qf487{cCh5>2Yy1~l?2XL^u zCO1)pbqmHpqr!95&kdH2 z}q4yl&8!1tatW^KeX&0i|t zJjH$}^B=1gbt4RhbKL3;;~EuzhtMILvYwHGpfpn0#9M)0@+AarV$wFl<}s-|8MVIk_73Q)A`O?X`bj4L;IlG{VlL4FLU`7>%VHtF_dHJ^6_KS z&sg6sr_dE;l)V++-VV`SM?bm~NX<{za72NJ{I}9Vh`DCGZ;Nu|{$aM~en}0jFAS<` zxOu`#b{Q5%m^^P^xqhkp_qKf>kpq@1a^ja(MQ&t`b{S-H)5)$aSem{+dAoSnwl#ZJ zA`8l&I(MEywJo&kUyF@{PYsKuTN$_gv_j#(1o&+xH|v^ybmA|fO~6ente~s(uW*F1|JN1*H7W|) zxqm${KgK=acdndcGR|RO1M>2>FIRcqS67(;nP8bP87!D-<1`Q_6Nkd6@BHI7dD?EG z+WsVIN>`37ixIgjhJf1j102jLeoR~>Kiz#WA+Q2O4-Q&L_~Akr$b=>(-Zi4beW1gg zVXux2j>KAd>GJlKymK}eIvM&Jy`LD1cWYw4;VLIgB#_d3C{4S^bBAA+7p*MK^<&GS zq0!S(t-}E_>PFPKkVEe1zGgnHWUoS&^gELgTKQ-v%RFVhu zV0n~7JHl0)N*0;7dX&7YO`8q*aS)It7g&PseYm7PLWZ~b&qliTQN8DN*Enab782i4 zo40M;bHZbaDxcG8|5?uMKYaMI=uDt)sN;6)UfPaG;GA=93E%XWYQ>O$S0Y=lx|w^( z`BCmKRmo?y1sq|&K#yUXW~%3MF_Mx$_ZVawrO8`7`67%)mvp}zK2qH&{l_n1hY+jt zRi&jtfBK@0h#>IXa)>Cc`!{_q{LW~oevYY1E_vMHs`d$F_W~fJb}}Az8W2-(iI$+S zsZX3ts=niZV`82&v9hF4*C^YD)F0sxF5O9AUbpqjB>N~J<-)@O<{G(vQ?LIQFXCDcc$ z6^$42IIu8I^`_55-o8iK)(dS!_QOBnuN~|Rk)T94kByi?bl`~_<}PmW*+;|1;Q}e# z(im#V6@L?zr08NuLlWH*IzO{5-*o0fPDP06(c&8a ztbf39VIuxhc}z$40T$K3YRXN_!l5le@5~DT!h^uFA&ilPUp@CN@McAWd7s=ECN#LMGw6S^fA3jI>9iC#|;Ew~6XkwJ{K0t?Lfo;R#l>xa-hHS37+> zs+o31%TgP**+mx*1WK%C?=s#_lFgy-^8@Ow3h zo+h>|NNRK8XZ50T9Vw(uw`cC8zAwMk3z4W7t(1U#<2?0^UN^LOMk>W}5Jsvyz1jJ%-crFl&j0!;ptB5gd`pN?_wQx`_N>ErV6Mh_>|O_CG8$^V5YdcIsm#D4wv|ZaiD|ik>74QnPO0IGB1=avD*ExKY_v zd+ZBhM2gABp|<&&<@M0}WAK+j*$iiIo67uqF?={F8)P1%6aZd+)S;qy4!xX(^ zdblwUs&yMldWm}F&fKi%%oxReSc%_KYWCyz;ur_qdsfdi&t=bjb)I(WeAlncmB!%( za0@qfmemf1eJT8XC@eZ|;*^0U0E!XTKfPK}^?CC5SB*w)5DW?|_jVtg9sez-=FS<9 zGje)PY&1J#G0lRthds{sU9$^c3>?g#@OL61suq9g?$);f%#SgETd*?e8ooJS{;MjxHMOXRh^GB5L4F5r1=KXuJAI16@2U z6PaD5<(qeO321^-MWIirJNWx2zM^`6O;N#b#m!1?q~a;KEbzrH8EsVF zf(%ELdm-id>ECsG?zuF6=5Vll8ZAPPCdhvp2a)fp>tRNQmKt&&xyT9At#lty&!jo# zAoH*F^;nc3yovRd$m-jbs)wG|q(p$5rqoab-B)e=W<_=&K3{u9%B(g$?A>K7uf{F< z6~wa`U;j=|M%F)>I{gYz9-g7Q1IaP#qb_!$8Q7STq< zOg@b~Qf2Yc9Z4%(k|IGonGxl4=hhAEJew>tOcEmBwPG(oq2k7AIFpAu2!itNL0mYm zzXRDZ^kDTnJ+XLWIvn6%rNia>{^*wk3eq&(LYS~K4f&zyIjvEM7cafQp5|F(` z0`L&D@aa2B%>Y!Cs^6aLj1yBqVES0^IZtu?H{G7QE&P~?`5&h4Jtg^b__pGSA_adz zJ&S74>wilAij?QY*0OS8n!@MLhi%RYI;^F?zsmcsqs zk6_){GSe~(M&7K=8#pk;IM4W}bC7Y~m`dH9KZf)KH!PZihha+e^-GKDQpwggtKbk1 zOESlg26;+cl|PelmLhx%UUwtt#jtcZc*SceO3r%5o@-vY?U<34@-#}EFNSYL%g z?SR1@gc{50hS?kIZ|=xhnrE_93$U<3d_eT`U|&(gv7PvQHv?6JFlM#bffF z7gUjXu*QFfx^$@{Vw*ZOMPpE!a3wMA#y`x<%?1RdEl9f0Y{&}oyK9#c*KpRvzGK@E zcE^0nx)|?)U93EciNIW@PDOPI#o~N>$<9v4(p8;zvr_NlBC@=Mn*Q`jE24IJGc?AD3C zDhu#apAR<9RD9-X=>HAq#2r{LyOoZms$!abV!fI`1i5@=h;d&Nn)|0nG?M`{+CVJC zO>1w&0LOCX$un1cmj2%-WnedTO9^kOcenM1Sz?nT38?RlNu?4dNxe2kp`&#NtQr> zQi^{U8cBZ^T2pLDos#hyJoh7&KiZh*%&=(;I@q80ln?rN4YKE$$AyQH$|C62q^jV4 zc&KYY)0yo%ThiJ#GDH;jx8Gj>cwfYds3UsQ+BfxiT6~`1Z~)`13c)aRLP0NfLI2Db zlLSm~BY8FE3{vNozA7eV!=ih4$7U+lTfBv7i=pi(n&F)zgRB)Zed6zU`y@BBjpVQH zdiNGN$O~Jn&!ZYOh#KK7R%N$~zDJEZJ9;k3kyf$rZ5)88=?SKbDIZc*I8VR!1GA4}W3eJcz@l&YeB zvqXrtC$(U^C9YZ-p0h^L*KL5}${12FothBm6=6@$ z%qVI&-p1Dv9ozn7(V|Nw<|GQj`34wTnjPdsuRg|R>h!$zHMrAlJEp{SeUK!5_YiSl z-b*TPKugvDOXxwhW~qYKe;(_c|4L24B^C-AN!H%`R!0f!2{Rw%*`HW}PL8NQ>`}lG zU!1PZP}O-9!8Bs*`L&v0VRP+kiVWmqm=ED0pizSm2*9#wMh$2ya*d8#cz+F;Yn5fA zW~VNMl?rj0C24@GHI~c8P3B}B>6xk`pdKPQrt+VD77ATA?aPi#9N17iy`x31c1JEX zqzw&^g{R-G0c;!8I{|SBE~6Xg!})QHTgLoJrTAz-H9Qo>9sATAxu#l?*Du7!c&~;V zqk4yqZpm_lZIE)~bRzI3){)zbN*l;h$keD8PkH)yfjj6Z^Dh(1P+%l~C&*E#YzwIM zTzkMXZOTcE>3sg$Xnu0?D9Y(TR5cIop7ZJj{&!g+p0#y@Tt(?W)jYL(+J^m@{{DUi zRgzL)zFaBX1c8Sg#+CI-hdMFlXn@#TpFQbK*bkVTyA5JP8PZO3f5h~C7*zB-M6Tti z7?8Ff`Qli8Sl&q;xrWKPM+%X;>pU%hnD`clP{nYJ+E$;71mZSPKwK>2!`{`>xj3?5 zzOkfc>C#>om{^KI)|LFPc&m|8As+h=yftFy+dmG@8~*LM(27n{@kO~u?G*fSTo8m z0?I&gLXvN`U-JUCUz8l5tN;Vcor?*Rd!u_(oS5YahNDD>>u|AA>e=?DgVW9z#P|~B z;=IS~wBKe-K$>ruoD13?+$x#wwjtkdR7MUbK>I$FAH}L6z4Z@>oyvo(v&kLLOYwzc z(m`s`w+#k1mm1a;gv(aIzVrqRmbmLQCf*^%!E!HkQy+hlIp9s(y@B_H`(^kdL@bTv(lVfa>_0dJKrAxN zQXYMq1&SUiBX32Y)&qT)q)W33D(#=6Yf_&sfC*$WWi4}y2VZ{Kf-k|jngluL7WU2b z%zrz2r@si1+I@ilUMXLczLQKx+!$DRy0Z3*lTv^IV`AByyxV_R7np29M=CRYLl{C< z@^>;x*GVtCe_#tXvnxp~Udv>m0W8^QuR>0MTg~1q{B^;{K%N9akG%}_?UVTw%}7Wj z#S}?$G3_)oXuk$y{=i56Rks_dqe({I6!$baPmQy-=)Km&h}5ZR&rbEbPHMZ)wbdPc z{&L7fi~sb7p0J`WJ+8eFc4JGeufAWlZTA+l^uqa$BA{7}HyTlJ6H^rt!0JDeLC#@F zI`79)Sn4*`{CsgB>wja@4#&15PyM7A@eaGdD!$!QL(+&DWz)*$(k;mF1?g13c6aua z2^Qi6%&1__l~?h-Rcb!9i$-34ljXlFQalt$7|E3*JRPHDKSp935wWxC>N!5)&y3}t z*i29!M;}+oRJSpsARXC7^*IeRrC1WiJfkJU#bk2FPNie3viSwGB;rU&O+o-zp23_4oTudN|D3sfYKXlVQaX3` z`32V(S^$zhce9s2RU_>rs67^6nQgm+9YIIG9IDv1p6d9DdOllVF6$Y&i9~EA<7TEm zo!Lz*sXl9?Ln9pJ&+l&tmnT_unSKh94@ej>#?*9^eLs3gbxjfrYDs@Lwc zkhR)UbXQBIl??A)f96$C@%)Qa=#*;xj?8pqNU0PP%FMb?X!jwXb*!V7QUAE(F>)s3 zfl{(|_#5F3zRZ7T;XonVm81QjS^N_D-Mk~@J(r`w3%MZ|;E>(qyQRkShHLk->Y7nH z^zhuoroPiMkI3(lkIP~ECtd1tbu|e^AHJaPld|6T#`kZqzB%IB74;R}jHumYyiR?S zAlDKCTmw|=i@)IvKHGsswSL9|fg2wKz0m!@HKmKdNI;Ljy5G!lJ1(0g?6KbAo;yr;l=)MG~>8y-|q;wzAa6);>N6^Qg0Y*+*nUpBoFW1fVOm> zeaGp@gr7`b)#O%n#X^x_tZ7J%9N^e@)L9>hyfDqTI*Y*M-`AbUp#zd^BS;zLR5=`pN5Hs!!j*m$LPWbd&RP9BUwM&3Y1wW3n(}SGUv8 z$5eAi$xX0W^7NlpJ?e_Lhl8g5G-3fGud0VljRt-5ts#qlM0HL9C1d%PC^E0(mW8D6 zaD!mmPuxns-&2eNl%8Y$QC(1xUD6Y*qCL+`AkFZwHF@^>t&rRAJm_Hn7hR3RDdLaZ zvp)e@RVV5D(ijtG{~Byk9aE~1YH|cGSv+s8WW`jQlhv&poauRkkg<{2|gkh zz(>DTZ$)g}-ltjLu>8bbeS6O8XfyS_t(f~&V!OT=KuQ4~fB!3cQ{hDEP$F$|)`eWm zNio?r1)UMm3XM9w!#}^W7J5+nWbUJ@YN??MH)L){juJ`s>+m_J>>QnI60=7><0sY{ zjvHl1T?TrQ33mPBJDX4iWOKCFU%rg1KwAj^lcH+?^HO2?V^q;QqzzStOw z>v^r_FP?R8;ReT^tjEI}Z-#RjPP5U4`KI!6b;&r;_Q}#FLx9^5eCL&HyiBr4eV&*& z*{4#t*|5EzpJ0TPli;<#O2TeAi7Kf_H{5k!xT|YwdrBJRDAA|pK;=x$Rf>yr8yOyV zeZ9$`DdhfOGSs=<2T&~Mn;-#{{CB=$07x_v-ID(G&(n=H!^Ih)1Iiow7IzJ3aj*W8 z>jSQCi7-n?Lt7N;2TUF7IQE9(DHlaR$CqkBH9-AGwz>b^GDiPyqG)2jdpNQOrTCaJ zqk5D#OTnj`56P*BZfmmjl{p8%;H|Bj{z9Xzh^>T@Q^_soYW05guWG4j$}f`tNZ}nN zJf8Kv+f+)%=}A!kV4J#V9j;b1Ss2<+Shy}ZUtXAB#+|O^2pAM?Zg$cM+ZCOQo%>FU zqKNly9SCO8;;h9{WDYyB+g?P>YOBkI63GOTCNpqBiX zD^44Tno3LHYSwwCt1@>kF`eCFy3mGcPH|p^%f-+-5WACp?c>6FAySJv&gsdOezODP-g6uh4 zY~@6V7_SS%SGf(N#m6dVK685XGAlFhW|+HoR}kG{9${Q90sKbT^G++3F+tN??+0vW z%U(eJVALOqYR!3y)L!K-0Um7pSc3#z5?PUXIaEU zFt2Vz#$<|R$I1H*uubUKT>iu2FWP{A$>9_9wBa~_o<+t@#*6k{n$`o11}lsy!d8z)@hubM5{F>>uzvN&kI}436cLmoGW?I|Mr?!*}(_S7bHDzGHmRKCbog zeVv{A#|aoO4$(!ll^}~DTl-fY+ z4`#l{eqq`(B(-l*iQ_<1|7(`Lx}5JmEM1{kUS({iDwe#b6`Onmu{iK{6H9R?AFSl4 z*62{G{#mV9eb;fSSKlAR#RTA<7X&zUWdou){23mr=ajOHGfuhZ60x9aU@|9Ebsg(6 zZ}j+Yd)($2h%naE*v~coderWuDL}YgB&6i3<22XqeRMmRT#ESv#f5=QYaq4?+!j$m zzLCipq*mk&xVSamuc$=hn%TT$617dH>k@^*l*Eqa;f{TAj$Fvx6E3}n=-6m3SIgl z)lm8XK*ecu>MiwUd(-s#d0GYg@sAfb@EnC>&<<)5r;TYwm~JDfOnM zZlx?c8rI}R`tWS|aol$qKJ<3&Y;?v*K?o`G1)jr9bd?DY?5A#DwSF{wfZGKdLA`M(83SzETzy4y5fY77J;8@acQp;^fX*M z(fvPiKM(M&3}j0ydD13)i)l=%*=K7&Yf>DlHNkrDPRr>!u zqZu&<&#vb_{`bAt=bIhp`HSx-mzf=2Ox&n0MypX$O$~KeR`vwe;n`-m2+YgBJ7M?h z?1d0AaAKS#NYzDEoBk5C&}8)Wr+FTy7fr(iZsmzJ!Zyl($Rn8D()lG>Z;X>N=`Q&F zfvwwD<8yln8nIs>{UugJi$cKKObpHcfNS!Aa(}&#B|U9C%k#&TPMaIoQI6i6xtf2i zM;u574UQ#9^@Xoq4`-BP9<0!)QJfaJNhR$$xR0e2 z$x2Nm!wx$rTRkMv?RY~7^aaahOYab!kKIf20P+*x%UL`o0HC60;oJe5p;=r)n_Zm2w5sY21Y|>h~Lf`Jpy+hxeuhh6Q3&jkv z$=GlVXIh$_{4;s2i7Xf#uxEouyF@X_iwAagk#@TT`<5c&P0~aHH3z3cRdrHp-#E}? zC)jgRaRR)?FB>~G6@JSNZmwouO;TemsyD!XpfTG|6(4)BtkvdM&SyU~;w47gvytyj z8j&c}-g3rxTBT@N;OOy@&*uYH^NAU{OA$L~y zo(PrmM;YYuvLpk)zR|WVNKi-yWGF>a?VlQZkpEsuY9+~hDb}VLt4wjA3@&e|v=k1N z7^bo&E0O(=tp4xg%b}y96!D{S>_2RYa3o{wReSo;AFb2E%Z_B}c9nKhTCz7dv{Ss3 zCVXD)i9KX6J(UtDP{sk_c zMieFWw7Pgh+yztMDqcG&#QZ`$^Oz=Iwa}TYE3p8wPra!DLcZupqiqZ5NAN&dRk@}H z5}&GZIi`7)ZCI)HMY&skdh1ODyphf(wZ>Syh}cX_Jd0|E(xsfVDL^H2Q;?_`RO7=FTask5^E_WBhY}P-ok9D;kLi9o%X_ZAx#5{BH(B!n@ zL%#h$0!!ImWWVfT`ZSZpbTM-@FX)yi$9cwlUjn`^jP8ec&_y!o@Wk<1;b`4s7a$%5O zdJx7-;EF2i(Nm?W!z0l9ZP|-sR+AI$g$Vl#MFzchYqW1;t*tl3GgR2oK(_1%6CoQo z{$a_TyE?IH=&m*gcy?7Fp~X%<`W$|HT)njDfI6#>$7TBsj^&yVso%#m!wy%}H^B7; z<}oj78pe?Z+Z_OnYe&|Ddx+RnPo@XM z9diil$TDxX_2Ob3!y3PmQP;alIrwA4DpLle-~elG4w`YV%bDpjHESjcrVQ8bHkbc~ znP*mot;n8dvG{<`6bDmBz>K!^*^RC=xFREfz?uc^8btrkl_;@;%x!N;hrl;1yeM{5 zfP-bvKoABl7=o<^mKVlEN9srBbgU%=w@R_O>3zW&b_$`SMDI+;VU7Q%>H5F>7RSbA%DY5MwsG`)9Ifz`pTtXu zp@h*gMxz!6OkEfTMDCq2e_a!{|IM{>1W}a$ELlXiMVnhoTr4}Lsyt~waSHwy^POdj zCNvTty1kGr3L9r`$Mc6S9JPF;!Ct6Ag0PQDJnK>wRO`zY<>ixztkJElLO9>{rVci}*4@>lMITLjF5FRoYngLd8h=xR@Jd{;Do)o9=Ok5Bcq zLK1q!Wy9fEe{GUzb{pk!bZjAxw8`f;acQ3FpKYNnJMUj8>Nu_rrNA9VX*hv4I^Jpu zW2eW8mkctKUby=wPdb&}4ZWotu6Dc1V)5%N@YTRGj4Cb*RQcS_R@~ulz_B%ZSCjBj zE?*wO+)mn&kV8I)xr^o((zAQ|zy=|c^0bPB1fzN9+C^)ka-e6rCq36YZCX_r=%Qy10CxD6Ok;h|r+oW`l8q9r{rtghBj&Ux(WOrl%BbWg>0%Lte9a|Cpw01{ELHlaE=Xnf>CU0g6~PQAcP*538mc zQ;=fLWA-*n@4yvj-(dl|{)zlC6VMIxyv$Beg0&z5wjtt#Kz zwGE7?Ggjn4>0TcBNPoSSU}?Jdr|`;U2>pnh3P2kotsFiM+(&!WL_sZIOshR^hk-3W zwm;JB9zK8sFVWE<5=yV~v^D++mUO?rR2@CtykHCY=+BmwkNFjc`2OSX^n=Fe0KJc3 zh3Gm_z2Ki1PC0dtVA?wZvP{>gm557s?25KxJ-956%K+ETN&}}jX~;7}`Sg{%q1L4K z@Uvw8xr)}Lih^G8PtTv=m?2F9^)1a+m}vckV?xsQ#N#^IJ`Xk2g3_ScI4s`&Yu zM?8-{i@2BR<0>w-oI-|#BO+@X?R#HnSB|3xo&E14h2cqyCBG{v0(`94PIXg=M!1IK zObYRF(8^>xm~Dj<4+FK=iq#aO9Gi`?)Yx3YsTZT_C$0b8PIg}8LlRCtVH^eDC$iPa z@1wmXL9^fg%l|*m)1Q6ojHV&3m^r@+Dq2kGqX+q)y?al&-J40qCO`Ss3THYD*}qPk zIew)aZScO%MnJU3vW&1sm7#X~a82}mP1h}rgF-XLG@((>FJOz!3M`w)f4xdDW;;SN z&K<5Ot0)ue^0gFxTyDbs<_|C7z@ait_&z}vjYnMyPtQ24Sm0msc!}D4nyd|+>5FxjkccSR{ zbI0=J-HQcqg$3is_TD^t^q%h`{VkH5N$qo_W#7m43;Ib)cwL~!uud2;E{;zS1IMbM zM=vOnH;c|m6&js<;r)^GCG#r7XxSgY>wjuMXbHNe5K3)d$hy?uPf8% zW1#c&(~%P+KP`XXNoo=&kKbU{{}bY?1k9z#)varW{Cr1zyVIOG zn__q%J1pFlM1v zj(4#_o4kobJE%7g7LC~ox?D%%6gPYhGxta$4C#f-@o{?4nS1DDv1-HT&^Q`~wwRAr zT;7AN#$w*i7Pnycl2AfjsuWs2w5!4IV>{$|Zrfc8P3L8R;Xk#xv$2@=@uz49tks0^ zA%pBUmo>Cvsf_!wE#}=f3%_`>iYsZuUkQDO9HF|x5>Z2Gdoa=^Kq^x`Q4FWr8a=~#~ zia?(nxMK1&RTY?$gW)jhZ=$XH=6oL9VA(g%_$XSYYJU2m5#=X6aG=qdfUPKT+fDNJ z#g9wjKSGH1$4Vo=6;GQc) zsYky*A-fvD=FBz8gdzKE`j7uSi?(Pp|5|&#&%U5ouCe0L$`Mwmm0Xj;r)I6?;VB+R zmCz<0i+d_c%27eJ1}^C?v;R_&!G^M>35AcE1Sc-IoV_21I#>3C9LWt^zYTmEDByZF z{TTOQNi4vc#zLO{t8`UO5gl0rza9HLTeO!$r+n%QS&V3<*Qs&(QqJfGTO6pGaeBX? zF1IydWnCr<;fmA$o2{f3NpQ`TQS&!{3eX&nY&i8ZrnvDhSFVD@x<<^Aj;AZPFB;a2 zyO}rREEl1K4YQXE^D)CZ(841hpN+?~`u@*M# zw+XNF_b?reQjuk1qq%42{44=$rD{P`U!pM4e|1mPdWyT=bKO@x>DZ4TdT(bNCZvbd z+V}|9#iqEW8gh-*sDSZdi#l{`xm>}9yb^2^^nYeh%`*YB{o<+q;xfN}QSC)JpRg^_ z;IlFWZ`HgW+Pt{VYTV5&FX$tWEVy{)N{2QFlEQn|MX{mcZqN(WO4d%WsNS z%Db*}#LvMl23vnUF_wT|2=Z&|EustUO#G}9l$=m^Bw1+48Rnh? zcxw2jN=2%tuuh39kJHgzMQ7Pn-LwfI9(dlMis5l67@_q-`7H5n7?qUF*gz|awIZ}5 z0nd(M9%{c|aT;C-x-3Ya#?h4&Ud$x%pjTKZS^01lO!^-!CRBmxccI_GS;l#lXIe3ZkO;bCldSjXykWcc9<>foVq*;UjpEy*Wtf&RjagOLY7cr|3Gs)VuYs>Z=rL}_1hF_)JWS=S29vbB z38F${rm~mnu4ZMVXE5A^h+7Gi#_@=*#UXQKXH_<*&Gjd1mFpn~YWC}!f1HVjcP?xe z_rmqhuTdo4X>8S=PB zqC3%U zVk;Bacq|`nQIwN{9np<8c*OY=B;Gq7OJ3r*RQJyxSJph`UbZ;$RWU~R3``lbf2Ll$ z3Qd=JYe)a{Yph9r+Q`3G1>M4>}hRp=Pvxld`2X{suE z@7fmJ&%p_njmUzNRm|gffA9P?792Gi2phe1bBKWEKdfb3Q5YFqq$i6_-t!8EBS&MJ z>zb<@>s4_A*8cjjNiKIzR{By+->o5Gx^K^=G0g{dD(c=wfySNy-jbF(W_p%>0-@6f zJ&w0DAE%V?k0*maYS4BcnaA3h&RxjeFgJ%Jy!is>$`~|v0R1idwWlKR_Qh@ZMNA(q z<7e8hUWbe~V+wlsd6FymC+3gN&-JxU3ZB5LK%RI3vQPIIr&< zuXtjP-WOsM+2Vv?WhFQvNzUnPkbAxsyU(YOW4oT8B{|LVOYo}RNz9aR8a$8d5dXbB z&Bzw$>3~Dq6fL+7i{3OGK#6!e?E5Gy- zcgIZr=rwrIZ8^bi-?P0{CgN+3WA#C-$s0t@QcvJ7hf%Eo5)GA?-R&XPr zp_<7Rb(iIy_8i>w#{SQVUjXF8X*$uJ*nIbq?%`*eQ7H!!`s zHStJqAo-p6cbq1uUhwwydHVb#LG=@i#Xv-Yt!3w9J~LD@H0UR&6liF8T^sBEv-!|# z*oL|d;g6T(&{E?*Rs`m}6d&Z&_OCWVGCpAbg!dunIooekc07z1TeOaXhK$Y#4~%C; zYasD&I^Y!^>#q~Wz3#HsN3*e6x@#0rV7-yyzgi5UHfT|@>dZ9zR7P@p2rfD}IQ8kW zQO$KuJ!wOp($(BY|FQNAzx?Z)O2YcZH=L@j{y3wQ56;5I)~3Gi(Pl>-VyLB$xnhvjui(j7yIM&y5+80wTG`5_G^!) z9yknvDol`TZ7)Y3({ld@D6KW7Mf{}sNAW<@C4MjJH_eq~(XQ-_VH6zUtdq)1LFIqy zUH+7RPyqQW$Hv&5Tr%a&kua~ckcRdYJ&Cb1P2%y)oVKGkk#L-#{JS|KuP*hR>5r(k z%pfPNbO*b*HDM2Y;vZDL-(9L`MVDulSNRjz6l`hC<&Kt;H0;ZzS8Yo(sbZL8$zT;K zc<2gDtA#)M!OwNDuIgV!1xxao`_@$`Ll(a8K4Iu3n~4U~f+cZ25B^pK9q}`I{>PHq zTgbZ!F|Ck)6v#O6e8H2OUJmen9r6j{;<-_i?0tvsHC!f7lDfB^EC+Muu}43cJ7(Zp zcc4qFJXtJ1Ur7volU5@$9y&+e%<*SQryPVfv*bg6{Otx^q-M~cr93&hc)ls)grP2Q zP({F>Dm)m-*C0+B7MUeNGiBE1Eq{)+atsFuQmQ~DlYu3z`SDkHuA*RyhjB700BeG_S zh!NJ7ZR((7sa+r1Y@?Y8dJdneWZnUNZFGhmxtfWT4Z)m ze$lvU1+%_$wD%<&$j`C*>3>VlB{ihSJ7284^-zM8Ri1_P?uR+#Q%mcnVt?JE(=)Rr z0N>1>VEmI6ys@MKnXj>>4AbVY37dzOU)!V(VfsRihVx?m!qSiRf31`sH4fG;3%DQ#Qj@ zZM1vWEK7cH>cvX|0-kg+$M*dt+!6kZMXHQWN&2}^=*ujr@*v&3y$qPa{#w>${ke@T zF*}U_o`vI6gw6Pl#@BT#PvM1x{dZjUlyXvB^%S!_x$7L}qv7HwO6o6}R@$mQ{%7qT z19lBE?IxRrN{9UMK7XPJWiXVJOnUt8Rxod$9RI1!XyIBJK~3hY_!;%Mj3jbVs_Fel z5quK79w^*#eZ0>0CV}mZ+QhG6Q6<4&uj0R@xl=^H`Sbn6y`?MDp3BsFTe(j4C0PDl zrUNFEzM0#*UY4+7Cj6xOBY0CK;)|-fC-8W-bV78kY2mv1B)8_j-wHXR)(g&*yBTaC zOS;;aU(k*hN{u1*z|O}qHuz#wWW+Smk?^FyMhHwFN6C(Z@Wo+TqdE;f%wv9jC3Dv{ zfoz{>zb)|pAyF{N8V<#v4jx^LBA%JH!tD_w72?LN#ohZVJ=w(s{zDl2Dry6`um-wR zWemid87=h1TN0PMd0FNSu2auv)+-gSY)CW4@S>~9iL9T@CP(O79bj-G`e=4~&3_)C zK(&>PMtN`751joz{6sYn08D!x4|pL@A^0Vaw>bk!5a7aSecqF-uGwWN0NQ!8sfy%@ zMYe#{57~|`s_MFTeL5{J9$KU-2LRnFtyYkYt(iXY!*n8Xf4SAJ1^C1Xu|eCd^dz)B zx6)O2q?d2)%G}VT%hpt6QI8(lZFkRcaQGv(!GjFVyQ1OZV-Iop)*stgt$HKId`2yn zMk5kdHST_7$pM`-X|xVF2~c$NSA(VoE8uAgQ?Pfl5UJj`cpwJT)Vb zsFaJ{LWARS$9w+2l=)wdDFQf9MEi)KJuXiPpogo`j&d|?T8}YDuiK_`8j>z*tCMbQ<=tfD}i2+ zO6=!XPw}b?zM8^8Hwo1oa;)*vX*vbr^PuQ$1bitNTF5yV+RVHti58@3b>ZCk6fpPr zww}Mw>wFGZEQa3=LJOJAEeIgaK^9fS0_qZfV>J?aL~)+u?C;A)PQ`s@XQb>--uM9- zy+vUWuZ{d7bn5VVHL^(4c7k*C{g}unQf|HlIDrq9RBnb59aUWy04a*=gSQouvyW0qa(8SG$k-mm~NK+9j{E6`(TyBqhv`vsa{y{>Rm>?QE8X!6t1# zm~5at6b94Glua!RGT+s7Rfqby5%{k6Oaah910^R3-rxZ_JP7W3>pn5Ej_u95AHzew zEMhK{PID@+7qMj5g|m`8IY@C{7)RXDSUot^iL;)Hr5qc(a8m!?da1TQsCRLXdl|6! zrr1T|`H}qo1QO(;eo}mFXJb17Br}qDiw(O-pSDIuzCq5stODSzyrM(eS$8mLB+hc? z8e_q}mv%#m#jV@DHIp&5hKDJXt(sf%83m!2coym;Tq1huIax@3NRk`{wKB9L>9zMm&H zR3dnTq&07qaed0C}xF+gF7Pn{; z@mt?{Z5R=VPfm(WZW63$YkPhg!Tls*<~BpmfsF+}z|xJYOB%hXpz+LxbWDnTx4ci1Ndl~0)L)>k_Hpop_)s=sr2&7SA z;u>R-q2!0x+Fkt5iWyUmSLG>vbz1z&5E84B``a(?QUCPL2p`FeNWsJ%r`}9I|A2Th z=@aR zagt^NMb+}``wc~ig>Mj5MqM5}^4KoH=<#Oh1;HeLLC#C3ZT3?Yi1W(c$Rn9wLjaCf zGfjtpxX;xufLTz#qk4=CHc^pWuaH4mX{;)xyYAps;%LHv&S_#I_xyHPXrB;CpL<(& z>-`>8!9{S&;=PUvqu3)^Lt`LW%W0B%sMiDiQOe%b&wBdxrD_$Dgo_W9txFH*6mTP$ z*z4x*Io78#6BNC-b;hLGvn#pc-}W(co&crx0d;gz?mRvIjN1vVsKRturA_=RFnkro zuVHN}zcFF|Fk=BUlLTw<8kCn703UHF0Qm=n4kdgvxD$X;FM@n#78My^x)khK2FYh| z+t+b@4-qaB&)`aBQxal%3kc` zn;|?^q6 zl!CF#biDy-?Fny3fjJIxDzW&sMyp#iZFZ|_xI4alr_1*fb%A8ye6S0^^eD^Lr7&gp zkC4jJgaoayNfOGpi`FT6)SL;bV5LuAuA=*Mclcc((NQcs=JBY@+o4@GQlO{do9SQv z_&^$@7>`gx@J>Lq4yD}0h)y|hlE22Sio@0~S{SH=tyYYYU)v61c zi2`G7ZR^~6*5ObW46v6sY&I>bK&r#%b-?_M7>!V1ijZc!aqr6k7s*_{e5w&|Sht{} zNQ%K*VdH^YIs>iq?-POx@KFi}@!ausHyN*m0n~Db`}Ngr=MD%T; z>>sf1SiahrmOhm;>gyK^qXEtwjB!p5fNZb93jlY5#3g;xo0H zZ&BRkuASQr5&tP;VA@a74Eo!-zao<8!J2yao$U{c)-QQGSho3Q+fqg9kGG@b`gGc( zO2~}!A%R`kDi0(gbNF(vZ*vUVOKk^Eff|x}ufUW8i}jD5 z1H(w`{QkN+UQTaL!3AOerSATP6Fu0`8*74Ef|WjGoG#&!=G0&WONl%mO{sod>d3ob z&B~R_;N^D`!`3*EQOK9umVB`AKfrwuf_i%xl*u+*;}_hZ+TD7wC3{E_AN{>`(p0j`7Wp1OMMmkb5K6Paa1Uuo_DUE z_5uam-WcALxR28?@nty9DwObQCmy-won*)++Y5oG2Og!UA_b1;%pY~of{D?b3yOrN zm(&x_xabCa5!uFP_icxQz!F;*#*H}_l}(X}evV@pz{hu0FTK~tD7v8P+JDhhI4f$H zD{4(;y$|sR+_w&jPa6aPOW^Mun?>wN)?YV$$o_T#mgchMR3>%%)fEkKA(A+jw6_@{>M8ITc$ppjRC6>SKeT8rXf8R6Dt_Y0n0Sp@E+`w9Qx-C zmqO4rA1xqK25}TF8P1qH8b>*xC2DW`FM=eH{MwI3RYqKfXN~rX97Ny2ln!hwpw+bL z7r|l-KcJrIekUG)+HO>KYGrPJlh$8sNEp6JJrbt);!gayGvqN zIBO>nr>uOwBhmq9W=sDBkr&IAgvMV*6X_$<`NlHaBvlx6Z1ZS-AdJ!{9I!Cg8SVTzb4@AfEBs5C5*`95)1#L80( z7`-?ZMonIyW!Ms@kOc@zA)k~e+)VIcILf+2)-JocRP9QHyzF82W+HY%XRb>1JunmD zUhkM|>*WPl|ML?fD#C5K<%ulS>BTxK&-avd9e_3i$%3%A`Sagu)#9y;3UKcMCrgv0 zx^z{7y+qjfBnQlW{Mh7Mwf!BZCQeU-UZ;niFNb@ZXDgK$)79qCWPD{9x&hAeI4h(D zKBx}{MfU65ZVKM#Cj{;~x-gYE@{h~86%9_E?fCECL4Ti$kM!MEH}2IY?pmrZrMHAd z0QS2^ozR|i``pQivq__R=6}h({Z?&ZMFi(l)8{@zVkI=DO4r)hJhAJ>+KD^IA|uR{ zKlN(2ue#NQ1sqCY$|95-y^t9E#LhQUs)z_0vVBBEtesKWA(Y83MeG@6W~MWE9h3-9 z+e~wRO{B8W1{@Kiy%=+S`ZmAn@w`=V_s22WEp;=*Y!$n{8xI+Ib2{tkztyiif)Us- zi1IV?E@wsVo`oz+n1-Q52PqTY*S|-`t4E_6$Qot~7$abMo>JeYYAPxO|LMmHe~T45 znVb;u)+Iox!5YakCuks`e>fuhfKE*{41L12s_X?z{X8Or+0sp{gAd*dcQEMWKbJTH zd%wID8@!R(1~@oQ6K7pC_w1EP&4!0g2ZW(JtD7r|Y9_)B$e|Y|b1Bd%5%NTh3*#>1Q8e8KR!JZMI1+=fyh5 zp_WNiGzVIea)Z2A6zUxr2aDWndc8(nM(BfQyHXa7aF|5YQ00P&;aZK9j$>*-_1KB{ zGYe`|-vz@$>*&P-#KYWOhAPzxA!-sf(0O(*~U@ZU16x_l)X!A`sqdzJMA}XXM{PY zVqh%ZIPMDN^X$#ILHh^w>d{f|&ROV1(D}tdsYdoftH-EJtVOS~!Nuf@(X`2WsXd-$ zQp3wqoqHo1Ga4Q>VzmL^UGd(B@QvK|K%AB)6S&{p1X_`$tl(GU;IO z1c!8@MBs-*cX=gY&`C|-;$N49x_C}&`a-t*mUlD@ZnrM!?7Zi1^M zsh*m?V$@>vdI8y`>>OtmcO}!RNGYga6TWOzV9<#Qz3=^!86~PLOfSf-BIEC;*5hOB z&)*&Aez>K2W}$DCZ@%I|w6NUJ@mXpz$XRV^VY?rsVR8^;+i}7@`fjQDTv`h(IfB32 zY`419E$$Zda-jNkDgEtn#inXj!i(~bjM2c?2@aH{;a0@Fbdioikuam*M%~RXL8ipK z#OZQgJUoLu0NGYRzWh4OH-q1I9i}_Qx&gT0d78R=QG0&M@#4SHa$pFzFKd$pwi=jW z6)OZ!#Gb7<`_%vCG0-tNwI@~X*=`zZP7#QzwCT(PEV9>bD;j*hH9mbW(>uR?IG5S$ z#!=u&PQlTJ<&jot(hDe=PyZu{(&1=&YXdDTyQi&vZy-GSvz3Kh*MPZH2d=f^%eOlM z#|C5$g?-WFeADJo`2LnvSW2q>9?U+E1xIzLCPUXY^Bps<@}m0{rDAR)n{Y6Lb;-!1nrt~aZTnkE5h9^V~`u?_jYWSq~Y3-j9Z zK0dEr-owo3$M#F01hL~r?OVhUBSJMEa93_kcm%Wp^UnJbqwApVAETW2ll_VaU+w&y z?r+uvD+d)Z4IO;B%niJ|ognymhB;O~$c81C<(+vBYX>k+VEn;qVkW-c`3h5aHQSgB z+%Bj4LG0hAY%|4}Li5$j4ENmbtNMOqWF66FW4Neq{azH*j-)f?tm#3kgFe}P^0Vd{TkSjOEAz}Re`2Fdg zQ8sY~ieN3-OjUogF#2U z<{QxDDBt%kM_ZH%%ba+tjno@O!}Y?m99s}YM}kU^%z`=jByw*iN2v#c8uoj5B8&#jI}fIqjrKEIJK z>*;6jRSktdgYFgDik5LYHv?tF1tx7=?L3)=tu z-O(F$n_;Qo93V^Z9+y=-F(v@}XuoBWa$TP;W0C8Zud=YUN4;#UQxNYaK{e#Sz^Y@R zsAIA#{A?SDsZcX26bVo1TD0a}2^c#W1m!;Ge_mV2^?UK)nslEOJTsFjZsK#wh2%EK zY)mY8&$sRV<$HP;S6`<>Z7hW?&119aJbDls*%<_U(uVkidWXjAZ@l2 zKSZiWV)S^(Gco3=P6stZ2b+yLqbpuA;0fIV^Wz{&Gt(Nwtygp8N#NUK#^{5 zw`yMe0{Sid#4HcD1sZvkUSdkPJnPM>dE|kiluopEHYJb;H8Jvl1Gd(%kGxG^28&Z- z%($t}(g_9x!8-ZI8+9BLz0F5Az4llW$o6s`XWP(7Y$&;L9&y8kIHmIv+4cMw zbm^Ke=*Ho;eGq^7ZEQfKI0Z#Dggk@fDf1wH8}H#YBd~L*ZBv%l`zKbfe0etF5d0A6>@y0m;^_jbg#mX~I6nft4>jAxI{ z2Wk-@7!HnpdfMYl&>-a3pni>ZL+b`(@TM?$FKo1;8M$FTuQV#+iCTLr@e7@O?Y z={Ro6wZ*v$d0G!*mft7(mOayImDM2!UB9l=Rbs7?sOEI`cdKHVxy#rH=S#%1f=RJy z31m1gQ_4LxxFJy_mL`7Ff69g)sDwuuxwk8}sS6MZO~=`PN+_dH^rLEw(s&sLl-pzZoPyRIWA7a49;VTd|M5)j!! zUaQ^U(#3 z-sOWq4+&3q+SLqN-X06%I3BzXOCJe84j5}q#+ZPm}@nhkpV^AbcnRp^7 zg5nSsY?G{#4{@b$^Z*bPFGElD4JOFUrp0m(+CH=-Z>HJdq>7T1?Xro>07V2^-y8&qTI`g&6aRTuTjg?X}d|4N)6)d=B?3f z3&OJsTL7aspMVa{AG_2iev0`=H+eQUHEjjJtNalXh=lP<6~z4u!DVtR7p!~6XLwkI z;uNV@k`{>Jfe_>rq8H)0*?T`4LU9PPgKje313A)i(Q_^#c~=E znERd?wjPB-e^#w{?YEq4U%M4Lm}d$bG|j$Oy+xf_2D)x0#%8a2N@rOw>%<$fazlJe zp0AIe7jkLE3+EklL^Mpd)^g?`s8a*^t(X?ZtxH|I>C(x&d8MATf=~@(TdgZ8FV3DK ztRn&q304;2!xZil6kyiZuU!cL_IJ-^OM1Q1G_tYio(KvXAcb|e=w)IcCN8QbF6uZ& z^Rtp=#Klias_wefmib;~bRT%$)>c#yvIUNP`63>{UKaJ4jvPFz>v(dsQ7QJ*jqp#5 zYpLd|1}LhMGIB9M_=1njU`D;f^^tf7E2n#x&q}X2Wp=WawL1&%i{BIS(NI@$&aO47 z4~Gp7`=x34CZOlBMAYB>VN|uc`V%z477_2Y5V+1|9n+tG=)kdLwN`NaY)}f`c$ebs z7pG0W@{bkwj0WL~t8D7>@pzOb*EayeU+bsgt5l$n*DK*w)Uo#Vgsh1{9>f30@ z=oa^^1VJ2MM3*n_$^>3_>^dbTO*$aSZQ#V&J}bM7tGT7x%ONLB1dU@jlAw|VQ5CLY zsxtmum4*mwc5bmQ)2#;Az^E&={HZi3ZDGeH8OZ$@9B}lE-x58p&q{H2ep~N9dg;U8 zJzNn;yYLJSJZ}YrA;JbD)Kxx63WuF=2X|>ENMhB36id`kI}A&X8h=811FBZ@fPCFu z?a@n#sIBo=Yim=7=^9b#X|NA_+z^Tk1>d!jK=EMy^GqG@V1WMan={mR}!Wf6s*sU5*v%_uaFg?S6G&5&7o_#Y$=T z`gq5ck-m(CvSd#3uTv3zqYs-86>y*4@%mW7P&t|VzH5) zKhc(-0Q#dy){bC886+70yg(9W-MXRF%$w#Lw4KFy?i9I%O}giXO?t!|B&8BnCy5x% z3vD~izSb+bce-2tAbu}Jm#Mgp#OgG%T=J87aCp*ou;By&IsDpmw|y9u5uW`kn7%6` zPHByk?Yn^9vuN|J0!cw+Rqn#1Yy8vk&#F5P67$c*7J1jd1OX#iU(sv60*Lls(JXB0 z7ZS|AC!2V2A^HmCqdRSyf`I40C*Y;buL+}k@o z=sDTjdZK@}HCnhNmaj7`q42#9IF-Yrk29m6r;UtP_`1-CT$PbNx>1-o=`LI>FC_H; z_C|0uE5x0`ISx5sGC91Q0OeYyq7PMB-pLJOf?nK;jW3EK(6`fc;N9`07psq}b*Ml5FHmtVd6fddt)!ahFS;`zI4cs;oNoKkFga{A^wc0mab zprtVqKi|RL=*@5cUzZxli76UezAv6qI^gL7;IoCdoQ=BMYLOB8R&N3ZQE(cegmRa8 zr9$gfk3Z@W0^}yZEU)zb3fDJ@!0o2~pyqzdoQy0Xc9g=b>KGdP1B_N`QaChJl`l|* zK{e_X(bT2qyiXs`AZ-vk_to|Z0n}T2`$c6gprKZo{Dp~kLRg&UKlTPAvB&eEY!lzr zFB$7}eGR9OSz0!&9ouE8i3Cb z&MSzN-N`ypwmYVrxD1uX2o@k!CdcNn%i2Gi}HJ$I`dQGyQn~ zzbir%kxRKJxx^I8WiBD9-0%0hh1~BJquf^HQW$dYg51rTJ4GzUToyLWeI!P1bD7KU z)#v;3hljuRU^~w1oagOa4>i_svfs@yaE}ksDf+1`gMO?@Aq3v#8{emp1Mpjqqa`f) zMBW`GT&dkwFPS^~%(9g=SbF-_^KudH0_`C}lr^t)KLMk|baM3}KoBJa7+&1gs|cZb za>v827K<0lIFp&Sx4Akh#nxwMW6mu6z5NsfT4y4^sJ{LCVeE155ilJirceeqf9W(s zoKAnXzdpf9R75HuVyTN(;ru5BZO?Vkl51TiLjo;e>nqdDt9ejm*MpRB4iF;l|tH1UX4*}B2D6*6D%M3^LW@8?ICc9}h8+*P_K zES=;Tk|*G1gV-I|STbN53ya$8+LWHO##Q2j!r0J`>Y>iBs-G$1Ht*Xa3`b9LoP)T0 z-jF@K#1~L$?!=Ik@gzI>S;w zI4KXVOwAa4{vst?)0Tm4oMDDsSKSc4H^hw1VQ>oKo4=&$fWOGbt^Ye6){Ty>!}8!@ zW9w?{GHczwuAS&d)^nF$1v{s}Mj#DpN-ck=r2=?Jf6=nX9S_6!@;`7Sd)gjQ_)P{9 zf4|(XHwqu<(*wUWV+@z!OxQZLzsT!8C6N%%7uMSC#ihJ~>2T)Z4TvOdo)Ur|_U^Ro z+n#jHbS$)u$6eGbx z0q#1MVg*gL|9Pe1y59xP;IoQ0zb*^#H!o2Mfp3LgJ+W;l${$-xzlt)wb7QTqiwbtR zui+(aW6}e1qYAv1)?c|E zc+^OQn9P(S*R(+M(lD`GK~;DXw%Dvv=75wKeA?-!3>_|6TdQrwYioUC^%js+j95W5 z;yisKCg!DyN)=%}kWRG}#LPckPt?r!@PL@HHI!N@rvy#YCQ%ktMPkxmLJ}>v-gA|C zMq`^-GY+0yWe>YNggnYF%Ks0*RW?LDQtdV34xUcfUCH@6ODIwe)wtYah<)ve7d*a- zMfa?`F#c$=dSZEFiu_jnmAvCaU~T@O(q@n|h)UVlb)4su%LYliXZb~mdl=3Xp18w+ zDduu8X}xQ6{*nfGHHGqilLzkUYSYngdJW-F>P$vvoET(DsrOytj*?)lyoK20Lw_++ zSUld^-yz~?c4@^^{?4?FzXv+OC>3|GV#H{5c;rXBpyGH0#m?j7YQa_`#9B>ioSeId z@rebuErCeN#X*cQyU<(cZm^owOi=n7g|nmq*|8cPF}PjR#!GS0kNpF%80giqP*$B&Q?rge}Pq z$0OCHB8%3PuCCt4RV#Al8>7~nN(Sp=4aThYhI0=!OzC8x7sj~sRPk>eEG!Itd<2tEaes8>C^BNgI|4v z@OH=a`>SJ>pFE0sozr2O> z5|>daf`q2o&W_Z2+=;YE3kX+z8m?Z&JH7BDv$T9$8Kl*mFxL>5&UR=7zGZeF$09Z_ z22Y<|Q6W^|?|zk52zec$ca>*<56Q(hW2YM+BTwJfCBO#=p<3 zh50JhB#|WIf`E)<*JGihs6RgD*hjfpEhmiMn2O4$Yu@?1oP7l^GkHj3niwR(j9WeA zBcOXiE#3l+zHb^?R%58I`wp&4zhrvoF`!p#a#!G;hEWFqlY7Gi`sA9lM)%E4 zPRWr7U!C7EuQxu&?|s;fSZI%j*zE#uHwQVTM`|~m z1ks)|qQuVK<>Ud=JODF9v5D@xshstrzJ!vTwWgx;+MY+OAzt3k|1atIy0m^%nNF5a zYe|bVRX46Lz|mHuBYh@xDbc4c^ZA8|Ccav1^Z(?Yjz(&cqLjqsLIyl1eFy(0;EcBDU( zN_0C;Cv`n3Bx~IL8Sy5_T*(XztPGFynj!vANFo3DUd&^2$TeE z;O2bNiqf`Q(z(@kjLdL8SZt*ro~qLgG6>UfXj(w{HfzrsNZG`4%o}|vy{;pOj7vsk zd>~7o(exg5P_asiQZ?PkIY7N_Np8hYS>V$tcH{Hl zrd!9>;oQJ&J&gH}=6Qe)ww9JI0JuG;+!W@b7Z>f6mX>e6|5xi+4( zgqeqo{U>qER~fq61nZnTZJfZwu-csI@oU>$n*5$u5Ms$=ch;G-t`(;?<6a13j zA!!pAZ`ARLe4L_X*#q)zZ0yvsIM7EWxF4ZF1i>xhR_i9Ib?~|F%y%!u)m1V|8?`U&$$j zI;(e~HK4Axwp?Rg4ZcVNrjW;-K{3WDRdl7nt`BmgQZXAUuH9%J)lDn z=+@(Rr$%r{&i1UCnilo;+ijD+?>V>7m=}dn<4r>*d!&4%frJhnB`@NWtjS&9{CskG zu3WLVkwEr1>R1T-a^~BS@T9;+Nkw(wDSn>f75alY9LPggT&rJ^eF`P))t=625cu%n zvogR$tomSPO+`1(mFeR3#;!QnFNng-Wi4uRJ5lVQT`H)n0((hy^PGY)*CYe<=_ySe zJRRvEH;+2)zZnfeZ8y<7AL-RJ=r~O}#eKh*q~f8v_kN7g%$^>QBpy7o&AB$%?BkDA zfe!Z&PNhf;7QkG*tvw4Jdv8zt;1Ej{V(qZg_re*0e)G0JYc(((GGJ_job#p~#;nS8CC`&2{5OHDAaHx>c z{5&u1rS>ZIM}mQ!le5aTA5snt3RFiup2D!@fB+o7ecLm)?zfmDlr(V7oi@-MalxA#B<%j@~2Y`O@;6%r^VrwT$Mw zG?t~gyjqYUGr6M>^v$X?V=#PEG7tMnb}E$|sA0`t_hJ$n^yW~_qRJ~$7OI9HcJ@ zLoqPfTE-)5K^b#VKou~2x+QAE%>Io!@vrWqE>E$WQLmsF#y8p&TjGr5ybD{auQlMC zunj$shl*hbRfZ|j#3tAHYW|8I8El}~3(+Ij$x^a3$*z(V;_Ure#hM&{Y%fdM!(tL{ zV4bNSE^b!m{v$L_1gK|%Hv|84Cc75SZQIGab#zDK6_n-_&&;ifLWy%NjO{p^CRJ*H zo~2;iBHcvY=MZtf;H-d&7!?-aN9iulm;F(15l4}R?`x8m?XS(0j;heEH!sYqF1?0b z#NMGFt8CeF$H!`8H6oh4icGV7lV-3qI?7t1>7!odM=w>ri`Zub76&kgsZRy!tjYcl z&z8M4C|5%6kK9z>?v5;3x#PFewxa+;6y;kqWH>gbIGgLbdVzr z&}0Sx+=P#68X<|f#VccyaC{L@3i#V+6=k(f-X&J3M~@v6MsIPyQ$z>q=!}Mw7Qsr6 zOOXj6x0}tZkI6x;Gq>N)5C+U{R!pznEOfT6zqH>L_s3fd!!w;^kI9G$T`#k#quih3 zt{teHzKruk3--zI!DYMcZEQOaE^+gjX5Gol9cGL<9=anOp$HrxH(gQj8LB1y6I+^_ ziPw;(MyearIMezauFw;ZQK%BBLG{AgcC)MxC&?w#P$ z80+082Z&P169HDzLX#|=UmRr<0kJXl!L_6nZ#W;y-~5jdbR&9*w`w9a?gELkK~)JY zE=pHAnZ4h@NUD%@KYnCo7@y`@a-w||w*!Si_8pd9Iwf)C1{3f9t{3SSv%g`aBx)pN zCo)@nR#!o3Ge+Ag;V86=`bA+w`Kha;26*xunUQwhz=oD?|#O+38Jc95O!6LAqB? zWL5$GsO&-B1%4@S%kA-XoPj+OVuI$S`mOAL+Zj12=*Y*MN1QqSjF(XfJ8QRF=J-nZ zkhsjXZ7P*&%I$Y))iZJ>J(e#x5>y<` zo;N0W$Xg*WaDOFMW|j`NIvlTK>}EK!zb1af}!lO zoQ3z`QVo$4vv3_Bv%3r_9bKET3eDgauxgFOAJj3IiSpud{eiuOKNya^lbN)Wp?WRP zEZG)fH|QMM>5i6DQ-2$h+ea|VO5Vvg-!Sjp_vYQ4wT@Fi8f_v-SDmWM5Ro8c>wKgqM*s9*M)P%7-}sb*z=via|u!fu!=NY`m?eF2onDF+%~emu`Bz)hol{*c3v zHQu8(>A9=j@qOp9UU%kLx|s`;h6%UqQB@ThyIc6pm zv1M!mW({PdFa98_+rI$Nzsb)+Seq^Ufj^kPFx|as`fBVhVL+D$4!ZZ-^tlBA^EqH2hqqj0-FhQ^ziUfLeQi9v z(S4!=nOa1Dn|9R(E-M|QKfQWnu&zAsoQ`_69I?XPCgwvuhR!xr>&Z$NoMdzY_^6 z3eOlUlK+O=G7j8#Hu;<)PMV1(2_=!nZgJri^L5cs46rQ+e=+tYSO zMODPiZRKIY1(3ZKo9t(y%4bR|i|?}*c41#%JQy?d?tMHoO`eN^xDK`ZyRMCgQr44@ z*19bWL zcy4Su4b@w2^gorJX3x^M8wY6HvEM3u2STuSf{jwXG!@ntNy>DwZz7&pHT;uH39Hgr zG$os3l)QFR!Y{w7=I8QLQLpBX+4$%@(-0Vp^aMR8>r^VdaGhYs*UJ zKK~0%_>+V=I*J|Jo3Kl9A=*Q@C}1Q8)K7a%PE23HvHDSBBv@Va)0v<7?Cw&fhE#a- zFJ~p;nsgS!Rn)d0v~_F$XZ(LrB7>M&O?vL=KYiy5RXx8S63X+dLE%Mrr9+y$UbLXf z)#TnR(ef|e5f{Be)(mM-oA4Yq`2FOYa`XU|5Ocg})U%JxXSVxc)lPA0{q`t&ojhn# z&~$5|GSgX|lj^rag53*qm73;TE>`g+!r?2mr;AswsEq&TZs>H{bLb}EVkIypScPn2 z?55&Z)m*%!HOXhA%X|v?U`@Wr_Ab;}X>yq%a`2L^Tc1%tyMGHjyRk_WrW5p_0jf zGUwzZI(bI-uZ1tsz!4j#7w2kb@Z}RbI*|EZ)k9BC-3m3y*0^(DAQ3FzV|*sY_2G0B zz=Vz{-)reTRDyL=*Z7+MTM_Ya6c|%&nA+n;)ufUxR*@o5HNNhLZzayXcSW#^8WG|P3tt5ckbb1r(?o*1-=8d4D@+;-?d^fxSp)-)Nf*K2JFe3khwr5h zNX$4ACsoEUDQu7}(vKK@K9d%z5zTVCLhf!CPm>Ye~Ms<6(*3k^B~bt=S!3cL#s+*j!kOHNjF+Y5 zAWDpNqDfKTQb{ZXFw7U_FDLw{y&K*a6RDJUg{tlq%GVbPU*HKVuAB-La#;Lx6v?Nc z7ZE~0yAs-uou)4Jv}~s)X$N&Reb3|qM-F|_-Z^dIu+S&jVF~8RlLKaB z;v2Di(Gg5-Vv}2;CVOhwEZAk~eWnTP8E^Gc_%WR@_zW0UkMVWw(}++!{ZM=^3|XsR zy6!UHwbIp|u+6_N?pzpl;A2>=V%Zt^t)Rg}aE))^fAeq1eI?_{Yig1`7u;7u4%_rk z*Nq*kkJ&mRt#sisyckpLQjS z`@13t3K@_B+QkWX>8WgKB2wM<>#Bd~GeHfS#PXuF-+0_$6%(X%e2^+qyoVDR$8aSk zbx}ukhuQ;a@pTdGn%ThGCy?0mbh(&EJZy3X*&1FX{*u)hSL`LgZyQ(G4j=^dw!1kc zWQA?8=cZwJe{5`JbGW( z!RF=qB^m?O6U7zvU?0|62*)_L#myMb4z$ODq6{w5e)wW95*6e?+_c7ugs3^wp_B}X zF?#$roX=m>-w3YwgZWDg?OC9jeUgNSI;0m(@EJeIn!Z9it_Eh_Te(B;H?1s!gSwVi zm%we~t24+oxhAJ3O3aZ4lDSLmYfzq~b*X!tEAw|1%;mB1W)j?$xR_E^KFE?D&{6LM zTT2jkSR~nyj+uLkU;!uo#?8Y@J^^Y1Seo;)_s^%BZ(jQ_)K@Wpun4&9_szy2d;c?Q zzvy{gls+>{3OvWw(H0L@y|mohX>{vTOfyN_ng>dE`}ZECTL{+;{tsxHXj*1u&Zn<5=McmE{Y|(o>{w01jdc zPXpZ6!eA2FKAhr;OagZQ>G#LfBdF4f-RrS6@^&fmJOyZ`vxvt zk8MKER%0fyfgfDt{=D>fmzF>CBwI^Vnx2A+nzwN6EG{2R7Q^NwdR`zh-8U6Yi|Y3z z8ff1}*G|+bB>eIMB0gBdKAMY?M2v_ZyKhNft6}79>t&gEYq3g3Y?1d&7!AuZIzt5r zkFcOlkWHv;sx8%CnG22IN(D>--b|g1A-M?39llx3hc;u~$S*d&T~Zy%Gm0b)FiCWW z)*7!7L(K%!SSJh}o1|?y)f%2J$8S34nlD_su7O=os_q4ljhpU!Y$!ZZ`8=ig2q{p} zvl`r`7DEMOEz|DsW9^2(fh|CVK_xtYhgb{7pqzYQVM6*?zY_3;7xB9u93a z1r!i-%EEU^*xFQO=kIlMH><*%8UZ;6hTypAWQ<^_g5wqG{s0Pmfz{5>^$@5+6QNgI z6+{h~dkcu`|L~H2Uj`Yax!Hs$5LyIZe&jZy_phe6vhe*F&bPJc)0S z2rrZVzW3UmY6%!DtRCEso)~eBR>wviAeiU1eNrHNUB5#sR1CHj0mDkzFlA`|V#IuW z>n61>Z#%FqrzpS0t&wo&XOKVPQlsu0pNz3d4yA;xTnSoN@DZedXhA?^@1ZCqK9W8< zoBLQH!oa>~NCvP`7vM7g zWfcHlU&X#KmL!S9iJ33Fc}GX7i{O^5(Kz%_S2dd-yuc|h=~nM`7`m=4`SMF(HlVPa z&%U7OeA(WEO;6?$r@GDZ@RQWp_hYX%sbuUn$jyZiHJR=@tFK*M9ype|@YQ3Z@&P+& z_$!@#?`?In2TbCOK|P&Rd$_B5&%aF*XPv3ex4UCBN48iG#8OvSxOMD-m8RODY&Dx~ z>zeft$P7X4*tJ3((Sexag08?Z7|VnuTL%9dn4khDiX+ea(&S}QLcfCv>CfHAue!P( zdyeXt<#gt4PStK~@u2ESTi$TrGhCz^DVwYY*_+}w@8^FF-fHPzvFwxtrPRUvz~R~~ z)2Yl8+D$|)7@CH71&wSjqeL*UX8QScc92lr#h^Dp0dIV!i3k|<#VdYVt#qK)r!vyOhfF#k z_MM0Z<5CGJKYT!jEY>e&nXUWOI~tSc7{A*^%X91o9dQBO}S;E6&0PEtj7hJ}rcQ~E{Nh=Q4 zN~@Ng)N**S3y@nP7M-sylsQ?tl79G4p}gIrGV%a!P9+@SPc# zaE>;;yDo(Ep$K`X`$Ji50h+kMVJLbi>IC8(5$>|4{2Do3WygWOygo!>XJt>34rrl^ zGnJr;3OMwk2O`ZWs|KPT9WSCf1o<(=@xQwUmC$ee^MsD<>UQt9PLikcbyApHnI@WI z;rDZg@*v*=m%t11F-L`Gx37$tmW*$xUON|QlN(rf9gUDt!yer{&^rb6qdcgEK53fk z-wEOt@TU#}O7&JBm5q0b$+)Dm$JwAuW^FnOBJOb4b0iyo_lM23L#Y`nO3v*Pxt3GZ zjPT)mr!bNX<3KPbhFV)V5q#3UX}~UEV{;eO@pf!xjk%eg@>6+MiC!E~u~ZTx0l zGK38Qxt6eLt=Qef$^BrYiL+<9m(KIbHznpOqG{pUn&7;B-1wA$;9`GNzVCOFg#=|h zlsy{i^FNrT{2Z8b?zy$(wJsauye~c9l*~YeOqs)Yi}n7cN@DteecN*5eTbQ!#wBTe za4Z#odvQxu#LR&ilsY(wvc85A2s~lumJl_-oyZ=i_+4H z_wPoZs|#66*iL!6^1Y0qrdc{P$A2dQ1IbEAoVlCMhAQQv04tEkLdd#S)mIaG_NzVN zsA_=MC>}2m8Sgo`ar9yS{oyk)z}u!v!13InpQco0I#HKq<#!4oC`fV{R#78}yoX zpQ?oNFkBUfsU7Q=qzOb^oLB)DFz34ifT$hY^NG&gJGCMnrM#~lfNO$fd`X0d9!iEe zZt6C7r^97a?G&Bb?rbzZTcs!VI`azlB>e{VfsC)UD)aniApqB4?FaDiDcIEZ!-^iQ z=DYJ6rBlb61l*3&-b!mlYG8;BLEtyS&6wcZSQM#AU=2+fm)IWA4qbN>@mP*@krjBM zXT1^Ts9qU3J;<+Mj2n&N)18Ofrm++H`ZO17VYgB&G9)5p zaj=Vt<^pn~wCx`@`Y9QyaKqt4j-lK97?uCN8pMYFd)DQrkrQPslI3y?$YEdYB_qWW z`sRCe(QZK&8#tU*hk9NC!(H#WA0WKf z0YWinl?vPp9eEw^63Ob!&~slrk~Q;(bP4M=A*u_e6~(!AAYmt`)}Du8fW$ zzYPC!_EC50?bh;`v5LroC(eLbJ+$J%^;5^F)pSgAfDqk;79nc?yASLB|!6PPvAE~YNRht?N)qT z(#0Tz0F7-JNk`c^*3Zs8j8%gMoK|Is*-{?^uT4e@OWo=-a(~g^Wdu!Sd$tU$!{c{S z*G58ENN0w(A{U@pz=p~36sI1hV|N}vO04wGK%pw1B8_ia_n@BKB&Y?FTwPxcZhiDB z-?8q26kILb_^}mwe+Z}D(WX6AaQ0*;YVD)yQ8gi?f4z&S&-%ng|FGwHs;dvE#Tzw)MiZs>~84`#kMU^EJ zu~_WA<-c9N`7YzGfK6ZX=iL0Gv-Z30;*LO_UzVAu?a1cu3zfmh;}o94f$O|mHnLIo z)eHKAWN78erPs>}E4TLn@u%2dDfR+wwhaXHX?=B5#7hYFoR<KCgZwuf zL6SVIU_iP0*T^~gM~psEgv&Q28hZRUXezA*?-6#Rb8dAyQ5={gj3II&$H zbWgBv$*<`)*rz*XU#Qmj!lY@FBwUG(7nm_WoU58xt|S!Xw?B0cwJ7T!w6Bx4*b=j$ ze(_-cuX{2NWAhcB=iSaU% z0FyA|Bvbf4%+4sASF$HgO$zQ1!$bi=%Iy*YJ^*&~ffNlIV!`H?W$*qudWxpD*B(+3&^K(S;_aq!C)l?y(y8rf|G*f2K zHTw->)Kv61H%Ng;gNFQ&gaj;5u2Ny=ci4du?o^al(KnyFBswb8f)M8aw(`#r+?_k` zYhVP+M3dL*F9Dk`^)*YKYG>|XG@G@r1s~M=iZ#z*$|-(GGH}0&fZL4qQ9wJe()M}E zgBqsZ9i7>(bT9C^f4Y`&x%t4l(brIAtk!Sd_j|}3pQsuGJb?vX-Dg`5$h1dOQ|x=} zo^SKJ4t6yiQsD)!|5fF^d=b@P-_Z(k5E`!L_kWLK*yH$kHR+X-IJPXKy~>NU`ucnJ zY58?0N8Y&d{NnjZz5l*HK6J}lOHHgyO6M9e?;C3bJ*}AltOHkBqOE1zeHGINRQFoF zaeq{aubDBdGYOCT&X9%A%M~MYn^PYb@JVi?o*A+}RCU!C&noT@Rl8ARc>szLl6*aU zoB!~=C}YuxKB2${EmOQZI(F_(ZHeY1i2vZ*RhJ=c1z8;}NZRCkPakdO;Fv-)Yuyrr z1?iI}CY;>ovMk@6BN;no0qac$V!$Y#lqYH0X<7ta{MlxVkasCrvTE1U{E2qBL)n$> zN$X21F*>8N_~#N`8DDxCpNJRMBZk=hgAARg?*kcr^26f_q%?ownrBlQH$2=YmBRMk z7Q}@1&Al67K&o=ju(b?+xmIebR=;_KMT-236s%dGr!aR$#T6maf<~##%~WaCOrRJ0 z2>sr!+RLAvOtnD0E*!-<*ysZ$Ko4odSrujDuT!@SQJCWQdo-$~|j zGPA%Dl>)DRWA8W||7iK#Enx9b0H&H?h-p+blDvn1mUX;h?yNpYpD<87#U@~pJd*@v z-bf|_ip~0SSu^ak5{Fi2!_bNOb#iFQ)jja`IL0a0Ck51J@S6+8un>z`scFF!@w*b4 zm%)04#~jl0N`~dvvS9zwWI>&`1xO;pViBW_5CCv!%IE9@<{(*tG-WBw@aulDLT4C~ zgiOY?6S|rqIYH|gF(Cyt8jUz~AL&w(qMDDgOtmhW5)!c$R6gJg1~s@vi@Qb76YOEf z1>BkBp!{XK$5g?er{tB=!J*&Z|F4x|GA{^ZvL3d6QXfzukbuUwezdlx&j55u$FzKY z6;~3J=!tEBh}~stopt+KewE(!GdXW}^Fxo-&-UkG0w{*%Y9jC0VEbA>P~&nyZrOkh zx~lZTV(lZgShFd{K~L*YJ;1*jSZ7WH;t8&L?fpPdrXEJk{|EbOYJG$58uL`wUJt@L zX&mz+{q_s4!nhHvCOOUG&5r1kLL87*((FNu3i7`5#FF*PC}$>m6=U-#zR$VVuC79s zo)Qb>D&#OMiK>;={vH$ddmL$8Nmz2GwG&JVXS9d7TGFf=qojCri^pr}=;bufGgs7D znx_~aHxcAzGIr%GclU0a9eNZ#8ZwyGfm-S93EOK{YTR&28e}2BZk#U#YOygKf8sqp zJRKWq*Rc1FpqzU$zJe~A-2A5@3&W)4`!YYZ5u~Whrc=;Bbf#oKklA7BKFR8kQ#EZ& z`jF4;L6;sJ^i^0Y3&x=i!pKxtwN(6NRFJn2+hU9) zH)CVOE0|;z32ZyH=c2L%U%^?U@19&5Blj3_WmU4S3VUyp`quT{A-`*LcABG`0A0qh z(P-n50La2$qolBiKl)_N=xJx2;(7Gg?9px>p-)P`Cn`&2k$3iV( z#bU`hb6wcuaUXqZ9b!$}D>SeESy-gdA7UkMs^C{`-+3=Gs;CcaIdwH?|X_&ff8$0|i z^I#IX|A$AsdM4<`bh*B0mQfs6%C;y1&)oPk7 zke&{Y@;(!;nFVJ?kXu}nsJjs~02ucJd3Q6ICCIk>cTMjf|3e1P0J#f;Hf^e4$lN~n zPppdya_B z+Mhalw>`vo3}1#VYducSsA}|Mp)oX%Th)dF@u+rL_EFe$Bw#Fm5(+4q5?5av<&mR8 ztvcv@*K~kjMjZGFK1n0OsOi zH4%CzMF#{(ziH>e@FG3si&yrq|E^zLR;g5pid1KDozXmZ{(t2;dO3}Q;Ctr#1HH^E z&Ah_*3)`N#-%AC#+ymO6j3zaH64bX;In8NnR@mrt{FA;>&Ki)USD#sz%5DpEzl_{g zXnYnnjm$5C?G}V%&aD2~`MM0LNBAT=2an3bjU@x(W{yO!Tz7lq44yM#nauL;dnz-- zrA5ULeunVEtSk*{xDV7cuiO~APMD7{;g;QbtAD%EpHyx1c#8YhYZa%A3)icbPh)}6atIdbM*{rRDcT$;=oPa&l zDbDE)NRUyZOkU)r;{~R2MD9HiazH47l})yW5G8Kg42^DGEd$gM-g0%?w1l=z;h@qT z9+b%BRSmHH7q(vjyjWAp{1JdE8_ovfjqW;FBhCQ9#r~r-b3lXfnWzjqtlxgCywH%bA`$vCRNeBWEf#9+CKaCux}kT84pEVj`W`^o;^GTCyuYY?Zd+u)1xUv{CR_4ftDPSt6w9_+(_c*Wa@J)@@px0Y(Y zup`nD@qz3jSv5heaI-C{6j^@i%9_DCq7J5ctt$(;m9oe%(E<)P45f*lmG^(*;w`U9 z4Y4^54zD7Qfhl57B=|UFMc?ohcRc~)Z(thIj!y+xTH;aU8e!v6m@qQhRp9^dXPs}o ziV|Xvim)$%+)Y4$RVRmjq2|@~@`G2l)~1ZJbTO@07kGYy00~3)aC0Bmn(69berDKJ zIUwqC|39-&v}}CmbKNtv*4padrN?h}X|6ynb!6$x$ZPac!D|!e5|j6xp(iq7!W>;d zs43Ev%dh__zN!a^`dR^uWr%fDAH`x$U~s3+Ovu%e;rlPg)v3?WiqIHg$z;?|8(u$X zyCP6zKuYYpM+8l7VDuEdW5Fhv4>vL!>tin~9Wy&Pg|2=H6!rU1;)#b{tdf>#-((6X zxMUX<#3JRX#AS=#80ZSMDcZ_qtSl4SzAYEib_HFU#A=S!%YA!HUAct@&dh^|t?CKY zDnfPt>QRP{qT99n8|PvnI5_GQZK!Z*dz_NuOna>w>DYl(1!(DjJcXDV2hEyp-a%|A zU;Dij$K9w*uTa6{LH(lL8!sJ36@U7vxerwHqcJ5~g-LE2+WGV^;O>)S;vFx(6%G;;e~H4~MroJ!Oq|rQ`iUkuJ~ri@BDj+H822%R z0U}mV-@dgU-FdV-*D8Ff)*QE>Qk<29IRZ8RO2mBs3u}uk$vs-vP*XQg$q$O3u~X=1 z6&%d$44iZR8n*^rh-=jbb1N_si43)d!cLA&l=~_(vs15+rD^v-C);nBs8{Xmns0mS z1YhlnEm|PScFXyhe2mk`do&a^;96J^#u2ib{x71-+#LSc!250b#Os7ObM~f&BL`;AE z=3}T<4FP911=gMz5egXA$%)fKTWyi*+Zx=maV}<0J*6M(KDK!`Jgx%6;br6+!U3Ge z0Xdg#LHUVvnvrMG_+E<*Oqp}H;;!S(nze@Q46Av~_3(`3^Y+~w^e?+s^8}rXXEYvP zPb?sOP9aNG~9FC3xU;_1d zBk`CfXU9k40$pS;L5|oml%H#1mzHKz?u(?fTMhPXrTU74YM=Q~rd)lnuCVhIF+f8U z%}v4#Jvn>>fksb}14@)VmI?Ro_qP{hpubnEiOg3Ufs9t-mNd6sxMPkc4xi?);paWI z2;+A3xfIbpsll&vpl_UjGF|OfC^rY1Sarv(L)lkO-ek6#7iSJ?p9`pad;j_L#bnNr zgApMEKq~7O3JM>IPuBRKE{Co6u@A94;Q3o$2anzG`40ocO3ul8!X5xEVQi|m{~LgM z?L956A|M8Annlgr6x>s-Y9%79%362v*WU*iS~cDQLjnHZOmmJCJntnb>$;H9Gd}$$ zlec--`kLe$y0u$jJt2yFQ*FkbAqm4@`$d*YchOOwZ0f__qv3=P`GGnRg-7H|p50Ls zTUAhQ+3!ua&MF^lGJ z*_TgT*Iebzcw|0wP;(2i?E_ZRT^cR`!X9@BuzB39TjeR~4r6<6fAG6>G4n@m0o$$G z{&8s56r14u6Wyaf0!s^U3};90`> z2HeXR?9&YyiZUR$>w69f^l?D4nK`yQkxnheyHvns{i7P*_>;{R?WdlR-~J2}*F3Yp z^I%WBG(M=3etA9d3rO%7q{?Kosgal^X(GrS+399M5 z(vE?hP1x1hQ?BQ#t0A&&I2CK0#iWVyZZj0JBTLnYME5#ww| z-@>LtScqLrGSVMb3>J4nmN8?0wj1oSr6&U9!D2_BCocoO*}nWq-!K2Kz4r`jGV9tv zRTNNAbS$6(u@_n>3L;%pP$?=P(h>nfQ2{}ENl+A25JaS@5D*0EQlvvvgeU=mpdcWG zVu;j`1X4&lJB~B@&O7s+Kj%8_oBWx}A$j)RYp;E;weG#vdgd%m3p%9AqE4R)0GFiG}5kmA?hv-lwSEJ01E> z{o9O4$!&?{q0hxO%f<#{KhNOvc32k=k6aX%5Gj}mHg7Vr{{abK{72??B+i5 zP1-|qTk+pI(i%VmMdOf_2~wnwb3u#RInoD!-`nr)IDI_4r=(%|3~gn9lYcYQifmmY zcO{`>`Rr~tz003Eq?W8(zD`x+1Hue*c8zF%&1o$1mKZFJv<4Jk1c>@+L@t;z%t4#O zB%v|C)&0qycNHrpsCT{hdrgG3ZX}rMr{3`Ifdo+IUL09ATY)~ouFe8MoobO-zxyri zD+XGbJBYWU6X(_Na~ovw5(5L71)kA^@2=)9#oeJ1Iws~XJ@Gu$;(g|!(!uit-vL9` z^DU^_i&{@5c$%44UaW2hmk{)KN^A+_dUiJR1!ZXjeHS8_{=k&-X0?Oonen=`IMpX) z7oD@|IE0TjD=o`c`eKcrmiZPf*;~W}+555L@{rumQP^u)FWOf2kreT0S2fg3ap3j1 zXdjBUJ2um~E@mZrYlopz(@ps%^=mUTeU4l90+D{4fn93X-Ap<@Azg5V#ih=bhV^G1 z3J5;ye_%Q)RpWcim3DSzy_-zC;pT}Br;aVPHNyt6T283kdcD@|Ac-dYp#TB0c`eU^tvQ|&3 z_@vo$XJ*|lFNDtCLTg*=?y!|zql=buuU3EQY715Ob9BmSJ&bVp;2|z)Qhn9u>^>vk zvAMZxqMzAzsH_WeB6&{MYx=V?%R+tjja{>zdDn4%D_sZVAfD7v9L&$@jdlm^tTZBL z#G<2K+*+kmg24&^bh*Z=mMgr#ZH%4wy>MHOcGmt;f=rXXDeB9%BC4dHn9ryriuxe?br$4+K@)P z*}MPZ6B+u;=$@Iogs_p9RdIeYO^qM{OFKMOMHHBV;=&n>=g*8Bmp}M_uY21qT@|e%C1p5PHJG2Lmtm?xL*YCR$ z?HV*w|Nti{MVx4r+IgyJ;JZzS-~a8KnBAzdg2#?pJ!|$RYESk~3%D#U{v9 z1o%TNkkAF3SwZl4bd)TlcJagSXnSyc`;|i!+p^t{O*KI3DQLB4lpOQ*K>z0 zg$2z+j+`Hw26+3b_QVZu6Ng|@`$u^BV_4M)abvpCzgVCX0tNPuSYPg<&#pe>Cj#^c% z>)ohxn0wmN3peD;WTHxfo6zcDp|Y_28~!F6jgCBLUi}DOiXyX`cH~+7CXD^s zjJmCF6mF>5qCZ$`DRw!1HZ$IY^qM}oheQ8ZCbN2AFTTR0;6^#@hJR(Wg<(+c#_dHO zH3g#_(1TdQLwm2dmSUmdo1%Q>-S6jD_D@KpUwB~`{n6lSz}gDvkS|O;4qVM^M0wop zDHA}jkCsG1{dP~Z@0l|P*H9m?>|beS?V+{SE*^g~BW-Oo^4`jf3H2!MYIZs`5SZwx z6^kk0}%i9ON-eoofC}xzIgz8>${=qnJz)-c#)aM zArk#fHD3b_*o!(waY3lEuzhZNpgUqvrg$Sw>>P)_f~GdcA(H2 z2IvSx|EA+3QtxHYE=ABoE{+{rF72{k^195U_!djQ)3U{{0_TpO*gn$A5(&P=J$&9Pq@! zc+_N90%u%9UT+{ffDp#`T+g9<@%@R1Oxc5Eq(;c31$qnVI^u2Fq;zgQr?_@9f4Tt9 zo%|fq7O=RQjAYbdBa?IO{72s0>O&+uBymR|JV$yT9;qHOd|jkPSM3a+h30Frxdc8p z@bwMyFsNvQ9n|H`Md`J{=w-c!dmj(>lsRaCSpJZQ8V&T10vh zu{?dDu$256)d(T?Eb&R1VD8K}tOOFAj&U}E~I61V}QXwkW6c@U# zUq&bRKnR~rfNPp{oB4IZl3q}O*!&U0p9|n%Q_8n`)tCA#ij%k<_|Pdk!eOPhY4QHl zy+?XCJoi8OiZf}AIULJQED7CRH~#3d9M&+0f<jbV7Ml0Y_{rU%7ui*{^ssNHp{RRN4|K*=;xzYk z?y8;<&kTvjbB4&=q0hdud?psVuvn3+<8kG)7jN84R?WlKj1Wp|cP8%z*^fTq<~7Wh zaQ4eXXmcbr0XxpUD_{Jsk=YDwp{%U5F0$Q-+REp*6F8=HIDZNyvz0M7(nP5%$cYP~ zPrpZwX&`qZMF`CSs%SX7zqbq;HgT%&S~~3s6PAk)Y*8yac)91Td-jV*JrflbE>cSu zy|_JI2rne#MUziD3pS8J(lb=n3!zfI>pK--~)E^XUROJViFSj0}ebAfTOBoyCy~SH=N@0 zl}W9Rii4(WJ(KjzUmPnSY=HeX|KT_8!IGf%^U8kY21e|P`xvS`=0ONy`ry>)f!0ioDd?>UV)$cSO2AD2#;Eeb^Aa3zSEBV>c$qzJ zFw<8!)19|Z1kLA=;%tV*ox}WMafd2?Gbfm?9q4H}E-(F(}z| zF|yo@FrT9#Qy#-aFSIxayPr>tNyx#kNc<>cQgg-Z;(*zhx8rs1vsLQnmGDH5m)e~5 zXy)7VS7AzqMB+!AN@kIjq)uR*&nxwoxekH_VvtO(KzsiX_dvEm-KDr#N#(={n`Jnk z`^UqX)mR;+M(f>*W-H&<-l{WpORtsN9<%qMYanQccmW-*(O_Nq<&oqBUyEC5wo={w z{galW2Z-0Ij-fdTZ-&c=L=A9D=O5Yb+x_MRmGpwP>}a3Q)TJb^8e*{K1yfq0tyecf zWU0G@RKMvs^yLzAW&H#DD2nkeS}aARfAVlio%{Ude7iEidtViDCxAvw#Z6Xy52xSN7R z^&wmSLmB%|y|P@haV1{rc(`%0jQCFDtbz5meB_82{I-LB_Q-ywSy6O+@t&>R=w0AV{}{v5MpsW&$%;d(=8GR7 z;&06O3|m*$bN0x)8P(<+V-h-(dPbL*a?BzVlRXlN$_WeB$dZAw-BM;nxmYp70tJ!m zyn>{Bid4GoI893wz2Cgv=#Q65Nx+PsY(@$&tw@wis;gM(IeXo zqa%19eN(Z1%8l_2SCfRS6i}|3%F`8`Fom5-R-{8fuTl*{swRHB)FrbfEFt%5ZEHTU z7Z(DqLw{4v*+hvkU((-43aB~g^8oqAea3W(bO5G#QwAzMn6KF>{9qcq~eD=$Z>u&!M9?YI{lyH>=KsaD4{qL?{xMr3cT$Ih{?INc^z z180_6okqjaP2lqrVHY;PP1^gzG+cJfdZ_vJs=lckG?@S zneAxQ>R7Wo$i{Xgw`bl8cZ=F8v%Vn$uz^SIuh14pjaoQgTzT~VMAmHErw zYmMa+2NZV|l}o$O`@w~&ckQjr&zsAvUtT!gqlk#?e4w>XG|xi6HEqqrNEUGu0MwK7 zJ7|U%I!JYjc1gPj-)4JyGTB|pjR!g;OG?Z6^p5*!QJMb5>t$_ET}BRJW^1QLy+&pu zDvIOXm5Y2J3&w8t>F1!T7418sDlVJWanmPtUoy$3AovDq8EW>zeg@y{ zD!K&%b%T0A&hv`p_G?Xerc%|<^SEQTNMnlfzhlX#%1fQa{aIrxOo&k@e+&OjmQJma zTiN4&r^8irGhr@L<1N2b&8=`%1g_{Q+xBvcNWrUX=5lpr+`Xlb*eIp@R$eSgPzvh`$c|o0 zjE3IKU0#`nE=V9G+*tIP8mC-r>=ts*Zq8tt_+8lMpMi7*ot)fBr{%c!f`&38LPo_mM88TXS{P2eR~$tnZ|WC=Z);0yjs7wxeajK=`h3^gnEzEUKm9w~S z9cvRO)OaL4KCAz9T|KfDSH+n#nO!ribiD&V8fc*9IBt~`O7e^9TDEPi7f@Gvm|x}zQU|PY1y;W4fTyUyyCYjI_Y2Q@>`WKiVmm0oofVOk&N?5GkMH1-X1`@ zwWkL$nUgCW-n(K(p~|xOMZKw2(KUrCHz;An83tQx#?}6ZUZ{h&e)MM%!|(KDRkZHb z=G`MO@0BL?8>hf#FI~@=*Te^Pd}jM58qArd9RFs9X{&HC&2&;-ar5Tz#P#^^;_Hn4 z?s`S45rFSzEgm$n>SomC9Q`_uzDeU$FLI{W>3JI`Y%T&4L+f}!S@x1jH9(TcyjgM! z;$cqQ@@Kv>XL(nkAVGU{Gd}S66VNkyaY8K*cdz0~>-GcWPdeh2*SIf~MCUBTd=*4m z(*W5z-{-)ai3|P+-aQ=9$|&XRvsReuZKS{Sc2MC+q9~GBS>1k?UF+-pWw2C{ocD00 zZ5LK~f|umhC@Jh79%tu|KeO*xnQl>aD3F+FEz8&%?|0N%nHa4K(p`d_Z9a7AC1z5O zN%Xj0nuu)^qNU~FjtMI{J;dpib+k%us2xmH{^0SLZ=;@;6cJQe70@u{;4PD_boG3k z311A(JTiX_8vNn&iY%Y|@HPDkAaTRkAy`Moy!eOvrK9u$N`9ouS7-pKt}bhNKyTbV@;ZXSouWQ*3u8;`Bs zaPFn{?52wD(ZmZH4ZZG~o#S<>jC{(Ao)wlA#k)5=yLIi-#x}UE%X(ewu%vUj6Ct%LZV^uxskvPYwM~JAQktE| zlraEY9HmMoEb6qCmMRU}gJ3OkZ18JlQiV^$+#4}$P7_~ztRWvizqMlh+b;Y9*rzwn zi?vEPAw()4r&Omf;!pC462tR0O^I{_J#qZa0+*0WH3&8mWmTZJrn|-TB6~ z@u+isH|wniuWzF7xT_spuOP0WWYhoB_`y9RgbOxfTMk87QWDQG0YNv^FJ!tYtn zpj(X7@1>YOaBxk=_uKs+|C(I#?;rF3|0V?ba2()#rbYCa26QeN1qYSepM12xR-gB) ze{v#t`ka+jyG)XERsQ6Q%bmrCW1pmilC%i#k@RvjV#kgh9#Lc4!5f3)tg!8=8CcJC z>*AxNA_d>x=hj(lyVIJBS^QMuBB9H?;C&Z-eTTH9rf$dE9&g#YV@Hq1y6%D0Sy>qg z&hD0)=GjK}th|}&(W6Iqy{5#EUHnA3c6i~l;*K3>+f8)*3-V*{g7EsF&u`TC=E$-` zitE5&%dyzhEfpcto7Szkt^S5vJoGefzeh znnm1Tety_?vHI& zq8}LWl6XJ(O{5s0^*^})m@WFyT6_DpF=%oIe$#XdoR&-F;E?pVAsmh#&E68>4}LT9 z2Ar;!HiCIolqrGbfRvfrx8GeAG!g4B6s*bC223HZB?J8CVzn}$eLT(yL{d~Jn6Yyw z_>HQ)6ey8aFZg%b|4RG+dLY~_HC>)O&$3GMc-Lb=|b0|#&5~>_R zl!vEsd1OBFp;pJCNWIB3aa*>w{MSQ-XCw^dgKD3BKiObFnb<+;Ce0*pm`r}2=P~6K zGi}hSOt{bc-F;jJ0TRUpCK(6gPFlNy01U>t(suy1s-M84SGmT8d>Jcij+S&KrH6RZ z1@T^=05lJ!37pryL~B@38)?S#_|fb^sS1Xf1E?c#CI{g|$}X2Q_)kl51VkCTBcRbD zCLV>{tQ%i4P{ z90pAtI3=M(d2i`;>)b{D#H6toA~TlHlcDhR20+lpN*ITYZ6!#_lLCfboyLdqeWVG-{wJ9c#G ziuZ@)f({cYt)(pbfLEMk18{jHT^_4@w5Bh9%#C%JGeZ+zUbYs0hr><+-X9UQM&>S- z2Inup;sK_huSp=(t0>bdPXBb>tImI7-kNKjJaBKa>s(iytj^(c zclOu|9GaBDt4*u>7~m@6P|RJ;?%grwMFilSmmnlzfsWD|E2w!-J$qGl>{uo|)6lKx zw$~Un?F`u}M5acxZH_xfLh%_W2s{^`49R#D`^kPe|C^ECmZ+r$VXV;YG8h~oKD`dS zdH$y4x_JK!f6kt8in@#Jpc(@VAjb8)sMqagq^NSOG1G61^&0F)i6QNKObdVz(Epm&T_Vg1&{(|?+X zH6fk6;RuPAq)VY|g7!@UsymT8pR0F|93hyk$?^#L(8MM|p8-G^V>ZO~4W`6oa0M|@ zsB!R{O<=g0ra!HaG(Cgs3}K%a@5O~x`FDAB4h2os+`e70{>MXf`!ySpfNS0#DT}|j ze8$?r&x+peg;ZN3&-l5eTOX&F+C9g};#J_LkEtFtcGvZkH{Q=<4j9K%w z41p_i)upBO1vJvq4w;o0Xi1zNGq~idLo-6n8mstZK?e3=%ozaSJESTkME1KeHiN}G z{i%s-t|8Jkc>sjK&DN0{os7*Um$}r7lmI8@qhqJ8v;aYke>xM=!LkNGE8j_sV2}+q|La4lS|*44hT)hd*3(57B;$TijdF(2?_TcCSFemqwU^eKkSGmn;s(K#1?AMghd$B^t%o7Z@Gk^6+b08|=Ru(4E&&!~ zcv#oDN^Io29sL<~eU8isQ!NECRu`xOGZOmC3@XZoAcBw&ESv2%TxxeTTj%Fao$F!$ zF(1fkZ4fF}i2M@c1*85LIqN!zas`Y18M~1s1Q8=xYS@7}ASc1tKSN2bBZveA1H}pd zMdWUX2E9TM;emnZA6_|EeV4`0(2o)Ihg7!&g7{Xj>OUjV1>TE)7y0i_{(gM^OI^KF zh%tYWXe`gdErGsyy!{&cXgr z@W;S!*J_&gY+5fkJ{PtBJXF!$N+rIBT2S2Ldcz_^8_P1B|>j0fHK()kO7d!U@jZuaI;m zuP~s}Eed8=*C%HNm?KaDk>n}a6jEdST>#+Uf2=F2rp)Zvle^a*^seNQ3&Ux8O@VQ% zf)}4~>+jw+-Y7hiV9xsNpv&|BU2==Rpd|3=d@uY98UNzq50m;Y`2W?614m*J@HJ>b zlHa)(lvu6Vcd~)Q*O^0U0YjSV9Dri?np*y_ zS`qUg*a}hb&0QvNkJ9C)|8NrKn<$UO#?pMZ!fyS==vN+e%k?qaEd#nz4TiXX(xoOY zc!ll5HB!}!d~&Yw_vVxA*a3SeMRAsRXK3py;3nY}c$3M7x0jJPUj6M=uyYE}H@A>r@raT>OC9`S6?h$Z{Rp$xX{q^6 zc%W%g!?5Eg+UIE0HH6Cc)P2A)GCGV5h@2RV>~#dR@h`4O3-G7b-<-1S$ji>Xnszt9 zRTM5V#+hi>OGcnM@aFsLMnIh1hwFG(){91q%m&vlPi72SDZJSH#+v-TOplAA2Gx<0 zCRsf^L{Ouze^MAI+I)H20DdZq1(StD_PZ$D{8q?S7S;o{R@w$@Z>7&}B3>K?MP|x!xC#q*;CWZjV3! zvH#(GUa>$le0i#4@M`GtF`1Sd^ePxkeDgY9uz6C$#GBDumJe)2Q7pygaQE?{ToR4e zB6fGFYF_<9*XWLx$I(kI+8)P!mBb+F-A=ETXS6jkvz6~bB!#l!0v8z=0Ct11r$E|k zei|p>AX}^>_vna|7uJ_Go$usLt_Ct59)P?TYL4TXsp!kG`a`HhU$RB?((ZQwx}fs_ z?SVzvbS^;=ER^~wfH=kWD&8k-vR#jTB8mGRCCeGLmMhO6B;vqU9j(nUlvIs)&^j#ymlrnH6FA;~Q3gRAVA)gBuOcr|tV?_9^ldGz zNP>tV>cl~XjTO--tHyd=9vdh_c=6?wsFM03Fv5c)UX_V?qbnqEWyw%^n7FZAIU0pf z(FdkG?7&|XJu7j6mr;hiz@65vUVMd;k6fd|XgI)EL8xTfo4GOxtPm;5Dy z6@*hQa#Mf{7qR9qUZ8Z`f8+H6L*^MP#^x?MW|OP;^I>)OQiHpMj@gKqHZ?;VFRP{& zt7sCcbN>D z3js2TB29(+eb}JKHEWE8`@5)Ic#smSss(`QZ#57+pD`3KVhtdl(y{i))H!5R6xvGs ze!8&)Hal_7(m-=e3p{%hwmRA%H2q8_jJy=XRfUU7lANeI_V3AE}B!xfxXVr zOB3GuKI~if4|*+CP>7=V1zkOcqdO91G{!L_0}w@FV|?emcesvyFq5Svu;h{ga%jHP zHj9oby`+)|4e5Qt2VSv}D*V{EgI5g@`MBxZfGXG`AT$3GW5-zakoiYtZ-W=ry`Z*! zVtFz9%Z0`o>mf@o0@u@}h(0TEcqd8@5 zv1^5AvaSPOM8GTj;fxm*GO*_nTvxpg!-Bfx4P^1{c(z{o^t1A4$u3E+x;=0{JS0FR z!$6mUWd(c)i!p)j7sc?Mo5N4+ao{Wt>1`6)6Q8G0z7udZe|HeQO%UAXy{>)0jI#Jm zEnIY)VO8%809JVDFouL9C!p-b-R@Vxl2E%< zx+nGjWQ0#!sl$`kONb>=ccArq(2M|GAmT7keHIVJFtkghI@f;Dq>Lu`u;4k#B^V7j z*$Y!DrF@4oAHu5OI~f3FOwCu-0`%_RDkIjihfmMfuHMp8ETu~^V%4MO1Aycu37iX! zoFN}?m5l9f%^i%+dqe4u<(*tKJ zLx&Kf2O7jz_NMX*dNvAOJbu5Djp2WCdbR8Ie2P-H*QzRZqsreSQ*2(L-rOhcis1Gf z&Vn+fOs#Ahk5_=byE%M4rH~KdS%3}7tdq(yXQ-%NVfyO+u$rbtR4_rmm1M>&8Fnf>jUP&r{a^L#y9;=Idl?5VCisc}Xfrztw`rqJz!|W(u8=L_b96 zvAtFFUBtcWl;8{os!U3GC5L!J`<2&&9Ne_1(?9H)wGDrufHpk&7_v`Td?_4xN*52| z&Nzje-1b5$!(+*O6o4R6#n@E!qJG3U<&G<9iUfh37Ef8u`>N;K_jt`l=$5DNRkfb} z^YrzYF+ks@9h$?p53ff(#M2~s;IOP8eN86eD2kGjLVMOJ-B9*ebWcvjY7C)E&;l<) zd7B>ZxNZaE%NcRE+j{^={SOQHf&&ZSVt|!iHpHz4?-o|OGYG3lluWyi2!JZWOm-~K z^p*(&W2(iHIAj}o>!;@Er6*qNC=ws%3ZMh2#C5a4(#p}}+XpUJ zNeW%uraMQV5;ap5<1P5pf&jLsG1E&x5zRqdO!(?bXI!$?Fwko?A zyGbZ}4H!Fbaz{?@xhWxtK-9Z_5%se&*qV<)O!u0NT6}ArwFeD$r`dfBao=ohW5fS? z4J=K-E%q@rh}&NWJVfR1);zHwT2hG0<7>e6;9;(U;mPdg z(6BH%qB(q}zA^rQE^`X_KH;kDGPP*Qvrz^ivt7lYW;OWp6i(orTr z0pNfNrT`E0Yt(6=eE?IKOROSxGuuwxU23rekwkvzt>T6bZN<(~DOI8NW7EFX!q|zy z7oFI}qpXiKs=Eo%K|HSw39gXCeVhJ1K>22CgIb6LF!`QY^}>AX^4D!+z=0EfmpvD| zl}20~GzTd8POp9&y2H|c`;G`&S2uNm-c8;lwD^^b+|K7nG+K(MEIXUZ?E;ZZ*XqAF zp;=)1Ga6rCf9f3qI&(dAY9~v((bGspf6pxp-;3qL6`;``V>v@O^0JD48>$?K8Asd-}n3nymyeFg7DhGLgvw%gj}|vLyqajd0`r*wj~_7 zbjM6`Tg0n0VJNdkA!JSjoYPghoWf9Uw`$mq&Y3m`8i}Ae({9cbBdoHpI8( zzD`@G8rr!aHbo{N&xwDF2WM)ZmNf|1Z(F(u0*!y1`^R%VXa>1_8t;1bSo*p0o0kcJ zC?NcMdR&ai|^r<|%*TR9w<1_r7hC0J2|gIFd@Nd$#ExwzaYh$>`Fq zo~*K(vZOq)pt0B!48WMU*E=B^L-)RkYkY*j^W$vjR0I(DVcmH>s>f6W1}6S(-Qoi2 z8k(8)V*reR@d32?-v)D+Oa}^*K_?w*cHd>jgB;s()NXhvD&+#iC}eTL_EBx?UxH z_F!XgiGW5mHXU4Q#{d;i)pyto`*xRzM-~Tu*y+`{56&QP^i?jbI`Km*!G-1DdcFOv zizIleh&77wP%!yxC1CP18k@l6S-=k_;(TV4F)3&S^sow!M>GObIyn@m3>9Lao=SBJ zL7}ye7bzM5Dge#!T{-^;84=i5WbG*z-ln!hp%d|2Q3xt)kzjg-g`8<%k-oJUMm~#y zWEckD9>?-u0I8o^RZKvJsa%joGKrxa%%hyyCudW``cj*he?!c2JU0N?O5jekjL3W8dbz&-gGW*k zvf1+g;0ISHE`;0_u|x8#n!`80Ic3&Pnu5y;;Eb04lI1g-2njogOXow%r)Qr5VFw3( zRvze!!`O&FzpmsW#pp)ail+$gD{pIJ%mOk7yv6=+gGexlInNuMSbp-|rE1}5o%?tT zz3ngN@dW!+sB2OH^b6xbC?{YL2B3g6lsi6Eku2tcVu-P-K^&!WVGDpV0XgzNJ-?(u zOQLw_YKD}u5VI$W7BpF9w|*iH1R0^4<@F)kZ#_YCX-?tdI)M9aG$YV%I_aqFu=(f3AI6VB$Q`{N4gm`AU}xQq26Mm*?JTiRz>5*BWB?kI3e0TGb{mvkGo8MT0B6>L1F%uL* z2&neBw30#f+D1ndGYun!B%=|18bj6!;U~sJ_)_Oy;iz?-Z|e74j{wqKA%v7gMYQRD zyG(u$*`v5ab>+`k0;E}Fky;NYUVBqO4y%+>HVx%ju|h+?RsptQAA~y?8dUzJfH^Kg zWlXGR!;zLi%44*Wwq9BY+8#`lh%1{m=c9q17*@B`Hbv{ULRBk|Fn2v)>s^H%7R`Y9Ebnn@#lRzYCB?%cgS zANi;AB_I<)8&N%&?`n#GBsW>l(A7ap*nT@f3nh9{iS0fmH--}#f&&;HvkQ28NrMNW zIG*;j{9&PjkI8zDT_(eTZz|Jc;m7psGM)+cDiJ#i<@zNxaBH2L7BGkQ;)b}N71+RC z8*>>PJdyP(LhoJEv;bf3#wkXzg2d*%!m6c8jd&BLLB_lXHWH>&C5(%G0OaA}*_5Sh ztVm-Lg21|%6t>_Hba@dIax$p_3IFWX5%%pGqUKQhv2Y3Q@gy!yCju_IHa;E{7yMa+ zFa*&NnIY6cOQg@LJTU`TIACSdCurJp3j*=!Pz&J7vTu-1IA)!Z$pXIz9I( zV7!UI&IZk76}`!`!%cTyAox{z);8}9lqYhJ|P0QC=v2CH^|s#Au`pFZ+9OM zn-U^!2lr)36gk=u<_F;8JNasmp`wt?iSP^ef}UR9sVNM+f^cVsg#Wo9DixqR!S1|M+C#%-zpv ztQOTr%`(0`3cw^bRw*csYO%vz`8oNYcwYyah1G5UQ~66Wbo?NOmkTC_w~~=}lKPh{ zS)YC4sDULOL-0JAlT-mZvcx;-zm`8oY;x!B1(lqRfcB8tI!>80Xnk!i2)&kua>>-7 zMJ8l}&@O?`dUd+dkpW_Z9^9Mgfr$V+Zacb!H zQKvjz?_$QEMtqCBzV>V^pp=7$&({H>A+VkZEg1nfwK7_s*RGJH2x6hg=BH|RtyLYr z!MOtv+_UK9RMDlJIG(20QvS;TqGNsjxnCw(xqQa51Gl!25JXC&@IA*YKUjCJA-T=+bmq4Uzy^~qz;TKB?cdztn5 zg_vPSRz!2Y?SljRuMZgoi*3L7Ak)h(iEo6`;zz@S!zeiwcL8Gy=lja|;uUS^lBBN^ zEottZ4XY)jzm8t`#Ji~Nu~Fk0xKV~SdF#kvu^^4+KW0@U<*Nl!*=DYZvIx_l9U9 z1@&UTTucjoxp(WoIehnk-n9Y)~e=z zu6|1H>x7PO6)-Aew)Fvjr2TkB`htFHYllvCe$UJU+|D2Ax@$rZItD32HWRZwj~dpu zWR04wK>o~U%sXrbnjRno`M-iRy&nm;W6v#nET*bI1~<_BWGuT17QIW}{71SV&M~OO zpiaPGg2?v|KTA5XHP|)UAI9ic?dMD--lX z>%WQ1|7K_ZFHb=ilr{)}Oe=Wat?7jX!7O`5#%FJ%N*PIV$dy~ifQ*r-)Z0j^{1vu4j4z8n)zT*yBeDpL~J zEMFEE`gLc1zU`rW>^gyOJ9%i(t8hbigvo-RM!1Q5!*#A%ne2Ds!Q|%t-6yul8*1sp zBmIr53r{_;#CIy4=sLf-f9axXh2a~7!-MSLNdFTLT3S2TbS7uY{H8SZVAm(Lic=2` zoQw1iZxo-of7K>=S6+H1_-3hUh0r|0E$Sw&w&IbjtZYtGQvU4fyFZuKHOX#8G}z}D*2}~-lak?Q;_z{& z0=2C-lw2urs2(e2p5K5Dxq5YubonGDlwUi2st!#0?E5~&d-0hv8Bjy5UG_cCJ~0w; z!8O`Y_={w{y`T%rZTZ$`p*6%)p{&I?Nm@T+=lf2j2_4s}1IK>~@EpP1p$Fsh8rE2t zJj$*9hP`%_B2BR;hMgz@Ta>8H?wFIj^xh5Y)ZGBMT_^^hRqlWaU# zLy^2|)qKOx75v|;j=N4Qh|fIObuaPHZQA|+^a=Uvlw={0+^MOl2^NbrW3>LngAF97 zCvo0pJso&IAOBMi=4(uK>y}pD0!NTy_^!RZ-Ph0WAUH==kTbhZ^bd||$6QnCz?#bR zrwu;X)lfCzs`08)xx#RCV#2)^gF!1PDdn(2b<@yjb5~c_B`*?2rDJHy9nFUzV^0dx z&{JQhg~J1OJ{epx@TPMOe>*SIfusK$e-VPYB#G)>v&8?*lL&9wmYVAKsIgCdtCy4< z*94Qfo+;C~jrU0p*{pFAHDN;%)?xnc9Ln-i5iWi4apt!q3afi0J1}QGV-5r8kfZ*;Hf(L%S z?>qOLbH{&g#>gHkYtCoNT5Ip|WbPTMsw|I-O@@txgoLZ`&u4WcB$PKV<5Vn+mutQ6 zBoPu4c88UWjH-f+42`O@gSnNh84}Vzkx40--!!b=4|d*6ld~fqgsh?+XnxtxRm3Ex zef1&n4IxStB`HNFab#|WRn$aj zoQ}o(W}|~yIelY_Svl35FEuU_3-&n`11WpdB=Qdu%?yF0ctTdlHf<}tE$#X_I@W6f zcQcp{MMylom?S&9UlcXHZQ^-~m_h(Jjb?1vgh9cpFvV)4{no^o#b)l=i{e?|s^rh2 zIL;e-*k^y^Aq`~V+K$94B<9y|gJjIpCeq@7=GlFm&dG}=6HU6iRc$DLZ8U;WErfrc z^(O8Pf0rBO(LSb>0OwtC9RMQfR0h~;Kf649QKu{Lr%GWS1CB*UWbb_S|8~w6thG;g?m5>;Wm@51|u zb2<`JA}2NzTK4(z0{|l{aG8rEi}`!TM3KI(jxG|Hn~?<|+{16?=8byK#9gu^a@Q^z zlH*OLiYi{0*I%Q}IAP$FIua8QxoLVhIfBQ+cgEutYJ}AL$)DJl?33tnT{tD$s27SP@9o-$}otQvHKU_X~agXDki=yPqfD1)0!^*54E(4|XX`qKyYCuCp|~YUvg~ z$GQrpJ;#m-#Q%;GL__g8u=p4DU-Sc+!e2z&NX?&CRcYQ~^nbcgef#0(heE!8r9XV9P;lI$nu+&VRLCd@=e7Br&pFP|e-k5uo9O};UdQq2V& zO07u4^X1flQ#yP^O7a=GSyTS||L~EwqqO50MsUbNa>%Dn_C@!RuSo7i!-CWXQ%y3t zzJA5|_$ncExc8lDDVGJ8HrEZ8Oe($(o7O9vi2A{MW7F#4g}H@K#}c-v4Mfmj%D%WQ zME~m!F873F~-Fh}@Eu&=G)~^Ek4La9}$Lx!0!a-*n&HM}oVf%U*0DbX0T)^texzJ+z@0%rpem@HIfH;g&k- zw6O|`g+!BaQ!SRJQP@!eQEE}FMBsN5tk@h9=E@F(zlSOF#}rt++ttuN}` ztqf^%nK}s&5EY(a-Z!ZB_L7G^om`&M03by%))$29Xw2^GLDJI8Dt? z2K-tjYZqw`zen@K^viytLf|3dF~TsWFfwq{al&wuaMQvT!`#B+W0~aaD#>DAa|K#W_>TGx-UZzy!F9eirrRh{xjFg}1X_WhwL-Ymp zJFB_tH}nC_77mOxWsT(3klOf0&c-vh9N`d=cOnKZeL~(sl^$Yy zw~NE$%)JMHXMp487_9NQdXZH|+&gP}XllLc!@r(|c|UG-~9(AXWVgX>X4 zNY)l$=PAf|^dEByv$pH1^EY0Z7q|Nd+s*T}bFX)Hj*`yib}H5>4-5|xv+{$C!$sp3 zqmX%zdWSOV0nRRma3fBQ;9>K5p25cx1mwOE^A~Cl>KD{(^mMc+6#bxen&+G>>G)uH zFnYHVElmh%4ez!>vGIP?q|tk0;!qA2{VTCi9$O_Hc_DsZuiM|}_ykl0P&z7EGTAS5 z(7Ye{$)D%s{9>-7IHFGDb>Gwq?3$Nbvq?4x;}H`RX%h){EcjfU_RA>Rrfjn}cg{K< zj1)jpN;nh^-Tj-7o#!t#E>dszZ|N_LbZN`K%zL8n=874|oD8q_`u98S9dE`s8aBx; z6Gw7H%0~7oa43i-$a&hgnXEFcB^ZqaBpjz0{C?zS_)s8X#=|dCPm2qD4|Lbcq4|fP zuE?ek^!1D&9UB&cV9nGz25^7Gexn&ld!g>+f`LmKBf=o}hx!9*T4kD98n7m>M!6!< zh*@W`dF01jvL*G0Dv90^9mmckF z?Y=i~lZ?$M@jmfC;s}O7hA|)bwf)*deWJEEXf(e(*Pz{3@ovyB)35QS^$Y}>EM_Xc zb^aNUbCz?~J@6%XWK(8ACM`UhI!3gucOt+Jxf%D@| z=|J^IfJT6et;>Y&bFCfwIJ<>E_jAF0=5=!oENZXOkOnZ+&gI4Zu<2P=<#we$UC`aI zV;9dcXwU)eC~iOc(v@VR?N{fJS;UKhZ*<$5UTRqbN8wE9VW*^iX zS+|)5lr=-ETMI0VCqkk2jhrhNEiP~l*y)&0_l@_d{OZ|};WTt@@POR^*Zulf?`Sw- zynxt%*mwZl&EMOS`Ff2fwf@ck$`L)=-Ibb&CW)zH32G- zrz@GI@W}W(;5UgmU-#SP3x<1ebYwZG3B<4#(^>C}fBWRgW9O_s^tQTC9{HV#qX`|7 zL)mX(+V@D-f;^IJ*=a>Z=wpwVsUOdQp60vR?|D`zq^PP-kv`X>s8%B*$%HURgwnm= z!251vQ-aXg{A^Q}X7Kmp4?gDXOyBU)I3ZJ{4!E+iGM|#Nf7z!fKP;)E@HAonFCwN$ zBo8W6N_U^mLHC$T-|@wJ?zDj~g!Yx=Ke{eRNUsV1^+iTX&m?)_yJ%M5bX;|mzKWPS z*l`&Da4<3B@U(M$(MCcN^Avd*+L^f;(|Fq1+PjE&iqrjDL*!-ruW3#?nt!Xf+KAKX zD5=uOI5?Zp@N@8SaM4L%)6md}IsY&hQU5IWU+|Y-;&hg-u8ty{oE{z?93H$J4$c;w z+`_`boLoGdJUr|#8tg7!_O8aB?Dj77|1t9a*!gVcV(M(==xXI)PxCLk#wHGKuHtlb z|8n%-pZ~;Z=4tgmp6p%zE3KCVIsYZ$VCGeGqZPj2~C1qm`m*6ZvHRH{{;HKkUIZ^6cG4-A^(@;e!9Z+m-P&vGtvpK@!E-|8_Mb_IdXR9 z-|yM=3{IQ(PI*iRR2P5T$MD!cHmN7GF=Na38FB7t*lE?)Dg%7nSR;7yX8v}zA(ofR z_LcRf{N>Qnl`;sX)cS>}G9)tg1pc;BFUy1cgH<$GpXZc(*e(eHpmI!lXuY*t?OT69 z2Fj!fnjgaTVZY8^GQODPC!O0DmY-pNaQlo4;JFZa$+0D|2fu;otHq%+T~73*DQJVKRY*!th-qjBZ0vW1+Oh(((<(&`@!a#`uSkP0-4OIv30O zy-MiXGXIt>B#Cp*ABAhduBo2w>0sVvtz>4qztg_vH&hv646&^HQJooP-s`yE72U&e z>}_Nt=w+sG@`J?IjfZ)xZn^sN;CV{ehN{ckFQ7id8JCL5*~1^@o086G+$`c4Gi+Ac zs5zRCpug5wa!*5KfC+xH>Llly~lU^?%X^dk9ZfyZ)QwK_K;KwJ@A zpquD%)EtlbXnnb9BseV9n04Pw!y}o_jAKjaOp~$ZaN-D#u`_(b~$w>W18{!2dL>ONrSH$+3|wdoD<$Ta?b62 zskl#-n{xYxL`o_fogb2QWr4B6{}$eioXgGhRN{J*x#+_u|I~m~)Z$@qWbn>m(HK>zY zj^%a5t$eB-w)70IsnX`q|=8Db!r^IpjXWP*%pb zpMxQbIdNq?EyMKkrL*sJg9rZX5ZONRI$k%E<8udTF!MdOM-QFqX0{)m=37>?af#Aj?$cvpcBZcRIyaIq4cB9OBXDP zVUqMDSSOv3RPg+dsP*j7<<*Qz3L`LGdmxU=a3G$VI&f^WX34rNsU8AowXL6M*{ezZ8z;BuJO@%Gu8kV4HFhB*FHRE8X-t zuBSD)*k4X8Zn7Si!ks5{2Ww|%6(sP;715`9o0(@m8Z(x=OP)AkR@mShYnxowe!!7J z%@36i3X)HGfB)+x;WX{nTh!O3xw80;wNuZ@kkBiuB9iQKV%t}T@H zV7psrH>c)#8z_zVpu7^6l`*O!l-1zmBxpTbeA!3n0{*LzFmeqo*QUyVd9Kvxn2zxu zDfjzTcU956CoZgLSJq{8XJM%$rn<_j8E-jC5;e6l8BOJuhJ7who8ySt6YlOi*>qq^ zKi|@pT}7SRNo>+?h0syy4M+9%MDXl}oZ2=j*BO;1dc9U`zVBezc^Xtq+bouyHPZ4S ziSzVU(5-X)tXpSH67y3n4>2VAK4mICjMji1*Qjhpv+)_mJo&p?U@f?|`}p1=NgBh; z^>f$ult4ye%|U5Q7pDOU%9O$-Ruh&tJR+6h=2fHlXQ-N5d^Isw!dx+uh#zDY}>=@Y|ed>FH6=`km&>GfZ$U zyD%VMClGn5EB)VF=D6g42FmyTDC+G5^ba8C)RJzUDaH#dYu-FRFiU}`GI)!Q`CP&; zOX=g;jzEq6D-A+7ZLkrKr-ui#cDMOT9+jdZm9@VHa474M!Bc+nhmT)Vb*Q{=H%dto zHRv8+Z~7zN?0UpdX#)hU4TQy>t|^5JkGY*))83hB590j1v(l^Ulh`&oucC3aMbzgZ zy7Nblt|>L~*8ILLdbIxDxyy)WNf?l$aZ;(97?`qH)q+=lq;BDJI2>|@5D<>cVX81S zo{4uXbG!I@{eU`|jovbtE!#!s0WFhoX;&3$^sG}C;puZW%>g|5ZcsaDyA@H;+dE2i z_&q678B}b4(QXoXj{T_1#cE3(sIS|5=z&cL*V_e-TCTW5-5m5nDTO%F-OJeU*DRna zb+x#CQv^B#Ye^g9PrUK8ZLH(FY{f&*^ozITbOqy!e*+H= z>ZFraWRqpHQ1hC*x((b17Ih9%2ej=v`A7E<^p+GdDYkf1agb-l=v6ZxEe{CE%~nj- z&u1FU8@N>P*vyZa)e9xsiM=M~h=?2!H-n7{vcmSp;!kE;N65N6MUvnDBc#LN)bvm- zPhIv1@(N7IQF@x3ys|#ej%i=4&f?WKTo$cbnurA2(6dwOf|9Q4i^V7e94#%2r)K~T zxS#S>l>NrHR1yy|Y~Kcg+b$=A@invclF|v~JbDfZN4$?Jvx=X5fQflFrv%rVwU~9MGCVHR4jg!Yan2o3}1Td+t{d*`4Sr#S!YuxL! zT$QWA$;8(A+4jgH+XZH4Qh*?fyirq_*_aUG_d-cZqE=#Rzunf z`M1}W)aCXoS{+a{T`(env;t}mJyj~>vWEk=544q(1XMNd-TDhv&3bGW*#u|UJcW9O4ojHd@LJ1(zzdHdg8 z=G~b&|KNA&Yl{5fsY60K^D&<3Ow`wP(WUGsiS)%E9VIN`#%DE?x9S}(PkEOGF4-J5 z17G^`NIVBnFg}<*rPG6z0>nzhn*2VKb9eoIo%dFCEAKHfs13iEj-Z_bI$T@y|Z0?qYpVq<8@GO4|G( zjT%5sk4*DBZQ6=6J8QqG#7oGn#daJQ-U~qvC~n&%lAmp%V9EFIC(@p+iQMotddwqE zBF(VZ(=l%tTWg-Ap?s$h3LDYxsG(w!xRaNRlj+we9nG+NIyeGo+jkw zY!7FR4vVbcx%M494+=9z@Kr=g+V*pTM=;23RiCzA8?j|fkg$M+HX~3RhTS)Y8G#0r z0%DW>Nv2jas9&XfLWu!7{)DDLk~qJopinae9Ksn+>8{hfpBFvi;1A0nD<6%h9tk#b zo2*|!-+^>?w3Q2c#ipyI?1rK)S@zSM1y0#F31cE;=zF!SN_T|cKXtH+w3 z%6gT*@KsgsQIoLTmDo$(rPA3siax{b+_@9KxykkDlfS75?<5KV-E0<(A5KPI8+oc$ zM2BtfE*({}64L*q=RE(t)H1ov_uK$xJq;8jHDK35it~n-f&2DfFYD)nsO5qC*6{ry z`uGSbbGYMv{)ijIP=8zuR(|P<2IO2gLN{w%aWCUS<7LeBG)bD^|FjFZu1O*4&UDHQ z=tfU+K+zi>>2rtL>*L{Mv*C0&-FJ2zLv}V5IZi6G(+H?8E>lv5t3w{!x8gzF-QqW^ z+N+nlk{}DnxebpmYPQra5y(>(S7#hAt@Cn(m0n0cfBLU`Q)a*tAL+M>=@N~}j+D7) zv0}g73QI`@*8`AnHRmYmDwi@H-g^>2g(eBp`U^ak$w(ZuuueIL-G7A>?zJ^Q&46i* z)jPOGYsik2FJ1#(kYu5MnCwPDsp4Wjf!Q@1wDSk$h zO=U-^ut&-frrRQzOZVZ{=fi1yOqcX|&M1y*2kGB}xmOpS+r`ypMFjaH3BM)3cs0Zy z(L3#K4Cy#6xRh}vZ`=}3M6c5Zp-A`TF{UKGa>Cmj+KXoqb$AQ*Ronf=(2t&fY9~Pi zrFbaU3JzC$O_!ccEcAITIv+9AOc2|L4KGJ%v8vco)lT0(_t?td)-Zs-MxkB;B(wr>!U+Cm#dSJA_wl)g z+HG3_zT`FDCg4xxe+``lsbsm^EqJYU+22>(RJ0%v?ho-1)g0||E7jaELz@czvhMo7 zlERtf!Cn{r#7Rbo%M|$80J%dsD<;J~1F?}h{()!x?N8Ke5Z?Haj7|Sx5Y1K$uQDgZ zz{PEmZv5=H20YGP)?O!`dxFVgwzW0Q;fnl+SaR98lbaSek%*)ZFl!JdE*k*DoyUfypG~$%P!!hYL=R_ zj)z1>lL3c@p^brO{_~Qn2u-Z3CK^0OCk#%%14VE$cLzFwSk59I)PZ{3m?@dWVm>J> z^mlw=ne0!eg96<4a=P>Z*Kq3l>BFx1 zR59W26`B@H!;;QJOm_+EOYLVqT5%Bb^VYKlMT)v59*PB`ojRjOG0Q6ZMc$x#Mb4J0 zj%ow!)LTK6^&oL#L@Fg$*85-?yn=2oYTemCd_rI!aJyr+2 z;d>V%@&2+&c@zn~A7(;s@ndL=e(D-mo|=-U$#ADSZ7YGG7;>T2!`BjB)cY(}!^x4w z1L=5h*KK!55;Vij#1;k9l}Q8xU%rGCwaS^q--)UEIRg2$eXu62@IXr#GONqj| zSwso=atBN-{b+4-e^8x2ASk!Lo3^VNtrs|$t(bs!&>aHjsTWr8#AYSluIUxpJ;|;t zsfY<8<}jWPc7vzv1j|7HNt81yjd|=Wgxy#F4pol!M?r!vNkenPXXrUR`mhiCoi|!a zAxMWH`IR|kqW+Cj{e6|z^07dvu5*I0x-sM2cUs@uL^b*mF-WuPNDA}EL+;o{VBIGinGEQcEJKhGm zI-T{YqmB-A9+sd#vI!;=&btdW1EDbRAEgZc7NS~z0Qqb>@@~5gNq)AKEzyrw@3HWu z??N#hdDyhD7Kk$Sok6!N)smOnd6opm9I2Kd3md#G(_ioViU70Ikj?I(8}ov0vYXFt z32>KQ<~^0)_EhS@nOYXcpb3T_^muV6;~8E-7Bc=y{vJW761P*032u7j)Z;O-T{9*C z?W4_R907532;r?&cOHZr6i%plf24#~p(Jvsxv=XtPUx z@XC#(fq9r|`|%|hbr=8W^3-Wfq@(Rd+@b8Heoo*(mS()_K4`ds^HiMYvl%H_thinT zbaSURgf;pTSmkcY*Y@P`!271Zv-1a=zHnPDI7`HC{Q=9z4X>y`91jP?hVnc3tE* zKSlXV8SEk2mn!jm$N8dn4#)JEB29WiGgqIE3wSTb^+a z>F`&uk$S_L{ewtyiy={6MM$ma@KrXDSYLom3mTeThL2IKc9plfrZ!@BYVQP;2#c z!UvG`3g9|SRBb}Ar)aIKGxsaYNg5_^^028*j9}5azK)dcZ%~vUATu@U#<9>DD}5LF z*yeuN>{`R?pnN{$0cK&tgjgAmo5`5|F!{>d8PFSD3uc`(`;Yp78e zNKE~w?YJssp2i=9r3Xo^lbbtQ5WpfQA#}Tf2R!m4f0mF{)@W+Nc%$*DUf``W8nwJ@ z+H|h}HqCFN`HwOg^3|qmt6?)W|^2 z?wy)!5SEOVREH`bs4v<2?B_bqMAtTUv zcJ}pG?;`vWQLD|K7CYn6eywO1Dv;Rbj+rsV^uxGEhsNquTnxG;FcIMDk9-)^3z_FVjn|{Ee6- z3NSQKeqU`}oq^_D9h8FNoXD@hsU*&dk0R&uK;U<^&hhf&>ql`GP<90SpOWgiE9lyjz&Kqwl?iFM3gJW?)6IvLV1N1K;gogU zlPu~*XE6InpwF4^d`wc78$`d6t(kHBXQ)OaqG4;4(negmup$K%fJj~fY9e)Cy6fAL z-Hw*92NoFW9N6O*9^xW2LsQ zWQdFRHrP(_AnXVPl3wVpZn+q9@U0l}n;TnCAZ}mbm z1+JCHj`O?ep#qRXrC_z|sXD8rTyOj^GI7gOSc!I#)s)l(RfbK&n1791kL65xP+U}d zb@AL)Djc@7)#)?|n={Ec^)oKZ+@Z}+vpv(j^FCU8G!s6`gpH)rK98k}AfqAETW_|1 z{8^><#>ch02{Yf84wX3T+qX>#4GN;^yk&@*mf>~G<{utG+X-`z~1re71sj2JO1kZF`Iy^Ca$>8W2G_co%fWhp6$x{Vz_$;1Nv#%h}{N1cAA2k_)n zT!%(iN$2m}5$2Ij6+E_ob@O(D9GUQtoqtM3!O)NTle@A!)->nib(>IyI`~aWvU#(J z;qTcZH2?0$?4sp84_D_m`V{U;#VuT4T{Fb1;87 zEgQc1?!ucF!j3O?D|Oe$D5+_FTII*|rItugL~HyID<7Yif7*C4lkN_i)#Ar%lYE^* z0m2t{Aa4y+-gS6`eI2VK>$Pg%I^f=;Tt8k0K$Nx=**BaYYToz z+)w%jyuIJD`Y~g^7WeuXUt)XxOReR%@o0@1{602a@$fU-ERsR%4FfyPud!WYxk|h% z+@=G`^@7WPuggG*qHR@&bU&?*C~jBY!7G?_oSM&rULOhn8rR%Qcd7>W{a=KSsO zSa1q=-YVBMJF;u2uu!#c-ZU}e#hm zLbSYaDsM|PArObl*7tn7@H=VDz~4C=yIs#Pqet~cKZxOo4FHxdBm;Z=65x1Iu{5r% zf|uWuBJRS_>hy{#^snqdkdSDgWYDbsR@E7*)6eM<=v6K$ft2hof+k_qzQ4aGxVz6( zC?C=;?*XhDo#IzEc^o-EC3U<2^f_lgjl$(S8etC>*NmalDrPKRasNL!o~aq$MI!*nyS zl@$FxIala2Gxq0HgUB}(X94QToJ52S)>>QK2H=vB^Hp zUaK8MdQCmG$eNk^>X>vO@aGKn5vGbGdV=gsDz;7Dq*GoRD%I~+Qu?b~)i*QynplYw z`!hagggPnbp?;E7EV6BPRS1YnSL}|!aUFRqIAkg|oDH~_#`6VWhv^v#DJ2vfUM1n9 zEsq$Kw%7c;Fo+A4rtY?sV}$?IE9Z)NZBfs3-GGLZ3Ge0JdRXT^J2Me6Tfqgt&u{>M zsr_$%i#*hPYjq=846W|71xvL^n41Fct{9IHj1qSTHDmM8#DLq@_*vL%=m6WpUJ+0? zWv8gm7VfZm-B9|bf%ANTZS|EmcqgL|N+1}r6$DlTd7E7cf<(l%0_;g#SgFG)eE$*u z?4eu!vAlC5jGssFbpwOra6!rd_6WDx5=KTMr~m01%I-Dt+A(*->S=Rr8#5lI@bI$= z^|MYtd||>@U>x&UE9HQ(zx#_aj@@bV!>Nv;Zl_3Tc+bV_wt>$%+`J7GZ3R^i** z5k6t#-aEYR5Z;e2 zn=}V{1l!A$=fvT>gjI984*bX)G4xGMg2`i?vFw=^U(8uiK1q++HLj69F0{n$q~3HC z3GCc9#CB~gm+ZYT4e({gg1N}G#`8PspfrQHheKlPH`i-xPg-6G^3`t#dy|`mGOPA! zgltE{zk&flYC+K+k`f1)PGOs4b5$#TXX5axJQ0c-7Z!@nYC$V2cA5-Nd-Q*hz7zFe z$7=FAJX63+wPh!7EyYz^X;5e}-5r`Y3VA+`7*U1OYscG_%YRaChp)GdhVB9N@nT(A z8z{%INqxZ?YZRcK3TUhTg zehMdFt2umazCtm@Ys33Hg5PXtWTATN zzzxUbQ!7s|d_d8zIw=BC-X`H~SpR?}X1RSP%ljCUutOU|0d7kza86!*Xv~uO&Q1_; zW%{g>mE-&H04Ukc!IylTJUoWrqKes_SncddK6{P!WmhWq1P5 z;I+eSDojpvwsUe~iRfF9+7k%bsB{#X- z?c|r?mklQ?BZAH@(kWLGDx2+Pc~tHZ*y56$Db?Du#P{3Vuw8 z-!OH?$h6-^2doBmiZ%qBht^&f_WQ(psVqA7#-i*;c-ov?J3AzLW$eXo84RDco&g#n z-SNUJsi2nHgYReUs|{~bx>dr-vk*-mP^ProFNZ{+qA&HwBjl0Z&9U4xCmomkSb-?* z1nSt{Zpgs=gw2t_SoQN|vz*2I7#5rIc0e0b!#+6xGnP{@CmMpT)#wW(iU6Cf>ufKYetS6f{ID(4x5i#z7hYpK) zpFg4`kLQ;gTzRsL`6+A3W!E}ky}B)+jU92%taL@QtDF2DN0Nz#_$4Agd?dFyR;~I= z3Ig&jWyRAYuS~}${)OUZr)2I*>MU;4nfvtV{EH4ZKcK-jnU!r_yQs3{>iem|dt^^_ ztesock$&V+`M>_}yLgj9uKD^ z4#nT-hf22l8s9x0IISOB2}jH-co8nd`dg}{xt`6KO(lA+*qI1rTY?&Y$8#{x1n@VO z`&<&5xsuHF<)BPS7$Yq{FCWPHo5{4ctv<*{srTWU9ZpscpUzIq#igeyT`tWYZ*rFd z?XyBwetaWy1*1rxx!V)g*yb0D*ffT3<<5ght_FC@l~E21YS}=3{fe;#^Syx^ zkBqOAt%L{39h$0j>7sYsYfgNa^KOY6Sj<+VF&fsG%|GXG4gFWA)I{JuJQ zbzn9SL#in}E`HN?zXT1@Ddeqf6Ev^$=sWgRXR9sqxuNt3+ghlia&4m>aDMi~{}$e9 zg+`SK)_)HWG!$GFsv2?fVe8fRJ70a?&2XTK^ZwF&x^!fc_BeXqk}H$iac#Y(=5zL> z5*zHTVH(%srmiS;>@Y7F4`X}f1u}}lz4zwrziiNa6-Y*f#iK6Ql})Vp zXTZy&-1RmL1+{y_dE~G8*YiPaEKCn=Tkf>EKeWEE_kj)++d$Nu(+ry!+V2$-5?WaK z)Vw53&=x7waMhQlsugELG%O3CpM6$|{+upvW`c;S4-MTwtuBzPN#MgdoZJ=;$gnxq0ZI(1y0t@v7jh zO1bH|F!WY(Nr(}p!)a07$?>?(D3c1R3Q596O#uhEm?18+dEWx?8&3F+3U&DxylFg5 zLoK|AW|XS)cHnEI)n;x8xL_Z-_>2jwrT^)Q&bGh}?fIwVV{~|f^ z`ayN9$=vYu?~66^$Mc3knd)gLkD+QvlwGVB?^fk{QI6yN$C)G6EPQnKq2JZ|6*W=v zAJd6qB+H)?dNnzmrm5JEbA}g zqVJ0DB3^wFPzW)mb^6LQCT;B77;EWg{|27IP2MJib2-aYOEtoG+Js8Ud+p>%9&*;N+ z-1M4t<0fx+k|wn>Bm2`!XI?>=A9BFLo)47vgWNB6Nc2hGWoqBO5ie^q}`PNxG9aN-pw=%nGY#xHrVet7REN&kZ>_`6(NsfAZk z!X-Oa*a<|tPah3t7sPM1%h5Vlqv-GE^n(wqMy?E06NoYcl%Z&GQMk4qwAk1L|0eu6 z*j+z%m^)D>91Bx3hNrqwF9p8WTC ztGdpef&(w5`OF4)aV87qs;u>`s^uMs0WoI$CajzQqOxW?<2@h5+s0~sl?)L!Ey@x0 z95>EQ>clEOo^z;~8er%C`qZDg6%d&0LNg|aBRBYdu=hfXvH-nhx?~^DSmc>x&Bi(j)G!^0yzXxRiGI)ZqL~MbP1l?za`u5R8jk0Dd z3nI>35L;zcH*J#52YRe)GFUP#{TBV39!?80fn~>F?<`7FFRp!VyUV`ytuW0~-@3s- zMbJAR)L!f?9}Cu@oTOa0EuszYE*>p;foLLDN$DJeDg_R-G}pqE`@yUUyQSi+iT32N zm8gpVtJcY|6fO*SmKOqnH*z)sw$MKCIAMeeR`@($@9nt&=3FJ281PPN{?}N)~Uwr~9g2qM%;GgkGuD_los+ z)@~{6d8s{vf)m!O$4#AOriSKW&R_9ljG=k4(^XXBpN++<-jAEQmy0YD0joGRt}F%^ zOCS+;;j+;ul5*l3Os-uH1Nm;es}Y|v+ez+JnPe6g7&?IB^h^CwVT-+3BGYyWg6j&| zqE$yOjGbAUFzs`oeQOBR9&*qcfOEoP=o@B+7eF!}o`*NS(%@%$JWq|cOA7R?|LfBj z?_MTt`bar~${7YJ2lkq&W-QtbeVrUCR{?wszc|6P8XehtH#_HxSD%w1>l^dwHYnghPTyl-B&pmBIuj7kU33i$}<{ z>Br?4!`hxHU&9%4-0zDM6Wl%3!W4_&|JWh#y!%6S*iHIX2rFB4_>UV>S;%n593hgY zOzw1!{5bY1Jt9axl-yOi(|eklZ2v97$#LJ#w!YThCMh{d%BUri*Ws4xx8J+hRV>R* zTKDr8d=Yte;)I0KaZ-aL=z1j7>90jDuvO6gvNsGm_ZOtgs0>1V(HFZ;Hj;#{cVt9s z^?G}^MnFtkF-KaeMS!G~{g=Ll=)y>lPhE)0=Jc*4*(~aB$~4u9FCij_z;6l!o!O^q2Umit|qSqOV8_D#JX+mqyv-{m* zSP?wOpRQFuAk@c_#U0A9?Eav<2Bz%IaknFJk}StJFSSnESyAeIDqa73qrcY0kLhdTH2d zMfB#4dvi>s4-;G{BrEzOLyQ)}m}^TK=+@i+CrsJ&P^jmsdgbF8EM4jz$h+ny3&xl` znm7uuze%_Om*s!`;@xxx>TKJ4;yJ-AkcQvG?twtuOn;K>0*bYqJvJL_30UWe#HGZB zxlx)V)>2e5ZYcx^dCo)(r^MLlx+OLqc_rT;ah^4ImIqc{bp{{8_u!J8xMo(%vsR5Z zYZhrX)7|ZfVrQVWM2_b*_l&j)n}*|nabE}#yA1^V(Dt$IX;1nNT$<3-^iiD0K^B;T zNnZZ-KV~eT*KVp=FWeI#I-wqCG3k=b&kwv?bEozKLTp!_Gw&){^#qCm0f1+hR$!YE zfYMAo0|Nn1xmh-vm(ssqlZJ1bO+V*|{N_ycIQImzH^i_nmf47@8kN0Wk+4kTMUBAz zT5c0cn=4p`tAw+c6%1l6p9ji#Y?wlX{;o#csF)jl3TCemd{zz2%KQXGAMeVcMnM{3%>Ez z_B#0sq}mQMvA)?#nNW(y4SDk4Zh+lC97vzd*=#{7fe60y^dk3_m$ub7aiR9#?1uAY zJC(Q~!^SKiyVgZ#?&k~vg<5yOG??G2&|sxJ zhce~b!FRuCmbaC@zQX98Cb%zbd?c7~Hd7oi;q)M-cnfc39j~$blf5<% zC5oD}YuM$zUGM&xjBXFu+pg(yX@a#3C@}gYaVhMi^jH(?Y^CbI%g-OS#ldO(qy6ck z?&t%KTdkoe=b7QdM){CSYx~2K|J%Xx6rmsf4_;mfvj=IvAAnY6^2*0+*vMfKZf$40 zud?@5ymm7mlO!yitk)?;uy~E=fbr!nlzyp9v&AdxavJZ{O9rS?ADa7bCY~g_Dcvp# zK+XJnzHkJq&iNmDB1h5nf0FCFv{Cr4?cgC6v7klYY;VqM#21@dAYRh##gFG)D zu3F0*z#~TQ&r&o4bnn1HwRv~zUnY_=b@J>5O10nRKMTV#rgob*d!IAao{_l@h76`X zROA1ud(B&+zfp1nb=xcG~XD;6-#$ealv<9e$ZF9Rd*7 zr(4xX22$#+oU;B zEQjSjF)5;3B>+BGft1cyXNFb?T&(~B&^s>ckjbf*?s>KRwsl$~D*k5t^}1vMPW>J8 z*#d!@BBk1c-oH||{67GaKyAN`XWIEoJnd1uV;9mA-j??p}u@|<*6rWM}~}9edG5>rqsuSe9k`AN!iV@XFGVPpR@xLY&>cat?m6^cxAvk@)AFlrR2{_<&;<_^X zT?K0}1w;WK^#wHw!@(iGF9JUAdC#j((T@uGD%?dET~xnh=ZA#|PzsfH&wu{&Yn|Eg z9f@S1&$9XjMPCi{%XI`Pg;9OZFuyJ+7*KD|_|-#oZoT!^`V1dGOAHR7@vJ`qi1$$8 z?dy8*Aw;f(Rvke?8iT3v0Ty+^G8T%(L4!ME#*F%ndrD8?_3t_@K75l(l0xbm1HMq# zR_+brBS-#x#ZG_vg(m^uYp=a3UU%MkXT=H5a6lUYhkn5F0izk4&ZuR+O6TJ>kH(KT z`EU^Yd;w9uy4m+&c0T)DW6TdJp`+wkN;>*_pnBv(kcZCbmd3_2Bcz>={@|&=Pn%`o z4UTej*DsoQMnf{;i~+ZlJ@Gt4;*k4 z4t%pOdLv(6)>Bu08Z^&nXw1G|sGbD3Hk_>AkM}d-s-6Bb09PMe`Q(mF3u@bVs{?Pi z$ye8(zKuPf$>7k?P<&)7K8h9P%7(!SKPg|*Hrpqyk`M54pZV&0MqhY?i7)C&>%&My($|+l{93!Dgqx*2c%Vk`Bt)IWjF}eb2^d65}3Rwh7+yOwQDWn*-gO3Cs&+_HbS#-(-FYWOY zp6-3e1CDqg<@hsCogAm}x%^?>@O{oCLE_A222_>ccsjX%K^eEjua|8;fxAOFNB znx7Mn`ak~hkISF``Jb0Jz3ENmqaXcf{T78EG5U}H_>c0jkA1AXGk#dcZxIkOczxKF?!1)`;b@7`4J}-On$tRbW#gFBD-~%5hpZw$}i(gLk+X0tdc3Bh#_3ez$(6nbI;A z@ICCX!|He_05}vL?uWkb+xzIcG7{wiivdAz0U4UT z@P#idfAcqgQ@;J}Z_j96hDlgW`-vkop#!3l}7JgSa|5weHZ zAO7%%tIU4sOJAyi3i%pjT#`0^miyD6{&baNW8W!$gMuL>^OwdCYDxMhk9Z}(;_xKD zg~5n1bQfQIad~O{*b@F%O z(`bgq`b|fTPV)6l#yO>};|I5-v^)4l-{=b5I9v7oI_KVd?_K4PUa>m@YjEh(l~-O_ zb@_k;4ybfG;e->)FMjchN&_|mPVl_&!V9a8|H+^HN&O{F_~4aaEsJ#(?9*w ziZguaJ39!5UqIzpjp-X-|3>}Y5%lHAjAhoWSyhMel}@lb#^p2X^Z^cJ6?{MMZjAr= zpZ{5H;*m!jS-`hj!oi#y6^i2LBTu|3v*r8hxX)Y# zF#QU?@l~+;llbX&wDN1CY!>Irrhf5@U#!l+uZzM{pXA}}v(K*l_}=%v7r&yrUj2v= z8T;AKepY3~IJ74tKAZj3uYI)!SmfvY^UtsJQ2$^5^3MKH$J;1&D7Dm{A&gqSud zu5O#KHf}K6Y6IuUVKT;q@Aa>LeQiLA7!$?=BP7QC+H0?^j^`i#;U6lq1p}D<-~avJ zRgwJC-2VITUzO#cgAR&c&)cC2F~@V%QAbrclvFw-1e+rkR7m>fWc{Qt1ta8U^+z6g zWHsg#asLDMFYkEAJF0LQ14jox214R^3DcLp{H3ZGl$e3>Eqg-uidVd%u1auL6rOT1 ze3D;m6k%&mXw6Q*JK~5VYIzz4j+W9A_M}PE3m9{tE zd~>CrnbJ8CEHI3Mw7>n^zpaLb)8JtD-EZF-XrLJ*&Sut{VXTxHP7LT# zuQ@7ycKOC?;MAv-f-s4aa{{iE^wd*Nt#ID+p7+F0ZU3k`stg_ycXj=tE1q)-U@{8& z)Hk`)j!`vZ^7TD@7f|5O(cw_^$C#R#4u!G6GqNCUwe?n29`Gt>Da!P_ykvZ2-OO8% z!jLhV47cCvU=Ybaxfd+UgTI*(`Q!`*t_&*qVQ2+5#v)KvUmuLH8LQx!&cWY!^li*^ zL>qONm(*c68RBc=$D9~oFvvHjM0de}3*HK@I2$XC0t|XZwj|@AtLVk~&<%0{E+>X| zc!ACWeQ>lz6S^;05ipW-_2{CR_3K{uy7KS;{_j=qj1fK@87E?#_)TBHU^CDa{WJN| zs0`vA3%bA)5Rq9p;_+E$omJlW#y8er()iRDlzi=LU#mYrr7tk)q4Cl`JQmDZ z4JBU!6OQUlZ+ugAwEOJ4PsK^O!0Mm>`JZd>VIm+2yve>G$QZWYe)}4vT4A*EivDm* z{dyukw+;t3?3iPYsk9aBxFnzy1i8;l>`2Ep`WN0jIj##P7lgP}y1XZ6?gFk^=#TevQ-k zb8;b|6X1fAej#OQ)%ACyK!`(4u5KGI8#g(_L1+SI7EX96CSxP8V4yHBjWb0*It)04 zV;C5I&QMSxQl)_YC<~>wq?gWs!6#UfU*+>_cV=Z)D>xB9hD7MVq6qpO3gb$+7@g05 z{_{0TC$u?xXP_By28nV=j0${rnz>V*QJ5hJFuwJzZ`CqJS~=m8C?nj=Kp0oBDYO}f z@rrQ$0-%I83?zrfkf0a%W}rT?Y_`M5K0c@U?*IMw-&c-{nSlTe4*HPLgy4VfbDt}( zeB~>vu%nlx|F^&G?NwPROB&=_xDx+ilsEu9GKSf)>OdyYmjNOZeg>N{l^9!fwGkx1 zi|-vlO#lEtZAnByR6{@$^knR;!f+;xf-$z0S3NvpaQq3jB>X}fWsJSVILO0)r+*m_ zD*6Dvph%UQ4dly~=oQjP^(@GzYn<4OL|$4ZU<{Jr|sudcLU zzy*-xp0Rt&o8MCI4%&eOSB{pGH=8AM_)E6x7Q@tOwTuDetT_$=fFJ`+;V>wnE7{~E z(MfP+tb6RaM|Eg|U%CrM>MVL2mpyri4()|T9(J*Oae zvQhvK*B9*dg6hCI8v2BGXhf#)8Y~V)dk!711o7~~Z?sZR@|=zt9K0~OFkbcv-Oxzi z0$mQCT#{2XGB)Gkc=1RO2WMll@}@mJjR&2Ko0DUM?zr=gZm`F(s!Ik;MmRF`=sMh( zoNTz!hE?X^EMR=Y(Ql}7sUJEe8JBy3f=Lwmf-9gwBS8Y(1Q`-KDI+@q6Js$px<=-W zOTI+D!4e$6(K!5SDBhC8S4TjBCTy^)F_^sJGo7}YYD^OOfg_&CW6!}L|AI>agFN)Y zL%|ff>le)h-vR>kVK>O0;KBs1tv~b`PmT_sq74~#kNyHfumlG9jz{oDKV#cJf;IYP zJnRPkf)E_1Ac~JOK6g&VMK9rh~ zV00O_WjT@x{8{{iR{DYm1I@AQ9|~!FXhZ3gNv?3q)d|5JCnzP&!7>I;NkEC-=>%%U zPF?kk#mb7YaRwZU`kY<%2@gr0GAmPz6Il`nk_)_HEI4ApCY;Ue(ew1vPp?Li3`mKm zzVojZwEodIN5rVwenNNhYL!V}j3&L%zuBAM4$ZVP1_6$luAlJUHR!{je&s7)u8s;# z=fn?3kz?{Lk;P;G`PeG+%E^Ua_tdA^Hu@#rEi~(`u?ngz_0vT-(7D}rYYa6btQ@^L zaX}1yrnBg2wZ|#~zM~Q2t3Ud0cK_{ff2#)0Iz#K6xoc~MQ2;3z=JW*MXhokmq5}^& zu;Pd>#&94%cw4;yIkiq@YP1 zDQTe$ty3rQbhDt(mXl>~1UwQsQb)P|$RRxC;~o7rW_kKE5wHS7=fLnw zqxc6$w6%3;8xdXEdF{!<=R5jiVny!Yg2uL^=rDQ3C#%}z*mjJS4Dy5)d;$F;n{*%T z$Rd8*Dk59xC?#F$!>WItH3b9`{u=M+Ap}6O_ep^Wh*brQ7esK}l%wAfFyt7`Fxl_= z`Okk|m5V|-zraBgKu*=tKX@Fyy*JC>jFqJ(3ap$l(2shSuq>sS)xd|45EzOqiZx^R zbGDqfRR97>Sm8e-46t(-#-$yDE(owC0ET|xU=$i*phJ28zYm8aqX0gv|!DV`Qx29DK;Zb(xPb=77-}jsh{W zd3$^eU_TEkg1_fKj2T?uWhTSu%A=(1{*0GV$>4$mpzvllu3)$_be1g99Zk@i;b|vu z)t?>4-F6w;`>`$Ul_hQU2N&((W0eZM7+i3bNmh!`F6*0tFnR(Lb@5Ni`s(SQ(ayeV zh0Z_fDdU7Bbp>=8V{L~+@}nZDU%iBHlx;$a*kHe$8Nz>TS2KY3lQ;hX2_!D zeG?+%-ampvwox4^X(PZAWS~7ef-XZtL)F=(9CB#vm%i8$^pz*UO#sG`l3n95enBt$ z2lmks0K$Pxn3bcae(*|PYyziEPSH$o)u(j`e$2+U+vbhfipY&_> zf}Lm6O?<#Wb9TpM$o2-hgNGK*h`?KYG&g=hm3zVS4m<8pabe5IAs)l;r$7B^?JM=? z%$ELWE1w*bBmI+SaxRE52DGGy61wNTGRZU9B0J=h9Dutjty~HW+rl7h5>kItGVQGOq9!d86TXV%aqf zbsInT$qNpXff2=E82k_@OUEziHX8-62UpTs& z1vA!oN4fRUpBOg%IIP70uHJDTcuXE7SA2tu`T`P0m#o&=Ui1YQ=LpQC85=UhNRv_c zqanjAFakqjoZ*kp`Wr-Bc$3vMT#TT5eUndoWi%&EnpllBI1C=AN@nn08~J9~@M7FJ zeFhG08Q3_`x5XBlS3EdhG9_@tcYO{@#yUInQZQ~cP5_7&_^6MhAzbBwJNL=C<=Sur z_Pm`lpf~tOx6q9KqOpW$^h8jEZn;v27x)D}d7(E9zIy4n;ct~gJ%Ngq4ne=Z^usaj zANoyS%`VXqO*p+Nfv?2jB)`zy2RcHzpNk}2vY+^iK31s60eJLHJ2EyD0fb*kG=BUhXKX2)z>`dzjGZnDTIuC)uljAx zqkDcK6#jxUV;~P?NFV+r&zUlxT-ee@6MPZeu#0F-x8N?}CpjSpRy^2Q{q^e)8c9hb zenCncj3>uLCg=ou&@a#IjHG|MPR;~)WD{LhrIkwo5kq%F2xAC117YdRULXcBdJe&v zRhv1e!{AwIpgaVd#R+ z29^~z=Ar4_9l;Dnyd(z8DYV?RVxnH(k)oWe)`x- zTlgeS@IwoDIXJ8@#vK31qNQa4tb@m9j+~Nlo8|Ae`)+ZtH_j@=_9J*`FTm3GYhU}? z>P*Qn{&TFBfd%oL8yc!d7tPk`nDM}aJzy`$xEVUSah~eXV>U!xPKpD@YpYI{yR{bt zktcx+yzx98p7EkD{Nx)iK4@$FaN!K;Fc@fI^^j9CesrWi=r4#zYxEWSzNX5ue02rM#z%hiCy_y8g%7>7`eOWaTEHt%V^`D{K;jde zQkTFW=MvjvH3zN0Ko|Y8ZyYxrVGr1BlO%eDZ&shQ6|l3*bfv97WXnpBKG|gnJtVXs zPx%ZN!M9Z+`i-y7Xw)-f!5ea6lE~&HZ7ZNv|NLGQ$SGi0qI!r@5V3^fGX5MpCr<$_ zwYxv=xZ|pj%A-hTmXwh(Vnp}dcb_maYgD68*fGuw-m<-@lWEKZ9Vek^r0&PRo9+mf#u}gNi;J5&RfV#>4i6Ssua785JD$1K$4O zbVTQA?BOC0EXIl9*B?cZZ(Ne`XoI%KK%rJvO2dU7H_y7cJoNBG)j)7MNjJuULpC;s z-0X+pVI=VqjRg)IfykdDMk`9sVQ@NVN=77oq6Y)Rpcp@AvFVIW%k0}`mz!c%v48A| zqO)>xftQRNgRDN9z{8cC<*Zr%`bH-X+>D>$!Ylp5S3BkKQ$}v#Nrsk1TgJ&4uLwD~ zKX_;c#Zc-?04wNW7|Aljobrs{_Ldo40hIb=22D60W3pr{kukF~IH9+CoUk#r@q)K9 z0TO-TFgP7SN(O0UjuWLv^cC-BN06rN^Pj&*@TfV+%(0+}e3Jux32gC)uG0Z@q5H;< zrX~sSR;G?wKRtw_z#repHaN3yon3a`Wv4PUG^6T)F`}2PNn3~)ob$tvJY4R%`<|-XX2;|}{p7DP!bLyy$=KOwJj_6u zF3>;YvhqM5$hJVh*w7w+#zlU}nKont?(~yx`@>th$;Q(IZ6x@TS+b!II2sT8hxg>f z-;+;0S>4PN1M-+#t?OYw< zUiH->GxS-#bHY~`E8Jb#m~+lKJA$ZR)YS-eR;A$-K+7r9)(QD&J~%hLwD&~c$kw(Y zqt{$>RT&mQP)dOWMHGQc7_1QiB^>R9*43MIXyTN3V0G&kvc^oY+x7*m;_8)0?R;TqSSDvB%BkYoBiZC zjEhoBNejZsz)6IdLxDFzXJjdaWSsg;yctH$8P4*JQCr3&$DwZaU4g_ultqA{Y-K0L zi*W* z`s39$fuq;vCQY1FHru@UFj2}(8aZRpMxV-3{y8vt@HIB_z|bxaFFYXUg50EwF@V8I z3SiLR9|sE-y5g@O2YvBe;w+3uU3B$FU(t%5G1T~pANX(laC888@|w*@lJJegLRXGm zpT>fIZCV>AI^t>K4L5b(GSkr(PeTB53-m6l^|DQ4~$E_ zq%A!p^TtEh*@Si;oCI`qJ9%R~Xu?s!A56(=4mz=q+9mH?AA9t%*rr>(j+?DOS2~k* zw8t0x0h3+9Beuzv{77Wmxb=zu$vc#cQt-A?F@ zPyY0UCi)iClR1gaX4BXTvZhXs$JIE<3Lb$Wz}Lq3Q-4zK!KM%R2Pd>3Yw!jOKQkzl zr!KpcK{CFPJ>L@2FFKG)s zwJkXElt~FY$E}@|cxAhUkz>#<>C}%$!q+z2fhj-pz+YCL{G_3Kb>XGY=PDVCaY$(4 z5AOM#_^RXHU*e;#XJy&eII~XHtH4_S=u=tN)i$4#w#u@7yFM_3>VP3--`Y#^+xIbo z?(YF)pS9wEf51w(NuzcixC}SL$N_OKQsS=esF9&lo%l(9!U0#g)W##nmi20d0soK- zb^Yb|vRcCM+{UH$*%^Pk&%~wOCm8V4-c@~nS+@<_eY?+uJ*ciS{cwK$cn_)%cIM|; z+KHI0AwUWD;gx;i9gT^#|dSd5K3qPW{j7w{Zbq zU_%E5uL2OO!x<@5?+>hUS{e;Rb9fG_+`6x@WbG?`^x=jI&y-$tduab z+%x6Mv82!^e6ZyyheJB)S{820D@(Y~1S9L^HEEap zY8xkY5?;z;yZ*59#n1dH>+I7w65g`%$e0}=ByJ8@~#H}kT6UYCW7a(%ShB_H4@KjFLPU*ghk2Ub3VnRHRNA7<8T_c3Vv z2{U1Nmb7p8Ax|HJ?33BPy4t`c`%XBn?W8VTTr+{)#;<*^P8+7@#3f;PW=rXy!n~{nhQEZH@QhPFc>c1l9Dh46;b|*aQnswXZCQ9d z+x#A<8VJJz2uLHo z#LAd5#+E^i%MvrjU?K&y9Bg^awvGfwZpZX*VdV0=dg>cv;w&$d?G4M7>bH|^l>Ykd zCC7H%m2r=*aIg)K+f9}u@fqzoMoXfWI4xI-LM|hqS6kA=V_OgKv>XW!{IXn3k>p9r$wV&KgG2r-0UM{f@Ym1EOkk6f zq+c7hv7?bI8u!zoU3W$9=>R=7#%BWyt?|`_uC|fVccxDz zdwdU`Nx2PXtIN3IpK_{vXlSU~U9_Y_zsvZv|6S9P6hqhea~XDsk`u7p;}E5L@1ir{ z4iGs6Y>iUsioWr(b~;Lqo99*)xaj&sYV5f+jQ< z6p#~pm>eVeqN%`vyfBEyBjJyFZO5ul<>Uwd$rB?;k@RmL*}*Zv9hq?G&ORp`(2#68 zjK?^@1#EkvV8Wa1P(=A)GO`)e;4>KH82`!BvXU~i2iG6P=fos5Q)VogFHalt;fjuU z4F|HKE}p|5JV_n*;DRH83zn3y-OE##GjMK$%#qEkuP!}UR)P~8^yyVt?Yt2}=IEt^ z!04$TGR*;TWa?)CWNeZ=vX6$D2fq3eJd|bdp?>DeQ${!GC>hhYI`GT!xCfg)voq|4 z$p&1VWx!JgS$%(Kk$sR4Z#2MB@CgqHY&H{=2i4vRDFXiLT`PBE5wod7UpMt+-b z;GNH^2Foj`7naGHqOB9t|XCXwaJ6n@qvU`1J)Qy5h4u`T_TILZ(bQ z$d!BT(1H#Koav-9S?n=fl5g;%f8L02wuxQ#h8X?O517m2PaBtI@h2Uhv7wPRY#1ET zxGit$s$-n4#)%ee1DgtWzJR^Rx@ei7DJL6nPZ;`Q=Z%|t~xO=KP3_~gwNdgg5)K8cU~U5@jYXZDOa4y8CT4MFehdkyHoc$2}qZ2e1Xnifq ztCkpzus#B%9Vew<_)|I`kMU-OQ{EJXvmqn|15N~kpuoYaqZEh2xd&feA5hVUl^5j{ z(I;5J_JvF*?q^5P#Mz^ZS1!>69Wa<65Mbqk9)g3;Xu)V`;}ueZ!+>xM`Vv6sn-PFF z#bMOEE+&vctCf+^kibz;uO8kXM(x!>Lv$1HI8jX@mEk2}CnJ>Fn9e)*yz>5I-d}mh z8K{p}+Av1icxy(G=CBz-mEcc#yiQAb@DMGJKKkhD(A4#5Ww-c7+N2z z(oWw#NCrRj7bK#U*ZL?K2jas#0u%TN*nB7rj`)Pv{fYd;6Q2Zy5@U*o#&KO3vB!cp zQm%xNEi$DZne!}A%pix%SrLOj+NeWTCHlf)={HxqPw>OcMtIKirK$Qdi$*_xOc|#)I|} zo;g^@fsq&ZN#w_PT89y9zrBZ(adsl6Y*@Od3ubaY`a})&84P!(r z-vkl(>I3h=^_MaT7c{_MGQn9IA9*5^UPnZ0uL;uGe~fQtnB=fEQk!p9a?nD1Hj`d? zV+!vC{a$xRW44Yi3nF?AJLFG_c1e zJjcbGb3U!FJ^iAmUW@g5uvcL5i5z7RYAo`|HTto;Xew_If7GWB8Sv0O{Vt0?%F|w< zKN%r2IkuEHufgvTZwL8KNy^I5&`{;M_IQQ7h>r znCPT@;sF|i&v%jmFF^L2p$_dF|UouRdxn3r<=XYZ2%0fk3&IR%Gsqs8LZ?=AUQkv zlz`Lmc~{?nU~s%g&8f)8YzBqn0Gn`&z$w5z!C(h72nORQdCkk)77Qf^;M)QSO7XxZ zRA3MgPJ%=6)kXqJ$Rs#2;8s%ddjJH-HyQ*yk{PlU7fR>!d>U&Ck0F!@(-Bo%S*wA}r zCv;msjL6a9#2Ih6q8)zd)3`ZlbSBK|@4U;-)j_!T2QS9fDn)+JVKA)K^^bo8Z;YDu3S*feKj??IrbhoVjB)CX6YElS{d^Lf=1(6MYw$ z!h=5IwLdBEAARJ}DhnJF=Rz;;i{EoO@q`m=pB$cGpFFbzU^3n&8|W6u9gKH(pS&M^w0%^W#Cd~c`3QGbF9^rEY5k#TVh00& zK^}*NSLoGFiG!<@^31LZ3`}N>QOY{mMjkqo3kf~w2zf!{Hs3fcGR}D`6Kt?Y5`MP% z1D-r%;~z`_@eKmKY=F@CQ~LK_=0~clRp)S_=hZl{igWdk~9?d zk-p=T7496TV06sb;oEdcue5dW&Y+f@q&!!^EBT+CW`(t=|BX!ekdn-tIMfX`+@MCf z2E-|fUWb0Pv>{W5XyhF5qF%qv5C|M5Rm&KY>y% zxpK&6qlm2WuDW|IK6)5Po9|)TqLs)hLU1Y5DuFV zi*PBfnKS{H;E_gLK!k||k&%Ii57-b2^ppq*x(HO@XNg!s6OliaE^LX_QSj-G#P-;F!2^Ba33*8StS@vo*(2L%ppLN!WaLX|L>}2-JfTzIvE{Z* zjR72!9k`J}`~e58+9~;C)d0`T%JEh^G|JgO+a`c*^9K%|!8JzXa2+IX_)kaR%N7ZQ z;SHaW!9%b(Qwbb4fef<`^oGwMtK{LR@K-q=!2}wT4L`a@Z|=P7&Kd-1L(T;Dc*qXY zOL$lv_JOjM$saxtUgVRW_(qW6ll{{#+L$2o1G)0$ClbgOJ4xQ$voq)_(P3jV(LtA# zm0I{5{gc+Sk=p1aJ2e2veDDJwtO8Ex@&FP;#&8k_iF2_!Kya-H7>J0S6IO>p6IKkk zid3-+u=!)!>>FC$`w0bGJ5!Gq#6td_yde2oRYByAW7&du_h6ZdKK z35}Etw?s)1ZM9Ge2`o++z1so{zOsG;SR1XxfAGtnU{pdM(4RP7UOBtDdB{~RUT1Tvv;%>9O4t$;D~Xh9J{{Z!--mw)`uCHzRgeeiTU%$zg(tukht$89%%<7UShmIXAeQp)pAE zCH-kI1Cheg!qtQaJO=fKyF{zPbut2_>cu=>q-0=~`G z+tho4M~N60vmpI4O2%MSWy+MPRVnhvv;;ih!veb-|`wWRKxcmvi%+hD;sz{dgsg@)IAjC&5jSB1k4bJA?rO z0}c!?r%YcMCMz%bO z(@ngm zz8OQ-fj4=P;7k^r5i&7Dd-cGfZ}@1X4&AJV;00Lv$JaJ(GM`P;hcV%c1g>&+9!+wb z`hr7_EoHwpihn#O-sH`Atu|Oe5hS4zTY2=+M^}842ih68t0W)(ZTM_t`VewM=F|gU zKAhKCd!1@$>4Bs@da>z(jKq6o^9LSi_0z~V51mYL{=oPf|NzP zA{(TzNcaq7mq=NMERs!F1lD|sc$qCoi3qSj0+9`oAQ4hXvM@L%pqLj!gl%lkRYVQ~!FZ>ZzA|u7Rkw)6zO)Rhl3E@b9lWtPL?U^}|Is z)KPVQc+T@=R@QXS%!4wpRe({i3`Tz8?xh<|o#Sdi%!Py)02~WQhf7FnGBTp!&=9LY zGOQqU@a|ckQh8altYgzb8gA2hfVrn|R1TwCov}irh(;GWSEHgSVC!C& zG{Vzh$dd{xzvMR3V|*|!?w9ef3by=F9vWk#fkzi5REdpLG&m}$YgRd@V#&LyUz=Ak z#8sy;je)X}fBw^8t`DF7ksc>rYs2y<@5)!D*C=sxMVTsF&q%{)P}=s2;H#Xi*D^$% z-(HqT%q~5@jAD%bjE=~~m=m7t8kA`eRm|N=CmwoB-^pN;*mM}q#q%di1NXiE{@yCL zYtF2ga5_}RpgKctIv_rJj_c%;9!Tp$zw@Ehm|%S1@Z59Ht@VPT;dz{mUX+C}xT-H2 z81;_9#^}I~?(91G6VHrvf88@9!*(kPw+MfQBN8AW0-vK zgTJ+M#rDako?My8tMatB#%$+wgz`OcI{FMlvZ@!Hd@!=bLnh3>yv&p`R>&z{>Fbzu zfYSB@g6`viqw|RyJ9;_S(il0m&*_%3v+u&bFEU`e9cKGE{?hggUBZ*@O^5jDPk(wH z$tuf9pIq{1X?WTt@vP;ul+}E@%{@B!%u>Hc2h=g??3NE1wc7?j_Jrs+@Fdr+ymX3w zlTp29+-Uz8Y6r4xbJ-D`SrdTFat?OpS*FNA4jga zzSrfWoV5e$slG^^($1-~FTM0XYoDvE&0xNN(Pe`<^<=n`ak!0)1|epVEScjy_a{I1 z@;I2*Lh3Tl{HpOJKnRFQ-z^bU$%{j^>PL*6i3-gU{eq*)Lj4m}8ltmmi0ZH4) zjl#12H9!iC(oLfxUa(aXosj2L2wxrj=tuuxEyzDzIt6<>$glDnT^r$9KO-9+ELauh zx0l9HJTLw5rFBL`{2I)kE{(d*L&MJKFpAQE%B#w+(bIUU2xObiXBu;rNtt}&&p)wt zuJX>1kT;d-UOI{>eQ9fum5b4dYt!uHr{D}U%Fallq$=z)OCzF;G(^gs+#G!|gXPyG zP5ClN#l7vsAq_|AeRHwOm6b+Tnsk9KsuZSyRTQj*H&w@IWPCia%p#FRS^KOk7v+BX z>5~m^tb9}F%8;@9zdt+qscSQ48d7^_=o7uzW-A>H5&dHfS~epeeO7+T?n__%(&l4- z^szPH!fS9CL&6!+==902k=6iydFgC4#HL+^rx%P9%&{=Kv<9x6{iM8ExHWG#ZmxBc z(ed13SjLz2u^*%?Za8yn@G|N1gUF2|NK^; zWuSpmPG$xfYIK5ezFqI+i|*@47=ZGwLt_YG@cm^L<}a3+J0mac1LoQyMhX297dfZV z9C=4}dZ0a;&QMu@>QjHS&J<$v$-n;OI%}j|U_j`E=o!7genVQzx`rI5G&7n`IkQ`qK2-b$D^Y>U1tM z5`|NCKAv-=TNs+9qC2>L<};sJXHB$!@@MwMh?a~7EIL|-vH_%XGpq8YT~vlfyq0bZ zBBvZiPBL)X1o3Ojv2_2U{3!#R=&$ydd}eg$6=U3U>d};i`}nC#&XuV)-7J*$)l9Ix z8h^HIQj~x3f8{G*T?d9{bd{TYikll=QQz*akW5i@0~e{tVACyx8+PSx-viA5!)cJ>|!4IV{Mc`YwcQX_E%rSYe{?l}jX zQfXj(R7QRpNe!!Kgm=x7RKVZ~qp@Zz%zBVUkhQ3yn@up{@hqoefuhlN)L2o-8KtSr z6w9-YK#Na4q~V%;6kg}Up9~sNjlFYmxKCyZB#&ejUcCG?b`!Uw#=)}`Ub-qC`BZL= zJVpxFXiw)T|D1HmHI2NAG3<651&SfOc*%{o(Wdiz?W7@3W4K@_4=R$pJJ-<}rDzC^ z^vEF}l-IMjZuwTl&)0KY#KGZ7ZXCB8nC&!$!&^h4=#p^aQf9)s=H!hGMnFcY3~$`5g_E|9mdu{RmXRi}j4<(#QC!a~9kFXOK%;~5CQW|I3ad%ibIQW?J~#Ozzco{J zL&v4Daz1kIK2L6PN`s-LOc@~RDSa57cP*TF81sw(jkU%cQ|0;W?>)Qu?B_na);s!* zyL;-6JQ*ygQ}m6$^wgP=eOETu_y~&!Cx4idSDf-j<}WV>oON#UFv`F7wSQXDeR6NU zrAa<@l+J6<#3wF!)d8uu+AK12bi}!5rAu}W6Zt2jJPCuL_(uL2S+5UV@Q2HlR;xsg$LeUf_5iH{z-76(1SLs*REndAS9*M6~n`^NP!^{jFux3*RN zcF%_HM;|>|Vijgsko|s^k9vZuSvTpb+xiK4qeF~cTrYC;+p~;1`TyK!Keze97r(I9 zy~}jtqPX~p?~wOE++51w=S!P3ud>!!o*57_qHsh;F#sIvhw`f^{G3xPVJVvM0B|y_ zVhB4Ok2t1KJgX840~V#@2bhW_EJffaUSWj+N!t9xCA>8G13Ah&N=6oG2rpjG3OA12 z(_xcCSd~q>Q~87yj`RFf-pMZpo^h??6Gq|jmnPXU+OAwW1ZfF7GRp_qCjK?S<&U&| zg!9pedG3C>k)13!_(*TA$xcRmge8-_Vm{ZyV6MsPnccii9wtq3aC0qQT=13N@S6L= z``|osO!<|@f|LDH>bA@|yhJ z%km*NM_#gQ=iT+>V-2+Dk2n}`j1l@h4E6-y>+QK~84$mF$&YEt2$I{D&M^HyjrP8@#m(I-y%&!>8z?biEWf_p z26trM&HwoSsvqwK+e7n?yCqD^9qPv+%nyzGGR~L9aoN4g;=Gsl$iVID_jP0&qmY4k z2-kh`U)z9KmUO@Mtv$cSxtpPViRK@HV<0f2x2f>^^6dVbZ!F&wdHrOG#B;}3mrN7u zs2Ni0C~yIWjTs7~MzeA=`r60xe)%g8BU=scFH45|mA7Bzc#Yf{j8_?rzsh-dm}Psr z2E^s_f)6vX@)m&u35{KQR8sjCP9VgjJnB@EN`%i<<^yj*`Jx%joEpn=u9@AWNW6{a zqq-)Uj>j0ImCq^30=4WpSw3=1Mo}p(OAx0_rI(6c@S3I~iTR3q435pr{pa%E+2=dI z^X+ecd$ZPA>zv;m=)K;$bFq^_Rnh^ajhLL=m2~eyk41)I8lquSS5tz8gn96zmgEsV zc5(4juic1U%8&hcJOT%pY!Bg{o2KfcAXSTZm&dpkHEkhAhXEPdLTjs&8t|=bP z&*L4;q@subh@tg>fGppqIVFK0+iHt2J^P;SA_Vy1cY;ijyKqD+&s799E1Btzp_>LpN-S?Boi>d8ulhMSM&9VVH{Xd zNDAp7@yW=z*58)}>TzjMMWIN+Nih7L(U1e;MN zLo}8x)V=<<7wB=AD5kk0-=k{zisK~0^E0{(si+cr*R2-G+r;%;*AnL6Ir_w(nNxV+ zZsy7vaSG)`E=HFvttS@YkVu$X_E_Gy2&YSzasUxA0*WqAP_4@C&yVXbUx$$-61eTg ziH@NU1?ZYoeP)?lQB;xDg7=_>nYGPafgnjJc~o@cgIkN{w;g^ITr1DJ%^o9h$Box!6@lER=vzBe8bDcX%=}wkJ57IW*DTo1qstKLbyCX!uC|3LTo{Ol?KK2x$7!!GjT`PA*a$0s z7W2l!xc37jmGAknv#@-g;7c#o2}uei>t-=5j5G0f2o&@Mv=Ma)6fC*>5bm2YvnMHA zOh1Ht&)?H#-=7p5!FbPXg!DTw$ zA~$m=>vL<*pEW2KFqDB^^R`ZbT*E(HH1ovI``&L!(;DV%(g>31xCJKRw~bzIE5nk* z666cp0G@|Y;}bLZQ6=cT7qrYqXe9Cuw(GP45@07=ted%3fi)t~*|?UtRQ-UMMOm-pFa%KDa8XaPJWM$KO={aGBB%H>feB zpW8lu$5hn{04n|I7vIBl`;8<&{B(6Y&#_fKuo|weF-9WBTgAAvnc{%u)aEsCT#aI) z51e!-q|v@~mN})8&~f;jn1yak4tlGfpR^w0oSDuJE0)jmlVYM`Qg?eo)v#&vhi`ux zDn9fkyc{k+#U|SzF0JSs?4Bid(6Qq$4}Eo&%FGi*fflGg&BR0_{_ML)1DzY(|J+gZ zWMjr8F1L$B<8~-q-PIGvgsgouW<+n z*PTj0620cnzk>cQN;2*k!lv@0cOl)Hu$;a&@Q9TzW5~!X6E=hASej8fkMpNbdjW@w zJOiv9JN1+z&GSm*q^H*I$DWyIIppBFjNLc(G)0zm+XJS~H_Nk2_kh|H2mCTWHw>Zn zFbRhStq2~p6edEwHhp}Jg}9JO$PBS;PSk1LLq+s+UAgPhu^i-srB1q%#!67b!&f{f zH{8W?7#(S2cpZ02wnzv*Z)HtiFo+`vQep8giiSWz+=(Mh>YXq#g-KF)!N%BXBynO> ziwz!J60p<~uHb__8gB2{lc=bogD#T#_8$@yxxwpWgsR8Nj=P~ve%Gw@{YQ+oGe9@i zbp0z*{jRt)dLL^%x8*Lh4d+R9?^%~aHi*f}a@%dd)`?5E0Y3fM8;D zcU{u{f~cbjedC?vEU!;8Ws}b*xiV2Z{*Bn_I)%JJ%Rxy4L(FcN?wT0nX=k#2?4J4P;1Uz)NztL!0DnwZ2h{%Y53c+g7;~K5e~At z>DPxA)g;v>C6fzkNSWOl)$NG;ioE`KXy*}GZU4ojiK>Q0eZl_m8%C{mUAr?j*GWkG#a@l}WGai5?M zp&gBQ9pmx7W}>yTwz#1?H`1d{-G9Jm<;XR1lUm-rLNha4b7+Y+)R_#48YPZ+D=+uG9=m$FSPD~t!V&%^2yLox)jH>y1NNNTE91cQLPX;Nm`gOD|Z19h4G0$C(dDwMa$*tl?! zAB|5E&^=K7OucL*}W${GFd49gIlI@DxBhdYro|^dz#Edndqq*S6lV z?zt|&3!^m2RKSLx3Qs8?PlbAQlRwxuFy#nXUVkY4DBnA)reQ|I7W<&UO z%zo^mT9rTe86cC}i(d~L@CirZ@3%!OMw!U;*c+Yn z3Yi;I^a|6;P|o0p2qoo&Y*V$-*iijFM?^-$aWlKpA`6M5 z5fou&_Kl>Vu}MBp6O{HJ$)Fq?GNzUG{E=q0(Q$8V#9%!K_9O%AT9qX(3ZY}uTz&R4 z`mGAfSKpa@4MUIiI!MesV4<3lJz{UFj{9}Tbz$(h!&z+2>4D=ny{7GaxqU6_qf% zJc|rAWBKx?RAAoc!8T71rGDeE@R@N(f&V5-Fd2Y)$vlZD(S=?%j`;!J{VxXaBl0(x zT0>$(_%~AU)bWV(0Wp+VcmXGdyzde5|6-TI4t7aTB8&&h{$*%JY3&v|N4^fGI!BET z#4>~nq9pqqSQ?L7gm@tKBOZSnrsdO`5+&ZN{!bT5uipl|og}fuRfEC*SUmZ$lz<;L zCzR#mpMp30uv{=PqV@%>Y^d*gxwPPU0tmY>+2An)X#N&Eyl#gZ4|CqAbU^unLJ>;3 zA$u-=|7HaX5HzR^BmRlL;Fq%bd!%GK1_beQM@kQ+#%i=b-^>LaimraVDU?vo zo6_RKmzT^c$eHrnm*OJrfa}22`^F;vC!cicWM5z(_L}HXAS_6EFx@ztO->H|9ZFK@ zP%oazPc{oSO}0BWv2-jgCJhwpZw-TwMkcjG3v&yfj)iUD8}XNe$@^lr96sP@(~lz( z2AOPdICwU9G#55UH7_?)tALMwn+S~uoZk+h)cFh z443GmoCal9ywH&B@7I?aPTVaizyM(Ervf6S6?(^H^kEGd<{ge5`kf?n^?@&8^t}n% ztg7#3-aG5=HZXnEFi53pljG5C)VfVRW?oe03(5}6E+Lb(%lVSAqTQn3;^_Iaz1ZiQ zPo_@+5a;3OvKRFOB0Qo!V(h1?9;(n0)L=C{^|V82GgV$?EY)hIa7(RBsu*e6ANZ58 zQ>~UJk*JY8k;;*b_#=1|jJJ#h$>_=HGG#K$$qEdsnvWccCT~pMxUZ#p-dx#DJe5}b zIIbF1AJ?=~>MQ|@hgNM?CVsCIE0*4gV9=TS?3(a3_0VsQ@n_*zE^Z6%MxD+j>4xyb zn$`%f^vAC^Vuv}0TO^qzog|-PI!MyECAd?#R=Jb7-L3Q|$)>)4ZTWi9;AW*a>m{vO z#JOK~{n|^wS58-NSyA`9uTq<=_oqQ6Iu$y}l8<{4EXsdA@+!Nh*=3!k=cek%uaR`{ zcZ5G8_#*k{g5Er1KF7TZdo}ec3nLRf3?l_2BWy9uH7qXXy@Z_vV>Cm|DTzr8d9-Tu z9kF{>*Sp4df=L`nx<6{la_HAx@~kF&Mtue!f*w+?yvKfV(_V>QkzKvJ z`h#{&(8s(`n{U$Xj;0%>7S&4-$Ar)H%s@w(l?iYu~ z>3a`~X7a|($LYrrjQ*K- zZ?G??7+~$P4>w>{4IVO|=NJT@JpXxYLW+m)ftP{LMa)EqgwqZBO9{@;`4|^`6O7m` zPemC*T*tXBU23!+IcY#(L>S7#pnEMi%3&j~CHaBd$MZhn91G_S&NB5IaT0ME>gDgI zg{hzCBz&W9BUvI(!+N5nWw*Y1x4u*^W zq?NJA>bd!~96QZls$Qhu@88p07-&;f$jp1daTW*~MV}0<_4@TY?j3JNJLolwuMkGC zM2JW9O0!4{BuRMKwHvR!Ur#a^_D?!a`;q`;r+r(@Z^psR-#~?tN08^Hkxwaw^Q*-A zN44A;PA2MA$TMTM#<4#8J5+4-2&xMeN9R`<#L@h;5{VRV;WMf-%rf%ozSk*KCL7Re zEw&7s&ZVle*7?@?>&NJi>900Qc#jQm!&?(uV^syu(^gpPR<{YeKTp0|$KWQ7AXVi7 zWtt?YCSUofUjIn_60?HQ5-f5LQc9ysq8mP1J#KH=l)R1uQnWQ{*)O*3cni~kB?84i zI(Gm0{&Eo&7Z!(bJ$ZbyeNPQaard)zz4SJ^fKI}SfVzd#3us6GnJxU-!Nrf+w=H#7k$X*gl={Cr*gV;vHa*H~T(4E8i@O_l zY~xr4zjQ8lmUbM;bfs8p`c~Y`P*=prpUpv!yHCo*W$UUe# z`r2;hU*57@+g5C0G!eRN*TlMd(dvA|a&~UszJ=))Tzv)OsUa7wkXFk&I}-$JPg zHZTpXt;?QOH$PjKXM8DoXUavNo9z=m8vDTnrt?NYL4iwN!LR&Nq%X4QQFsQQpA5eV z4AGO~l>Eb|^Xf;WB||Kso(Ii5NNJm6rKaVgB`?QsVsFc0WNL40#^Pb?0I76gU<5t* zAzy9HT#P6^Y;EkE`8|ZFUnuw?-=W>C)RZqIF4jWSTJlPiV)jmEl-w*_ENs-msFakH zf=;I9{3@R%{xcoY5~8+radF^hWp#IVXL09bv3IgyW#{ALV`bxD<=|k3P%t}t+PN5c zFxxrP{A2Q8KA+8;O`NP8T&(QvD4~3fjO|@rgs7>Zg8t|4pPptOR{tx>&iOyff-H~~ zI>O4%!p8bPydhHsp}qV{Rvu!lY0moTaz>;FJ6jEe9s*dGRl&r|yIM>P-FlN^-hFX9=1 zBNlCBX=KLqXhAJY)S;Yi|T-Y08W}h5WAQBn#- z)`^*}yC;eUhz5y%l0ruK?R5tB2Jp}Mw%Xry_%?+sKbIGs@s*@j|6Kd2I-==1Znfkx zBfqR!se`XktxvwRv;_B~qhmD=X!Z5$<&|k#Rjr)cDb-W3H|ycO&ipm4F z*d$u~&;ia}R^Rs<+_0_*2(^Hb9-sGY)6GQILA0113JkwJ>(bz?z#P&(Wuy3s*mvC;U-qS5W~qR|v%wa4Jcy{YR^R{!GX2HNUS z-ZdZ2_UGH>Q0-Ta>KwTRGMMVe(_@L*-lW1qWp2k+z^_iGtZ>wna2>QtYamzJ>b4Wj zi5<F{8o)(oh^4i4f+-1;G`^CtIWO>_wx68l!@nMT@+vSn8PXBeEAmqazO|lU!quH zd!7T$>42rg?v?-xsoqP@I(XNxNAs0vj2ac^>sdSr3+@0bql4+WNZMbU3@GFxyv);jy3qm4&TRM=D!cOMl0>wJzbQ zwE>}>K^s3)BfXpodvT4&ckrCueX0ul3CZq)n+|kfg%=$esgm&pU7n)ko^tjDJM&}cQ6Yn6#jURr}pG#+~n-X ze2urYb91S!eEMo551LW<=-ZZqZ;+9!-a#x&OeDFw*g=7S{nm;5A2kypyEV(+pPKi_ zvCVaZ^Lid?E9#{jnJ7fwGkvfrtTEl|X7A1b6esEQP7hTYEn-$0J!P$-WQ`hZef;?? z!Vbth0uV6FK`crm7xHqcV^plOtu^5dp{DPqSt)ZU|pZluXj%~b#%{Hq2pRGUMLYxNQZN+i$6Umy#76w-R z#Qs@+3;9Kz6fOAg>ijlYVO6l^7 z`^oKl(PH44siTS{0kcl>cSrw_aAMc@_9`GNA_0equAQ0B3od%}pdj6FsY?R0y_P4D z&_T&z|F!WGM_IbiSwm$mS|caI@bPToT#wD6^DJloqg)D~{S7vszH^7)(Zp*;css8E z0MG3pmu)o_p2UlMN7A>PQMg(AOck&pQo1ZWz(qsh)=&rYC!IVi4~M7V>}>(^!G+Py zKC5}{V@ueC29_4nf(k50-g@DyrN$Z$PZ!p!o!kV#v^fD9X2ZBK-4WCLVodDdcE;(H zU`tlcsmH+*+uJNF(^^+2sZab~o@d_cr1uvqG8{!aD%QWtwkaMb!`l==gln-S78zx zziHx7Ax*6U<@;s8v#veU?_LQ~TRh?OK&+5udw>vdht(g&WFQ)a;^DVskDxW>dgHhi zZqylP-a|C+QngMn;BL*^TT;4n*nZrnz2@(rJbE?NKn%{9Jnt&r8=v#;c1?RG!Ew*4 zo-=>2x4Y~^xKNwG`>dE~%_!FuE(XBU>KQ7zTSU!I!nqLNe7osvUuWO%b>+i5Zzo84g+E-5 zuzJG-yRrP(vaiYwLNzOWF5j^aEzkMskB(g*%=DsLiJiAnf&(fLJmS6qZ%ieO_5lZr({wT!%bX@-ok~!TD zR0z2rmghd*0bTw{(b_wSd7!F zX!@#z_V!DO#r38`I%c;7Y8hQ&tx&0%RQj4RXOxdcH{Srzt8je<50gzKF2r@Cj+?O~ zVfU2Y6vm%rd0XBVV}?$*I-Va*aA#*K@K?Iv)zxpbla0DI8;y9U+}Jnn=(j)13Q~^~ zkC@`Ks0RSWV@?Nt5<;9@(H%RL@3DvxyBAwZrhtUgCbz$3E`AiYuzqQ#{NeyY6z3&O z=xGcmJqi0>ux0Kw(d@WELjiL5uo1G=t1TkHSfM>4SF&n>NBG4-n96o}Dcxb3P8jEQ z#d*SEwc$_eY9NvV*7Bm<_OvW3ilWHPufc{Z1%dE5zw1Jy!&!Qx@ngQwd!dnm2g9}l zo^_vkhXU^StG$W40rwxS98ah9iXM*#B^5?_7Ihb^Z`STQ?-ngDh~q{OwL5FBfC9m{ zY(_wYYBfz=i@SSV9-7*GNebUz+$1wStM04#W*O^h7MQ;V5EU&z_k(L)lifbI&Ut7H zV9;yp6HIgL>vOT3zPuE@pXG1qX{&+h&ZNRV zCTB!`=fM=|;J3Yk9)Te>C9b1P1R!9A)+r}e2JsK#HpuR=XpUr0AoQAel#`fChc4$j z;(W7*uy=qIE6VPj%l5YfBSKPc1IPXyeNgZ#EL0005IP0Sio;e+M)Z3g*-szMrTu=3 zbyEvW^yg(SYDf!Z+j0h#gB==TwwHZHUA}R@S6o29$w@g2DdXui?(^FaCk%byS)$-@ zk-86`0aM9k@i4DgS{a+yri^_X7dl%xpEfW+6<9`3@__G1s4wIf2Q<*bljc7 z8he{4g(fM2Wn^zo&^(E4@>`ALU}belUffKUDuYnO>GY3uCcl)lmcz$zP*aImlPO!r`d+)-4%bYEV7O8K>_D{ zq+>o8Q3j|KAAkj8d0r=Juv3)XLTt<*Xshajo5=$N6fn z?MY{u#QkcFH@w8=6(sZh2xWs5R<7#P$kqYIUQ4|LZYBk8IwqW<>3M%?Ojii==WA(h z|L9tHJnU!^Ek#qT+%Kw;5SP|#n9`g!*(Q(K?5{nYGKR!mh|kmRvCzz?nEjA>>^M+M zTNphIfd4@_Ew(7fp*{*p~C%!)oj~f#AC=24_CiQ`2%Pp5BQMq%fm}$ZQ7M( zVz;0k7*`wCxj4^sR=?P{)No|;dVSZ7&vNoF+mxDA$m*PV#l(VK$|`4Rl++ok&1e5V ztM1;w(&JqbaC^+I!KJktB~z8L;yt;0wrLsq6hOP(N|%qKe%x|6xvcns9k4=}%*Y_y z#+9<=R9($AJa;)EXIj_aa8z~1JWNxQk?tOwfRjV$8Wt#2H?n)*dF ztAwYUDz5Ppig_{sm#9UnGNgBTS+Uyi_=m0#Pw`k}^{H|~1s32kDS*_hL(*$k9F8U$ zY);!!fCA+<^hSE_LbV?=al)71Mhv$FjoJ@f^mKr|-_~|?$wEzb6^ecPAqTO>h3|hQ zc0Pke`mWpd&!>j;{T_Bs$4TIS66e-%MST)1x=Gcwb1ci=+gf*-naaJjkW)|E8{mKS zGi#fo$wGcmuJ>1)t6`J&8}{r%H$#_D3cvk9;vMkwI@s5v?=tonprgM#nt{7x2Ko;E z+j>waXLebp=sT<}WSv9%6;&=0Fx|4pp0tyDg7wrD;oKS{oDjEYb*Lutonv`=)~Ld4 z#rv$oZjjN;{VTE2|}iV)%L2jLl12-sy6Pu8jn{ftqH=n@K*T zZJA`uw0X@eP4CNCP%9=rMb4{2gJC3BlEeCRf~>m&77yS zvRP3sIin7kMa$_sFNp~`HC+)5%zY`MeM+E1?>5S9rn~cLEoXOu1(h&?Mqw8pJihWN za+LRHG%5O-uxzgTkTvgB^MP-hIuER^`)i6V*6$zx^fYxouO@mWZ7+X!XG*+J3rI;) zWvJ`H4~<7;O~Y5#K%U9Kzf@5eGf*}^@U)Ka@97R z+`T4Y5_3L4=(udbrhaPU{c@znUsDc0pWO^2@m2h0@~F+F00|5j&nG;p3WK8}na%gnp|g zscF7)tbp?3yzy@5uWjhn?U#`b!zGF+dB9mZ3?toU$ioJXq5k_T8{}}RlTycYDvmk> zBWnx03bK_rL<(yLidQ@lW*6TkXAF-Ga5l;-o)@<(E3y~_Hf z!a{TjNGsz|Mj7Ksd5yM>MD7!xHdW~+Px8Jx{q{aB<4>t_me#)8*`#I_hq~J?e1^+8 z-k#FY@w#8hLc;lD@f>nJ?d-Poyr>74-M+Zo(`deP4joA;%R)c6Hek;{ z)=mKWpKozk?TisFlJ7^iMpywV-}30WFa$Rqn6+vq8TAQTw*yMIS@{ideLkk+n7Wvd zZ}$g9|H}70t{n`e0G)@gz2CAAiRnyT+D8+EkMV+Oz!AuCnAi&@C1)gwOzW8GBFEiQ z9K-`dj!ib?U4d1b1=Q%IjkPfYZ&1&g7S+h~`X{S98fOWts&6+*?5#LW=|2#UaUcbGH8TRKJSw$Xx~E~K+Q2TZKXft1- zEnMylyG#BZ@~9%gzR}R_mvO(Y(R>9UgqYL(o&?>hr>etO{QfEre2mj>$cf|j`uo?` z{@d%TU*}4?Xwo}Qgb<;lI(kwnvq@oVO z7fRJ~#_8Xq8Op;Yfb~qOf1mB7!smB4Ee%w5`WUabJ8^Z9n!6|NC0w^QqOLMzEv$W4 zscS+W#_TmSQ2$2MB)h06EF;ux1lf;1JGr<$+r@8P@F?J&4!k|sw=$^agK@m1q3-oA z8K7@xeBnv@QVxc+ctRil54*#iOS<=E;_-(iEC8bC)bPm=rhei@WQ^Hu)TS}wy}*@{)HKQ zPh3VYZH^+g)7#o7bhk3L2CM7iH{Wzv$JX58Dkr>239p@Ni5G!{k674;BzM=*!o5~e z`FD?6cS0&VJLZ|H87%Eo=Q6WVV;RlRC)kWhqEMPISh2`aXo7Q3aKyHmDdXKdL*g)t zO%L9!?B#1)^fM*r4En}1#CWIMJpM2;l4DcIc0QizVqSTGHi2CZ%tKq&y{iGPaVTUY6iw?-i$B9{V^@9 z4X*EJE8pOxYGi27N_JSMR%MDYb5FY^*Cs_@D>tQT`?|%le?y`WvCE!V`OW)kk?B`G zEH$K=tH@y?vQnDnP*`umn_IH(vq9@9vjOBMOnqW~e2l4*iMHccS zIz9%I?^+ND6roZ%%BeuE6op%OR)qgB;C6SI)X;En@C}_}UU42t9|aueg*S>Nr^a4< zy%w_%pNi9!oU{=l;Yg}*acSGF$#_^C1)5Kfnxyi4{m9SSr}Q;xGp^AOKg^D6Rzi6> z6}X@t|0%YP)Uu*QG2N2JsXU+JX~A(L6pDgo5B2&<(=EiQS9A^3>;evhWtWX zghh@z`DdF+yr-5+WJF>Q}@rN6}T&zP;IipCbkqC;VXV0(< zPArretn5<|{rakW$_Mbn!@PEWtMtaD3V$vk&^5u|?YegLrg=-)T(`6dIcvEU+ zTKiYD`w35*RmCya2Hdty!$B|jn_NBH5R2t=zo(NkPm^6i*F!wrw#DwVJn1C5hld#g zLeEU&o0EmD*qi=~Pj7}gWxqB(a*Ui-_g6_cs}P7(w|!W1V{;NQ(Y!tp-gF%R6k1>7 z_HJZWU8%@SBw>lTb&CvhmvQ$QQ1hlGPIC?7T{aOU@oyLd*|UYhmC@~RpM#pke{cd< zNp$ZydXv_KIi>upqAOE=h;>gGlj_lyOd~8#&H^_YEf<&0+m?}eKahRscQb53ui`Wz z$I0nOY^vk|g!JOgs50<|P|5xYwXKeOTrO_Ij2NfqT&qPqQaVn!J<<&6-sP2Hh~pYa z1pNpPNPkVIBZoq$8oRKd7wD7Af(L6BYQz={Hp;%r{Ai6G-jXajlVH)Av0CTRtuYj6A+*YV5`hZ3bljaNjJ^asJW{M))?My(H>L_3!3UpI zC<{=dbLt6MiL|Vzob;79qFx`+V)reW88l{JafGcEy$4IGox4= zU5TQC`0t_}0iZ`xIIO_hLX6(}cMe@xI};B^;T`LF8%9lYbDH38_nD0}Yqvh%V-pHA z@U^0WLq?qLz4vL$pWZkMk+nZ}3;kpDpV1AKBI7-@6C0^?itM$8axYB1I-@9y3*r*?iq^*ne?_jCQ$>cfy=Nu>vK^vx|k$KVsiBFP6Yo)2fcIP9LsbQ*nP$L(8hS7>+BrxK_ZTyIoVrU;?OdU)_S2bbQ*a^TFd4JP(CI?SLaF?Mv3kZ6%oVVmXTjd? zw_}>j#)NRV-Phw4oY_oQ&6hDW95*CPUOSqX<`GLsd!pIm9a^KMo{|A9DfGN44ppF` zkD1+ROUc>U#`Dc!J2o-Ue1ArtM7ON7$X8$mK0q=TMox_5lio^4Z(TIaJH8x@wG)q+ zVrH#O-!#>|&RK~phwTgY9{dnV|Ngc_yv;>}{!3l?8~PnzH?c!iME?9o`(fbN9fRb&v_a37 z2*;FR*1KNUceRta{n(>Y)zP!wYYSN2Vt+dx=rg>HBVCn?5;AWXSn^wRy`-9w{gLJK1UjI#5$6`0Cr6L}x zH&LCDp3)l*QSWv?49mG4XxV@xd4BiwInaYH%RkJ#qoo7>^T z_8`TcOfC=C!JGJ9pI?@Et>#@Ak+pfkO1<#96TYn!F(`?B`SUahtsj*(QQiBVqUWlOPS4~eqG}@k^a1zkG(Clx$47!zZ3A0 zfI|ZisBYJqQoTl3sW;46zHS^zqnw?_JKo3Si`I56d7Nx+&gRW%uC< zzng3)MK_p}J@eBsIM^tZY@g%wW3%w>Ut)jLd89NF+tyiyw4J4Cc~$$C7zaBLL^Vm1 zf@k3OH0Tc;jHG|uBn0fQJM4P&;YhliLylJud7#!)OiX;HdmX~O=53P;qE7eG8_mwk zl%O-fQyT!SY1J*upDc7j%@6#ves>0UzGNp{kvQ7adBf~oxWfb}GV<-}Oc}%S2S9G@ zI)Y{W%E=GX?+L_EvtoVbFvKLg@5-w?Zgs$qORRnuXkcnmdjfgCkvIV8rn+4G53{$h z+VvS2bVk}fW4iixR#owY<7BlANe|@-+S?T#UDdpa3jQ_@0FD6eWr3}zbncK9LMrvXiSWrYh4Dfa;5Apfz39Lt~-&OAGd>txHz-lJ*yWaqzTJlq_ zc??(# z#9oIU56is?iT@3M&5VKo^ZC-=(+T{?3wV+48IEq@?N9InB?2Pghly}S|HqjPUcf_4 zxEMpu9O&un%+G_y0!U`QbKhz*a#RGpbbO@aX~VS>dpJ=L+GmJqhs7Ugf6U@{ggio6 zDz7~|U`SsP7e#25rSv{*bA>!`$BO>ue_crN;7*#DZ3+&i0CovewD9{t&gpI?o>#jm z_fL<10H+3aTfw5Gv@C7M9R75mCcv}po#Ix8n%c_B#DW0On%jkl3ufmhlW^1Tv>DJt z9(WOeo3M>hANOn4INkBw(W_JJA}J5pM|$NvA=EUJ?-J(oHxx6t`p<=*A38bSdZpp3 z&ui>l`anP676ln`Y8X?GHuI#KsA~+j^GpSoD_B#&Hp_k0v8~(z4f4WrwQ3S^Jd_ zLY!e|$e>LemVmN|{x5r8wzfc|FidgN{j^!Fy_t8gxI&Znbee?{9 zouL;7;2Q(bj$n_gxs)u&=-*P-{7gznlL(#^-^PiyjP(a;i5*qH4t-E z-Nl|LvD1U3M&4v$GJGENSq}u(`OV#gnW90r}+IrK52@%S2=un*V{A#ntHA& z?me95qvsC5G7YSKkKc?&(ny@Ys{L-tLme7&k0CD^ou5!ee%8_@d1*p_GwJP680?2rJwH$A|d7IpdNFI^X(KJ&7{5GRhH)w%ftf@ z7q19f*{GAkhYbWQv0kadX>FQ`Z~U(B9>Tc9hfC8Xk_IBDydS^$I-QN<@DYK}WeKo< zRCrG!a|#@l6(k8BRn&i(`!pzMHjD?(G)R=R=s~iM6#?Cw?nrjh$OA|5__L6F%mP1bo3C$dW7VY zn1nTJLb0x}?2h9u`T8qGCztzH3@o_mg|Uqy{q*xE?-?xz~G7$rxcelMZ%FjwZX zOF_40EzKZO<_tO;X3}jOC3TwpG?ecr#;sb;ciOz=LmsG2#?WKxwWNLJsb+38N~DEb zYJTasLFbBHA+AKXP#692=JTH9-iJluIjyn$y5lk`mf@5P#8(ZP9Hsb+2|V7nHtRO= z#~G{a@M6XNUJ}A`mxYDUP{WpDp#NNZ+qIt}@rqkq2S%Y#dRD2Ky=VLPm@IrEN&45J zf*GT`*I~-M7&t~#gN3MvWi9ucQNFeKb0}W+Boea}U+(51x4>gp84`=qZ_s`gQHXun z&a>@^-dO#?8^HZ1eE|!F7oI6hkK`u*P6*KMyKFYd{xh z)7mrC_>>9BHF>U?c*D+9-^BwF-OW+AiFE!A4q|IAz1I+vr^IZBeu6qN*u!2dV z)}`rkwhQ%1SV+o$6{r7!NfWV9W>(-gbfY&)uY4;8j9$nvi>Ira!4j#lNYml~Ux|RX zO4wQ;FJAg?kMSLe5D|P&qGI;c9?GSmaUxnPtg)^pO zaKWQMH}hE^`iY#mV6GVxrJmzhm)e13UYF=}L5iwHU_gPh+!2Ax+Hra!4lK^TF5K~N zn>uCVL%~OlN3ZySicp1EM2lHA(xrTof^J6p1%6pV@;Bs|oM?@?x5Wj)CKe?1`KLt@ z4i09&at%fmtqOz1T>ET_c#lMWZ!Mzmzc;rWW&6hI%GInYt(~;_+psV-qfB2InU5G} zUn;+3y?3GCEjicsR@*UbO8K~}#%Mc-Kzbd6{xpI=B!N5TbiyBWB|HI_Lnsj5YK@%s zMy3KURnHRmIIYGgYfk7wP)cQe!1Tx=pGXTwjg7)qE;{qtmFat3H*(FZ-fCqGw8e@_ zwalTe5b>uXHybsH;U;7oOE`ILxLG5c{Y1<2du@TEBf9#liBzr+`ep_Qk71(oCil)n zzBI}zpG6TMpTiUw26|Vb8=cnSG-y?KjT3k+m(Cw849CC@tuU1)5Egc;F$;5LwLEbl z^<$tgWqfY2YWNfq8||kT2AQI_zjFDbTUpG^6rdemiuv2N4IPAZDE}(d8yQiCGB0NB z9a-q;V|sv_^bNaG#0xVox_s_vFIJ-+#h01V5K4VGHHVin6%Xz<1(7$?h)X7dF%QaW zQVi}^1Dp4d%?nwn8>)T2GO}gZ)O*@WABcy46JTU5UySrN+3w>@;M(3PN#PtEn}~_)48mEFqu1 zEe&marrejdSBHZ#zz)nr-j_bhWE)C)skZ~niGITWTWkaNB;noHg0~|7njfoqHEE$U zU~x)g0@PF*91~gpqk^_S&UKM{;U9z@gBMwE^Dzr0lrG=BC@({~tX@tmQK$j4qx&*S zOPQipS+xBE6G=8iAcj6{vhNGujDXzhD&iDDC zeMtG=8gP`t6QuUvztsIo2?6>TDmYP0|5nbAJz4&dpE4ozWlf@pa9+B$i0|uOzi7WN z1pzQt&h+20Ln#nqMD+k_#(!uWBK(s5$xqtyPbv`ts)S=TJ z10V?a!YETirR3+LSYkl@Q}aLm`4$2dMNjhk7jP^fEN7h$80=qIrXgGlMRyj_YeQQ~ zg9s1KP#sCP{{T+|Yx;t_&@{$Ae?bk{^(7v<|(;=30{n9*~2}SCf zDzE}DdB^q`U-mfy>V|r_5F8I%JyQ6f8te-N+Gtjq6Lm<^zr=&mIzmz6&$CPQ(-++* zpdM`To>mGf<}e#-$}2dH+n2F86w9f$xImd~sF+#Oz}w^J-9xs+O4AgI7tVBWhis21 z6@4$x-+}#ij*^*~c}YW;74fGJ)D)rsoEqN-2u(~CLKL+9jQ!WP0rI~140@qoq#7S2 zA3{%D0Wy)H_LWB0SO(Jg(4JN*QHzfy1(=0)k!r;MXlN!^Rw^(H!RIn{FS;PXniJaE z+Cr2m{E&k7qKpWfU{i_s8EA`f=mlI}1e>4&$Wt=a%;9e@Fwwx86G03b7eK4?ver-- zPV`EnSy?Lv3h0EIH^`Q{Ctd*+@1biqq{J1a4OI@u;oGl<&i*D!h%js90xLECV#j?1 zt=_KE-fv{rFVX!u9~I(rKLZjP{?XFIjse9k9{jW<+H?7-J>Uej#| z;VjT0QG}m3HN;{1_WBsH$Nz!=72$sKjYL}!s+7x%-%%??z|^CSu`whh|(pF>J?LJ38dYu`fdSU;iDWguH+>g5|WDSQf%lJCXI3UMdDLv}luf4d!IKZfM}|L(_J zkR90a*K18bsDAn32ujiyUf2-V`TyVM?NRoS=q zr4c@bO-0frul2E<6l|H_xN`;)CXuP3Y{mSawrpCLMu04dhz1vx%YqEk* zFSCNNYu<>lQrN`TY4E%dG(k7ZCIozaDBdIikn9pY&qk78lOp~SGt5w*NX_qg0Sz8I zzuwZ?8j`PJhatapy{fanyl7Y?}4jXTdU8T%zD z{UN)kI@qj&>|fZuo@`ta?x#0`VyEN}4LbmbdhAQs86cZZoLHr)0VY$FUZ&E(-4cb7 zmK7bADy87Ru*QPyrq@X7Lob@}zlC5;PVlqtEfo1@XoUqTVqARTj0EKz{7H@A#anzK zk!RvNt?>mq#s&k~u1#PFG837g^GJgr;X)eJy7|HrRtn-5uv(V?_8A*&xC^vOuW9e# zF3qBsx$)4tD^N{GrX1?^Hlh%HY((!PU!49GHpJZaF!-s73@?lmA$xWw)d8a&RCOXL zh(;t*#l^p%ICO>4#NQAu(Kc*Ein9L;1L}OuVDyShm9J1E8Fsw3w6a23tkM}{n`iVC ze<={)qr37y2KQX|)KxIi2s^R&KV*huQFQ9lXqrOxrG$eI z?iwJqC%YE{1AWfebR=WRh$odRbs88d^gH-}H8fyEXTMMRN9wBpGlyFrNhKB*V$>TJ zI!NLDw*7X=+HdvON#k;39Jv4w^oKNSNkvFpQsQkLGdy~G6W*CURi?>pd(~HakpK&X zR%5NxT)=qV9ns8lz)$N)T2v!z8DYiQ{ z-00NZ&)0u`j(W7}$#QMUr|&>oRBz(ZB5PzOySFj|xMOQ(`Lr!>BlB)s&%WpN` zZcb-?|1}lF_-=K`i1F&9m1*%}d#+ChG48+SIL#8$y&S0RLtK0qh_PN-M>qhaKlNZW shC%W9)6W=1MMv*l{NP0Y$;1EIqmRw7zM&^A584y!>FVdQ&MBb@0KQU@MF0Q* literal 0 HcmV?d00001 diff --git a/images/softApCredentials.png b/images/softApCredentials.png new file mode 100644 index 0000000000000000000000000000000000000000..1956baedc3b7538f6c5eeba616832f415474e3d9 GIT binary patch literal 154211 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 Bp!om* literal 0 HcmV?d00001 diff --git a/images/standardConnect.png b/images/standardConnect.png new file mode 100644 index 0000000000000000000000000000000000000000..b9e5eeee946e2f8e29b4f58f0cac084f10449a46 GIT binary patch literal 36174 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 literal 0 HcmV?d00001 diff --git a/images/subscribeData.png b/images/subscribeData.png new file mode 100644 index 0000000000000000000000000000000000000000..ad5d8d1fb2f8595394174d57fbe9df472b80b508 GIT binary patch literal 40765 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 CV!nm| literal 0 HcmV?d00001 diff --git a/images/telemetryGraphs.png b/images/telemetryGraphs.png new file mode 100644 index 0000000000000000000000000000000000000000..d5cb4e01e38769d3f93b79dfb4ead32901533b08 GIT binary patch literal 81431 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%0A57xr;(}H}t#8i^ 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 L%jVoR@%w)O$kvqS literal 0 HcmV?d00001 diff --git a/images/updateDeviceShadow.png b/images/updateDeviceShadow.png new file mode 100644 index 0000000000000000000000000000000000000000..01d581d74f606fcb74014d29322e6439cd149c60 GIT binary patch literal 38234 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 literal 0 HcmV?d00001 diff --git a/images/updateShadowOnPushButtonPress.PNG b/images/updateShadowOnPushButtonPress.PNG new file mode 100644 index 0000000000000000000000000000000000000000..a8751bd33d7757a6e91e7108adfb0191e5f33236 GIT binary patch literal 3305 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 z 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 Ah5!Hn literal 0 HcmV?d00001 diff --git a/images/wincModule.png b/images/wincModule.png new file mode 100644 index 0000000000000000000000000000000000000000..50c59cdce050df7cc2e6feee2334bca74f628634 GIT binary patch literal 47173 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 X@UGZo3ulSO00000NkvXXu0mjfGe*Uj literal 0 HcmV?d00001

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 AJ^%m! literal 0 HcmV?d00001 diff --git a/images/wifiStatus.png b/images/wifiStatus.png new file mode 100644 index 0000000000000000000000000000000000000000..0eae44a81f697d56be9588f34ad60e7ef382ed39 GIT binary patch literal 160313 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%0Al5lTl5&@#^%ooB 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Ξ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