From 9897f57683a587ab9a825e81457c33f736f86106 Mon Sep 17 00:00:00 2001 From: huangziyi Date: Mon, 21 Oct 2024 17:40:38 +0800 Subject: [PATCH] update examples Signed-off-by: huangziyi --- .../demo_crc16.py | 0 .../demo_files.py | 0 .../demo_fs_info.py | 0 .../demo_globals.py | 0 .../demo_json.py | 0 .../demo_logging.py | 0 .../demo_sha256.py | 0 .../demo_sys_info.py | 0 .../demo_thread.py | 0 .../demo_time.py | 0 .../demo_view_mem.py | 0 .../demo_yield.py | 0 .../demo_yield_task.py | 0 .../examples/{01-Media => 02-Media}/acodec.py | 0 .../examples/{01-Media => 02-Media}/audio.py | 0 .../{01-Media => 02-Media}/mp4muxer.py | 0 .../examples/02-Media/rtsp_server.py | 33 +++++++ .../{01-Media => 02-Media}/video_encoder.py | 2 - .../{01-Media => 02-Media}/video_player.py | 0 .../qtcreator/examples/03-Machine/adc/adc.py | 8 ++ .../qtcreator/examples/03-Machine/fft/fft.py | 34 +++++++ .../examples/03-Machine/fpioa/fpioa.py | 18 ++++ .../qtcreator/examples/03-Machine/i2c/i2c.py | 27 ++++++ .../qtcreator/examples/03-Machine/pin/pin.py | 34 +++++++ .../qtcreator/examples/03-Machine/pwm/pwm.py | 17 ++++ .../qtcreator/examples/03-Machine/rtc/rtc.py | 8 ++ .../qtcreator/examples/03-Machine/spi/spi.py | 35 +++++++ .../examples/03-Machine/timer/timer.py | 13 +++ .../examples/03-Machine/touch/touch.py | 7 ++ .../examples/03-Machine/uart/uart.py | 23 +++++ .../examples/03-Machine/uart/uart1.py | 49 ++++++++++ .../qtcreator/examples/03-Machine/wdt/wdt.py | 9 ++ .../{03-Cipher => 04-Cipher}/cipher.py | 0 .../dynamic_gesture.py | 0 .../{04-AI-Demo => 05-AI-Demo}/eye_gaze.py | 0 .../face_detection.py | 0 .../face_landmark.py | 0 .../{04-AI-Demo => 05-AI-Demo}/face_mesh.py | 0 .../{04-AI-Demo => 05-AI-Demo}/face_parse.py | 0 .../{04-AI-Demo => 05-AI-Demo}/face_pose.py | 0 .../face_recognition.py | 0 .../face_registration.py | 0 .../falldown_detect.py | 0 .../finger_guessing.py | 0 .../hand_detection.py | 0 .../hand_keypoint_class.py | 0 .../hand_keypoint_detection.py | 0 .../hand_recognition.py | 0 .../keyword_spotting.py | 0 .../{04-AI-Demo => 05-AI-Demo}/licence_det.py | 0 .../licence_det_rec.py | 0 .../{04-AI-Demo => 05-AI-Demo}/nanotracker.py | 0 .../object_detect_yolov8n.py | 0 .../{04-AI-Demo => 05-AI-Demo}/ocr_det.py | 0 .../{04-AI-Demo => 05-AI-Demo}/ocr_rec.py | 0 .../person_detection.py | 0 .../person_keypoint_detect.py | 0 .../{04-AI-Demo => 05-AI-Demo}/puzzle_game.py | 0 .../segment_yolov8n.py | 0 .../self_learning.py | 0 .../space_resize.py | 0 .../{04-AI-Demo => 05-AI-Demo}/tts_zh.py | 0 .../examples/05-nncase-Runtime/ai2d+kpu.py | 62 ------------ .../examples/05-nncase-Runtime/kpu.py | 41 -------- .../examples/06-Display/display_hdmi.py | 54 +++++++++++ .../examples/06-Display/display_lcd.py | 54 +++++++++++ .../examples/07-April-Tags/find_apriltags.py | 0 .../07-April-Tags/find_apriltags_3d_pose.py | 0 .../examples/08-Codes/find_barcodes.py | 0 .../examples/08-Codes/find_datamatrices.py | 0 .../examples/08-Codes/find_qrcodes.py | 0 .../automatic_grayscale_color_tracking.py | 0 .../automatic_rgb565_color_tracking.py | 0 .../black_grayscale_line_following.py | 0 .../09-Color-Tracking/image_histogram_info.py | 0 .../image_statistics_info.py | 0 .../multi_color_code_tracking.py | 0 .../single_color_code_tracking.py | 0 .../examples/10-Drawing/arrow_drawing.py | 0 .../examples/10-Drawing/circle_drawing.py | 0 .../examples/10-Drawing/cross_drawing.py | 0 .../examples/10-Drawing/ellipse_drawing.py | 0 .../examples/10-Drawing/flood_fill.py | 0 .../examples/10-Drawing/image_drawing.py | 0 .../10-Drawing/image_drawing_advanced.py | 0 .../image_drawing_alpha_blending_test.py | 0 .../examples/10-Drawing/keypoints_drawing.py | 0 .../examples/10-Drawing/line_drawing.py | 0 .../examples/10-Drawing/rectangle_drawing.py | 0 .../examples/10-Drawing/text_drawing.py | 0 .../examples/11-Feature-Detection/edges.py | 0 .../11-Feature-Detection/find_blobs.py | 0 .../11-Feature-Detection/find_lines.py | 0 .../11-Feature-Detection/find_rects.py | 0 .../examples/11-Feature-Detection/hog.py | 0 .../examples/11-Feature-Detection/lbp.py | 0 .../linear_regression_fast.py | 0 .../adaptive_histogram_equalization.py | 0 .../examples/12-Image-Filters/blur_filter.py | 0 .../12-Image-Filters/color_binary_filter.py | 0 .../12-Image-Filters/color_light_removal.py | 0 .../examples/12-Image-Filters/edge_filter.py | 0 .../12-Image-Filters/erode_and_dilate.py | 0 .../12-Image-Filters/gamma_correction.py | 0 .../grayscale_bilateral_filter.py | 0 .../grayscale_binary_filter.py | 0 .../grayscale_light_removal.py | 0 .../histogram_equalization.py | 0 .../12-Image-Filters/kernel_filters.py | 0 .../12-Image-Filters/lens_correction.py | 0 .../examples/12-Image-Filters/linear_polar.py | 0 .../examples/12-Image-Filters/log_polar.py | 0 .../mean_adaptive_threshold_filter.py | 0 .../examples/12-Image-Filters/mean_filter.py | 0 .../median_adaptive_threshold_filter.py | 0 .../12-Image-Filters/median_filter.py | 0 .../midpoint_adaptive_threshold_filter.py | 0 .../12-Image-Filters/midpoint_filter.py | 0 .../mode_adaptive_threshold_filter.py | 0 .../examples/12-Image-Filters/mode_filter.py | 0 .../examples/12-Image-Filters/negative.py | 0 .../perspective_and_rotation_correction.py | 0 .../perspective_correction.py | 0 .../12-Image-Filters/rotation_correction.py | 0 .../12-Image-Filters/sharpen_filter.py | 0 .../12-Image-Filters/unsharp_filter.py | 0 .../vflip_hmirror_transpose.py | 0 .../examples/14-Socket/http_client.py | 0 .../examples/14-Socket/http_server.py | 0 .../examples/14-Socket/network_lan.py | 0 .../examples/14-Socket/network_wlan.py | 0 .../examples/14-Socket/tcp_client.py | 0 .../examples/14-Socket/tcp_server.py | 0 .../examples/14-Socket/udp_clinet.py | 0 .../examples/14-Socket/udp_server.py | 0 .../data/font/lv_font_simsun_16_cjk.fnt | Bin 0 -> 165340 bytes .../15-LVGL/data/font/montserrat-16.fnt | Bin 0 -> 15284 bytes .../examples/15-LVGL/data/img/animimg001.png | Bin 0 -> 56009 bytes .../examples/15-LVGL/data/img/animimg002.png | Bin 0 -> 16821 bytes .../examples/15-LVGL/data/img/animimg003.png | Bin 0 -> 17936 bytes share/qtcreator/examples/15-LVGL/lvgl_demo.py | 0 .../examples/15-LVGL/lvgl_touch_demo.py | 0 .../examples/16-AI-Cube/ClassificationApp.py | 0 .../examples/16-AI-Cube/DetectionApp.py | 0 .../examples/16-AI-Cube/MultiLabelApp.py | 0 .../qtcreator/examples/16-AI-Cube/OCR_Det.py | 0 .../examples/16-AI-Cube/SegmentationApp.py | 0 .../examples/16-AI-Cube/SelfLearningApp.py | 0 .../17-Sensor/camera_dual_bind_hdmi.py | 68 +++++++++++++ .../examples/17-Sensor/camera_mirror_flip.py | 52 ++++++++++ .../17-Sensor/camera_single_bind_hdmi.py | 52 ++++++++++ .../17-Sensor/camera_single_bind_lcd.py | 52 ++++++++++ .../17-Sensor/camera_single_show_hdmi.py | 67 +++++++++++++ .../17-Sensor/camera_single_show_lcd.py | 67 +++++++++++++ .../17-Sensor/camera_snapshot_and_save.py | 91 ++++++++++++++++++ .../17-Sensor/camera_triple_bind_hdmi.py | 81 ++++++++++++++++ .../examples/99-HelloWorld/helloworld.py | 7 +- .../qtcreator/translations/qtcreator_zh_CN.ts | 2 +- 158 files changed, 960 insertions(+), 107 deletions(-) rename share/qtcreator/examples/{00-Micropython-Basics => 01-Micropython-Basics}/demo_crc16.py (100%) rename share/qtcreator/examples/{00-Micropython-Basics => 01-Micropython-Basics}/demo_files.py (100%) rename share/qtcreator/examples/{00-Micropython-Basics => 01-Micropython-Basics}/demo_fs_info.py (100%) rename share/qtcreator/examples/{00-Micropython-Basics => 01-Micropython-Basics}/demo_globals.py (100%) rename share/qtcreator/examples/{00-Micropython-Basics => 01-Micropython-Basics}/demo_json.py (100%) rename share/qtcreator/examples/{00-Micropython-Basics => 01-Micropython-Basics}/demo_logging.py (100%) rename share/qtcreator/examples/{00-Micropython-Basics => 01-Micropython-Basics}/demo_sha256.py (100%) rename share/qtcreator/examples/{00-Micropython-Basics => 01-Micropython-Basics}/demo_sys_info.py (100%) rename share/qtcreator/examples/{00-Micropython-Basics => 01-Micropython-Basics}/demo_thread.py (100%) rename share/qtcreator/examples/{00-Micropython-Basics => 01-Micropython-Basics}/demo_time.py (100%) rename share/qtcreator/examples/{00-Micropython-Basics => 01-Micropython-Basics}/demo_view_mem.py (100%) rename share/qtcreator/examples/{00-Micropython-Basics => 01-Micropython-Basics}/demo_yield.py (100%) rename share/qtcreator/examples/{00-Micropython-Basics => 01-Micropython-Basics}/demo_yield_task.py (100%) rename share/qtcreator/examples/{01-Media => 02-Media}/acodec.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{01-Media => 02-Media}/audio.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{01-Media => 02-Media}/mp4muxer.py (100%) mode change 100755 => 100644 create mode 100644 share/qtcreator/examples/02-Media/rtsp_server.py rename share/qtcreator/examples/{01-Media => 02-Media}/video_encoder.py (99%) mode change 100755 => 100644 rename share/qtcreator/examples/{01-Media => 02-Media}/video_player.py (100%) mode change 100755 => 100644 create mode 100644 share/qtcreator/examples/03-Machine/adc/adc.py create mode 100644 share/qtcreator/examples/03-Machine/fft/fft.py create mode 100644 share/qtcreator/examples/03-Machine/fpioa/fpioa.py create mode 100755 share/qtcreator/examples/03-Machine/i2c/i2c.py create mode 100644 share/qtcreator/examples/03-Machine/pin/pin.py create mode 100644 share/qtcreator/examples/03-Machine/pwm/pwm.py create mode 100644 share/qtcreator/examples/03-Machine/rtc/rtc.py create mode 100755 share/qtcreator/examples/03-Machine/spi/spi.py create mode 100644 share/qtcreator/examples/03-Machine/timer/timer.py create mode 100644 share/qtcreator/examples/03-Machine/touch/touch.py create mode 100644 share/qtcreator/examples/03-Machine/uart/uart.py create mode 100644 share/qtcreator/examples/03-Machine/uart/uart1.py create mode 100644 share/qtcreator/examples/03-Machine/wdt/wdt.py rename share/qtcreator/examples/{03-Cipher => 04-Cipher}/cipher.py (100%) rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/dynamic_gesture.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/eye_gaze.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/face_detection.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/face_landmark.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/face_mesh.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/face_parse.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/face_pose.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/face_recognition.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/face_registration.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/falldown_detect.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/finger_guessing.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/hand_detection.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/hand_keypoint_class.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/hand_keypoint_detection.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/hand_recognition.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/keyword_spotting.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/licence_det.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/licence_det_rec.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/nanotracker.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/object_detect_yolov8n.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/ocr_det.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/ocr_rec.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/person_detection.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/person_keypoint_detect.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/puzzle_game.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/segment_yolov8n.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/self_learning.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/space_resize.py (100%) mode change 100755 => 100644 rename share/qtcreator/examples/{04-AI-Demo => 05-AI-Demo}/tts_zh.py (100%) mode change 100755 => 100644 delete mode 100755 share/qtcreator/examples/05-nncase-Runtime/ai2d+kpu.py delete mode 100755 share/qtcreator/examples/05-nncase-Runtime/kpu.py create mode 100755 share/qtcreator/examples/06-Display/display_hdmi.py create mode 100755 share/qtcreator/examples/06-Display/display_lcd.py mode change 100755 => 100644 share/qtcreator/examples/07-April-Tags/find_apriltags.py mode change 100755 => 100644 share/qtcreator/examples/07-April-Tags/find_apriltags_3d_pose.py mode change 100755 => 100644 share/qtcreator/examples/08-Codes/find_barcodes.py mode change 100755 => 100644 share/qtcreator/examples/08-Codes/find_datamatrices.py mode change 100755 => 100644 share/qtcreator/examples/08-Codes/find_qrcodes.py mode change 100755 => 100644 share/qtcreator/examples/09-Color-Tracking/automatic_grayscale_color_tracking.py mode change 100755 => 100644 share/qtcreator/examples/09-Color-Tracking/automatic_rgb565_color_tracking.py mode change 100755 => 100644 share/qtcreator/examples/09-Color-Tracking/black_grayscale_line_following.py mode change 100755 => 100644 share/qtcreator/examples/09-Color-Tracking/image_histogram_info.py mode change 100755 => 100644 share/qtcreator/examples/09-Color-Tracking/image_statistics_info.py mode change 100755 => 100644 share/qtcreator/examples/09-Color-Tracking/multi_color_code_tracking.py mode change 100755 => 100644 share/qtcreator/examples/09-Color-Tracking/single_color_code_tracking.py mode change 100755 => 100644 share/qtcreator/examples/10-Drawing/arrow_drawing.py mode change 100755 => 100644 share/qtcreator/examples/10-Drawing/circle_drawing.py mode change 100755 => 100644 share/qtcreator/examples/10-Drawing/cross_drawing.py mode change 100755 => 100644 share/qtcreator/examples/10-Drawing/ellipse_drawing.py mode change 100755 => 100644 share/qtcreator/examples/10-Drawing/flood_fill.py mode change 100755 => 100644 share/qtcreator/examples/10-Drawing/image_drawing.py mode change 100755 => 100644 share/qtcreator/examples/10-Drawing/image_drawing_advanced.py mode change 100755 => 100644 share/qtcreator/examples/10-Drawing/image_drawing_alpha_blending_test.py mode change 100755 => 100644 share/qtcreator/examples/10-Drawing/keypoints_drawing.py mode change 100755 => 100644 share/qtcreator/examples/10-Drawing/line_drawing.py mode change 100755 => 100644 share/qtcreator/examples/10-Drawing/rectangle_drawing.py mode change 100755 => 100644 share/qtcreator/examples/10-Drawing/text_drawing.py mode change 100755 => 100644 share/qtcreator/examples/11-Feature-Detection/edges.py mode change 100755 => 100644 share/qtcreator/examples/11-Feature-Detection/find_blobs.py mode change 100755 => 100644 share/qtcreator/examples/11-Feature-Detection/find_lines.py mode change 100755 => 100644 share/qtcreator/examples/11-Feature-Detection/find_rects.py mode change 100755 => 100644 share/qtcreator/examples/11-Feature-Detection/hog.py mode change 100755 => 100644 share/qtcreator/examples/11-Feature-Detection/lbp.py mode change 100755 => 100644 share/qtcreator/examples/11-Feature-Detection/linear_regression_fast.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/adaptive_histogram_equalization.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/blur_filter.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/color_binary_filter.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/color_light_removal.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/edge_filter.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/erode_and_dilate.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/gamma_correction.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/grayscale_bilateral_filter.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/grayscale_binary_filter.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/grayscale_light_removal.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/histogram_equalization.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/kernel_filters.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/lens_correction.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/linear_polar.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/log_polar.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/mean_adaptive_threshold_filter.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/mean_filter.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/median_adaptive_threshold_filter.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/median_filter.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/midpoint_adaptive_threshold_filter.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/midpoint_filter.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/mode_adaptive_threshold_filter.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/mode_filter.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/negative.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/perspective_and_rotation_correction.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/perspective_correction.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/rotation_correction.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/sharpen_filter.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/unsharp_filter.py mode change 100755 => 100644 share/qtcreator/examples/12-Image-Filters/vflip_hmirror_transpose.py mode change 100755 => 100644 share/qtcreator/examples/14-Socket/http_client.py mode change 100755 => 100644 share/qtcreator/examples/14-Socket/http_server.py mode change 100755 => 100644 share/qtcreator/examples/14-Socket/network_lan.py mode change 100755 => 100644 share/qtcreator/examples/14-Socket/network_wlan.py mode change 100755 => 100644 share/qtcreator/examples/14-Socket/tcp_client.py mode change 100755 => 100644 share/qtcreator/examples/14-Socket/tcp_server.py mode change 100755 => 100644 share/qtcreator/examples/14-Socket/udp_clinet.py mode change 100755 => 100644 share/qtcreator/examples/14-Socket/udp_server.py create mode 100644 share/qtcreator/examples/15-LVGL/data/font/lv_font_simsun_16_cjk.fnt create mode 100644 share/qtcreator/examples/15-LVGL/data/font/montserrat-16.fnt create mode 100644 share/qtcreator/examples/15-LVGL/data/img/animimg001.png create mode 100644 share/qtcreator/examples/15-LVGL/data/img/animimg002.png create mode 100644 share/qtcreator/examples/15-LVGL/data/img/animimg003.png mode change 100755 => 100644 share/qtcreator/examples/15-LVGL/lvgl_demo.py mode change 100755 => 100644 share/qtcreator/examples/15-LVGL/lvgl_touch_demo.py mode change 100755 => 100644 share/qtcreator/examples/16-AI-Cube/ClassificationApp.py mode change 100755 => 100644 share/qtcreator/examples/16-AI-Cube/DetectionApp.py mode change 100755 => 100644 share/qtcreator/examples/16-AI-Cube/MultiLabelApp.py mode change 100755 => 100644 share/qtcreator/examples/16-AI-Cube/OCR_Det.py mode change 100755 => 100644 share/qtcreator/examples/16-AI-Cube/SegmentationApp.py mode change 100755 => 100644 share/qtcreator/examples/16-AI-Cube/SelfLearningApp.py create mode 100644 share/qtcreator/examples/17-Sensor/camera_dual_bind_hdmi.py create mode 100644 share/qtcreator/examples/17-Sensor/camera_mirror_flip.py create mode 100644 share/qtcreator/examples/17-Sensor/camera_single_bind_hdmi.py create mode 100644 share/qtcreator/examples/17-Sensor/camera_single_bind_lcd.py create mode 100644 share/qtcreator/examples/17-Sensor/camera_single_show_hdmi.py create mode 100644 share/qtcreator/examples/17-Sensor/camera_single_show_lcd.py create mode 100644 share/qtcreator/examples/17-Sensor/camera_snapshot_and_save.py create mode 100644 share/qtcreator/examples/17-Sensor/camera_triple_bind_hdmi.py diff --git a/share/qtcreator/examples/00-Micropython-Basics/demo_crc16.py b/share/qtcreator/examples/01-Micropython-Basics/demo_crc16.py similarity index 100% rename from share/qtcreator/examples/00-Micropython-Basics/demo_crc16.py rename to share/qtcreator/examples/01-Micropython-Basics/demo_crc16.py diff --git a/share/qtcreator/examples/00-Micropython-Basics/demo_files.py b/share/qtcreator/examples/01-Micropython-Basics/demo_files.py similarity index 100% rename from share/qtcreator/examples/00-Micropython-Basics/demo_files.py rename to share/qtcreator/examples/01-Micropython-Basics/demo_files.py diff --git a/share/qtcreator/examples/00-Micropython-Basics/demo_fs_info.py b/share/qtcreator/examples/01-Micropython-Basics/demo_fs_info.py similarity index 100% rename from share/qtcreator/examples/00-Micropython-Basics/demo_fs_info.py rename to share/qtcreator/examples/01-Micropython-Basics/demo_fs_info.py diff --git a/share/qtcreator/examples/00-Micropython-Basics/demo_globals.py b/share/qtcreator/examples/01-Micropython-Basics/demo_globals.py similarity index 100% rename from share/qtcreator/examples/00-Micropython-Basics/demo_globals.py rename to share/qtcreator/examples/01-Micropython-Basics/demo_globals.py diff --git a/share/qtcreator/examples/00-Micropython-Basics/demo_json.py b/share/qtcreator/examples/01-Micropython-Basics/demo_json.py similarity index 100% rename from share/qtcreator/examples/00-Micropython-Basics/demo_json.py rename to share/qtcreator/examples/01-Micropython-Basics/demo_json.py diff --git a/share/qtcreator/examples/00-Micropython-Basics/demo_logging.py b/share/qtcreator/examples/01-Micropython-Basics/demo_logging.py similarity index 100% rename from share/qtcreator/examples/00-Micropython-Basics/demo_logging.py rename to share/qtcreator/examples/01-Micropython-Basics/demo_logging.py diff --git a/share/qtcreator/examples/00-Micropython-Basics/demo_sha256.py b/share/qtcreator/examples/01-Micropython-Basics/demo_sha256.py similarity index 100% rename from share/qtcreator/examples/00-Micropython-Basics/demo_sha256.py rename to share/qtcreator/examples/01-Micropython-Basics/demo_sha256.py diff --git a/share/qtcreator/examples/00-Micropython-Basics/demo_sys_info.py b/share/qtcreator/examples/01-Micropython-Basics/demo_sys_info.py similarity index 100% rename from share/qtcreator/examples/00-Micropython-Basics/demo_sys_info.py rename to share/qtcreator/examples/01-Micropython-Basics/demo_sys_info.py diff --git a/share/qtcreator/examples/00-Micropython-Basics/demo_thread.py b/share/qtcreator/examples/01-Micropython-Basics/demo_thread.py similarity index 100% rename from share/qtcreator/examples/00-Micropython-Basics/demo_thread.py rename to share/qtcreator/examples/01-Micropython-Basics/demo_thread.py diff --git a/share/qtcreator/examples/00-Micropython-Basics/demo_time.py b/share/qtcreator/examples/01-Micropython-Basics/demo_time.py similarity index 100% rename from share/qtcreator/examples/00-Micropython-Basics/demo_time.py rename to share/qtcreator/examples/01-Micropython-Basics/demo_time.py diff --git a/share/qtcreator/examples/00-Micropython-Basics/demo_view_mem.py b/share/qtcreator/examples/01-Micropython-Basics/demo_view_mem.py similarity index 100% rename from share/qtcreator/examples/00-Micropython-Basics/demo_view_mem.py rename to share/qtcreator/examples/01-Micropython-Basics/demo_view_mem.py diff --git a/share/qtcreator/examples/00-Micropython-Basics/demo_yield.py b/share/qtcreator/examples/01-Micropython-Basics/demo_yield.py similarity index 100% rename from share/qtcreator/examples/00-Micropython-Basics/demo_yield.py rename to share/qtcreator/examples/01-Micropython-Basics/demo_yield.py diff --git a/share/qtcreator/examples/00-Micropython-Basics/demo_yield_task.py b/share/qtcreator/examples/01-Micropython-Basics/demo_yield_task.py similarity index 100% rename from share/qtcreator/examples/00-Micropython-Basics/demo_yield_task.py rename to share/qtcreator/examples/01-Micropython-Basics/demo_yield_task.py diff --git a/share/qtcreator/examples/01-Media/acodec.py b/share/qtcreator/examples/02-Media/acodec.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/01-Media/acodec.py rename to share/qtcreator/examples/02-Media/acodec.py diff --git a/share/qtcreator/examples/01-Media/audio.py b/share/qtcreator/examples/02-Media/audio.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/01-Media/audio.py rename to share/qtcreator/examples/02-Media/audio.py diff --git a/share/qtcreator/examples/01-Media/mp4muxer.py b/share/qtcreator/examples/02-Media/mp4muxer.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/01-Media/mp4muxer.py rename to share/qtcreator/examples/02-Media/mp4muxer.py diff --git a/share/qtcreator/examples/02-Media/rtsp_server.py b/share/qtcreator/examples/02-Media/rtsp_server.py new file mode 100644 index 00000000000..8546f2e756c --- /dev/null +++ b/share/qtcreator/examples/02-Media/rtsp_server.py @@ -0,0 +1,33 @@ +# Description: This example demonstrates how to stream video and audio to the network using the RTSP server. +# +# Note: You will need an SD card to run this example. +# +# You can run the rtsp server to stream video and audio to the network + +from time import * +from media.rtspserver import * #导入rtsp server 模块 +import os +import time + +def rtsp_server_test(): + rtspserver = RtspServer() #创建rtsp server对象 + rtspserver.start() #启动rtsp server + print("rtsp server start:",rtspserver.get_rtsp_url()) #打印rtsp server start + + time_start = time.time() #获取当前时间 + try: + while(time.time() - time_start < 30): + time.sleep(0.1) + os.exitpoint() + except KeyboardInterrupt as e: + print("user stop: ", e) + except BaseException as e: + sys.print_exception(e) + + rtspserver.stop() #停止rtsp server + print("rtsp server stop") #打印rtsp server stop + +if __name__ == "__main__": + os.exitpoint(os.EXITPOINT_ENABLE) + rtsp_server_test() + print("rtsp server done") \ No newline at end of file diff --git a/share/qtcreator/examples/01-Media/video_encoder.py b/share/qtcreator/examples/02-Media/video_encoder.py old mode 100755 new mode 100644 similarity index 99% rename from share/qtcreator/examples/01-Media/video_encoder.py rename to share/qtcreator/examples/02-Media/video_encoder.py index 1cc4bfc2b07..0a3075ffffa --- a/share/qtcreator/examples/01-Media/video_encoder.py +++ b/share/qtcreator/examples/02-Media/video_encoder.py @@ -9,8 +9,6 @@ from media.media import * import time, os -# NOT WORK NOW!!! - def venc_test(): print("venc_test start") width = 1280 diff --git a/share/qtcreator/examples/01-Media/video_player.py b/share/qtcreator/examples/02-Media/video_player.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/01-Media/video_player.py rename to share/qtcreator/examples/02-Media/video_player.py diff --git a/share/qtcreator/examples/03-Machine/adc/adc.py b/share/qtcreator/examples/03-Machine/adc/adc.py new file mode 100644 index 00000000000..9e8af2db91e --- /dev/null +++ b/share/qtcreator/examples/03-Machine/adc/adc.py @@ -0,0 +1,8 @@ +from machine import ADC + +# 实例化ADC通道0 +adc = ADC(0) +# 获取ADC通道0采样值 +print(adc.read_u16()) +# 获取ADC通道0电压值 +print(adc.read_uv(), "uV") diff --git a/share/qtcreator/examples/03-Machine/fft/fft.py b/share/qtcreator/examples/03-Machine/fft/fft.py new file mode 100644 index 00000000000..c4584d6e31e --- /dev/null +++ b/share/qtcreator/examples/03-Machine/fft/fft.py @@ -0,0 +1,34 @@ +# 基础示例 +# +# 欢迎使用CanMV IDE, 点击IDE左下角的绿色按钮开始执行脚本 + +from machine import FFT +import array +import math +from ulab import numpy as np +PI = 3.14159265358979323846264338327950288419716939937510 + +rx = [] +def input_data(): + for i in range(64): + data0 = 10 * math.cos(2 * PI * i / 64) + data1 = 20 * math.cos(2 * 2 * PI * i / 64) + data2 = 30 * math.cos(3 * 2 * PI * i / 64) + data3 = 0.2 * math.cos(4 * 2 * PI * i / 64) + data4 = 1000 * math.cos(5 * 2 * PI * i / 64) + rx.append((int(data0 + data1 + data2 + data3 + data4))) +input_data() #初始化需要进行FFT的数据,列表类型 +print(rx) +data = np.array(rx,dtype=np.uint16) #把列表数据转换成数组 +print(data) +fft1 = FFT(data, 64, 0x555) #创建一个FFT对象,运算点数为64,偏移是0x555 +res = fft1.run() #获取FFT转换后的数据 +print(res) + +res = fft1.amplitude(res) #获取各个频率点的幅值 +print(res) + +res = fft1.freq(64,38400) #获取所有频率点的频率值 +print(res) + + diff --git a/share/qtcreator/examples/03-Machine/fpioa/fpioa.py b/share/qtcreator/examples/03-Machine/fpioa/fpioa.py new file mode 100644 index 00000000000..28939456b17 --- /dev/null +++ b/share/qtcreator/examples/03-Machine/fpioa/fpioa.py @@ -0,0 +1,18 @@ +from machine import FPIOA + +# 实例化FPIOA +fpioa = FPIOA() +# 打印所有引脚配置 +fpioa.help() +# 打印指定引脚详细配置 +fpioa.help(0) +# 打印指定功能所有可用的配置引脚 +fpioa.help(FPIOA.IIC0_SDA, func=True) +# 设置Pin0为GPIO0 +fpioa.set_function(0, FPIOA.GPIO0) +# 设置Pin2为GPIO2, 同时配置其它项 +fpioa.set_function(2, FPIOA.GPIO2, ie=1, oe=1, pu=0, pd=0, st=1, sl=0, ds=7) +# 获取指定功能当前所在的引脚 +fpioa.get_pin_num(FPIOA.UART0_TXD) +# 获取指定引脚当前功能 +fpioa.get_pin_func(0) diff --git a/share/qtcreator/examples/03-Machine/i2c/i2c.py b/share/qtcreator/examples/03-Machine/i2c/i2c.py new file mode 100755 index 00000000000..ac1e19afda9 --- /dev/null +++ b/share/qtcreator/examples/03-Machine/i2c/i2c.py @@ -0,0 +1,27 @@ +from machine import I2C + +i2c4=I2C(4) # init i2c4 + +a=i2c4.scan() #scan i2c slave +print(a) + +i2c4.writeto_mem(0x3b,0xff,bytes([0x80]),mem_size=8) # write hdmi page address(0x80) +i2c4.readfrom_mem(0x3b,0x00,1,mem_size=8) # read hdmi id0 ,value =0x17 +i2c4.readfrom_mem(0x3b,0x01,1,mem_size=8) # read hdmi id1 ,value =0x2 + +i2c4.writeto(0x3b,bytes([0xff,0x80]),True) # write hdmi page address(0x80) +i2c4.writeto(0x3b,bytes([0x00]),True) #send the address0 of being readed +i2c4.readfrom(0x3b,1) #read hdmi id0 ,value =0x17 +i2c4.writeto(0x3b,bytes([0x01]),True) #send the address1 of being readed +i2c4.readfrom(0x3b,1) #read hdmi id0 ,value =0x17 + +i2c4.writeto_mem(0x3b,0xff,bytes([0x80]),mem_size=8) # write hdmi page address(0x80) +a=bytearray(1) +i2c4.readfrom_mem_into(0x3b,0x0,a,mem_size=8) # read hdmi id0 into a ,value =0x17 +print(a) #printf a,value =0x17 + +i2c4.writeto(0x3b,bytes([0xff,0x80]),True) # write hdmi page address(0x80) +i2c4.writeto(0x3b,bytes([0x00]),True) #send the address0 of being readed +b=bytearray(1) +i2c4.readfrom_into(0x3b,b) #read hdmi id0 into b ,value =0x17 +print(b) #printf a,value =0x17 \ No newline at end of file diff --git a/share/qtcreator/examples/03-Machine/pin/pin.py b/share/qtcreator/examples/03-Machine/pin/pin.py new file mode 100644 index 00000000000..46d8261d2bc --- /dev/null +++ b/share/qtcreator/examples/03-Machine/pin/pin.py @@ -0,0 +1,34 @@ +from machine import Pin +from machine import FPIOA + +# 实例化FPIOA +fpioa = FPIOA() +# 设置Pin2为GPIO2 +fpioa.set_function(2, FPIOA.GPIO2) + +# 实例化Pin2为输出 +pin = Pin(2, Pin.OUT, pull=Pin.PULL_NONE, drive=7) +# 设置输出为高 +pin.value(1) +# pin.on() +# pin.high() +# 设置输出为低 +pin.value(0) +# pin.off() +# pin.low() +# 初始化Pin2为输入 +pin.init(Pin.IN, pull=Pin.PULL_UP, drive=7) +# 获取输入 +print(pin.value()) +# 设置模式 +pin.mode(Pin.IN) +# 获取模式 +print(pin.mode()) +# 设置上下拉 +pin.pull(Pin.PULL_NONE) +# 获取上下拉 +print(pin.pull()) +# 设置驱动能力 +pin.drive(7) +# 获取驱动能力 +print(pin.drive()) diff --git a/share/qtcreator/examples/03-Machine/pwm/pwm.py b/share/qtcreator/examples/03-Machine/pwm/pwm.py new file mode 100644 index 00000000000..cdf95e282a5 --- /dev/null +++ b/share/qtcreator/examples/03-Machine/pwm/pwm.py @@ -0,0 +1,17 @@ +from machine import PWM +from machine import FPIOA + +# 实例化FPIOA +fpioa = FPIOA() +# 设置PIN60为PWM通道0 +fpioa.set_function(60, fpioa.PWM0) +# 实例化PWM通道0,频率为1000Hz,占空比为50%,默认使能输出 +pwm0 = PWM(0, 1000, 50, enable = True) +# 关闭通道0输出 +pwm0.enable(0) +# 调整通道0频率为2000Hz +pwm0.freq(2000) +# 调整通道0占空比为40% +pwm0.duty(40) +# 打开通道0输出 +pwm0.enable(1) diff --git a/share/qtcreator/examples/03-Machine/rtc/rtc.py b/share/qtcreator/examples/03-Machine/rtc/rtc.py new file mode 100644 index 00000000000..948a2215487 --- /dev/null +++ b/share/qtcreator/examples/03-Machine/rtc/rtc.py @@ -0,0 +1,8 @@ +from machine import RTC + +# 实例化RTC +rtc = RTC() +# 获取当前时间 +print(rtc.datetime()) +# 设置当前时间 +rtc.init((2024,2,28,2,23,59,0,0)) diff --git a/share/qtcreator/examples/03-Machine/spi/spi.py b/share/qtcreator/examples/03-Machine/spi/spi.py new file mode 100755 index 00000000000..929056623fd --- /dev/null +++ b/share/qtcreator/examples/03-Machine/spi/spi.py @@ -0,0 +1,35 @@ +from machine import SPI +from machine import FPIOA +a = FPIOA() + +a.help(14) +a.set_function(14,a.QSPI0_CS0) +a.help(14) + +a.help(15) +a.set_function(15,a.QSPI0_CLK) +a.help(15) + +a.help(16) +a.set_function(16,a.QSPI0_D0) +a.help(16) + +a.help(17) +a.set_function(17,a.QSPI0_D1) +a.help(17) + +spi=SPI(1,baudrate=5000000, polarity=0, phase=0, bits=8) # spi init clock 5MHz, polarity 0, phase 0, data bitwide 8bits + +spi.write(bytes([0x66])) # enable gd25lq128 reset + +spi.write(bytes([0x99])) # gd25lq128 reset + +a=bytes([0x9f]) # send buff +b=bytearray(3) # receive buf +spi.write_readinto(a,b) # read gd25lq128 id +print(b) # bytearray(b'\xc8`\x18') + +a=bytes([0x90,0,0,0]) # send buff +b=bytearray(2) # receive buf +spi.write_readinto(a,b) # read gd25lq128 id +print(b) # bytearray(b'\xc8\x17') diff --git a/share/qtcreator/examples/03-Machine/timer/timer.py b/share/qtcreator/examples/03-Machine/timer/timer.py new file mode 100644 index 00000000000..08f4dd03e81 --- /dev/null +++ b/share/qtcreator/examples/03-Machine/timer/timer.py @@ -0,0 +1,13 @@ +from machine import Timer +import time + +# 实例化一个软定时器 +tim = Timer(-1) +# 初始化定时器为单次模式,周期100ms +tim.init(period=100, mode=Timer.ONE_SHOT, callback=lambda t:print(1)) +time.sleep(0.2) +# 初始化定时器为周期模式,频率为1Hz +tim.init(freq=1, mode=Timer.PERIODIC, callback=lambda t:print(2)) +time.sleep(2) +# 释放定时器资源 +tim.deinit() diff --git a/share/qtcreator/examples/03-Machine/touch/touch.py b/share/qtcreator/examples/03-Machine/touch/touch.py new file mode 100644 index 00000000000..9a488136b94 --- /dev/null +++ b/share/qtcreator/examples/03-Machine/touch/touch.py @@ -0,0 +1,7 @@ +from machine import TOUCH + +# 实例化TOUCH设备0 +tp = TOUCH(0) +# 获取TOUCH数据 +p = tp.read() +print(p) diff --git a/share/qtcreator/examples/03-Machine/uart/uart.py b/share/qtcreator/examples/03-Machine/uart/uart.py new file mode 100644 index 00000000000..18ed964098f --- /dev/null +++ b/share/qtcreator/examples/03-Machine/uart/uart.py @@ -0,0 +1,23 @@ +from machine import UART +from machine import FPIOA + +# 实例化FPIOA +fpioa = FPIOA() +# 设置PIN60为PWM通道0 +fpioa.set_function(5, fpioa.UART2_TXD) +fpioa.set_function(6, fpioa.UART2_RXD) +# UART2: baudrate 115200, 8bits, parity none, one stopbits +uart = UART(UART.UART2, baudrate=115200, bits=UART.EIGHTBITS, parity=UART.PARITY_NONE, stop=UART.STOPBITS_ONE) +# UART write +r = uart.write("UART test") +print(r) +# UART read +r = uart.read() +print(r) +# UART readline +r = uart.readline() +print(r) +# UART readinto +b = bytearray(8) +r = uart.readinto(b) +print(r) diff --git a/share/qtcreator/examples/03-Machine/uart/uart1.py b/share/qtcreator/examples/03-Machine/uart/uart1.py new file mode 100644 index 00000000000..b3d148fcc44 --- /dev/null +++ b/share/qtcreator/examples/03-Machine/uart/uart1.py @@ -0,0 +1,49 @@ +from machine import UART +from machine import FPIOA +import time + +# 实例化FPIOA +from machine import FPIOA +fpioa = FPIOA() +#pin3 设置为串口1发送管脚 +fpioa.set_function(3, fpioa.UART1_TXD) +#设置pin4为串口1接收管脚 +fpioa.set_function(4, fpioa.UART1_RXD) +#使能pin3的输入输出功能 +fpioa.set_function(3,set_ie=1,set_oe=1) +#使能pin3的输入输出功能 +fpioa.set_function(4,set_ie=1,set_oe=1) + + +#fpioa.set_function(5, fpioa.UART2_TXD) +#fpioa.set_function(6, fpioa.UART2_RXD) + + +#UART: baudrate 115200, 8bits, parity none, one stopbits +uart = UART(UART.UART1, baudrate=115200, bits=UART.EIGHTBITS, parity=UART.PARITY_NONE, stop=UART.STOPBITS_ONE) +#打印串口配置 +print(uart) +# UART write +r = uart.write("UART test wwwwwwwwwwwww") +print(r) +# UART read +r = uart.read() +print(r) +# UART readline +r = uart.readline() +print(r) +# UART readinto +b = bytearray(8) +r = uart.readinto(b) +print(r) +i=0 +while True: + #print( "xxx %d" % (0) ) + uart.write("i={0}".format(0)) + i=i+1 + #print(uart.read()) + a=uart.read() + if len(a) > 1 : + print(a,len(a)) + time.sleep(0.1) + diff --git a/share/qtcreator/examples/03-Machine/wdt/wdt.py b/share/qtcreator/examples/03-Machine/wdt/wdt.py new file mode 100644 index 00000000000..131f340074a --- /dev/null +++ b/share/qtcreator/examples/03-Machine/wdt/wdt.py @@ -0,0 +1,9 @@ +import time +from machine import WDT + +# 实例化wdt1,timeout为3s +wdt1 = WDT(1,3) +time.sleep(2) +# 喂狗操作 +wdt1.feed() +time.sleep(2) diff --git a/share/qtcreator/examples/03-Cipher/cipher.py b/share/qtcreator/examples/04-Cipher/cipher.py similarity index 100% rename from share/qtcreator/examples/03-Cipher/cipher.py rename to share/qtcreator/examples/04-Cipher/cipher.py diff --git a/share/qtcreator/examples/04-AI-Demo/dynamic_gesture.py b/share/qtcreator/examples/05-AI-Demo/dynamic_gesture.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/dynamic_gesture.py rename to share/qtcreator/examples/05-AI-Demo/dynamic_gesture.py diff --git a/share/qtcreator/examples/04-AI-Demo/eye_gaze.py b/share/qtcreator/examples/05-AI-Demo/eye_gaze.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/eye_gaze.py rename to share/qtcreator/examples/05-AI-Demo/eye_gaze.py diff --git a/share/qtcreator/examples/04-AI-Demo/face_detection.py b/share/qtcreator/examples/05-AI-Demo/face_detection.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/face_detection.py rename to share/qtcreator/examples/05-AI-Demo/face_detection.py diff --git a/share/qtcreator/examples/04-AI-Demo/face_landmark.py b/share/qtcreator/examples/05-AI-Demo/face_landmark.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/face_landmark.py rename to share/qtcreator/examples/05-AI-Demo/face_landmark.py diff --git a/share/qtcreator/examples/04-AI-Demo/face_mesh.py b/share/qtcreator/examples/05-AI-Demo/face_mesh.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/face_mesh.py rename to share/qtcreator/examples/05-AI-Demo/face_mesh.py diff --git a/share/qtcreator/examples/04-AI-Demo/face_parse.py b/share/qtcreator/examples/05-AI-Demo/face_parse.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/face_parse.py rename to share/qtcreator/examples/05-AI-Demo/face_parse.py diff --git a/share/qtcreator/examples/04-AI-Demo/face_pose.py b/share/qtcreator/examples/05-AI-Demo/face_pose.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/face_pose.py rename to share/qtcreator/examples/05-AI-Demo/face_pose.py diff --git a/share/qtcreator/examples/04-AI-Demo/face_recognition.py b/share/qtcreator/examples/05-AI-Demo/face_recognition.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/face_recognition.py rename to share/qtcreator/examples/05-AI-Demo/face_recognition.py diff --git a/share/qtcreator/examples/04-AI-Demo/face_registration.py b/share/qtcreator/examples/05-AI-Demo/face_registration.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/face_registration.py rename to share/qtcreator/examples/05-AI-Demo/face_registration.py diff --git a/share/qtcreator/examples/04-AI-Demo/falldown_detect.py b/share/qtcreator/examples/05-AI-Demo/falldown_detect.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/falldown_detect.py rename to share/qtcreator/examples/05-AI-Demo/falldown_detect.py diff --git a/share/qtcreator/examples/04-AI-Demo/finger_guessing.py b/share/qtcreator/examples/05-AI-Demo/finger_guessing.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/finger_guessing.py rename to share/qtcreator/examples/05-AI-Demo/finger_guessing.py diff --git a/share/qtcreator/examples/04-AI-Demo/hand_detection.py b/share/qtcreator/examples/05-AI-Demo/hand_detection.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/hand_detection.py rename to share/qtcreator/examples/05-AI-Demo/hand_detection.py diff --git a/share/qtcreator/examples/04-AI-Demo/hand_keypoint_class.py b/share/qtcreator/examples/05-AI-Demo/hand_keypoint_class.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/hand_keypoint_class.py rename to share/qtcreator/examples/05-AI-Demo/hand_keypoint_class.py diff --git a/share/qtcreator/examples/04-AI-Demo/hand_keypoint_detection.py b/share/qtcreator/examples/05-AI-Demo/hand_keypoint_detection.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/hand_keypoint_detection.py rename to share/qtcreator/examples/05-AI-Demo/hand_keypoint_detection.py diff --git a/share/qtcreator/examples/04-AI-Demo/hand_recognition.py b/share/qtcreator/examples/05-AI-Demo/hand_recognition.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/hand_recognition.py rename to share/qtcreator/examples/05-AI-Demo/hand_recognition.py diff --git a/share/qtcreator/examples/04-AI-Demo/keyword_spotting.py b/share/qtcreator/examples/05-AI-Demo/keyword_spotting.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/keyword_spotting.py rename to share/qtcreator/examples/05-AI-Demo/keyword_spotting.py diff --git a/share/qtcreator/examples/04-AI-Demo/licence_det.py b/share/qtcreator/examples/05-AI-Demo/licence_det.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/licence_det.py rename to share/qtcreator/examples/05-AI-Demo/licence_det.py diff --git a/share/qtcreator/examples/04-AI-Demo/licence_det_rec.py b/share/qtcreator/examples/05-AI-Demo/licence_det_rec.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/licence_det_rec.py rename to share/qtcreator/examples/05-AI-Demo/licence_det_rec.py diff --git a/share/qtcreator/examples/04-AI-Demo/nanotracker.py b/share/qtcreator/examples/05-AI-Demo/nanotracker.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/nanotracker.py rename to share/qtcreator/examples/05-AI-Demo/nanotracker.py diff --git a/share/qtcreator/examples/04-AI-Demo/object_detect_yolov8n.py b/share/qtcreator/examples/05-AI-Demo/object_detect_yolov8n.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/object_detect_yolov8n.py rename to share/qtcreator/examples/05-AI-Demo/object_detect_yolov8n.py diff --git a/share/qtcreator/examples/04-AI-Demo/ocr_det.py b/share/qtcreator/examples/05-AI-Demo/ocr_det.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/ocr_det.py rename to share/qtcreator/examples/05-AI-Demo/ocr_det.py diff --git a/share/qtcreator/examples/04-AI-Demo/ocr_rec.py b/share/qtcreator/examples/05-AI-Demo/ocr_rec.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/ocr_rec.py rename to share/qtcreator/examples/05-AI-Demo/ocr_rec.py diff --git a/share/qtcreator/examples/04-AI-Demo/person_detection.py b/share/qtcreator/examples/05-AI-Demo/person_detection.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/person_detection.py rename to share/qtcreator/examples/05-AI-Demo/person_detection.py diff --git a/share/qtcreator/examples/04-AI-Demo/person_keypoint_detect.py b/share/qtcreator/examples/05-AI-Demo/person_keypoint_detect.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/person_keypoint_detect.py rename to share/qtcreator/examples/05-AI-Demo/person_keypoint_detect.py diff --git a/share/qtcreator/examples/04-AI-Demo/puzzle_game.py b/share/qtcreator/examples/05-AI-Demo/puzzle_game.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/puzzle_game.py rename to share/qtcreator/examples/05-AI-Demo/puzzle_game.py diff --git a/share/qtcreator/examples/04-AI-Demo/segment_yolov8n.py b/share/qtcreator/examples/05-AI-Demo/segment_yolov8n.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/segment_yolov8n.py rename to share/qtcreator/examples/05-AI-Demo/segment_yolov8n.py diff --git a/share/qtcreator/examples/04-AI-Demo/self_learning.py b/share/qtcreator/examples/05-AI-Demo/self_learning.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/self_learning.py rename to share/qtcreator/examples/05-AI-Demo/self_learning.py diff --git a/share/qtcreator/examples/04-AI-Demo/space_resize.py b/share/qtcreator/examples/05-AI-Demo/space_resize.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/space_resize.py rename to share/qtcreator/examples/05-AI-Demo/space_resize.py diff --git a/share/qtcreator/examples/04-AI-Demo/tts_zh.py b/share/qtcreator/examples/05-AI-Demo/tts_zh.py old mode 100755 new mode 100644 similarity index 100% rename from share/qtcreator/examples/04-AI-Demo/tts_zh.py rename to share/qtcreator/examples/05-AI-Demo/tts_zh.py diff --git a/share/qtcreator/examples/05-nncase-Runtime/ai2d+kpu.py b/share/qtcreator/examples/05-nncase-Runtime/ai2d+kpu.py deleted file mode 100755 index 588d69a6189..00000000000 --- a/share/qtcreator/examples/05-nncase-Runtime/ai2d+kpu.py +++ /dev/null @@ -1,62 +0,0 @@ -import nncase_runtime as nn # 导入nncase包 -import ulab.numpy as np # 导入numpy -import gc - -# We will explain how to use nncase_runtime in this test script for `KPU` and `AI2D`, -# including model reading, printing input and output information of the model, -# configuring `AI2D`, linking `AI2D` and `KPU`, setting input data, and how to obtain output. - - -# init kpu、ai2d and load kmodel -kpu = nn.kpu() -ai2d = nn.ai2d() -kpu.load_kmodel("/sdcard/app/tests/nncase_runtime/face_detection/face_detection_320.kmodel") - -# init kpu input -data = np.zeros((1,3,320,320),dtype=np.uint8) -kpu_input = nn.from_numpy(data) -kpu.set_input_tensor(0, kpu_input) - -print("inputs info:") -for i in range(kpu.inputs_size()): - print(kpu.inputs_desc(i)) - -print("outputs info:") -for i in range(kpu.outputs_size()): - print(kpu.outputs_desc(i)) - -# load input bin -data_file = "/sdcard/app/tests/nncase_runtime/face_detection/face_detection_ai2d_input.bin" -ai2d_input = np.fromfile(data_file, dtype=np.uint8) -ai2d_input = ai2d_input.reshape((1, 3, 624, 1024)) -ai2d_input_tensor = nn.from_numpy(ai2d_input) - -# config ai2d -ai2d.set_dtype(nn.ai2d_format.NCHW_FMT, - nn.ai2d_format.NCHW_FMT, - np.uint8, np.uint8) -ai2d.set_pad_param(True, [0,0,0,0,0,125,0,0], 0, [104,117,123]) -ai2d.set_resize_param(True, nn.interp_method.tf_bilinear, nn.interp_mode.half_pixel ) -ai2d_builder = ai2d.build([1,3,624,1024], [1,3,320,320]) - -# set ai2d output -ai2d_out = kpu.get_input_tensor(0) - -# run -ai2d_builder.run(ai2d_input_tensor, ai2d_out) -kpu.run() - -# get output -for i in range(kpu.outputs_size()): - data = kpu.get_output_tensor(i).to_numpy() - print("result: ", i, data.flatten()[-5:]) - print(data.shape, data.dtype) - -del kpu_input -del ai2d_input_tensor -del ai2d_builder -del ai2d_out -del ai2d -del kpu -gc.collect() -nn.shrink_memory_pool() \ No newline at end of file diff --git a/share/qtcreator/examples/05-nncase-Runtime/kpu.py b/share/qtcreator/examples/05-nncase-Runtime/kpu.py deleted file mode 100755 index e2eddd05436..00000000000 --- a/share/qtcreator/examples/05-nncase-Runtime/kpu.py +++ /dev/null @@ -1,41 +0,0 @@ -import nncase_runtime as nn -import ulab.numpy as np -import gc - -# We will explain how to use nncase_runtime in this test script for `KPU`, -# including model reading, printing input and output information of the model, -# configuring input data, and how to obtain output. - -# init kpu and load kmodel -kpu = nn.kpu() -kpu.load_kmodel("/sdcard/app/tests/nncase_runtime/face_detection/face_detection_320.kmodel") - -# dump model input and output info -print("inputs info:") -for i in range(kpu.inputs_size()): - print(kpu.inputs_desc(i)) - -print("outputs info:") -for i in range(kpu.outputs_size()): - print(kpu.outputs_desc(i)) - -# set input tensor -with open('/sdcard/app/tests/nncase_runtime/face_detection/face_detection_ai2d_output.bin', 'rb') as f: - data = f.read() - -input_data = np.frombuffer(data, dtype=np.uint8) -input_data = input_data.reshape((1,3,320,320)) -kpu.set_input_tensor(0, nn.from_numpy(input_data)) - -# run kmodel -kpu.run() - -# get output -for i in range(kpu.outputs_size()): - data = kpu.get_output_tensor(i).to_numpy() - print("result: ", i, data.flatten()[-5:]) - print(data.shape, data.dtype) - -del kpu -gc.collect() -nn.shrink_memory_pool() diff --git a/share/qtcreator/examples/06-Display/display_hdmi.py b/share/qtcreator/examples/06-Display/display_hdmi.py new file mode 100755 index 00000000000..c50ef5223ce --- /dev/null +++ b/share/qtcreator/examples/06-Display/display_hdmi.py @@ -0,0 +1,54 @@ +import time, os, urandom, sys + +from media.display import * +from media.media import * + +DISPLAY_WIDTH = ALIGN_UP(1920, 16) +DISPLAY_HEIGHT = 1080 + +def display_test(): + print("display test") + + # create image for drawing + img = image.Image(DISPLAY_WIDTH, DISPLAY_HEIGHT, image.ARGB8888) + + # use hdmi as display output + Display.init(Display.LT9611, to_ide = True) + # init media manager + MediaManager.init() + + try: + while True: + img.clear() + for i in range(10): + x = (urandom.getrandbits(11) % img.width()) + y = (urandom.getrandbits(11) % img.height()) + r = (urandom.getrandbits(8)) + g = (urandom.getrandbits(8)) + b = (urandom.getrandbits(8)) + size = (urandom.getrandbits(30) % 64) + 32 + # If the first argument is a scaler then this method expects + # to see x, y, and text. Otherwise, it expects a (x,y,text) tuple. + # Character and string rotation can be done at 0, 90, 180, 270, and etc. degrees. + img.draw_string_advanced(x,y,size, "Hello World!,你好世界!!!", color = (r, g, b),) + + # draw result to screen + Display.show_image(img) + + time.sleep(1) + os.exitpoint() + except KeyboardInterrupt as e: + print("user stop: ", e) + except BaseException as e: + print(f"Exception {e}") + + # deinit display + Display.deinit() + os.exitpoint(os.EXITPOINT_ENABLE_SLEEP) + time.sleep_ms(100) + # release media buffer + MediaManager.deinit() + +if __name__ == "__main__": + os.exitpoint(os.EXITPOINT_ENABLE) + display_test() diff --git a/share/qtcreator/examples/06-Display/display_lcd.py b/share/qtcreator/examples/06-Display/display_lcd.py new file mode 100755 index 00000000000..0f07e0c1b15 --- /dev/null +++ b/share/qtcreator/examples/06-Display/display_lcd.py @@ -0,0 +1,54 @@ +import time, os, urandom, sys + +from media.display import * +from media.media import * + +DISPLAY_WIDTH = ALIGN_UP(800, 16) +DISPLAY_HEIGHT = 480 + +def display_test(): + print("display test") + + # create image for drawing + img = image.Image(DISPLAY_WIDTH, DISPLAY_HEIGHT, image.ARGB8888) + + # use lcd as display output + Display.init(Display.ST7701, width = DISPLAY_WIDTH, height = DISPLAY_HEIGHT, to_ide = True) + # init media manager + MediaManager.init() + + try: + while True: + img.clear() + for i in range(10): + x = (urandom.getrandbits(11) % img.width()) + y = (urandom.getrandbits(11) % img.height()) + r = (urandom.getrandbits(8)) + g = (urandom.getrandbits(8)) + b = (urandom.getrandbits(8)) + size = (urandom.getrandbits(30) % 64) + 32 + # If the first argument is a scaler then this method expects + # to see x, y, and text. Otherwise, it expects a (x,y,text) tuple. + # Character and string rotation can be done at 0, 90, 180, 270, and etc. degrees. + img.draw_string_advanced(x,y,size, "Hello World!,你好世界!!!", color = (r, g, b),) + + # draw result to screen + Display.show_image(img) + + time.sleep(1) + os.exitpoint() + except KeyboardInterrupt as e: + print("user stop: ", e) + except BaseException as e: + print(f"Exception {e}") + + # deinit display + Display.deinit() + os.exitpoint(os.EXITPOINT_ENABLE_SLEEP) + time.sleep_ms(100) + # release media buffer + MediaManager.deinit() + +if __name__ == "__main__": + os.exitpoint(os.EXITPOINT_ENABLE) + display_test() diff --git a/share/qtcreator/examples/07-April-Tags/find_apriltags.py b/share/qtcreator/examples/07-April-Tags/find_apriltags.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/07-April-Tags/find_apriltags_3d_pose.py b/share/qtcreator/examples/07-April-Tags/find_apriltags_3d_pose.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/08-Codes/find_barcodes.py b/share/qtcreator/examples/08-Codes/find_barcodes.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/08-Codes/find_datamatrices.py b/share/qtcreator/examples/08-Codes/find_datamatrices.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/08-Codes/find_qrcodes.py b/share/qtcreator/examples/08-Codes/find_qrcodes.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/09-Color-Tracking/automatic_grayscale_color_tracking.py b/share/qtcreator/examples/09-Color-Tracking/automatic_grayscale_color_tracking.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/09-Color-Tracking/automatic_rgb565_color_tracking.py b/share/qtcreator/examples/09-Color-Tracking/automatic_rgb565_color_tracking.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/09-Color-Tracking/black_grayscale_line_following.py b/share/qtcreator/examples/09-Color-Tracking/black_grayscale_line_following.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/09-Color-Tracking/image_histogram_info.py b/share/qtcreator/examples/09-Color-Tracking/image_histogram_info.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/09-Color-Tracking/image_statistics_info.py b/share/qtcreator/examples/09-Color-Tracking/image_statistics_info.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/09-Color-Tracking/multi_color_code_tracking.py b/share/qtcreator/examples/09-Color-Tracking/multi_color_code_tracking.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/09-Color-Tracking/single_color_code_tracking.py b/share/qtcreator/examples/09-Color-Tracking/single_color_code_tracking.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/10-Drawing/arrow_drawing.py b/share/qtcreator/examples/10-Drawing/arrow_drawing.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/10-Drawing/circle_drawing.py b/share/qtcreator/examples/10-Drawing/circle_drawing.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/10-Drawing/cross_drawing.py b/share/qtcreator/examples/10-Drawing/cross_drawing.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/10-Drawing/ellipse_drawing.py b/share/qtcreator/examples/10-Drawing/ellipse_drawing.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/10-Drawing/flood_fill.py b/share/qtcreator/examples/10-Drawing/flood_fill.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/10-Drawing/image_drawing.py b/share/qtcreator/examples/10-Drawing/image_drawing.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/10-Drawing/image_drawing_advanced.py b/share/qtcreator/examples/10-Drawing/image_drawing_advanced.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/10-Drawing/image_drawing_alpha_blending_test.py b/share/qtcreator/examples/10-Drawing/image_drawing_alpha_blending_test.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/10-Drawing/keypoints_drawing.py b/share/qtcreator/examples/10-Drawing/keypoints_drawing.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/10-Drawing/line_drawing.py b/share/qtcreator/examples/10-Drawing/line_drawing.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/10-Drawing/rectangle_drawing.py b/share/qtcreator/examples/10-Drawing/rectangle_drawing.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/10-Drawing/text_drawing.py b/share/qtcreator/examples/10-Drawing/text_drawing.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/11-Feature-Detection/edges.py b/share/qtcreator/examples/11-Feature-Detection/edges.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/11-Feature-Detection/find_blobs.py b/share/qtcreator/examples/11-Feature-Detection/find_blobs.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/11-Feature-Detection/find_lines.py b/share/qtcreator/examples/11-Feature-Detection/find_lines.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/11-Feature-Detection/find_rects.py b/share/qtcreator/examples/11-Feature-Detection/find_rects.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/11-Feature-Detection/hog.py b/share/qtcreator/examples/11-Feature-Detection/hog.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/11-Feature-Detection/lbp.py b/share/qtcreator/examples/11-Feature-Detection/lbp.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/11-Feature-Detection/linear_regression_fast.py b/share/qtcreator/examples/11-Feature-Detection/linear_regression_fast.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/adaptive_histogram_equalization.py b/share/qtcreator/examples/12-Image-Filters/adaptive_histogram_equalization.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/blur_filter.py b/share/qtcreator/examples/12-Image-Filters/blur_filter.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/color_binary_filter.py b/share/qtcreator/examples/12-Image-Filters/color_binary_filter.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/color_light_removal.py b/share/qtcreator/examples/12-Image-Filters/color_light_removal.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/edge_filter.py b/share/qtcreator/examples/12-Image-Filters/edge_filter.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/erode_and_dilate.py b/share/qtcreator/examples/12-Image-Filters/erode_and_dilate.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/gamma_correction.py b/share/qtcreator/examples/12-Image-Filters/gamma_correction.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/grayscale_bilateral_filter.py b/share/qtcreator/examples/12-Image-Filters/grayscale_bilateral_filter.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/grayscale_binary_filter.py b/share/qtcreator/examples/12-Image-Filters/grayscale_binary_filter.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/grayscale_light_removal.py b/share/qtcreator/examples/12-Image-Filters/grayscale_light_removal.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/histogram_equalization.py b/share/qtcreator/examples/12-Image-Filters/histogram_equalization.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/kernel_filters.py b/share/qtcreator/examples/12-Image-Filters/kernel_filters.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/lens_correction.py b/share/qtcreator/examples/12-Image-Filters/lens_correction.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/linear_polar.py b/share/qtcreator/examples/12-Image-Filters/linear_polar.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/log_polar.py b/share/qtcreator/examples/12-Image-Filters/log_polar.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/mean_adaptive_threshold_filter.py b/share/qtcreator/examples/12-Image-Filters/mean_adaptive_threshold_filter.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/mean_filter.py b/share/qtcreator/examples/12-Image-Filters/mean_filter.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/median_adaptive_threshold_filter.py b/share/qtcreator/examples/12-Image-Filters/median_adaptive_threshold_filter.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/median_filter.py b/share/qtcreator/examples/12-Image-Filters/median_filter.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/midpoint_adaptive_threshold_filter.py b/share/qtcreator/examples/12-Image-Filters/midpoint_adaptive_threshold_filter.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/midpoint_filter.py b/share/qtcreator/examples/12-Image-Filters/midpoint_filter.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/mode_adaptive_threshold_filter.py b/share/qtcreator/examples/12-Image-Filters/mode_adaptive_threshold_filter.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/mode_filter.py b/share/qtcreator/examples/12-Image-Filters/mode_filter.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/negative.py b/share/qtcreator/examples/12-Image-Filters/negative.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/perspective_and_rotation_correction.py b/share/qtcreator/examples/12-Image-Filters/perspective_and_rotation_correction.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/perspective_correction.py b/share/qtcreator/examples/12-Image-Filters/perspective_correction.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/rotation_correction.py b/share/qtcreator/examples/12-Image-Filters/rotation_correction.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/sharpen_filter.py b/share/qtcreator/examples/12-Image-Filters/sharpen_filter.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/unsharp_filter.py b/share/qtcreator/examples/12-Image-Filters/unsharp_filter.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/12-Image-Filters/vflip_hmirror_transpose.py b/share/qtcreator/examples/12-Image-Filters/vflip_hmirror_transpose.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/14-Socket/http_client.py b/share/qtcreator/examples/14-Socket/http_client.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/14-Socket/http_server.py b/share/qtcreator/examples/14-Socket/http_server.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/14-Socket/network_lan.py b/share/qtcreator/examples/14-Socket/network_lan.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/14-Socket/network_wlan.py b/share/qtcreator/examples/14-Socket/network_wlan.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/14-Socket/tcp_client.py b/share/qtcreator/examples/14-Socket/tcp_client.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/14-Socket/tcp_server.py b/share/qtcreator/examples/14-Socket/tcp_server.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/14-Socket/udp_clinet.py b/share/qtcreator/examples/14-Socket/udp_clinet.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/14-Socket/udp_server.py b/share/qtcreator/examples/14-Socket/udp_server.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/15-LVGL/data/font/lv_font_simsun_16_cjk.fnt b/share/qtcreator/examples/15-LVGL/data/font/lv_font_simsun_16_cjk.fnt new file mode 100644 index 0000000000000000000000000000000000000000..7c4368c4be7017c8759de938ad33dd7bd369aaca GIT binary patch literal 165340 zcmbTe3tUxI+Q9v+eGV4^0TC4t@NiKNctAivytY78R8llkPy{qY%1dTWSEsg04V9IZ zm8hAOnW>eP-D}t;GvnJ>V+}RhSYwWrHD*?JnW?GozxKhV=AC)J@AobJuV+1Luf6uV zJnOPAhddE!o%`b3l`5^YV<|mg9eT? zh~?@kPozTTN))-ZaBL!af-DBh)h|FFB-cSuzZJb+c7w=q_!K?!wQuAWuLq4wOC)(| zDU~uABV%Qpj3-`{W&9tV$4ddj!n;XCWK{R)nAje1J>z@z?vs$1)HgXrQv3NNEnPA) z`wtlCm#pkTft=jIdHDrHq_C)XXvwhQBSwxIeGbvvLR(t$~`F$rtC_2 zBIT)+XHs5D`F+akDSu8mlJaiK2Pq$>e3Wt~<;#?>QhrDYON~m6PK`_Lo0^_FC^a{A zLh8AxGgIqQ>r)$28&jK7FG^jUdP(Zq)VotRrS3|7H1&zpgQJO>O{nGno z_si>7)bHGW3;QkZcUiyd`t9h~(eJH(@Af;|?}L63zFxi&zUjX6eKUMDzFEFnU!Cs) z-$LJIzAJoJ`mXY=@cq(vjc=9jSH4!?UB0`08-1I7JA5zs_WR!To$`I{i%jd2mXOvr z&7YQ=R+LtpHax8~ZG75*QC!*zaV{ndUN`P>8sLP($}Q#Oy8Z}k$xckkLjK1 zhtvO@ekA?f^bgZdq@PLuGX1OcuhYLx|Bjwg8J-MpMtDZIjQEUR8HpJw8L1iR8ACHl zGNxwC&bTz=%8Ztbn=@|7xF=&@#v2)*XMCG6Gjn!kL+0g~cV=$Ld?fSH%=XORW&R~o z`Um>|rvJ(QpZ5Q(zZ&2j5IrDyKu0a*j`1`HceI-q*M>;ZEJY#MNSK={DOfn@{7 z4xByks)6eUZXfvAz&{T>KJdGN%J1Kf*uKe~!P*U+tgg zZ}zwNZ}i{dzr)|*f5m^m|F-{#|2_Zv{;aHpS(j%$ko8*DJ6TEDbF-VXFU($^eR=j( z*(P_G8(*v!Bd2lX4|8}4Y|t+U ztr`>-m=ib^_%!fU;OoE-0V~Io(=#VNCnaZO&gdMSQ<_trGd^cR&WxOvoa=IK$hkFV zUCy?g?KzL+Jd^Wm&Wky}&e@;ySx#iGFLyw0UT#_LxZH}|#@tJDSLNQAdvoq>xp(EZ z+i2EQ

LP2&xQ^A!5Z3Pb$>?(Mo;K_og3!W`_ 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

^tPzWBU#(|U>seLGP=C$BN6p*V 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 ZVAohqR4dJo-9?IDag{UkY~40u_kZ8M?Gpe1 literal 0 HcmV?d00001 diff --git a/share/qtcreator/examples/15-LVGL/data/font/montserrat-16.fnt b/share/qtcreator/examples/15-LVGL/data/font/montserrat-16.fnt new file mode 100644 index 0000000000000000000000000000000000000000..f5635065c7105be16bb0d45e6d8bcbb29dafd3bc GIT binary patch literal 15284 zcmb_@4SZD9weLFT%w&cn5W)ZhL=7^)AW;$tHmUhI2gp@k>-&}dl+xGgRcl-A(^gx3 zjaNv{;p5(yK5a`|Z`)Vfr%$QUYkLLpRV;)#V7#W!+zK{ms)UsZ3A}=JU&n}xMT1KgFhVn(ct}quM8d^tQ)#!=wC)=jSYMXTHyD+PXrDHUI}CZ(O^yRzXb<_YxBO7_hMd2XhZ1xq1QqehO5H2hWCWu4cATE zHtpE7Ir&@j59g}|YYJKlUM=`k;f})Y!bQ`sn!aQDlha?C{`&Nj(`V1PX2zBohh_}T zSXgvJ(a(x@7rj|jGP7*voiiVrd30uR@n?(gDE?{jv&93&7tZ?HtRK&Md6qY;Jo2f? zU6Jocei?ZpQZxI(*^xPob6V%Dp8MR~E2A$&Yvv{9W#(Ny|K$8nFL-dlg(crB87WzJ z-huP-&R>82Z_j`E{3|Ya=YsE*&RTfw!bcZ=;=-R@c)_B*ix$T2kELUOzxbuaS1kGM zl53aROTQ359ACcdhs)B-zI4&}Mb|Aqy8NqUZM>2t81KFt@-M=e$u(wz4FB!wd30F+ZP&_P;fUzsmLOwU%7*5DP3TN1jIDqcATg5m9`}w9Xe>u*e|a22}mlRpuF8h_Yg%5 zZO5fX=su-FxkcSc3#^DzP29Q6AZ^Dtzhr^#Ctut?ypu@#{3q3iNEs-iB7^o>12jUH z*jmd{DlsVXZR=v?^ivc+*hUoJF=UbUWo3lmW8VS=Z-0O&WMTtF|5|6?pxvgpKe1g> z^<72Xq}AEwCmyJGDQ50Ed_Qndrf>ab^p#hB^n>;}+g_^GZi%*+Q=RQ9o3|WT?I;IU zZ?;_Y%PHEf-7@FUOSO)@(k^KWb!j`*0re?$AHDk~NDL(rkmM&i@9Q8rCL+=r~$;bYg7AmN)NT^68Nk+h*6& zJgc%W&|sLNqqvx6Sjv5cpB}i!n49Rs@+kJc+{QACl+6aIzlP4b&K$1AFya9ZM}S>M zM4tpUhOshOL9xVa(&`_nvr9Xvti1|a>um=59j-;{h^%B+PDm7qESE)Xb#KD?)4LtY zW;^Ba^}OC}!>Ze1C69u?;`a2|F$}6t zVWK>2fW0_n7jJmP!C<5pgZ2N(py;dmSIb6L-=5fM#4TtwS~F;==AujNC}T*zP$S4c zlISr{9VP0{xIzsm>z&>wI+(1i>z>_*;dZef4jiFjn>ON;sxdp^t2(j4! zKil89b{Apu=#;f#zkN8mMz8{B^;#+!eD$COrtvnIt+c(g`|mc9Dn!bNpZILXI0(7_ z1n1Lwn=L3b{@$wzL)j~Ckdmu4qmcK_M+TH8gWSWlL^X(G;7@qo;On0CbJDO8irdiBE`0C8=Bq&g?o9y<;?e~r5K@{DR#$fc z`TCks^eOt@Ro@*8lkyDOYPC^tByWGeyVPE8Z2F(Kw`%v*9+Lu91+2v>t z5j81yPX@y&8H_In^GO^gu#ee;|RkDp?MYiWgnGnHSJ zK0*=it;W8B5sNNd!xB+FS2!;y^5|&&+$?YB8kSUNE9U!gxc*~skX48CE`=<+Y^C|S z*EjXDFly@-)Kn$wlB3)%`qO0XkH}eI`l}=bDpLczFK^?Co*uc3Wmd4K29|gWb~Mu; z0Y%wpzOJX|Czu*pcK8EVGG1p(%W4o!L021CI)7!ZL6=&26_i(%?j%LWrfgQje9Paf z)Pt`AS;uW2iQ7CImzZTXuQCaG%*>-zYH$w-D|H(ocjVaA=DL>eG;M^W;utLOxeq{? zSk@Uitn6uu9zFAOWT6+R(Acg$Z@?OCkq`X#oo5wwRXtkMmbd?uy~3BL;MY)AXg4+= zy4#2z(W)(_Np)7I=PP<-r!iDOaVZ5*>m-G8E~$tJgX;~#2`a_z+C=XXXr>Nj?jzHl2l zcGUq39i`dej?zZxfPmH~H4LHaHo{RO$IKCKzT3yjF6(5ySGBX=6RXiw4qlC>daxDN z&`h>Qfr}<$!eus2q_jD^{-%B$PK#oFDm#B!yR^Fd0=vJ~C;h*EE!0g#-E4RDfW=3k z-eAKY#DYi6-x#!FO^{E)wKxQC306rdJG}PiTvhaDQ_FYvKL?bNL(Oy6!vG*SSQZ!&tX&)(xKOb+l5kB{e*_g&ny#90O zQoiuGM}an4vGpT`UH9Gn{|I3RAne9I$f>w2Y~>bI1$}X(7|NZAFI%NU7aTNj-35$# zCS3*VB7OXoK{R*&INC}LM5AcOLfF1N@n;0>{6=veEwO@?a1U|p7suc0X{S&(kp7x# zCBokUo7CDb!YN|U{Rd5U;JA(JR9mIpZ7Iz#_rt=V8JW=lU2-sQccld(4;z zkiLuJ?WFEQZb1b7YSl8eiFRqXLC6{fH!S!jv5X3my{M_&F;FY@Hqknob}1C3ZN_A0 zy#aTFAJ_=%rD=nZT6WON$1Q5ILcP>Qk(P*5|vF%@4rn zRV8gymo%`!F)(Q+$cBBCI5rp@z!j0=v@f{ZgN&=xI#95+yEzLe>gU9yG|A_svKLh- zfl76;SZUpgl?Uz6Q&ic8G^ex++UdCHU|t35p|l-YH1@0>Fx0yZYPR?Sh;@`3V7R9a zG!zpG;()+4U%Thl%OMe4b|l!-^EyN$+QevbNsPTC(uXRv8U~TcFpXpCjYjnYU?_w99cu!ZJCglJ@+JaJKCUKiJ-Cz~+0ViS~T)-T|xZ zaByWUL{+C$Poz6keb4a&hwClcq(WPz|AyJ87OjLU-Hx$#cu2+dL;hK*ALpkVQ~YMZ4ErhYK+-gea8N;*tG`1dL-6MB`?())O6e? z?JeNc181_)TYOk~^6p#PDR#Ja@?+0x`eQAXw#X+H_)FV|eq#2G`zbSE#m^DIrp7C3 zsj($yH@2v?Pj^r(hRY0uHSsP-k>TKO8#JPt!1xf z>r7Tuc1RlhUUtAu=Qto3`eR^N!w&fUZY-aAT`X9mEvRXM^%l+vC{O*+LJBO- z-#^;0>AJ^OV-Ixjh(RTZ(-sA9?+lRE)BKAkI&L=i;GKo`Yu_O?UG&eY>%`;lRQH5} z$y`8iWTR|N;L&{uF1K1#@bVdrn{A{b2W++V%4c2`o%xwlt`YNsi}A#!U0l+RYeDOy zxTW4r^;o{;fI*eo#cSCt)F=CudMGvG;_=DCHDyr@1Y<_vmvEQOTWb$B;i~x^E+hdK zWnI7=+m46nDt?yslvdpC6cfiPd?`B+LA6~JH(^7AC2Dvm>De*hF`2_@gWLZ@RdJe&3e8`{_eIb6;paFV?P#GXlKMX#>>+vy# zBb%leLzCzU?*&tgNUl$K^3H{{;Yvei9ya(cTC@mhlnqZptkZK)rg<@p>w7CJYcQUL z6XR#&XX#|=t}>KVjp@F~OvZ%AX*^06X2*S@u%V9&5BsW+8>QuK5~^ZA!g6tnAzpLP zH!S#*7|?Va4RlrE+2|s-5bvW4VRYdm<9@Nx2ZmgW=Wp4)7^w-2L4`5o$#)(X1IC@= z6)~_^baK+sNvPq=jba3|@Kem56a#ni>@c2MqT-4jc#W|g-eAE0bqkazygJc__acf3 zC>p3pJePP5Pb5{Yl4y&&hxBehP2XzTfQtDCf!w@}5-$T{z4>Z_i75Kf#1TL>Ve2Ua zp}@0B#8spS2d|pMf6WL?^1HJU8%TdYb`el~8PpZM7{R{TSBUHq;aY__*e2}ON^lP@ zt92pXHibA61HA&cfF}Cz4g%hmh1qc>hnHPvL^4=4)-*wPf)Dw8*D2%G;97K-jW-n7 zMM50Yc^h%>W{*YA6J6g)aO3IJEAD3!c*P*{bkY0txFY&*g+KjM;*I(Oun;4U46LsK z#N&N{blI>8jXu2nkd5B68a1K|+^nn?H0Ya4Rtp~id7DrMI}&67d3ciVCFQc4bs8MS zfp0vo!~cZ{??rV+d3KvH{eclA{1p^Qpf?T~Hpx+hyn~=j<^2>z~U&+GHqn~jSs0kJv-6sTYkaV*Ng&(q6x4qa1`PFA}LNfQ4t{8E1a4EIOe^k zYa(P|p;vE9D4m3*$QBJWZAfz5hlxLmkroSwXdAW+I@#JEHi%4l|NZiMF~79U?HxE5rbk~g?kGqT># zb@aH2dYVP-x+rm3;}*@9b;_R&zd0`p$y|p4=32B5LtwMK?Vv3=MF&d%D9NpE+IEtu zmvmRDY-&f{7e9;{zoB!3r=G@;GY!Z)v&;EaT#le*QNS#?NT%F?7>H>rnFh*nG3+-S zD2t9EM$?vnF&-dDXLapVb!6i_44A=glnS*hdJ#7fe?tE z5Zyiy*T|mmUf@B#Hl~2=ppW7&@R$3z ze8KE;UCIkCAA8AKYSK^@2CfOQ4&hLwY&OsluH37cGdtsy!d+>@jvO*CV*=9qsaj9* zVS3uPRw$7&SZR#{HxaC*;|>GN20Astg!?JZKzN2Op|E2TA{1pyr9aMrgNv<8Ane@u zGUYV${2IO?(*`%sLZg35qY@)j#S}wkFY3l~nl?tiZZM@;Y<3+NE|sy+YT}$G=3~OZ zxx-8hI1>$j+1xfDz=Dtoxi6QPzn61?!pYL2MNs9G;`)O#|ATd)DM?q;l`}t!H}S>A zp@gKs;R(fkUzTop70}$L#n%j8Vh+W0c(}qBLnMKpQp6GU9z{n|fYc??TPgl%dg`qr z6+^P;X@~+baatGb@0H>RkYm3CvYlPtJ4q04)_fN0m3P)uSYX9PGk5q6qT4+sZjRoM zF1%ZOsZy**Gm_{frAD5$JKe_~is0l%?o-W-r|B-z6&nFzt1gTxj6W?~5jc;UIIcSo z0g5f*vkn6s!P`W(uTmuzh4Xlflv~XKJmO$b7Nuq++oFPn>-2XF?qyvR7S5$)$fsO6 z1z!;`Fc+4WDZ+Eam#Q3tTVu?d2fq z8E|*UC^h&~-@1dmKAiG>uQ*_xxhkwUH zX_Ut}geL%W8@-#+4VitaIbt+=c>N)+Kmv#B@V#cnj(4KsGD!)q&e4y*?4zCX7d2!_ zWC?kJ0*Xbb94_XZ}XH9{=fpuIacycFuowlH(o!Lvd;?> z&YDdPbE#rBqAEJ`!-0Sp4(gA9nkk+&M`TLL2{^BvQl_MohThLXZAvNo6>l2OB@;F_ zdX}M{Jvo>-B{7N;@`&TSi*`AXJ8w$Dv5^(xVZ$>hU++*7upiFF4_WPqJ}9s+1_b5_ zv-mL_1Pa90eL4uS`(nSt$o%awPF$ZBYY)7bLfX(#(;+MXoI4kQRGdV4N(&Ma_?ZR% zt^fzoMgS47K@tsX3jld7;9&$kDlkXXnuoyqr$)7M(m+HL&MJ#d?C32%7&D(m&(Z_{ zm%kpEST)86f{leDAG+}fBJU7C3kb^zk=n*K4T*ahXkyq0Qtv(jFP|uh&Fs1wwIH1q`4A06!pm*+;1VuJfQ6 z_5p9!FEvsJBzK4VHkV#c2>^~}*YXGXVzwbE$*Omex^NL+5EG5u9FW1lU*$J)Gr7

wGCD>KU!JY)5n<8zm;JhLP(Nyd(TEA5($!k26H5fQh*nQiaGItn5e%YhbS2 z?T3aR0bnaRgDJ<5Ee$DLw&5R4L*4ExAFaQs zn7nEPH$&}IrnBx$WR~ziX@cj+ZHky;=;1P5oK_Oz8cZmS;x)ZXu2B*Lx7f%TkfF@j z&UpmNddx&c`r)z!dv~bG1}S+7NQH0r*VXKh5PC}Z`kLBO{Mq%iV7bl|QE+?b%Cm4+ zS@f|<&(5_by?wH!vx8?>nDS?ka#5>EjCTDf_YQIdikCNUeQ3KfpIfp_wr1NV&E^6On zDMPl%;a9cnC%HuNrO!T2NJMZyR)zIl2ycVlv^_Rib~t*n;00ip0z2yZy)X zcXf5yNcmXeRN<%ejPUSE52Ya{L}H|2jVa8(`|_#s(Zu!ry^ZggqCaGIgF>TdD@qKT zI5{_&>HGZfuW%^Q5>hW2ALP!AE(h%#c)R)Lw@q7rt3LJ?UKIZYAiKb)0?BaD$k4mm zc$1{a@Q01-o-GHe{D7z~Ym~NA_5MZ|GYG={-v$B)|q;29?Q&Y=&%CErF5ClZoK_OE%M2geacN6J^a4_Uq`&-I{gCWrpMjj({v{Fb) zrnDw!r>vNyGKKO4H$-7W#`Yb&Baw>r)?T7{I@dz@HHQEClHeudoEL~4hBfck+5HBx zu*l*x88iCPtp4Y|mIxiN&xn2SxtkUddgTE}`wJ38f323Ac zKka>=axn#wPPgGTZvhwoF zYc8+7h-g~fG@tL^RG%%Hl&o-8WcHjnpvRI$=g;Tw0sz41d@U;|q@=|JA>(n1FI{%g z(xuCn$MLW1Vn|rN0!|d0cIp3zXi9cJfUHSUv;7H>L&y#&g%nD2duUKC%nOXF)0F}( zJb{fUrTRXf9SV|vwljeskxQP2$`u)&b@72CxFmZL-*w5Mae5OE@)QKsjHZQy4pt6k z$uYnmoJ=j_?l6r?o=QHYJfVODdGAd@IpyU~>Cxz9C(N6kWS^VJSI^pYZsHtxmMpn> zHK>KLy`Y=wQA0ueemM<~H(}~07r+gIDaOc|O|vmtpaocgl9b|+nsGBKD`%>pl+2ON zLS={sxarY+*VXXU?t zn5It`9C#bDfV$^O395*#a27O5jnZ&BlTNwgA~UW+GA4sql_kaiTVdIpbXsK3i_Zb>kUf`-g^0(6 zk7!O3?q|**<%=vWGt5WN83wk-;^Yb}afZuleiuf}WG3~V0uRTfbUFo<_(CC!!Z!F7 zpZM)KQGX^J_D=J!!^6VW-UpY!m@}5b9o^lH9< zQoJC!r(Il8BaY_4tX_&7$Ot~9X;6pbIvkUfjKfFNFB80S16jz6{?Z}^`cUKvN0S(! z%Nv#ol9j(JNrF9)U>!9bRJ;+Qv`eFD*!r|PIy!>=sl_m%3l)!N#zrv-4Pblkd*QtF z82_c&u;&K*T?{4NVHYv;eJWCX*ApIss*E}*42W?M7fy-~2+D|?N_kG24}h0)$VJEk zT_`Uo<$;H&nfwp&B~=FFNnetC^t}b*`JTx;qc;JI0j^0508IOJhJPQWF> zk8>Lojyw4jRB(APiK%yWm>~AlGDvW1IPHA6G42OMNGhCqizf3IpNT%TcSalj2W^~N zJZP0|qFtEr!l7|!O4C@@TzTUxi7?JlNJb*WIp`jGhFeV(>1`m$MH-&%hQr8I$6Xxu zak&7!cQd0fINWnQ>l(nyc=7(h=PjpSI_J&iwwwJ9k5a_8ngmJTEtZfq%@0_6=2XN@nV zXg12_8W}FcCz^+U``8o18~H%SsN9}4A)4Eg~TibA&pXMEKFc1 z0iDr^KnNs(5DAQmA-D;WHX%r3%g^v}JsQu-1cFU=rMjgu@U3}xIG0N`NhHN$acmJC zo6LkHFhx-U5d;x~JH**?B1f0RiR=i0M2&`$%d#0hmE)6%Mu8^HB=foE;ln|BV=Iz) z%4BLIpUAfK7w9=jiB3u2v5+Jlm$ZK(n^P44k(LJ4eIn~Dr#Ok7%O>*~mQxkDL~g{s zB<$Q?Oou=M+`bQi0Nd7pR6Y}{_D6t~a4{|p>dJyOa@op*cw^v`_O=?Kr$o^FRTp0sZsMK>X@;Ke)TJ-|e75 z8eRM^S`?D-@qL?=%_;eK{c2ia)VK_8;}TgQVL`MqG+vWaWjR5|dDg@Qc%YC%TL5;GsY#c}=I8{=>6FdG!IiN*A85iDg5gLiC?;4I z5o1!46;lK&6$eRsghK7!{Cn2;V09rxdET||zfNCK~jFAv2rWiONrbv>(X^!A%skD_;lL^?F z0G*?ibdGBtE|?H8M2R7(6DFDv%mK0o zm!Y<*vdLhsNM|@%2xvf?a8yURs;)Jv5^NH5aCKN43+*Q%ZG_k`od|J&xsu_MLqN?6 zB6%>}t;$RTy}%)u6SFYMh%p!sh(T{4Vj9O-jAa;t z>R#Tm$wUqa$|14%5b;wiM8iyg71IbnjRg@JSZkOT6F5b|C==ue>nt3A(LfM8h+MTBe2#d({+*~1n1fi73y7sGMvE~HW5r|;3yK3$Fw&s`!DP?} z)~0r-_Zf2k!dx7Ab9sombjY4h8=(L8U?Bup0pR$w%D`C?A(m+!InR>pKeo0Ex5}D= zsWZuV)mCM5AdYBiKXSGjScc>{3PUImsR6TsAuKMYfrlujq%1)*7!o8|vL+HW8i98H zpg==#=Kft8$%8nChcu$q2ACGCx&&}-0=y9Yv~w@ybm#yB?SXoN!#EVDAXXg7p6N>ITW>uds?dRP8 zwNdXL(QWQ#xISjZ!7{>tb2V+6oIfh1IDoDWlvf@u6 zU$q$w0o+0s#>FthGGYYBfS*hPkC~E634|pW2sjaK>}(g`H#r2yKc51jLy#97e-Fph zy-&z^G!JiWe%)JIB*c+tTB0nSJ<0HiwtImTfz&~h*-D2v(ABl@qor$v0xg|&^I4vW zan1~#$O2D+OR(kU;m%BcZ`)gl?7i1g;4-NUh}fEktLa#F@11~&O#oIP&kC_oEo)^3 zNv9akWavz}5yr>1gg8PQgxo@_jJttKR^t)`q=&{rwGao~a~4pQ9G{DEttwU1DOoJn zcA+)Q0ql-7#XvX!LUM6{3)1;mZumGh34%?)-2@LJL{LM`((hH##@dB;1kaNExlTdv zo1Ec%oJr7pti>1#jS~iqc2BnHf2*EXMNmkUG!^+kE)2pWyv?Zu&jYg6!Z62&!k{w| z1Z(5m-qP0KR&Q0+qFeA}yN3a;5D*gy6_H>vnavUP>+K<#TozKv95T61CR0kJHd)rC z2^RtyszPh1qE2bbn`AP~7LA!@B1l&Kk;}mS!jDQeYD7tPrpzWh41R1fxkQA?lu>n* zLG&@1##y~A3rZN74ituLD!I(1l80Psc_^xp+kAROF{F`)LPn)5X;2iChAKgzs3xVX zDEzl6WtdeZBP~j~$*GpxoT^fh(Uh{RwnPTo{ufnRd66|MWsncl;M0U%cC|fOEw2)6 zyRrR4hxoUI1VC*e83y3WiYj{zvP@@}*-Ul-O(mnN=(REdoekX7_G44aiaHJG7Og@S z1@J&wNT>YseKmqMnF62%{le-Lwxki_e>zv&)u<5|)ZN z9B}!yP9>Dr>GVmHUJ(xY!+OwlX$R!ancW6?ri@9fswzR);)MKOk2*$s;8MUFqda~j zoTB5oEaSloKGY5e5&?|!rldhFEDE9)RoF*sd0pJVV`XzBDN;mnhdY+yd~tu3V46wj z5iWrnA}NC>o+9{EI-SpEXrhp`%VatLU#FDYfVkLvDg_V-M(EqHN-0;U9441a?XsK0 zx{$vV@~g^Kf=NbORGYMR%wblj-Fluas49A;T^S0~4p-U3`=myN9JM;koL&_w1zgc$ zs0vvh@vAj_AR17+P%>?)6w9Ghl^`UtR>FEmG-q8o_=#XNZHcC6I*~TS(`lld%cMmG2@M1dh>1+0 z5=2Z%$|x6>ma4tJwhvWEQ6-o%%Pb;85{ylXN)9qs90op;cG%<;o;1m$@`^*|EIT|> zk|fkJhuoxBBAA;iKxst*!|g^lR)QIO3Qr_sQ53HdQ`F{xP+Nd5(`E! zW63AN15}luheRMVgWIgMIVhs-VbW@rSVSexszuETWd$T{%pxU;LEw3dHH-&w6fu@C z5l#n5nI?&<$wJxW0)JQRA+kzPcwSp}3isrgNCiph)g>k?NBo9h+AA;OB9RpnDLA7V zRi|$O@*fk{P4Eibd75>;3ml2~BM~u0vkkAM0&P34;`yzNqlPrrY4pZKqOT}c7xXK+xj9GVp z&s0CE1owVz|CdY3a~6fhLEA_l7W3m8tKY45u)w%yQ?e{X;&7w_r`5Q@m$L$y)Q0uR z3}dbmG{AuZYxEYiD4x#db1@yP^;eR#PZ>`YId=w;`kX|J%~dS8TptY*9!pW8)fXXG zim4bio|FvXRcOv?5JgLnq)Lz#C4+cM;gKkP!EoHIbofe8E*VSf6X~+12=Nu(i|JsS zHXBk%(i(4xmzR|;zlwy)4wSdK+%{7*94KlGdCJUI3A$;M153k%fddy+3T2MZ6ztAo z$z94pB{xI4c~VYU40&@(VFwo+QAi|@C5v*6A?4*bPe2`)Qx4RTBC_(@5Kt&+L~cjX z7OTkorE*!T%W|-?Z1+i+oIW0AnY4nlX;FwF*;0y7=tWToEx~NKg4$GEPDE4kxX0pP z2$)GoYonecnor3{jkT0<;&`N-h!^8Lqhxg$8A1@Fg_6O9)?;+Skga6NuzFt{HRK%m zl9W%_@T|$=^UIkq&IV<)(`l?ij^_|VzT~d|k#ge6f<9w(#Pdl=l`dJ5@h~Gbmhzm^ z0JI~N&6G9CET$+I6;6Ag*1|%9V(ikahfJA+X>*xV%0wzQA@%0s*;oq1NMN`y#v>*> zWpm?3v|>%+Db7<0xQVjbVV4x?pfZ+-;K`s%qYYPE=)+k)gA@{GdCn{=OK^wEERv_9 z7(oVXrC3S{8CawcmpT(_xkY6SVFpPCspulvThd&$L(A=!>4&kTnz&uAPJwsrh>xyf+?wX5=Ae9D|HFIDqxG+ zq8#r=t?>*C1rpX=)>U-76C+(%@L1yi6v$~n8l7`Nh>h$dZDynq;ZB%h8#PLI?a!4#O>iq!~)F}6UGL9& zQ^=U(NlBc>WLk-e<+MgH?o{lYRYZF=6pCRmri((Dl9%Es(wXN|Dv=YD zgW+UZN zXdkz5uY>4IR|!^2$rzj`BH4n;EMXjxkk#vt=?GWUY6^xBx?(Xzy_OPF^4cqQhfJ*j zMqOKoDe1T+l5-F`(xsEAv__M+HqeKy(ReiORc93HXj$%;%e_Iwnv!HoPFFAmb7hp4E{cB~)=5^}2o7UxmD%AaH`i8TX`k zvSijHd7TfJQ)-vckuunZvIS?t&l}1PdpvEjli4DV(*e#)`SUQWsS;Fct!57nMqi2F z;w&WsVH0CYF>aeRm!fnPot~y$T9`(pu*RnM%XAI`_LMQE>_VluSC_@Yii9g;l1Q@} zTP{{5=(H6wws^uyapq*I;x!i}g;KCkL~;fv_(IC0q*qFUB73x8vkuIJ9X%L;mTd^{Vg2I#|NjK(_vz#vz zx4CR`14T04uuT<{vJOqAtdck*G;Pm^iv^a5$ZKImUTPsiK~q9sM2(uDp0eurB%e$s z(;>MXllgO6Z|+Y4Nqfnw2^}Rddthz4HjJvvmW)xaK}98R8$Dws3jBotB04h#+rD zxRHuSodxP;Ld@xu2`{@r_XR2##@NCsZ4pU_q&~)NH~JVG7qg+&BQ!jLMMq>F=I@WP?u@8lr|Fjir=C*psuwPc=W-zm*JgNrr3NS7ziv&f$LCITea@6lCi!h7G?`M7b06^}J z#Z~D-ZJ-z7LBa}03^*Gv8{Fz_#-C9jhBQ+M+md-i?N%cewL%++gx$6P=n5APu7!PA z(i6+NJ+U0==2DVq#IJFB(3-`zph;UEqX@_W#t@mvACGCMyg9ARQu&I7HP`nW_j(5@ zJD$%~Sk5CAnOdSzRWKbSc|@6z@D?|2XB`!gxRPTfg9(BX{*o=4xB0U9VCFgLEPfZ3&tY64>l$ITtVUFcV8r z`Jl)EYf(kq&vG`_M?z*RTGoTc8MDDWDuJCKxW-MzsMPO542&=7s)`L#OeY17T7ix9 z`GCPxD$;QfrZ^cz*r_ij0}6{PsV(s8pdH1Xo^XgvrEx7q87gVmk`BAQ6rC`qLTY;; z7_Snvru~Un#r0RR3z7?@nJgm&lFy-8g~S($vqmy+Pl+_N)1^qokhl!35>)9;sMnyO zqVbry4CS>Y;8L-rilHQNV5EpHv%Z)umO~{nEhCXx(m~ko*2h%|T{)F?AsUdFDOKUw z0L+?yXa~?7j3ON^m24>!3q)G02)nZ|?gUG+>`sMBO*ui<*@Prw5ob~ft877F(KV`q zq?C&zB|aI3vz5FHD>G`O+QI`zJ+0D zkOT{w1DP-g*$5k1Bqs>&J*(;y`nvBBkRwiqp0 zT)A`{2i}V|sw*aKP(-QM*(zDUQ+ZrKC{imzQomjick&rGYbZE^Wm`64#uF+`U2UN| z6bT>*AxpdEA_`|AQ6PR)w~2V zkp+?2RH=!L!QyAFE^U$uR*bB_o;2=vE$MX|gG412L%}4rH(f02)TE;vRqCpJSXPI^ zCZ|1UW$~0Qn23jBl|WI!2Q*wfY3Jm)OvukC^ga=-C!^B5GFGBPu~=E+)v4pESY9jP z3KAKxP2QNlmUd3MaTD!U7WC1mj&?W|Ksmvm2BkF&jE^v6f+SFe&xG?flRId);s%ca zq_Dhsg+dRK4N5>PZ2)1ojJH>6PCMb_Vnq{9IU%JfocgOlrIv-ux`S429OT!X9;S@? zWL(Uw3#Fi1tf%J9S%{;}4r4BB&+BaYgp*_lnFRM~(Rkcl!m}whZby}jKdMeE++HKa zhCDWh0gFmFt0bePICmB@>O^XnrRFTf)e22O;He<8QJ|eUeaTi8zdWz@tF=53-ZVoN z7%P#&tq@`g$>R}Y4rCO3(I9Dbnp0s>)RHd;U7lL*%kL{5Do#!%i3b^pyI>Arb}DX5 z>6DU8QV}d=;whM=MId{YfJn$4uJ+PC)}~z&zMju(Ld)&| zkq5KRAP!CgRn>`bEDGr;LTh4NK8uw#i?mgO#v+MEC~1mIdR!Shs&d-%Ig2B!P#B~U zAD#ijkA;bs%CamUi)S>MU_}OuG02Gl7dY)>fX5V$sv-q{0hI=8@p4e4i|ACQV%QTc zrGN(o3~^cT4?&j{F_+n`jqsVgt>kuv!<;*mmPHduc{rsm*b8Nm#E3`|um;T=DJ6rX zT2iJsV?jii+X-S42U}(>GO~<`oF!yu@dlsur6qejRf6?Ry z=%kg1%g69&UK?WVq_fCi4q3@sGSGl!d6V0vPcaTjn6kPu4h@kK!8QXT;lgrtFy@rm zlof}f7J$cK826AM&m~vKxiS;6yV)3r@~AEti7I*C<14FmW~anpz@uK+sF0|55dmu@ za)aP|MN-9zhRxbxC7BFb=$f_3lip;-m~%wbLaxCi1G&2_;mU|KW`{E(mp5U-g1isIYQ_OKT9iWe4fpG4 zUpA;!1Uz0`K}!ubhNm2+fJk9N36aLBiTe^R6Q8w~)ewyu%3g}no8(l=Q7(a@FC8qE zeNYuL=>gM3ezl)-Ta8>Kq;wk1-ngb1O%)0`Dp%lBPNT0V!_EGvv*I?=WNPEW=mb!6F)krO7zQlWAQq;}I4WfbUE6*48t8&XDdGEh?CQAp}aN$nDZ19S{Y z11BOSAX!UUy`Gpe;^YCN7;jMRCano;r69NanX<*E%tI^_1YWte=5T_PRw_8ZAm5fx_W%FdLkWyn#gTYEgx?OIG$?2_-2D=B$#JO}q7!0ebk|+=~ zxoYFGht}v+Qc*%vKp7a6DJ%Lk8_s~3up}u5!@x$$(moLE$56dU&pWY%+5qQ>qDZ%0;T5i? z%M~o0F&e#UH|Eo-J!Eb22*lQgG+;o@z=p`UA?a~2YM0&!CgV$PxzlS0X>*&3BJ7~U zT)BJ(_SmDWJnB=KQm9-mRRLN?uO(4JNHpUy#&zyAWOkNBwMi~4UCxxzAQFS+gbFH` zDrqMProkZu6?p;IbzU;>aFntX@YzEe;EvHzMk~#_9bT8jfTROKrx7^NVBppS?6py^ zK=3gq;iOo%PZA)QG`QErg0xaL$ESt0@GgH*5sCP;0gsfjpa55Z4ko#zCSuj#a#Sq? z-32mRF+^gJ)snhQ-i}3G@{}~8c9pELge#))P)3l`#L_WM+CzGPNaizP9l_~KZa#pf zvAkXpWmA+Tr$8fQ)@?@;DCAPGzFe&jCA5`IfbKU-gRU~@_*6`umJ94Dh6)aWJt7TZ zjqqs;pBF@%$8f+S2bjjnq`;_`&G^yz%p(=I9HEF{2F#(wKv@W;tx_&*D=Vu6 zi+Zg@rgZXYk26T(K7!JeFhZ_yt8Ho6>*tEvB2Zy3cn*w?Ws}to(F$Fl=r9CBc|)cm zsYEllC~uX<4HivJu>I+*6=+{Ntd*EEWYH+HLU_&@b!&*QOcqS~U@!sac7dq9AdNd= zBk#ujN;rTRwbBZoW<4yFM+_;Hc36Q_R9na*nF9EmK`LhOi?03hBT_98^I8>80e=HNudZ} z3&WT78BmD_C`Fb7?QpY%rzBi)p_WLN26e^Um84Nq0KF0ej$dt%GP*?|YRt#U6q^TD zAgm?hGGKuSVZd_J-m*^?lom*n+wQW)v=PV&q%|io>b(>Y3n-V9`CP*Da4x6u)j~7j zE0W6@eJ;={Gs8F$wK?l{I?yZ+5)X8ps3#7AhVWQMkpQgrYW>x( zNvTKpYKv+?qqA9$A)N*$mQ=P|jZtl(*99~&tpwTak_;sEX&D&)^cfeJZB9EqJ}V=9 zQwiUUGz%8Gx%D}d7W8EliOE1WxGG@Ur;Md@mZ(xxON^_9+_x75%-&!!5X4zGqY=u0 zO@?B^S0HCefgVrz1bXg(MW6@r57lps3CwVVZ)xFM&1q*?UplSOf$x}2srC@FAceXTt_rO^_+^lA;$qF%xO?>u~dcZ&JfwWAuq}pF)*AH*+Ll1siy%7#25&I z8YDLGbV+!S*RyUftF946ZTk)W(ptRil}P-p>ukZgwL0tV>MyT5z=~@?V*f?g)diV| zG>DTJ9Ry1`NwDh;1q(810xZX85Q?VgAOdlL+Aca_`P_jQU6TO_?AW7Nu@slWU~MSa z9s|}+bK(G4-5FpBsg%R_u6V4GskiR>-&?9$qXSl79$;x~>&~CL+rETeZNGk9z}LDe za_>^agY5qTx9`6N3~;5oukqhnE89w_{R02ml3=U}|I?1bYBO6ZuDc=XkQO_)*0^`K z(0;!NN`$ z0;{p>7UmN?SlU_L44B>9vepW%F=1&F*q-yJRi*8k+{VgriZZ?b`qfrOk28UWgZ3+>ud?Lwim_HTPDDo2sdv0+UnnNJ-GuGX$@LE3JM z`QDQ1V%esUKvL)~ur9i`!nd(jS7WuZHogFs0*-2G_t(}@?_E>e!f#EJA{k49WzVhK z8^Cp;Xg^JAz1X&svU*>wf@~FOtwo+NpWAC0sy9^|5eGXNn}^#q^7hSZX<)9p#@lMQ zfaQ;lI^|#khOlb5ZOc@W<60g-k3D>J%PqvmDh&tLXj;NL3K(H0H2@)V8VXc4c!A51e$p^chm zlxmbW@7*l>cbYIzL7jeT0fg>#lB;!At#pk&pfw#BPVCKKk2wH@kN^guwt11syp+*xtQb`vIa3EOQ+PByb4EqynOP zjvM5~%oqkU(=fCU!U? z=n+~~q3Y9>HWiHLC#v zt?3Y;Du*z^G!XTMyTitFF#cc%HVmLK9ft!6I#f3rJfd)*dIC}7PRGJedozj&3RD$0 zFc(}$nhzTgTCdS9HsN6MCN!tx93ljl4z4TfhmGi95?5EoYb+94(;+}r4+xeDCIPI5 zIublOmGXGUAM0V6lhP!K*2Zw1=uBTChLtJhYzW)3)}*!E)Q#nKx;Y#h!mJqb?k^E z;(L?zq`3voLEJjfm=3`a0&yU8xDf2YP(6`9d=AwOxm$&9pLhPWM$9cj2insyP=w&x z!PT@0SZ(7EVwkLGF%B z*1Nt5ZPlcD?5hFlXp)!`WUi)1M?{UNdQEPDb1)_9pbk}42(5;DN5p41m;%*Jb+*`q zKY0xMEx-UKq`C&9{sM;D?d{f3w0lun^(~j}-hI}#G-U5Oi|PV_c2DmuX`QZbTY;g; z(B*7R`Y zd3tK>evJP&o@z-JvfIc)K(PqqbA{lXe3p{!$|KvG4RaTZc5 z;PZ%ps!O&NRNcZBP@t@1ps;HG3w#1l*b%XQ^~tt^s#|9ZC{VT!sQA9!ssIF1Ue zp#AH$xBm%8kf^4Xsxxdz-L&>$YhT^D{8o!{kSR8yIs34*)$MNQTeplP?UxhV!BAGq z(+XY`ab!|UNImIq6;p83%>GTRi79AKhaiEabix>YB-a_$odIuU(-B!`BtSxhv8-;A z_^{>fpvw=DdZTBJN1!!_!y}~Xa!Bh5$dQEvBlQx5HB2yQPlrIkq~LOZaZs@Nb*Co| z8x*Lbj=r=hQ$3HM#pZ+d>;viu+Wh@Uw{7RBw`t=*$%NYVwoF3Hu7cJ~!+~-L2RQbi zkO;IK5l9OsAaS+R!N$huGM8!VP!MMQ=_UN&N_Bq{I9G-xnIJ0;qTsMI45g)F1`EPs znqn~qf)R)T&QDv@{`_wDnk}yP5_b^U)p?)1MmV%U>`bQq)CEFL=1;GKum2+XDhePJ z?GM%v(j&sddk>Omz0!WGMs1H+`?E&={c{Kow(;%X-smNqzH#6!YkP-|TEh?VP!E8- zcK;!r>(O@iK1X}VVzG7#Rbx!MzHQwE_UH3GgifzAv0eVFMR5Ma?fQ$MtJSUdeW@>1Wb_#^=% zGzCssVo@9%b%>zg2rrgF#3Tw{cFqzk1?{s|@jotw?GKn~6RrP$#1JRRfRtb{F%iVU zu|7c{h9tvaVu-;Q7KKT0UXS!|7ef=x@4p4ICY1kC8T`lc{{Lio!O_I2L+~^X$>98L zp2q)O!+S^`*MD*N|C8a}KiuBmlWHAP4#}wfZ$hI;DF(q1E~XHO6=M_|5Yu28E$|%z zC^!rYqqu#RPW`us%YTP!6w6^aL36?>Tm(3JS&D*VJp;Iy;7A&SSQrE6g|z8+tAF_) z^hXavAivueF+&nylqErQLxI;>h$#+(P!7Cp2cp^smj6p!V`*?mHU%8EK!5=L z8#oDCOiC$IEDd5TMPn3rpGW)Imj5Ye49uZ$01^iw3Y-NFUK|46LJ}awC`v#W%?W3u zw$H2lZ$S$LS@33b@PZWv=o%tr#55$O#25=A51@nugtwiH+~y`PSXE~{68Ykx5?Gtl2`SqA;iDD2^gL6p%BHX_S7~Z0@BuEV&VV{RP(lPM9a_~|oSb_?# z(QjG4*+M6qqcb@tALm%`D)n~6a^R9WnE`SK-gQnI(DEM>O6UEhp6a>w{j z`A2iEU2xxzij$Up zw)?ralP_)fh-)6TCD(NBTH@4KSG{%DbH1Av4<0!7oSSd$x9a?UTl&UMTfXR-!r(1% z?D^%VJX;vFW!R{%dox?+#D}ivviaxlDocCz+rXT^WW{y*tsCFEpFMm1XFq;5dcpH= zEq`gan4PLxIeYU;Y|ih#rPR_5kBXP~{CLfnCwDv!ckXX`cE|ATr!Uy>+w%8jKYaG< z=I*hhe_m<(MeAI;^`g^_e{8e%z2PVOT@OzmdG_E9+cx_j@V>}y_^~|rm5)fr%;(F^ z_P#S`%^cSIE9T;1EA=D$>6T)>M_v8Gkgrc$Zpxmw^28WQzBfBQ)IR>_*Zs$R^5yy! zpHKU+^Utr0Sfr@9Uq3x&86keaB)grNvEtXHVS4HpBT!g8-DcjA5ES-xp~QwB^N0ail@7D>7v-x zJPW(#g@D?A*Bb$g<&{AV=*-{K3$II0n*E}x&pShXANPOln5C!9yJ=%?@Y%@5`48xx zp9YN|Z+YRNOP}b!Wx=rbrvJWW`I=++xnk8T7n_gGTECoe#T8dvcg|R87jEJ-d+3A{ zP6*CBVeW$UfvbkxGwa7|?^%ycf8(9&ue#{MV?SMa!O}sRp##>ueIIpEIia z`uR^h`$l^9Z+$VvnT4+x4jwY({bRoS`s?l6-#cm}WEx>Qam29kZ-31%9ie?fUFrVC z0_~5BI%_se@J^g~`-hj#opSsaZ$5h455GNNIlt*x)%aej@m*AlFTC=Vb%Srz%n3?P zP#t~Ei(8jJ6Q;SJy3R2<+rw!3T71Dd0I@VD(;y=Kc%$IT`hH%}h3;^7HB z`uqxE) z{mA&W4?g(AL$e1;#^pYIX68o?7na_d<#b@@uio;|MQa`(^2nu~8oSTEv!VNZSN`1Y zBUY8KKT6ww>XI>YejVIx(A!OuzLVYhOHBD@_PY~j9jZ`QD}*w+IlU9siKL4&DR zU)eQOJN3%k?en_$2X^1MeMtZBG@pMzwL#Wv+Lv>l9JuQ(ho$+a-$RQh|2%8VqV>e} z#YGQ5w_SS7!}H%uEd5x$p3hBw_LpgM`rI|}%@_I~)&0#iuf0D1{P>$|yPPmFIZ3x| z)yQ2Zby>M}%5S1|gYLiR#MPHRKlfXacF&M6!r}=Ry9cdVbM(O7XP>ic;qrp5jkn(Dc$66RJ#4Rx=Y_P2j0G9 z7W>>u@1Asa>aox(H@&(g@!0mY^XAQ)+IjxwONc4Q{kpq2=#hJ!?~$bj^N=pYc~7c# zuKRS)PfzzAzx(a0PqVxnzF&I7w@sC9-3B(S_%;ze<__O&DkL;ade8Zb#hvB%*7ePzqK6ZUkw!!rGgt=*5$ytPKBQoV8`b@ltJv!9)} z0oVR2~Z#+@TxpZe=_(zV|&h;)0gQ*L^n z!AD(u-Sn}2-mxclJxfn}7C!H-Z^~PWE7H)@Yfnx-{{5CoGp6=Bch8LXo;_t}#{Nm= zCUVN|T|3|Gzp63y`?Tfr)}4U;w)*rRBB3sCy>gXq>8tRr&OJYPw$E)pt=ue`y7RHE z%`>*Mqdyzvd33;pRk<(vT{@WSsrlxaD+c{~?PWKN>U{r)bB_9=(+f{8USwai#X9h9 z*R`Lo>vUgn4ZZ9UG1i-x%KKH0)15Ws*E=rXzWAZ7@7~R7Kil|W?+24ly!YdZS0=o% zsQ5m0h4|^+gTMK0>Hsu7XWXx!Km8pvbn#6$O?lBFyn`^@7v zE&6r-*@^3(+4#dN>-wiJ@4V;sQGFn0Rd?uuFRncEn_ZgJm~r66U%yyggNM_ztx)7iVHopQ(f zsaNNqpFjJ<4L_W=Zg9$bfvln7>cx-meE`o>f92$^$2~iK!qP8?KC!J=a#gWV_<2gh#~TK@ZhX3zbS`=M!}?2`#w@bt-*|t^ ztSjcchAzsO_yMy%EPI9xxbyADr=R|cXZcM(TzlK5H@jRl+WF&k)WEB6SqD$>Ue|Ai zau?Ob@!gn)4|aCC4)dbxr!Aw7`e2Xiz1?4(x98XK7fDx7m%ltL zMqPa3gX7oz{=WA4F6kLVFFIvN>En5tKThbYetFSnsh1ZGdlCKNl zAtlLOe&a;j7tcewT{BL*sr2FK6=y=s=09$iuKD71{KV;}rTT8_borzy!@7KYPN&i1 zR>ilh*wcOMwv~M^-gU0>o<9aX#6(AbE$b=W^YhnlKQ#WCUN3)el6vsDKUz0A-}q{~ z?Yc>#C%5e=>>-BrwB8bP&6@t?_V3@7e&Ra)~jK@BGrupUFH*&daUzz;a#M|%seu4b?8Jwt44ne*X&nyT@2}cl&wj$@GiQeDmI8p1FID`FQ-S=+L9H zXFYirzw0!^o!6YvJG>5F?D z*YM*&A9%cXZoK(tmH(0{Q+iQ*#^;_| z%&d8y-Pn86g(HW3*7ZuqFFm`YhF#tZy~|@B^w!axU!FK&+c_h`$DZ2tC*v8{D0({= z8m?GBVaut`FQ+VhqO;)|>#N&0ukHWDdDDArJ$BZw&9S3XXN|*g*V>=nI$N^s*U((^ zhrc@R{EpvsN@)4g?Pmnhfwm!=`d{+v0P&9RCY>GqgSh0iA!C2(+2`Fy0?zoFH?Fz; z>`#xsZgs=WnV+O9=Px|%*`MZ2db?);o$<&~XHNL)^<8UDY1rI}GApJy-g*7>tIzmm z&&a^ehHEb9KWl3LKi+x$niB&jKA#>l?#YRBo;mKtkH5O|r{No}-u6Ip$%OMp(YMn_ zU1wO@M>TKjg%b!ulV)E`IGLuweL9>X`NRNH{E<| z?wp0)ud*#%FmmpYqu+dX(!|o%+2r%jF6uf$mOXLPxo^E`erVGC^1?gIo7ePuf6k;p zkJpzUdt>G6NsW_Ed~5C8$xEWy^~%-#?_IKMsMpMIjcFEa*vhvq21R82I$ z6k7H9MNiCIb;_giI>JPww&1#IDDO zzW(~{Zk^}MBo<6t+VAa|CoDf#dFzkFE7xwGw4pru`W<8Yj(6RBzjes#BY$u=@0uN1 z#M;l@@XGDJ-`_hcapK*IANzi~@$Gwdc)p_NY#9CdsoJIEMm@G#Vm$M?Syp-!`GG1*oYd`RpbRBud^U)={)0aLqaQah&&-r-uw0&GrPCwz%`=IOI8MpO?T>lMQ-g#t2?uju|*!8Z} zC-oT&Z`%5k(sN>kc>62&piaKKFS+vZvHiQR`T#j;%E{NVJ$B^IJu$m&aOX(lMH9A-`@QG#3wvuNn|?-`se2uZEkixO?Sf z-gV|h@#2=gueqmQvjl;+UWkkw;iP8Wn-({2e6FwSajW-9e#p*~FS&BqIa7Z!Y`K+x zaGHO@s#({(7nuF{*PR+x_5P&m+Y<)Ku8z(^2hW`G-s4Zj3&?lB$d3E0GI-VlPmTC# zNW(3ssKYv|nJ;7jVB#Ewt8JnEWy%Y(nHJ^0Z$ zRj2N!uwCQN%Ip33G3&|n<&$v-lo~gRD>&r8jU7z2+v3c2}%;3kq-SpDD)zKdBPP_i}t#jsu zZ@hTKB^z&H&sDF}J@?~@{ccGP{zQifkT=aM_U+cpeBmvOmQ|A=&BPvWOtrao(r zs>{Vt=bqH34=(-J5az*=uex6D_Z577zryFAPVRbzCOhi#*XKXiW5DQ-U;1kFyvyIu z4?6jlvz{tzp6qwrCc`<;{`On9hWF;bI(^~hW3n50(Y`{c+@!J~My0e1P-0fcCt%mYrx@ ztRG_jaNK9Q<>y`9YxE9va?lN`VV7z}J-Ti6K-_PSe|zx_kEHKy*fesp@+zb4%qtgf z>Av#&wKI<)Cv3XrX|HJa#4cY9h-dG=&4*og;-EKv$u3xq&Q3Pnb^g1WA<~Ue{vAaZ zoqO@46Q&KPk}uEevUTjJPdn+DO~ZO2#CInT=#Jj-;bdqK)RR=M>eB!0qr{&ucQ?(L zc^dNCBRf2=vQMwuHu&ntkK6T9Pmg%}L%IhiOtC%gxT)8vtG^lH5_w;~Y zjAf5|uDiVZSp2AkvW>Iwt~>g^IIpkxO#hBk1~-4x`L3tF5BR*Bhc6m2rpK7%fS>OE z?gG=#i6{E3T-$5Hq)q?ox%jPfKi;((xz2QK^K<6A#MaxZX` z@jWNOov(csbpC~rzUrx`4>0s{KK0yv_B7OaLGF9g9YOUunvGnyJ*zf!>(+Drv(xO& z>h5%xe!(doO%DJ(;hj#>BFS+!k16kdftmKh&G5eJh5=j znzKfpINE#MNA@4wE^_vRmyg?c()eY4o${MCN6pyy;DhIW7ro^cZgr2svb(IecYbfX zacrM4-kVSO*Ja(^HvCZ+|@aV8if>ULImI-1g&} z51gYMv*Vi`nN7p63D!QH8%BL|&ku&4m#?Fjb{Uzu@AIc_c-~lga@_*1_m4+kxPs^x zzH!BGJ9A@mn^NxPE+lS552MScPk-jCVSa9JS8E`fXk05^}r2sXhK)Byn?CK@2< z;{!sCD&CM0^nsTp2u(%~Gz|_L&_4MxHvlNLn=>e}1Z|u!f(pTUy8(a>jwqcBV5UK@ zEx|0%S#*IArffMDP;i(Hk2(R?k}nZrHbh1tCc%}RxcdeODxS$T8$n-zjRhE(#|3v#@p8^( zgnB(8gb`Y0fQsAHG9lK}9iT{cgGzP^^Ut|J3NZ;jGiXOjb7i*r2U&&z>dArU8Zv?k zmQP6URyGJ@1m7o6Wcpx$oifwl+xs9ZC;)uZpu!Pn5&QPKe$Jwi5vm-)FvY8qt9pI_ zNEJYCB&-_eEl}o1S{y~;

w&zNcMu3sMhq-FDkCt=OeM(U;6_2Z)jIlQyl|&Z7h0b%s$k1miw zrdWfKMKc36Xu85?JD`oC$9D3#^d1>pwSc1qNST~J2xBEj`Es5h;CfSlpf5@=DKZfF zzzg2CHjA6^ar3H2%!4MvH4W+*@?jT#de8n`*FS8yCoy&=R~)B-5Z5F*?PUHp$GEq0>O% zDxW>yek%(wmcVZ`x(bpWuasERWH{&D*~f~t5JvL~j85sUBjtqkU}bJl zhdPRG)NGG#y`_YFt6CpY-F1p?fz1GcFVBz{LK-WmW`rGrjNq6GW|L*@#sUtt1zEuA z7RC;4;H0ilT<*-8 zaKyl&BjnI)eynrUcB(2gV`J?+$jV%n`& zBxP+?CY@LC%>qXZd`W7(2U>!4i6mI(A|i|*&z1!vjPzM3*);_Q6yz14)Ol$}vkHjJ zU|S{htGrw>4P3t7?2Ag80)j4y=DKpSfPugVgP8|q1Ap{@>-bu_;4=x$f`G*~Ro|;z zX`QZ~j2h@4a50KLN)Y)TO$io-b2^#}1I#DjViB2KvMpI4;4g4-guJ6La;>@r>qn6v0?gF{R66I4u%U(9_i_TUcI*&jMGhMIuFh_G+S5Z?*gHQ)NHbe542#OA@Ur971uP?a>WaWk#rbYh{g}-Ec$Qp3QSGg z#1jKbwcfiJw*H_MpuAYGv8ZAiAmB?X=c3viNRe= zY0*WlU2OHQ;e#5j7JRK#dZQ3-j0GI}TvW7r_?l&K|QXmLc zm~F0(JaOk$tZz zY;}^qh{OR0FKwxkjzGFTf+GyCZ+WYdbh3$&*T}1qT%ffIgv(%s0iw`l1!Vyj82++$ z1%&@{En|&Fs1Ka)29&A=CTu{{fDYP=Pa-xQLtv3D0Re2Vh-FY*GcQzazJWW};3!&P zi-o7$v{XsA6Eq2&7kYMo!73SntCILNxmFt8s?7x<R!L)Qn%zid?R#Ym^bVJgp!5P0c!5LtA15#<96nnoFV-2)^J#mWeU?Xy@An0!>5L zPpE{cJ?EI>x)124rI(Vn1O(OtAXuVJA|=@nCafC;fYAvcv|Q(Fs+&istTS}vh#}4R zPK3)sv$QN!+<1{IVd$g;S)op4+8s5t+Rhj9b^eH<*>#GpP+A58V%q%7EtgFD-+Qv* zOdYB7VcO95AVt)a1g|3IeL-ilCHu+>WQ1Ng@J&xPwdEtIX_)1bD2^P=VZ?F1<+Gjw zc(UEEy0q%xz7T=o4;|?!HuGdtP#7&U0+hc2(@^9>2ozfJHr84a*BQ!ofzWjpJps$m zQMVj1aGhe)lTB?i0v~wc0tn7I01Oqc+iTGEI^i(B5PNq^ZKCYyuw%rKgifA&XHm_= zDxbP_Ohc5$vC77QO zVF=kS5ZbD96r^75dEB8R<&M!?KT^|+QQUU6B~(;sjql3hf(WJTD74+OLvyt&=sB*R zzhE_+%?^^C+qr*RK;TLk0D-elGWle~nFg_hb{U}?P=dxSkVLbr?^|x_S;vmW5v(8p zfvi9v*c(|J0khrcV%JAdhnZ$U*CFuZo{i*Q_k3H7pd$xPK5>auq@WV6VRW&bC!@Oo zC3O~Qj@b!mqT50NF75;nxNME{;NmBkd8k#f4n!BD_#y4e<*L3uFm&u`cj(B*b^-`< z7-bad1RV><}$29!2G)5Eu?WsutP4>|$_K5&VO$Wm&6A!=`J*I~S>d+b(LPFF39 z?&zR%;;+@^X&oCrvLHS|+G@N202{qYL_t*Wg1bD^`#~q0RjRV971w=yT4j#3mKtp^tY~q ztLI9cW8h@dRRx3vT}mzM7tM~<5nDT^L7wxwdQ|ef)I??-^<4;Uj~F_}2&mMOek39) zBQT)U>e@w_gMVJce|6l{e;)##Y8pgp_$j|A)$WKuIo|-YU=O^6eu6Jh8PYpL&E3By zB*2lFGipcz1f2P8YqH61-w_}%&dsNAbrw=sK^~K?@u$(ncEZd}i0_4y)r~09QG|cM z;d@IDv;?Kn5g@QoREqCRkU0nZtoqhZZsF4jo%8qUy3v1EJTQg={b#-HyZf zVht(`Z*YG6SC!W@9m zZ<9|t3t3N&?Ev9w)X#HOCmA(iRT96@(vcBEr-2}k%JYF2XDYhhBvd~C7z>>l&Z$&0B_9huoHt(OrW!({q;tW?Cl z{LUh+;5XiSURp+`#d4{`(lK1IG1qa*PHt3aoLz{#gQ?kpsc zT;pR~7F`Ul0~As$Y$R4Mot(%n%#7t$=f?{hE8B{N^{K-8^5~=Ye`o?fyYNgw`4TeXA=L5= zwil4jS3)dC%>wEBhknQM+6OddAaY|7JgwC!D-2g-QEU`TN zhC}kM#}4QpZ-(@APVFbK!{2NM-Z{>DmlMD&0DyXVH;!TQt5h1p-Wbqv-R8^V$tpap zghx=vikFXk>0M9bvg0`M1k$lssr)Eve)^^F_-~N`Lb)Qe+<)fGnT||0Z3!cQt=7Q? zd^e2BhAOY^oQ|cxp+OqefQZPe*X93$@EQ7{9Xtx0V?*WnH@0!e-Q6p5`n71 zLD^nUG!RHA_py@%dWALYZ}3SXkH&XYtu~vF~2rQPaScGC%$4 zPviU?E&lkqAL+_RzVNOjdf2O=-QO+7;%|&6QhTAzcz$CkmhKyiC6Xzxm$A1&*rHn1 zuYCd71BvO(J6Q=bPkEcq$l7nWxk1n zvj=1Wy8sMCQyK>_UXOFHSD@zr41l8ab>#VK&rt68jlc6nDU%@J0wBZ?_`&t7mk}r! zvI2lG#0jYLKlqc0wfS@ZJl>OeCwlRIF}RMhMEMlD_r3>Dxw`duVe?OvE((H;hMfkO zHfh|q-%9I#UhjIZ%uS$pRWN0%KTvTu{UMh?S8lIY9BgJsO~q7rCIb$oS^w4 zGQXIH4G0i0a7!%Ub>_+_J8>D?pMEuootY6 zMEQP-uqwBDtfP#;O2AK8&aSSEuRr#`UR_wd^4@r|XMD3OS5~uB40&0*03+B&wGHMg z2oRDUBd7x>&Yd}Vem(<$w>7AFAdq)R8&Vt~HX}+k5Iz%l04U@8XQd(lEA8{z12t2nYs#_gqYm0YX`Z=CV|}8-?DTz5L9FPkr+f9~^wyJCAj0d79hOjsqc|Tc69F zf9Q{Ta@qUnVdJezwQwK;^Z$$~JY&qxqMWeVbG`1pN!{i?czy*b7roa$ChvfRj6$gl)Owhl}N2Jcy_0_C0J0chdw&ThU{Ldi_y> z=bUW{)r3p>^(fbDaH+rnhe!8*Pj_2P)=-x4n8H}VV-D{^9_Mb9xSGRKA*Afr+1NqQ zW+u#IFy=8OZ&tOku&SbsKoaR#BHbG=lw)sCEj{%OT>nrM1xL-(aUk?3bB|>4el2OT zqMF+Z$4(U?cGL%l^%SF9Yl7D^JO|9P$Kp5v7@IjNn`=t<0p_y-!C@@m0n;O*u-@+X zZ9`g!OoP`Mjd|*n|6m29e4h)dOy6eFp*2DM63KKdp6&Ps{4w39S6ed z{JFFF{(Z5&UVP4hJ;DSMQavv)6VlV<#FE1Tw zN+}UCcbpM;&;CU2$jW;8o?n-PFDTEWesG#@X|5K``{dA92dzYSB@Q>^0plVoG zx51UPZRI)coz%}AQD7cH#~N_@{85KD{PUU<#?T=OuTNl`?b0@S8_ypq;*B)(OKY*Y z)p#tI9E$BZc*`Sq{o#jOoujEKp)CQzq1V3i)QKPd&%}V-g@AOEXxQ z@*F}_Dtl%U_AiwF%`Y%PR)8TY$2tIz(S?D^V;sA&=f<(?*$4w>O)j-z=VrY<^TJD! z!M5_#wP6|wu{x`{+jJ_KUx$P8~TufA;9U^>3{9#Y7Z(8v~DN zP;xx2$^rcerJJ&BSQfGsCHR3Jr)RpI)KP+0rYXM?1eId7-mc}#kklJkh!PnKkWmH? zdN@)J@PJ`;wb75`FnewD{31X21hd15xz)Ax*vd*Sww&F-K8Bj;9O+DdEIlw8E2jr? zJ)=9mvG?Y?uiztUTk;sdmH+_(kMzjM$jt*c-@Pz(-EA`qm(HG;edbqV8%tLX#xnzB z@p1tX$ZV{%wiYWatj79F{N7hdCX?9H5{$f2$QpK*sGZw;aJ&crDL;F9^xS{x#hV&( z%!y=jIXcMKo4B7mWTq%BCDbqiaPY%Wk ziN07Vzk$T*e|6eQU3j;46#?#IEC*W8=L)g)je_jwu)hXn=knO%Sb?h?%nZRdN+47&%1`yi z;+ae=)i)SR_YRc%#;4DZ?|R9x!Le;z(s!8ObG&%*Vn60^n)(WSRM2b*BVe*=?Zk-_ z4?phJI0Jv#b#m$C=%n89=X-(5O?JXTy^+LP$X><2lH z7vq^k5zllM@%@PcXZjH|!fV^0b@lZ9_&r|fx3LCF%?S_^=uL?v5)hN5aA9&19<}&^ zBx8dFW;8jdrCKGA@dOlIv{^yymx}z99^dmo>IMU$H)BC27U_Dw@j7y_QVGf~;#f&~ zb&>hS6rjqA8*XJ+wv0ByQ9`0$l92y!rI5joJkA(3>k*7A+vq#tFXZo^BbHi&Z3*)8LrHOoQBbCReBJ&%o z5IlsNgOH(sGI~{R1Ij>e+Z;;z#@bV@`U9pI9x#R2d2`&v0#W&5;$3BWHh=T@rkmj@ z)|)hvxksHiits|%MiD~q#( zt4s4E+2#4swdKXp{6@AX2R2ySD8~x0+cL|*vA(Vv5+{tUC0#2ZJcTLEtFlFny6-vr z_Ip#odRUa~%^KS9*Hg0i5?~k(f5|kY_(TdlU6kGvlS%jzSc`rF*sUiW+ZY%gSQ?$$ zxx8)P^=s1yUz+V792vqF@P;9?F)lv?0Ol@VzWmIE3m0aPR$vmcV`F2dA+ulX+O_Kr zuX9B!vh$$RJ5mXC>qM<=L?Gn zM5SPouwo6)CD@6RX!wjpI#pUrXOgRZ10$=$lRG!YcI@4l+I^@nJh3C$)6+8q;1A;Z zNhqJsi5AhmIhe|0^Yim3K>{;NOG|Sw39INRm#`%5S)>)TeG12JL!F=OykXcPXAz2D zMPrEs$S;`^`-%i*_9OAR{`Fb>UBcg~Q>Pw7Ll@A%eE`osFvL!nj!F0vLlD|Hz=2aG zzTI_QUePl#f%i4-g&$Vnis@OLo568@M1;>(l-E}m)9cx6W<9% z_JL*a!mlC*1mfIbTcjUQPNq_7(dF4)Fge%J#Ce<%#u6G)hGPoqDd0osTx3^({>nM} z7`+2SF?jUFf#LBY9J^xw@F=hELA!g<2~w)`ZTQ{G-z=XXM}036+;E_efd#moLGNG2 z=@l&XTZZgba19?3;Md=G;ruNC&rK+!qYF|DR9j*iQ2BKTAdSZKV8hS*u<_i=*U0#G z6{HO)k^(89!Bl1*lsJ3t+`03p+%|wmx7oaQQsVxkipWmw}1bB7XrwP9mj=1svy=_u@;!pj@tmp+726 z;F`<~do&de1yRY&mtsCuxV%P)tV1C4kwBzNQ0g<-K83cQ!0|KKa=|aZ#k7tl=20d= zMn^G&bAw=kNdRR(fN(21%yt~Vc6LjR6!~?Ier(P|h%c0Jeay)f2}y&ZTewMjD69IL0J&4e+4XCb(F##NJ0` zuzZ%|P^xGCJ#Ud)FQmuJ@i=>}MvUaQ0f+nkaRZbBTolgwvORphgG>8S?h^c+3uw~? zG8e9)$3KH|xXO7E=T|8c1ss)6_T-yX2iRF~?HGWw13);4V+U}44A)&dKmZF+xCht^ zp~QKl6#_z|Vtk_p69K{A$o?eJ&&83#|AeY$}fC4j~OR1S_)fJB#a=aIXcVS={Ra?r{<6Jkli`O42cvu32=^%^=(M6Pt4w4M{LW%aCZfYu#y;6#4CN2u+ywR~ zvE7EcO<{}YC*ou|o};tJFWeTxQxj8a}B+ zun}N%82MfaCi+lZ1wM@Wi~tPV2?BO1i3&AXc#;Gux53&J!Yaf1(vS(5$xF(Nd8vsQXJ$xRci%U5EI2}!Zp%)++05E!K zJ_rg3jDANM`*cckTtKV-L6-E3wWsmU;gsHKm+~~4ci7G&8uCUBUMsR5Z*GC z4PlVFhmb~*SLUO64Etn_94VbW32B`@9j1f5;v7z|VSG&+T!P@@1OcOPx|QE_Ncn^| zM--MITt29qW6vb$NbkI#{?S<@V-!)xEb7gAoY?+Cl*I8QKoP?snjf-4j?9Ak zZSY!@VNNMc8I^B}7hi<;<}sY3(@7xEB#;g08w{b26R7u2?C;0+It9jA(@W~+0VWmz4voyzz#Hc0$YAqd=6d2n zn<=)NjDbG}QP_LeaESJG5y$CRl5W{^>5y(b_j*2qK-;3)9Q4V{wj2`eCOSJqE3VX49 zr-Jp=ME8g{CmZx|gn&AYp{^6y-;V8GfSDoY9+<~dIQAKAztAyT5GZKNfWZ5_``z!p z|C68mJ~JMc$h)GbbC6 z1?Uq@B2Cjb008JLGSc`Me*b6W{qOI6?|Zj|4cPYjlW`q_-$y_C(J=`0JrL}hAn1Ky zf+3_h9Upl2S!`FQr>AM7#giswvS+ck5DZ9U3hGRRimgN*IZr`gATK{ey3Fyov(J}% zWf`^Q7HOTsI{FU;1d}R5d==cAqY+|306>6^^qL{qO@H_&|rW z5njx50tDXrBOmz)ql~Xa`j-&m9bkeffMA%h0RW+dP;-exK%DpHZ~zE`fkQP4O$8@l z&>oe8(CGNlT=1pf1_EOY{w5gsn`VS#djSNMK^DPQ;ut7HfPgKBlvF5(nRE&{Iv5}j zaE$vSdTdYuK&BuQkToR0L^e={AqZ#=2mm_A1O!=)i1q_(P&8kG!`{ybBK@2du)t{? z|0?SEx%a>S{d~%L%m1D;AXrPl4(vsLAHw~8IDUr_PTqzzuy^m?9smPV@)_D_NeYHI zda*<&k;)K|#2}FJqyz|+=EA_>f`Sw*V8E8g1qhm#*BKDRS5QV^RFESFDwRN>6HD_j zLWfqB&yfQGFsLj*bHV&%0s?_%hUEz(U@M8oC+ z-@Qn9=|-Hr-IUJ#K?MrWkvW);rlf~#K-)$j5X3lEBD-;40U%&Tz4_IZ7ywX$((??S zAr>+V9Q+XN`6AB!1ZLp5dhv#jujdU2R)bG`;uG|`U$cAn?zaOFufrOJA;i>E07L>N zBL?Qcl)lW>FzRO`32I-Wfus#={XZO+I0DL-Ua!EAs2>x`kP!%d4PMH`j!GrcG~hhF zePIRCz5;@8fniL9btM2esYC!UkIXILcfx>+Ex{m7#61~$mZ2>aUxvbqi;IgnD1RO4 zJOJ@k9RJ@Sw__jt;0K>G1_(0D^9}^JLZANhr+0%P-h=?s?*I(1#AH(+QjCD$xE<%p z3>!nx5;i6}i9;!WYO3j!$pirYWYnN0$3ns~m%(yq8n7>jLt&gbWSLYldpl`g zqJZ2-89dGkkOi2Jm-%0=;q9q>P<|Nzpz_O5ei0L{MTE*PLiyjsv9IF%58n5__iahY zxLH$jRRO`R{Kr1_u}LWZx4;aq1{i(|PUT^MBMrZTV30{B_Bsvh#5oy7fbfsXQJ^qf zXcI>=)2NCT;OPC_UMN}>=fneq1)D_4>I6zJXQGKhVviTav)3cVnV@WL%joq>=<&b6 z@9!afANhU-2k@$U5A{_Ggdn0n^{G!yKNg%LOB2NN| zpb+-Jak1U>1#q79Eq0uG_S}Lvoj0Ge66i{xD}k;Ax)SJ0peuo{1iBLFN}wx&t^~Rg=t|)Ekih>3 XwmK6&_ literal 0 HcmV?d00001 diff --git a/share/qtcreator/examples/15-LVGL/data/img/animimg002.png b/share/qtcreator/examples/15-LVGL/data/img/animimg002.png new file mode 100644 index 0000000000000000000000000000000000000000..f469d8a3284c07f2be27a7764075907b28a85b9d GIT binary patch literal 16821 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 V*P1TF4Lovz!PC{xWt~$(69C4my$b*U literal 0 HcmV?d00001 diff --git a/share/qtcreator/examples/15-LVGL/data/img/animimg003.png b/share/qtcreator/examples/15-LVGL/data/img/animimg003.png new file mode 100644 index 0000000000000000000000000000000000000000..c464ba5a21f9b26ab5041e3b795b4aa41c5088d7 GIT binary patch literal 17936 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 LNkvXXu0mjfH~LUq literal 0 HcmV?d00001 diff --git a/share/qtcreator/examples/15-LVGL/lvgl_demo.py b/share/qtcreator/examples/15-LVGL/lvgl_demo.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/15-LVGL/lvgl_touch_demo.py b/share/qtcreator/examples/15-LVGL/lvgl_touch_demo.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/16-AI-Cube/ClassificationApp.py b/share/qtcreator/examples/16-AI-Cube/ClassificationApp.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/16-AI-Cube/DetectionApp.py b/share/qtcreator/examples/16-AI-Cube/DetectionApp.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/16-AI-Cube/MultiLabelApp.py b/share/qtcreator/examples/16-AI-Cube/MultiLabelApp.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/16-AI-Cube/OCR_Det.py b/share/qtcreator/examples/16-AI-Cube/OCR_Det.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/16-AI-Cube/SegmentationApp.py b/share/qtcreator/examples/16-AI-Cube/SegmentationApp.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/16-AI-Cube/SelfLearningApp.py b/share/qtcreator/examples/16-AI-Cube/SelfLearningApp.py old mode 100755 new mode 100644 diff --git a/share/qtcreator/examples/17-Sensor/camera_dual_bind_hdmi.py b/share/qtcreator/examples/17-Sensor/camera_dual_bind_hdmi.py new file mode 100644 index 00000000000..ed53591139e --- /dev/null +++ b/share/qtcreator/examples/17-Sensor/camera_dual_bind_hdmi.py @@ -0,0 +1,68 @@ +# Camera Example +# +# Note: You will need an SD card to run this example. +# +# You can start 2 camera preview. +import time, os, sys + +from media.sensor import * +from media.display import * +from media.media import * + +sensor0 = None +sensor1 = None + +try: + print("camera_test") + + sensor0 = Sensor(id = 0) + sensor0.reset() + # set chn0 output size, 960x540 + sensor0.set_framesize(width = 960, height = 540) + # set chn0 out format + sensor0.set_pixformat(Sensor.YUV420SP) + # bind sensor chn0 to display layer video 1 + bind_info = sensor0.bind_info(x = 0, y = 0) + Display.bind_layer(**bind_info, layer = Display.LAYER_VIDEO1) + + sensor1 = Sensor(id = 1) + sensor1.reset() + # set chn0 output size, 960x540 + sensor1.set_framesize(width = 960, height = 540) + # set chn0 out format + sensor1.set_pixformat(Sensor.YUV420SP) + + bind_info = sensor1.bind_info(x = 960, y = 540) + Display.bind_layer(**bind_info, layer = Display.LAYER_VIDEO2) + + # use hdmi as display output + Display.init(Display.LT9611, to_ide = True) + # init media manager + MediaManager.init() + + # multiple sensor only need one excute run() + sensor0.run() + + while True: + os.exitpoint() + time.sleep(1) +except KeyboardInterrupt as e: + print("user stop") +except BaseException as e: + print(f"Exception '{e}'") +finally: + # multiple sensor all need excute stop() + if isinstance(sensor0, Sensor): + sensor0.stop() + if isinstance(sensor1, Sensor): + sensor1.stop() + # or call Sensor.deinit() + # Sensor.deinit() + + # deinit display + Display.deinit() + + os.exitpoint(os.EXITPOINT_ENABLE_SLEEP) + time.sleep_ms(100) + # deinit media buffer + MediaManager.deinit() diff --git a/share/qtcreator/examples/17-Sensor/camera_mirror_flip.py b/share/qtcreator/examples/17-Sensor/camera_mirror_flip.py new file mode 100644 index 00000000000..65ebaebd111 --- /dev/null +++ b/share/qtcreator/examples/17-Sensor/camera_mirror_flip.py @@ -0,0 +1,52 @@ +# Camera Example +import time, os, sys + +from media.sensor import * +from media.display import * +from media.media import * + +sensor = None +try: + print("camera_test") + + # construct a Sensor object with default configure + sensor = Sensor() + # sensor reset + sensor.reset() + # set hmirror + sensor.set_hmirror(True) + # sensor vflip + sensor.set_vflip(True) + + # set chn0 output size, 1920x1080 + sensor.set_framesize(Sensor.FHD) + # set chn0 output format + sensor.set_pixformat(Sensor.YUV420SP) + # bind sensor chn0 to display layer video 1 + bind_info = sensor.bind_info() + Display.bind_layer(**bind_info, layer = Display.LAYER_VIDEO1) + + # use hdmi as display output + Display.init(Display.LT9611, to_ide = True) + # init media manager + MediaManager.init() + # sensor start run + sensor.run() + + while True: + os.exitpoint() + time.sleep(1) +except KeyboardInterrupt as e: + print("user stop") +except BaseException as e: + print(f"Exception '{e}'") +finally: + # sensor stop run + if isinstance(sensor, Sensor): + sensor.stop() + # deinit display + Display.deinit() + os.exitpoint(os.EXITPOINT_ENABLE_SLEEP) + time.sleep_ms(100) + # release media buffer + MediaManager.deinit() diff --git a/share/qtcreator/examples/17-Sensor/camera_single_bind_hdmi.py b/share/qtcreator/examples/17-Sensor/camera_single_bind_hdmi.py new file mode 100644 index 00000000000..4afbd85c41c --- /dev/null +++ b/share/qtcreator/examples/17-Sensor/camera_single_bind_hdmi.py @@ -0,0 +1,52 @@ +# Camera Example +import time, os, sys + +from media.sensor import * +from media.display import * +from media.media import * + +sensor = None + +try: + print("camera_test") + + # construct a Sensor object with default configure + sensor = Sensor() + # sensor reset + sensor.reset() + # set hmirror + # sensor.set_hmirror(False) + # sensor vflip + # sensor.set_vflip(False) + + # set chn0 output size, 1920x108 + sensor.set_framesize(Sensor.FHD) + # set chn0 output format + sensor.set_pixformat(Sensor.YUV420SP) + # bind sensor chn0 to display layer video 1 + bind_info = sensor.bind_info() + Display.bind_layer(**bind_info, layer = Display.LAYER_VIDEO1) + + # use hdmi as display output + Display.init(Display.LT9611, to_ide = True) + # init media manager + MediaManager.init() + # sensor start run + sensor.run() + + while True: + os.exitpoint() +except KeyboardInterrupt as e: + print("user stop: ", e) +except BaseException as e: + print(f"Exception {e}") +finally: + # sensor stop run + if isinstance(sensor, Sensor): + sensor.stop() + # deinit display + Display.deinit() + os.exitpoint(os.EXITPOINT_ENABLE_SLEEP) + time.sleep_ms(100) + # release media buffer + MediaManager.deinit() diff --git a/share/qtcreator/examples/17-Sensor/camera_single_bind_lcd.py b/share/qtcreator/examples/17-Sensor/camera_single_bind_lcd.py new file mode 100644 index 00000000000..2def402fc0c --- /dev/null +++ b/share/qtcreator/examples/17-Sensor/camera_single_bind_lcd.py @@ -0,0 +1,52 @@ +# Camera Example +import time, os, sys + +from media.sensor import * +from media.display import * +from media.media import * + +sensor = None + +try: + print("camera_test") + + # construct a Sensor object with default configure + sensor = Sensor() + # sensor reset + sensor.reset() + # set hmirror + # sensor.set_hmirror(False) + # sensor vflip + # sensor.set_vflip(False) + + # set chn0 output size, 800x480 + sensor.set_framesize(width = 800, height = 480) + # set chn0 output format + sensor.set_pixformat(Sensor.YUV420SP) + # bind sensor chn0 to display layer video 1 + bind_info = sensor.bind_info() + Display.bind_layer(**bind_info, layer = Display.LAYER_VIDEO1) + + # use lcd as display output + Display.init(Display.ST7701, width = 800, height = 480, to_ide = True) + # init media manager + MediaManager.init() + # sensor start run + sensor.run() + + while True: + os.exitpoint() +except KeyboardInterrupt as e: + print("user stop: ", e) +except BaseException as e: + print(f"Exception {e}") +finally: + # sensor stop run + if isinstance(sensor, Sensor): + sensor.stop() + # deinit display + Display.deinit() + os.exitpoint(os.EXITPOINT_ENABLE_SLEEP) + time.sleep_ms(100) + # release media buffer + MediaManager.deinit() diff --git a/share/qtcreator/examples/17-Sensor/camera_single_show_hdmi.py b/share/qtcreator/examples/17-Sensor/camera_single_show_hdmi.py new file mode 100644 index 00000000000..15f4077fa90 --- /dev/null +++ b/share/qtcreator/examples/17-Sensor/camera_single_show_hdmi.py @@ -0,0 +1,67 @@ +# Camera Example +import time, os, sys + +from media.sensor import * +from media.display import * +from media.media import * + +sensor = None + +try: + print("camera_test") + + # construct a Sensor object with default configure + sensor = Sensor() + # sensor reset + sensor.reset() + # set hmirror + # sensor.set_hmirror(False) + # sensor vflip + # sensor.set_vflip(False) + + # set chn0 output size, 1920x1080 + sensor.set_framesize(Sensor.FHD) + # set chn0 output format + sensor.set_pixformat(Sensor.YUV420SP) + # bind sensor chn0 to display layer video 1 + bind_info = sensor.bind_info() + Display.bind_layer(**bind_info, layer = Display.LAYER_VIDEO1) + + # set chn1 output format + sensor.set_framesize(width = 640, height = 480, chn = CAM_CHN_ID_1) + sensor.set_pixformat(Sensor.RGB888, chn = CAM_CHN_ID_1) + + # set chn2 output format + sensor.set_framesize(width = 640, height = 480, chn = CAM_CHN_ID_2) + sensor.set_pixformat(Sensor.RGB565, chn = CAM_CHN_ID_2) + + # use hdmi as display output + Display.init(Display.LT9611, to_ide = True, osd_num = 2) + # init media manager + MediaManager.init() + # sensor start run + sensor.run() + + while True: + os.exitpoint() + + img = sensor.snapshot(chn = CAM_CHN_ID_1) + Display.show_image(img, alpha = 128) + + img = sensor.snapshot(chn = CAM_CHN_ID_2) + Display.show_image(img, x = 1920 - 640, layer = Display.LAYER_OSD1) + +except KeyboardInterrupt as e: + print("user stop: ", e) +except BaseException as e: + print(f"Exception {e}") +finally: + # sensor stop run + if isinstance(sensor, Sensor): + sensor.stop() + # deinit display + Display.deinit() + os.exitpoint(os.EXITPOINT_ENABLE_SLEEP) + time.sleep_ms(100) + # release media buffer + MediaManager.deinit() diff --git a/share/qtcreator/examples/17-Sensor/camera_single_show_lcd.py b/share/qtcreator/examples/17-Sensor/camera_single_show_lcd.py new file mode 100644 index 00000000000..3884cc9ef79 --- /dev/null +++ b/share/qtcreator/examples/17-Sensor/camera_single_show_lcd.py @@ -0,0 +1,67 @@ +# Camera Example +import time, os, sys + +from media.sensor import * +from media.display import * +from media.media import * + +sensor = None + +try: + print("camera_test") + + # construct a Sensor object with default configure + sensor = Sensor() + # sensor reset + sensor.reset() + # set hmirror + # sensor.set_hmirror(False) + # sensor vflip + # sensor.set_vflip(False) + + # set chn0 output size + sensor.set_framesize(width = 800, height = 480) + # set chn0 output format + sensor.set_pixformat(Sensor.YUV420SP) + # bind sensor chn0 to display layer video 1 + bind_info = sensor.bind_info() + Display.bind_layer(**bind_info, layer = Display.LAYER_VIDEO1) + + # set chn1 output format + sensor.set_framesize(Sensor.QVGA, chn = CAM_CHN_ID_1) + sensor.set_pixformat(Sensor.RGB888, chn = CAM_CHN_ID_1) + + # set chn2 output format + sensor.set_framesize(Sensor.QVGA, chn = CAM_CHN_ID_2) + sensor.set_pixformat(Sensor.RGB565, chn = CAM_CHN_ID_2) + + # use hdmi as display output + Display.init(Display.ST7701, to_ide = True, osd_num = 2) + # init media manager + MediaManager.init() + # sensor start run + sensor.run() + + while True: + os.exitpoint() + + img = sensor.snapshot(chn = CAM_CHN_ID_1) + Display.show_image(img, alpha = 128) + + img = sensor.snapshot(chn = CAM_CHN_ID_2) + Display.show_image(img, x = 800 - 320, layer = Display.LAYER_OSD1) + +except KeyboardInterrupt as e: + print("user stop: ", e) +except BaseException as e: + print(f"Exception {e}") +finally: + # sensor stop run + if isinstance(sensor, Sensor): + sensor.stop() + # deinit display + Display.deinit() + os.exitpoint(os.EXITPOINT_ENABLE_SLEEP) + time.sleep_ms(100) + # release media buffer + MediaManager.deinit() diff --git a/share/qtcreator/examples/17-Sensor/camera_snapshot_and_save.py b/share/qtcreator/examples/17-Sensor/camera_snapshot_and_save.py new file mode 100644 index 00000000000..fb0cf9c937d --- /dev/null +++ b/share/qtcreator/examples/17-Sensor/camera_snapshot_and_save.py @@ -0,0 +1,91 @@ +# Camera Example +# +# Note: You will need an SD card to run this example. +# +# You can start camera preview and capture yuv image. +import time, os, sys + +from media.sensor import * +from media.display import * +from media.media import * + +# save image raw data, use 7yuv to preview + +def save_img(img, chn): + if img.format() == image.YUV420: + suffix = "yuv420sp" + elif img.format() == image.RGB888: + suffix = "rgb888" + elif img.format() == image.RGBP888: + suffix = "rgb888p" + else: + suffix = "unkown" + + filename = f"/sdcard/camera_chn_{chn:02d}_{img.width()}x{img.height()}.{suffix}" + print("save capture image to file:", filename) + img.save(filename) + +try: + print("camera_test") + # construct a Sensor object with default configure + sensor = Sensor() + # sensor reset + sensor.reset() + # set hmirror + # sensor.set_hmirror(False) + # sensor vflip + # sensor.set_vflip(False) + + # set chn0 output size, 1920x1080 + sensor.set_framesize(Sensor.FHD) + # set chn0 output format + sensor.set_pixformat(Sensor.YUV420SP) + # bind sensor chn0 to display layer video 1 + bind_info = sensor.bind_info() + Display.bind_layer(**bind_info, layer = Display.LAYER_VIDEO1) + + # set chn1 output format + sensor.set_framesize(width = 640, height = 480, chn = CAM_CHN_ID_1) + sensor.set_pixformat(Sensor.RGB888, chn = CAM_CHN_ID_1) + + # set chn2 output format + sensor.set_framesize(width = 640, height = 480, chn = CAM_CHN_ID_2) + sensor.set_pixformat(Sensor.RGBP888, chn = CAM_CHN_ID_2) + + # use hdmi as display output + Display.init(Display.LT9611, to_ide = True) + # init media manager + MediaManager.init() + # sensor start run + sensor.run() + + # drop 100 frames + for i in range(100): + sensor.snapshot() + + # snapshot and save + img = sensor.snapshot(chn = CAM_CHN_ID_0) + save_img(img, 0) + + img = sensor.snapshot(chn = CAM_CHN_ID_1) + save_img(img, 1) + + img = sensor.snapshot(chn = CAM_CHN_ID_2) + save_img(img, 2) + +except KeyboardInterrupt as e: + print(f"user stop") +except BaseException as e: + print(f"Exception '{e}'") +finally: + # sensor stop run + if isinstance(sensor, Sensor): + sensor.stop() + # deinit display + Display.deinit() + + os.exitpoint(os.EXITPOINT_ENABLE_SLEEP) + time.sleep_ms(100) + + # release media buffer + MediaManager.deinit() diff --git a/share/qtcreator/examples/17-Sensor/camera_triple_bind_hdmi.py b/share/qtcreator/examples/17-Sensor/camera_triple_bind_hdmi.py new file mode 100644 index 00000000000..7f6afb59a9b --- /dev/null +++ b/share/qtcreator/examples/17-Sensor/camera_triple_bind_hdmi.py @@ -0,0 +1,81 @@ +# Camera Example +# +# Note: You will need an SD card to run this example. +# +# You can start 3 camera preview. +import time, os, sys + +from media.sensor import * +from media.display import * +from media.media import * + +sensor0 = None +sensor1 = None +sensor2 = None + +try: + print("camera_test") + + # sensor0 + sensor0 = Sensor(id = 0) + sensor0.reset() + # set chn0 output size, 960x540 + sensor0.set_framesize(width = 960, height = 540) + # set chn0 out format + sensor0.set_pixformat(Sensor.YUV420SP) + # bind sensor chn0 to display layer video 1 + bind_info = sensor0.bind_info(x = 0, y = 0) + Display.bind_layer(**bind_info, layer = Display.LAYER_VIDEO1) + + # sensor1 + sensor1 = Sensor(id = 1) + sensor1.reset() + # set chn0 output size + sensor1.set_framesize(width = 960, height = 540) + # set chn0 out format + sensor1.set_pixformat(Sensor.YUV420SP) + + bind_info = sensor1.bind_info(x = 960, y = 540) + Display.bind_layer(**bind_info, layer = Display.LAYER_VIDEO2) + + # sensor2 + sensor2 = Sensor(id = 2) + sensor2.reset() + # set chn0 output size + sensor2.set_framesize(width = 960, height = 540) + # set chn0 out format + sensor2.set_pixformat(Sensor.RGB888) + + bind_info = sensor2.bind_info(x = 0, y = 540) + Display.bind_layer(**bind_info, layer = Display.LAYER_OSD0) + + # use hdmi as display output + Display.init(Display.LT9611, to_ide = True) + # init media manager + MediaManager.init() + + # multiple sensor only need one excute run() + sensor0.run() + + while True: + os.exitpoint() + time.sleep(5) +except KeyboardInterrupt as e: + print("user stop: ", e) +except BaseException as e: + print(f"Exception {e}") +finally: + # multiple sensor all need excute stop() + sensor0.stop() + sensor1.stop() + sensor2.stop() + # or call Sensor.deinit() + # Sensor.deinit() + + # deinit display + Display.deinit() + + os.exitpoint(os.EXITPOINT_ENABLE_SLEEP) + time.sleep_ms(100) + # deinit media buffer + MediaManager.deinit() diff --git a/share/qtcreator/examples/99-HelloWorld/helloworld.py b/share/qtcreator/examples/99-HelloWorld/helloworld.py index ad35e5ae34d..836f4a42398 100644 --- a/share/qtcreator/examples/99-HelloWorld/helloworld.py +++ b/share/qtcreator/examples/99-HelloWorld/helloworld.py @@ -1 +1,6 @@ -print("Hello World") +import sys + +print("implementation:", sys.implementation) +print("platform:", sys.platform) +print("path:", sys.path) +print("Python version:", sys.version) diff --git a/share/qtcreator/translations/qtcreator_zh_CN.ts b/share/qtcreator/translations/qtcreator_zh_CN.ts index 5026bf76a1d..38ecd273eff 100644 --- a/share/qtcreator/translations/qtcreator_zh_CN.ts +++ b/share/qtcreator/translations/qtcreator_zh_CN.ts @@ -6652,7 +6652,7 @@ Please close any programs that are viewing/editing OpenMV IDE's application Board: - 板: + 开发板: