From c4b9c508e01d9c195a40b3e76aedc39127bf2048 Mon Sep 17 00:00:00 2001 From: WinUser01 Date: Mon, 2 May 2022 14:18:18 +0800 Subject: [PATCH] =?UTF-8?q?hyzp=5Fybqx-Commit135=EF=BC=9A=E4=B8=BA?= =?UTF-8?q?=E4=BA=86=E6=94=AF=E6=8C=81ios=E7=89=88=E5=9C=A8=E7=99=BE?= =?UTF-8?q?=E5=BA=A6=E5=9C=B0=E5=9B=BE=E4=B8=AD=E6=98=BE=E7=A4=BA=E6=96=87?= =?UTF-8?q?=E6=9C=AC=E5=9B=BE=E6=A0=87=EF=BC=8C=E5=B7=B2=E7=BB=8F=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2=E4=BD=BF=E7=94=A8my=5Fflutter=5Fbmfmap-1.0.2=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E5=AE=89=E5=8D=93=E7=89=88=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E6=AD=A3=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/release/output.json | 2 +- .../.vscode/launch.json | 13 + lib/my_flutter_bmfmap-1.0.2/CHANGELOG.md | 9 + lib/my_flutter_bmfmap-1.0.2/LICENSE | 13 + lib/my_flutter_bmfmap-1.0.2/README.md | 14 + .../analysis_options.yaml | 27 + .../android/.gitignore | 8 + .../android/build.gradle | 46 + .../android/gradle.properties | 4 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../android/settings.gradle | 1 + .../android/src/main/AndroidManifest.xml | 3 + .../baidu/flutter_bmfmap/BMFEventHandler.java | 38 + .../flutter_bmfmap/BMFHandlerHelper.java | 36 + .../flutter_bmfmap/BMFMethodHandler.java | 62 + .../flutter_bmfmap/FlutterBmfmapPlugin.java | 127 ++ .../baidu/flutter_bmfmap/MapViewFactory.java | 40 + .../flutter_bmfmap/TextureMapViewFactory.java | 42 + .../map/FlutterBaseMapView.java | 27 + .../map/FlutterCommonMapView.java | 58 + .../flutter_bmfmap/map/FlutterMapView.java | 170 +++ .../map/FlutterTextureMapView.java | 152 +++ .../baidu/flutter_bmfmap/map/MapListener.java | 696 ++++++++++ .../flutter_bmfmap/map/MapStateUpdateImp.java | 363 ++++++ .../flutter_bmfmap/map/MapViewWrapper.java | 27 + .../flutter_bmfmap/map/OfflineHandler.java | 451 +++++++ .../map/TextureMapViewWrapper.java | 24 + .../map/mapHandler/BMFMapStatus.java | 45 + .../map/mapHandler/BMapHandler.java | 24 + .../map/mapHandler/BMapHandlerFactory.java | 200 +++ .../map/mapHandler/CustomMapHandler.java | 437 +++++++ .../map/mapHandler/HeatMapHandler.java | 270 ++++ .../map/mapHandler/IndoorMapHandler.java | 195 +++ .../map/mapHandler/InfoWindowHandler.java | 306 +++++ .../map/mapHandler/LocationLayerHandler.java | 330 +++++ .../map/mapHandler/MapStateHandler.java | 409 ++++++ .../map/mapHandler/MapUpdateHandler.java | 1002 +++++++++++++++ .../map/mapHandler/MarkerHandler.java | 616 +++++++++ .../map/mapHandler/ProjectionHandler.java | 212 ++++ .../map/mapHandler/TileMapHandler.java | 378 ++++++ .../map/overlayHandler/ArcLineHandler.java | 102 ++ .../map/overlayHandler/CircleHandler.java | 130 ++ .../map/overlayHandler/DotHandler.java | 99 ++ .../map/overlayHandler/GroundHandler.java | 177 +++ .../map/overlayHandler/OverlayCommon.java | 21 + .../map/overlayHandler/OverlayHandler.java | 43 + .../overlayHandler/OverlayHandlerFactory.java | 235 ++++ .../overlayHandler/OverlayManagerHandler.java | 103 ++ .../map/overlayHandler/PolygonHandler.java | 117 ++ .../map/overlayHandler/PolylineHandler.java | 620 +++++++++ .../map/overlayHandler/TextHandler.java | 137 ++ .../baidu/flutter_bmfmap/utils/Constants.java | 623 +++++++++ .../com/baidu/flutter_bmfmap/utils/Env.java | 76 ++ .../flutter_bmfmap/utils/IOStreamUtils.java | 38 + .../flutter_bmfmap/utils/ThreadPoolUtil.java | 74 ++ .../utils/converter/FlutterDataConveter.java | 435 +++++++ .../utils/converter/TypeConverter.java | 23 + .../main/res/drawable/bg_edittext_focused.xml | 8 + .../main/res/drawable/bg_edittext_normal.xml | 8 + .../android/src/main/res/drawable/icon_en.png | Bin 0 -> 4785 bytes .../src/main/res/drawable/icon_marka.png | Bin 0 -> 3620 bytes .../src/main/res/drawable/icon_markb.png | Bin 0 -> 3603 bytes .../src/main/res/drawable/icon_markc.png | Bin 0 -> 3673 bytes .../src/main/res/drawable/icon_markd.png | Bin 0 -> 3547 bytes .../src/main/res/drawable/icon_marke.png | Bin 0 -> 3442 bytes .../src/main/res/drawable/icon_markf.png | Bin 0 -> 3417 bytes .../src/main/res/drawable/icon_markg.png | Bin 0 -> 3735 bytes .../src/main/res/drawable/icon_markh.png | Bin 0 -> 3393 bytes .../src/main/res/drawable/icon_marki.png | Bin 0 -> 3361 bytes .../src/main/res/drawable/icon_markj.png | Bin 0 -> 3489 bytes .../android/src/main/res/drawable/icon_st.png | Bin 0 -> 4753 bytes .../main/res/drawable/launch_background.xml | 12 + .../android/src/main/res/drawable/popup.png | Bin 0 -> 3296 bytes .../dartdoc_options.yaml | 23 + .../ios/Classes/Common/BMFFileManager.h | 30 + .../ios/Classes/Common/BMFFileManager.m | 39 + .../ios/Classes/FlutterBmfmapPlugin.h | 7 + .../ios/Classes/FlutterBmfmapPlugin.m | 30 + .../ios/Classes/Map/BMFAnnotationHandles.h | 44 + .../ios/Classes/Map/BMFAnnotationHandles.m | 280 ++++ .../ios/Classes/Map/BMFHeatMapHandles.h | 32 + .../ios/Classes/Map/BMFHeatMapHandles.m | 100 ++ .../ios/Classes/Map/BMFMapView.h | 27 + .../ios/Classes/Map/BMFMapView.m | 205 +++ .../ios/Classes/Map/BMFMapViewController.h | 27 + .../ios/Classes/Map/BMFMapViewController.m | 506 ++++++++ .../ios/Classes/Map/BMFMapViewHandle.h | 29 + .../ios/Classes/Map/BMFMapViewHandles.h | 197 +++ .../ios/Classes/Map/BMFMapViewHandles.m | 886 +++++++++++++ .../ios/Classes/Map/BMFOverlayHandles.h | 57 + .../ios/Classes/Map/BMFOverlayHandles.m | 576 +++++++++ .../ios/Classes/Map/BMFProjectionHandles.h | 28 + .../ios/Classes/Map/BMFProjectionHandles.m | 86 ++ .../ios/Classes/Map/BMFUserLocationHandles.h | 40 + .../ios/Classes/Map/BMFUserLocationHandles.m | 151 +++ .../ios/Classes/Map/marker/BMFAnnotation.h | 32 + .../ios/Classes/Map/marker/BMFAnnotation.m | 65 + .../ios/Classes/Map/overlay/BMFArcline.h | 31 + .../ios/Classes/Map/overlay/BMFArcline.mm | 51 + .../ios/Classes/Map/overlay/BMFCircle.h | 30 + .../ios/Classes/Map/overlay/BMFCircle.mm | 45 + .../Classes/Map/overlay/BMFGroundOverlay.h | 25 + .../Classes/Map/overlay/BMFGroundOverlay.m | 62 + .../ios/Classes/Map/overlay/BMFPolygon.h | 31 + .../ios/Classes/Map/overlay/BMFPolygon.mm | 48 + .../ios/Classes/Map/overlay/BMFPolyline.h | 45 + .../ios/Classes/Map/overlay/BMFPolyline.mm | 126 ++ .../Classes/Map/tileLayer/BMFAsyncTileLayer.h | 31 + .../Classes/Map/tileLayer/BMFAsyncTileLayer.m | 50 + .../Classes/Map/tileLayer/BMFSyncTileLayer.h | 28 + .../Classes/Map/tileLayer/BMFSyncTileLayer.m | 51 + .../Classes/Map/tileLayer/BMFURLTileLayer.h | 27 + .../Classes/Map/tileLayer/BMFURLTileLayer.m | 34 + .../MethodConst/BMFAnnotationMethodConst.h | 21 + .../MethodConst/BMFAnnotationMethodConst.m | 14 + .../ios/Classes/MethodConst/BMFHeatMapConst.h | 12 + .../ios/Classes/MethodConst/BMFHeatMapConst.m | 9 + .../Classes/MethodConst/BMFMapCallBackConst.h | 61 + .../Classes/MethodConst/BMFMapCallBackConst.m | 38 + .../Classes/MethodConst/BMFMapMethodConst.h | 111 ++ .../Classes/MethodConst/BMFMapMethodConst.m | 59 + .../MethodConst/BMFOfflineMapMethodConst.h | 35 + .../MethodConst/BMFOfflineMapMethodConst.m | 26 + .../MethodConst/BMFOverlayMethodConst.h | 25 + .../MethodConst/BMFOverlayMethodConst.m | 15 + .../Classes/MethodConst/BMFProjectionConst.h | 12 + .../Classes/MethodConst/BMFProjectionConst.m | 11 + .../MethodConst/BMFUserLocationConst.h | 18 + .../MethodConst/BMFUserLocationConst.m | 14 + .../ios/Classes/Models/BMFAnnotationModel.h | 69 + .../ios/Classes/Models/BMFAnnotationModel.m | 24 + .../ios/Classes/Models/BMFArclineModel.h | 42 + .../ios/Classes/Models/BMFArclineModel.m | 25 + .../ios/Classes/Models/BMFCircleModel.h | 47 + .../ios/Classes/Models/BMFCircleModel.m | 21 + .../ios/Classes/Models/BMFEdgeInsets.h | 30 + .../ios/Classes/Models/BMFEdgeInsets.m | 16 + .../ios/Classes/Models/BMFGroundModel.h | 57 + .../ios/Classes/Models/BMFGroundModel.m | 23 + .../ios/Classes/Models/BMFHeatMapModel.h | 59 + .../ios/Classes/Models/BMFHeatMapModel.m | 64 + .../Classes/Models/BMFIndoorMapInfoModel.h | 23 + .../Classes/Models/BMFIndoorMapInfoModel.m | 14 + .../ios/Classes/Models/BMFMapPoiModel.h | 29 + .../ios/Classes/Models/BMFMapPoiModel.m | 20 + .../ios/Classes/Models/BMFMapStatusModel.h | 43 + .../ios/Classes/Models/BMFMapStatusModel.m | 39 + .../Classes/Models/BMFOLSearchRecordModel.h | 71 ++ .../Classes/Models/BMFOLSearchRecordModel.m | 62 + .../ios/Classes/Models/BMFPolygonModel.h | 46 + .../ios/Classes/Models/BMFPolygonModel.m | 25 + .../ios/Classes/Models/BMFPolylineModel.h | 57 + .../ios/Classes/Models/BMFPolylineModel.m | 33 + .../ios/Classes/Models/BMFTileModel.h | 54 + .../ios/Classes/Models/BMFTileModel.m | 22 + .../ios/Classes/Models/BMFUserLocationModel.h | 137 ++ .../ios/Classes/Models/BMFUserLocationModel.m | 105 ++ .../ios/Classes/OfflineMap/BMFOfflineMap.h | 22 + .../ios/Classes/OfflineMap/BMFOfflineMap.m | 15 + .../Classes/OfflineMap/BMFOfflineMapHandle.h | 30 + .../Classes/OfflineMap/BMFOfflineMapHandles.h | 69 + .../Classes/OfflineMap/BMFOfflineMapHandles.m | 274 ++++ .../Classes/OfflineMap/BMFOfflineMapManager.h | 18 + .../Classes/OfflineMap/BMFOfflineMapManager.m | 65 + .../ios/flutter_bmfmap.podspec | 29 + .../lib/BaiduMap/bmfmap_map.dart | 29 + .../lib/BaiduMap/map/bmf_map_controller.dart | 1124 +++++++++++++++++ .../BaiduMap/map/bmf_map_linedraw_types.dart | 36 + .../map/bmf_map_texture_map_view.dart | 82 ++ .../lib/BaiduMap/map/bmf_map_view.dart | 119 ++ .../BaiduMap/map/bmf_offline_controller.dart | 141 +++ .../lib/BaiduMap/map/bmf_projection.dart | 85 ++ .../models/bmf_baseindoormap_info.dart | 37 + .../BaiduMap/models/bmf_custommap_option.dart | 37 + .../lib/BaiduMap/models/bmf_heatmap.dart | 118 ++ .../lib/BaiduMap/models/bmf_infowindow.dart | 68 + .../lib/BaiduMap/models/bmf_map_options.dart | 212 ++++ .../lib/BaiduMap/models/bmf_mappoi.dart | 33 + .../lib/BaiduMap/models/bmf_mapstatus.dart | 58 + .../BaiduMap/models/bmf_offline_models.dart | 160 +++ .../lib/BaiduMap/models/bmf_userlocation.dart | 349 +++++ .../BaiduMap/models/overlays/bmf_arcline.dart | 76 ++ .../BaiduMap/models/overlays/bmf_circle.dart | 86 ++ .../lib/BaiduMap/models/overlays/bmf_dot.dart | 62 + .../BaiduMap/models/overlays/bmf_ground.dart | 101 ++ .../BaiduMap/models/overlays/bmf_marker.dart | 384 ++++++ .../BaiduMap/models/overlays/bmf_overlay.dart | 62 + .../BaiduMap/models/overlays/bmf_polygon.dart | 86 ++ .../models/overlays/bmf_polyline.dart | 433 +++++++ .../BaiduMap/models/overlays/bmf_text.dart | 163 +++ .../BaiduMap/models/overlays/bmf_tile.dart | 100 ++ .../private/bmf_method_channel_handler.dart | 518 ++++++++ .../bmf_map_dispatcher_factory.dart | 61 + .../bmf_map_get_state_dispacther.dart | 416 ++++++ .../mapdispatcher/bmf_map_method_id.dart | 469 +++++++ .../bmf_map_state_dispacther.dart | 591 +++++++++ .../bmf_map_widget_state_dispather.dart | 41 + .../mapdispatcher/bmf_marker_dispatcher.dart | 175 +++ .../bmf_offline_map_dispatcher.dart | 239 ++++ .../mapdispatcher/bmf_overlay_dispatcher.dart | 205 +++ .../bmf_userlocation_dispatcher.dart | 106 ++ lib/my_flutter_bmfmap-1.0.2/map_doc.zip | Bin 0 -> 1860536 bytes lib/my_flutter_bmfmap-1.0.2/pubspec.yaml | 61 + .../test/flutter_bmfmap_test.dart | 22 + lib/pages/Works/DWDT/widget_to_image.dart | 146 +++ pubspec.lock | 6 +- pubspec.yaml | 6 +- 207 files changed, 23733 insertions(+), 5 deletions(-) create mode 100644 lib/my_flutter_bmfmap-1.0.2/.vscode/launch.json create mode 100644 lib/my_flutter_bmfmap-1.0.2/CHANGELOG.md create mode 100644 lib/my_flutter_bmfmap-1.0.2/LICENSE create mode 100644 lib/my_flutter_bmfmap-1.0.2/README.md create mode 100644 lib/my_flutter_bmfmap-1.0.2/analysis_options.yaml create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/.gitignore create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/build.gradle create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/gradle.properties create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/settings.gradle create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/AndroidManifest.xml create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/BMFEventHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/BMFHandlerHelper.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/BMFMethodHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/FlutterBmfmapPlugin.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/MapViewFactory.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/TextureMapViewFactory.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/FlutterBaseMapView.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/FlutterCommonMapView.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/FlutterMapView.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/FlutterTextureMapView.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/MapListener.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/MapStateUpdateImp.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/MapViewWrapper.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/OfflineHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/TextureMapViewWrapper.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/BMFMapStatus.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/BMapHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/BMapHandlerFactory.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/CustomMapHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/HeatMapHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/IndoorMapHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/InfoWindowHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/LocationLayerHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/MapStateHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/MapUpdateHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/MarkerHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/ProjectionHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/TileMapHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/ArcLineHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/CircleHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/DotHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/GroundHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/OverlayCommon.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/OverlayHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/OverlayHandlerFactory.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/OverlayManagerHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/PolygonHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/PolylineHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/TextHandler.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/Constants.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/Env.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/IOStreamUtils.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/ThreadPoolUtil.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/converter/FlutterDataConveter.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/converter/TypeConverter.java create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/bg_edittext_focused.xml create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/bg_edittext_normal.xml create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_en.png create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_marka.png create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_markb.png create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_markc.png create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_markd.png create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_marke.png create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_markf.png create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_markg.png create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_markh.png create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_marki.png create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_markj.png create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_st.png create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/launch_background.xml create mode 100644 lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/popup.png create mode 100644 lib/my_flutter_bmfmap-1.0.2/dartdoc_options.yaml create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Common/BMFFileManager.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Common/BMFFileManager.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/FlutterBmfmapPlugin.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/FlutterBmfmapPlugin.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFAnnotationHandles.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFAnnotationHandles.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFHeatMapHandles.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFHeatMapHandles.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapView.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapView.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewController.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewController.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewHandle.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewHandles.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewHandles.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFOverlayHandles.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFOverlayHandles.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFProjectionHandles.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFProjectionHandles.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFUserLocationHandles.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFUserLocationHandles.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/marker/BMFAnnotation.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/marker/BMFAnnotation.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFArcline.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFArcline.mm create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFCircle.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFCircle.mm create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFGroundOverlay.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFGroundOverlay.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFPolygon.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFPolygon.mm create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFPolyline.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFPolyline.mm create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFAsyncTileLayer.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFAsyncTileLayer.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFSyncTileLayer.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFSyncTileLayer.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFURLTileLayer.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFURLTileLayer.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFAnnotationMethodConst.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFAnnotationMethodConst.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFHeatMapConst.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFHeatMapConst.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFMapCallBackConst.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFMapCallBackConst.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFMapMethodConst.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFMapMethodConst.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFOfflineMapMethodConst.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFOfflineMapMethodConst.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFOverlayMethodConst.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFOverlayMethodConst.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFProjectionConst.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFProjectionConst.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFUserLocationConst.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFUserLocationConst.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFAnnotationModel.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFAnnotationModel.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFArclineModel.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFArclineModel.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFCircleModel.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFCircleModel.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFEdgeInsets.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFEdgeInsets.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFGroundModel.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFGroundModel.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFHeatMapModel.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFHeatMapModel.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFIndoorMapInfoModel.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFIndoorMapInfoModel.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFMapPoiModel.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFMapPoiModel.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFMapStatusModel.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFMapStatusModel.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFOLSearchRecordModel.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFOLSearchRecordModel.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFPolygonModel.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFPolygonModel.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFPolylineModel.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFPolylineModel.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFTileModel.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFTileModel.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFUserLocationModel.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFUserLocationModel.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMap.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMap.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapHandle.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapHandles.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapHandles.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapManager.h create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapManager.m create mode 100644 lib/my_flutter_bmfmap-1.0.2/ios/flutter_bmfmap.podspec create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/bmfmap_map.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_map_controller.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_map_linedraw_types.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_map_texture_map_view.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_map_view.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_offline_controller.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_projection.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_baseindoormap_info.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_custommap_option.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_heatmap.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_infowindow.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_map_options.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_mappoi.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_mapstatus.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_offline_models.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_userlocation.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_arcline.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_circle.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_dot.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_ground.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_marker.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_overlay.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_polygon.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_polyline.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_text.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_tile.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/bmf_method_channel_handler.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_dispatcher_factory.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_get_state_dispacther.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_method_id.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_state_dispacther.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_widget_state_dispather.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_marker_dispatcher.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_offline_map_dispatcher.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_overlay_dispatcher.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_userlocation_dispatcher.dart create mode 100644 lib/my_flutter_bmfmap-1.0.2/map_doc.zip create mode 100644 lib/my_flutter_bmfmap-1.0.2/pubspec.yaml create mode 100644 lib/my_flutter_bmfmap-1.0.2/test/flutter_bmfmap_test.dart create mode 100644 lib/pages/Works/DWDT/widget_to_image.dart diff --git a/android/app/release/output.json b/android/app/release/output.json index e9ecaef..e6aa759 100644 --- a/android/app/release/output.json +++ b/android/app/release/output.json @@ -1 +1 @@ -[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":20220426,"versionName":"1.4.28","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}] \ No newline at end of file +[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":20220502,"versionName":"1.4.29","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}] \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/.vscode/launch.json b/lib/my_flutter_bmfmap-1.0.2/.vscode/launch.json new file mode 100644 index 0000000..3287bb6 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/.vscode/launch.json @@ -0,0 +1,13 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Flutter", + "request": "launch", + "type": "dart" + } + ] +} \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/CHANGELOG.md b/lib/my_flutter_bmfmap-1.0.2/CHANGELOG.md new file mode 100644 index 0000000..0fe55ac --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/CHANGELOG.md @@ -0,0 +1,9 @@ +## 1.0.0 + +* TODO: Describe initial release. + +## 1.0.1 +提升版本号 + +## 1.0.2 +解决了与其它Flutter插件冲突的问题 diff --git a/lib/my_flutter_bmfmap-1.0.2/LICENSE b/lib/my_flutter_bmfmap-1.0.2/LICENSE new file mode 100644 index 0000000..4eb6358 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/LICENSE @@ -0,0 +1,13 @@ +Copyright (C) 2020 Baidu, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/README.md b/lib/my_flutter_bmfmap-1.0.2/README.md new file mode 100644 index 0000000..abbf597 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/README.md @@ -0,0 +1,14 @@ +# flutter_bmfmap + +A new Flutter plugin for BaiDuMap. + +## Getting Started + +This project is a starting point for a Flutter +[plug-in package](https://flutter.dev/developing-packages/), +a specialized package that includes platform-specific implementation code for +Android and/or iOS. + +For help getting started with Flutter, view our +[online documentation](https://flutter.dev/docs), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/lib/my_flutter_bmfmap-1.0.2/analysis_options.yaml b/lib/my_flutter_bmfmap-1.0.2/analysis_options.yaml new file mode 100644 index 0000000..2d54aab --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/analysis_options.yaml @@ -0,0 +1,27 @@ +# include: package:pedantic/analysis_options.1.9.0.yaml + +analyzer: + errors: + unused_import: warning + unused_shown_name: warning + exclude: + - 'doc/**' + - 'lib/src/third_party/pkg/**' + - 'lib/templates/*.html' + - 'pub.dartlang.org/**' + - 'testing/**' + - 'testing/test_package_flutter_plugin/**' + - 'testing/test_package_export_error/**' +linter: + rules: + # - always_declare_return_types + - annotate_overrides + - avoid_init_to_null + - directives_ordering + - no_adjacent_strings_in_list + - package_api_docs + - prefer_final_fields + - prefer_generic_function_type_aliases + - slash_for_doc_comments + - unawaited_futures +# - unnecessary_brace_in_string_interps diff --git a/lib/my_flutter_bmfmap-1.0.2/android/.gitignore b/lib/my_flutter_bmfmap-1.0.2/android/.gitignore new file mode 100644 index 0000000..c6cbe56 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/.gitignore @@ -0,0 +1,8 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures diff --git a/lib/my_flutter_bmfmap-1.0.2/android/build.gradle b/lib/my_flutter_bmfmap-1.0.2/android/build.gradle new file mode 100644 index 0000000..ac19be4 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/build.gradle @@ -0,0 +1,46 @@ +group 'com.baidu.flutter_bmfmap' +version '1.0' + + +buildscript { + repositories { + google() + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:3.5.0' + } +} + +rootProject.allprojects { + repositories { + google() + jcenter() + } +} + +apply plugin: 'com.android.library' + +android { + compileSdkVersion 28 + + defaultConfig { + minSdkVersion 16 + } + lintOptions { + disable 'InvalidPackage' + } + +} + +repositories { + mavenLocal() +} + + +dependencies { + implementation fileTree(includes: ['*.jar'], dir: 'libs') + implementation rootProject.findProject(":flutter_bmfbase") + implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0' +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/gradle.properties b/lib/my_flutter_bmfmap-1.0.2/android/gradle.properties new file mode 100644 index 0000000..38c8d45 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/gradle.properties @@ -0,0 +1,4 @@ +org.gradle.jvmargs=-Xmx1536M +android.enableR8=true +android.useAndroidX=true +android.enableJetifier=true diff --git a/lib/my_flutter_bmfmap-1.0.2/android/gradle/wrapper/gradle-wrapper.properties b/lib/my_flutter_bmfmap-1.0.2/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..01a286e --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip diff --git a/lib/my_flutter_bmfmap-1.0.2/android/settings.gradle b/lib/my_flutter_bmfmap-1.0.2/android/settings.gradle new file mode 100644 index 0000000..3cd351e --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'flutter_bmfmap' diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/AndroidManifest.xml b/lib/my_flutter_bmfmap-1.0.2/android/src/main/AndroidManifest.xml new file mode 100644 index 0000000..863f1f7 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/BMFEventHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/BMFEventHandler.java new file mode 100644 index 0000000..722a6cd --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/BMFEventHandler.java @@ -0,0 +1,38 @@ +package com.baidu.flutter_bmfmap; + +import android.content.Context; + +import com.baidu.mapapi.map.MapView; + +import io.flutter.plugin.common.BinaryMessenger; +import io.flutter.plugin.common.EventChannel; +import io.flutter.plugin.common.MethodChannel; + +public class BMFEventHandler implements EventChannel.StreamHandler { + + private Context mContext; + + private ViewType mMapView; + + private BinaryMessenger mMessager; + + private MethodChannel mMethodChannel; + private EventChannel mEventChannel; + + public BMFEventHandler(Context context, ViewType mapView, MethodChannel methodChannel, EventChannel eventChannel){ + mContext = context; + mMapView = mapView; + mMethodChannel = methodChannel; + mEventChannel = eventChannel; + } + + @Override + public void onListen(Object arguments, EventChannel.EventSink events) { + + } + + @Override + public void onCancel(Object arguments) { + + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/BMFHandlerHelper.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/BMFHandlerHelper.java new file mode 100644 index 0000000..dc35c0b --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/BMFHandlerHelper.java @@ -0,0 +1,36 @@ +package com.baidu.flutter_bmfmap; + +import android.content.Context; + +import com.baidu.flutter_bmfmap.map.FlutterCommonMapView; + +import io.flutter.plugin.common.EventChannel; +import io.flutter.plugin.common.MethodChannel; + +public class BMFHandlerHelper { + + private MethodChannel mMethodChannel; + + private BMFMethodHandler mBMFMethodHandler; + + private EventChannel mEventChannel; + + private BMFEventHandler mBMFEventHandler; + + public BMFHandlerHelper(Context context + , FlutterCommonMapView mapView + , MethodChannel methodChannel + , EventChannel eventChannel){ + init(context, mapView, methodChannel, eventChannel); + } + + private void init(Context context, FlutterCommonMapView mapView, MethodChannel methodChannel, EventChannel eventChannel){ + mMethodChannel = methodChannel; + mBMFMethodHandler = new BMFMethodHandler(context, mapView, methodChannel, eventChannel); + mMethodChannel.setMethodCallHandler(mBMFMethodHandler); + + mEventChannel = eventChannel; + mBMFEventHandler = new BMFEventHandler(context, mapView, methodChannel, eventChannel); + mEventChannel.setStreamHandler(mBMFEventHandler); + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/BMFMethodHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/BMFMethodHandler.java new file mode 100644 index 0000000..820f926 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/BMFMethodHandler.java @@ -0,0 +1,62 @@ +package com.baidu.flutter_bmfmap; + +import android.content.Context; +import android.util.Log; + +import com.baidu.flutter_bmfmap.map.mapHandler.BMapHandlerFactory; +import com.baidu.flutter_bmfmap.map.FlutterCommonMapView; +import com.baidu.flutter_bmfmap.map.overlayHandler.OverlayHandlerFactory; +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.mapapi.map.BaiduMap; + +import io.flutter.plugin.common.EventChannel; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +public class BMFMethodHandler implements MethodChannel.MethodCallHandler { + private static final String TAG = "BMFMethodHandler"; + + private Context mContext; + private FlutterCommonMapView mMapView; + private final BaiduMap mBaiduMap; + private MethodChannel mMethodChannel; + private EventChannel mEventChannel; + + public BMFMethodHandler(Context context + ,FlutterCommonMapView mapView + ,MethodChannel methodChannel + ,EventChannel eventChannel){ + mContext = context; + mMapView = mapView; + mBaiduMap = mapView.getBaiduMap(); + mMethodChannel = methodChannel; + mEventChannel = eventChannel; + } + + + + @Override + public void onMethodCall(MethodCall call, MethodChannel.Result result) { + if(Env.DEBUG){ + Log.d(TAG,"onMethodCall enter"); + } + + if(null == call || null == result){ + Log.d(TAG,"null == call || null == result"); + return; + } + + if (null == mMapView || null == mBaiduMap) { + Log.d(TAG,"mMapView == call || mBaiduMap == result"); + return; + } + + boolean ret = OverlayHandlerFactory.getInstance(mBaiduMap).dispatchMethodHandler(call, + result); + + if (!ret) { + BMapHandlerFactory.getInstance(mMapView).dispatchMethodHandler(mContext,call, + result, mMethodChannel); + } + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/FlutterBmfmapPlugin.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/FlutterBmfmapPlugin.java new file mode 100644 index 0000000..8cd6288 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/FlutterBmfmapPlugin.java @@ -0,0 +1,127 @@ +package com.baidu.flutter_bmfmap; + +import android.util.Log; + +import androidx.annotation.NonNull; + +import com.baidu.flutter_bmfmap.map.OfflineHandler; +import com.baidu.flutter_bmfmap.utils.Constants; + +import io.flutter.embedding.engine.plugins.FlutterPlugin; +import io.flutter.embedding.engine.plugins.activity.ActivityAware; +import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding; +import io.flutter.plugin.common.BinaryMessenger; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel.MethodCallHandler; +import io.flutter.plugin.common.MethodChannel.Result; +import io.flutter.plugin.common.PluginRegistry.Registrar; +import io.flutter.plugin.platform.PlatformViewRegistry; + +/** FlutterBmfmapPlugin */ +public class FlutterBmfmapPlugin implements FlutterPlugin, ActivityAware, MethodCallHandler { + private static final String TAG = FlutterBmfmapPlugin.class.getSimpleName(); + + private OfflineHandler mOfflineHandler; + private PlatformViewRegistry mPlatformViewRegistry; + private BinaryMessenger mMessenger; + + @Override + public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) { + if(null == flutterPluginBinding){ + return; + } + + mMessenger = flutterPluginBinding.getBinaryMessenger(); + if (null == mMessenger) { + return; + } + + mOfflineHandler = new OfflineHandler(); + mOfflineHandler.init(mMessenger); + + mPlatformViewRegistry = flutterPluginBinding.getPlatformViewRegistry(); + } + + // This static function is optional and equivalent to onAttachedToEngine. It supports the old + // pre-Flutter-1.12 Android projects. You are encouraged to continue supporting + // plugin registration via this function while apps migrate to use the new Android APIs + // post-flutter-1.12 via https://flutter.dev/go/android-project-migration. + // + // It is encouraged to share logic between onAttachedToEngine and registerWith to keep + // them functionally equivalent. Only one of onAttachedToEngine or registerWith will be called + // depending on the user's project. onAttachedToEngine or registerWith must both be defined + // in the same class. + public static void registerWith(Registrar registrar) { + OfflineHandler offlineHandler = new OfflineHandler(); + offlineHandler.init(registrar.messenger()); + + registrar.platformViewRegistry().registerViewFactory( + Constants.ViewType.sMapView, + new MapViewFactory(registrar.activity() + , registrar.messenger() + , Constants.ViewType.sMapView)); + + registrar.platformViewRegistry().registerViewFactory( + Constants.ViewType.sTextureMapView, + new TextureMapViewFactory(registrar.activity() + , registrar.messenger() + , Constants.ViewType.sTextureMapView)); + } + + @Override + public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) { + if (call.method.equals("getPlatformVersion")) { + result.success("Android " + android.os.Build.VERSION.RELEASE); + }else{ + + } + } + + @Override + public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) { + if(null == binding){ + return; + } + + BinaryMessenger binaryMessenger = binding.getBinaryMessenger(); + if(null == binaryMessenger){ + return; + } + + mOfflineHandler.unInit(binding.getBinaryMessenger()); + } + + @Override + public void onAttachedToActivity(ActivityPluginBinding binding) { + if(null == binding || null == mPlatformViewRegistry || null == mMessenger){ + return; + } + + mPlatformViewRegistry.registerViewFactory( + Constants.ViewType.sMapView, + new MapViewFactory(binding.getActivity() + , mMessenger + , Constants.ViewType.sMapView)); + + mPlatformViewRegistry.registerViewFactory( + Constants.ViewType.sTextureMapView, + new TextureMapViewFactory(binding.getActivity() + , mMessenger + , Constants.ViewType.sTextureMapView)); + } + + @Override + public void onDetachedFromActivityForConfigChanges() { + Log.d(TAG, "onDetachedFromActivityForConfigChanges"); + } + + @Override + public void onReattachedToActivityForConfigChanges(ActivityPluginBinding binding) { + Log.d(TAG, "onReattachedToActivityForConfigChanges"); + } + + @Override + public void onDetachedFromActivity() { + Log.d(TAG, "onDetachedFromActivity"); + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/MapViewFactory.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/MapViewFactory.java new file mode 100644 index 0000000..b64cfdf --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/MapViewFactory.java @@ -0,0 +1,40 @@ +package com.baidu.flutter_bmfmap; + +import android.content.Context; +import android.util.Log; + +import io.flutter.plugin.common.BinaryMessenger; +import io.flutter.plugin.common.StandardMessageCodec; +import io.flutter.plugin.platform.PlatformView; +import io.flutter.plugin.platform.PlatformViewFactory; + +import com.baidu.flutter_bmfmap.map.FlutterMapView; +import com.baidu.flutter_bmfmap.utils.Env; + +public class MapViewFactory extends PlatformViewFactory { + + private static final String TAG = "ViewFactory"; + private BinaryMessenger mMessenger; + private Context mContext; + private String mViewType; + /** + * @param messenger the codec used to decode the args parameter of {@link #create}. + */ + public MapViewFactory(Context context, BinaryMessenger messenger, String viewType) { + super(StandardMessageCodec.INSTANCE); + if(Env.DEBUG){ + Log.d(TAG, "ViewFactory"); + } + mContext = context; + mMessenger = messenger; + mViewType = viewType; + } + + @Override + public PlatformView create(Context context, int viewId, Object args) { + if(Env.DEBUG){ + Log.d(TAG, "create"); + } + return new FlutterMapView(mContext, mMessenger, viewId, args, mViewType); + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/TextureMapViewFactory.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/TextureMapViewFactory.java new file mode 100644 index 0000000..b24cd16 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/TextureMapViewFactory.java @@ -0,0 +1,42 @@ +package com.baidu.flutter_bmfmap; + +import android.content.Context; +import android.util.Log; + +import com.baidu.flutter_bmfmap.map.FlutterMapView; +import com.baidu.flutter_bmfmap.map.FlutterTextureMapView; +import com.baidu.flutter_bmfmap.utils.Env; + +import io.flutter.plugin.common.BinaryMessenger; +import io.flutter.plugin.common.MessageCodec; +import io.flutter.plugin.common.StandardMessageCodec; +import io.flutter.plugin.platform.PlatformView; +import io.flutter.plugin.platform.PlatformViewFactory; + +public class TextureMapViewFactory extends PlatformViewFactory { + + private static final String TAG = "ViewFactory"; + private BinaryMessenger mMessenger; + private Context mContext; + private String mViewType; + /** + * @param messenger the codec used to decode the args parameter of {@link #create}. + */ + public TextureMapViewFactory(Context context, BinaryMessenger messenger, String viewType) { + super(StandardMessageCodec.INSTANCE); + if(Env.DEBUG){ + Log.d(TAG, "ViewFactory"); + } + mContext = context; + mMessenger = messenger; + mViewType = viewType; + } + + @Override + public PlatformView create(Context context, int viewId, Object args) { + if(Env.DEBUG){ + Log.d(TAG, "create"); + } + return new FlutterTextureMapView(mContext, mMessenger, viewId, args, mViewType); + } +} \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/FlutterBaseMapView.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/FlutterBaseMapView.java new file mode 100644 index 0000000..7733f8c --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/FlutterBaseMapView.java @@ -0,0 +1,27 @@ +package com.baidu.flutter_bmfmap.map; + +import java.util.Map; + +public abstract class FlutterBaseMapView { + + protected String mViewType; + + protected boolean mResume = false; + + protected int mGetViewCount = 0; + + protected abstract void init(int viewId, Object args); + + protected abstract void initMapView(Object args, FlutterCommonMapView flutterCommonMapView); + + protected void initMapStatus(Map mapOptionsMap, + FlutterCommonMapView flutterCommonMapView) { + if (null == mapOptionsMap) { + return; + } + + MapStateUpdateImp.getInstance() + .setCommView(flutterCommonMapView) + .updateMapState(mapOptionsMap); + } +} \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/FlutterCommonMapView.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/FlutterCommonMapView.java new file mode 100644 index 0000000..35205f0 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/FlutterCommonMapView.java @@ -0,0 +1,58 @@ +package com.baidu.flutter_bmfmap.map; + +import com.baidu.flutter_bmfmap.utils.Constants; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.MapView; +import com.baidu.mapapi.map.TextureMapView; + +import java.util.Map; + +public abstract class FlutterCommonMapView{ + protected String mViewType; + public String getViewType(){ + return mViewType; + } + + + + public void setmViewType(String viewType){ + mViewType = viewType; + } + + abstract public MapView getMapView(); + abstract public TextureMapView getTextureMapView(); + + public BaiduMap getBaiduMap(){ + BaiduMap baiduMap = null; + switch (mViewType){ + case Constants.ViewType.sMapView: + baiduMap = getBaiduMapFromMapView(); + break; + case Constants.ViewType.sTextureMapView: + baiduMap = getBaiduMapFromTextureMapView(); + break; + default: + break; + } + + return baiduMap; + } + + private BaiduMap getBaiduMapFromMapView(){ + MapView mapView = this.getMapView(); + if(null == mapView){ + return null; + } + + return mapView.getMap(); + } + + private BaiduMap getBaiduMapFromTextureMapView(){ + TextureMapView textureMapView = this.getTextureMapView(); + if(null == textureMapView){ + return null; + } + + return textureMapView.getMap(); + } +} \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/FlutterMapView.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/FlutterMapView.java new file mode 100644 index 0000000..8dec263 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/FlutterMapView.java @@ -0,0 +1,170 @@ +package com.baidu.flutter_bmfmap.map; + +import static com.baidu.flutter_bmfmap.utils.Constants.MAX_GET_VIEW_CNT_BY_FLUTTER_RESIZE; + +import java.util.Map; + +import com.baidu.flutter_bmfmap.BMFHandlerHelper; +import com.baidu.flutter_bmfmap.map.mapHandler.BMapHandlerFactory; +import com.baidu.flutter_bmfmap.map.overlayHandler.OverlayHandlerFactory; +import com.baidu.flutter_bmfmap.utils.Constants; +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.mapapi.map.MapView; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.util.Log; +import android.view.View; +import androidx.annotation.NonNull; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; +import io.flutter.plugin.common.BinaryMessenger; +import io.flutter.plugin.common.EventChannel; +import io.flutter.plugin.common.MethodChannel; +import io.flutter.plugin.platform.PlatformView; + +public class FlutterMapView extends FlutterBaseMapView implements PlatformView { + + private static final String TAG = "FlutterMapView"; + + private MapView mMapView; + + private Context mContext; + + private BinaryMessenger mMessager; + + private BMFHandlerHelper mBMFHandlerHelper; + + private MethodChannel mMethodChannel; + + private EventChannel mEventChannel; + + private BroadcastReceiver mReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (Constants.sConfigChangedAction.equals(action) && !mResume) { + mResume = true; + } + } + }; + + public FlutterMapView(Context context, + BinaryMessenger messenger, + int viewId, + Object args, + String viewType) { + if (Env.DEBUG) { + Log.d(TAG, "FlutterMapView"); + } + mContext = context; + mMessager = messenger; + mViewType = viewType; + init(viewId, args); + } + + protected void init(int viewId, Object args) { + if (Env.DEBUG) { + Log.d(TAG, "init"); + } + + mMapView = new MapView(mContext); + FlutterCommonMapView mapViewWrapper = new MapViewWrapper(this, mViewType); + initMapView(args, mapViewWrapper); + + mMethodChannel = new MethodChannel(mMessager, + Constants.VIEW_METHOD_CHANNEL_PREFIX + (char) (viewId + 97)); + + mEventChannel = new EventChannel(mMessager, + Constants.VIEW_EVENT_CHANNEL_PREFIX + (char) (viewId + 97)); + + mBMFHandlerHelper = + new BMFHandlerHelper(mContext, mapViewWrapper, mMethodChannel, mEventChannel); + + new MapListener(new MapViewWrapper(this, mViewType), mMethodChannel); + + IntentFilter intentFilter = new IntentFilter(Constants.sConfigChangedAction); + LocalBroadcastManager.getInstance(mContext).registerReceiver(mReceiver, intentFilter); + + if (Env.DEBUG) { + Log.d(TAG, "init success"); + } + } + + protected void initMapView(Object args, FlutterCommonMapView flutterCommonMapView) { + if (null == mContext) { + return; + } + + Map mapOptionsMap = (Map) args; + if (null == mapOptionsMap) { + return; + } + + initMapStatus(mapOptionsMap, flutterCommonMapView); + } + + @Override + public View getView() { + if (Env.DEBUG) { + Log.d(TAG, "getView"); + } + + if (mResume) { + mGetViewCount++; + } + + if (mGetViewCount >= MAX_GET_VIEW_CNT_BY_FLUTTER_RESIZE - 1) { + mMapView.onResume(); + mResume = false; + mGetViewCount = 0; + } + + return mMapView; + } + + @Override + public void onFlutterViewAttached(@NonNull View flutterView) { + if (Env.DEBUG) { + Log.d(TAG, "onFlutterViewAttached"); + } + if (null != mMapView) { + mMapView.onResume(); + } + } + + @Override + public void onFlutterViewDetached() { + if (Env.DEBUG) { + Log.d(TAG, "onFlutterViewDetached"); + } + if (null != mMapView) { + mMapView.onPause(); + } + } + + @Override + public void dispose() { + if (Env.DEBUG) { + Log.d(TAG, "dispose"); + } + + LocalBroadcastManager.getInstance(mContext).unregisterReceiver(mReceiver); + + BMapHandlerFactory.getInstance(null).clean(); + OverlayHandlerFactory.getInstance(null).clean(); + + if (null != mMapView) { + mMapView.onDestroy(); + } + } + + public void setResumeState(boolean resume) { + mResume = true; + } + + public MapView getMapView() { + return mMapView; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/FlutterTextureMapView.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/FlutterTextureMapView.java new file mode 100644 index 0000000..aaea82b --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/FlutterTextureMapView.java @@ -0,0 +1,152 @@ +package com.baidu.flutter_bmfmap.map; + +import static com.baidu.flutter_bmfmap.utils.Constants.MAX_GET_VIEW_CNT_BY_FLUTTER_RESIZE; + +import java.util.Map; + +import com.baidu.flutter_bmfmap.BMFHandlerHelper; +import com.baidu.flutter_bmfmap.utils.Constants; +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.mapapi.map.TextureMapView; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.util.Log; +import android.view.View; +import androidx.annotation.NonNull; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; +import io.flutter.plugin.common.BinaryMessenger; +import io.flutter.plugin.common.EventChannel; +import io.flutter.plugin.common.MethodChannel; +import io.flutter.plugin.platform.PlatformView; + +public class FlutterTextureMapView extends FlutterBaseMapView implements PlatformView { + + private static final String TAG = "FlutterMapView"; + + private TextureMapView mTextureMapView; + + private Context mContext; + + private BinaryMessenger mMessager; + + private BMFHandlerHelper mBMFHandlerHelper; + + private MethodChannel mMethodChannel; + + private EventChannel mEventChannel; + + private BroadcastReceiver mReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (Constants.sConfigChangedAction.equals(action) && !mResume) { + mResume = true; + } + } + }; + + public FlutterTextureMapView(Context context, + BinaryMessenger messenger, + int viewId, + Object args, + String viewType) { + Log.d(TAG, "FlutterMapView"); + mContext = context; + mMessager = messenger; + mViewType = viewType; + init(viewId, args); + } + + protected void init(int viewId, Object args) { + if (Env.DEBUG) { + Log.d(TAG, "init"); + } + + mTextureMapView = new TextureMapView(mContext); + FlutterCommonMapView flutterCommonMapView = + new TextureMapViewWrapper(mTextureMapView, mViewType); + initMapView(args, flutterCommonMapView); + + mMethodChannel = new MethodChannel(mMessager, + Constants.VIEW_METHOD_CHANNEL_PREFIX + (char) (viewId + 97)); + + mEventChannel = new EventChannel(mMessager, + Constants.VIEW_EVENT_CHANNEL_PREFIX + (char) (viewId + 97)); + + mBMFHandlerHelper = + new BMFHandlerHelper(mContext, flutterCommonMapView, mMethodChannel, mEventChannel); + + new MapListener(new TextureMapViewWrapper(mTextureMapView, mViewType), mMethodChannel); + + IntentFilter intentFilter = new IntentFilter(Constants.sConfigChangedAction); + LocalBroadcastManager.getInstance(mContext).registerReceiver(mReceiver, intentFilter); + + if (Env.DEBUG) { + Log.d(TAG, "init success"); + } + } + + protected void initMapView(Object args, FlutterCommonMapView flutterCommonMapView) { + if (null == mContext) { + return; + } + + Map mapOptionsMap = (Map) args; + if (null == mapOptionsMap) { + return; + } + + initMapStatus(mapOptionsMap, flutterCommonMapView); + } + + @Override + public View getView() { + if (Env.DEBUG) { + Log.d(TAG, "getView"); + } + + if (mResume) { + mGetViewCount++; + } + + if (mGetViewCount >= MAX_GET_VIEW_CNT_BY_FLUTTER_RESIZE - 1) { + mTextureMapView.onResume(); + mResume = false; + mGetViewCount = 0; + } + + return mTextureMapView; + } + + @Override + public void onFlutterViewAttached(@NonNull View flutterView) { + if (null != mTextureMapView) { + mTextureMapView.onResume(); + } + + } + + @Override + public void onFlutterViewDetached() { + if (null != mTextureMapView) { + mTextureMapView.onPause(); + } + + } + + @Override + public void dispose() { + if (Env.DEBUG) { + Log.d(TAG, "dispose"); + } + + LocalBroadcastManager.getInstance(mContext).unregisterReceiver(mReceiver); + + if (null != mTextureMapView) { + mTextureMapView.onDestroy(); + } + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/MapListener.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/MapListener.java new file mode 100644 index 0000000..d0fa805 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/MapListener.java @@ -0,0 +1,696 @@ +package com.baidu.flutter_bmfmap.map; + +import android.graphics.Point; +import android.os.Bundle; +import android.text.TextUtils; +import android.util.Log; + +import com.baidu.flutter_bmfmap.utils.Constants; +import com.baidu.flutter_bmfmap.utils.Env; +import android.os.Message; + +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.MapBaseIndoorMapInfo; +import com.baidu.mapapi.map.MapPoi; +import com.baidu.mapapi.map.MapStatus; +import com.baidu.mapapi.map.Marker; +import com.baidu.mapapi.map.Polyline; +import com.baidu.mapapi.model.LatLng; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import android.os.Handler; +import javax.microedition.khronos.opengles.GL10; + +import io.flutter.plugin.common.MethodChannel; +import com.baidu.flutter_bmfmap.utils.ThreadPoolUtil; +import com.baidu.mapapi.model.LatLngBounds; + + +@SuppressWarnings("unchecked") +public class MapListener implements BaiduMap.OnMapClickListener ,BaiduMap.OnMapLoadedCallback, + BaiduMap.OnMapStatusChangeListener ,BaiduMap.OnMapRenderCallback,BaiduMap.OnMapDrawFrameCallback, + BaiduMap.OnBaseIndoorMapListener ,BaiduMap.OnMarkerClickListener,BaiduMap.OnPolylineClickListener, + BaiduMap.OnMapDoubleClickListener,BaiduMap.OnMapLongClickListener,BaiduMap.OnMarkerDragListener, + BaiduMap.OnMapRenderValidDataListener,BaiduMap.OnMyLocationClickListener { + + private static final int DRAW_FRAME_MESSAGE = 0; + private static final String TAG = "MapListener"; + private BaiduMap mBaiduMap; + private MethodChannel mMethodChannel; + private int mReason; + private HashMap mStatusMap; + + private final Handler mHandler = new Handler(){ + public void handleMessage(Message msg) { + super.handleMessage(msg); + if (msg.what == DRAW_FRAME_MESSAGE) { + if (null != mStatusMap){ + mMethodChannel.invokeMethod( + Constants.MethodProtocol.MapStateProtocol.sMapOnDrawMapFrameCallback,mStatusMap); + } + } + } + }; + + + public MapListener(FlutterCommonMapView mapView, MethodChannel methodChannel) { + this.mMethodChannel = methodChannel; + + if (null == mapView) { + return; + } + mBaiduMap = mapView.getBaiduMap(); + initListener(); + } + + private void initListener() { + if (null == mBaiduMap) { + return; + } + mBaiduMap.setOnMapClickListener(this); + mBaiduMap.setOnMapLoadedCallback(this); + mBaiduMap.setOnMapStatusChangeListener(this); + mBaiduMap.setOnMapDrawFrameCallback(this); + mBaiduMap.setOnMapRenderCallbadk(this); + mBaiduMap.setOnBaseIndoorMapListener(this); + mBaiduMap.setOnMarkerClickListener(this); + mBaiduMap.setOnPolylineClickListener(this); + mBaiduMap.setOnMapDoubleClickListener(this); + mBaiduMap.setOnMapLongClickListener(this); + mBaiduMap.setOnMarkerDragListener(this); + mBaiduMap.setOnMapRenderValidDataListener(this); + mBaiduMap.setOnMyLocationClickListener(this); + } + + @Override + public void onMapClick(LatLng latLng) { + if (null == latLng || mMethodChannel == null) { + return; + } + HashMap coordinateMap = new HashMap<>(); + HashMap coord = new HashMap<>(); + coord.put("latitude",latLng.latitude); + coord.put("longitude",latLng.longitude); + coordinateMap.put("coord",coord); + mMethodChannel.invokeMethod(Constants.MethodProtocol.MapStateProtocol.sMapOnClickedMapBlankCallback,coordinateMap); + } + + @Override + public void onMapPoiClick(MapPoi mapPoi) { + if (null == mapPoi || mMethodChannel == null) { + return; + } + HashMap pt = new HashMap<>(); + LatLng position = mapPoi.getPosition(); + if (null != position) { + pt.put("latitude",mapPoi.getPosition().latitude); + pt.put("longitude",mapPoi.getPosition().longitude); + } + HashMap poiMap = new HashMap<>(); + HashMap poi = new HashMap(); + poi.put("text",mapPoi.getName()); + poi.put("uid",mapPoi.getUid()); + poi.put("pt",pt); + poiMap.put("poi",poi); + mMethodChannel.invokeMethod(Constants.MethodProtocol.MapStateProtocol.sMapOnClickedMapPoiCallback,poiMap); + } + + @Override + public void onMapLoaded() { + mMethodChannel.invokeMethod(Constants.MethodProtocol.MapStateProtocol.sMapDidLoadCallback,""); + } + + @Override + public void onMapStatusChangeStart(MapStatus mapStatus) { + if (null == mapStatus || mMethodChannel == null) { + return; + } + HashMap targetScreenMap = new HashMap<>(); + Point targetScreen = mapStatus.targetScreen; + if (null == targetScreen) { + return; + } + targetScreenMap.put("x", (double) targetScreen.x); + targetScreenMap.put("y", (double) targetScreen.y); + HashMap targetMap = new HashMap<>(); + LatLng latLng = mapStatus.target; + if (null == latLng){ + return; + } + targetMap.put("latitude", latLng.latitude); + targetMap.put("longitude", latLng.longitude); + + LatLngBounds bound = mapStatus.bound; + if (null == bound) { + return; + } + HashMap latLngBoundMap = latLngBounds(bound); + if (null == latLngBoundMap) { + return; + } + HashMap statusMap = new HashMap<>(); + HashMap status = new HashMap(); + status.put("fLevel",((double)mapStatus.zoom)); + double rotate = mapStatus.rotate; + if (rotate > 180) { + rotate = rotate - 360; + } + status.put("fRotation", rotate); + status.put("fOverlooking",((double) mapStatus.overlook)); + status.put("targetScreenPt",targetScreenMap); + status.put("targetGeoPt",targetMap); + status.put("visibleMapBounds",latLngBoundMap); + statusMap.put("mapStatus",status); + mMethodChannel.invokeMethod(Constants.MethodProtocol.MapStateProtocol.sMapRegionWillChangeCallback,statusMap); + } + + @Override + public void onMapStatusChangeStart(MapStatus mapStatus, int reason) { + if (null == mapStatus || mMethodChannel == null) { + return; + } + mReason = reason; + HashMap targetScreenMap = new HashMap<>(); + Point targetScreen = mapStatus.targetScreen; + if (null == targetScreen) { + return; + } + targetScreenMap.put("x", (double) targetScreen.x); + targetScreenMap.put("y", (double) targetScreen.y); + HashMap targetMap = new HashMap<>(); + LatLng latLng = mapStatus.target; + if (null == latLng){ + return; + } + targetMap.put("latitude", latLng.latitude); + targetMap.put("longitude", latLng.longitude); + + LatLngBounds bound = mapStatus.bound; + if (null == bound) { + return; + } + HashMap latLngBoundMap = latLngBounds(bound); + if (null == latLngBoundMap) { + return; + } + HashMap statusMap = new HashMap<>(); + HashMap status = new HashMap(); + status.put("fLevel",((double)mapStatus.zoom)); + double rotate = mapStatus.rotate; + if (rotate > 180) { + rotate = rotate - 360; + } + status.put("fRotation", rotate); + status.put("fOverlooking",((double) mapStatus.overlook)); + status.put("targetScreenPt",targetScreenMap); + status.put("targetGeoPt",targetMap); + status.put("visibleMapBounds",latLngBoundMap); + statusMap.put("mapStatus",status); + statusMap.put("reason",mReason); + mMethodChannel.invokeMethod(Constants.MethodProtocol.MapStateProtocol. + sMapRegionWillChangeWithReasonCallback,statusMap); + } + + @Override + public void onMapStatusChange(MapStatus mapStatus) { + if (null == mapStatus || mMethodChannel == null) { + return; + } + HashMap targetScreenMap = new HashMap<>(); + Point targetScreen = mapStatus.targetScreen; + if (null == targetScreen) { + return; + } + targetScreenMap.put("x", (double) targetScreen.x); + targetScreenMap.put("y", (double) targetScreen.y); + HashMap targetMap = new HashMap<>(); + LatLng latLng = mapStatus.target; + if (null == latLng){ + return; + } + targetMap.put("latitude", latLng.latitude); + targetMap.put("longitude", latLng.longitude); + + LatLngBounds bound = mapStatus.bound; + if (null == bound) { + return; + } + HashMap latLngBoundMap = latLngBounds(bound); + if (null == latLngBoundMap) { + return; + } + HashMap statusMap = new HashMap<>(); + HashMap status = new HashMap(); + status.put("fLevel",((double)mapStatus.zoom)); + double rotate = mapStatus.rotate; + if (rotate > 180) { + rotate = rotate - 360; + } + status.put("fRotation", rotate); + status.put("fOverlooking",((double) mapStatus.overlook)); + status.put("targetScreenPt",targetScreenMap); + status.put("targetGeoPt",targetMap); + status.put("visibleMapBounds",latLngBoundMap); + statusMap.put("mapStatus",status); + + mMethodChannel.invokeMethod( + Constants.MethodProtocol.MapStateProtocol.sMapRegionDidChangeCallback,statusMap); + } + + @Override + public void onMapStatusChangeFinish(MapStatus mapStatus) { + if (null == mapStatus || mMethodChannel == null) { + return; + } + HashMap targetScreenMap = new HashMap<>(); + Point targetScreen = mapStatus.targetScreen; + if (null == targetScreen) { + return; + } + targetScreenMap.put("x", (double) targetScreen.x); + targetScreenMap.put("y", (double) targetScreen.y); + HashMap targetMap = new HashMap<>(); + LatLng latLng = mapStatus.target; + if (null == latLng){ + return; + } + targetMap.put("latitude", latLng.latitude); + targetMap.put("longitude", latLng.longitude); + + LatLngBounds bound = mapStatus.bound; + if (null == bound) { + return; + } + HashMap latLngBoundMap = latLngBounds(bound); + if (null == latLngBoundMap) { + return; + } + HashMap statusMap = new HashMap<>(); + HashMap status = new HashMap(); + status.put("fLevel",((double)mapStatus.zoom)); + double rotate = mapStatus.rotate; + if (rotate > 180) { + rotate = rotate - 360; + } + status.put("fRotation", rotate); + status.put("fOverlooking",((double) mapStatus.overlook)); + status.put("targetScreenPt",targetScreenMap); + status.put("targetGeoPt",targetMap); + status.put("visibleMapBounds",latLngBoundMap); + statusMap.put("mapStatus",status); + statusMap.put("reason",mReason); + mMethodChannel.invokeMethod(Constants.MethodProtocol.MapStateProtocol.sMapRegionDidChangeWithReasonCallback,statusMap); + mMethodChannel.invokeMethod(Constants.MethodProtocol.MapStateProtocol.sMapStatusDidChangedCallback,""); + } + + @Override + public void onMapRenderFinished() { + HashMap hashMap = new HashMap(); + hashMap.put("success",true); + mMethodChannel.invokeMethod(Constants.MethodProtocol.MapStateProtocol.sMapDidFinishRenderCallback,hashMap); + } + + @Override + public void onMapDrawFrame(GL10 gl10, MapStatus mapStatus) { + + } + + @Override + public void onMapDrawFrame(MapStatus mapStatus) { + if (null == mapStatus || mMethodChannel == null) { + return; + } + HashMap targetScreenMap = new HashMap<>(); + Point targetScreen = mapStatus.targetScreen; + if (null == targetScreen) { + return; + } + targetScreenMap.put("x", (double) targetScreen.x); + targetScreenMap.put("y", (double) targetScreen.y); + HashMap targetMap = new HashMap<>(); + LatLng latLng = mapStatus.target; + if (null == latLng){ + return; + } + targetMap.put("latitude", latLng.latitude); + targetMap.put("longitude", latLng.longitude); + + LatLngBounds bound = mapStatus.bound; + if (null == bound) { + return; + } + + HashMap latLngBoundMap = latLngBounds(bound); + if (null == latLngBoundMap) { + return; + } + mStatusMap = new HashMap<>(); + HashMap status = new HashMap(); + status.put("fLevel",((double)mapStatus.zoom)); + double rotate = mapStatus.rotate; + if (rotate > 180) { + rotate = rotate - 360; + } + status.put("fRotation", rotate); + status.put("fOverlooking",((double) mapStatus.overlook)); + status.put("targetScreenPt",targetScreenMap); + status.put("targetGeoPt",targetMap); + status.put("visibleMapBounds",latLngBoundMap); + mStatusMap.put("mapStatus",status); + + ThreadPoolUtil.getInstance().execute(new Runnable() { + @Override + public void run() { + Message msg = Message.obtain(); + msg.arg1 = DRAW_FRAME_MESSAGE; + mHandler.sendMessage(msg); + } + }); + + } + + @Override + public void onBaseIndoorMapMode(boolean isIndoorMap, MapBaseIndoorMapInfo mapBaseIndoorMapInfo) { + if (mMethodChannel == null) { + return; + } + HashMap indoorHashMap = new HashMap(); + indoorHashMap.put("flag",isIndoorMap); + HashMap indoorMap = new HashMap(); + if (isIndoorMap) { + if (null == mapBaseIndoorMapInfo) { + return; + } + String curFloor = mapBaseIndoorMapInfo.getCurFloor(); + String id = mapBaseIndoorMapInfo.getID(); + ArrayList floors = mapBaseIndoorMapInfo.getFloors(); + indoorMap.put("strFloor", curFloor); + indoorMap.put("strID", id); + indoorMap.put("listStrFloors", floors); + } + indoorHashMap.put("info",indoorMap); + mMethodChannel.invokeMethod(Constants.MethodProtocol.MapStateProtocol.sMapInOrOutBaseIndoorMapCallback + ,indoorHashMap); + } + + + @Override + public boolean onMarkerClick(Marker marker) { + if(Env.DEBUG){ + Log.d(TAG, "onMarkerClick"); + } + if(null == mMethodChannel){ + return false; + } + + Bundle bundle = marker.getExtraInfo(); + if(null == bundle){ + if(Env.DEBUG){ + Log.d(TAG, "bundle is null"); + } + return false; + } + + String id = bundle.getString("id"); + if(TextUtils.isEmpty(id)){ + if(Env.DEBUG){ + Log.d(TAG, "marker id is null "); + } + return false; + } + + + Map clickMap = new HashMap<>(); + clickMap.put("id", id); + + mMethodChannel.invokeMethod(Constants.MethodProtocol.MarkerProtocol.sMapClickedmarkedMethod, clickMap); + + return true; + } + + @Override + public boolean onPolylineClick(Polyline polyline) { + + Log.d("polyline", "polyline click"); + + HashMap hashMap = polylineClick(polyline); + HashMap polyLineMap = new HashMap<>(); + polyLineMap.put("polyline", hashMap); + mMethodChannel.invokeMethod(Constants.MethodProtocol.PolylineProtocol.sMapOnClickedOverlayCallback, polyLineMap); + + return true; + } + + private HashMap polylineClick(Polyline polyline) { + if (null == polyline) { + return null; + } + + Bundle bundle = polyline.getExtraInfo(); + String id = bundle.getString("id"); + + HashMap polylineMap = new HashMap(); + + List points = polyline.getPoints(); + List latlngLists = new ArrayList<>(); + if (null != points){ + for (int i = 0; i < points.size(); i++) { + HashMap latlngHashMap = new HashMap<>(); + latlngHashMap.put("latitude",points.get(i).latitude); + latlngHashMap.put("longitude",points.get(i).longitude); + latlngLists.add(latlngHashMap); + } + } + polylineMap.put("id", id); + polylineMap.put("coordinates",latlngLists); + + ArrayList colorList = new ArrayList<>(); + int[] colors = polyline.getColorList(); + if(null != colors){ + for(int i = 0; i < colors.length; i++){ + colorList.add(Integer.toHexString(colors[i])); + } + } + + + polylineMap.put("colors", colorList); + + polylineMap.put("color", polyline.getColor()); + polylineMap.put("lineDashType", polyline.getDottedLineType()); + polylineMap.put("lineCapType", 0); + polylineMap.put("lineJoinType", 0); + polylineMap.put("width", polyline.getWidth()); + polylineMap.put("zIndex", polyline.getZIndex()); + + return polylineMap; + } + + @Override + public void onMapDoubleClick(LatLng latLng) { + if (null == latLng || mMethodChannel == null) { + return; + } + HashMap coordinateMap = new HashMap<>(); + HashMap coord = new HashMap<>(); + coord.put("latitude",latLng.latitude); + coord.put("longitude",latLng.longitude); + coordinateMap.put("coord",coord); + mMethodChannel.invokeMethod(Constants.MethodProtocol.MapStateProtocol.sMapOnDoubleClickCallback,coordinateMap); + } + + @Override + public void onMapLongClick(LatLng latLng) { + if (null == latLng || mMethodChannel == null) { + return; + } + HashMap coordinateMap = new HashMap<>(); + HashMap coord = new HashMap<>(); + coord.put("latitude",latLng.latitude); + coord.put("longitude",latLng.longitude); + coordinateMap.put("coord",coord); + mMethodChannel.invokeMethod(Constants.MethodProtocol.MapStateProtocol.sMapOnLongClickCallback,coordinateMap); + } + + @Override + public void onMarkerDrag(Marker marker) { + if(Env.DEBUG){ + Log.d(TAG, "onMarkerDrag"); + } + if(null == mMethodChannel){ + return; + } + + Bundle bundle = marker.getExtraInfo(); + if(null == bundle){ + return; + } + + String id = bundle.getString("id"); + + if(null == mMethodChannel){ + return; + } + + if(TextUtils.isEmpty(id)){ + if(Env.DEBUG){ + Log.d(TAG, "id is null"); + } + return; + } + + if(TextUtils.isEmpty(id)){ + if(Env.DEBUG){ + Log.d(TAG, "id is null"); + } + return; + } + + + Map dragMap = new HashMap<>(); + dragMap.put("id", id); + Map extraInfoMap = new HashMap<>(); + extraInfoMap.put("state", Constants.MethodProtocol.MarkerProtocol.MarkerDragState.sDragging); + dragMap.put("extra", extraInfoMap); + + mMethodChannel.invokeMethod(Constants.MethodProtocol.MarkerProtocol.sMapDragMarkerMethod, dragMap); + } + + @Override + public void onMarkerDragEnd(Marker marker) { + if(Env.DEBUG){ + Log.d(TAG, "onMarkerDrag"); + } + if(null == mMethodChannel){ + return; + } + + Bundle bundle = marker.getExtraInfo(); + if(null == bundle){ + return; + } + + String id = bundle.getString("id"); + + if(null == mMethodChannel){ + return; + } + + if(TextUtils.isEmpty(id)){ + if(Env.DEBUG){ + Log.d(TAG, "id is null"); + } + return; + } + + LatLng center = marker.getPosition(); + if(null == center){ + return; + } + + Map dragMap = new HashMap<>(); + dragMap.put("id", id); + + Map centerMap = new HashMap<>(); + centerMap.put("latitude", center.latitude); + centerMap.put("longitude", center.longitude); + + Map extraInfoMap = new HashMap<>(); + extraInfoMap.put("center", centerMap); + extraInfoMap.put("state", Constants.MethodProtocol.MarkerProtocol.MarkerDragState.sDragEnd); + dragMap.put("extra", extraInfoMap); + + mMethodChannel.invokeMethod(Constants.MethodProtocol.MarkerProtocol.sMapDragMarkerMethod, dragMap); + } + + @Override + public void onMarkerDragStart(Marker marker) { + if(Env.DEBUG){ + Log.d(TAG, "onMarkerDrag"); + } + + Bundle bundle = marker.getExtraInfo(); + if(null == bundle){ + return; + } + + String id = bundle.getString("id"); + + if(null == mMethodChannel){ + return; + } + + if(TextUtils.isEmpty(id)){ + if(Env.DEBUG){ + Log.d(TAG, "id is null"); + } + return; + } + + LatLng center = marker.getPosition(); + if(null == center){ + return; + } + + Map dragMap = new HashMap<>(); + dragMap.put("id", id); + + Map centerMap = new HashMap<>(); + centerMap.put("latitude", center.latitude); + centerMap.put("longitude", center.longitude); + + Map extraInfoMap = new HashMap<>(); + extraInfoMap.put("center", centerMap); + extraInfoMap.put("state", Constants.MethodProtocol.MarkerProtocol.MarkerDragState.sDragStart); + dragMap.put("extra", extraInfoMap); + + mMethodChannel.invokeMethod(Constants.MethodProtocol.MarkerProtocol.sMapDragMarkerMethod, dragMap); + } + + @Override + public void onMapRenderValidData(boolean isValid, int errorCode, String errorMessage) { + HashMap hashMap = new HashMap(); + hashMap.put("isValid",isValid); + hashMap.put("errorCode",errorCode); + hashMap.put("errorMessage",errorMessage); + mMethodChannel.invokeMethod(Constants.MethodProtocol.MapStateProtocol.sMapRenderValidDataCallback,hashMap); + } + + + @Override + public boolean onMyLocationClick() { + return false; + } + + private HashMap latLngBounds(LatLngBounds latLngBounds) { + if (null == latLngBounds) { + return null; + } + // 该地理范围东北坐标 + LatLng northeast = latLngBounds.northeast; + // 该地理范围西南坐标 + LatLng southwest = latLngBounds.southwest; + + HashMap boundsMap = new HashMap(); + HashMap northeastMap = new HashMap(); + if (null == northeast){ + return null; + } + northeastMap.put("latitude", northeast.latitude); + northeastMap.put("longitude",northeast.longitude); + HashMap southwestMap = new HashMap(); + if (null == southwest) { + return null; + } + southwestMap.put("latitude",southwest.latitude); + southwestMap.put("longitude", southwest.longitude); + boundsMap.put("northeast",northeastMap); + boundsMap.put("southwest",southwestMap); + return boundsMap; + } +} + diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/MapStateUpdateImp.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/MapStateUpdateImp.java new file mode 100644 index 0000000..b3feafb --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/MapStateUpdateImp.java @@ -0,0 +1,363 @@ +package com.baidu.flutter_bmfmap.map; + +import java.util.Map; + +import com.baidu.flutter_bmfmap.map.mapHandler.BMFMapStatus; +import com.baidu.flutter_bmfmap.utils.Constants; +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.flutter_bmfmap.utils.converter.FlutterDataConveter; +import com.baidu.flutter_bmfmap.utils.converter.TypeConverter; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.LogoPosition; +import com.baidu.mapapi.map.MapStatus; +import com.baidu.mapapi.map.MapStatusUpdate; +import com.baidu.mapapi.map.MapStatusUpdateFactory; +import com.baidu.mapapi.map.MapView; +import com.baidu.mapapi.map.TextureMapView; +import com.baidu.mapapi.map.UiSettings; +import com.baidu.mapapi.model.LatLng; +import com.baidu.mapapi.model.LatLngBounds; + +import android.graphics.Point; +import android.text.TextUtils; + +/** + * 地图状态更新 + */ +public class MapStateUpdateImp { + private static MapStateUpdateImp sInstance = null; + + private String mViewType; + + private FlutterCommonMapView mFlutterCommonMapView; + + private BaiduMap mBaiduMap; + + private UiSettings mUiSettings; + + public static MapStateUpdateImp getInstance() { + if (null == sInstance) { + sInstance = new MapStateUpdateImp(); + } + + return sInstance; + } + + + public MapStateUpdateImp setCommView(FlutterCommonMapView commonMapView) { + if(null == commonMapView){ + return sInstance; + } + + if( mFlutterCommonMapView == commonMapView){ + return sInstance; + } + + mFlutterCommonMapView = commonMapView; + + mBaiduMap = commonMapView.getBaiduMap(); + mViewType = mFlutterCommonMapView.getViewType(); + mBaiduMap = mFlutterCommonMapView.getBaiduMap(); + mUiSettings = mBaiduMap.getUiSettings(); + return sInstance; + } + + public boolean updateMapState(Map mapOptionsMap) { + if (null == mapOptionsMap) { + return false; + } + + if (null == mFlutterCommonMapView || + null == mBaiduMap || + null == mUiSettings || + TextUtils.isEmpty(mViewType)) { + return false; + } + + // 设置地图类型 + Integer mapType = new TypeConverter().getValue(mapOptionsMap, "mapType"); + if (null != mapType) { + setMapType(mapType); + } + + // 设置指南针显示位置 + Map compassPosMap = new TypeConverter>().getValue(mapOptionsMap, "compassPosition"); + Point compassPos = FlutterDataConveter.mapToPoint(compassPosMap); + if (null != compassPos) { + mBaiduMap.setCompassPosition(compassPos); + } + + // 设置地图中心点 + Map centerMap = new TypeConverter>().getValue(mapOptionsMap, "center"); + LatLng center = FlutterDataConveter.mapToLatlng(centerMap); + if (null != center) { + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLng(center); + mBaiduMap.setMapStatus(mapStatusUpdate); + } + + // 设置地图缩放级别 + Integer zoomLevel = new TypeConverter().getValue(mapOptionsMap, "zoomLevel"); + if (null != zoomLevel) { + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.zoomTo(zoomLevel.floatValue()); + mBaiduMap.setMapStatus(mapStatusUpdate); + } + + // 设置地图最大、最小缩放级别 + Integer minZoomLevel = new TypeConverter().getValue(mapOptionsMap, "minZoomLevel"); + Integer maxZoomLevel = new TypeConverter().getValue(mapOptionsMap, "maxZoomLevel"); + if (null != minZoomLevel && null != maxZoomLevel) { + mBaiduMap.setMaxAndMinZoomLevel(maxZoomLevel.floatValue(), minZoomLevel.floatValue()); + } else if (null == minZoomLevel && null != maxZoomLevel ) { + mBaiduMap.setMaxAndMinZoomLevel(maxZoomLevel.floatValue(),mBaiduMap.getMinZoomLevel()); + } else if (null != minZoomLevel && null == maxZoomLevel) { + mBaiduMap.setMaxAndMinZoomLevel(mBaiduMap.getMaxZoomLevel(), minZoomLevel.floatValue()); + } + + // 设置地图旋转角度 + Double rotation = new TypeConverter().getValue(mapOptionsMap, "rotation"); + if (null != rotation) { + setRotation(rotation.floatValue()); + } + + // 设置地图俯仰角度 + if (mapOptionsMap.containsKey("overlooking")) { + Double overlooking = (Double) mapOptionsMap.get("overlooking"); + if (overlooking != null) { + MapStatus build = new MapStatus.Builder().overlook(overlooking.floatValue()).build(); + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(build); + mBaiduMap.setMapStatus(mapStatusUpdate); + } + } + + + // 是否显示3d建筑物 + Boolean buildingsEnabled = new TypeConverter().getValue(mapOptionsMap, "buildingsEnabled"); + if (null != buildingsEnabled) { + mBaiduMap.setBuildingsEnabled(buildingsEnabled); + } + + // 设置是否显示poi信息 + Boolean showMapPoi = new TypeConverter().getValue(mapOptionsMap, "showMapPoi"); + if (null != showMapPoi) { + mBaiduMap.showMapPoi(showMapPoi); + } + + // 设置是否显示路况信息 + Boolean trafficEnabled = new TypeConverter().getValue(mapOptionsMap, "trafficEnabled"); + if (null != trafficEnabled) { + mBaiduMap.setTrafficEnabled(trafficEnabled); + } + + // 限制地图的显示范围 + if (mapOptionsMap.containsKey("limitMapBounds")) { + Map limitMapRegion = (Map) mapOptionsMap.get("limitMapBounds"); + if (null != limitMapRegion) { + setMapLimits(limitMapRegion); + } + } + + // 设置是否显示百度自有热力图 + Boolean baiduHeatMapEnabled = new TypeConverter().getValue(mapOptionsMap, "baiduHeatMapEnabled"); + if (null != baiduHeatMapEnabled) { + mBaiduMap.setBaiduHeatMapEnabled(baiduHeatMapEnabled); + } + + // 设置是否启用手势 + Boolean gesturesEnabled = new TypeConverter().getValue(mapOptionsMap, "gesturesEnabled"); + if (null != gesturesEnabled) { + mUiSettings.setAllGesturesEnabled(gesturesEnabled); + } + + // 设置是否开启放大缩小 + Boolean zoomEnabled = new TypeConverter().getValue(mapOptionsMap, "zoomEnabled"); + if (null != zoomEnabled) { + mUiSettings.setZoomGesturesEnabled(zoomEnabled); + } + + // 设置地图是否可滑动 + Boolean scrollEnabled = new TypeConverter().getValue(mapOptionsMap, "scrollEnabled"); + if (null != scrollEnabled) { + mUiSettings.setScrollGesturesEnabled(scrollEnabled); + } + + // 设置是否开启俯仰角 + Boolean overlookEnabled = new TypeConverter().getValue(mapOptionsMap, "overlookEnabled"); + if (null != overlookEnabled) { + mUiSettings.setOverlookingGesturesEnabled(overlookEnabled); + } + + // 设置是否开启旋转角 + Boolean rotateEnabled = new TypeConverter().getValue(mapOptionsMap, "rotateEnabled"); + if (null != rotateEnabled) { + mUiSettings.setRotateGesturesEnabled(rotateEnabled); + } + + // 设置比例尺是否显示 + Boolean showMapScaleBar = new TypeConverter().getValue(mapOptionsMap, "showMapScaleBar"); + if (null != showMapScaleBar) { + showScaleControl(showMapScaleBar); + } + + // 设置比例尺显示位置 + Map mapScaleBarPosMap = new TypeConverter>().getValue(mapOptionsMap, "mapScaleBarPosition"); + Point mapScaleBarPos = FlutterDataConveter.mapToPoint(mapScaleBarPosMap); + if (null != mapScaleBarPos) { + setScaleControlPosition(mapScaleBarPos); + } + + // 设置百度logo显示位置 + Integer logoPosition = new TypeConverter().getValue(mapOptionsMap, "logoPosition"); + if (null != logoPosition + && logoPosition >= LogoPosition.logoPostionleftBottom.ordinal() + && logoPosition <= LogoPosition.logoPostionRightTop.ordinal()) { + setLogoPosition(LogoPosition.values()[logoPosition.intValue()]); + } + + // 设置地图padding + Map mapPadding = new TypeConverter>().getValue(mapOptionsMap, "mapPadding"); + if (null != mapPadding) { + if (mapPadding.containsKey("top") && mapPadding.containsKey("left") + && mapPadding.containsKey("bottom") && mapPadding.containsKey("right")) { + Double top = mapPadding.get("top"); + Double left = mapPadding.get("left"); + Double bottom = mapPadding.get("bottom"); + Double right = mapPadding.get("right"); + + if (top != null && left != null && bottom != null && right != null) { + int iTop = top.intValue(); + int iLeft = left.intValue(); + int iBottom = bottom.intValue(); + int iRight = right.intValue(); + mBaiduMap.setViewPadding(iLeft, iTop, iRight, iBottom); + } + } + } + + + // 设置双击屏幕放大地图时,是否改变地图中心点为当前点击点 + Boolean changeCenterWithDoubleTouchPointEnabled = new TypeConverter().getValue(mapOptionsMap, "changeCenterWithDoubleTouchPointEnabled"); + if (null != changeCenterWithDoubleTouchPointEnabled) { + // 这个值,sdk好像取的是反的,这个设个反值 + mUiSettings.setEnlargeCenterWithDoubleClickEnable(!changeCenterWithDoubleTouchPointEnabled); + } + + // 设置是否开启室内图 + Boolean baseIndoorMapEnabled = new TypeConverter().getValue(mapOptionsMap, "baseIndoorMapEnabled"); + if (null != baseIndoorMapEnabled) { + mBaiduMap.setIndoorEnable(baseIndoorMapEnabled); + BMFMapStatus.getsInstance().setBaseIndoorEnable(baseIndoorMapEnabled); + } + + // 设置是否开启室内图poi + Boolean showIndoorMapPoi = new TypeConverter().getValue(mapOptionsMap, "showIndoorMapPoi"); + if (null != showIndoorMapPoi) { + mBaiduMap.showMapIndoorPoi(showIndoorMapPoi); + BMFMapStatus.getsInstance().setIndoorMapPoiEnable(showIndoorMapPoi); + } + + // 设置地图可视区域 + Map visibleMapBounds = new TypeConverter>().getValue(mapOptionsMap, "visibleMapBounds"); + LatLngBounds latLngBounds = FlutterDataConveter.mapToLatlngBounds(visibleMapBounds); + if (null != latLngBounds) { + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLngBounds(latLngBounds); + mBaiduMap.setMapStatus(mapStatusUpdate); + } + + return true; + } + + private void setMapType(Integer mapType) { + switch (mapType) { + case Env.MAP_TYPE_NONE: + mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NONE); + break; + case Env.MAP_TYPE_NORMAL: + mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); + break; + case Env.MAP_TYPE_SATELLITE: + mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE); + break; + default: + break; + } + } + + private void setRotation(float rotation) { + if (rotation < 0) { + rotation = rotation + 360; + } + MapStatus mapStatus = new MapStatus.Builder().rotate(rotation).build(); + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mapStatus); + mBaiduMap.setMapStatus(mapStatusUpdate); + } + + private void showScaleControl(boolean showScaleControl) { + switch(mViewType){ + case Constants.ViewType.sMapView: + MapView mapView = mFlutterCommonMapView.getMapView(); + if (null != mapView) { + mapView.showScaleControl(showScaleControl); + } + break; + case Constants.ViewType.sTextureMapView: + TextureMapView textureMapView = mFlutterCommonMapView.getTextureMapView(); + if (null != textureMapView) { + textureMapView.showScaleControl(showScaleControl); + } + break; + default: + break; + } + } + + private void setScaleControlPosition(Point mapScaleBarPos) { + switch (mViewType) { + case Constants.ViewType.sMapView: + MapView mapView = mFlutterCommonMapView.getMapView(); + if (null != mapView) { + mapView.setScaleControlPosition(mapScaleBarPos); + } + break; + case Constants.ViewType.sTextureMapView: + TextureMapView textureMapView = mFlutterCommonMapView.getTextureMapView(); + if (null != textureMapView) { + textureMapView.setScaleControlPosition(mapScaleBarPos); + } + break; + default: + break; + } + } + + private void setLogoPosition(LogoPosition logoPos) { + switch (mViewType) { + case Constants.ViewType.sMapView: + MapView mapView = mFlutterCommonMapView.getMapView(); + if(null != mapView){ + mapView.setLogoPosition(logoPos); + } + break; + case Constants.ViewType.sTextureMapView: + TextureMapView textureMapView = mFlutterCommonMapView.getTextureMapView(); + if (null != textureMapView) { + textureMapView.setLogoPosition(logoPos); + } + break; + default: + break; + } + } + + /** + * 限制地图的显示范围 + */ + private void setMapLimits(Map limitMapBounds) { + LatLngBounds latLngBounds = FlutterDataConveter.mapToLatlngBounds(limitMapBounds); + if (null == latLngBounds) { + return; + } + mBaiduMap.setMapStatusLimits(latLngBounds); + } + + +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/MapViewWrapper.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/MapViewWrapper.java new file mode 100644 index 0000000..115e6f3 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/MapViewWrapper.java @@ -0,0 +1,27 @@ +package com.baidu.flutter_bmfmap.map; + +import com.baidu.mapapi.map.MapView; +import com.baidu.mapapi.map.TextureMapView; + +public class MapViewWrapper extends FlutterCommonMapView { + FlutterMapView mFlutterMapView; + + public MapViewWrapper(FlutterMapView mapView, String viewType) { + mFlutterMapView = mapView; + mViewType = viewType; + } + + @Override + public MapView getMapView() { + return mFlutterMapView.getMapView(); + } + + public FlutterMapView getFlutterMapView() { + return mFlutterMapView; + } + + @Override + public TextureMapView getTextureMapView() { + return null; + } +} \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/OfflineHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/OfflineHandler.java new file mode 100644 index 0000000..d99b523 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/OfflineHandler.java @@ -0,0 +1,451 @@ +package com.baidu.flutter_bmfmap.map; + + +import android.text.TextUtils; + +import com.baidu.flutter_bmfmap.utils.Constants; +import com.baidu.mapapi.map.offline.MKOLSearchRecord; +import com.baidu.mapapi.map.offline.MKOLUpdateElement; +import com.baidu.mapapi.map.offline.MKOfflineMap; +import com.baidu.mapapi.map.offline.MKOfflineMapListener; +import com.baidu.mapapi.model.LatLng; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import io.flutter.embedding.engine.plugins.FlutterPlugin; +import io.flutter.plugin.common.BinaryMessenger; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +/** + * 离线地图handler + */ +public class OfflineHandler implements MethodChannel.MethodCallHandler { + private MKOfflineMap mMKOfflineMap; + private MethodChannel channel; + + public void init(BinaryMessenger messenger) { + channel = new MethodChannel(messenger, "flutter_bmfmap/offlineMap"); + channel.setMethodCallHandler(this); + } + + public void unInit(BinaryMessenger messenger) { + + } + + @Override + public void onMethodCall(MethodCall call, MethodChannel.Result result) { + if (null == call) { + return; + } + String methodId = call.method; + if (TextUtils.isEmpty(methodId)) { + return; + } + + switch (methodId) { + case Constants.MethodProtocol.BMFOfflineMethodId.sMapInitOfflineMethod: + initOfflineMap(result); + break; + case Constants.MethodProtocol.BMFOfflineMethodId.sMapStartOfflineMethod: + statOfflineMap(call,result); + break; + case Constants.MethodProtocol.BMFOfflineMethodId.sMapPauseOfflineMethod: + pauseOfflineMap(call,result); + break; + case Constants.MethodProtocol.BMFOfflineMethodId.sMapRemoveOfflineMethod: + removeOfflineMap(call,result); + break; + case Constants.MethodProtocol.BMFOfflineMethodId.sMapUpdateOfflineMethod: + updateOffline(call,result); + break; + case Constants.MethodProtocol.BMFOfflineMethodId.sMapDestroyOfflineMethod: + destroyOffline(result); + break; + case Constants.MethodProtocol.BMFOfflineMethodId.sMapGetHotCityListMethod: + getHotCityList(result); + break; + case Constants.MethodProtocol.BMFOfflineMethodId.sMapGetOfflineCityListMethod: + getOfflineCityList(result); + break; + case Constants.MethodProtocol.BMFOfflineMethodId.sMapSearchCityMethod: + seachCityList(call, result); + break; + case Constants.MethodProtocol.BMFOfflineMethodId.sMapGetAllUpdateInfoMethod: + getAllUpdateInfo(result); + break; + case Constants.MethodProtocol.BMFOfflineMethodId.sMapGetUpdateInfoMethod: + getUpdateInfo(call,result); + break; + default: + break; + } + } + + /** + * 初始化 + */ + private void initOfflineMap(MethodChannel.Result result) { + mMKOfflineMap = new MKOfflineMap(); + + mMKOfflineMap.init(new MKOfflineMapListener() { + + @Override + public void onGetOfflineMapState(int type, int state) { + HashMap hashMap = new HashMap(); + hashMap.put("type",type); + hashMap.put("state",state); + channel.invokeMethod(Constants.MethodProtocol.BMFOfflineMethodId.sMapOfflineCallBackMethod,hashMap); + } + }); + result.success(true); + } + + /** + * 销毁离线地图管理模块,不用时调用 + */ + private void destroyOffline(MethodChannel.Result result) { + if (null == mMKOfflineMap) { + result.success(false); + return; + } + mMKOfflineMap.destroy(); + result.success(true); + } + + /** + * 启动更新指定城市ID的离线地图 + */ + private void updateOffline(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mMKOfflineMap) { + result.success(false); + return; + } + if (!argument.containsKey("cityID")) { + result.success(false); + return; + } + Integer cityID = (Integer) argument.get("cityID"); + if (null != cityID) { + boolean update = mMKOfflineMap.update(cityID); + result.success(update); + } + } + + /** + * 删除指定城市ID的离线地图 + */ + private void removeOfflineMap(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mMKOfflineMap) { + result.success(false); + return; + } + if (!argument.containsKey("cityID")) { + result.success(false); + return; + } + + Integer cityID = (Integer) argument.get("cityID"); + if (null != cityID) { + boolean remove = mMKOfflineMap.remove(cityID); + result.success(remove); + } + } + + /** + * 暂停下载或更新指定城市ID的离线地图 + */ + private void pauseOfflineMap(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mMKOfflineMap) { + result.success(false); + return; + } + if (!argument.containsKey("cityID")) { + result.success(false); + return; + } + + Integer cityID = (Integer) argument.get("cityID"); + if (null != cityID) { + boolean pause = mMKOfflineMap.pause(cityID); + result.success(pause); + } + + } + + /** + * 启动下载指定城市ID的离线地图,或在暂停更新某城市后继续更新下载某城市离线地图 + */ + private void statOfflineMap(MethodCall call,MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mMKOfflineMap) { + result.success(false); + return; + } + if (!argument.containsKey("cityID")) { + result.success(false); + return; + } + + Integer cityID = (Integer) argument.get("cityID"); + if (null != cityID) { + boolean start = mMKOfflineMap.start(cityID); + result.success(start); + } + } + + /** + * 返回指定城市ID离线地图更新信息 + */ + private void getUpdateInfo(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mMKOfflineMap) { + result.success(null); + return; + } + + if (!argument.containsKey("cityID")) { + result.success(null); + return; + } + + Integer id = (Integer) argument.get("cityID"); + MKOLUpdateElement updateInfo = mMKOfflineMap.getUpdateInfo(id); + if (null != id && null != updateInfo) { + Map map = new HashMap(); + int cityID = updateInfo.cityID; + int ratio = updateInfo.ratio; + int status = updateInfo.status; + String cityName = updateInfo.cityName; + int size = updateInfo.size; + int serversize = updateInfo.serversize; + int level = updateInfo.level; + boolean update = updateInfo.update; + LatLng latLng = updateInfo.geoPt; + HashMap geoPt = new HashMap<>(); + geoPt.put("latitude", latLng.latitude); + geoPt.put("longitude", latLng.longitude); + map.put("cityID", cityID); + map.put("ratio", ratio); + map.put("status", status); + map.put("cityName", cityName); + map.put("geoPt", geoPt); + map.put("size", size); + map.put("serversize", serversize); + map.put("level", level); + map.put("update", update); + result.success(map); + } else { + result.success(null); + return; + } + } + + /** + * 返回各城市离线地图更新信息 + */ + private void getAllUpdateInfo(MethodChannel.Result result) { + if (null == mMKOfflineMap) { + result.success(null); + return; + } + ArrayList allUpdateInfo = mMKOfflineMap.getAllUpdateInfo(); + if (null == allUpdateInfo || allUpdateInfo.size() == 0) { + result.success(null); + return; + } + ArrayList arrayMap = new ArrayList<>(); + + HashMap offlineCityMap = new HashMap<>(); + for (int i = 0; i < allUpdateInfo.size(); i++) { + Map map = new HashMap(); + int cityID = allUpdateInfo.get(i).cityID; + int ratio = allUpdateInfo.get(i).ratio; + String cityName = allUpdateInfo.get(i).cityName; + int size = allUpdateInfo.get(i).size; + int serversize = allUpdateInfo.get(i).serversize; + int level = allUpdateInfo.get(i).level; + boolean update = allUpdateInfo.get(i).update; + LatLng latLng = allUpdateInfo.get(i).geoPt; + HashMap geoPt = new HashMap<>(); + geoPt.put("latitude",latLng.latitude); + geoPt.put("longitude",latLng.longitude); + map.put("cityID",cityID); + map.put("ratio",ratio); + map.put("cityName",cityName); + map.put("geoPt",geoPt); + map.put("size",size); + map.put("serversize",serversize); + map.put("level",level); + map.put("update",update); + arrayMap.add(map); + } + offlineCityMap.put("updateElements", arrayMap); + result.success(offlineCityMap); + } + + /** + * 根据城市名搜索该城市离线地图记录 + */ + private void seachCityList(MethodCall call,MethodChannel.Result result) { + if (null == mMKOfflineMap) { + result.success(null); + return; + } + Map argument = call.arguments(); + if (null == argument || null == mMKOfflineMap) { + result.success(null); + return; + } + + if (!argument.containsKey("cityName")) { + result.success(null); + return; + } + + String sCityName = (String) argument.get("cityName"); + if (null == sCityName) { + result.success(null); + return; + } + ArrayList seachCityList = mMKOfflineMap.searchCity(sCityName); + if (null == seachCityList){ + result.success(null); + return; + } + ArrayList arrayMap = new ArrayList<>(); + HashMap offlineCityMap = new HashMap<>(); + for (int i = 0; i < seachCityList.size(); i++) { + Map map = new HashMap(); + int cityID = seachCityList.get(i).cityID; + int cityType = seachCityList.get(i).cityType; + int dataSize = (int) seachCityList.get(i).dataSize; + String cityName = seachCityList.get(i).cityName; + ArrayList childCities = seachCityList.get(i).childCities; + ArrayList childArray = new ArrayList<>(); + if (null != childCities && childCities.size() > 0) { + for (int j = 0; j < childCities.size(); j++) { + HashMap childMap = new HashMap(); + int childCityID = childCities.get(j).cityID; + int childCityType = childCities.get(j).cityType; + int childDataSize = (int) childCities.get(j).dataSize; + String childCityName = childCities.get(j).cityName; + childMap.put("cityID",childCityID); + childMap.put("cityType",childCityType); + childMap.put("dataSize",childDataSize); + childMap.put("cityName",childCityName); + childArray.add(childMap); + } + } + map.put("cityID",cityID); + map.put("dataSize",dataSize); + map.put("cityName",cityName); + map.put("cityType",cityType); + map.put("childCities",childArray); + arrayMap.add(map); + } + offlineCityMap.put("searchCityRecord", arrayMap); + result.success(offlineCityMap); + } + + /** + * 返回热门城市列表 + */ + private void getHotCityList(MethodChannel.Result result) { + if (null == mMKOfflineMap) { + result.success(null); + return; + } + ArrayList hotCityList = mMKOfflineMap.getHotCityList(); + if (null == hotCityList){ + result.success(null); + return; + } + ArrayList arrayMap = new ArrayList<>(); + HashMap hotCityMap = new HashMap<>(); + for (int i = 0; i < hotCityList.size(); i++) { + Map map = new HashMap(); + int cityID = hotCityList.get(i).cityID; + int cityType = hotCityList.get(i).cityType; + int dataSize = (int) hotCityList.get(i).dataSize; + String cityName = hotCityList.get(i).cityName; + ArrayList childCities = hotCityList.get(i).childCities; + ArrayList childArray = new ArrayList<>(); + if (null != childCities && childCities.size() > 0) { + for (int j = 0; j < childCities.size(); j++) { + HashMap childMap = new HashMap(); + int childCityID = childCities.get(j).cityID; + int childCityType = childCities.get(j).cityType; + int childDataSize = (int) childCities.get(j).dataSize; + String childCityName = childCities.get(j).cityName; + childMap.put("cityID",childCityID); + childMap.put("cityType",childCityType); + childMap.put("dataSize",childDataSize); + childMap.put("cityName",childCityName); + childArray.add(childMap); + } + } + map.put("cityID",cityID); + map.put("dataSize",dataSize); + map.put("cityName",cityName); + map.put("cityType",cityType); + map.put("childCities",childArray); + arrayMap.add(map); + } + hotCityMap.put("searchCityRecord", arrayMap); + result.success(hotCityMap); + } + + /** + * 返回支持离线地图城市列表 + */ + private void getOfflineCityList(MethodChannel.Result result) { + if (null == mMKOfflineMap) { + result.success(null); + return; + } + ArrayList offlineCityList = mMKOfflineMap.getOfflineCityList(); + if (null == offlineCityList){ + result.success(null); + return; + } + ArrayList arrayMap = new ArrayList<>(); + HashMap offlineCityMap = new HashMap<>(); + for (int i = 0; i < offlineCityList.size(); i++) { + Map map = new HashMap(); + int cityID = offlineCityList.get(i).cityID; + int cityType = offlineCityList.get(i).cityType; + int dataSize = (int) offlineCityList.get(i).dataSize; + String cityName = offlineCityList.get(i).cityName; + ArrayList childCities = offlineCityList.get(i).childCities; + ArrayList childArray = new ArrayList<>(); + if (null != childCities && childCities.size() > 0) { + for (int j = 0; j < childCities.size(); j++) { + HashMap childMap = new HashMap(); + int childCityID = childCities.get(j).cityID; + int childCityType = childCities.get(j).cityType; + int childDataSize = (int) childCities.get(j).dataSize; + String childCityName = childCities.get(j).cityName; + childMap.put("cityID",childCityID); + childMap.put("cityType",childCityType); + childMap.put("dataSize",childDataSize); + childMap.put("cityName",childCityName); + childArray.add(childMap); + } + } + map.put("cityID",cityID); + map.put("dataSize",dataSize); + map.put("cityName",cityName); + map.put("cityType",cityType); + map.put("childCities",childArray); + arrayMap.add(map); + } + offlineCityMap.put("searchCityRecord", arrayMap); + result.success(offlineCityMap); + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/TextureMapViewWrapper.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/TextureMapViewWrapper.java new file mode 100644 index 0000000..5f8194b --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/TextureMapViewWrapper.java @@ -0,0 +1,24 @@ +package com.baidu.flutter_bmfmap.map; + +import com.baidu.mapapi.map.MapView; +import com.baidu.mapapi.map.TextureMapView; + +class TextureMapViewWrapper extends FlutterCommonMapView { + + private TextureMapView mTextureMapView; + + public TextureMapViewWrapper(TextureMapView textureMapView, String viewType){ + mTextureMapView = textureMapView; + mViewType = viewType; + } + + @Override + public MapView getMapView() { + return null; + } + + @Override + public TextureMapView getTextureMapView() { + return mTextureMapView; + } +} \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/BMFMapStatus.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/BMFMapStatus.java new file mode 100644 index 0000000..5a02031 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/BMFMapStatus.java @@ -0,0 +1,45 @@ +package com.baidu.flutter_bmfmap.map.mapHandler; + +/** + * 地图有些属性没有get接口,这个lei就用来暂存这些属性状态,供flutter端获取 + */ +public class BMFMapStatus { + + private static volatile BMFMapStatus sInstance; + + public static BMFMapStatus getsInstance(){ + if (null == sInstance) { + synchronized(BMFMapStatus.class) { + if (null == sInstance) { + sInstance = new BMFMapStatus(); + } + } + } + + return sInstance; + } + + public boolean isBaseIndoorEnable() { + return mBaseIndoorEnable; + } + + public void setBaseIndoorEnable(boolean mBaseIndoorEnable) { + this.mBaseIndoorEnable = mBaseIndoorEnable; + } + + public boolean isIndoorMapPoiEnable() { + return mIndoorMapPoiEnable; + } + + public void setIndoorMapPoiEnable(boolean mIndoorMapPoiEnable) { + this.mIndoorMapPoiEnable = mIndoorMapPoiEnable; + } + + /** + * 室内图状态 + */ + private boolean mBaseIndoorEnable = false; + + + private boolean mIndoorMapPoiEnable = true; +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/BMapHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/BMapHandler.java new file mode 100644 index 0000000..d073488 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/BMapHandler.java @@ -0,0 +1,24 @@ +package com.baidu.flutter_bmfmap.map.mapHandler; + +import android.content.Context; + +import com.baidu.flutter_bmfmap.map.FlutterCommonMapView; + +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +public abstract class BMapHandler{ + protected FlutterCommonMapView mMapView; + + public BMapHandler(FlutterCommonMapView mapView){ + this.mMapView = mapView; + } + + public abstract void handlerMethodCallResult(Context context,MethodCall call, MethodChannel.Result result); + + public void updateMapView(FlutterCommonMapView mapView){ + mMapView = mapView; + } + + public void clean(){} +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/BMapHandlerFactory.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/BMapHandlerFactory.java new file mode 100644 index 0000000..f2b45af --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/BMapHandlerFactory.java @@ -0,0 +1,200 @@ +package com.baidu.flutter_bmfmap.map.mapHandler; + +import android.content.Context; +import android.util.Log; + +import com.baidu.flutter_bmfmap.map.FlutterCommonMapView; +import com.baidu.flutter_bmfmap.utils.Constants; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.CustomMapProtocol; +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.MapStateProtocol; +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.HeatMapProtocol; +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.TileMapProtocol; +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.MarkerProtocol; +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.InfoWindowProtocol; +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.ProjectionMethodId; +import com.baidu.flutter_bmfmap.utils.Env; + +public class BMapHandlerFactory{ + + private static volatile BMapHandlerFactory sInstance; + private HashMap mMapHandlerHashMap; + + public static BMapHandlerFactory getInstance(FlutterCommonMapView mapView) { + + if (null == sInstance) { + synchronized (BMapHandlerFactory.class) { + if (null == sInstance) { + sInstance = new BMapHandlerFactory(mapView); + } else { + sInstance.updateMapView(mapView); + } + } + } else { + sInstance.updateMapView(mapView); + } + + return sInstance; + } + + private void updateMapView(FlutterCommonMapView mapView) { + if (null == mapView) { + return; + } + + if(null == mMapHandlerHashMap || mMapHandlerHashMap.isEmpty()){ + init(mapView); + } + + Iterator it = mMapHandlerHashMap.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = (Map.Entry) it.next(); + BMapHandler bMapHandler = entry.getValue(); + if (null != bMapHandler) { + bMapHandler.updateMapView(mapView); + } + } + } + + private BMapHandlerFactory(FlutterCommonMapView mapView) { + init(mapView); + } + + private void init(FlutterCommonMapView mapView) { + if (null == mapView) { + return; + } + + mMapHandlerHashMap = new HashMap<>(); + + mMapHandlerHashMap.put(Constants.BMapHandlerType.CUSTOM_MAP,new CustomMapHandler(mapView)); + mMapHandlerHashMap.put(Constants.BMapHandlerType.MAP_STATE,new MapStateHandler(mapView)); + mMapHandlerHashMap.put(Constants.BMapHandlerType.INDOOR_MAP, new IndoorMapHandler(mapView)); + mMapHandlerHashMap.put(Constants.BMapHandlerType.MAP_UPDATE, new MapUpdateHandler(mapView)); + mMapHandlerHashMap.put(Constants.BMapHandlerType.HEAT_MAP, new HeatMapHandler(mapView)); + mMapHandlerHashMap.put(Constants.BMapHandlerType.TILE_MAP, new TileMapHandler(mapView)); + mMapHandlerHashMap.put(Constants.BMapHandlerType.INFOWINDOW_HANDLER, new InfoWindowHandler(mapView)); + mMapHandlerHashMap.put(Constants.BMapHandlerType.MARKER_HANDLER, new MarkerHandler(mapView)); + mMapHandlerHashMap.put(Constants.BMapHandlerType.LOCATION_LAYER, new LocationLayerHandler(mapView)); + mMapHandlerHashMap.put(Constants.BMapHandlerType.PROJECTION, new ProjectionHandler(mapView)); + } + + public boolean dispatchMethodHandler(Context context, MethodCall call, MethodChannel.Result result, + MethodChannel methodChannel) { + if (null == call) { + return false; + } + + String methodId = call.method; + if(Env.DEBUG){ + Log.d("BMapHandlerFactory", "dispatchMethodHandler: " + methodId); + } + BMapHandler bMapHandler = null; + switch (methodId) { + case CustomMapProtocol.sMapSetCustomMapStyleEnableMethod: + case CustomMapProtocol.sMapSetCustomMapStylePathMethod: + case CustomMapProtocol.sMapSetCustomMapStyleWithOptionMethod: + bMapHandler = mMapHandlerHashMap.get(Constants.BMapHandlerType.CUSTOM_MAP); + break; + case Constants.MethodProtocol.IndoorMapProtocol.sShowBaseIndoorMapMethod: + case Constants.MethodProtocol.IndoorMapProtocol.sShowBaseIndoorMapPoiMethod: + case Constants.MethodProtocol.IndoorMapProtocol.sSwitchBaseIndoorMapFloorMethod: + case Constants.MethodProtocol.IndoorMapProtocol.sGetFocusedBaseIndoorMapInfoMethod: + bMapHandler = mMapHandlerHashMap.get(Constants.BMapHandlerType.INDOOR_MAP); + break; + case MapStateProtocol.sMapUpdateMethod: + case MapStateProtocol.sMapSetVisibleMapBoundsMethod: + case MapStateProtocol.sMapSetVisibleMapBoundsWithPaddingMethod: + case MapStateProtocol.sMapSetCompassImageMethod: + case MapStateProtocol.sMapSetCustomTrafficColorMethod: + case MapStateProtocol.sMapTakeSnapshotMethod: + case MapStateProtocol.sMapTakeSnapshotWithRectMethod: + case MapStateProtocol.sMapDidUpdateWidget: + case MapStateProtocol.sMapReassemble: + bMapHandler = mMapHandlerHashMap.get(Constants.BMapHandlerType.MAP_STATE); + break; + case MapStateProtocol.sMapZoomInMethod: + case MapStateProtocol.sMapZoomOutMethod: + case MapStateProtocol.sMapSetCenterCoordinateMethod: + case MapStateProtocol.sMapSetCenterZoomMethod: + case MapStateProtocol.sMapSetMapStatusMethod: + case MapStateProtocol.sMapSetScrollByMethod: + case MapStateProtocol.sMapSetZoomByMethod: + case MapStateProtocol.sMapSetZoomPointByMethod: + case MapStateProtocol.sMapSetZoomToMethod: + case MapStateProtocol.sMapGetMapStatusMethod: + bMapHandler = mMapHandlerHashMap.get(Constants.BMapHandlerType.MAP_UPDATE); + break; + case HeatMapProtocol.sMapAddHeatMapMethod: + case HeatMapProtocol.sMapRemoveHeatMapMethod: + case HeatMapProtocol.sShowHeatMapMethod: + bMapHandler = mMapHandlerHashMap.get(Constants.BMapHandlerType.HEAT_MAP); + break; + case TileMapProtocol.sAddTileMapMethod: + case TileMapProtocol.sRemoveTileMapMethod: + bMapHandler = mMapHandlerHashMap.get(Constants.BMapHandlerType.TILE_MAP); + break; + case MarkerProtocol.sMapAddMarkerMethod: + case MarkerProtocol.sMapAddMarkersMethod: + case MarkerProtocol.sMapRemoveMarkerMethod: + case MarkerProtocol.sMapRemoveMarkersMethod: + case MarkerProtocol.sMapDidSelectMarkerMethod: + case MarkerProtocol.sMapDidDeselectMarkerMethod: + case MarkerProtocol.sMapCleanAllMarkersMethod: + case MarkerProtocol.sMapUpdateMarkerMemberMethod: + bMapHandler = mMapHandlerHashMap.get(Constants.BMapHandlerType.MARKER_HANDLER); + break; + case InfoWindowProtocol.sAddInfoWindowMapMethod: + case InfoWindowProtocol.sRemoveInfoWindowMapMethod: + case InfoWindowProtocol.sAddInfoWindowsMapMethod: + bMapHandler = mMapHandlerHashMap.get(Constants.BMapHandlerType.INFOWINDOW_HANDLER); + break; + case Constants.LocationLayerMethodId.sMapShowUserLocationMethod: + case Constants.LocationLayerMethodId.sMapUpdateLocationDataMethod: + case Constants.LocationLayerMethodId.sMapUserTrackingModeMethod: + case Constants.LocationLayerMethodId.sMapUpdateLocationDisplayParamMethod: + bMapHandler = mMapHandlerHashMap.get(Constants.BMapHandlerType.LOCATION_LAYER); + break; + case ProjectionMethodId.sFromScreenLocation: + case ProjectionMethodId.sToScreenLocation: + bMapHandler = mMapHandlerHashMap.get(Constants.BMapHandlerType.PROJECTION); + break; + default: + if(methodId.startsWith("flutter_bmfmap/map/get")){ + bMapHandler = mMapHandlerHashMap.get(Constants.BMapHandlerType.MAP_UPDATE); + } + break; + } + + if (null == bMapHandler) { + return false; + } + + bMapHandler.handlerMethodCallResult(context,call, result); + + return true; + } + + public void clean(){ + if (null == mMapHandlerHashMap || mMapHandlerHashMap.size() == 0) { + return; + } + + BMapHandler bMapHandler = null; + Iterator iterator = mMapHandlerHashMap.values().iterator(); + while (iterator.hasNext()){ + bMapHandler = (BMapHandler) iterator.next(); + if(null == bMapHandler){ + continue; + } + + bMapHandler.clean(); + } + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/CustomMapHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/CustomMapHandler.java new file mode 100644 index 0000000..b0a41c6 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/CustomMapHandler.java @@ -0,0 +1,437 @@ +package com.baidu.flutter_bmfmap.map.mapHandler; + +import android.content.Context; +import android.text.TextUtils; +import android.util.Log; + +import com.baidu.flutter_bmfmap.map.FlutterCommonMapView; +import com.baidu.flutter_bmfmap.utils.Constants; +import com.baidu.mapapi.map.CustomMapStyleCallBack; +import com.baidu.mapapi.map.MapCustomStyleOptions; +import com.baidu.mapapi.map.MapView; +import com.baidu.mapapi.map.TextureMapView; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; + +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; +import io.flutter.view.FlutterMain; + +public class CustomMapHandler extends BMapHandler { + + private MapViewCustomMapHandler mMapViewCustomMapHandler; + private TextureMapViewCustomMapHandler mTextureMapViewCustomMapHandler; + + public CustomMapHandler(FlutterCommonMapView mapView) { + super(mapView); + mMapViewCustomMapHandler = new MapViewCustomMapHandler(mMapView); + mTextureMapViewCustomMapHandler = new TextureMapViewCustomMapHandler(mMapView); + } + + @Override + public void updateMapView(FlutterCommonMapView mapView){ + mMapView = mapView; + mMapViewCustomMapHandler.updateMapView(mapView); + mTextureMapViewCustomMapHandler.updateMapView(mapView); + } + + @Override + public void handlerMethodCallResult(Context context,MethodCall call, MethodChannel.Result result) { + switch (mMapView.getViewType()){ + case Constants.ViewType.sMapView: + mMapViewCustomMapHandler.handlerMethodCallResult(context, call, result); + break; + case Constants.ViewType.sTextureMapView: + mTextureMapViewCustomMapHandler.handlerMethodCallResult(context, call, result); + break; + default: + break; + } + } + + class MapViewCustomMapHandler extends BMapHandler { + + private MapView mRealMapView; + + public MapViewCustomMapHandler(FlutterCommonMapView mapView) { + super(mapView); + mRealMapView = mMapView.getMapView(); + } + + @Override + public void updateMapView(FlutterCommonMapView mapView){ + mMapView = mapView; + if(null != mMapView){ + mRealMapView = mMapView.getMapView(); + } + } + + @Override + public void handlerMethodCallResult(Context context, MethodCall call, MethodChannel.Result result) { + if (null == call) { + result.success(false); + return; + } + + String methodId = call.method; + if (TextUtils.isEmpty(methodId)) { + result.success(false); + return; + } + + switch (methodId) { + case Constants.MethodProtocol.CustomMapProtocol.sMapSetCustomMapStyleEnableMethod: + setCustomMapStyleEnable(call, result); + break; + case Constants.MethodProtocol.CustomMapProtocol.sMapSetCustomMapStylePathMethod: + setCustomMapStylePath(context,call,result); + break; + case Constants.MethodProtocol.CustomMapProtocol.sMapSetCustomMapStyleWithOptionMethod: + setMapCustomStyle(call,result); + break; + default: + break; + } + } + + /** + * 个性化地图开关 + */ + private void setCustomMapStyleEnable(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mMapView) { + result.success(false); + return; + } + if (!argument.containsKey("enable")) { + result.success(false); + return; + } + boolean enable = (boolean) argument.get("enable"); + mRealMapView.setMapCustomStyleEnable(enable); + result.success(true); + } + + /** + * 设置个性化地图样式文件的路径 + */ + private void setCustomMapStylePath(Context context, MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mMapView || context == null) { + result.success(false); + return; + } + + if (!argument.containsKey("path") || !argument.containsKey("mode")) { + result.success(false); + return; + } + + String path = (String) argument.get("path"); + if (path.isEmpty()) { + result.success(false); + return; + } + + String customStyleFilePath = getCustomStyleFilePath(context, path); + if(TextUtils.isEmpty(customStyleFilePath)){ + result.success(false); + return; + } + mRealMapView.setMapCustomStylePath(customStyleFilePath); + result.success(true); + } + + private String getCustomStyleFilePath(Context context, String customStyleFilePath) { + if (customStyleFilePath.isEmpty()) { + return null; + } + + FileOutputStream outputStream = null; + InputStream inputStream = null; + String parentPath = null; + String customStyleFileName = null; + try { + customStyleFileName = FlutterMain.getLookupKeyForAsset(customStyleFilePath); + inputStream = context.getAssets().open(customStyleFileName); + byte[] buffer = new byte[inputStream.available()]; + inputStream.read(buffer); + + parentPath = context.getCacheDir().getAbsolutePath(); + String substr = customStyleFileName.substring(0, customStyleFileName.lastIndexOf("/")); + File customStyleFile = new File(parentPath + "/" + customStyleFileName); + if (customStyleFile.exists()) { + customStyleFile.delete(); + } + File dirFile = new File(parentPath + "/" + substr); + if (!dirFile.exists()) { + dirFile.mkdirs(); + } + customStyleFile.createNewFile(); + outputStream = new FileOutputStream(customStyleFile); + outputStream.write(buffer); + } catch (IOException e) { + Log.e("TAG", "Copy file failed", e); + } finally { + try { + if (inputStream != null) { + inputStream.close(); + } + if (outputStream != null) { + outputStream.close(); + } + } catch (IOException e) { + Log.e("TAG", "Close stream failed", e); + } + } + return parentPath + "/" + customStyleFileName; + } + + /** + * 在线个性化样式加载状态回调接口 + */ + private void setMapCustomStyle(MethodCall call, final MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mMapView) { + result.success(false); + return; + } + if (!argument.containsKey("customMapStyleOption")) { + return; + } + Map customMapStyleOption = (Map) argument.get("customMapStyleOption"); + if (!customMapStyleOption.containsKey("customMapStyleID") + || !customMapStyleOption.containsKey("customMapStyleFilePath")) { + return; + } + + String customMapStyleID = (String) customMapStyleOption.get("customMapStyleID"); + String customMapStyleFilePath = (String) customMapStyleOption.get("customMapStyleFilePath"); + if (customMapStyleID.isEmpty() && customMapStyleFilePath.isEmpty()) { + return; + } + MapCustomStyleOptions mapCustomStyleOptions = new MapCustomStyleOptions(); + mapCustomStyleOptions.customStyleId(customMapStyleID); + mapCustomStyleOptions.localCustomStylePath(customMapStyleFilePath); + final HashMap reslutMap = new HashMap<>(); + mRealMapView.setMapCustomStyle(mapCustomStyleOptions, new CustomMapStyleCallBack() { + @Override + public boolean onPreLoadLastCustomMapStyle(String path) { + reslutMap.put("preloadPath", path); + result.success(reslutMap); + return false; + } + + @Override + public boolean onCustomMapStyleLoadSuccess(boolean b, String path) { + // TODO: 2020-03-05 回调的 boolean 类型没有返回之后补齐 + reslutMap.put("successPath", path); + result.success(reslutMap); + return false; + } + + @Override + public boolean onCustomMapStyleLoadFailed(int status, String message, String path) { + String sStatus = String.valueOf(status); + reslutMap.put("errorCode", sStatus); + reslutMap.put("successPath", path); + result.success(reslutMap); + return false; + } + }); + } + } + + class TextureMapViewCustomMapHandler extends BMapHandler { + + private TextureMapView mTextureMapView; + + public TextureMapViewCustomMapHandler(FlutterCommonMapView mapView) { + super(mapView); + mTextureMapView = mMapView.getTextureMapView(); + } + + @Override + public void updateMapView(FlutterCommonMapView mapView){ + mMapView = mapView; + if(null != mMapView){ + mTextureMapView = mMapView.getTextureMapView(); + } + } + + @Override + public void handlerMethodCallResult(Context context, MethodCall call, MethodChannel.Result result) { + if (null == call) { + return; + } + + String methodId = call.method; + if (TextUtils.isEmpty(methodId)) { + return; + } + + switch (methodId) { + case Constants.MethodProtocol.CustomMapProtocol.sMapSetCustomMapStyleEnableMethod: + setCustomMapStyleEnable(call, result); + break; + case Constants.MethodProtocol.CustomMapProtocol.sMapSetCustomMapStylePathMethod: + setCustomMapStylePath(context,call,result); + break; + case Constants.MethodProtocol.CustomMapProtocol.sMapSetCustomMapStyleWithOptionMethod: + setMapCustomStyle(context, call,result); + break; + default: + break; + } + } + + /** + * 个性化地图开关 + */ + private void setCustomMapStyleEnable(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mMapView) { + result.success(false); + return; + } + if (!argument.containsKey("enable")) { + result.success(false); + return; + } + boolean enable = (boolean) argument.get("enable"); + mTextureMapView.setMapCustomStyleEnable(enable); + result.success(true); + } + + /** + * 设置个性化地图样式文件的路径 + */ + private void setCustomMapStylePath(Context context, MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mMapView || context == null) { + result.success(false); + return; + } + + if (!argument.containsKey("path") || !argument.containsKey("mode")) { + result.success(false); + return; + } + + String path = (String) argument.get("path"); + if (path.isEmpty()) { + result.success(false); + return; + } + String customStyleFilePath = getCustomStyleFilePath(context, path); + mTextureMapView.setMapCustomStylePath(customStyleFilePath); + result.success(true); + } + + private String getCustomStyleFilePath(Context context, String customStyleFilePath) { + if (customStyleFilePath.isEmpty()) { + return null; + } + + FileOutputStream outputStream = null; + InputStream inputStream = null; + String parentPath = null; + String customStyleFileName = null; + try { + customStyleFileName = FlutterMain.getLookupKeyForAsset(customStyleFilePath); + inputStream = context.getAssets().open(customStyleFileName); + byte[] buffer = new byte[inputStream.available()]; + inputStream.read(buffer); + + parentPath = context.getCacheDir().getAbsolutePath(); + String substr = customStyleFileName.substring(0, customStyleFileName.lastIndexOf("/")); + File customStyleFile = new File(parentPath + "/" + customStyleFileName); + if (customStyleFile.exists()) { + customStyleFile.delete(); + } + File dirFile = new File(parentPath + "/" + substr); + if (!dirFile.exists()) { + dirFile.mkdirs(); + } + customStyleFile.createNewFile(); + outputStream = new FileOutputStream(customStyleFile); + outputStream.write(buffer); + } catch (IOException e) { + Log.e("TAG", "Copy file failed", e); + } finally { + try { + if (inputStream != null) { + inputStream.close(); + } + if (outputStream != null) { + outputStream.close(); + } + } catch (IOException e) { + Log.e("TAG", "Close stream failed", e); + } + } + return parentPath + "/" + customStyleFileName; + } + + /** + * 在线个性化样式加载状态回调接口 + */ + private void setMapCustomStyle(Context context, MethodCall call, + final MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mMapView) { + result.success(false); + return; + } + if (!argument.containsKey("customMapStyleOption")) { + return; + } + Map customMapStyleOption = (Map) argument.get("customMapStyleOption"); + if (!customMapStyleOption.containsKey("customMapStyleID") + || !customMapStyleOption.containsKey("customMapStyleFilePath")) { + return; + } + + String customMapStyleID = (String) customMapStyleOption.get("customMapStyleID"); + String customMapStyleFilePath = (String) customMapStyleOption.get("customMapStyleFilePath"); + customMapStyleFilePath = getCustomStyleFilePath(context, customMapStyleFilePath); + if (customMapStyleID.isEmpty() && customMapStyleFilePath.isEmpty()) { + return; + } + MapCustomStyleOptions mapCustomStyleOptions = new MapCustomStyleOptions(); + mapCustomStyleOptions.customStyleId(customMapStyleID); + mapCustomStyleOptions.localCustomStylePath(customMapStyleFilePath); + final HashMap reslutMap = new HashMap<>(); + mTextureMapView.setMapCustomStyle(mapCustomStyleOptions, new CustomMapStyleCallBack() { + @Override + public boolean onPreLoadLastCustomMapStyle(String path) { + reslutMap.put("preloadPath", path); + result.success(reslutMap); + return false; + } + + @Override + public boolean onCustomMapStyleLoadSuccess(boolean b, String path) { + // TODO: 2020-03-05 回调的 boolean 类型没有返回之后补齐 + reslutMap.put("successPath", path); + result.success(reslutMap); + return false; + } + + @Override + public boolean onCustomMapStyleLoadFailed(int status, String message, String path) { + String sStatus = String.valueOf(status); + reslutMap.put("errorCode", sStatus); + reslutMap.put("successPath", path); + result.success(reslutMap); + return false; + } + }); + } + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/HeatMapHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/HeatMapHandler.java new file mode 100644 index 0000000..574783d --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/HeatMapHandler.java @@ -0,0 +1,270 @@ +package com.baidu.flutter_bmfmap.map.mapHandler; + +import android.content.Context; +import android.text.TextUtils; +import android.util.Log; + +import com.baidu.flutter_bmfmap.map.FlutterCommonMapView; +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.flutter_bmfmap.utils.converter.FlutterDataConveter; +import com.baidu.flutter_bmfmap.utils.converter.TypeConverter; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.Gradient; +import com.baidu.mapapi.map.HeatMap; +import com.baidu.mapapi.map.WeightedLatLng; + +import java.util.List; +import java.util.Map; +import java.util.Iterator; + +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.HeatMapProtocol; + +class HeatMapHandler extends BMapHandler { + private static final String TAG = "HeapMapHandler"; + + HeatMap mHeatMap = null; + + public HeatMapHandler(FlutterCommonMapView mapView) { + super(mapView); + } + + @Override + public void handlerMethodCallResult(Context context,MethodCall call, MethodChannel.Result result) { + if (null == call) { + result.success(false); + return; + } + + String methodId = call.method; + if (TextUtils.isEmpty(methodId)) { + result.success(false); + return; + } + + boolean ret = false; + switch (methodId) { + case HeatMapProtocol.sMapAddHeatMapMethod: + ret = addHeapMap(context, call); + break; + case HeatMapProtocol.sMapRemoveHeatMapMethod: + ret = switchHeatMap(context, call); + break; + case HeatMapProtocol.sShowHeatMapMethod: + ret = isShowBaiduHeatMap(call); + break; + default: + break; + } + + result.success(ret); + } + + /** + * 是否显示百度热力图 + */ + public boolean isShowBaiduHeatMap(MethodCall call) { + Map argument = call.arguments(); + if (argument == null || !argument.containsKey("show")) { + return false; + } + Boolean show = (Boolean) argument.get("show"); + if (null == show) { + return false; + } + if (null == mMapView) { + return false; + } + BaiduMap baiduMap = mMapView.getBaiduMap(); + baiduMap.setBaiduHeatMapEnabled(show); + + return true; + } + + public boolean addHeapMap(Context context,MethodCall call){ + if(Env.DEBUG){ + Log.d(TAG, "addHeapMap enter"); + } + Map argument = call.arguments(); + if(null == argument){ + if(Env.DEBUG){ + Log.d(TAG, "argument is null"); + } + return false; + } + + Object heatMapObj = argument.get("heatMap"); + if(null == heatMapObj){ + if(Env.DEBUG){ + Log.d(TAG, "null == heatMapObj"); + } + return false; + } + + Map heatMapMap = (Map)heatMapObj; + if(null == heatMapMap){ + if(Env.DEBUG){ + Log.d(TAG, "null == heatMapMap"); + } + return false; + } + + if(!heatMapMap.containsKey("data") + || !heatMapMap.containsKey("radius") + || !heatMapMap.containsKey("opacity") + || !heatMapMap.containsKey("gradient")) { + if (Env.DEBUG) { + Log.d(TAG, "argument does not contain"+ argument.toString()); + + } + return false; + } + + + HeatMap.Builder builder = new HeatMap.Builder(); + + List weightedLatLngList = getData(heatMapMap); + if(null == weightedLatLngList){ + if(Env.DEBUG){ + Log.d(TAG, "null == weightedLatLngList"); + } + return false; + } + builder.weightedData(weightedLatLngList); + + Object gradientObj = heatMapMap.get("gradient"); + if(null == gradientObj){ + if(Env.DEBUG){ + Log.d(TAG, "null == gradientObj"); + } + return false; + } + Map gradientMap = (Map)gradientObj; + if(null == gradientMap){ + if(Env.DEBUG){ + Log.d(TAG, "null == gradientMap"); + } + return false; + } + + Gradient gradient = getGradient(gradientMap); + builder.gradient(gradient); + + Double opacity = new TypeConverter().getValue(heatMapMap, "opacity"); + if(null == opacity){ + if(Env.DEBUG){ + Log.d(TAG, "null == opacity"); + } + return false; + } + + builder.opacity(opacity); + + Integer radius = new TypeConverter().getValue(heatMapMap, "radius"); + if(null == radius) { + if(Env.DEBUG){ + Log.d(TAG, "null == radius"); + } + return false; + } + builder.radius(radius); + + mHeatMap = builder.build(); + + if(null == mHeatMap){ + if(Env.DEBUG){ + Log.d(TAG, "null == mHeatMap"); + } + return false; + } + + BaiduMap baiduMap = mMapView.getBaiduMap(); + if(null == baiduMap){ + return false; + } + + baiduMap.addHeatMap(mHeatMap); + return true; + } + + private List getData(Map heatMapMap){ + List weightedLatLngList = null; + Object dataObj = heatMapMap.get("data"); + if(null == dataObj){ + return null; + } + + List > dataList = (List >)dataObj; + if(null == dataList){ + return null; + } + + weightedLatLngList = FlutterDataConveter.mapToWeightedLatLngList(dataList); + + return weightedLatLngList; + } + + private Gradient getGradient(Map heatMapMap){ + if(!heatMapMap.containsKey("colors") || !heatMapMap.containsKey("startPoints")){ + return null; + } + + Object colorsObj = heatMapMap.get("colors"); + Object startPointsObj = heatMapMap.get("startPoints"); + if(null == colorsObj || null == startPointsObj){ + return null; + } + + List colorsList = (List)colorsObj; + List startPointsList = (List)startPointsObj; + if(null == colorsList || null == startPointsList){ + return null; + } + + int[] intColors = new int[colorsList.size()]; + Iterator itr = colorsList.iterator(); + int i = 0; + while (itr.hasNext()){ + String colorStr = itr.next(); + int color = FlutterDataConveter.strColorToInteger(colorStr); + intColors[i++] = color; + } + + float[] startPoints = new float[startPointsList.size()]; + Iterator startPointsItr = startPointsList.iterator(); + i = 0; + while (startPointsItr.hasNext()){ + startPoints[i++] = startPointsItr.next().floatValue(); + } + + Gradient gradient = new Gradient(intColors, startPoints); + return gradient; + } + + public boolean switchHeatMap(Context context,MethodCall call){ + if(Env.DEBUG){ + Log.d(TAG, "switchHeatMap enter"); + } + + if(null == mHeatMap){ + return false; + } + + BaiduMap baiduMap = mMapView.getBaiduMap(); + if(null == baiduMap){ + if (Env.DEBUG) { + Log.d(TAG, "baiduMap is null"); + + } + return false; + } + + mHeatMap.removeHeatMap(); + mHeatMap = null; + + return true; + } + +} \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/IndoorMapHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/IndoorMapHandler.java new file mode 100644 index 0000000..b68b282 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/IndoorMapHandler.java @@ -0,0 +1,195 @@ +package com.baidu.flutter_bmfmap.map.mapHandler; + +import android.content.Context; +import android.text.TextUtils; +import android.util.Log; + +import com.baidu.flutter_bmfmap.map.FlutterCommonMapView; +import com.baidu.flutter_bmfmap.utils.Constants; +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.MapBaseIndoorMapInfo; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + + +public class IndoorMapHandler extends BMapHandler { + + private static final String TAG = "IndoorMapHandler"; + + private BaiduMap mBaiduMap; + + public IndoorMapHandler(FlutterCommonMapView mapView) { + super(mapView); + if(null != mapView){ + mBaiduMap = mapView.getBaiduMap(); + } + } + + @Override + public void updateMapView(FlutterCommonMapView mapView) { + super.updateMapView(mapView); + if(null != mapView){ + mBaiduMap = mapView.getBaiduMap(); + } + } + + @Override + public void handlerMethodCallResult(Context context, MethodCall call, MethodChannel.Result result) { + if(Env.DEBUG){ + Log.d(TAG, "handlerMethodCallResult enter"); + } + if (null == call) { + result.success(false); + return; + } + + String methodId = call.method; + if (TextUtils.isEmpty(methodId)) { + result.success(false); + return; + } + switch (methodId) { + case Constants.MethodProtocol.IndoorMapProtocol.sShowBaseIndoorMapMethod: + setIndoorMap(call, result); + break; + case Constants.MethodProtocol.IndoorMapProtocol.sShowBaseIndoorMapPoiMethod: + setIndoorMapPoi(call, result); + break; + case Constants.MethodProtocol.IndoorMapProtocol.sSwitchBaseIndoorMapFloorMethod: + switchIndoorMapFloor(call, result); + break; + case Constants.MethodProtocol.IndoorMapProtocol.sGetFocusedBaseIndoorMapInfoMethod: + getFocusedBaseIndoorMapInfo(call, result); + break; + default: + break; + } + } + + + /** + * 室内图开关 + */ + private void setIndoorMap(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + result.success(false); + return; + } + if (!argument.containsKey("show")) { + result.success(false); + } + boolean showIndoorMap = (boolean) argument.get("show"); + mBaiduMap.setIndoorEnable(showIndoorMap); + BMFMapStatus.getsInstance().setBaseIndoorEnable(showIndoorMap); + result.success(true); + } + + /** + * 室内图poi开关 + */ + private void setIndoorMapPoi(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mMapView) { + result.success(false); + return; + } + + if(null == mBaiduMap){ + return; + } + + if (!argument.containsKey("showIndoorPoi")) { + result.success(false); + } + boolean showIndoorPoi = (boolean) argument.get("showIndoorPoi"); + mBaiduMap.showMapIndoorPoi(showIndoorPoi); + BMFMapStatus.getsInstance().setIndoorMapPoiEnable(showIndoorPoi); + result.success(true); + } + + /** + * 室内图楼层切换 + */ + private void switchIndoorMapFloor(MethodCall call, MethodChannel.Result result) { + HashMap errorMap = new HashMap<>(); + int switchIndoorFloorSuccess = Constants.SwitchIndoorFloorError.FAILED; + + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + errorMap.put("result", switchIndoorFloorSuccess); + result.success(errorMap); + return; + } + + if (!argument.containsKey("floorId") || !argument.containsKey("indoorId")) { + errorMap.put("result", switchIndoorFloorSuccess); + result.success(errorMap); + return; + } + String floorId = (String) argument.get("floorId"); + String indoorId = (String) argument.get("indoorId"); + if (floorId.isEmpty() || indoorId.isEmpty()) { + return; + } + + MapBaseIndoorMapInfo.SwitchFloorError switchFloorError = mBaiduMap.switchBaseIndoorMapFloor(floorId, indoorId); + switch (switchFloorError) { + case SWITCH_OK: + switchIndoorFloorSuccess = Constants.SwitchIndoorFloorError.SUCCESS; + break; + case SWITCH_ERROR: + switchIndoorFloorSuccess = Constants.SwitchIndoorFloorError.FAILED; + break; + case FOCUSED_ID_ERROR: + switchIndoorFloorSuccess = Constants.SwitchIndoorFloorError.NOT_FOCUSED; + break; + case FLOOR_OVERLFLOW: + switchIndoorFloorSuccess = Constants.SwitchIndoorFloorError.NOT_EXIST; + break; + case FLOOR_INFO_ERROR: + switchIndoorFloorSuccess = Constants.SwitchIndoorFloorError.SWICH_FLOOR_INFO_ERROR; + break; + default: + break; + } + + errorMap.put("result", switchIndoorFloorSuccess); + result.success(errorMap); + } + + /** + * 获取当前聚焦的室内图信息 + */ + private void getFocusedBaseIndoorMapInfo(MethodCall call, MethodChannel.Result result) { + if (null == mBaiduMap) { + return; + } + MapBaseIndoorMapInfo focusedBaseIndoorMapInfo = mBaiduMap.getFocusedBaseIndoorMapInfo(); + BMFBaseIndoorMapInfo bmfBaseIndoorMapInfo = new BMFBaseIndoorMapInfo(); + if (null != focusedBaseIndoorMapInfo) { + bmfBaseIndoorMapInfo.strFloor = focusedBaseIndoorMapInfo.getCurFloor(); + bmfBaseIndoorMapInfo.strID = focusedBaseIndoorMapInfo.getID(); + bmfBaseIndoorMapInfo.listStrFloors = focusedBaseIndoorMapInfo.getFloors(); + } + + HashMap stringObjectHashMap = new HashMap<>(); + stringObjectHashMap.put("listStrFloors", bmfBaseIndoorMapInfo.listStrFloors); + stringObjectHashMap.put("strFloor", bmfBaseIndoorMapInfo.strFloor); + stringObjectHashMap.put("strID", bmfBaseIndoorMapInfo.strID); + result.success(stringObjectHashMap); + } + + + class BMFBaseIndoorMapInfo { + private String strID = ""; + private String strFloor = ""; + private ArrayList listStrFloors; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/InfoWindowHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/InfoWindowHandler.java new file mode 100644 index 0000000..0d88d15 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/InfoWindowHandler.java @@ -0,0 +1,306 @@ +package com.baidu.flutter_bmfmap.map.mapHandler; + + +import android.content.Context; +import android.text.TextUtils; +import android.util.Log; + +import com.baidu.flutter_bmfmap.map.mapHandler.BMapHandler; +import com.baidu.flutter_bmfmap.map.FlutterCommonMapView; +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.flutter_bmfmap.utils.converter.FlutterDataConveter; +import com.baidu.flutter_bmfmap.utils.converter.TypeConverter; +import com.baidu.mapapi.map.BaiduMap; + +import java.util.AbstractMap; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.InfoWindowProtocol; +import com.baidu.mapapi.map.BitmapDescriptor; +import com.baidu.mapapi.map.BitmapDescriptorFactory; +import com.baidu.mapapi.map.InfoWindow; +import com.baidu.mapapi.model.LatLng; + +public class InfoWindowHandler extends BMapHandler{ + + private static final String TAG = "InfoWindowHandler"; + + private HashMap mInfoWindows; + private HashMap mBitmapMap = new HashMap<>(); + private MethodChannel mMethodChannel; + private BaiduMap mBaiduMap; + + public InfoWindowHandler(FlutterCommonMapView mapView){ + super(mapView); + if(null != mMapView){ + mBaiduMap = mMapView.getBaiduMap(); + } + mInfoWindows = new HashMap<>(); + } + + @Override + public void updateMapView(FlutterCommonMapView mapView){ + mMapView = mapView; + if(null != mMapView){ + mBaiduMap = mMapView.getBaiduMap(); + } + } + + @Override + public void handlerMethodCallResult(Context context, MethodCall call, MethodChannel.Result result) { + if(Env.DEBUG){ + Log.d(TAG, "handlerMethodCallResult enter"); + } + if(null == mBaiduMap){ + if(Env.DEBUG){ + Log.d(TAG, "mBaidumap is null"); + } + return; + } + + String methodId = call.method; + + switch (methodId){ + case InfoWindowProtocol.sAddInfoWindowMapMethod: + addInfoWindow(call, result); + break; + case InfoWindowProtocol.sAddInfoWindowsMapMethod: + addInfoWindows(call,result); + break; + case InfoWindowProtocol.sRemoveInfoWindowMapMethod: + removeInfoWindow(call, result); + break; + default: + break; + } + } + + + /** + * 添加单个infoWindow + * @param call + * @param result + */ + private void addInfoWindow(MethodCall call, MethodChannel.Result result){ + if(Env.DEBUG){ + Log.d(TAG, "addInfoWindow enter"); + } + Map argument = call.arguments(); + if(null == argument){ + if(Env.DEBUG){ + Log.d(TAG, "argument is null"); + } + return; + } + + + addOneInfoWindowImp(argument); + } + + /** + * 具体添加一个infowindow + * @param infoWindowMap + */ + private void addOneInfoWindowImp(Map infoWindowMap){ + + AbstractMap.SimpleEntry infoWindowEntry = MaptoInfoWindowEntry(infoWindowMap); + + if(null == infoWindowEntry){ + return; + } + + mInfoWindows.put(infoWindowEntry.getKey(), infoWindowEntry.getValue()); + mBaiduMap.showInfoWindow(infoWindowEntry.getValue()); + } + + private AbstractMap.SimpleEntry MaptoInfoWindowEntry(Map infoWindowMap){ + if(null == infoWindowMap){ + return null; + } + if(!infoWindowMap.containsKey("id")){ + if(Env.DEBUG){ + Log.d(TAG, "argument does not contain"); + } + return null; + } + + final String id = new TypeConverter().getValue(infoWindowMap, "id"); + if(TextUtils.isEmpty(id)){ + if(Env.DEBUG){ + Log.d(TAG, "TextUtils.isEmpty(id)"); + } + return null; + } + + if(mInfoWindows.containsKey(id)){ + if(Env.DEBUG){ + Log.d(TAG, "infowindow already added"); + } + return null; + } + + String image = new TypeConverter().getValue(infoWindowMap, "image"); + if(TextUtils.isEmpty(image)){ + if(Env.DEBUG){ + Log.d(TAG, "TextUtils.isEmpty(image)"); + } + return null; + } + Map latLngMap = new TypeConverter>().getValue(infoWindowMap, "coordinate"); + LatLng latLng = FlutterDataConveter.mapToLatlng(latLngMap); + if(null == latLng){ + if(Env.DEBUG){ + Log.d(TAG, "null == latLng"); + } + return null; + } + + + Double yOffSet = new TypeConverter().getValue(infoWindowMap, "yOffset"); + if(null == yOffSet){ + if(Env.DEBUG){ + Log.d(TAG, "null == yOffSet"); + } + return null; + } + + Boolean isAddWithBitmapDescriptor = new TypeConverter().getValue(infoWindowMap, "isAddWithBitmapDescriptor"); + if(null == isAddWithBitmapDescriptor){ + if(Env.DEBUG){ + Log.d(TAG, "null == isAddWithBitmapDescriptor"); + } + return null; + } + + BitmapDescriptor bitmap = BitmapDescriptorFactory.fromAsset("flutter_assets/" + image); + if(null == bitmap){ + if(Env.DEBUG){ + Log.d(TAG, "null == bitmap"); + } + return null; + } + + mBitmapMap.put(id, bitmap); + + InfoWindow infoWindow = new InfoWindow(bitmap, latLng, yOffSet.intValue(), new InfoWindow.OnInfoWindowClickListener(){ + + @Override + public void onInfoWindowClick() { + if(null == mMethodChannel){ + return; + } + Map infoWindowMap = new HashMap<>(); + + infoWindowMap.put("id", id); + + mMethodChannel.invokeMethod(InfoWindowProtocol.sMapDidClickedInfoWindowMethod, infoWindowMap); + } + } ); + + return new AbstractMap.SimpleEntry(id, infoWindow); + } + + /** + * 批量添加infowindow + * @param call + * @param result + */ + private void addInfoWindows(MethodCall call, MethodChannel.Result result) { + if(Env.DEBUG){ + Log.d(TAG, "addInfoWindows enter"); + } + List arguments = (List)call.arguments; + if(null == arguments){ + if(Env.DEBUG){ + Log.d(TAG, "arguments is null"); + } + return; + } + + List infoWindowList = new ArrayList<>(); + Iterator itr = arguments.iterator(); + while (itr.hasNext()){ + Map infoWindowMap = (Map )itr.next(); + if(null == infoWindowMap){ + continue; + } + + AbstractMap.SimpleEntry infoWindowEntry = MaptoInfoWindowEntry(infoWindowMap); + if(null == infoWindowEntry){ + continue; + } + + infoWindowList.add(infoWindowEntry.getValue()); + mInfoWindows.put(infoWindowEntry.getKey(), infoWindowEntry.getValue()); + } + + if(infoWindowList.size() > 0){ + mBaiduMap.showInfoWindows(infoWindowList); + } + } + + private void removeInfoWindow(MethodCall call, MethodChannel.Result result){ + if(null == mBaiduMap){ + return; + } + Map argument = call.arguments(); + if(null == argument){ + if(Env.DEBUG){ + Log.d(TAG, "argument is null"); + } + return; + } + + + String id = new TypeConverter().getValue(argument, "id"); + if(TextUtils.isEmpty(id)){ + if(Env.DEBUG){ + Log.d(TAG, "TextUtils.isEmpty(id)"); + } + return; + } + + InfoWindow infoWindow = mInfoWindows.get(id); + if(null == infoWindow){ + if(Env.DEBUG){ + Log.d(TAG, "null == infoWindow"); + } + return; + } + + if(Env.DEBUG){ + Log.d(TAG, "removeInfoWindow success"); + } + mBaiduMap.hideInfoWindow(infoWindow); + + mInfoWindows.remove(id); + + BitmapDescriptor bitmapDescriptor = mBitmapMap.get(id); + if(null != bitmapDescriptor){ + bitmapDescriptor.recycle(); + } + } + + @Override + public void clean(){ + super.clean(); + Iterator iterator = mBitmapMap.values().iterator(); + BitmapDescriptor bitmapDescriptor; + while (iterator.hasNext()){ + bitmapDescriptor = (BitmapDescriptor)iterator.next(); + if(null != bitmapDescriptor){ + bitmapDescriptor.recycle(); + } + } + + if(null != mInfoWindows) { + mInfoWindows.clear(); + } + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/LocationLayerHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/LocationLayerHandler.java new file mode 100644 index 0000000..ed5dc20 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/LocationLayerHandler.java @@ -0,0 +1,330 @@ +package com.baidu.flutter_bmfmap.map.mapHandler; + +import android.content.Context; +import android.graphics.Color; +import android.text.TextUtils; + +import com.baidu.flutter_bmfmap.map.FlutterCommonMapView; +import com.baidu.flutter_bmfmap.utils.Constants; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.BitmapDescriptor; +import com.baidu.mapapi.map.BitmapDescriptorFactory; +import com.baidu.mapapi.map.MyLocationConfiguration; +import com.baidu.mapapi.map.MyLocationData; +import com.baidu.flutter_bmfmap.utils.Env; + +import java.util.Map; + +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + + +public class LocationLayerHandler extends BMapHandler { + private BaiduMap mBaiduMap; + + public LocationLayerHandler(FlutterCommonMapView mapView) { + super(mapView); + if (null != mapView) { + mBaiduMap = mapView.getBaiduMap(); + } + } + + @Override + public void updateMapView(FlutterCommonMapView mapView) { + super.updateMapView(mapView); + if (null != mapView) { + mBaiduMap = mapView.getBaiduMap(); + } + } + + @Override + public void handlerMethodCallResult(Context context, MethodCall call, MethodChannel.Result result) { + if (null == call) { + result.success(false); + return; + } + String methodId = call.method; + if (TextUtils.isEmpty(methodId)) { + result.success(false); + return; + } + switch (methodId) { + case Constants.LocationLayerMethodId.sMapShowUserLocationMethod: + setLocationEnabled(call, result); + break; + + case Constants.LocationLayerMethodId.sMapUpdateLocationDataMethod: + setUpdateLocationData(call, result); + break; + + case Constants.LocationLayerMethodId.sMapUserTrackingModeMethod: + setLoctype(call, result); + + break; + case Constants.LocationLayerMethodId.sMapUpdateLocationDisplayParamMethod: + setCustomLocation(call, result); + break; + default: + break; + } + } + + /** + * 自定义定位图层 + */ + private void setCustomLocation(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + result.success(false); + return; + } + if (!argument.containsKey("userlocationDisplayParam")) { + result.success(false); + return; + } + + Map locationDisplayParam = (Map) argument.get("userlocationDisplayParam"); + + if (null == locationDisplayParam) { + result.success(false); + return; + } + + if (!locationDisplayParam.containsKey("userTrackingMode") + || !locationDisplayParam.containsKey("enableDirection") + || !locationDisplayParam.containsKey("accuracyCircleStrokeColor") + || !locationDisplayParam.containsKey("accuracyCircleFillColor") + || !locationDisplayParam.containsKey("locationViewImage") + || !locationDisplayParam.containsKey("locationViewHierarchy")) { + result.success(false); + return; + } + + Integer userTrackingMode = (Integer) locationDisplayParam.get("userTrackingMode"); + Boolean enableDirection = (Boolean) locationDisplayParam.get("enableDirection"); + String locationViewImage = (String) locationDisplayParam.get("locationViewImage"); + String accuracyCircleStrokeColor = (String) locationDisplayParam.get("accuracyCircleStrokeColor"); + String accuracyCircleFillColor = (String) locationDisplayParam.get("accuracyCircleFillColor"); + + + BitmapDescriptor bitmap = null; + if (!TextUtils.isEmpty(locationViewImage)) { + bitmap = BitmapDescriptorFactory.fromAsset("flutter_assets/" + locationViewImage); + } + + int strokeColor = 0; + String color = "#"; + if (!TextUtils.isEmpty(accuracyCircleStrokeColor)) { + strokeColor = Color.parseColor(color.concat(accuracyCircleStrokeColor)); + } + + int fillColor = 0; + if (!TextUtils.isEmpty(accuracyCircleFillColor)) { + fillColor = Color.parseColor(color.concat(accuracyCircleFillColor)); + } + + if (null != userTrackingMode && null != enableDirection && null != bitmap + && strokeColor != 0 && fillColor != 0) { + switch (userTrackingMode) { + case Env.LocationMode.NORMAL: + case Env.LocationMode.MODEHEADING: + mBaiduMap.setMyLocationConfiguration(new MyLocationConfiguration( + MyLocationConfiguration.LocationMode.NORMAL, enableDirection, + bitmap,fillColor,strokeColor)); + break; + case Env.LocationMode.FOLLOWING: + mBaiduMap.setMyLocationConfiguration(new MyLocationConfiguration( + MyLocationConfiguration.LocationMode.FOLLOWING, enableDirection, + bitmap,fillColor,strokeColor)); + break; + case Env.LocationMode.COMPASS: + mBaiduMap.setMyLocationConfiguration(new MyLocationConfiguration( + MyLocationConfiguration.LocationMode.COMPASS, enableDirection, + bitmap,fillColor,strokeColor)); + break; + default: + break; + } + + } else if (null != userTrackingMode && null != enableDirection && strokeColor != 0 && fillColor != 0) { + switch (userTrackingMode) { + case Env.LocationMode.NORMAL: + case Env.LocationMode.MODEHEADING: + mBaiduMap.setMyLocationConfiguration(new MyLocationConfiguration( + MyLocationConfiguration.LocationMode.NORMAL, enableDirection, + null,fillColor,strokeColor)); + break; + case Env.LocationMode.FOLLOWING: + mBaiduMap.setMyLocationConfiguration(new MyLocationConfiguration( + MyLocationConfiguration.LocationMode.FOLLOWING, enableDirection, + null,fillColor,strokeColor)); + break; + case Env.LocationMode.COMPASS: + mBaiduMap.setMyLocationConfiguration(new MyLocationConfiguration( + MyLocationConfiguration.LocationMode.COMPASS, enableDirection, + null,fillColor,strokeColor)); + break; + default: + break; + } + } + } + + /** + * 设置定位模式 + */ + private void setLoctype(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + result.success(false); + return; + } + + if (!argument.containsKey("userTrackingMode") + || !argument.containsKey("enableDirection") + || !argument.containsKey("customMarker")) { + result.success(false); + return; + } + Integer userTrackingMode = (Integer) argument.get("userTrackingMode"); + Boolean enableDirection = (Boolean) argument.get("enableDirection"); + String customMarker = (String) argument.get("customMarker"); + + BitmapDescriptor bitmap = BitmapDescriptorFactory.fromAsset("flutter_assets/" + customMarker); + if (null != userTrackingMode && null != enableDirection && null != bitmap) { + switch (userTrackingMode) { + case Env.LocationMode.NORMAL: + case Env.LocationMode.MODEHEADING: + mBaiduMap.setMyLocationConfiguration(new MyLocationConfiguration( + MyLocationConfiguration.LocationMode.NORMAL, enableDirection, bitmap)); + break; + case Env.LocationMode.FOLLOWING: + mBaiduMap.setMyLocationConfiguration(new MyLocationConfiguration( + MyLocationConfiguration.LocationMode.FOLLOWING, enableDirection, bitmap)); + break; + case Env.LocationMode.COMPASS: + mBaiduMap.setMyLocationConfiguration(new MyLocationConfiguration( + MyLocationConfiguration.LocationMode.COMPASS, enableDirection, bitmap)); + break; + default: + break; + } + result.success(true); + } else if (null != userTrackingMode && null != enableDirection) { + switch (userTrackingMode) { + case Env.LocationMode.NORMAL: + case Env.LocationMode.MODEHEADING: + mBaiduMap.setMyLocationConfiguration(new MyLocationConfiguration( + MyLocationConfiguration.LocationMode.NORMAL, enableDirection, null)); + break; + case Env.LocationMode.FOLLOWING: + mBaiduMap.setMyLocationConfiguration(new MyLocationConfiguration( + MyLocationConfiguration.LocationMode.FOLLOWING, enableDirection, null)); + break; + case Env.LocationMode.COMPASS: + mBaiduMap.setMyLocationConfiguration(new MyLocationConfiguration( + MyLocationConfiguration.LocationMode.COMPASS, enableDirection, null)); + break; + default: + break; + } + result.success(true); + } + result.success(false); + } + + /** + * 定位数据 + */ + private void setUpdateLocationData(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + MyLocationData.Builder builder = new MyLocationData.Builder(); + if (null == argument || null == mBaiduMap) { + result.success(false); + return; + } + if (!argument.containsKey("userLocation")) { + result.success(false); + return; + } + + Map userLocation = (Map) argument.get("userLocation"); + if (null == userLocation) { + result.success(false); + return; + } + if (!userLocation.containsKey("location")) { + result.success(false); + return; + } + + Map location = (Map) userLocation.get("location"); + if (null == location) { + result.success(false); + return; + } + if (!location.containsKey("coordinate") || !location.containsKey("course") + || !location.containsKey("speed") || !location.containsKey("accuracy") + || !location.containsKey("satellitesNum")) { + result.success(false); + return; + } + Map coordinate = (Map) location.get("coordinate"); + if (null != coordinate) { + if (coordinate.containsKey("latitude") && coordinate.containsKey("longitude")) { + Double latitude = coordinate.get("latitude"); + Double longitude = coordinate.get("longitude"); + if (null != latitude && null != longitude) { + builder.latitude(latitude); + builder.longitude(longitude); + } + } + } + Double course = (Double) location.get("course"); + if (null != course) { + builder.accuracy(course.floatValue()); + } + + Double speed = (Double) location.get("speed"); + if (null != speed) { + builder.speed(speed.floatValue()); + } + + Double accuracy = (Double) location.get("accuracy"); + if (null != accuracy) { + builder.speed(accuracy.floatValue()); + } + + Integer satellitesNum = (Integer) location.get("satellitesNum"); + if (null != satellitesNum) { + builder.satellitesNum(satellitesNum); + } + + mBaiduMap.setMyLocationData(builder.build()); + result.success(true); + } + + /** + * 开启定位图层 + */ + private void setLocationEnabled(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + result.success(false); + return; + } + + if (!argument.containsKey("show")) { + result.success(false); + return; + } + + Boolean show = (Boolean) argument.get("show"); + if (null == show) { + result.success(false); + return; + } + mBaiduMap.setMyLocationEnabled(show); + result.success(true); + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/MapStateHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/MapStateHandler.java new file mode 100644 index 0000000..f3e6049 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/MapStateHandler.java @@ -0,0 +1,409 @@ +package com.baidu.flutter_bmfmap.map.mapHandler; + +import java.io.ByteArrayOutputStream; +import java.util.HashMap; +import java.util.Map; + +import com.baidu.flutter_bmfmap.map.FlutterCommonMapView; +import com.baidu.flutter_bmfmap.map.FlutterMapView; +import com.baidu.flutter_bmfmap.map.MapStateUpdateImp; +import com.baidu.flutter_bmfmap.map.MapViewWrapper; +import com.baidu.flutter_bmfmap.utils.Constants; +import com.baidu.flutter_bmfmap.utils.converter.FlutterDataConveter; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.BitmapDescriptor; +import com.baidu.mapapi.map.BitmapDescriptorFactory; +import com.baidu.mapapi.map.MapStatus; +import com.baidu.mapapi.map.MapStatusUpdate; +import com.baidu.mapapi.map.MapStatusUpdateFactory; +import com.baidu.mapapi.map.MapView; +import com.baidu.mapapi.map.TextureMapView; +import com.baidu.mapapi.map.WinRound; +import com.baidu.mapapi.model.LatLng; +import com.baidu.mapapi.model.LatLngBounds; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Rect; +import android.text.TextUtils; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +public class MapStateHandler extends BMapHandler { + private static final String TAG = MapStateHandler.class.getSimpleName(); + private BaiduMap mBaiduMap; + + private String mViewType; + + public MapStateHandler(FlutterCommonMapView mapView) { + super(mapView); + mViewType = mapView.getViewType(); + mBaiduMap = mapView.getBaiduMap(); + } + + @Override + public void updateMapView(FlutterCommonMapView mapView) { + super.updateMapView(mapView); + if (null != mapView) { + mBaiduMap = mapView.getBaiduMap(); + } + } + + @Override + public void handlerMethodCallResult(Context context, MethodCall call, + MethodChannel.Result result) { + if (null == call) { + return; + } + String methodId = call.method; + if (TextUtils.isEmpty(methodId)) { + return; + } + + switch (methodId) { + case Constants.MethodProtocol.MapStateProtocol.sMapUpdateMethod: + setMapUpdate(call, result); + break; + case Constants.MethodProtocol.MapStateProtocol.sMapTakeSnapshotMethod: + mapSnapshot(result); + break; + case Constants.MethodProtocol.MapStateProtocol.sMapTakeSnapshotWithRectMethod: + snapShotRect(call, result); + break; + case Constants.MethodProtocol.MapStateProtocol.sMapSetCompassImageMethod: + setCompassImage(call, result); + break; + case Constants.MethodProtocol.MapStateProtocol.sMapSetCustomTrafficColorMethod: + setCustomTrafficColor(call, result); + break; + case Constants.MethodProtocol.MapStateProtocol.sMapSetVisibleMapBoundsMethod: + setNewCoordinateBounds(call, result); + break; + case Constants.MethodProtocol.MapStateProtocol.sMapSetVisibleMapBoundsWithPaddingMethod: + setVisibleMapBoundsWithPaddingMethod(call, result); + break; + case Constants.MethodProtocol.MapStateProtocol.sMapDidUpdateWidget: + case Constants.MethodProtocol.MapStateProtocol.sMapReassemble: + resumeMap(); + break; + default: + break; + } + } + + /** + * 自定义路况颜色 + */ + private void setCustomTrafficColor(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + result.success(false); + return; + } + if (!argument.containsKey("smooth") || !argument.containsKey("slow") + || !argument.containsKey("congestion") || !argument + .containsKey("severeCongestion")) { + result.success(false); + return; + } + + String smooth = (String) argument.get("smooth"); + String slow = (String) argument.get("slow"); + String congestion = (String) argument.get("congestion"); + String severeCongestion = (String) argument.get("severeCongestion"); + if (smooth == null || slow == null || congestion == null || severeCongestion == null) { + result.success(false); + return; + } + String color = "#"; + String severeCongestionColor = color.concat(severeCongestion); + String congestionColor = color.concat(congestion); + String slowColor = color.concat(slow); + String smoothColor = color.concat(smooth); + + mBaiduMap.setCustomTrafficColor(severeCongestionColor, congestionColor, slowColor, + smoothColor); + result.success(true); + } + + /** + * 设置罗盘图片 + */ + private void setCompassImage(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + result.success(false); + return; + } + + if (!argument.containsKey("imagePath")) { + result.success(false); + return; + } + + String imagePath = (String) argument.get("imagePath"); + if (imagePath == null) { + result.success(false); + return; + } + BitmapDescriptor bitmapDescriptor = + BitmapDescriptorFactory.fromAsset("flutter_assets/" + imagePath); + Bitmap bitmap = bitmapDescriptor.getBitmap(); + mBaiduMap.setCompassIcon(bitmap); + result.success(true); + } + + /** + * 选取区域截图 + */ + private void snapShotRect(MethodCall call, final MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + result.success(null); + return; + } + if (!argument.containsKey("rect")) { + result.success(null); + return; + } + Map rect = (Map) argument.get("rect"); + + WinRound winRound = FlutterDataConveter.BMFRectToWinRound(rect); + if (null == winRound) { + result.success(null); + return; + } + + if (winRound.left > winRound.right || winRound.top > winRound.bottom) { + result.success(null); + return; + } + + if (winRound.right - winRound.left > getMapViewWidth() + || winRound.bottom - winRound.top > getMapViewHeight()) { + result.success(null); + return; + } + + // 矩形区域保证left <= right top <= bottom 否则截屏失败 + Rect recta = new Rect(winRound.left, winRound.top, winRound.right, winRound.bottom); + mBaiduMap.snapshotScope(recta, new BaiduMap.SnapshotReadyCallback() { + @Override + public void onSnapshotReady(Bitmap bitmap) { + if (null == bitmap) { + result.success(null); + return; + } + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); + result.success(byteArrayOutputStream.toByteArray()); + } + }); + } + + private int getMapViewWidth() { + int width = 0; + switch (mViewType) { + case Constants.ViewType.sMapView: + MapView mapView = mMapView.getMapView(); + width = null != mapView ? mapView.getWidth() : 0; + break; + case Constants.ViewType.sTextureMapView: + TextureMapView textureMapView = mMapView.getTextureMapView(); + width = null != textureMapView ? textureMapView.getWidth() : 0; + break; + default: + break; + } + + return width; + } + + private int getMapViewHeight() { + int height = 0; + switch (mViewType) { + case Constants.ViewType.sMapView: + MapView mapView = mMapView.getMapView(); + height = null != mapView ? mapView.getHeight() : 0; + break; + case Constants.ViewType.sTextureMapView: + TextureMapView textureMapView = mMapView.getTextureMapView(); + height = null != textureMapView ? textureMapView.getHeight() : 0; + break; + default: + break; + } + + return height; + } + + /** + * 截图 全部地图展示区域 + */ + private void mapSnapshot(final MethodChannel.Result result) { + if (null == mBaiduMap) { + result.success(null); + return; + } + mBaiduMap.snapshot(new BaiduMap.SnapshotReadyCallback() { + @Override + public void onSnapshotReady(Bitmap bitmap) { + if (null == bitmap) { + result.success(null); + return; + } + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); + result.success(byteArrayOutputStream.toByteArray()); + } + }); + } + + /** + * 更新地图 + */ + private void setMapUpdate(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + result.success(false); + return; + } + + boolean ret = MapStateUpdateImp.getInstance() + .setCommView(mMapView) + .updateMapState(argument); + + result.success(ret); + } + + /** + * 设置显示在屏幕中的地图地理范围 + */ + private void setNewCoordinateBounds(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + result.success(false); + return; + } + + if (!argument.containsKey("visibleMapBounds")) { + result.success(false); + return; + } + + Map visibleMapBounds = + (Map) argument.get("visibleMapBounds"); + if (null == visibleMapBounds) { + result.success(false); + return; + } + + LatLngBounds latLngBounds = visibleMapBoundsImp(visibleMapBounds); + if (null == latLngBounds) { + result.success(false); + return; + } + + mBaiduMap.setMapStatus(MapStatusUpdateFactory.newLatLngBounds(latLngBounds)); + result.success(true); + } + + private LatLngBounds visibleMapBoundsImp(Map visibleMapBounds) { + if (!visibleMapBounds.containsKey("northeast") || !visibleMapBounds + .containsKey("southwest")) { + return null; + } + HashMap northeast = + (HashMap) visibleMapBounds.get("northeast"); + HashMap southwest = + (HashMap) visibleMapBounds.get("southwest"); + if (null == northeast || null == southwest) { + return null; + } + if (!northeast.containsKey("latitude") || !northeast.containsKey("longitude") + || !southwest.containsKey("latitude") || !southwest.containsKey("longitude")) { + return null; + } + + Double northeastLatitude = northeast.get("latitude"); + Double northeastLongitude = northeast.get("longitude"); + Double southwestLatitude = southwest.get("latitude"); + Double southwestLongitude = southwest.get("longitude"); + + if (null == northeastLatitude || null == northeastLongitude + || null == southwestLatitude || null == southwestLongitude) { + return null; + } + + LatLng northeastLatLng = new LatLng(northeastLatitude, northeastLongitude); + LatLng southwestLatLng = new LatLng(southwestLatitude, southwestLongitude); + LatLngBounds.Builder builder = new LatLngBounds.Builder(); + builder.include(northeastLatLng); + builder.include(southwestLatLng); + + return builder.build(); + } + + /** + * 根据Padding设置地理范围的合适缩放级别 + */ + private void setVisibleMapBoundsWithPaddingMethod(MethodCall call, + MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + result.success(false); + return; + } + + if (!argument.containsKey("visibleMapBounds") || !argument.containsKey("insets")) { + result.success(false); + return; + } + + Map visibleMapBounds = + (Map) argument.get("visibleMapBounds"); + Map insets = (Map) argument.get("insets"); + if (null == visibleMapBounds || null == insets) { + result.success(false); + return; + } + + LatLngBounds latLngBounds = visibleMapBoundsImp(visibleMapBounds); + if (null == latLngBounds) { + result.success(false); + return; + } + + if (!insets.containsKey("left") || !insets.containsKey("top") + || !insets.containsKey("right") || !insets.containsKey("bottom")) { + result.success(false); + return; + } + Double left = insets.get("left"); + Double top = insets.get("top"); + Double right = insets.get("right"); + Double bottom = insets.get("bottom"); + + if (null == left || null == top || null == right || null == bottom) { + result.success(false); + return; + } + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLngBounds(latLngBounds, + left.intValue(), top.intValue(), right.intValue(), bottom.intValue()); + mBaiduMap.setMapStatus(mapStatusUpdate); + result.success(true); + } + + private void updateMap() { + MapStatus.Builder builder = new MapStatus.Builder(); + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(builder.build()); + mBaiduMap.setMapStatus(mapStatusUpdate); + } + + private void resumeMap() { + MapViewWrapper mapViewWrapper = (MapViewWrapper) mMapView; + FlutterMapView flutterMapView = mapViewWrapper.getFlutterMapView(); + flutterMapView.setResumeState(true); + } + +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/MapUpdateHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/MapUpdateHandler.java new file mode 100644 index 0000000..7fe7cbc --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/MapUpdateHandler.java @@ -0,0 +1,1002 @@ +package com.baidu.flutter_bmfmap.map.mapHandler; + +import android.content.Context; +import android.graphics.Point; +import android.text.TextUtils; +import android.util.Log; + +import com.baidu.flutter_bmfmap.map.FlutterCommonMapView; +import com.baidu.flutter_bmfmap.utils.Constants; +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.flutter_bmfmap.utils.converter.FlutterDataConveter; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.LogoPosition; +import com.baidu.mapapi.map.MapStatus; +import com.baidu.mapapi.map.MapStatusUpdate; +import com.baidu.mapapi.map.MapStatusUpdateFactory; +import com.baidu.mapapi.map.MapView; +import com.baidu.mapapi.map.TextureMapView; +import com.baidu.mapapi.map.UiSettings; +import com.baidu.mapapi.model.LatLng; +import com.baidu.mapapi.model.LatLngBounds; + +import java.util.HashMap; +import java.util.Map; + +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +public class MapUpdateHandler extends BMapHandler { + + private static final String TAG = "MapUpdateHandler"; + private BaiduMap mBaiduMap; + + public MapUpdateHandler(FlutterCommonMapView mapView) { + super(mapView); + if (null != mapView) { + mBaiduMap = mapView.getBaiduMap(); + } + } + + @Override + public void updateMapView(FlutterCommonMapView mapView) { + super.updateMapView(mapView); + if (null != mapView) { + mBaiduMap = mapView.getBaiduMap(); + } + } + + @Override + public void handlerMethodCallResult(Context context, MethodCall call, MethodChannel.Result result) { + if (null == call) { + result.success(false); + return; + } + String methodId = call.method; + if (TextUtils.isEmpty(methodId)) { + result.success(false); + return; + } + + switch (methodId) { + case Constants.MethodProtocol.MapStateProtocol.sMapZoomInMethod: + zoomIN(result); + break; + case Constants.MethodProtocol.MapStateProtocol.sMapZoomOutMethod: + zoomOut(result); + break; + case Constants.MethodProtocol.MapStateProtocol.sMapSetCenterCoordinateMethod: + setNewLatlng(call, result); + break; + case Constants.MethodProtocol.MapStateProtocol.sMapSetCenterZoomMethod: + setNewLatLngZoom(call, result); + break; + case Constants.MethodProtocol.MapStateProtocol.sMapSetMapStatusMethod: + setMapStatus(call, result); + break; + case Constants.MethodProtocol.MapStateProtocol.sMapSetScrollByMethod: + setScrollBy(call, result); + break; + case Constants.MethodProtocol.MapStateProtocol.sMapSetZoomByMethod: + setZoomBy(call, result); + break; + case Constants.MethodProtocol.MapStateProtocol.sMapSetZoomPointByMethod: + setZoomPointBy(call, result); + break; + case Constants.MethodProtocol.MapStateProtocol.sMapSetZoomToMethod: + setZoomTo(call, result); + break; + case Constants.MethodProtocol.MapStateProtocol.sMapGetMapStatusMethod: + getMapStatus(call, result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetMapTypeMethod: + getMapType(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetZoomLevelMethod: + getZoomLevel(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetMinZoomLevelMethod: + getMinZoomLevel(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetMaxZoomLevelMethod: + getMaxZoomLevel(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetRotationMethod: + getRotation(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetOverlookingMethod: + getOverlooking(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetBuildingsEnabledMethod: + getBuildingsEnable(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetTrafficEnabledMethod: + getTrafficEnabled(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetBaiduHeatMapEnabledMethod: + getBaiduHeatMapEnabled(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetGesturesEnabledMethod: + getGesturesEnabled(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetZoomEnabledMethod: + getZoomEnabled(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetScrollEnabledMethod: + getScrollEnabled(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetOverlookEnabledMethod: + getOverlookEnabled(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetRotateEnabledMethod: + getRotateEnabled(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetMapScaleBarPositionMethod: + getScaleControlPosition(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetLogoPositionMethod: + getLogoPosition(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetVisibleMapBoundsMethod: + getVisibleMapBounds(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetBaseIndoorMapEnabledMethod: + getBaseIndoorMapEnable(result); + break; + case Constants.MethodProtocol.BMFMapGetPropertyMethodId.sMapGetShowIndoorMapPoiMethod: + getShowIndoorMapPoiEnable(result); + break; + default: + break; + } + } + + /** + * 获取map的显示室内图 + */ + private void getBaseIndoorMapEnable(MethodChannel.Result result) { + if (null == result) { + return; + } + HashMap baseIndoorMapEnabledHashMap = new HashMap<>(); + + boolean baseIndoorMapMode = BMFMapStatus.getsInstance().isBaseIndoorEnable(); + baseIndoorMapEnabledHashMap.put("baseIndoorMapEnabled",baseIndoorMapMode); + result.success(baseIndoorMapEnabledHashMap); + } + + /** + * 获取map的显示室内图 + */ + private void getShowIndoorMapPoiEnable(MethodChannel.Result result) { + if (null == result) { + return; + } + HashMap showIndoorMapPoiEnabledHashMap = new HashMap<>(); + + boolean indoorMapPoiEnable = BMFMapStatus.getsInstance().isIndoorMapPoiEnable(); + showIndoorMapPoiEnabledHashMap.put("showIndoorMapPoi",indoorMapPoiEnable); + result.success(showIndoorMapPoiEnabledHashMap); + } + + /** + * 获取map的可视范围 + */ + private void getVisibleMapBounds(MethodChannel.Result result) { + if (null == result || null == mBaiduMap) { + return; + } + HashMap latLngBoundsHashMap = new HashMap<>(); + MapStatus mapStatus = mBaiduMap.getMapStatus(); + if (null == mapStatus) { + return; + } + LatLngBounds bound = mapStatus.bound; + HashMap latLngBounds = latLngBounds(bound); + if (null == latLngBoundsHashMap) { + return; + } + latLngBoundsHashMap.put("visibleMapBounds",latLngBounds); + result.success(latLngBoundsHashMap); + } + + private HashMap latLngBounds(LatLngBounds latLngBounds) { + if (null == latLngBounds) { + return null; + } + // 该地理范围东北坐标 + LatLng northeast = latLngBounds.northeast; + // 该地理范围西南坐标 + LatLng southwest = latLngBounds.southwest; + + HashMap boundsMap = new HashMap(); + HashMap northeastMap = new HashMap(); + if (null == northeast){ + return null; + } + northeastMap.put("latitude", northeast.latitude); + northeastMap.put("longitude",northeast.longitude); + HashMap southwestMap = new HashMap(); + if (null == southwest) { + return null; + } + southwestMap.put("latitude",southwest.latitude); + southwestMap.put("longitude", southwest.longitude); + boundsMap.put("northeast",northeastMap); + boundsMap.put("southwest",southwestMap); + return boundsMap; + } + + /** + * 获取map的logo位置 + */ + private void getLogoPosition(MethodChannel.Result result) { + if (null == result) { + return; + } + if(null == mMapView) { + result.success(null); + return; + } + HashMap logoPositionHashMap = new HashMap<>(); + String viewType = mMapView.getViewType(); + LogoPosition logoPosition = null; + if (viewType.equals(Constants.ViewType.sMapView)) { + MapView mapView = mMapView.getMapView(); + logoPosition = mapView.getLogoPosition(); + } else if (viewType.equals(Constants.ViewType.sTextureMapView)) { + TextureMapView textureMapView = mMapView.getTextureMapView(); + logoPosition = textureMapView.getLogoPosition(); + } + if (null == logoPosition) { + result.success(null); + return; + } + switch (logoPosition) { + case logoPostionleftBottom: + logoPositionHashMap.put("logoPosition",0); + break; + case logoPostionleftTop: + logoPositionHashMap.put("logoPosition",1); + break; + case logoPostionCenterBottom: + logoPositionHashMap.put("logoPosition",2); + break; + case logoPostionCenterTop: + logoPositionHashMap.put("logoPosition",3); + break; + case logoPostionRightBottom: + logoPositionHashMap.put("logoPosition",4); + break; + case logoPostionRightTop: + logoPositionHashMap.put("logoPosition",5); + break; + default: + break; + } + result.success(logoPositionHashMap); + } + + /** + * 获取map的比例尺的位置 + * + * 要在setScaleControlPosition后才可以获取否则返回null + */ + private void getScaleControlPosition(final MethodChannel.Result result) { + if (null == result) { + return; + } + if(null == mMapView) { + result.success(null); + return; + } + HashMap scaleControlPositionHashMap = new HashMap<>(); + HashMap pointHashMap = new HashMap<>(); + Point scaleControlPosition = null; + String viewType = mMapView.getViewType(); + if (viewType.equals(Constants.ViewType.sMapView)) { + MapView mapView = mMapView.getMapView(); + scaleControlPosition = mapView.getScaleControlPosition(); + } else if (viewType.equals(Constants.ViewType.sTextureMapView)) { + result.success(null); + return; + } + if (null == scaleControlPosition) { + result.success(null); + return; + } + double x = scaleControlPosition.x; + double y = scaleControlPosition.y; + pointHashMap.put("x",x); + pointHashMap.put("y",y); + scaleControlPositionHashMap.put("mapScaleBarPosition",pointHashMap); + result.success(scaleControlPositionHashMap); + } + + /** + * 获取map是否支持旋转 + */ + private void getRotateEnabled(MethodChannel.Result result) { + if (null == result || null == mBaiduMap) { + return; + } + HashMap rotateGesturesEnabledHashMap = new HashMap<>(); + MapStatus mapStatus = mBaiduMap.getMapStatus(); + if(null == mapStatus) { + return; + } + + UiSettings uiSettings = mBaiduMap.getUiSettings(); + boolean rotateGesturesEnabled = uiSettings.isRotateGesturesEnabled(); + rotateGesturesEnabledHashMap.put("rotateEnabled",rotateGesturesEnabled); + result.success(rotateGesturesEnabledHashMap); + } + + /** + * 获取map是否支持俯仰角 + */ + private void getOverlookEnabled(MethodChannel.Result result) { + if (null == result || null == mBaiduMap) { + return; + } + HashMap scrollEnabledHashMap = new HashMap<>(); + MapStatus mapStatus = mBaiduMap.getMapStatus(); + if(null == mapStatus) { + return; + } + + UiSettings uiSettings = mBaiduMap.getUiSettings(); + boolean overlookingGesturesEnabled = uiSettings.isOverlookingGesturesEnabled(); + scrollEnabledHashMap.put("overlookEnabled",overlookingGesturesEnabled); + result.success(scrollEnabledHashMap); + } + + /** + * 获取map是否支持拖拽手势 + */ + private void getScrollEnabled(MethodChannel.Result result) { + if (null == result || null == mBaiduMap) { + return; + } + HashMap scrollEnabledHashMap = new HashMap<>(); + MapStatus mapStatus = mBaiduMap.getMapStatus(); + if(null == mapStatus) { + return; + } + + UiSettings uiSettings = mBaiduMap.getUiSettings(); + boolean scrollGesturesEnabled = uiSettings.isScrollGesturesEnabled(); + scrollEnabledHashMap.put("scrollEnabled",scrollGesturesEnabled); + result.success(scrollEnabledHashMap); + } + + /** + * 获取map是否支持缩放 + */ + private void getZoomEnabled(MethodChannel.Result result) { + if (null == result || null == mBaiduMap) { + return; + } + HashMap zoomGesturesEnabledHashMap = new HashMap<>(); + MapStatus mapStatus = mBaiduMap.getMapStatus(); + if(null == mapStatus) { + return; + } + + UiSettings uiSettings = mBaiduMap.getUiSettings(); + boolean zoomGesturesEnabled = uiSettings.isZoomGesturesEnabled(); + zoomGesturesEnabledHashMap.put("zoomEnabled",zoomGesturesEnabled); + result.success(zoomGesturesEnabledHashMap); + } + + /** + * 获取地图的所有手势 + */ + private void getGesturesEnabled(MethodChannel.Result result) { + if (null == result || null == mBaiduMap) { + return; + } + HashMap gesturesEnabledHashMap = new HashMap<>(); + MapStatus mapStatus = mBaiduMap.getMapStatus(); + if(null == mapStatus) { + return; + } + + UiSettings uiSettings = mBaiduMap.getUiSettings(); + if (uiSettings.isRotateGesturesEnabled() && uiSettings.isScrollGesturesEnabled() + && uiSettings.isOverlookingGesturesEnabled() && uiSettings.isZoomGesturesEnabled()) { + gesturesEnabledHashMap.put("gesturesEnabled",true); + result.success(gesturesEnabledHashMap); + } else { + gesturesEnabledHashMap.put("gesturesEnabled",false); + result.success(gesturesEnabledHashMap); + } + } + + /** + * 获取是否开启百度热力图 + */ + private void getBaiduHeatMapEnabled(MethodChannel.Result result) { + if (null == result || null == mBaiduMap) { + return; + } + HashMap baiduHeatMapEnabledHashMap = new HashMap<>(); + MapStatus mapStatus = mBaiduMap.getMapStatus(); + if(null == mapStatus) { + return; + } + boolean baiduHeatMapEnabled = mBaiduMap.isBaiduHeatMapEnabled(); + baiduHeatMapEnabledHashMap.put("baiduHeatMapEnabled",baiduHeatMapEnabled); + result.success(baiduHeatMapEnabledHashMap); + } + + /** + * 获取是否开启路况 + */ + private void getTrafficEnabled(MethodChannel.Result result) { + if (null == result || null == mBaiduMap) { + return; + } + HashMap trafficEnabledHashMap = new HashMap<>(); + MapStatus mapStatus = mBaiduMap.getMapStatus(); + if(null == mapStatus) { + return; + } + boolean trafficEnabled = mBaiduMap.isTrafficEnabled(); + trafficEnabledHashMap.put("trafficEnabled",trafficEnabled); + result.success(trafficEnabledHashMap); + } + + + /** + * 获取map是否现显示3D楼块效果 + */ + private void getBuildingsEnable(MethodChannel.Result result) { + if (null == result || null == mBaiduMap) { + return; + } + HashMap buildingsEnabledHashMap = new HashMap<>(); + MapStatus mapStatus = mBaiduMap.getMapStatus(); + if(null == mapStatus) { + return; + } + boolean isBuildingsEnabled = mBaiduMap.isBuildingsEnabled(); + buildingsEnabledHashMap.put("buildingsEnabled",isBuildingsEnabled); + result.success(buildingsEnabledHashMap); + } + + /** + * 获取map的地图俯视角度 + */ + private void getOverlooking(MethodChannel.Result result) { + if (null == result || null == mBaiduMap) { + return; + } + HashMap overlookHashMap = new HashMap<>(); + MapStatus mapStatus = mBaiduMap.getMapStatus(); + if(null == mapStatus) { + return; + } + double overlook = mapStatus.overlook; + overlookHashMap.put("overlooking",overlook); + result.success(overlookHashMap); + } + + /** + * 获取map的旋转角度 + */ + private void getRotation(MethodChannel.Result result) { + if (null == result || null == mBaiduMap) { + return; + } + HashMap rotationHashMap = new HashMap<>(); + MapStatus mapStatus = mBaiduMap.getMapStatus(); + if(null == mapStatus) { + return; + } + double rotate = mapStatus.rotate; + if (rotate > 180) { + rotate = rotate - 360; + } + rotationHashMap.put("rotation",rotate); + result.success(rotationHashMap); + } + + /** + * 获取地图最大缩放级别 + */ + private void getMaxZoomLevel(MethodChannel.Result result) { + if (null == result || null == mBaiduMap) { + return; + } + HashMap maxZoomLevelHashMap = new HashMap<>(); + int maxZoomLevel = (int) mBaiduMap.getMaxZoomLevel(); + maxZoomLevelHashMap.put("maxZoomLevel",maxZoomLevel); + result.success(maxZoomLevelHashMap); + } + + /** + * 获取地图最小缩放级别 + */ + private void getMinZoomLevel(MethodChannel.Result result) { + if (null == result || null == mBaiduMap) { + return; + } + HashMap minZoomLevelHashMap = new HashMap<>(); + int minZoomLevel = (int) mBaiduMap.getMinZoomLevel(); + minZoomLevelHashMap.put("minZoomLevel",minZoomLevel); + result.success(minZoomLevelHashMap); + } + + /** + * 获取地图缩放级别 + */ + private void getZoomLevel(MethodChannel.Result result) { + if (null == result || null == mBaiduMap) { + return; + } + HashMap zoomHashMap = new HashMap<>(); + MapStatus mapStatus = mBaiduMap.getMapStatus(); + if(null == mapStatus) { + return; + } + int zoom = (int) mapStatus.zoom; + zoomHashMap.put("zoomLevel",zoom); + result.success(zoomHashMap); + } + + /** + * 获取地图类型 + */ + private void getMapType(MethodChannel.Result result) { + if (null == result || null == mBaiduMap) { + return; + } + HashMap mapTypeHashMap = new HashMap<>(); + int mapType = mBaiduMap.getMapType(); + if(mapType == BaiduMap.MAP_TYPE_NONE) { + mapTypeHashMap.put("mapType",0); + }else if (mapType == BaiduMap.MAP_TYPE_NORMAL) { + mapTypeHashMap.put("mapType",1); + }else if (mapType == BaiduMap.MAP_TYPE_SATELLITE) { + mapTypeHashMap.put("mapType",2); + } + result.success(mapTypeHashMap); + } + + /** + * 设置地图缩放级别 + */ + private void setZoomTo(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + result.success(false); + return; + } + + if (!argument.containsKey("zoom") || !argument.containsKey("animateDurationMs")) { + result.success(false); + return; + } + + Double zoom = (Double) argument.get("zoom"); + Integer animateDurationMs = (Integer) argument.get("animateDurationMs"); + + if (null != zoom && null != animateDurationMs) { + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.zoomTo(zoom.floatValue()); + mBaiduMap.animateMapStatus(mapStatusUpdate, animateDurationMs); + result.success(true); + } else if (null != zoom) { + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.zoomTo(zoom.floatValue()); + mBaiduMap.setMapStatus(mapStatusUpdate); + result.success(true); + } else { + result.success(false); + } + } + + /** + * 缩小地图缩放级别 + */ + private void zoomOut(MethodChannel.Result result) { + if (null == mBaiduMap) { + result.success(false); + return; + } + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.zoomOut(); + mBaiduMap.setMapStatus(mapStatusUpdate); + result.success(true); + } + + /** + * 放大地图缩放级别 + */ + private void zoomIN(MethodChannel.Result result) { + if (null == mBaiduMap) { + result.success(false); + return; + } + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.zoomIn(); + mBaiduMap.setMapStatus(mapStatusUpdate); + result.success(true); + } + + /** + * 根据给定增量以及给定的屏幕坐标缩放地图级别 + */ + private void setZoomPointBy(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + result.success(false); + return; + } + + if (!argument.containsKey("amount") || !argument.containsKey("focus") + || !argument.containsKey("animateDurationMs")) { + result.success(false); + return; + } + + Double amount = (Double) argument.get("amount"); + Map focus = (Map) argument.get("focus"); + Integer animateDurationMs = (Integer) argument.get("animateDurationMs"); + + if (null != amount && null != focus && null != animateDurationMs) { + Double x = focus.get("x"); + Double y = focus.get("y"); + if (x == null || y == null) { + result.success(false); + return ; + } + + Point point = new Point(x.intValue(), y.intValue()); + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.zoomBy(amount.floatValue(),point); + mBaiduMap.animateMapStatus(mapStatusUpdate, animateDurationMs); + result.success(true); + } else if (null != amount && null != focus) { + Double x = focus.get("x"); + Double y = focus.get("y"); + if (x == null || y == null) { + result.success(false); + return; + } + + Point point = new Point(x.intValue(), y.intValue()); + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.zoomBy(amount.floatValue(),point); + mBaiduMap.setMapStatus(mapStatusUpdate); + result.success(true); + } else { + result.success(false); + } + + } + + /** + * 根据给定增量缩放地图级别 + */ + private void setZoomBy(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + result.success(false); + return; + } + + if (!argument.containsKey("amount") || !argument.containsKey("animateDurationMs")) { + result.success(false); + return; + } + + Double amount = (Double) argument.get("amount"); + Integer animateDurationMs = (Integer) argument.get("animateDurationMs"); + if (null != amount && null != animateDurationMs) { + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.zoomBy(amount.floatValue()); + mBaiduMap.animateMapStatus(mapStatusUpdate, animateDurationMs); + result.success(true); + } else if (null != amount) { + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.zoomBy(amount.floatValue()); + mBaiduMap.setMapStatus(mapStatusUpdate); + result.success(true); + } else { + result.success(false); + } + } + + /** + * 按像素移动地图中心点 + */ + private void setScrollBy(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + result.success(false); + return; + } + + if (!argument.containsKey("xPixel") + || !argument.containsKey("yPixel") + || !argument.containsKey("animateDurationMs")) { + result.success(false); + return; + } + Integer xPixel = (Integer) argument.get("xPixel"); + Integer yPixel = (Integer) argument.get("yPixel"); + Integer animateDurationMs = (Integer) argument.get("animateDurationMs"); + + if (null != xPixel && null != yPixel && null != animateDurationMs) { + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.scrollBy(xPixel,yPixel); + mBaiduMap.animateMapStatus(mapStatusUpdate, animateDurationMs); + result.success(true); + } else if (null != xPixel && null != yPixel) { + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.scrollBy(xPixel,yPixel); + mBaiduMap.setMapStatus(mapStatusUpdate); + result.success(true); + } else { + result.success(false); + } + } + + /** + * 设置地图新状态 + */ + private void setMapStatus(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + result.success(false); + return; + } + + if (!argument.containsKey("mapStatus") || !argument.containsKey("animateDurationMs")) { + result.success(false); + return; + } + + Map mapStatus = (Map) argument.get("mapStatus"); + Integer animateDurationMs = (Integer) argument.get("animateDurationMs"); + if (null != mapStatus && null != animateDurationMs) { + boolean b = setAnimateMapStatusImp(mapStatus, animateDurationMs); + result.success(b); + } if (null != mapStatus) { + boolean b = setMapStatusImp(mapStatus); + result.success(b); + }else { + result.success(false); + } + } + + /** + * 获取地图新状态 + */ + private void getMapStatus(MethodCall call, MethodChannel.Result result) { + MapStatus mapStatus = mBaiduMap.getMapStatus(); + + final HashMap mapStatusMap = new HashMap<>(); + mapStatusMap.put("fLevel", mapStatus.zoom); + mapStatusMap.put("fRotation", mapStatus.rotate); + mapStatusMap.put("fOverlooking", mapStatus.overlook); + mapStatusMap.put("targetScreenPt", FlutterDataConveter.pointToMap(mapStatus.targetScreen)); + mapStatusMap.put("targetGeoPt", FlutterDataConveter.latLngToMap(mapStatus.target)); + mapStatusMap.put("visibleMapBounds", FlutterDataConveter.latlngBoundsToMap(mapStatus.bound)); + + result.success(new HashMap(){ + { + put("mapStatus", mapStatusMap); + } + }); + } + + /** + * 动画形式更新地图状态参数配置 + */ + private boolean setAnimateMapStatusImp(Map mapStatusParameter, Integer animateDurationMs) { + if (!mapStatusParameter.containsKey("fLevel") + || !mapStatusParameter.containsKey("fRotation") + || !mapStatusParameter.containsKey("fOverlooking") + || !mapStatusParameter.containsKey("targetScreenPt") + || !mapStatusParameter.containsKey("targetGeoPt")) { + return false; + } + MapStatus mapStatus = mapStatusImp(mapStatusParameter); + + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mapStatus); + mBaiduMap.animateMapStatus(mapStatusUpdate, animateDurationMs); + return true; + } + + /** + * 更新地图状态参数配置 + */ + private boolean setMapStatusImp(Map mapStatusParameter) { + if (!mapStatusParameter.containsKey("fLevel") + || !mapStatusParameter.containsKey("fRotation") + || !mapStatusParameter.containsKey("fOverlooking") + || !mapStatusParameter.containsKey("targetScreenPt") + || !mapStatusParameter.containsKey("targetGeoPt")) { + return false; + } + MapStatus mapStatus = mapStatusImp(mapStatusParameter); + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mapStatus); + mBaiduMap.setMapStatus(mapStatusUpdate); + return true; + } + + private MapStatus mapStatusImp(Map mapStatusParameter){ + MapStatus.Builder builder = new MapStatus.Builder(); + Double fLevel = (Double) mapStatusParameter.get("fLevel"); + if (null != fLevel) { + builder.zoom(fLevel.floatValue()); + } + Double fRotation = (Double) mapStatusParameter.get("fRotation"); + if (null != fRotation) { + builder.rotate(fRotation.floatValue()); + } + Double fOverlooking = (Double) mapStatusParameter.get("fOverlooking"); + if (null != fOverlooking) { + builder.overlook(fOverlooking.floatValue()); + } + Map targetScreenPt = (Map) mapStatusParameter.get("targetScreenPt"); + if (null != targetScreenPt) { + if (targetScreenPt.containsKey("x") && targetScreenPt.containsKey("y")) { + Double x = targetScreenPt.get("x"); + Double y = targetScreenPt.get("y"); + if (null != x && null != y) { + Point point = new Point(x.intValue(), y.intValue()); + builder.targetScreen(point); + } + } + } + + Map targetGeoPt = (Map) mapStatusParameter.get("targetGeoPt"); + if (null != targetGeoPt) { + if (targetGeoPt.containsKey("latitude") && targetGeoPt.containsKey("longitude")) { + Double latitude = targetGeoPt.get("latitude"); + Double longitude = targetGeoPt.get("longitude"); + if (null != latitude && null != longitude) { + LatLng latLng = new LatLng(latitude, longitude); + builder.target(latLng); + } + } + } + + return builder.build(); + } + + /** + * 设置地图中心点以及缩放级别 + */ + private void setNewLatLngZoom(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + result.success(false); + return; + } + + if (!argument.containsKey("coordinate") || !argument.containsKey("zoom") || !argument.containsKey( + "animateDurationMs")) { + result.success(false); + return; + } + Map coordinate = (Map) argument.get("coordinate"); + Double zoom = (Double) argument.get("zoom"); + Integer animateDurationMs = (Integer) argument.get("animateDurationMs"); + if (null != coordinate && zoom != null && animateDurationMs != null) { + boolean b = setAnimateNewLatLngZoomImp(coordinate, zoom, animateDurationMs); + result.success(b); + } else if (null != coordinate && zoom != null) { + boolean b = setNewLatLngZoomImp(coordinate, zoom); + result.success(b); + } else { + result.success(false); + } + } + + /** + * 动画形式更新地图中心点以及缩放级别 + * + * @return 成功则返回true 否则返回false + */ + private boolean setAnimateNewLatLngZoomImp(Map coordinate, Double zoom, Integer animateDurationMs) { + if (!coordinate.containsKey("latitude") || !coordinate.containsKey("longitude")) { + return false; + } + Double latitude = coordinate.get("latitude"); + Double longitude = coordinate.get("longitude"); + if (null == latitude || null == longitude) { + return false; + } + LatLng latLng = new LatLng(latitude, longitude); + float zoomValue = zoom.floatValue(); + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLngZoom(latLng, zoomValue); + mBaiduMap.animateMapStatus(mapStatusUpdate, animateDurationMs); + return true; + } + + /** + * 更新地图中心点以及缩放级别 + * + * @return 成功则返回true 否则返回false + */ + private boolean setNewLatLngZoomImp(Map coordinate, Double zoom) { + if (!coordinate.containsKey("latitude") || !coordinate.containsKey("longitude")) { + return false; + } + Double latitude = coordinate.get("latitude"); + Double longitude = coordinate.get("longitude"); + if (null == latitude || null == longitude) { + return false; + } + LatLng latLng = new LatLng(latitude, longitude); + float zoomValue = zoom.floatValue(); + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLngZoom(latLng, zoomValue); + mBaiduMap.setMapStatus(mapStatusUpdate); + return true; + } + + /** + * 更新地图中心点 + */ + private void setNewLatlng(MethodCall call, MethodChannel.Result result) { + if(Env.DEBUG){ + Log.d(TAG, "setNewLatlng"); + } + Map argument = call.arguments(); + if (null == argument || null == mBaiduMap) { + result.success(false); + return; + } + + if (!argument.containsKey("coordinate") || !argument.containsKey("animateDurationMs")) { + result.success(false); + return; + } + Map coordinate = (Map) argument.get("coordinate"); + Integer animateDurationMs = (Integer) argument.get("animateDurationMs"); + if (null != coordinate && null != animateDurationMs) { + boolean b = setAnimateNewLatlngImp(coordinate, animateDurationMs); + result.success(b); + } else if (null != coordinate) { + boolean b = setNewLatlngImp(coordinate); + result.success(b); + } else { + result.success(false); + } + } + + /** + * 动画更新地图中心点 + * + * @return 成功则返回true 否则返回false + */ + private boolean setAnimateNewLatlngImp(Map coordinate, Integer animateDurationMs) { + if (!coordinate.containsKey("latitude") || !coordinate.containsKey("longitude")) { + return false; + } + Double latitude = coordinate.get("latitude"); + Double longitude = coordinate.get("longitude"); + if (null == latitude || null == longitude) { + return false; + } + LatLng latLng = new LatLng(latitude, longitude); + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLng(latLng); + mBaiduMap.animateMapStatus(mapStatusUpdate, animateDurationMs); + return true; + } + + /** + * 更新地图中心点 + * + * @return 成功则返回true 否则返回false + */ + private boolean setNewLatlngImp(Map coordinate) { + if (!coordinate.containsKey("latitude") || !coordinate.containsKey("longitude")) { + return false; + } + Double latitude = coordinate.get("latitude"); + Double longitude = coordinate.get("longitude"); + if (null == latitude || null == longitude) { + return false; + } + LatLng latLng = new LatLng(latitude, longitude); + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLng(latLng); + mBaiduMap.setMapStatus(mapStatusUpdate); + return true; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/MarkerHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/MarkerHandler.java new file mode 100644 index 0000000..8f54b37 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/MarkerHandler.java @@ -0,0 +1,616 @@ +package com.baidu.flutter_bmfmap.map.mapHandler; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import com.baidu.flutter_bmfmap.map.FlutterCommonMapView; +import com.baidu.flutter_bmfmap.map.mapHandler.BMapHandler; +import com.baidu.flutter_bmfmap.utils.Constants; +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.flutter_bmfmap.utils.converter.FlutterDataConveter; +import com.baidu.flutter_bmfmap.utils.converter.TypeConverter; +import com.baidu.mapapi.BMapManager; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.BitmapDescriptor; +import com.baidu.mapapi.map.BitmapDescriptorFactory; +import com.baidu.mapapi.map.Marker; +import com.baidu.mapapi.map.MarkerOptions; +import com.baidu.mapapi.map.Overlay; +import com.baidu.mapapi.model.LatLng; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Point; +import android.os.Bundle; +import android.text.TextUtils; +import android.util.Log; + +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +public class MarkerHandler extends BMapHandler { + + private static final String TAG = "MarkerHandler"; + + private HashMap mOverlayMap = new HashMap<>(); + private HashMap mMarkerBitmapMap = new HashMap<>(); + + private BaiduMap mBaiduMap; + + public MarkerHandler(FlutterCommonMapView mapView) { + super(mapView); + if (null != mMapView) { + mBaiduMap = mMapView.getBaiduMap(); + } + } + + @Override + public void updateMapView(FlutterCommonMapView mapView) { + mMapView = mapView; + if (null != mMapView) { + mBaiduMap = mMapView.getBaiduMap(); + } + } + + @Override + public void clean() { + super.clean(); + Iterator iterator = mMarkerBitmapMap.values().iterator(); + BitmapDescriptor bitmapDescriptor; + while (iterator.hasNext()) { + bitmapDescriptor = (BitmapDescriptor) iterator.next(); + if (null != bitmapDescriptor) { + bitmapDescriptor.recycle(); + } + } + + mMarkerBitmapMap.clear(); + mOverlayMap.clear(); + } + + @Override + public void handlerMethodCallResult(Context context, MethodCall call, + MethodChannel.Result result) { + if (null == call) { + result.success(false); + return; + } + + if (null == mBaiduMap) { + result.success(false); + return; + } + + String methodId = call.method; + if (TextUtils.isEmpty(methodId)) { + result.success(false); + return; + } + + boolean ret = false; + switch (methodId) { + case Constants.MethodProtocol.MarkerProtocol.sMapAddMarkerMethod: + ret = addMarker(call); + break; + case Constants.MethodProtocol.MarkerProtocol.sMapAddMarkersMethod: + ret = addMarkers(call); + break; + case Constants.MethodProtocol.MarkerProtocol.sMapRemoveMarkerMethod: + ret = removeMarker(call); + break; + case Constants.MethodProtocol.MarkerProtocol.sMapRemoveMarkersMethod: + ret = removeMarkers(call); + break; + case Constants.MethodProtocol.MarkerProtocol.sMapDidSelectMarkerMethod: + break; + case Constants.MethodProtocol.MarkerProtocol.sMapDidDeselectMarkerMethod: + break; + case Constants.MethodProtocol.MarkerProtocol.sMapCleanAllMarkersMethod: + ret = cleanAllMarker(call); + break; + case Constants.MethodProtocol.MarkerProtocol.sMapUpdateMarkerMemberMethod: + ret = updateMarkerMember(call, result); + break; + default: + break; + } + + result.success(ret); + + return; + } + + private boolean addMarker(MethodCall call) { + Map argument = call.arguments(); + if (null == argument) { + return false; + } + + return addMarkerImp(argument); + } + + private boolean addMarkerImp(Map argument) { + if (Env.DEBUG) { + Log.d(TAG, "addMarkerImp enter"); + } + if (null == argument) { + return false; + } + + if (!argument.containsKey("id") + || !argument.containsKey("position") + || !argument.containsKey("icon")) { + return false; + } + + String id = new TypeConverter().getValue(argument, "id"); + if (TextUtils.isEmpty(id)) { + return false; + } + + if (mOverlayMap.containsKey(id)) { + return false; + } + + Map latlngMap = (Map) argument.get("position"); + String title = (String) argument.get("title"); + String subTitle = (String) argument.get("subtitle"); + + LatLng latLng = FlutterDataConveter.mapToLatlng(latlngMap); + if (null == latLng) { + if (Env.DEBUG) { + Log.d(TAG, "latLng is null"); + } + return false; + } + + MarkerOptions markerOptions = new MarkerOptions(); + + markerOptions.position(latLng); + + setScreenLockPoint(argument, markerOptions); + + if (!setMarkerOptions(argument, markerOptions, id)) { + return false; + } + + Overlay overlay = mBaiduMap.addOverlay(markerOptions); + + Bundle bundle = new Bundle(); + bundle.putString("id", id); + + overlay.setExtraInfo(bundle); + + mOverlayMap.put(id, overlay); + + return true; + } + + private boolean setScreenLockPoint(Map argumentMap, + MarkerOptions markerOptions) { + if (null == argumentMap || null == markerOptions) { + return false; + } + + Boolean isLockedToScreen = + new TypeConverter().getValue(argumentMap, "isLockedToScreen"); + if (null == isLockedToScreen || false == isLockedToScreen) { + return false; + } + + Map screenPointToLockMap = + new TypeConverter>().getValue(argumentMap, "screenPointToLock"); + if (null == screenPointToLockMap + || !screenPointToLockMap.containsKey("x") + || !screenPointToLockMap.containsKey("y")) { + return false; + } + + Double x = new TypeConverter().getValue(screenPointToLockMap, "x"); + Double y = new TypeConverter().getValue(screenPointToLockMap, "y"); + if (null == x || null == y) { + return false; + } + + Point point = new Point(x.intValue(), y.intValue()); + + markerOptions.fixedScreenPosition(point); + return true; + } + + /// Add Begin + /* + http://blog.csdn.net/alex_zhuang/article/details/7340901 + 对以下错误: + Java.lang.RuntimeException: java.lang.IllegalArgumentException: File /data/data/com.alex.datasave/files/user.txt contains a path separator + + 原先代码: + fis = this.context.openFileInput("/data/data/com.alex.datasave/files/user.txt"); + + // 正确代码: + File file = new File("/data/data/com.alex.datasave/files/user.txt"); + fis = new FileInputStream(file); // 注意: 1.FileInputStream 与 openFileInput + */ + + public BitmapDescriptor my_fromFile(String var0) { +// System.out.println("my_fromFile var0 = " + var0); + if (var0 != null && !var0.equals("")) { + Context var1 = BMapManager.getContext(); + if (null == var1) { + return null; + } else { + try { +// FileInputStream var2 = var1.openFileInput(var0); +// System.out.print("my_fromFile : var0 = %s, var1 = %s", var0, var1); +// System.out.println("my_fromFile in var0 = " + var0); +// System.out.println("my_fromFile in var1 = " + var1); + // 正确代码: + File file = new File(var0); + FileInputStream var2 = new FileInputStream(file); // 注意: 1.FileInputStream 与 openFileInput + + Bitmap var3 = BitmapFactory.decodeStream(var2); + var2.close(); + if (var3 != null) { + BitmapDescriptor var4 = BitmapDescriptorFactory.fromBitmap(var3); + var3.recycle(); + return var4; + } + } catch (FileNotFoundException var5) { + Log.e("my_fromFile", "FileNotFoundException happened", var5); + } catch (IOException var6) { + Log.e("my_fromFile", "IOException happened", var6); + } + + return null; + } + } else { + return null; + } + } + /// Add End + + /** + * 解析并设置markertions里的信息 + * + * @return + */ + private boolean setMarkerOptions(Map markerOptionsMap, + MarkerOptions markerOptions, String id) { + + //icon是必须的 + String icon = new TypeConverter().getValue(markerOptionsMap, "icon"); + if (TextUtils.isEmpty(icon)) { + return false; + } + + /// Add Begin + BitmapDescriptor bitmapDescriptor; +// System.out.println("my log:" + icon.substring(0, 1)); + if (icon.substring(0, 1).equals("/")) { +// System.out.println("my log in"); + // bitmapDescriptor = BitmapDescriptorFactory.fromAsset("flutter_assets/" + icon); + bitmapDescriptor = my_fromFile(icon); + } else { + bitmapDescriptor = BitmapDescriptorFactory.fromAsset("flutter_assets/" + icon); + } + /// Add End + +// BitmapDescriptor bitmapDescriptor = +// BitmapDescriptorFactory.fromAsset("flutter_assets/" + icon); + if (null == bitmapDescriptor) { + return false; + } + + markerOptions.icon(bitmapDescriptor); + mMarkerBitmapMap.put(id, bitmapDescriptor); + + //centerOffset + Map centerOffset = + new TypeConverter>().getValue(markerOptionsMap, "centerOffset"); + if (null != centerOffset) { + Double y = new TypeConverter().getValue(centerOffset, "y"); + if (null != y) { + markerOptions.yOffset(y.intValue()); + } + } + + Boolean enable = new TypeConverter().getValue(markerOptionsMap, "enabled"); + if (markerOptionsMap.containsKey("enabled")) { + if (Env.DEBUG) { + Log.d(TAG, "enbale" + enable); + } + markerOptions.clickable(enable); + } + + Boolean draggable = new TypeConverter().getValue(markerOptionsMap, "draggable"); + if (null != draggable) { + markerOptions.draggable(draggable); + } + + Integer zIndex = new TypeConverter().getValue(markerOptionsMap, "zIndex"); + if (null != zIndex) { + markerOptions.zIndex(zIndex); + } + + Boolean visible = new TypeConverter().getValue(markerOptionsMap, "visible"); + if (null != visible) { + markerOptions.visible(visible); + } + + Double scaleX = new TypeConverter().getValue(markerOptionsMap, "scaleX"); + if (null != scaleX) { + markerOptions.scaleX(scaleX.floatValue()); + } + + Double scaleY = new TypeConverter().getValue(markerOptionsMap, "scaleY"); + if (null != scaleY) { + markerOptions.scaleX(scaleY.floatValue()); + } + + Double alpha = new TypeConverter().getValue(markerOptionsMap, "alpha"); + if (null != alpha) { + markerOptions.alpha(alpha.floatValue()); + } + + Boolean isPerspective = new TypeConverter().getValue(markerOptionsMap, "isPerspective"); + if (null != isPerspective) { + markerOptions.perspective(isPerspective); + } + + return true; + } + + private boolean addMarkers(MethodCall call) { + + if (Env.DEBUG) { + Log.d(TAG, "addMarkers enter"); + } + if (null == call) { + return false; + } + + List arguments = call.arguments(); + if (null == arguments) { + return false; + } + + Iterator itr = arguments.iterator(); + while (itr.hasNext()) { + Map argument = (Map) itr.next(); + addMarkerImp(argument); + + } + return true; + } + + private boolean removeMarker(MethodCall call) { + Map argument = call.arguments(); + if (null == argument) { + return false; + } + + removeMarkerImp(argument); + return true; + } + + private boolean removeMarkerImp(Map argument) { + String id = new TypeConverter().getValue(argument, "id"); + Overlay overlay = mOverlayMap.get(id); + BitmapDescriptor bitmapDescriptor = mMarkerBitmapMap.get(id); + + boolean ret = true; + if (null != overlay) { + overlay.remove(); + mOverlayMap.remove(id); + } else { + ret = false; + } + + if (null != bitmapDescriptor) { + bitmapDescriptor.recycle(); + mMarkerBitmapMap.remove(id); + } else { + ret = false; + } + + return ret; + } + + private boolean removeMarkers(MethodCall call) { + List markersList = call.arguments(); + if (null == markersList) { + return false; + } + + Iterator itr = markersList.iterator(); + while (itr.hasNext()) { + Map marker = (Map) itr.next(); + if (null != marker) { + removeMarkerImp(marker); + } + + } + + return true; + } + + private boolean selectMarker(MethodCall call) { + return true; + } + + private boolean deSelectMarker(MethodCall call) { + return true; + } + + private boolean cleanAllMarker(MethodCall call) { + mBaiduMap.clear(); + this.clean(); + return true; + } + + /** + * 更新marker属性 + * + * @param call + * @param result + * @return + */ + private boolean updateMarkerMember(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument) { + return false; + } + + String id = new TypeConverter().getValue(argument, "id"); + if (TextUtils.isEmpty(id)) { + return false; + } + + if (!mMarkerBitmapMap.containsKey(id)) { + return false; + } + + Marker marker = (Marker) mOverlayMap.get(id); + if (null == marker) { + return false; + } + + String member = new TypeConverter().getValue(argument, "member"); + if (TextUtils.isEmpty(member)) { + return false; + } + + Object value = argument.get("value"); + if (null == value) { + return false; + } + + boolean ret = false; + switch (member) { + case "title": + String titile = (String) value; + if (!TextUtils.isEmpty(titile)) { + marker.setTitle(titile); + ret = true; + } + break; + case "position": + Map position = (Map) value; + LatLng latLng = FlutterDataConveter.mapToLatlng(position); + if (null != latLng) { + marker.setPosition(latLng); + ret = true; + } + break; + case "isLockedToScreen": + Boolean isLockedToScreen = (Boolean) value; + if (null != isLockedToScreen && isLockedToScreen) { + + + Map pointMap = + new TypeConverter>().getValue(argument, + "screenPointToLock"); + + Point point = FlutterDataConveter.mapToPoint(pointMap); + if (null != point) { + marker.setFixedScreenPosition(point); + ret = true; + } + } + break; + case "icon": + String icon = (String) value; + BitmapDescriptor bitmapDescriptor = mMarkerBitmapMap.get(id); + + if (null != bitmapDescriptor) { + bitmapDescriptor.recycle(); + } + + bitmapDescriptor = BitmapDescriptorFactory.fromAsset("flutter_assets/" + icon); + + if (null != bitmapDescriptor) { + marker.setIcon(bitmapDescriptor); + mMarkerBitmapMap.put(id, bitmapDescriptor); + ret = true; + } + break; + case "centerOffset": + Map centerOffset = (Map) value; + if (null != centerOffset) { + Double y = new TypeConverter().getValue(centerOffset, "y"); + if (null != y) { + marker.setYOffset(y.intValue()); + ret = true; + } + } + break; + case "enabled": + Boolean enabled = (Boolean) value; + if (null != enabled) { + marker.setClickable(enabled); + ret = true; + } + break; + case "draggable": + Boolean draggable = (Boolean) value; + if (null != draggable) { + marker.setDraggable(draggable); + ret = true; + } + break; + case "visible": + Boolean visible = (Boolean) value; + if (null != visible) { + marker.setVisible(visible); + ret = true; + } + break; + case "zIndex": + Integer zIndex = (Integer) value; + if (null != zIndex) { + marker.setZIndex(zIndex); + ret = true; + } + break; + case "scaleX": + Double scaleX = (Double) value; + if (null != scaleX) { + marker.setScaleX(scaleX.floatValue()); + ret = true; + } + break; + case "scaleY": + Double scaleY = (Double) value; + if (null != scaleY) { + marker.setScaleY(scaleY.floatValue()); + ret = true; + } + break; + case "alpha": + Double alpha = (Double) value; + if (null != alpha) { + marker.setAlpha(alpha.floatValue()); + ret = true; + } + break; + case "isPerspective": + Boolean isPerspective = (Boolean) value; + if (null != isPerspective) { + marker.setPerspective(isPerspective); + ret = true; + } + break; + default: + break; + } + + return ret; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/ProjectionHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/ProjectionHandler.java new file mode 100644 index 0000000..a26de40 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/ProjectionHandler.java @@ -0,0 +1,212 @@ +package com.baidu.flutter_bmfmap.map.mapHandler; + +import android.content.Context; +import android.graphics.Point; +import android.text.TextUtils; +import android.util.Log; + +import com.baidu.flutter_bmfmap.map.FlutterCommonMapView; +import com.baidu.flutter_bmfmap.utils.Constants; +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.flutter_bmfmap.utils.converter.FlutterDataConveter; +import com.baidu.mapapi.map.Projection; +import com.baidu.mapapi.model.LatLng; + +import java.util.HashMap; +import java.util.Map; + +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +import static com.baidu.flutter_bmfmap.utils.Constants.ErrorCode; + +class ProjectionHandler extends BMapHandler { + + private static final String TAG = "ProjectionHandler"; + private Projection mProjection = null; + + public ProjectionHandler(FlutterCommonMapView mapView) { + super(mapView); + if(null != mapView && null != mapView.getBaiduMap()){ + mProjection = mapView.getBaiduMap().getProjection(); + } + } + + + @Override + public void handlerMethodCallResult(Context context, MethodCall call, MethodChannel.Result result){ + if(Env.DEBUG){ + Log.d(TAG, "handlerMethodCallResult"); + } + if (null == call) { + result.success(null); + return; + } + + String methodId = call.method; + if (TextUtils.isEmpty(methodId)) { + if(Env.DEBUG){ + Log.d(TAG, "methodId is null"); + } + result.success(null); + return; + } + + switch (methodId) { + case Constants.MethodProtocol.ProjectionMethodId.sFromScreenLocation: + fromScreenLocation(call, result); + break; + case Constants.MethodProtocol.ProjectionMethodId.sToScreenLocation: + toScreenLocation(call, result); + break; + default: + break; + } + } + + /** + * 将屏幕坐标转换成地理坐标 + * + * @param call + * @param result + * @return 地理坐标 + */ + public boolean fromScreenLocation(MethodCall call, MethodChannel.Result result) { + if(Env.DEBUG){ + Log.d(TAG, "fromScreenLocation enter"); + } + Map argument = call.arguments(); + if(null == argument){ + if(Env.DEBUG){ + Log.d(TAG, "argument is null"); + } + + result.error(String.valueOf(ErrorCode.sErrorNullFlutterParam) + , "MethodCall arguments is null" + ,null); + return false; + } + + Map pointMap = (Map )argument.get("point"); + + Point point = FlutterDataConveter.mapToPoint(pointMap); + + if(null == point){ + result.error(String.valueOf(ErrorCode.sErrorParamConvertFailed) + , "conver pointMap failed" + ,null); + if(Env.DEBUG){ + Log.d(TAG, "conver pointMap failed"); + } + return false; + } + + + LatLng latLng = mProjection.fromScreenLocation(point); + + if(null == latLng){ + result.error(String.valueOf(ErrorCode.sErrorEngineError) + , "引擎调用失败" + ,null); + if(Env.DEBUG){ + Log.d(TAG, "fromScreenLocation failed"); + } + return false; + } + + + final Map resultMap = FlutterDataConveter.latLngToMap(latLng); + + if(Env.DEBUG){ + Log.d(TAG, "handlerMethodCallResult success"); + } + + result.success(new HashMap(){ + { + put("coordinate",resultMap); + } + }); + + return true; + } + + /** + * 将地理坐标转换成屏幕坐标 + * + * @return 屏幕坐标 + */ + public boolean toScreenLocation(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if(null == argument){ + if(Env.DEBUG){ + Log.d(TAG, "argument is null"); + } + + result.error(String.valueOf(ErrorCode.sErrorNullFlutterParam) + , "MethodCall arguments is null" + ,null); + return false; + } + + Map coordinateMap = (Map )argument.get("coordinate"); + + LatLng latLng = FlutterDataConveter.mapToLatlng(coordinateMap); + if(null == latLng){ + result.error(String.valueOf(ErrorCode.sErrorParamConvertFailed) + , "MethodCall arguments is null" + ,null); + if(Env.DEBUG){ + Log.d(TAG, "null == latLng"); + } + return false; + } + + Point point = mProjection.toScreenLocation(latLng); + if(null == point){ + result.error(String.valueOf(ErrorCode.sErrorEngineError) + , "MethodCall arguments is null" + ,null); + if(Env.DEBUG){ + Log.d(TAG, "null == point"); + } + return false; + } + + final Map pointMap = FlutterDataConveter.pointToMap(point); + + if(Env.DEBUG){ + Log.d(TAG, "toScreenLocation success"); + } + + + result.success(new HashMap(){ + { + put("point",pointMap); + } + }); + + return true; + } + +// /** +// * 该方法把以米为计量单位的距离(沿赤道)在当前缩放水平下转换到一个以像素(水平)为计量单位的距离。 在默认的Mercator投影变换下,对于给定的距离,当远离赤道时,变换后确切的像素数量会增加。 +// * +// * @param meters 以米为单位的距离 +// * @return 相对给定距离的像素数量。在当前的缩放水平,如果沿赤道测量,返回值可能是个近似值 +// */ +// public float metersToEquatorPixels(MethodCall call, MethodChannel.Result result) { +// if (meters <= 0) { +// return 0; +// } +// +// return (float) (meters / (mBaseMap.getZoomUnitsInMeter())); +// } + + public void updateMapView(FlutterCommonMapView mapView){ + mMapView = mapView; + if(null != mapView && null != mapView.getBaiduMap()){ + mProjection = mapView.getBaiduMap().getProjection(); + } + } + +} \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/TileMapHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/TileMapHandler.java new file mode 100644 index 0000000..3950d5d --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/mapHandler/TileMapHandler.java @@ -0,0 +1,378 @@ +package com.baidu.flutter_bmfmap.map.mapHandler; + +import android.content.Context; +import android.content.res.AssetManager; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.text.TextUtils; +import android.util.Log; + +import com.baidu.flutter_bmfmap.map.FlutterCommonMapView; +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.flutter_bmfmap.utils.IOStreamUtils; +import com.baidu.flutter_bmfmap.utils.converter.TypeConverter; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.FileTileProvider; +import com.baidu.mapapi.map.Projection; +import com.baidu.mapapi.map.Tile; +import com.baidu.mapapi.map.TileOverlay; +import com.baidu.mapapi.map.TileOverlayOptions; +import com.baidu.mapapi.map.TileProvider; +import com.baidu.mapapi.map.UrlTileProvider; + +import java.io.InputStream; +import java.nio.ByteBuffer; +import java.util.HashMap; +import java.util.Map; + +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.TileMapProtocol; +import com.baidu.mapapi.model.LatLng; +import com.baidu.mapapi.model.LatLngBounds; + + +class TileMapHandler extends BMapHandler { + + private Tile mOfflineTile; + // 设置瓦片图的在线缓存大小,默认为20 M + private static final int TILE_TMP = 20 * 1024 * 1024; + private static final int MAX_LEVEL = 21; + private static final int MIN_LEVEL = 4; + + private int mMaxLevel = MAX_LEVEL; + private int mMinLevel = MIN_LEVEL; + private int mTileTmp = TILE_TMP; + private String mUrlString; + + private Projection mProjection; + + private BaiduMap mBaiduMap; + + private HashMap mTileOverlayMap = new HashMap<>(); + + public static class TileType{ + public static final int URL_TILE_PROVIDER = 0; + public static final int FILE_TILE_PROVIDER_ASYNC = 1; + public static final int FILE_TILE_PROVIDER_SYNC = 2; + } + + private static final String TAG = "TileMapHandler"; + + public TileMapHandler(FlutterCommonMapView mapView) { + super(mapView); + if(null != mapView){ + mBaiduMap = mapView.getBaiduMap(); + if(null != mBaiduMap){ + mProjection = mBaiduMap.getProjection(); + } + } + } + + @Override + public void updateMapView(FlutterCommonMapView mapView){ + mMapView = mapView; + if(null != mMapView){ + mBaiduMap = mMapView.getBaiduMap(); + if(null != mBaiduMap){ + mProjection = mBaiduMap.getProjection(); + } + } + } + + @Override + public void handlerMethodCallResult(Context context, MethodCall call, MethodChannel.Result result) { + if(Env.DEBUG){ + Log.d(TAG, "handlerMethodCallResult enter"); + } + String methodID = call.method; + switch (methodID){ + case TileMapProtocol.sAddTileMapMethod: + addTile(context, call, result); + break; + case TileMapProtocol.sRemoveTileMapMethod: + removeTile(context, call, result); + break; + default: + break; + } + } + + private void addTile(Context context, MethodCall call, MethodChannel.Result result){ + if(Env.DEBUG){ + Log.d(TAG, "addTile enter"); + } + if(null == mProjection || null == mBaiduMap){ + if(Env.DEBUG){ + Log.d(TAG, "null == mProjection || null == mBaiduMap"); + } + result.success(false); + return; + } + + Map argument = call.arguments(); + if(null == argument){ + if(Env.DEBUG){ + Log.d(TAG, "argument is null"); + } + result.success(false); + return; + } + + TileOverlayOptions tileOverlayOptions = new TileOverlayOptions(); + + String id = new TypeConverter().getValue(argument, "id"); + if(null == id){ + result.success(false); + return; + } + + Integer maxZoom = new TypeConverter().getValue(argument, "maxZoom"); + if(null != maxZoom){ + mMaxLevel = maxZoom.intValue(); + if(Env.DEBUG) { + Log.d(TAG, "maxZoom:" + maxZoom); + } + } + + + Integer minZoom = new TypeConverter().getValue(argument, "minZoom"); + if(null != maxZoom){ + mMinLevel = minZoom.intValue(); + if(Env.DEBUG) { + Log.d(TAG, "minZoom:" + minZoom); + } + } + + Integer maxTileTmp = new TypeConverter().getValue(argument, "maxTileTmp"); + if(null != maxTileTmp){ + mTileTmp = maxTileTmp.intValue(); + } + + Map visibleMapBounds = new TypeConverter>().getValue(argument, + "visibleMapBounds"); + if(null == visibleMapBounds){ + if(Env.DEBUG){ + Log.d(TAG, "null == visibleMapBounds"); + } + return; + } + + LatLngBounds latLngBounds = visibleMapBoundsImp(visibleMapBounds); + if (null == latLngBounds) { + if(Env.DEBUG){ + Log.d(TAG, "null == latLngBounds"); + } + return; + } + tileOverlayOptions.setPositionFromBounds(latLngBounds); + + TileProvider tileProvider = getTileProvider(context, argument); + if(null == tileProvider){ + if(Env.DEBUG){ + Log.d(TAG, "null == tileProvider"); + } + result.success(false); + return; + } + + tileOverlayOptions.tileProvider(tileProvider); + + if(Env.DEBUG){ + Log.d(TAG, "addTile success"); + } + TileOverlay tileOverlay = mBaiduMap.addTileLayer(tileOverlayOptions); + mTileOverlayMap.put(id, tileOverlay); + result.success(true); + } + + private LatLngBounds visibleMapBoundsImp(Map visibleMapBounds) { + if (!visibleMapBounds.containsKey("northeast") || !visibleMapBounds.containsKey("southwest")) { + return null; + } + HashMap northeast = (HashMap) visibleMapBounds.get("northeast"); + HashMap southwest = (HashMap) visibleMapBounds.get("southwest"); + if (null == northeast || null == southwest) { + return null; + } + if (!northeast.containsKey("latitude") || !northeast.containsKey("longitude") + || !southwest.containsKey("latitude") || !southwest.containsKey("longitude")) { + return null; + } + + Double northeastLatitude = northeast.get("latitude"); + Double northeastLongitude = northeast.get("longitude"); + Double southwestLatitude = southwest.get("latitude"); + Double southwestLongitude = southwest.get("longitude"); + + if (null == northeastLatitude || null == northeastLongitude + || null == southwestLatitude || null == southwestLongitude) { + return null; + } + + LatLng northeastLatLng = new LatLng(northeastLatitude, northeastLongitude); + LatLng southwestLatLng = new LatLng(southwestLatitude, southwestLongitude); + LatLngBounds.Builder builder = new LatLngBounds.Builder(); + builder.include(northeastLatLng); + builder.include(southwestLatLng); + + return builder.build(); + } + + private TileProvider getTileProvider(Context context, Map tileProviderMap){ + Integer tileType = new TypeConverter().getValue(tileProviderMap, "tileLoadType"); + if(null == tileType){ + return null; + } + + TileProvider tileProvider = null; + switch (tileType){ + case TileType.FILE_TILE_PROVIDER_ASYNC: + case TileType.FILE_TILE_PROVIDER_SYNC: + tileProvider = getFileTileProvider(context); + break; + case TileType.URL_TILE_PROVIDER: + tileProvider = getUrlTileProvider(context, tileProviderMap); + break; + default: + break; + } + return tileProvider; + } + + private TileProvider getFileTileProvider(final Context context){ + TileProvider tileProvider = new FileTileProvider() { + @Override + public Tile getTile(int x, int y, int z) { + // 根据地图某一状态下x、y、z加载指定的瓦片图 + String filedir = "flutter_assets/resoures/bmflocaltileimage/" + z + "/" + z + "_" + x + "_" + y + ".jpg"; +// FlutterMain.getLookupKeyForAsset(); + Bitmap bm = getFromAssets(context, filedir); + if (bm == null) { + return null; + } + // 瓦片图尺寸必须满足256 * 256 + mOfflineTile = new Tile(bm.getWidth(), bm.getHeight(), toRawData(bm)); + bm.recycle(); + return mOfflineTile; + } + + @Override + public int getMaxDisLevel() { + return 0; + } + + @Override + public int getMinDisLevel() { + return 0; + } + }; + + return tileProvider; + } + + private TileProvider getUrlTileProvider(Context context, Map tileProviderMap){ + TileProvider tileProvider = null; + if(tileProviderMap.containsKey("url")){ + Object urlObj = tileProviderMap.get("url"); + if(null != urlObj){ + mUrlString = (String)urlObj; + /*定义瓦片图的在线Provider,并实现相关接口 + MAX_LEVEL、MIN_LEVEL 表示地图显示瓦片图的最大、最小级别 + urlString 表示在线瓦片图的URL地址*/ + tileProvider = new UrlTileProvider() { + @Override + public int getMaxDisLevel() { + return mMaxLevel; + } + + @Override + public int getMinDisLevel() { + return mMinLevel; + } + + @Override + public String getTileUrl() { + return mUrlString; + } + }; + } + } + + return tileProvider; + } + + /** + * 瓦片文件解析为Bitmap + * + * @param fileName + * @return 瓦片文件的Bitmap + */ + public Bitmap getFromAssets(Context context, String fileName) { + AssetManager assetManager = context.getAssets(); + InputStream inputStream = null; + Bitmap bitmap; + + try { + if(Env.DEBUG){ + Log.d(TAG, fileName); + } + + inputStream = assetManager.open(fileName); + + bitmap = BitmapFactory.decodeStream(inputStream); + return bitmap; + } catch (Exception e) { + e.printStackTrace(); + return null; + } finally { + IOStreamUtils.closeSilently(inputStream); + } + } + + /** + * 解析Bitmap + * + * @param bitmap + * @return + */ + byte[] toRawData(Bitmap bitmap) { + ByteBuffer buffer = ByteBuffer.allocate(bitmap.getWidth() * bitmap.getHeight() * 4); + bitmap.copyPixelsToBuffer(buffer); + byte[] data = buffer.array(); + buffer.clear(); + return data; + } + + private void removeTile(Context context, MethodCall call, MethodChannel.Result result){ + if(Env.DEBUG){ + Log.d(TAG, "removeTile enter"); + } + Map argument = call.arguments(); + if(null == argument){ + if(Env.DEBUG){ + Log.d(TAG, "argument is null"); + } + result.success(false); + return; + } + + String id = new TypeConverter().getValue(argument, "id"); + if(TextUtils.isEmpty(id)){ + result.success(false); + return; + } + + TileOverlay tileOverlay = mTileOverlayMap.get(id); + if(null != tileOverlay){ + if(Env.DEBUG){ + Log.d(TAG, "remove tile success"); + } + tileOverlay.removeTileOverlay(); + result.success(true); + }else { + result.success(false); + } + } +} \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/ArcLineHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/ArcLineHandler.java new file mode 100644 index 0000000..34c9381 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/ArcLineHandler.java @@ -0,0 +1,102 @@ +package com.baidu.flutter_bmfmap.map.overlayHandler; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.flutter_bmfmap.utils.converter.FlutterDataConveter; +import com.baidu.mapapi.map.ArcOptions; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.Overlay; +import com.baidu.mapapi.model.LatLng; + +import android.text.TextUtils; +import android.util.Log; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +public class ArcLineHandler extends OverlayHandler { + private static final String TAG = "ArcLineHandler"; + + public ArcLineHandler(BaiduMap baiduMap) { + super(baiduMap); + } + + @Override + public Map handlerMethodCall(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument) { + return null; + } + + if (!argument.containsKey("id") + || !argument.containsKey("coordinates")) { + if (Env.DEBUG) { + Log.d(TAG, "argument does not contain"); + } + return null; + } + + ArcOptions arcOptions = new ArcOptions(); + + final String id = (String) argument.get("id"); + if (TextUtils.isEmpty(id)) { + return null; + } + List> coordinates = + (List>) argument.get("coordinates"); + + if (coordinates.size() < 3) { + if (Env.DEBUG) { + Log.d(TAG, "atlngs.size() < 3"); + } + return null; + } + + LatLng latLngStart = FlutterDataConveter.mapToLatlng(coordinates.get(0)); + LatLng latLngMiddle = FlutterDataConveter.mapToLatlng(coordinates.get(1)); + LatLng latLngEnd = FlutterDataConveter.mapToLatlng(coordinates.get(2)); + + if (null == latLngStart + || null == latLngMiddle + || null == latLngEnd) { + if (Env.DEBUG) { + Log.d(TAG, "null == latLngStart\n" + + " || null == latLngMiddle\n" + + " || null == latLngEnd"); + } + return null; + } + + arcOptions.points(latLngStart, latLngMiddle, latLngEnd); + + if (argument.containsKey("width")) { + int width = (Integer) argument.get("width"); + arcOptions.width(width); + } + + if (argument.containsKey("color")) { + String strokeColorStr = (String) argument.get("color"); + int strokeColor = FlutterDataConveter.strColorToInteger(strokeColorStr); + arcOptions.color(strokeColor); + } + + if (argument.containsKey("zIndex")) { + int zIndex = (Integer) argument.get("zIndex"); + arcOptions.zIndex(zIndex); + } + + if (argument.containsKey("visible")) { + boolean visible = (Boolean) argument.get("visible"); + arcOptions.visible(visible); + } + + final Overlay overlay = mBaiduMap.addOverlay(arcOptions); + return new HashMap() { + { + put(id, overlay); + } + }; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/CircleHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/CircleHandler.java new file mode 100644 index 0000000..4d48df7 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/CircleHandler.java @@ -0,0 +1,130 @@ +package com.baidu.flutter_bmfmap.map.overlayHandler; + +import java.util.HashMap; +import java.util.Map; + +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.flutter_bmfmap.utils.converter.FlutterDataConveter; +import com.baidu.flutter_bmfmap.utils.converter.TypeConverter; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.CircleDottedStrokeType; +import com.baidu.mapapi.map.CircleOptions; +import com.baidu.mapapi.map.Overlay; +import com.baidu.mapapi.map.Stroke; +import com.baidu.mapapi.model.LatLng; + +import android.text.TextUtils; +import android.util.Log; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +public class CircleHandler extends OverlayHandler { + + private static final String TAG = "CircleHandler"; + + public CircleHandler(BaiduMap baiduMap) { + super(baiduMap); + } + + @Override + public Map handlerMethodCall(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument) { + if (Env.DEBUG) { + Log.d(TAG, "argument is null"); + } + return null; + } + + if (!argument.containsKey("id") + || !argument.containsKey("center") + || !argument.containsKey("radius")) { + if (Env.DEBUG) { + Log.d(TAG, "argument does not contain"); + } + return null; + } + + CircleOptions circleOptions = new CircleOptions(); + + final String id = new TypeConverter().getValue(argument, "id"); + if (TextUtils.isEmpty(id)) { + return null; + } + + Map centerMap = (Map) argument.get("center"); + LatLng center = FlutterDataConveter.mapToLatlng(centerMap); + if (null != center) { + circleOptions.center(center); + } + + double radius = (Double) argument.get("radius"); + circleOptions.radius((int) radius); + + + if (argument.containsKey("width") && argument.containsKey("strokeColor")) { + int width = (Integer) argument.get("width"); + String strokeColorStr = (String) argument.get("strokeColor"); + if (!TextUtils.isEmpty(strokeColorStr)) { + int strokeColor = FlutterDataConveter.strColorToInteger(strokeColorStr); + Stroke stroke = new Stroke(width, strokeColor); + circleOptions.stroke(stroke); + } + + } + + if (argument.containsKey("fillColor")) { + String fillColorStr = (String) argument.get("fillColor"); + int fillColor = FlutterDataConveter.strColorToInteger(fillColorStr); + circleOptions.fillColor(fillColor); + } + + if (argument.containsKey("zIndex")) { + int zIndex = (Integer) argument.get("zIndex"); + circleOptions.zIndex(zIndex); + } + + if (argument.containsKey("visible")) { + boolean visible = (Boolean) argument.get("visible"); + circleOptions.visible(visible); + } + + setLineDashType(argument, circleOptions); + + final Overlay overlay = mBaiduMap.addOverlay(circleOptions); + return new HashMap() { + { + put(id, overlay); + } + }; + } + + private void setLineDashType(Map circleOptionsMap, + CircleOptions circleOptions) { + if (null == circleOptionsMap || null == circleOptions) { + return; + } + + Integer lineDashType = + new TypeConverter().getValue(circleOptionsMap, "lineDashType"); + if (null == lineDashType) { + return; + } + + switch (lineDashType) { + case OverlayCommon.LineDashType.sLineDashTypeNone: + circleOptions.dottedStroke(false); + break; + case OverlayCommon.LineDashType.sLineDashTypeSquare: + circleOptions.dottedStroke(true); + circleOptions.dottedStrokeType(CircleDottedStrokeType.DOTTED_LINE_SQUARE); + break; + case OverlayCommon.LineDashType.sLineDashTypeDot: + circleOptions.dottedStroke(true); + circleOptions.dottedStrokeType(CircleDottedStrokeType.DOTTED_LINE_CIRCLE); + break; + default: + break; + } + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/DotHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/DotHandler.java new file mode 100644 index 0000000..7548806 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/DotHandler.java @@ -0,0 +1,99 @@ +package com.baidu.flutter_bmfmap.map.overlayHandler; + +import java.util.HashMap; +import java.util.Map; + +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.flutter_bmfmap.utils.converter.FlutterDataConveter; +import com.baidu.flutter_bmfmap.utils.converter.TypeConverter; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.DotOptions; +import com.baidu.mapapi.map.Overlay; +import com.baidu.mapapi.model.LatLng; + +import android.text.TextUtils; +import android.util.Log; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +public class DotHandler extends OverlayHandler { + + public static final String TAG = "DotHandler"; + + public DotHandler(BaiduMap baiduMap) { + super(baiduMap); + } + + @Override + public Map handlerMethodCall(MethodCall call, MethodChannel.Result result) { + Map argument = call.arguments(); + if (null == argument) { + if (Env.DEBUG) { + Log.d(TAG, "argument is null"); + } + return null; + } + + if (!argument.containsKey("id")) { + if (Env.DEBUG) { + Log.d(TAG, "argument does not contain" + argument.toString()); + + } + return null; + } + + final String id = new TypeConverter().getValue(argument, "id"); + if (TextUtils.isEmpty(id)) { + return null; + } + + DotOptions dotOptions = new DotOptions(); + + Map centerMap = + new TypeConverter>().getValue(argument, "center"); + LatLng center = FlutterDataConveter.mapToLatlng(centerMap); + if (null == center) { + if (Env.DEBUG) { + Log.d(TAG, "center is null"); + } + return null; + } + dotOptions.center(center); + + Double radius = new TypeConverter().getValue(argument, "radius"); + if (null == radius) { + if (Env.DEBUG) { + Log.d(TAG, "radius is null"); + } + return null; + } + dotOptions.radius(radius.intValue()); + + String colorStr = new TypeConverter().getValue(argument, "color"); + if (TextUtils.isEmpty(colorStr)) { + if (Env.DEBUG) { + Log.d(TAG, "colorStr is null"); + } + return null; + } + int color = FlutterDataConveter.strColorToInteger(colorStr); + dotOptions.color(color); + + Integer zIndex = new TypeConverter().getValue(argument, "zIndex"); + if (null != zIndex) { + dotOptions.zIndex(zIndex); + } + + Boolean visible = new TypeConverter().getValue(argument, "visible"); + if (null != visible) { + dotOptions.visible(visible); + } + + final Overlay overlay = mBaiduMap.addOverlay(dotOptions); + return new HashMap() { + { + put(id, overlay); + } + }; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/GroundHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/GroundHandler.java new file mode 100644 index 0000000..a507bd9 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/GroundHandler.java @@ -0,0 +1,177 @@ +package com.baidu.flutter_bmfmap.map.overlayHandler; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.flutter_bmfmap.utils.converter.FlutterDataConveter; +import com.baidu.flutter_bmfmap.utils.converter.TypeConverter; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.BitmapDescriptor; +import com.baidu.mapapi.map.BitmapDescriptorFactory; +import com.baidu.mapapi.map.GroundOverlay; +import com.baidu.mapapi.map.GroundOverlayOptions; +import com.baidu.mapapi.map.Overlay; +import com.baidu.mapapi.model.LatLng; +import com.baidu.mapapi.model.LatLngBounds; + +import android.text.TextUtils; +import android.util.Log; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +class GroundHandler extends OverlayHandler { + + private static final String TAG = "GroundHandler"; + + private HashMap mBitmapMap = new HashMap<>(); + + public GroundHandler(BaiduMap baiduMap) { + super(baiduMap); + } + + @Override + public Map handlerMethodCall(MethodCall call, MethodChannel.Result result) { + if (Env.DEBUG) { + Log.d(TAG, "handlerMethodCall enter"); + } + Map argument = call.arguments(); + if (null == argument) { + if (Env.DEBUG) { + Log.d(TAG, "argument is null"); + } + return null; + } + + if (!argument.containsKey("id")) { + if (Env.DEBUG) { + Log.d(TAG, "argument does not contain" + argument.toString()); + + } + return null; + } + + final String id = new TypeConverter().getValue(argument, "id"); + if (TextUtils.isEmpty(id)) { + return null; + } + + GroundOverlayOptions groundOverlayOptions = new GroundOverlayOptions(); + + setGroundOptions(id, argument, groundOverlayOptions); + + final Overlay overlay = mBaiduMap.addOverlay(groundOverlayOptions); + + return new HashMap() { + { + put(id, overlay); + } + }; + } + + /** + * + */ + private void setGroundOptions(String id, Map groundOptionsMap, + GroundOverlayOptions groundOverlayOptions) { + if (null == groundOptionsMap) { + return; + } + + String image = new TypeConverter().getValue(groundOptionsMap, "image"); + if (!TextUtils.isEmpty(image)) { + BitmapDescriptor bitmap = BitmapDescriptorFactory.fromAsset("flutter_assets/" + image); + if (null != bitmap) { + if (Env.DEBUG) { + Log.d(TAG, "image"); + + } + groundOverlayOptions.image(bitmap); + mBitmapMap.put(id, bitmap); + } + + } + + Double anchorX = new TypeConverter().getValue(groundOptionsMap, "anchorX"); + Double anchorY = new TypeConverter().getValue(groundOptionsMap, "anchorY"); + if (null != anchorX && null != anchorY) { + groundOverlayOptions.anchor(anchorX.floatValue(), anchorY.floatValue()); + } + + Map centerMap = + new TypeConverter>().getValue(groundOptionsMap, "position"); + if (null != centerMap) { + LatLng center = FlutterDataConveter.mapToLatlng(centerMap); + if (null != center) { + if (Env.DEBUG) { + Log.d(TAG, "position"); + + } + groundOverlayOptions.position(center); + } + } + + Double width = new TypeConverter().getValue(groundOptionsMap, "width"); + Double height = new TypeConverter().getValue(groundOptionsMap, "height"); + if(null != width && null != height){ + groundOverlayOptions.dimensions(width.intValue(), height.intValue()); + } + + Map boundsMap = + new TypeConverter>().getValue(groundOptionsMap, "bounds"); + LatLngBounds latLngBounds = FlutterDataConveter.mapToLatlngBounds(boundsMap); + if (null != latLngBounds) { + if (Env.DEBUG) { + Log.d(TAG, "bounds"); + + } + groundOverlayOptions.positionFromBounds(latLngBounds); + } + + Double transparency = + new TypeConverter().getValue(groundOptionsMap, "transparency"); + if (null != transparency) { + groundOverlayOptions.transparency(transparency.floatValue()); + } + + Integer zIndex = new TypeConverter().getValue(groundOptionsMap, "zIndex"); + if (null != zIndex) { + groundOverlayOptions.zIndex(zIndex); + } + + Boolean visible = new TypeConverter().getValue(groundOptionsMap, "visible"); + if (null != visible) { + groundOverlayOptions.visible(visible); + } + + } + + + public void clean(){ + super.clean(); + Iterator iterator = mBitmapMap.values().iterator(); + BitmapDescriptor bitmapDescriptor; + while (iterator.hasNext()){ + bitmapDescriptor = (BitmapDescriptor)iterator.next(); + if(null != bitmapDescriptor){ + bitmapDescriptor.recycle(); + } + } + + mBitmapMap.clear(); + } + + public void clean(String id) { + if (TextUtils.isEmpty(id)) { + return; + } + + BitmapDescriptor bitmapDescriptor = mBitmapMap.get(id); + if (null != bitmapDescriptor) { + bitmapDescriptor.recycle(); + } + + mBitmapMap.remove(id); + } +} \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/OverlayCommon.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/OverlayCommon.java new file mode 100644 index 0000000..5ea136f --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/OverlayCommon.java @@ -0,0 +1,21 @@ +package com.baidu.flutter_bmfmap.map.overlayHandler; + +public class OverlayCommon{ + + public static class LineDashType{ + /** + * 实折线 + */ + public static final int sLineDashTypeNone = 0; + + /** + * 方块样式 + */ + public static final int sLineDashTypeSquare = 1; + + /** + * 圆点样式 + */ + public static final int sLineDashTypeDot = 2; + } +} \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/OverlayHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/OverlayHandler.java new file mode 100644 index 0000000..d8bebab --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/OverlayHandler.java @@ -0,0 +1,43 @@ +package com.baidu.flutter_bmfmap.map.overlayHandler; + +import java.util.Map; + +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.Overlay; + +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +public abstract class OverlayHandler { + protected BaiduMap mBaiduMap; + + protected Overlay mCurrentOverlay; + + public OverlayHandler(BaiduMap baiduMap) { + this.mBaiduMap = baiduMap; + } + + public abstract Map handlerMethodCall(MethodCall call, + MethodChannel.Result result); + + public void updateBaiduMap(BaiduMap baiduMap) { + mBaiduMap = baiduMap; + } + + public void setCurrentOverlay(Overlay overlay){ + mCurrentOverlay = overlay; + } + + /** + * 清理所有 + */ + public void clean(){} + + /** + * 清理指定id的overlay + * @param id + */ + public void clean(String id) { + + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/OverlayHandlerFactory.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/OverlayHandlerFactory.java new file mode 100644 index 0000000..e6a3d13 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/OverlayHandlerFactory.java @@ -0,0 +1,235 @@ +package com.baidu.flutter_bmfmap.map.overlayHandler; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.ArclineProtocol; +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.CirclelineProtocol; +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.DotProtocol; +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.GroundProtocol; +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.OverlayProtocol; +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.PolygonProtocol; +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.PolylineProtocol; +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.TextProtocol; +import com.baidu.flutter_bmfmap.utils.Constants.OverlayHandlerType; +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.mapapi.map.Arc; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.Circle; +import com.baidu.mapapi.map.Dot; +import com.baidu.mapapi.map.GroundOverlay; +import com.baidu.mapapi.map.Overlay; +import com.baidu.mapapi.map.Polygon; +import com.baidu.mapapi.map.Polyline; +import com.baidu.mapapi.map.Text; + +import android.util.Log; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +public class OverlayHandlerFactory { + private static final String TAG = "OverlayHandlerFactory"; + + private static volatile OverlayHandlerFactory sInstance; + + private HashMap overlayHandlerHashMap; + + private OverlayManagerHandler mOverlayManagerHandler; + + private OverlayHandlerFactory(BaiduMap baiduMap) { + init(baiduMap); + } + + public static OverlayHandlerFactory getInstance(BaiduMap baiduMap) { + + if (null == sInstance) { + synchronized(OverlayHandlerFactory.class) { + if (null == sInstance) { + sInstance = new OverlayHandlerFactory(baiduMap); + } else { + sInstance.updateBaiduMap(baiduMap); + } + } + } else { + sInstance.updateBaiduMap(baiduMap); + } + + return sInstance; + } + + private void updateBaiduMap(BaiduMap baiduMap) { + if (null == baiduMap) { + return; + } + + if(null == overlayHandlerHashMap || overlayHandlerHashMap.isEmpty()){ + init(baiduMap); + } + + Iterator it = overlayHandlerHashMap.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = + (Map.Entry) it.next(); + OverlayHandler overlayHandler = entry.getValue(); + if (null != overlayHandler) { + overlayHandler.updateBaiduMap(baiduMap); + } + } + } + + private void init(BaiduMap baiduMap) { + if (null == baiduMap) { + return; + } + + mOverlayManagerHandler = new OverlayManagerHandler(baiduMap); + overlayHandlerHashMap = new HashMap<>(); + overlayHandlerHashMap.put(OverlayHandlerType.CIRCLE_HANDLER, new CircleHandler(baiduMap)); + overlayHandlerHashMap.put(OverlayHandlerType.DOT_HANDLER, new DotHandler(baiduMap)); + overlayHandlerHashMap.put(OverlayHandlerType.POLYGON_HANDLER, new PolygonHandler(baiduMap)); + overlayHandlerHashMap + .put(OverlayHandlerType.POLYLINE_HANDLER, new PolylineHandler(baiduMap)); + overlayHandlerHashMap.put(OverlayHandlerType.TEXT_HANDLER, new TextHandler(baiduMap)); + overlayHandlerHashMap.put(OverlayHandlerType.ARCLINE_HANDLER, new ArcLineHandler(baiduMap)); + overlayHandlerHashMap.put(OverlayHandlerType.CIRCLE_HANDLER, new CircleHandler(baiduMap)); + overlayHandlerHashMap.put(OverlayHandlerType.GROUND_HANDLER, new GroundHandler(baiduMap)); + } + + public boolean dispatchMethodHandler(MethodCall call, MethodChannel.Result result) { + if (null == call) { + if (Env.DEBUG) { + Log.d(TAG, "dispatchMethodHandler: null == call"); + } + return false; + } + + String methodId = call.method; + Log.d(TAG, "dispatchMethodHandler: " + methodId); + OverlayHandler overlayHandler = null; + Overlay overlay; + int handlerType = -1; + switch (methodId) { + case ArclineProtocol.sMapAddArclinelineMethod: + overlayHandler = overlayHandlerHashMap.get(OverlayHandlerType.ARCLINE_HANDLER); + break; + case PolygonProtocol.sMapAddPolygonMethod: + overlayHandler = overlayHandlerHashMap.get(OverlayHandlerType.POLYGON_HANDLER); + break; + case CirclelineProtocol.sMapAddCirclelineMethod: + overlayHandler = overlayHandlerHashMap.get(OverlayHandlerType.CIRCLE_HANDLER); + break; + case PolylineProtocol.sMapAddPolylineMethod: + overlayHandler = overlayHandlerHashMap.get(OverlayHandlerType.POLYLINE_HANDLER); + break; + case DotProtocol.sMapAddDotMethod: + overlayHandler = overlayHandlerHashMap.get(OverlayHandlerType.DOT_HANDLER); + break; + case TextProtocol.sMapAddTextMethod: + overlayHandler = overlayHandlerHashMap.get(OverlayHandlerType.TEXT_HANDLER); + break; + case GroundProtocol.sMapAddGroundMethod: + overlayHandler = overlayHandlerHashMap.get(OverlayHandlerType.GROUND_HANDLER); + break; + case OverlayProtocol.sMapRemoveOverlayMethod: + OverlayHandler specOverlayHandler = getCurrentOverlayHandler(call); + mOverlayManagerHandler.setCurrentOverlayHandler(specOverlayHandler); + overlayHandler = mOverlayManagerHandler; + break; + case PolylineProtocol.sMapUpdatePolylineMemberMethod: + overlayHandler = getCurrentOverlayHandler(call); + break; + default: + break; + } + + if (null == overlayHandler) { + return false; + } + + Map overlayMap = overlayHandler.handlerMethodCall(call, result); + + if (null == overlayMap) { + return false; + } + + mOverlayManagerHandler.addOverlay(overlayMap); + return true; + } + + private Overlay getCurrentOverlay(MethodCall call) { + Map argument = call.arguments(); + if (null == argument) { + if (Env.DEBUG) { + Log.d(TAG, "argument is null"); + } + + return null; + } + + if (!argument.containsKey("id")) { + return null; + } + + String id = (String) argument.get("id"); + + return mOverlayManagerHandler.getOverlay(id); + } + + private int getHandlerType(Overlay overlay) { + int handlerType = -1; + if (overlay instanceof Polyline) { + handlerType = OverlayHandlerType.POLYLINE_HANDLER; + } else if (overlay instanceof Polygon) { + handlerType = OverlayHandlerType.POLYGON_HANDLER; + } else if (overlay instanceof Arc) { + handlerType = OverlayHandlerType.ARCLINE_HANDLER; + } else if (overlay instanceof Circle) { + handlerType = OverlayHandlerType.CIRCLE_HANDLER; + } else if (overlay instanceof Dot) { + handlerType = OverlayHandlerType.DOT_HANDLER; + } else if (overlay instanceof GroundOverlay) { + handlerType = OverlayHandlerType.GROUND_HANDLER; + } else if (overlay instanceof Text) { + handlerType = OverlayHandlerType.TEXT_HANDLER; + } + + return handlerType; + } + + public void clean(){ + if(null == overlayHandlerHashMap || overlayHandlerHashMap.size() == 0) { + return; + } + + OverlayHandler overlayHandler= null; + Iterator iterator = overlayHandlerHashMap.values().iterator(); + while (iterator.hasNext()){ + overlayHandler = (OverlayHandler) iterator.next(); + if(null == overlayHandler){ + continue; + } + + overlayHandler.clean(); + } + } + + private OverlayHandler getCurrentOverlayHandler(MethodCall call) { + if (null == call) { + return null; + } + + Overlay overlay = getCurrentOverlay(call); + if (null == overlay) { + return null; + } + int handlerType = getHandlerType(overlay); + OverlayHandler overlayHandler = overlayHandlerHashMap.get(handlerType); + if( null != overlayHandler) { + overlayHandler.setCurrentOverlay(overlay); + } + + return overlayHandler; + } + +} \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/OverlayManagerHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/OverlayManagerHandler.java new file mode 100644 index 0000000..2261dbf --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/OverlayManagerHandler.java @@ -0,0 +1,103 @@ +package com.baidu.flutter_bmfmap.map.overlayHandler; + +import java.util.HashMap; +import java.util.Map; + +import com.baidu.flutter_bmfmap.utils.Constants.MethodProtocol.OverlayProtocol; +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.flutter_bmfmap.utils.converter.TypeConverter; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.Overlay; + +import android.text.TextUtils; +import android.util.Log; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +public class OverlayManagerHandler extends OverlayHandler { + private static final String TAG = "OverlayManagerHandler"; + + private HashMap mOverlayMap = new HashMap<>(); + + private OverlayHandler mCurrentOverlayHandler; + + public OverlayManagerHandler(BaiduMap baiduMap) { + super(baiduMap); + } + + @Override + public Map handlerMethodCall(MethodCall call, MethodChannel.Result result) { + if (Env.DEBUG) { + Log.d(TAG, "handlerMethodCall enter"); + //result.success(false); + } + + Map argument = call.arguments(); + if (null == argument) { + if (Env.DEBUG) { + Log.d(TAG, "argument is null"); + } + result.success(false); + return null; + } + + boolean ret = false; + String methodId = call.method; + switch (methodId) { + case OverlayProtocol.sMapRemoveOverlayMethod: + ret = removeOverlay(argument); + break; + default: + break; + } + + result.success(ret); + + return null; + } + + public void addOverlay(Map overlayMap) { + mOverlayMap.putAll(overlayMap); + } + + public Overlay getOverlay(String id) { + return mOverlayMap.get(id); + } + + public void setCurrentOverlayHandler(OverlayHandler overlayHandler) { + mCurrentOverlayHandler = overlayHandler; + } + + /** + * 移除overlay + * + * @param argument + * @return + */ + private boolean removeOverlay(Map argument) { + String id = new TypeConverter().getValue(argument, "id"); + if (TextUtils.isEmpty(id)) { + return false; + } + + Overlay overlay = mOverlayMap.get(id); + if (null == overlay) { + if (Env.DEBUG) { + Log.d(TAG, "not found overlay with id:" + id); + } + return false; + } + + overlay.remove(); + mOverlayMap.remove(id); + if(null != mCurrentOverlayHandler) { + mCurrentOverlayHandler.clean(id); + mCurrentOverlayHandler = null; + } + + if (Env.DEBUG) { + Log.d(TAG, "remove Overlay success"); + } + return true; + } +} \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/PolygonHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/PolygonHandler.java new file mode 100644 index 0000000..ade9abb --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/PolygonHandler.java @@ -0,0 +1,117 @@ +package com.baidu.flutter_bmfmap.map.overlayHandler; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.flutter_bmfmap.utils.converter.FlutterDataConveter; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.Overlay; +import com.baidu.mapapi.map.PolygonOptions; +import com.baidu.mapapi.map.Stroke; +import com.baidu.mapapi.model.LatLng; + +import android.text.TextUtils; +import android.util.Log; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +public class PolygonHandler extends OverlayHandler { + private static final String TAG = "PolygonHandler"; + + public PolygonHandler(BaiduMap baiduMap) { + super(baiduMap); + } + + @Override + public Map handlerMethodCall(MethodCall call, MethodChannel.Result result) { + if (Env.DEBUG) { + Log.d(TAG, "handlerMethodCall enter0"); + } + Map argument = call.arguments(); + if (null == argument) { + if (Env.DEBUG) { + Log.d(TAG, "argument is null"); + } + return null; + } + + if (!argument.containsKey("id") + || !argument.containsKey("coordinates")) { + if (Env.DEBUG) { + Log.d(TAG, "argument does not contain"); + } + return null; + } + + final String id = (String) argument.get("id"); + if (TextUtils.isEmpty(id)) { + return null; + } + List> coordinates = + (List>) argument.get("coordinates"); + + if (coordinates.size() < 1) { + if (Env.DEBUG) { + Log.d(TAG, "coordinates.size() < 1"); + } + return null; + } + + PolygonOptions polygonOptions = new PolygonOptions(); + + List coordinatesList = FlutterDataConveter.mapToLatlngs(coordinates); + if (null == coordinatesList) { + if (Env.DEBUG) { + Log.d(TAG, "coordinatesList is null"); + } + return null; + } + + polygonOptions.points(coordinatesList); + + if (argument.containsKey("width") && argument + .containsKey("strokeColor")) { + int width = (Integer) argument.get("width"); + String strokeColorStr = (String) argument.get("strokeColor"); + if (Env.DEBUG) { + Log.d(TAG, "strokeColorStr:" + strokeColorStr); + } + if (!TextUtils.isEmpty(strokeColorStr)) { + int strokeColor = FlutterDataConveter.strColorToInteger(strokeColorStr); + Stroke stroke = new Stroke(width, strokeColor); + polygonOptions.stroke(stroke); + } + } + + if (argument.containsKey("fillColor")) { + String fillColorStr = (String) argument.get("fillColor"); + if (Env.DEBUG) { + Log.d(TAG, "fillColorStr:" + fillColorStr); + } + if (!TextUtils.isEmpty(fillColorStr)) { + int fillColor = FlutterDataConveter.strColorToInteger(fillColorStr); + polygonOptions.fillColor(fillColor); + } + } + + if (argument.containsKey("zIndex")) { + int zIndex = (Integer) argument.get("zIndex"); + polygonOptions.zIndex(zIndex); + } + + if (argument.containsKey("visible")) { + boolean visible = (Boolean) argument.get("visible"); + polygonOptions.visible(visible); + } + + final Overlay overlay = mBaiduMap.addOverlay(polygonOptions); + + return new HashMap() { + { + put(id, overlay); + } + }; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/PolylineHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/PolylineHandler.java new file mode 100644 index 0000000..fa1c26d --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/PolylineHandler.java @@ -0,0 +1,620 @@ +package com.baidu.flutter_bmfmap.map.overlayHandler; + +import java.text.BreakIterator; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import com.baidu.flutter_bmfmap.utils.Constants; +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.flutter_bmfmap.utils.converter.FlutterDataConveter; +import com.baidu.flutter_bmfmap.utils.converter.TypeConverter; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.BaiduMap.OnPolylineClickListener; +import com.baidu.mapapi.map.BitmapDescriptor; +import com.baidu.mapapi.map.Overlay; +import com.baidu.mapapi.map.Polyline; +import com.baidu.mapapi.map.PolylineDottedLineType; +import com.baidu.mapapi.map.PolylineOptions; +import com.baidu.mapapi.model.LatLng; + +import android.os.Bundle; +import android.text.TextUtils; +import android.util.Log; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +public class PolylineHandler extends OverlayHandler { + private static final String TAG = "PolylineHandler"; + + private HashMap> mBitmapMap = new HashMap<>(); + + private OnPolylineClickListener mOnPolylineClickListener = new OnPolylineClickListener() { + @Override + public boolean onPolylineClick(Polyline polyline) { + return false; + } + }; + + public PolylineHandler(BaiduMap baiduMap) { + super(baiduMap); + } + + @Override + public Map handlerMethodCall(MethodCall call, MethodChannel.Result result) { + if (Env.DEBUG) { + Log.d(TAG, "handlerMethodCall enter"); + } + Map argument = call.arguments(); + if (null == argument) { + if (Env.DEBUG) { + Log.d(TAG, "argument is null"); + } + return null; + } + + String methodId = call.method; + Map overlayMap = null; + switch (methodId) { + case Constants.MethodProtocol.PolylineProtocol.sMapAddPolylineMethod: + overlayMap = addPolyLine(argument); + break; + case Constants.MethodProtocol.PolylineProtocol.sMapUpdatePolylineMemberMethod: + overlayMap = updateMember(argument); + break; + default: + break; + } + + return overlayMap; + } + + private Map addPolyLine(Map argument) { + if (!argument.containsKey("id") + || !argument.containsKey("coordinates") + || !argument.containsKey("indexs")) { + if (Env.DEBUG) { + Log.d(TAG, "argument does not contain"); + } + return null; + } + + final String id = new TypeConverter().getValue(argument, "id"); + if (TextUtils.isEmpty(id)) { + if (Env.DEBUG) { + Log.d(TAG, "id is null"); + } + return null; + } + + List> coordinates = + new TypeConverter>>().getValue(argument, "coordinates"); + List latLngList = FlutterDataConveter.mapToLatlngs(coordinates); + if (null == latLngList) { + if (Env.DEBUG) { + Log.d(TAG, "latLngList is null"); + } + return null; + } + + PolylineOptions polylineOptions = new PolylineOptions().points(latLngList); + + int pointNum = coordinates.size(); + List indexs = new TypeConverter>().getValue(argument, "indexs"); + setOptions(id, argument, polylineOptions, indexs, pointNum); + + if (Env.DEBUG) { + Log.d(TAG, "addOverlay success"); + } + + final Polyline polyline = (Polyline) mBaiduMap.addOverlay(polylineOptions); + Bundle bundle = new Bundle(); + bundle.putCharArray("id", id.toCharArray()); + polyline.setExtraInfo(bundle); + + if (null != polyline) { + mBaiduMap.setOnPolylineClickListener(mOnPolylineClickListener); + + return new HashMap() { + { + put(id, polyline); + } + }; + } + + return null; + } + + private void setOptions(String id, Map polylineOptionsMap, + PolylineOptions polylineOptions, + List indexs, + int pointNumn) { + if (null == polylineOptionsMap || null == polylineOptions || null == indexs) { + return; + } + + Integer width = new TypeConverter().getValue(polylineOptionsMap, "width"); + if (null != width) { + polylineOptions.width(width); + } + + Boolean clickable = new TypeConverter().getValue(polylineOptionsMap, "clickable"); + if (null != clickable) { + polylineOptions.clickable(clickable); + } + + Boolean isKeepScale = + new TypeConverter().getValue(polylineOptionsMap, "isKeepScale"); + if (null != isKeepScale) { + polylineOptions.keepScale(isKeepScale); + } + + Boolean isFocus = new TypeConverter().getValue(polylineOptionsMap, "isFocus"); + if (null != isFocus) { + polylineOptions.focus(isFocus); + } + + Integer zIndex = new TypeConverter().getValue(polylineOptionsMap, "zIndex"); + if (null != zIndex) { + polylineOptions.zIndex(zIndex); + } + + Boolean visible = new TypeConverter().getValue(polylineOptionsMap, "visible"); + if (null != visible) { + polylineOptions.visible(visible); + } + + Boolean isThined = new TypeConverter().getValue(polylineOptionsMap, "isThined"); + if(null != isThined){ + polylineOptions.isThined(isThined); + } + + Boolean dottedLine = new TypeConverter().getValue(polylineOptionsMap, "dottedLine"); + if (null != dottedLine) { + polylineOptions.dottedLine(dottedLine); + } + + List colors = + new TypeConverter>().getValue(polylineOptionsMap, "colors"); + if (null != colors && colors.size() > 0) { + List intColors = FlutterDataConveter.getColors(colors); + + if (null != intColors) { + if (intColors.size() == 1) { + polylineOptions.color(intColors.get(0)); + } else { + List correctColors = correctColors(indexs, intColors, pointNumn); + polylineOptions.colorsValues(correctColors); + } + } + } + + /* + *colors和icons不能共存 + */ + if (null == colors || colors.size() <= 0) { + List icons = + new TypeConverter>().getValue(polylineOptionsMap, "textures"); + if (null != icons && icons.size() > 0) { + List bitmapDescriptors = FlutterDataConveter.getIcons(icons); + if (null != bitmapDescriptors) { + if (bitmapDescriptors.size() == 1) { + polylineOptions.customTexture(bitmapDescriptors.get(0)); + } else { + polylineOptions.textureIndex(indexs); + polylineOptions.customTextureList(bitmapDescriptors); + } + + clearTextureBitMap(id); + mBitmapMap.put(id, bitmapDescriptors); + } + } + } + + setLineDashType(polylineOptionsMap, polylineOptions); + } + + /** + * android polyline多颜色只需要设置colors + * 但flutter传过来的colors只是一个颜色数组,没有索引的概念,需要根据indexs对其进行修正 + * 正常情况indexs的数目应该等于pointNum -1,如果indexs小于次值,则余下段的索引按照索引数组最后一个补齐,反之则按照poinNum - 1处理 + */ + private List correctColors(List indexs, + List colors, + int pointNum) { + + // 通过colors的size对索引数组进行修正 + List tmpIndexs = new ArrayList<>(); + for (Integer i : indexs) { + if (i < colors.size()) { + tmpIndexs.add(i); + } else { + tmpIndexs.add(colors.size() - 1); + } + } + + int tmpIndexSize = tmpIndexs.size(); + int lastIndexValue = tmpIndexs.get(tmpIndexSize - 1); + // 通过pointNum对索引数组进行修正 + if (tmpIndexSize < pointNum - 1) { + for (int i = tmpIndexSize; i < pointNum - 1; i++) { + tmpIndexs.add(lastIndexValue); + } + } + + List tmpColors = new ArrayList<>(); + for (int i = 0; i < pointNum - 1; i++) { + tmpColors.add(colors.get(tmpIndexs.get(i))); + } + + return tmpColors; + } + + private void setLineDashType(Map polylineOptionsMap, + PolylineOptions polylineOptions) { + if (null == polylineOptionsMap || null == polylineOptions) { + return; + } + + Integer lineDashType = + new TypeConverter().getValue(polylineOptionsMap, "lineDashType"); + if (null == lineDashType) { + return; + } + + switch (lineDashType) { + case OverlayCommon.LineDashType.sLineDashTypeSquare: + polylineOptions.dottedLineType(PolylineDottedLineType.DOTTED_LINE_SQUARE); + break; + case OverlayCommon.LineDashType.sLineDashTypeDot: + polylineOptions.dottedLineType(PolylineDottedLineType.DOTTED_LINE_CIRCLE); + break; + default: + break; + } + } + + /** + * 更新polyline属性 + * + * @param argument + * @return + */ + private Map updateMember(Map argument) { + if (null == mCurrentOverlay || !(mCurrentOverlay instanceof Polyline)) { + return null; + } + + final Polyline polyline = (Polyline) mCurrentOverlay; + + final String id = new TypeConverter().getValue(argument, "id"); + if (TextUtils.isEmpty(id)) { + return null; + } + + String member = new TypeConverter().getValue(argument, "member"); + if (TextUtils.isEmpty(member)) { + return null; + } + + switch (member) { + case "coordinates": + if (!updateCoordinates(argument, polyline)) { + return null; + } + break; + case "width": + Integer width = new TypeConverter().getValue(argument, "value"); + if (null == width) { + return null; + } + + polyline.setWidth(width); + break; + case "indexs": + if (!updateIndexs(argument, polyline)) { + return null; + } + break; + case "colors": + if (!updateColors(argument, polyline)) { + return null; + } + break; + case "textures": + if (!updateTextures(argument, polyline)) { + return null; + } + break; + case "lineDashType": + if (!updateLinashType(argument, polyline)) { + return null; + } + break; + case "lineCapType": + case "lineJoinType": + return null; + case "clickable": + Boolean clickable = new TypeConverter().getValue(argument, "value"); + if (null == clickable) { + return null; + } + + polyline.setClickable(clickable); + break; + case "isKeepScale": + Boolean isKeepScale = new TypeConverter().getValue(argument, "value"); + if (null == isKeepScale) { + return null; + } + + polyline.setIsKeepScale(isKeepScale); + break; + case "isFocus": + Boolean isFocus = new TypeConverter().getValue(argument, "value"); + if (null == isFocus) { + return null; + } + + polyline.setFocus(isFocus); + break; + case "visible": + Boolean visible = new TypeConverter().getValue(argument, "value"); + if (null == visible) { + return null; + } + + polyline.setVisible(visible); + break; + case "zIndex": + Integer zIndex = new TypeConverter().getValue(argument, "value"); + if (null == zIndex) { + return null; + } + + polyline.setZIndex(zIndex); + break; + case "isThined": + Boolean isThined = new TypeConverter().getValue(argument, "value"); + if(null != isThined){ + polyline.setThined(isThined); + } + break; + case "dottedLine": + Boolean dottedLine = new TypeConverter().getValue(argument, "value"); + if (null != dottedLine) { + polyline.setDottedLine(dottedLine); + } + break; + default: + break; + } + + return new HashMap() { + { + put(id, polyline); + } + }; + } + + private boolean updateCoordinates(Map argument, Polyline polyline) { + List> coordinates = + new TypeConverter>>().getValue(argument, + "value"); + + if (null == coordinates) { + return false; + } + + List latLngList = FlutterDataConveter.mapToLatlngs(coordinates); + if (null == latLngList) { + return false; + } + polyline.setPoints(latLngList); + + + List indexs = new TypeConverter>().getValue(argument, "indexs"); + if (null != indexs) { + int[] nIndexs = new int[indexs.size()]; + for (int i = 0; i < indexs.size(); i++) { + nIndexs[i] = indexs.get(i); + } + + polyline.setIndexs(nIndexs); + } + + return true; + } + + private boolean updateIndexs(Map argument, Polyline polyline) { + List indexs = new TypeConverter>().getValue(argument, "value"); + if (null == indexs) { + return false; + } + + int[] nIndexs = new int[indexs.size()]; + for (int i = 0; i < indexs.size(); i++) { + nIndexs[i] = indexs.get(i); + } + + polyline.setIndexs(nIndexs); + + List points = polyline.getPoints(); + if (null != points) { + polyline.setPoints(points); + } + + return true; + } + + + private boolean updateColors(Map argument, Polyline polyline) { + boolean ret = false; + List colors = + new TypeConverter>().getValue(argument, "value"); + List indexs = + new TypeConverter>().getValue(argument, "indexs"); + + List points = polyline.getPoints(); + + if (null != colors && + colors.size() > 0 && + null != indexs && + indexs.size() > 0 && + null != points && + points.size() > 0) { + List intColors = FlutterDataConveter.getColors(colors); + List correctColors = correctColors(indexs, intColors, points.size()); + + if (null != correctColors) { + if (correctColors.size() == 1) { + polyline.setColor(correctColors.get(0)); + ret = true; + } else { + int[] nColors = new int[correctColors.size()]; + for (int i = 0; i < correctColors.size(); i++) { + nColors[i] = correctColors.get(i); + } + polyline.setColorList(nColors); + ret = true; + } + + polyline.setPoints(points); + } + } + + return ret; + } + + private boolean updateTextures(Map argument, Polyline polyline) { + List icons = + new TypeConverter>().getValue(argument, "value"); + + if (null == icons) { + return false; + } + + boolean ret = false; + if (null != icons && icons.size() > 0) { + List bitmapDescriptors = FlutterDataConveter.getIcons(icons); + if (null != bitmapDescriptors) { + if (bitmapDescriptors.size() == 1) { + polyline.setTexture(bitmapDescriptors.get(0)); + ret = true; + } else { + polyline.setTextureList(bitmapDescriptors); + ret = true; + } + + List points = polyline.getPoints(); + if (null != points) { + polyline.setPoints(points); + } + + Bundle bundle = polyline.getExtraInfo(); + String id = bundle.getString("id"); + clearTextureBitMap(id); + mBitmapMap.put(id, bitmapDescriptors); + } + } + + return ret; + } + + private boolean updateLinashType(Map argument, Polyline polyline) { + Integer lineDashType = new TypeConverter().getValue(argument, "value"); + + if (null == lineDashType) { + return false; + } + + switch (lineDashType) { + case OverlayCommon.LineDashType.sLineDashTypeNone: + break; + case OverlayCommon.LineDashType.sLineDashTypeSquare: + polyline.setDottedLineType(PolylineDottedLineType.DOTTED_LINE_SQUARE); + break; + case OverlayCommon.LineDashType.sLineDashTypeDot: + polyline.setDottedLineType(PolylineDottedLineType.DOTTED_LINE_CIRCLE); + break; + default: + break; + } + + return true; + } + + private void clearTextureBitMap(String id) { + if (TextUtils.isEmpty(id)) { + return; + } + + List bitmapDescriptors = mBitmapMap.get(id); + if (null == bitmapDescriptors) { + return; + } + + Iterator itr = bitmapDescriptors.iterator(); + BitmapDescriptor bitmapDescriptor; + while (itr.hasNext()) { + bitmapDescriptor = (BitmapDescriptor) itr.next(); + if (null == bitmapDescriptor) { + continue; + } + + bitmapDescriptor.recycle(); + } + + mBitmapMap.remove(id); + } + + public void clean(){ + Iterator itr = mBitmapMap.values().iterator(); + List bitmapDescriptors; + BitmapDescriptor bitmapDescriptor; + while (itr.hasNext()) { + bitmapDescriptors = (List) itr.next(); + if (null == bitmapDescriptors) { + continue; + } + + Iterator listItr = bitmapDescriptors.iterator(); + while (listItr.hasNext()) { + bitmapDescriptor = (BitmapDescriptor)listItr.next(); + if (null == bitmapDescriptor) { + continue; + } + + bitmapDescriptor.recycle(); + } + } + + mBitmapMap.clear(); + } + + public void clean(String id) { + if (TextUtils.isEmpty(id)) { + return; + } + + List bitmapDescriptors = mBitmapMap.get(id); + if (null == bitmapDescriptors) { + return; + } + + Iterator itr = bitmapDescriptors.iterator(); + BitmapDescriptor bitmapDescriptor; + while (itr.hasNext()) { + bitmapDescriptor = (BitmapDescriptor)itr.next(); + if (null == bitmapDescriptor) { + continue; + } + + bitmapDescriptor.recycle(); + } + + mBitmapMap.remove(id); + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/TextHandler.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/TextHandler.java new file mode 100644 index 0000000..aa44350 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/map/overlayHandler/TextHandler.java @@ -0,0 +1,137 @@ +package com.baidu.flutter_bmfmap.map.overlayHandler; + +import java.util.HashMap; +import java.util.Map; + +import com.baidu.flutter_bmfmap.utils.Env; +import com.baidu.flutter_bmfmap.utils.converter.FlutterDataConveter; +import com.baidu.flutter_bmfmap.utils.converter.TypeConverter; +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.Overlay; +import com.baidu.mapapi.map.TextOptions; +import com.baidu.mapapi.model.LatLng; + +import android.graphics.Typeface; +import android.text.TextUtils; +import android.util.Log; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +public class TextHandler extends OverlayHandler { + private static final String TAG = "TextHandler"; + + public TextHandler(BaiduMap baiduMap) { + super(baiduMap); + } + + @Override + public Map handlerMethodCall(MethodCall call, MethodChannel.Result result) { + + Map argument = call.arguments(); + if (null == argument) { + if (Env.DEBUG) { + Log.d(TAG, "argument is null"); + } + return null; + } + + if (!argument.containsKey("id") + || !argument.containsKey("text") + || !argument.containsKey("position")) { + if (Env.DEBUG) { + Log.d(TAG, "argument does not contain" + argument.toString()); + + } + return null; + } + + final String id = new TypeConverter().getValue(argument, "id"); + if (TextUtils.isEmpty(id)) { + return null; + } + + TextOptions textOptions = new TextOptions(); + + Object posObj = (argument.get("position")); + if (null != posObj) { + Map posMap = (Map) posObj; + LatLng pos = FlutterDataConveter.mapToLatlng(posMap); + if (null != pos) { + if (Env.DEBUG) { + Log.d(TAG, "pos"); + } + textOptions.position(pos); + } + } + + String text = new TypeConverter().getValue(argument, "text"); + if (TextUtils.isEmpty(text)) { + return null; + } + textOptions.text(text); + + setTextOptions(argument, textOptions); + + final Overlay overlay = mBaiduMap.addOverlay(textOptions); + return new HashMap() { + { + put(id, overlay); + } + }; + } + + private void setTextOptions(Map textOptionsMap, TextOptions textOptions) { + if (null == textOptionsMap || null == textOptions) { + return; + } + + String bgColorStr = new TypeConverter().getValue(textOptionsMap, "bgColor"); + if (!TextUtils.isEmpty(bgColorStr)) { + int bgColor = FlutterDataConveter.strColorToInteger(bgColorStr); + textOptions.bgColor(bgColor); + } + + String fongColorStr = new TypeConverter().getValue(textOptionsMap, "fontColor"); + if (!TextUtils.isEmpty(fongColorStr)) { + int fontColor = FlutterDataConveter.strColorToInteger(fongColorStr); + textOptions.fontColor(fontColor); + } + + Integer fontSize = new TypeConverter().getValue(textOptionsMap, "fontSize"); + if (null != fontSize) { + textOptions.fontSize(fontSize); + } + + Integer alignx = new TypeConverter().getValue(textOptionsMap, "alignX"); + Integer aligny = new TypeConverter().getValue(textOptionsMap, "alignY"); + if (null != alignx && null != aligny) { + textOptions.align(alignx, aligny); + } + + Double roate = new TypeConverter().getValue(textOptionsMap, "rotate"); + if (null != roate) { + textOptions.rotate(roate.floatValue()); + } + + Integer zIndex = new TypeConverter().getValue(textOptionsMap, "zIndex"); + if (null != zIndex) { + textOptions.zIndex(zIndex); + } + + Boolean visible = new TypeConverter().getValue(textOptionsMap, "visible"); + if (null != visible) { + textOptions.visible(visible); + } + + Map typeFaceMap = + new TypeConverter>().getValue(textOptionsMap, "typeFace"); + if (null != typeFaceMap) { + String familyName = new TypeConverter().getValue(typeFaceMap, "familyName"); + Integer textStype = new TypeConverter().getValue(typeFaceMap, "textStype"); + if (!TextUtils.isEmpty(familyName) && textStype >= 0 && textStype <= 4) { + Typeface typeface = Typeface.create(familyName, textStype); + textOptions.typeface(typeface); + } + } + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/Constants.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/Constants.java new file mode 100644 index 0000000..ca5f3ff --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/Constants.java @@ -0,0 +1,623 @@ +package com.baidu.flutter_bmfmap.utils; + +public class Constants { + public static final String VIEW_METHOD_CHANNEL_PREFIX = "flutter_bmfmap/map_"; + public static final String VIEW_EVENT_CHANNEL_PREFIX = "flutter_bmfmap/event_"; + + public static final String sConfigChangedAction = "com.baidu.flutter_bmfmap.configChanged"; + + /** + * flutter widget update 或者 热重载导致的 FlutterMapView 和FlutterTextureMapView 被调用的次数 + */ + public static final int MAX_GET_VIEW_CNT_BY_FLUTTER_RESIZE = 3; + + /** + * view类型 + */ + public static class ViewType{ + public static final String sMapView = "flutter_bmfmap/map/BMKMapView"; + public static final String sTextureMapView = "flutter_bmfmap/map/BMKTextureMapView"; + } + + /** + * overlayHandler类型 + */ + public static class OverlayHandlerType{ + public static final int CIRCLE_HANDLER = 0; + public static final int DOT_HANDLER = 1; + public static final int POLYGON_HANDLER = 2; + public static final int POLYLINE_HANDLER = 3; + public static final int TEXT_HANDLER = 4; + public static final int ARCLINE_HANDLER = 5; + public static final int GROUND_HANDLER = 6; + } + + /** + * MapHandler类型 + */ + public static class BMapHandlerType{ + public static final int CUSTOM_MAP = 0; + public static final int MAP_STATE = 1; + public static final int INDOOR_MAP = 2; + public static final int MAP_SNAPSHOT = 3; + public static final int CUSTOM_COMPASS = 4; + public static final int CUSTOM_TRAFFIC_COLOR = 5; + public static final int MAP_UPDATE = 6; + public static final int HEAT_MAP = 7; + public static final int TILE_MAP = 8; + public static final int INFOWINDOW_HANDLER = 9; + public static final int MARKER_HANDLER = 10; + public static final int LOCATION_LAYER = 11; + public static final int PROJECTION = 12; + } + + /** + * 与flutter method协议约定 + */ + public static class MethodProtocol { + /** + * 室内图状态协议 + */ + public static class IndoorMapProtocol { + /** + * map展示室内地图 + */ + public static final String sShowBaseIndoorMapMethod = "flutter_bmfmap/map/showBaseIndoorMap"; + + /** + * map室内图标注是否显示 + */ + public static final String sShowBaseIndoorMapPoiMethod = "flutter_bmfmap/map/showBaseIndoorMapPoi"; + + /** + * map设置室内图楼层 + */ + public static final String sSwitchBaseIndoorMapFloorMethod = "flutter_bmfmap/map/switchBaseIndoorMapFloor"; + + /** + * map获取当前聚焦的室内图信息 + */ + public static final String sGetFocusedBaseIndoorMapInfoMethod= "flutter_bmfmap/map/getFocusedBaseIndoorMapInfo"; + } + + /** + * 个性化地图 + */ + public static class CustomMapProtocol { + /** + * 开启个性化地图 + */ + public static final String sMapSetCustomMapStyleEnableMethod = "flutter_bmfmap/map/setCustomMapStyleEnable"; + + /** + * 设置个性化地图样式路径 + */ + public static final String sMapSetCustomMapStylePathMethod = "flutter_bmfmap/map/setCustomMapStylePath"; + + /** + * 在线个性化样式加载状态回调接口 + */ + public static final String sMapSetCustomMapStyleWithOptionMethod = "flutter_bmfmap/map/setCustomMapStyleWithOption"; + } + + /** + * overlay协议 + */ + public static class OverlayProtocol{ + /** + * 删除overlay + */ + public static final String sMapRemoveOverlayMethod = "flutter_bmfmap/overlay/removeOverlay"; + } + + /** + * marker协议 + */ + public static class MarkerProtocol { + /** + * 添加marker + */ + public static final String sMapAddMarkerMethod = "flutter_bmfmap/marker/addMarker"; + + /** + * 添加markers + */ + public static final String sMapAddMarkersMethod = "flutter_bmfmap/marker/addMarkers"; + + /** + * 删除marker + */ + public static final String sMapRemoveMarkerMethod = "flutter_bmfmap/marker/removeMarker"; + + /** + * 删除markers + */ + public static final String sMapRemoveMarkersMethod = "flutter_bmfmap/marker/removeMarkers"; + + /** + * 清除所有的markers + */ + public static final String sMapCleanAllMarkersMethod = "flutter_bmfmap/marker/cleanAllMarkers"; + + /** + * marker点击回调 + */ + public static final String sMapClickedmarkedMethod = "flutter_bmfmap/marker/clickedMarker"; + + /** + * marker 选中回调 + */ + public static final String sMapDidSelectMarkerMethod = "flutter_bmfmap/marker/didSelectedMarker"; + + /** + * marker取消选中回调 + */ + public static final String sMapDidDeselectMarkerMethod = "flutter_bmfmap/marker/didDeselectMarker"; + + /** + * marker拖拽 + */ + public static final String sMapDragMarkerMethod = "flutter_bmfmap/marker/dragMarker"; + + /** + * marker拖拽 + */ + public static final String sMapUpdateMarkerMemberMethod = "flutter_bmfmap/marker/updateMarkerMember"; + + /** + * marker拖拽状态 + */ + public static class MarkerDragState{ + /** + * 开始拖拽 + */ + public static final String sDragStart = "dragStart"; + + /** + * 正在拖拽 + */ + public static final String sDragging = "dragging"; + + /** + * 拖拽完成 + */ + public static final String sDragEnd = "dragEnd"; + + } + } + + + /** + * infowindow协议 + */ + public static class InfoWindowProtocol { + /** + * marker的infoWindow(iOS paopaoView)点击回调 + */ + public static final String sMapDidClickedInfoWindowMethod = "flutter_bmfmap/map/didClickedInfoWindow"; + + // 添加infoWindow + public static final String sAddInfoWindowMapMethod = "flutter_bmfmap/map/addInfoWindow"; + + // 添加infoWindow + public static final String sAddInfoWindowsMapMethod = "flutter_bmfmap/map/addInfoWindows"; + + // 移除infoWindow + public static final String sRemoveInfoWindowMapMethod = "flutter_bmfmap/map/removeInfoWindow"; + } + + /** + * polyline协议 + */ + public static class PolylineProtocol { + /** + * 添加polyline + */ + public static final String sMapAddPolylineMethod = "flutter_bmfmap/overlay/addPolyline"; + /** + * polyline点击事件 + */ + public static final String sMapOnClickedOverlayCallback = "flutter_bmfmap/overlay/onClickedOverlay"; + + /** + * 更新polyline属 + */ + public static final String sMapUpdatePolylineMemberMethod = "flutter_bmfmap/overlay/updatePolylineMember"; + } + + /** + * polygon协议 + */ + public static class PolygonProtocol { + /** + * 添加polyline + */ + public static final String sMapAddPolygonMethod = "flutter_bmfmap/overlay/addPolygon"; + } + + + /** + * arline协议 + */ + public static class ArclineProtocol { + /** + * 添加arcline + */ + public static final String sMapAddArclinelineMethod = "flutter_bmfmap/overlay/addArcline"; + } + + + /** + * circleline协议 + */ + public static class CirclelineProtocol { + /** + * 添加circlr + */ + public static final String sMapAddCirclelineMethod = "flutter_bmfmap/overlay/addCircle"; + } + + + /** + * dot协议 + */ + public static class DotProtocol { + /** + * 添加Dot + */ + public static final String sMapAddDotMethod = "flutter_bmfmap/overlay/addDot"; + } + + /** + * text协议 + */ + public static class TextProtocol { + /** + * 添加text + */ + + // 添加dot + public static final String sMapAddTextMethod = "flutter_bmfmap/overlay/addText"; + } + + /** + * dot协议 + */ + public static class GroundProtocol { + /** + * 添加Ground + */ + public static final String sMapAddGroundMethod = "flutter_bmfmap/overlay/addGround"; + } + + public static class HeatMapProtocol { + /** + * 添加HeapMap + */ + public static final String sMapAddHeatMapMethod = "flutter_bmfmap/heatMap/addHeatMap"; + + /** + * 开关 + */ + public static final String sMapRemoveHeatMapMethod = "flutter_bmfmap/heatMap/removeHeatMap"; + + /** + * 是否展示热力图 + */ + public static final String sShowHeatMapMethod = "flutter_bmfmap/heatMap/showHeatMap"; + } + + /** + * mapState协议 + */ + public static class MapStateProtocol { + // 更新地图参数 + public static final String sMapUpdateMethod = "flutter_bmfmap/map/updateMapOptions"; + + // map放大一级比例尺 + public static final String sMapZoomInMethod = "flutter_bmfmap/map/zoomIn"; + + // map缩小一级比例尺 + public static final String sMapZoomOutMethod = "flutter_bmfmap/map/zoomOut"; + + // 设置路况颜色 + public static final String sMapSetCustomTrafficColorMethod = + "flutter_bmfmap/map/setCustomTrafficColor"; + + // 更新地图状态 + public static final String sMapSetMapStatusMethod = "flutter_bmfmap/map/setMapStatus"; + + // 获取地图状态 + public static final String sMapGetMapStatusMethod = "flutter_bmfmap/map/getMapStatus"; + + // 按像素移动地图中心点 + public static final String sMapSetScrollByMethod = "flutter_bmfmap/map/setScrollBy"; + + // 根据给定增量缩放地图级别 + public static final String sMapSetZoomByMethod = "flutter_bmfmap/map/setZoomBy"; + + // 根据给定增量以及给定的屏幕坐标缩放地图级别 + public static final String sMapSetZoomPointByMethod = "flutter_bmfmap/map/setZoomPointBy"; + + // 设置地图缩放级别 + public static final String sMapSetZoomToMethod = "flutter_bmfmap/map/setZoomTo"; + + // 设定地图中心点坐标 + public static final String sMapSetCenterCoordinateMethod = + "flutter_bmfmap/map/setCenterCoordinate"; + + // 设置地图中心点以及缩放级别 + public static final String sMapSetCenterZoomMethod = "flutter_bmfmap/map/setMapCenterZoom"; + + // 获得地图当前可视区域截图 + public static final String sMapTakeSnapshotMethod = "flutter_bmfmap/map/takeSnapshot"; + + // 获得地图指定区域截图 + public static final String sMapTakeSnapshotWithRectMethod = + "flutter_bmfmap/map/takeSnapshotWithRect"; + + // 设置罗盘的图片 + public static final String sMapSetCompassImageMethod = "flutter_bmfmap/map/setCompassImage"; + + // 设置显示在屏幕中的地图地理范围 + public static final String sMapSetVisibleMapBoundsMethod = "flutter_bmfmap/map/setVisibleMapBounds"; + + // 设定地图的显示范围,并使mapRect四周保留insets指定的边界区域 + public static final String sMapSetVisibleMapBoundsWithPaddingMethod = + "flutter_bmfmap/map/setVisibleMapBoundsWithPadding"; + + // map加载完成 + public static final String sMapDidLoadCallback = "flutter_bmfmap/map/mapViewDidFinishLoad"; + + // map渲染完成 + public static final String sMapDidFinishRenderCallback = + "flutter_bmfmap/map/mapViewDidFinishRender"; + + // 地图渲染每一帧画面过程中,以及每次需要重绘地图时(例如添加覆盖物)都会调用此接口 + public static final String sMapOnDrawMapFrameCallback = + "flutter_bmfmap/map/mapViewOnDrawMapFrame"; + + // 地图绘制出有效数据的监听 + public static final String sMapRenderValidDataCallback = "flutter_bmfmap/map/mapRenderValidDataCallback"; + + // 地图View进入/移出室内图 + public static final String sMapInOrOutBaseIndoorMapCallback = + "flutter_bmfmap/map/mapViewInOrOutBaseIndoorMap"; + + // 地图区域即将改变时会调用此接口 + public static final String sMapRegionWillChangeCallback = + "flutter_bmfmap/map/mapViewRegionWillChange"; + + // 地图区域即将改变时会调用此接口reason + public static final String sMapRegionWillChangeWithReasonCallback = + "flutter_bmfmap/map/mapViewRegionWillChangeWithReason"; + + // 地图区域改变完成后会调用此接口 + public static final String sMapRegionDidChangeCallback = + "flutter_bmfmap/map/mapViewRegionDidChange"; + + // 地图区域改变完成后会调用此接口reason + public static final String sMapRegionDidChangeWithReasonCallback = + "flutter_bmfmap/map/mapViewRegionDidChangeWithReason"; + + // 点中底图空白处会回调此接口 + public static final String sMapOnClickedMapBlankCallback = + "flutter_bmfmap/map/mapViewOnClickedMapBlank"; + + // 点中底图标注后会回调此接口 + public static final String sMapOnClickedMapPoiCallback = + "flutter_bmfmap/map/mapViewonClickedMapPoi"; + + // 双击地图时会回调此接口 + public static final String sMapOnDoubleClickCallback = + "flutter_bmfmap/map/mapViewOnDoubleClick"; + + // 长按地图时会回调此接口 + public static final String sMapOnLongClickCallback = + "flutter_bmfmap/map/mapViewOnLongClick"; + + // 地图状态改变完成后会调用此接口 + public static final String sMapStatusDidChangedCallback = + "flutter_bmfmap/map/mapViewStatusDidChanged"; + + // widget 状态更新 + public static final String sMapDidUpdateWidget = "flutter_bmfmap/map/didUpdateWidget"; + + // widget 热重载 + public static final String sMapReassemble = "flutter_bmfmap/map/reassemble"; + + } + + /** + * 地图获取属性方法id集合 + */ + public static class BMFMapGetPropertyMethodId { + + // 获取map的展示类型 + public static final String sMapGetMapTypeMethod = "flutter_bmfmap/map/getMapType"; + + // 获取map的比例尺级别 + public static final String sMapGetZoomLevelMethod = "flutter_bmfmap/map/getZoomLevel"; + + // 获取map的自定义最小比例尺级别 + public static final String sMapGetMinZoomLevelMethod = "flutter_bmfmap/map/getMinZoomLevel"; + + // 获取map的自定义最大比例尺级别 + public static final String sMapGetMaxZoomLevelMethod = "flutter_bmfmap/map/getMaxZoomLevel"; + + // 获取map的旋转角度 + public static final String sMapGetRotationMethod = "flutter_bmfmap/map/getRotation"; + + // 获取map的地图俯视角度 + public static final String sMapGetOverlookingMethod = "flutter_bmfmap/map/getOverlooking"; + + // 获取map的是否现显示3D楼块效果 + public static final String sMapGetBuildingsEnabledMethod = "flutter_bmfmap/map/getBuildingsEnabled"; + + // 获取map的是否打开路况图层 + public static final String sMapGetTrafficEnabledMethod = "flutter_bmfmap/map/getTrafficEnabled"; + + // 获取map的是否打开百度城市热力图图层 + public static final String sMapGetBaiduHeatMapEnabledMethod = "flutter_bmfmap/map/getBaiduHeatMapEnabled"; + + // 获取map的是否支持所有手势操作 + public static final String sMapGetGesturesEnabledMethod = "flutter_bmfmap/map/getGesturesEnabled"; + + // 获取map是否支持缩放 + public static final String sMapGetZoomEnabledMethod = "flutter_bmfmap/map/getZoomEnabled"; + + // 获取map是否支持拖拽手势 + public static final String sMapGetScrollEnabledMethod = "flutter_bmfmap/map/getScrollEnabled"; + + // 获取map是否支持俯仰角 + public static final String sMapGetOverlookEnabledMethod = "flutter_bmfmap/map/getOverlookEnabled"; + + // 获取map是否支持旋转 + public static final String sMapGetRotateEnabledMethod = "flutter_bmfmap/map/getRotateEnabled"; + + // 获取map的比例尺的位置 + public static final String sMapGetMapScaleBarPositionMethod = "flutter_bmfmap/map/getMapScaleBarPosition"; + + // 获取map的logo位置 + public static final String sMapGetLogoPositionMethod = "flutter_bmfmap/map/getLogoPosition"; + + // 获取map的可视范围 + public static final String sMapGetVisibleMapBoundsMethod = "flutter_bmfmap/map/getVisibleMapBounds"; + + // 获取map的显示室内图 + public static final String sMapGetBaseIndoorMapEnabledMethod = "flutter_bmfmap/map/getBaseIndoorMapEnabled"; + + // 获取map的室内图标注是否显示 + public static final String sMapGetShowIndoorMapPoiMethod = "flutter_bmfmap/map" + + "/getShowIndoorMapPoi"; + } + + public static class BMFOfflineMethodId { + // 初使化 + public static final String sMapInitOfflineMethod = "flutter_bmfmap/offlineMap/initOfflineMap"; + + // 状态回调 + public static final String sMapOfflineCallBackMethod = "flutter_bmfmap/offlineMap/offlineCallBack"; + + // 启动下载指定城市ID的离线地图,或在暂停更新某城市后继续更新下载某城市离线地图 + public static final String sMapStartOfflineMethod = "flutter_bmfmap/offlineMap/startOfflineMap"; + + // 启动更新指定城市ID的离线地图 + public static final String sMapUpdateOfflineMethod = "flutter_bmfmap/offlineMap/updateOfflineMap"; + + // 暂停下载或更新指定城市ID的离线地图 + public static final String sMapPauseOfflineMethod = "flutter_bmfmap/offlineMap/pauseOfflineMap"; + + // 删除指定城市ID的离线地图 + public static final String sMapRemoveOfflineMethod = "flutter_bmfmap/offlineMap/removeOfflineMap"; + + // 销毁离线地图管理模块,不用时调用 + public static final String sMapDestroyOfflineMethod = "flutter_bmfmap/offlineMap/destroyOfflineMap"; + + // 返回热门城市列表 + public static final String sMapGetHotCityListMethod = "flutter_bmfmap/offlineMap/getHotCityList"; + + // 返回支持离线地图城市列表 + public static final String sMapGetOfflineCityListMethod = "flutter_bmfmap/offlineMap/getOfflineCityList"; + + // 根据城市名搜索该城市离线地图记录 + public static final String sMapSearchCityMethod = "flutter_bmfmap/offlineMap/searchCityList"; + + // 返回各城市离线地图更新信息 + public static final String sMapGetAllUpdateInfoMethod = "flutter_bmfmap/offlineMap/getAllUpdateInfo"; + + // 返回指定城市ID离线地图更新信息 + public static final String sMapGetUpdateInfoMethod = "flutter_bmfmap/offlineMap/getUpdateInfo"; + } + + public static class ProjectionMethodId { + //屏幕坐标转地理坐标ID + public static final String sFromScreenLocation = "flutter_bmfmap/projection/screenPointfromCoordinate"; + + //将地理坐标转换成屏幕坐标 + public static final String sToScreenLocation = "flutter_bmfmap/projection/coordinateFromScreenPoint"; + + //米为计量单位的距离(沿赤道)在当前缩放水平下转换到一个以像素(水平)为计量单位的距离 + public static final String sMetersToEquatorPixels = "flutter_bmfmap/map/metersToEquatorPixels"; + } + + public static class TileMapProtocol { + // 添加室内地图 + public static final String sAddTileMapMethod = "flutter_bmfmap/overlay/addTile"; + + // 展示室内地图 + public static final String sRemoveTileMapMethod = "flutter_bmfmap/overlay/removeTile"; + } + } + + public static class ErrorCode{ + + /** + * 没有错误 + */ + public static final int sErrorNon = 0; + + /** + * flutter传递参数为空 + */ + public static final int sErrorNullFlutterParam = 1; + + /** + * flutter参数缺少指定内容 + */ + public static final int sErrorFlutterParamMissingContent = 2; + + /** + * flutter参数类型不对 + */ + public static final int sErrorFlutterParamType= 3; + + /** + * flutter参数转换出错 + */ + public static final int sErrorParamConvertFailed= 4; + + /** + * flutter参数转换出错 + */ + public static final int sErrorEngineError= 5; + } + // 定位图层 + public static class LocationLayerMethodId { + // 设定是否显示定位图层 + public static final String sMapShowUserLocationMethod = + "flutter_bmfmap/userLocation/showUserLocation"; + + // 设定定位模式,取值为:BMFUserTrackingMode + public static final String sMapUserTrackingModeMethod = + "flutter_bmfmap/userLocation/userTrackingMode"; + + // 动态定制我的位置样式 + public static final String sMapUpdateLocationDisplayParamMethod = + "flutter_bmfmap/userLocation/updateLocationDisplayParam"; + + // 动态更新我的位置数据 + public static final String sMapUpdateLocationDataMethod = + "flutter_bmfmap/userLocation/updateLocationData"; + } + + /** + * 枚举:室内图切换楼层结果 + */ + public class SwitchIndoorFloorError { + /** 切换楼层成功 */ + public static final int SUCCESS = 0; + + /** 切换楼层失败 */ + public static final int FAILED = 1; + + /** 地图还未聚焦到传入的室内图 */ + public static final int NOT_FOCUSED = 2; + + /** 当前室内图不存在该楼层 */ + public static final int NOT_EXIST = 3; + + /** 切换楼层, 室内ID信息错误 [android] 独有 */ + public static final int SWICH_FLOOR_INFO_ERROR = 4; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/Env.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/Env.java new file mode 100644 index 0000000..bd51a4a --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/Env.java @@ -0,0 +1,76 @@ +package com.baidu.flutter_bmfmap.utils; + +public class Env { + public static Boolean DEBUG = false; + + /** + * 空白地图 + */ + public static final int MAP_TYPE_NONE = 0; + + /** + * 普通地图 + */ + public static final int MAP_TYPE_NORMAL = 1; + + /** + * 卫星地图 + */ + public static final int MAP_TYPE_SATELLITE = 2; + + + /** + * 地图左下方 + */ + public static final int LOGO_POSITION_LEFT_BOTTOM = 0; + + /** + * 地图左下方 + */ + public static final int LOGO_POSITION_LEFT_TOP = 1; + + /** + * 地图中下方 + */ + public static final int LOGO_POSITION_CENTER_BOTTOM = 2; + + /** + * 地图中上方 + */ + public static final int LOGO_POSITION_CENTER_TOP = 3; + + /** + * 地图右下方 + */ + public static final int LOGO_POSITION_RIGTH_BOTTOM = 4; + + /** + * 地图右上方 + */ + public static final int LOGO_POSITION_RIGTH_TOP = 5; + + /** + * 定位图层显示方式 + */ + public static class LocationMode { + /** + * 普通态: 更新定位数据时不对地图做任何操作 + */ + public static final int NORMAL = 0; + + /** + * 定位方向模式 + */ + public static final int MODEHEADING = 1; + + /** + * 跟随态,保持定位图标在地图中心 + */ + public static final int FOLLOWING = 2; + + /** + * 罗盘态,显示定位方向圈,保持定位图标在地图中心 + */ + public static final int COMPASS = 3; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/IOStreamUtils.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/IOStreamUtils.java new file mode 100644 index 0000000..f07f9bd --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/IOStreamUtils.java @@ -0,0 +1,38 @@ +package com.baidu.flutter_bmfmap.utils; + +import android.os.Build; + +import androidx.annotation.RequiresApi; + +import java.io.Closeable; +import java.io.IOException; + +/** + * 用于安全的关闭closeable对象 + */ +public class IOStreamUtils{ + public static void closeSilently(Closeable o){ + if(null == o){ + return; + } + + try { + o.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @RequiresApi(api = Build.VERSION_CODES.KITKAT) + public static void closeSilently(AutoCloseable o){ + if(null == o){ + return; + } + + try { + o.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/ThreadPoolUtil.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/ThreadPoolUtil.java new file mode 100644 index 0000000..824d3c5 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/ThreadPoolUtil.java @@ -0,0 +1,74 @@ +package com.baidu.flutter_bmfmap.utils; + + +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; + +public class ThreadPoolUtil { + private ThreadFactory mThreadFactory = new ThreadFactory() { + @Override + public Thread newThread(Runnable r) { + Thread t = new Thread(r,"mapThread"+mAtomicInteger.getAndIncrement()); + return t; + } + }; + + private AtomicInteger mAtomicInteger = new AtomicInteger(0); + + private final int CORE_POOL_SIZE = Runtime.getRuntime().availableProcessors(); + + private final int MAX_POLL_SIZE = CORE_POOL_SIZE*2; + + private final int KEEP_ALIVE = 3; //空线程alive时间 + + private ExecutorService mExecutorService; + + private ScheduledExecutorService mScheduleExecutorService; + + private static volatile ThreadPoolUtil sInstance; + + public static ThreadPoolUtil getInstance(){ + if(null == sInstance){ + synchronized (ThreadPoolUtil.class){ + if(null == sInstance){ + sInstance = new ThreadPoolUtil(); + } + } + } + + return sInstance; + } + + public ThreadPoolUtil(){ + mExecutorService = new ThreadPoolExecutor(CORE_POOL_SIZE, MAX_POLL_SIZE, KEEP_ALIVE, + TimeUnit.SECONDS, + new ArrayBlockingQueue(1000), + mThreadFactory, new ThreadPoolExecutor.DiscardOldestPolicy()); + + mScheduleExecutorService = new ScheduledThreadPoolExecutor(CORE_POOL_SIZE, mThreadFactory); + } + + public void execute(Runnable runnable){ + if(null == mExecutorService){ + return; + } + + mExecutorService.execute(runnable); + } + + public ScheduledFuture execute(Runnable runnable, int delayTime){ + if(null == mScheduleExecutorService){ + return null; + } + + return mScheduleExecutorService.schedule(runnable, delayTime, TimeUnit.MILLISECONDS); + } + +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/converter/FlutterDataConveter.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/converter/FlutterDataConveter.java new file mode 100644 index 0000000..c1ece1c --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/converter/FlutterDataConveter.java @@ -0,0 +1,435 @@ +package com.baidu.flutter_bmfmap.utils.converter; + +import android.graphics.Color; +import android.graphics.Point; +import android.text.TextUtils; +import android.util.Size; + +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.BitmapDescriptor; +import com.baidu.mapapi.map.BitmapDescriptorFactory; +import com.baidu.mapapi.map.Projection; +import com.baidu.mapapi.map.WeightedLatLng; +import com.baidu.mapapi.map.WinRound; +import com.baidu.mapapi.model.LatLng; +import com.baidu.mapapi.model.LatLngBounds; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +public class FlutterDataConveter { + + /** + * 将map形式的经纬度信息转换为结构化的经纬度数据 + * @param latlngMap + * @return + */ + public static LatLng mapToLatlng(Map latlngMap){ + if(null == latlngMap){ + return null; + } + + if(!latlngMap.containsKey("latitude") + || !latlngMap.containsKey("longitude")){ + return null; + } + + Object latitudeObj = latlngMap.get("latitude"); + Object longitudeObj = latlngMap.get("longitude"); + if(null == latitudeObj || null == longitudeObj){ + return null; + } + LatLng latLng = new LatLng((double)latitudeObj, (double)longitudeObj); + return latLng; + } + + /** + * 将多个map形式的经纬度信息转换为结构化的经纬度数据 + * @param latlngList + * @return + */ + public static List mapToLatlngs(List > latlngList) { + if (null == latlngList) { + return null; + } + + Iterator itr = latlngList.iterator(); + ArrayList latLngs = new ArrayList<>(); + while (itr.hasNext()){ + Map latlngMap = (Map)itr.next(); + LatLng latLng = mapToLatlng(latlngMap); + if(null == latLng){ + break; + } + + latLngs.add(latLng); + } + + if(latLngs.size() != latlngList.size()){ + return null; + } + + return latLngs; + } + + + /** + * 将整形转换为16进制字符串 + * @param number + * @return + */ + private static String intToHexValue(int number) { + String result = Integer.toHexString(number & 0xff); + while (result.length() < 2) { + result = "0" + result; + } + return result.toUpperCase(); + } + + /** + * 将16进制颜色转换为整形颜色值 + * @param str 16进制颜色值 + * @return + */ + public static int strColorToInteger(String str) { + if(TextUtils.isEmpty(str) || str.length() < 8){ + return 0; + } + String str1 = str.substring(0, 2); + String str2 = str.substring(2, 4); + String str3 = str.substring(4, 6); + String str4 = str.substring(6, 8); + int alpha = Integer.parseInt(str1, 16); + int red = Integer.parseInt(str2, 16); + int green = Integer.parseInt(str3, 16); + int blue = Integer.parseInt(str4, 16); + + + return Color.argb(alpha, red, green, blue); + } + + /** + * 批量根据icon名称获取BitmapDescriptor + * @param icons + * @return + */ + public static List getIcons(List icons){ + if(null == icons){ + return null; + } + + List bitmapIcons = new ArrayList<>(); + Iterator itr = icons.iterator(); + while (itr.hasNext()){ + String icon = (String) itr.next(); + BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromAsset("flutter_assets/" + icon); + bitmapIcons.add(bitmapDescriptor); + } + + return bitmapIcons; + } + + /** + * 批量将16进制字符串颜色值转换为整形颜色值 + * @param colors + * @return + */ + public static List getColors(List colors){ + if(null == colors || colors.size() <= 0){ + return null; + } + + List intColors = new ArrayList<>(); + Iterator iterator = colors.iterator(); + while (iterator.hasNext()){ + String colorStr = (String)iterator.next(); + if(TextUtils.isEmpty(colorStr)){ + return null; + } + + int color = FlutterDataConveter.strColorToInteger(colorStr); + intColors.add(color); + } + + return intColors; + } + + /** + * 将map形式的bounds转换为LatLngBounds + * @param boundsMap + * @return + */ + public static LatLngBounds mapToLatlngBounds(Map boundsMap){ + if(null == boundsMap){ + return null; + } + if(!boundsMap.containsKey("northeast") || !boundsMap.containsKey("southwest")){ + return null; + } + + Map northeastMap = (Map)boundsMap.get("northeast"); + Map southwestMap = (Map)boundsMap.get("southwest"); + if(null == northeastMap || null == southwestMap){ + return null; + } + + LatLng northeast = mapToLatlng(northeastMap); + LatLng southwest = mapToLatlng(southwestMap); + return new LatLngBounds.Builder().include(northeast).include(southwest).build(); + } + + /** + * 将LatLngBounds转换为map + * @param latLngBounds + * @return + */ + public static Map latlngBoundsToMap(LatLngBounds latLngBounds){ + if(null == latLngBounds){ + return null; + } + + LatLng southwest = latLngBounds.southwest; + LatLng northeast = latLngBounds.northeast; + + Map southwestMap = FlutterDataConveter.latLngToMap(southwest); + Map northeastMap = FlutterDataConveter.latLngToMap(northeast); + + HashMap latLngBoundsMap = new HashMap<>(); + latLngBoundsMap.put("southwest", southwestMap); + latLngBoundsMap.put("northeast", northeastMap); + + return latLngBoundsMap; + } + + /** + * 将map形式的带权值经纬度数据转换为结构化的带权值的经纬度数据 + * @param dataList + * @return + */ + public static List mapToWeightedLatLngList(List > dataList) { + if(null == dataList){ + return null; + } + + List weightedLatLngList = new ArrayList(); + Iterator itr = dataList.iterator(); + while (itr.hasNext()){ + Map data = ( Map )itr.next(); + if(null == data){ + return null; + } + + if(!data.containsKey("pt") + || !data.containsKey("intensity")){ + return null; + } + + Object intensityObj = data.get("intensity"); + if(null == intensityObj){ + return null; + } + + double intensity = (double)intensityObj; + + Object ptObj = data.get("pt"); + if(null == ptObj){ + return null; + } + + Map ptMap = (Map)ptObj; + if(null == ptMap){ + return null; + } + + LatLng latLng = FlutterDataConveter.mapToLatlng(ptMap); + + WeightedLatLng weightedLatLng = new WeightedLatLng(latLng, intensity); + weightedLatLngList.add(weightedLatLng); + } + + return weightedLatLngList; + } + + /** + * 将map形式的屏幕点坐标转换为Point + * @param pointMap + * @return + */ + public static Point mapToPoint(Map pointMap){ + if(null == pointMap){ + return null; + } + + if(!pointMap.containsKey("x") || !pointMap.containsKey("y")){ + return null; + } + + Object xObj = pointMap.get("x"); + Object yObj = pointMap.get("y"); + if(null == xObj || null == yObj){ + return null; + } + + double x = (double)xObj; + double y = (double)yObj; + + Point point = new Point((int)x, (int)y); + + return point; + } + + /** + * 将LatLng转成map存储 + * @param latLng + * @return + */ + public static Map latLngToMap(LatLng latLng){ + if(null == latLng){ + return null; + } + + Map resultMap = new HashMap(); + resultMap.put("latitude", latLng.latitude); + resultMap.put("longitude", latLng.longitude); + resultMap.put("latitudeE6", latLng.latitudeE6); + resultMap.put("longitudeE6", latLng.longitudeE6); + + return resultMap; + } + + /** + * 将Point转成map存储 + * @param point + * @return + */ + public static Map pointToMap(Point point){ + if(null == point){ + return null; + } + + Map resultMap = new HashMap(); + resultMap.put("x", (double)point.x); + resultMap.put("y", (double)point.y); + + return resultMap; + } + + /** + * 将flutter传过来的BMFRect转换为WinRound + * BMFRect结构: + * /// 屏幕左上点对应的直角地理坐标 + * final BMFPoint origin; + * + * /// 坐标范围 + * final BMFSize size; + * + * WinRound结构: + * public int left = 0; + * public int right = 0; + * public int top = 0; + * public int bottom = 0; + */ + public static WinRound BMFRectToWinRound(Map bmfRect){ + if(null == bmfRect){ + return null; + } + + if(!bmfRect.containsKey("origin") || !bmfRect.containsKey("size")){ + return null; + } + + Map pointMap = (Map)bmfRect.get("origin"); + Point point = FlutterDataConveter.mapToPoint(pointMap); + if(null == point){ + return null; + } + + Map sizeMap = (Map)bmfRect.get("size"); + if(null == sizeMap){ + return null; + } + + if(null == sizeMap){ + return null; + } + + Double width = new TypeConverter().getValue(sizeMap, "width"); + Double height = new TypeConverter().getValue(sizeMap, "height"); + + if(null == width || null == height){ + return null; + } + + WinRound winRound = new WinRound(); + winRound.left = point.x; + winRound.top = point.y; + winRound.right = point.x + width.intValue(); + winRound.bottom = point.y + height.intValue(); + return winRound; + + } + + + public static WinRound insetsToWinRound(Map insets){ + if(null == insets){ + return null; + } + + if(!insets.containsKey("top") + ||!insets.containsKey("left") + || !insets.containsKey("bottom") + || !insets.containsKey("right")){ + return null; + } + + Double top = new TypeConverter().getValue(insets, "top"); + Double left = new TypeConverter().getValue(insets, "left"); + Double bottom = new TypeConverter().getValue(insets, "bottom"); + Double right = new TypeConverter().getValue(insets, "right"); + if(null == top + || null == left + || null == bottom + || null == right){ + return null; + } + + WinRound winRound = new WinRound(); + winRound.left = left.intValue(); + winRound.top = top.intValue(); + winRound.right = right.intValue(); + winRound.bottom = bottom.intValue(); + return winRound; + + } + + public static LatLngBounds BMFRectToLatLngBounds(BaiduMap baiduMap, Map bmfRect){ + if(null == baiduMap || null == bmfRect){ + return null; + } + + WinRound winRound = FlutterDataConveter.BMFRectToWinRound(bmfRect); + if(null == bmfRect){ + return null; + } + + Point notrhEastPoint = new Point(); + notrhEastPoint.x = winRound.left; + notrhEastPoint.y = winRound.top; + Point southWestPoint = new Point(); + southWestPoint.x = winRound.right; + southWestPoint.y = winRound.bottom; + + Projection projection = baiduMap.getProjection(); + LatLng northEast = projection.fromScreenLocation(notrhEastPoint); + LatLng southWest = projection.fromScreenLocation(southWestPoint); + + + LatLngBounds latLngBounds = new LatLngBounds.Builder().include(northEast).include(southWest).build(); + + return latLngBounds; + + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/converter/TypeConverter.java b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/converter/TypeConverter.java new file mode 100644 index 0000000..6620818 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/java/com/baidu/flutter_bmfmap/utils/converter/TypeConverter.java @@ -0,0 +1,23 @@ +package com.baidu.flutter_bmfmap.utils.converter; + +import java.util.Map; + +/** + * 主要用于快速的送map中获取元素value,并进行类型转换 + * @param 目标转换类型 + */ +public class TypeConverter{ + public T getValue(Map map, String key){ //泛型方法getKey的返回值类型为T,T的类型由外部指定 + if(null == map){ + return null; + } + + Object valueObj = map.get(key); + if(null == valueObj){ + return null; + } + + T value = (T)valueObj; + return value; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/bg_edittext_focused.xml b/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/bg_edittext_focused.xml new file mode 100644 index 0000000..0b39c92 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/bg_edittext_focused.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/bg_edittext_normal.xml b/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/bg_edittext_normal.xml new file mode 100644 index 0000000..f8f5db8 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/bg_edittext_normal.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_en.png b/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_en.png new file mode 100644 index 0000000000000000000000000000000000000000..48933b49a84bfc061d80b96abece0dc67a678919 GIT binary patch literal 4785 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 literal 0 HcmV?d00001 diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_markc.png b/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_markc.png new file mode 100644 index 0000000000000000000000000000000000000000..28522b77a1afc1658b5e5797fc7c4114253dcfa6 GIT binary patch literal 3673 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 literal 0 HcmV?d00001 diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_markd.png b/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_markd.png new file mode 100644 index 0000000000000000000000000000000000000000..57a1a11652a83b7fd3fefecaf130a4ea628188c3 GIT binary patch literal 3547 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 literal 0 HcmV?d00001 diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_markg.png b/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_markg.png new file mode 100644 index 0000000000000000000000000000000000000000..89943badf1df8d84d8b92088d4622f15846a5fd4 GIT binary patch literal 3735 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 B@G1ZR literal 0 HcmV?d00001 diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_markh.png b/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_markh.png new file mode 100644 index 0000000000000000000000000000000000000000..cb839a7db5c22628e42a9090fa42d6c97a7c6414 GIT binary patch literal 3393 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 literal 0 HcmV?d00001 diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_marki.png b/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_marki.png new file mode 100644 index 0000000000000000000000000000000000000000..d2dd2bfe5591aa6959c308cd6b32667d4dfa69ee GIT binary patch literal 3361 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 literal 0 HcmV?d00001 diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_markj.png b/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/icon_markj.png new file mode 100644 index 0000000000000000000000000000000000000000..d45490ea6c0b799f599af7d3feeddf5e2cc394d3 GIT binary patch literal 3489 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 literal 0 HcmV?d00001 diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/launch_background.xml b/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/popup.png b/lib/my_flutter_bmfmap-1.0.2/android/src/main/res/drawable/popup.png new file mode 100644 index 0000000000000000000000000000000000000000..3dd9e5191f42ce093779a22ad85a7ff5f8af476e GIT binary patch literal 3296 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 eP^%08_&ES+O+||~WsxNS0000 + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFFileManager : NSObject + +/// registar +@property (nonatomic, strong) NSObject *registar; + +/// BMFFileManagerCenter ++ (instancetype)defaultCenter; + +/// 获取flutter端图片资源路径 +- (NSString *)pathForFlutterImageName:(NSString *)imageName; + +/// 获取flutter端文件资源路径 +- (NSString *)pathForFlutterFileName:(NSString *)fileName; + +/// 获取flutter端瓦片图路径 +- (NSString *)pathForFlutterTileResources:(NSString *)tileName; +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Common/BMFFileManager.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Common/BMFFileManager.m new file mode 100644 index 0000000..aeaab29 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Common/BMFFileManager.m @@ -0,0 +1,39 @@ +// +// BMFFileManager.m +// flutter_bmfmap +// +// Created by zbj on 2020/2/12. +// + +#import "BMFFileManager.h" + +@implementation BMFFileManager + +static BMFFileManager *_instance = nil; ++ (instancetype)defaultCenter{ + if (!_instance) { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _instance = [[BMFFileManager alloc] init]; + }); + } + return _instance; +} +/// 获取flutter端图片资源路径 +- (NSString *)pathForFlutterImageName:(NSString *)imageName{ + if (!_registar) return nil; + return [[NSBundle mainBundle] pathForResource:[_registar lookupKeyForAsset:imageName] ofType:nil]; +} +/// 获取flutter端文件资源路径 +- (NSString *)pathForFlutterFileName:(NSString *)fileName{ + if (!_registar) return nil; + return [[NSBundle mainBundle] pathForResource:[_registar lookupKeyForAsset:fileName] ofType:nil]; +} + +/// 获取flutter端瓦片图路径 +- (NSString *)pathForFlutterTileResources:(NSString *)tileName{ + if (!_registar) return nil; + // 指定resoures/bmflocaltileimage/目录下存放瓦片图资源 + return [[NSBundle mainBundle] pathForResource:[_registar lookupKeyForAsset:[NSString stringWithFormat:@"resoures/bmflocaltileimage/%@", tileName]] ofType:nil]; +} +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/FlutterBmfmapPlugin.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/FlutterBmfmapPlugin.h new file mode 100644 index 0000000..7bddfb9 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/FlutterBmfmapPlugin.h @@ -0,0 +1,7 @@ +#import + +@interface FlutterBmfmapPlugin : NSObject + +//@property (nonatomic, strong) FlutterMethodChannel *channel; + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/FlutterBmfmapPlugin.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/FlutterBmfmapPlugin.m new file mode 100644 index 0000000..f5add60 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/FlutterBmfmapPlugin.m @@ -0,0 +1,30 @@ +#import "FlutterBmfmapPlugin.h" +#import +#import +#import "BMFMapViewController.h" +#import "BMFFileManager.h" +#import "BMFOfflineMapManager.h" + + + +static NSString *kBMFMapIdentifier = @"flutter_bmfmap/map/BMKMapView"; +@interface FlutterBmfmapPlugin() + + +@end + +@implementation FlutterBmfmapPlugin +/// 注册 ++ (void)registerWithRegistrar:(NSObject*)registrar { + // 初始化BMFFileManagerCenter + [BMFFileManager defaultCenter].registar = registrar; + + // mapView + [registrar registerViewFactory:[[FlutterMapViewFactory alloc] initWithMessenger:registrar.messenger] withId:kBMFMapIdentifier]; + + // 离线地图 + [BMFOfflineMapManager registerWithRegistrar:registrar]; + +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFAnnotationHandles.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFAnnotationHandles.h new file mode 100644 index 0000000..8d7a0c2 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFAnnotationHandles.h @@ -0,0 +1,44 @@ +// +// BMFAnnotationHandles.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/2/11. +// + +#import "BMFMapViewHandle.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFAnnotationHandles : NSObject +/// BMFAnnotationHandler管理中心 ++ (instancetype)defalutCenter; + +- (NSDictionary *)annotationHandles; +@end +#pragma mark - marker + +@interface BMFAddAnnotation : NSObject + +@end + +@interface BMFAddAnnotations : NSObject + +@end + +@interface BMFRemoveAnnotation : NSObject + +@end + +@interface BMFRemoveAnnotations : NSObject + +@end + +@interface BMFCleanAllAnnotations : NSObject + +@end + +@interface BMFUpdateAnnotation : NSObject + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFAnnotationHandles.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFAnnotationHandles.m new file mode 100644 index 0000000..619fa9a --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFAnnotationHandles.m @@ -0,0 +1,280 @@ +// +// BMFAnnotationHandles.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/2/11. +// + +#import "BMFAnnotationHandles.h" +#import "BMFMapView.h" +#import "NSObject+BMFVerify.h" +#import "BMFAnnotationMethodConst.h" +#import "BMFFileManager.h" +#import "UIColor+BMFString.h" +#import "BMFAnnotation.h" +#import "BMFMapModels.h" + +@interface BMFAnnotationHandles () +{ + NSDictionary *_handles; +} +@end +@implementation BMFAnnotationHandles + +static BMFAnnotationHandles *_instance = nil; ++ (instancetype)defalutCenter{ + if (!_instance) { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _instance = [[BMFAnnotationHandles alloc] init]; + }); + } + return _instance; +} + +- (NSDictionary *)annotationHandles{ + if (!_handles) { + _handles = @{ + kBMFMapAddMarkerMethod: NSStringFromClass([BMFAddAnnotation class]), + kBMFMapAddMarkersMethod: NSStringFromClass([BMFAddAnnotations class]), + kBMFMapRemoveMarkerMethod: NSStringFromClass([BMFRemoveAnnotation class]), + kBMFMapRemoveMarkersMethod: NSStringFromClass([BMFRemoveAnnotations class]), + kBMFMapCleanAllMarkersMethod: NSStringFromClass([BMFCleanAllAnnotations class]), + kBMFMapUpdateMarkerMemberMethod: NSStringFromClass([BMFUpdateAnnotation class]) + }; + } + return _handles; +} +@end + +#pragma mark - marker + +@implementation BMFAddAnnotation + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + BMKPointAnnotation *annotation = [BMKPointAnnotation annotationWith:call.arguments]; + if (annotation) { + [_mapView addAnnotation:annotation]; + result(@YES); + } else { + result(@NO); + } +} + +@end + +@implementation BMFAddAnnotations + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments) { + result(@NO); + return; + } + + NSMutableArray *annotations = @[].mutableCopy; + for (NSDictionary *dic in (NSArray *)call.arguments) { + BMKPointAnnotation *an = [BMKPointAnnotation annotationWith:dic]; + [annotations addObject:an]; + } + [_mapView addAnnotations:annotations]; + result(@YES); +} + +@end + + +@implementation BMFRemoveAnnotation + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || ![call.arguments safeObjectForKey:@"id"]) { + result(@NO); + return; + } + NSString *ID = [call.arguments safeObjectForKey:@"id"]; + __weak __typeof__(_mapView) weakMapView = _mapView; + [_mapView.annotations enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([ID isEqualToString:((BMKPointAnnotation *) obj).Id]) { + [weakMapView removeAnnotation:obj]; + result(@YES); + *stop = YES; + } + }]; + +} + +@end + + +@implementation BMFRemoveAnnotations + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments) { + result(@NO); + return; + } + + __block NSMutableArray *annotations = @[].mutableCopy; + for (NSDictionary *dic in (NSArray *)call.arguments) { + [_mapView.annotations enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([[dic safeObjectForKey:@"id"] isEqualToString:((BMKPointAnnotation *) obj).Id]) { + [annotations addObject:obj]; + *stop = YES; + } + }]; + } + [_mapView removeAnnotations:annotations]; + result(@YES); +} + +@end + +@implementation BMFCleanAllAnnotations + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + [_mapView removeAnnotations:_mapView.annotations]; + result(@YES); +} + +@end + +@implementation BMFUpdateAnnotation + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || ![call.arguments safeObjectForKey:@"id"]) { + result(@NO); + return; + } + NSString *ID = [call.arguments safeObjectForKey:@"id"]; + __block BMKPointAnnotation *annotation; +// __weak __typeof__(_mapView) weakMapView = _mapView; + [_mapView.annotations enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([ID isEqualToString:((BMKPointAnnotation *) obj).Id]) { + annotation = (BMKPointAnnotation *) obj; + *stop = YES; + } + }]; + if (!annotation) { + NSLog(@"根据ID(%@)未找到对应的marker", ID); + result(@NO); + } + + NSString *member = [call.arguments safeObjectForKey:@"member"]; + + if ([member isEqualToString:@"title"]) { + annotation.title = [call.arguments safeObjectForKey:@"value"]; + result(@YES); + return; + + } else if ([member isEqualToString:@"subtitle"]) { + annotation.subtitle = [call.arguments safeObjectForKey:@"value"]; + result(@YES); + return; + + } else if ([member isEqualToString:@"position"]) { + BMFCoordinate *coord = [BMFCoordinate bmf_modelWith:[call.arguments safeObjectForKey:@"value"]]; + annotation.coordinate = [coord toCLLocationCoordinate2D]; + result(@YES); + return; + + } else if ([member isEqualToString:@"isLockedToScreen"]) { + annotation.isLockedToScreen = [[call.arguments safeObjectForKey:@"value"] boolValue]; + if (annotation.isLockedToScreen) { + annotation.screenPointToLock = [[BMFMapPoint bmf_modelWith:[call.arguments safeObjectForKey:@"screenPointToLock"]] toCGPoint]; + } + [_mapView setMapStatus:_mapView.getMapStatus]; + result(@YES); + return; + + } else if ([member isEqualToString:@"icon"]) { + BMKPinAnnotationView *view = (BMKPinAnnotationView *)[_mapView viewForAnnotation:annotation]; + view.image = [UIImage imageWithContentsOfFile:[[BMFFileManager defaultCenter] pathForFlutterImageName:[call.arguments safeObjectForKey:@"value"]]]; + result(@YES); + return; + + } else if ([member isEqualToString:@"centerOffset"]) { + BMKPinAnnotationView *view = (BMKPinAnnotationView *)[_mapView viewForAnnotation:annotation]; + BMFMapPoint *point = [BMFMapPoint bmf_modelWith:[call.arguments safeObjectForKey:@"value"]]; + view.centerOffset = [point toCGPoint]; + result(@YES); + return; + + } else if ([member isEqualToString:@"enabled3D"]) { + BMKPinAnnotationView *view = (BMKPinAnnotationView *)[_mapView viewForAnnotation:annotation]; + BOOL value = [[call.arguments safeObjectForKey:@"value"] boolValue]; + view.enabled3D = value; + result(@YES); + return; + + } else if ([member isEqualToString:@"enabled"]) { + BMKPinAnnotationView *view = (BMKPinAnnotationView *)[_mapView viewForAnnotation:annotation]; + BOOL value = [[call.arguments safeObjectForKey:@"value"] boolValue]; + view.enabled = value; + result(@YES); + return; + + } else if ([member isEqualToString:@"draggable"]) { + BMKPinAnnotationView *view = (BMKPinAnnotationView *)[_mapView viewForAnnotation:annotation]; + BOOL value = [[call.arguments safeObjectForKey:@"value"] boolValue]; + view.draggable = value; + result(@YES); + return; + + } else if ([member isEqualToString:@"zIndex"]) { + NSLog(@"ios - 暂不支持设置zIndex"); + result(@YES); + return; + + } else if ([member isEqualToString:@"visible"]) { + NSLog(@"ios - 暂不支持设置visible"); + result(@YES); + return; + + } else { + result(@YES); + } + +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFHeatMapHandles.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFHeatMapHandles.h new file mode 100644 index 0000000..c2c159b --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFHeatMapHandles.h @@ -0,0 +1,32 @@ +// +// BMFHeatMapHandles.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/4/3. +// + +#import "BMFMapViewHandle.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFHeatMapHandles : NSObject +/// BMFHeatMapHandles管理中心 ++ (instancetype)defalutCenter; + +- (NSDictionary *)heatMapHandles; +@end +#pragma mark - heatMap + +@interface BMFShowHeatMap : NSObject + +@end + +@interface BMFAddHeatMap : NSObject + +@end + +@interface BMFRemoveHeatMap : NSObject + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFHeatMapHandles.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFHeatMapHandles.m new file mode 100644 index 0000000..06fc07d --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFHeatMapHandles.m @@ -0,0 +1,100 @@ +// +// BMFHeatMapHandles.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/4/3. +// + +#import "BMFHeatMapHandles.h" +#import "BMFMapView.h" +#import "BMFHeatMapConst.h" +#import "NSObject+BMFVerify.h" +#import "BMFHeatMapModel.h" +@interface BMFHeatMapHandles () +{ + NSDictionary *_handles; +} +@end + +@implementation BMFHeatMapHandles +static BMFHeatMapHandles *_instance = nil; ++ (instancetype)defalutCenter{ + if (!_instance) { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _instance = [[BMFHeatMapHandles alloc] init]; + }); + } + return _instance; +} + +- (NSDictionary *)heatMapHandles{ + if (!_handles) { + _handles = @{ + kBMFMapShowHeatMapMethod: NSStringFromClass([BMFShowHeatMap class]), + kBMFMapAddHeatMapMethod: NSStringFromClass([BMFAddHeatMap class]), + kBMFMapRemoveHeatMapMethod: NSStringFromClass([BMFRemoveHeatMap class]), + }; + } + return _handles; +} +@end + +#pragma mark - heatMap + +@implementation BMFShowHeatMap + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !call.arguments[@"show"]) { + result(@NO); + return; + } + _mapView.baiduHeatMapEnabled = [[call.arguments safeValueForKey:@"show"] boolValue]; + result(@YES); +} + +@end + +@implementation BMFAddHeatMap + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !call.arguments[@"heatMap"]) { + result(@NO); + return; + } + BMFHeatMapModel *heatMap = [BMFHeatMapModel bmf_modelWith:[call.arguments safeObjectForKey:@"heatMap"]]; + [_mapView addHeatMap:[heatMap toBMKHeatMap]]; + result(@YES); +} + +@end + +@implementation BMFRemoveHeatMap + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + [_mapView removeHeatMap]; + result(@YES); +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapView.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapView.h new file mode 100644 index 0000000..c3bee9c --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapView.h @@ -0,0 +1,27 @@ +// +// BMFMapView.h +// flutter_bmfmap +// +// Created by zbj on 2020/2/10. +// +#ifndef __BMFMapView__H__ +#define __BMFMapView__H__ +#ifdef __OBJC__ +#import +#endif +#endif + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFMapView : BMKMapView ++ (instancetype)viewWithFrame:(CGRect)frame; ++ (instancetype)viewWithFrame:(CGRect)frame dic:(NSDictionary *)dic; + + +/// 更新地图属性(初始化时,部分参数会不生效),在地图加载完成时调用 +- (BOOL)updateMapOptions; + +- (BOOL)updateMapViewWith:(NSDictionary *)dic; +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapView.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapView.m new file mode 100644 index 0000000..f71eacf --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapView.m @@ -0,0 +1,205 @@ +// +// BMFMapView.m +// flutter_bmfmap +// +// Created by zbj on 2020/2/10. +// + +#import "BMFMapView.h" +#import "BMFMapModels.h" +#import "BMFEdgeInsets.h" +@interface BMFMapView () + +/// map属性集合 +@property (nonatomic, strong) NSDictionary *mapViewOptions; +@end + +@implementation BMFMapView ++ (instancetype)viewWithFrame:(CGRect)frame { + return [[BMFMapView alloc] initWithFrame:frame]; +} ++ (instancetype)viewWithFrame:(CGRect)frame dic:(NSDictionary *)dic{ + BMFMapView *map = [[BMFMapView alloc] initWithFrame:frame]; + map.mapViewOptions = dic; + [map updateMapViewWith:dic]; + return map; +} +// 此方法解决初始时设置的属性不生效问题 +- (BOOL)updateMapOptions { + if (_mapViewOptions) { + // logo位置 默认BMKLogoPositionLeftBottom + if ([_mapViewOptions[@"logoPosition"] isValidParam]) { + self.logoPosition = [_mapViewOptions[@"logoPosition"] intValue]; + } + // 指南针的位置,设定坐标以BMKMapView左上角为原点,向右向下增长 + if ([_mapViewOptions[@"compassPosition"] isValidParam]) { + BMFMapPoint *point = [BMFMapPoint bmf_modelWith:_mapViewOptions[@"compassPosition"]]; + self.compassPosition = [point toCGPoint]; + } + // 设定地图是否打开百度城市热力图图层(百度自有数据) + if ([_mapViewOptions[@"baiduHeatMapEnabled"] isValidParam]) { + self.baiduHeatMapEnabled = [_mapViewOptions[@"baiduHeatMapEnabled"] boolValue]; + } + // 设定是否显式比例尺 + if ([_mapViewOptions[@"showMapScaleBar"] isValidParam]) { + self.showMapScaleBar = [_mapViewOptions[@"showMapScaleBar"] boolValue]; + } + // 比例尺的位置,设定坐标以BMKMapView左上角为原点,向右向下增长 + if ([_mapViewOptions[@"mapScaleBarPosition"] isValidParam]) { + self.mapScaleBarPosition = [[BMFMapPoint bmf_modelWith:_mapViewOptions[@"mapScaleBarPosition"]] toCGPoint]; + } + return YES; + } + return NO; +} +- (BOOL)updateMapViewWith:(NSDictionary *)dic { + BOOL result = NO; + if (dic) { + // 当前地图类型,可设定为标准地图、卫星地图 + if ([dic[@"mapType"] isValidParam]) { + self.mapType = [dic[@"mapType"] intValue]; + } + // 限制地图的显示范围(地图状态改变时,该范围不会在地图显示范围外。设置成功后,会调整地图显示该范围) + if ([dic[@"limitMapBounds"] isValidParam]) { + BMFCoordinateBounds *limitMapBounds = [BMFCoordinateBounds bmf_modelWith:dic[@"limitMapBounds"]]; + self.limitMapRegion = [limitMapBounds toCoordinateRegion]; + } + // logo位置 默认BMKLogoPositionLeftBottom + if ([_mapViewOptions[@"logoPosition"] isValidParam]) { + self.logoPosition = [dic[@"logoPosition"] intValue]; + } + // 指南针的位置,设定坐标以BMKMapView左上角为原点,向右向下增长 + if ([dic[@"compassPosition"] isValidParam]) { + BMFMapPoint *point = [BMFMapPoint bmf_modelWith:dic[@"compassPosition"]]; + self.compassPosition = [point toCGPoint]; + } + // 当前地图的中心点,改变该值时,地图的比例尺级别不会发生变化 + if ([dic[@"center"] isValidParam]) { + BMFCoordinate *coord = [BMFCoordinate bmf_modelWith:dic[@"center"]]; + [self setCenterCoordinate:[coord toCLLocationCoordinate2D]]; + } + // 地图比例尺级别,在手机上当前可使用的级别为4-21级 + if ([dic[@"zoomLevel"] isValidParam]) { + self.zoomLevel = [dic[@"zoomLevel"] intValue]; + } + // 地图的自定义最大比例尺级别 + if ([dic[@"minZoomLevel"] isValidParam]) { + self.minZoomLevel = [dic[@"minZoomLevel"] intValue]; + } + // 地图的自定义最大比例尺级别 + if ([dic[@"maxZoomLevel"] isValidParam]) { + self.maxZoomLevel = [dic[@"maxZoomLevel"] intValue]; + } + // 地图旋转角度,在手机上当前可使用的范围为-180~180度 + if ([dic[@"rotation"] isValidParam]) { + self.rotation = [dic[@"rotation"] intValue]; + } + // 地图俯视角度,在手机上当前可使用的范围为-45~0度 + if ([dic[@"overlooking"] isValidParam]) { + self.overlooking = [dic[@"overlooking"] intValue]; + } + // 地图俯视角度最小值(即角度最大值),在手机上当前可设置的范围为-79~0度 + if ([dic[@"minOverlooking"] isValidParam]) { + self.minOverlooking = [dic[@"minOverlooking"] intValue]; + } + // 设定地图是否现显示3D楼块效果 + if ([dic[@"buildingsEnabled"] isValidParam]) { + self.buildingsEnabled = [dic[@"buildingsEnabled"] boolValue]; + [self setMapStatus:[self getMapStatus]]; + } + // 设定地图是否显示底图poi标注(不包含室内图标注),默认YES + if ([dic[@"showMapPoi"] isValidParam]) { + self.showMapPoi = [dic[@"showMapPoi"] boolValue]; + } + // 设定地图是否打开路况图层 + if ([dic[@"trafficEnabled"] isValidParam]) { + self.trafficEnabled = [dic[@"trafficEnabled"] boolValue]; + } + // 设定地图是否打开百度城市热力图图层(百度自有数据) + if ([dic[@"baiduHeatMapEnabled"] isValidParam]) { + self.baiduHeatMapEnabled = [dic[@"baiduHeatMapEnabled"] boolValue]; + } + // 设定地图View能否支持所有手势操作 + if ([dic[@"gesturesEnabled"] isValidParam]) { + self.gesturesEnabled = [dic[@"gesturesEnabled"] boolValue]; + } + // 设定地图View能否支持用户多点缩放(双指) + if ([dic[@"zoomEnabled"] isValidParam]) { + self.zoomEnabled = [dic[@"zoomEnabled"] boolValue]; + } + // 设定地图View能否支持用户缩放(双击或双指单击) + if ([dic[@"zoomEnabledWithTap"] isValidParam]) { + self.zoomEnabledWithTap = [dic[@"zoomEnabledWithTap"] boolValue]; + } + // 设定地图View能否支持用户移动地图 + if ([dic[@"scrollEnabled"] isValidParam]) { + self.scrollEnabled = [dic[@"scrollEnabled"] boolValue]; + } + // 设定地图View能否支持俯仰角 + if ([dic[@"overlookEnabled"] isValidParam]) { + self.overlookEnabled = [dic[@"overlookEnabled"] boolValue]; + } + // 设定地图View能否支持旋转 + if ([dic[@"rotateEnabled"] isValidParam]) { + self.rotateEnabled = [dic[@"rotateEnabled"] boolValue]; + } + // 设定地图是否回调force touch事件,默认为NO,仅适用于支持3D Touch的情况, + // 开启后会回调 - mapview:onForceTouch:force:maximumPossibleForce: + if ([dic[@"forceTouchEnabled"] isValidParam]) { + self.forceTouchEnabled = [dic[@"forceTouchEnabled"] boolValue]; + } + // 设定是否显式比例尺 + if ([dic[@"showMapScaleBar"] isValidParam]) { + self.showMapScaleBar = [dic[@"showMapScaleBar"] boolValue]; + } + // 比例尺的位置,设定坐标以BMKMapView左上角为原点,向右向下增长 + if ([dic[@"mapScaleBarPosition"] isValidParam]) { + self.mapScaleBarPosition = [[BMFMapPoint bmf_modelWith:dic[@"mapScaleBarPosition"]] toCGPoint]; + } + + // 当前地图范围,采用直角坐标系表示,向右向下增长 + if ([dic[@"visibleMapBounds"] isValidParam]) { + BMFCoordinateBounds *visibleMapBounds = [BMFCoordinateBounds bmf_modelWith:dic[@"visibleMapBounds"]]; + [self setVisibleMapRect:[visibleMapBounds toBMKMapRect] animated:YES]; + } + // 地图预留边界 + if ([dic[@"mapPadding"] isValidParam]) { + BMFEdgeInsets *edge = [BMFEdgeInsets bmf_modelWith:dic[@"mapPadding"]]; + self.mapPadding = [edge toUIEdgeInsets]; + } + // 设置mapPadding时,地图中心(屏幕坐标:BMKMapStatus.targetScreenPt)是否跟着改变,默认YES + if ([dic[@"updateTargetScreenPtWhenMapPaddingChanged"] isValidParam]) { + self.updateTargetScreenPtWhenMapPaddingChanged = [dic[@"updateTargetScreenPtWhenMapPaddingChanged"] boolValue]; + } + // 设定双指手势操作时,BMKMapView的旋转和缩放效果的中心点。 + // 设置为YES时,以手势的中心点(二个指头的中心点)为中心进行旋转和缩放,地图中心点会改变; + // 设置为NO时,以当前地图的中心点为中心进行旋转和缩放,地图中心点不变; + // 默认值为NO。 + if ([dic[@"changeWithTouchPointCenterEnabled"] isValidParam]) { + self.ChangeWithTouchPointCenterEnabled = [dic[@"changeWithTouchPointCenterEnabled"] boolValue]; + } + // 设定双击手势放大地图时,BMKMapView的放大效果的中心点。 + // 设置为YES时,以双击的位置为中心点进行放大,地图中心点会改变; + // 设置为NO时,以当前地图的中心点为中心进行放大,地图中心点不变; + // 默认值为YES。 + if ([dic[@"changeCenterWithDoubleTouchPointEnabled"] isValidParam]) { + self.ChangeCenterWithDoubleTouchPointEnabled = [dic[@"changeCenterWithDoubleTouchPointEnabled"] boolValue]; + } + // 设定地图是否显示室内图 + if ([dic[@"baseIndoorMapEnabled"] isValidParam]) { + self.baseIndoorMapEnabled = [dic[@"baseIndoorMapEnabled"] boolValue]; + } + // 设定室内图标注是否显示,默认YES,仅当显示室内图(baseIndoorMapEnabled为YES)时生效 + if ([dic[@"showIndoorMapPoi"] isValidParam] && self.baseIndoorMapEnabled) { + self.showIndoorMapPoi = [dic[@"showIndoorMapPoi"] boolValue]; + } + result = YES; + } + return result; +} + +- (void)dealloc { + _mapViewOptions = nil; +// NSLog(@"-mapView-dealloc"); +} +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewController.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewController.h new file mode 100644 index 0000000..f564095 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewController.h @@ -0,0 +1,27 @@ +// +// BMFMapViewController.h +// flutter_bmfmap +// +// Created by zbj on 2020/2/6. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFMapViewController : NSObject + +- (instancetype)initWithWithFrame:(CGRect)frame + viewIdentifier:(int64_t)viewId + arguments:(id _Nullable)args + binaryMessenger:(NSObject*)messenger; + +@end + + +@interface FlutterMapViewFactory : NSObject + +- (instancetype)initWithMessenger:(NSObject*)messager; + +@end +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewController.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewController.m new file mode 100644 index 0000000..581a25a --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewController.m @@ -0,0 +1,506 @@ +// +// BMFMapViewController.m +// flutter_bmfmap +// +// Created by zbj on 2020/2/6. +// + +#import "BMFMapViewController.h" +#import "BMFMapView.h" +#import "BMFMapCallBackConst.h" +#import "BMFMapViewHandles.h" +#import "BMFAnnotationHandles.h" +#import "BMFOverlayHandles.h" +#import "BMFHeatMapHandles.h" +#import "BMFUserLocationHandles.h" +#import "BMFProjectionHandles.h" +#import "BMFMapModels.h" +#import "BMFMapStatusModel.h" +#import "BMFMapPoiModel.h" +#import "BMFIndoorMapInfoModel.h" +#import "BMFAnnotation.h" +#import "BMFFileManager.h" +#import "BMFPolyline.h" +#import "BMFArcline.h" +#import "BMFCircle.h" +#import "BMFPolygon.h" +#import "UIColor+BMFString.h" + +static NSString *kBMFMapChannelName = @"flutter_bmfmap/map_"; +static NSString *kMapMethods = @"flutter_bmfmap/map/"; +static NSString *kMarkerMethods = @"flutter_bmfmap/marker/"; +static NSString *kOverlayMethods = @"flutter_bmfmap/overlay/"; +static NSString *kHeatMapMethods = @"flutter_bmfmap/heatMap/"; +static NSString *kUserLocationMethods = @"flutter_bmfmap/userLocation/"; +static NSString *kProjectionMethods = @"flutter_bmfmap/projection/"; + +@interface BMFMapViewController() +{ + FlutterMethodChannel *_channel; + BMFMapView *_mapView; + +} + +@end +@implementation BMFMapViewController + +- (instancetype)initWithWithFrame:(CGRect)frame + viewIdentifier:(int64_t)viewId + arguments:(id _Nullable)args + binaryMessenger:(NSObject*)messenger{ + if ([super init]) { + int Id = (int)(viewId + 97); + NSString *channelName = [NSString stringWithFormat:@"%@%@", kBMFMapChannelName, [NSString stringWithFormat:@"%c", Id]]; + _channel = [FlutterMethodChannel methodChannelWithName:channelName binaryMessenger:messenger]; + _mapView = [BMFMapView viewWithFrame:frame dic:(NSDictionary*)args]; + _mapView.delegate = self; + +#pragma mark - flutter -> ios + __weak __typeof__(_mapView) weakMapView = _mapView; + [_channel setMethodCallHandler:^(FlutterMethodCall * _Nonnull call, FlutterResult _Nonnull result) { + NSObject *handler; + // map + if ([call.method hasPrefix:kMapMethods]) { + handler = [NSClassFromString([BMFMapViewHandles defalutCenter].mapViewHandles[call.method]) new]; + } + // marker + if ([call.method hasPrefix:kMarkerMethods]) { + handler = [NSClassFromString([BMFAnnotationHandles defalutCenter].annotationHandles[call.method]) new]; + } + // overlay + if ([call.method hasPrefix:kOverlayMethods]) { + handler = [NSClassFromString([BMFOverlayHandles defalutCenter].overlayHandles[call.method]) new]; + } + // 热力图 + if ([call.method hasPrefix:kHeatMapMethods]) { + handler = [NSClassFromString([BMFHeatMapHandles defalutCenter].heatMapHandles[call.method]) new]; + } + // 定位图层 + if ([call.method hasPrefix:kUserLocationMethods]) { + handler = [NSClassFromString([BMFUserLocationHandles defalutCenter].userLocationHandles[call.method]) new]; + } + // 数据转换 + if ([call.method hasPrefix:kProjectionMethods]) { + handler = [NSClassFromString([BMFProjectionHandles defalutCenter].projectionHandles[call.method]) new]; + } + + + if (handler) { + [[handler initWith:weakMapView] handleMethodCall:call result:result]; + } else { + if ([call.method isEqualToString:@"flutter_bmfmap/map/didUpdateWidget"]) { +// NSLog(@"native - didUpdateWidget"); + return; + } + if ([call.method isEqualToString:@"flutter_bmfmap/map/reassemble"]) { +// NSLog(@"native - reassemble"); + return; + } + result(FlutterMethodNotImplemented); + } + }]; + } + return self; +} +- (nonnull UIView *)view { + return _mapView; +} +- (void)dealloc { + _channel = nil; + _mapView.delegate = nil; + _mapView = nil; +// NSLog(@"-BMFMapViewController-dealloc"); +} +#pragma mark - ios -> flutter +#pragma mark - BMKMapViewDelegate +/// 地图加载完成 +- (void)mapViewDidFinishLoading:(BMKMapView *)mapView{ + if (_mapView) { + // 对初始时不生效的属性,在此再调用一次.暂时这么解决 + [_mapView updateMapOptions]; + } + if (!_channel) return; + [_channel invokeMethod:kBMFMapDidLoadCallback arguments:@{@"success": @YES} result:nil]; +} +/// 地图渲染完成 +- (void)mapViewDidFinishRendering:(BMKMapView *)mapView{ + if (!_channel) return; + [_channel invokeMethod:kBMFMapDidRenderCallback arguments:@{@"success": @YES} result:nil]; +} + +/// 地图渲染每一帧画面过程中,以及每次需要重绘地图时(例如添加覆盖物)都会调用此接口 +- (void)mapView:(BMKMapView *)mapView onDrawMapFrame:(BMKMapStatus*)status{ + if (!_channel) return; + BMFMapStatusModel *mapStatus = [BMFMapStatusModel fromMapStatus:status]; + [_channel invokeMethod:kBMFMapOnDrawMapFrameCallback + arguments:@{@"mapStatus": [mapStatus bmf_toDictionary]} + result:nil]; + +} + +/// 地图区域即将改变时会调用此接口 +- (void)mapView:(BMKMapView *)mapView regionWillChangeAnimated:(BOOL)animated{ + if (!_channel) return; + BMFMapStatusModel *mapStatus = [BMFMapStatusModel fromMapStatus:[_mapView getMapStatus]]; + [_channel invokeMethod:kBMFMapRegionWillChangeCallback + arguments:@{@"mapStatus": [mapStatus bmf_toDictionary]} + result:nil]; +} + +/// 地图区域即将改变时会调用此接口 +- (void)mapView:(BMKMapView *)mapView regionWillChangeAnimated:(BOOL)animated reason:(BMKRegionChangeReason)reason{ + if (!_channel) return; + BMFMapStatusModel *mapStatus = [BMFMapStatusModel fromMapStatus:[_mapView getMapStatus]]; + [_channel invokeMethod:kBMFMapRegionWillChangeWithReasonCallback + arguments:@{@"mapStatus": [mapStatus bmf_toDictionary], @"reason": @(reason)} + result:nil]; +} + +/// 地图区域改变完成后会调用此接口 +- (void)mapView:(BMKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{ + if (!_channel) return; + BMFMapStatusModel *mapStatus = [BMFMapStatusModel fromMapStatus:[_mapView getMapStatus]]; + [_channel invokeMethod:kBMFMapRegionDidChangeCallback + arguments:@{@"mapStatus": [mapStatus bmf_toDictionary]} + result:nil]; +} + +/// 地图区域改变完成后会调用此接口 +- (void)mapView:(BMKMapView *)mapView regionDidChangeAnimated:(BOOL)animated reason:(BMKRegionChangeReason)reason{ + if (!_channel) return; + BMFMapStatusModel *mapStatus = [BMFMapStatusModel fromMapStatus:[_mapView getMapStatus]]; + [_channel invokeMethod:kBMFMapRegionDidChangeWithReasonCallback + arguments:@{@"mapStatus": [mapStatus bmf_toDictionary], @"reason": @(reason)} + result:nil]; +} +/// 点中底图标注后会回调此接口 +- (void)mapView:(BMKMapView *)mapView onClickedMapPoi:(BMKMapPoi *)mapPoi{ + if (!_channel) return; + BMFMapPoiModel *model = [BMFMapPoiModel fromBMKMapPoi:mapPoi]; + [_channel invokeMethod:kBMFMapOnClickedMapPoiCallback arguments:@{@"poi": [model bmf_toDictionary]} result:nil]; +} +/// 点中底图空白处会回调此接口 +- (void)mapView:(BMKMapView *)mapView onClickedMapBlank:(CLLocationCoordinate2D)coordinate{ + if (!_channel) return; + BMFCoordinate *coord = [BMFCoordinate fromCLLocationCoordinate2D:coordinate]; + [_channel invokeMethod:kBMFMapOnClickedMapBlankCallback arguments:@{@"coord": [coord bmf_toDictionary]} result:nil]; +} + +/// 双击地图时会回调此接口 +- (void)mapview:(BMKMapView *)mapView onDoubleClick:(CLLocationCoordinate2D)coordinate{ + if (!_channel) return; + BMFCoordinate *coord = [BMFCoordinate fromCLLocationCoordinate2D:coordinate]; + [_channel invokeMethod:kBMFMapOnDoubleClickCallback arguments:@{@"coord": [coord bmf_toDictionary]} result:nil]; +} + +/// 长按地图时会回调此接口 +- (void)mapview:(BMKMapView *)mapView onLongClick:(CLLocationCoordinate2D)coordinate{ + if (!_channel) return; + BMFCoordinate *coord = [BMFCoordinate fromCLLocationCoordinate2D:coordinate]; + [_channel invokeMethod:kBMFMapOnLongClickCallback arguments:@{@"coord": [coord bmf_toDictionary]} result:nil]; +} + +/// 3DTouch 按地图时会回调此接口(仅在支持3D Touch,且fouchTouchEnabled属性为YES时,会回调此接口) +/// force 触摸该点的力度(参考UITouch的force属性) +/// maximumPossibleForce 当前输入机制下的最大可能力度(参考UITouch的maximumPossibleForce属性) +- (void)mapview:(BMKMapView *)mapView onForceTouch:(CLLocationCoordinate2D)coordinate force:(CGFloat)force maximumPossibleForce:(CGFloat)maximumPossibleForce{ + if (!_channel) return; + BMFCoordinate *coord = [BMFCoordinate fromCLLocationCoordinate2D:coordinate]; + [_channel invokeMethod:kBMFMapOnForceTouchCallback arguments:@{@"coord": [coord bmf_toDictionary], @"force": @(force), @"maximumPossibleForce": @(maximumPossibleForce)} result:nil]; +} + +///地图状态改变完成后会调用此接口 +- (void)mapStatusDidChanged:(BMKMapView *)mapView{ + if (!_channel) return; + [_channel invokeMethod:kBMFMapStatusDidChangedCallback arguments:nil result:nil]; +} + +- (void)mapview:(BMKMapView *)mapView baseIndoorMapWithIn:(BOOL)flag baseIndoorMapInfo:(BMKBaseIndoorMapInfo *)info{ + if (!_channel) return; + BMFIndoorMapInfoModel *model = [BMFIndoorMapInfoModel new]; + model.strID = info.strID; + model.strFloor = info.strFloor; + model.listStrFloors = info.arrStrFloors; + [_channel invokeMethod:kBMFMapInOrOutBaseIndoorMapCallback arguments:@{@"flag": @(flag), @"info": [model bmf_toDictionary]} result:nil]; +} +#pragma mark - annotationView +- (BMFAnnotationModel *)annotationModelfromAnnotionView:(BMKAnnotationView *)view{ + BMFAnnotationModel *model = [BMFAnnotationModel new]; + BMKPointAnnotation *an = (BMKPointAnnotation *)view.annotation; + model.Id = an.Id; + model.title = an.title; + model.subtitle = an.subtitle; + model.position = [BMFCoordinate fromCLLocationCoordinate2D:an.coordinate]; + model.isLockedToScreen = an.isLockedToScreen; + model.screenPointToLock = [BMFMapPoint fromCGPoint:an.screenPointToLock]; + model.annotationViewOptions = an.annotationViewOptions; + return model; +} +/// 根据anntation生成对应的View +- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id)annotation{ + if ([annotation isKindOfClass:[BMKPointAnnotation class]]) { + BMFAnnotationViewOptions *options =((BMKPointAnnotation *)annotation).annotationViewOptions; + NSString *identifier = options.identifier ? options.identifier : NSStringFromClass([BMKPointAnnotation class]); + BMKPinAnnotationView *annotationView = (BMKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:identifier]; + + if (!annotationView) { + annotationView = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier]; + } + + if (options.icon) { + //TODO:image加入空值判断 + if ([[options.icon substringToIndex:1] isEqualToString:@"/"]) { + annotationView.image = [UIImage imageWithData:[NSData dataWithContentsOfFile:options.icon] scale:[[UIScreen mainScreen] scale]]; + } else { + annotationView.image = [UIImage imageWithContentsOfFile:[[BMFFileManager defaultCenter] pathForFlutterImageName:options.icon]]; + } + } + + if (options.centerOffset) { + annotationView.centerOffset = [options.centerOffset toCGPoint]; + } + annotationView.selected = options.selected; + annotationView.draggable = options.draggable; + annotationView.enabled = options.enabled; + annotationView.enabled3D = options.enabled3D; + + return annotationView; + } + return nil; +} + +/// 当mapView新添加annotation views时,调用此接口 +- (void)mapView:(BMKMapView *)mapView didAddAnnotationViews:(NSArray *)views{ + if (!_channel) return; +} + +/// 每次点击BMKAnnotationView都会回调此接口。 +- (void)mapView:(BMKMapView *)mapView clickAnnotationView:(BMKAnnotationView *)view{ + if (!_channel) return; + if ([view isKindOfClass:NSClassFromString(@"BMKUserLocationView")]) { + return; + } + // 改为回调id + BMFAnnotationModel *model = [self annotationModelfromAnnotionView:view]; + [_channel invokeMethod:kBMFMapClickedMarkerCallback arguments:@{@"id": model.Id} result:^(id _Nullable result) { + + }]; +} +/// 当选中一个annotation views时,调用此接口 +/// @param mapView 地图View +/// @param view 选中的annotation views +- (void)mapView:(BMKMapView *)mapView didSelectAnnotationView:(BMKAnnotationView *)view{ + if (!_channel) return; + if ([view isKindOfClass:NSClassFromString(@"BMKUserLocationView")]) { + return; + } + // 改为回调id + BMFAnnotationModel *model = [self annotationModelfromAnnotionView:view]; + [_channel invokeMethod:kBMFMapDidSelectMarkerCallback arguments:@{@"id": model.Id} result:nil]; +} + +/// 当取消选中一个annotationView时,调用此接口 +- (void)mapView:(BMKMapView *)mapView didDeselectAnnotationView:(BMKAnnotationView *)view{ + if (!_channel) return; + // 改为回调id + BMFAnnotationModel *model = [self annotationModelfromAnnotionView:view]; + [_channel invokeMethod:kBMFMapDidDeselectMarkerCallback arguments:@{@"id": model.Id} result:nil]; +} + +/// 拖动annotation view时,若view的状态发生变化,会调用此函数。ios3.2以后支持 +- (void)mapView:(BMKMapView *)mapView annotationView:(BMKAnnotationView *)view didChangeDragState:(BMKAnnotationViewDragState)newState + fromOldState:(BMKAnnotationViewDragState)oldState{ + if (!_channel) return; + // 改为回调id + BMFAnnotationModel *model = [self annotationModelfromAnnotionView:view]; + [_channel invokeMethod:kBMFMapDidDragMarkerCallback arguments:@{@"id": model.Id} result:nil]; + +} + +/// 当点击annotationView的泡泡view时,调用此接口 +- (void)mapView:(BMKMapView *)mapView annotationViewForBubble:(BMKAnnotationView *)view{ + if (!_channel) return; + // 改为回调id + BMFAnnotationModel *model = [self annotationModelfromAnnotionView:view]; + [_channel invokeMethod:kBMFMapDidClickedPaoPaoCallback arguments:@{@"id": model.Id} result:nil]; +} +#pragma mark - overlayView + +- (BMFPolylineModel *)polylineModelWith:(BMKPolylineView *)view{ + BMFPolylineModel *model = [BMFPolylineModel new]; + BMKPolyline *line = view.polyline; + model = line.polylineModel; + return model; +} +- (BMKPolylineView *)viewForPolyline:(BMKPolyline *)polyline{ + BMFPolylineViewOptions *options = polyline.polylineModel.polylineOptions; + BMKPolylineView *polylineView = [[BMKPolylineView alloc] initWithPolyline:polyline]; + polylineView.lineWidth = options.width; + polylineView.lineDashType = options.lineDashType; + polylineView.lineCapType = options.lineCapType; + polylineView.lineJoinType = options.lineJoinType; + + switch (polyline.lineType) { + case kBMFDashLine: + case kBMFColorLine:{ + if ([options.colors firstObject]) { + polylineView.strokeColor = [UIColor fromColorString:[options.colors firstObject]]; + } else { + // TODO:strokeColor 默认值 + } + break; + } + case kBMFMultiDashLine: + case kBMFColorsLine:{ + size_t colorsCount = options.colors.count; + NSMutableArray *colors = [NSMutableArray array]; + for (size_t i = 0; i < colorsCount; i++) { + // TODO:colors加入空值判断 + [colors addObject:[UIColor fromColorString:options.colors[i]]]; + } + polylineView.colors = colors; + break; + } + case kBMFTextureLine:{ + // TODO:iamge加入空值判断 + NSString *imagePath = [[BMFFileManager defaultCenter] pathForFlutterImageName:[options.textures firstObject]]; + [polylineView loadStrokeTextureImage:[UIImage imageWithContentsOfFile:imagePath]]; + break; + } + case kBMFTexturesLine:{ + NSMutableArray *images = [NSMutableArray array]; + size_t imagesCount = options.textures.count; + NSString *imagePath = nil; + for (size_t i = 0; i < imagesCount; i++) { + //TODO:image加入空值判断 + imagePath = options.textures[i]; + UIImage *image = [UIImage imageWithContentsOfFile:[[BMFFileManager defaultCenter] pathForFlutterImageName:imagePath]]; + [images addObject:image]; + } + [polylineView loadStrokeTextureImages:images]; + break; + } + default: + break; + } + + return polylineView; +} + +- (BMKArclineView *)viewForArcline:(BMKArcline *)arcline{ + BMFArclineViewOptions *options = arcline.arclineViewOptions; + BMKArclineView *arclineView = [[BMKArclineView alloc] initWithArcline:arcline]; + if (options.color) { + arclineView.strokeColor = [UIColor fromColorString:options.color]; + } else { + arclineView.strokeColor = [UIColor colorWithRed:0.f green:0.f blue:1.f alpha:1.f]; + } + arclineView.lineWidth = options.width; + arclineView.lineDashType = options.lineDashType; + return arclineView; +} + +- (BMKPolygonView *)viewForPolygon:(BMKPolygon *)polygon{ + BMFPolygonViewOptions *options = polygon.polygonViewOptions; + BMKPolygonView *polygonView = [[BMKPolygonView alloc] initWithPolygon:polygon]; + if (options.strokeColor) { + polygonView.strokeColor = [UIColor fromColorString:options.strokeColor]; + } else { + polygonView.strokeColor = [UIColor colorWithRed:0.f green:0.f blue:1.f alpha:1.f]; + } + if (options.fillColor) { + polygonView.fillColor = [UIColor fromColorString:options.fillColor]; + } + polygonView.lineWidth = options.width; + polygonView.lineDashType = options.lineDashType; + return polygonView; +} + +- (BMKCircleView *)viewForCircleline:(BMKCircle *)circle{ + BMFCircleViewOptions *options = circle.circleViewOptions; + BMKCircleView *circleView = [[BMKCircleView alloc] initWithCircle:circle]; + if (options.strokeColor) { + circleView.strokeColor = [UIColor fromColorString:options.strokeColor]; + } else { + circleView.strokeColor = [UIColor colorWithRed:0.f green:0.f blue:1.f alpha:1.f]; + } + if (options.fillColor) { + circleView.fillColor = [UIColor fromColorString:options.fillColor]; + } + circleView.lineWidth = options.width; + circleView.lineDashType = options.lineDashType; + return circleView; +} +- (BMKOverlayView *)mapView:(BMKMapView *)mapView viewForOverlay:(id)overlay{ + if ([overlay isKindOfClass:[BMKPolyline class]]) { + return [self viewForPolyline:(BMKPolyline *)overlay]; + + } else if ([overlay isKindOfClass:[BMKArcline class]]) { + return [self viewForArcline:(BMKArcline *)overlay]; + + } else if ([overlay isKindOfClass:[BMKPolygon class]]){ + return [self viewForPolygon:(BMKPolygon *)overlay]; + + } else if ([overlay isKindOfClass:[BMKCircle class]]) { + return [self viewForCircleline:(BMKCircle *)overlay]; + + } else if ([overlay isKindOfClass:[BMKTileLayer class]]){ + return [[BMKTileLayerView alloc] initWithTileLayer:overlay]; + + } else if ([overlay isKindOfClass:[BMKGroundOverlay class]]) { + return [[BMKGroundOverlayView alloc] initWithGroundOverlay:overlay]; + } + + return nil; +} +/** + *当mapView新添加overlay views时,调用此接口 + *@param mapView 地图View + *@param overlayViews 新添加的overlay views + */ +- (void)mapView:(BMKMapView *)mapView didAddOverlayViews:(NSArray *)overlayViews{ + if (!_channel) return; + + //TODO:didAddOverlayViews +} +/** +*点中覆盖物后会回调此接口,目前只支持点中BMKPolylineView时回调 +*@param mapView 地图View +*@param overlayView 覆盖物view信息 +*/ +-(void)mapView:(BMKMapView *)mapView onClickedBMKOverlayView:(BMKOverlayView *)overlayView{ + if (!_channel) return; + + if ([overlayView isKindOfClass:[BMKPolylineView class]]) { + BMFPolylineModel *model = [self polylineModelWith:(BMKPolylineView *)overlayView]; +// NSLog(@"%@", [model bmf_toDictionary]); + // 暂时只传id + [_channel invokeMethod:kMapOnClickedOverlayCallback arguments:@{@"polyline": @{@"id" :model.Id}} result:nil]; + } +} +@end + +@interface FlutterMapViewFactory() +{ + NSObject *_messenger; +} +@end +@implementation FlutterMapViewFactory +- (instancetype)initWithMessenger:(NSObject *)messager{ + if ([super init]) { + _messenger = messager; + } + return self; +} + +- (NSObject *)createArgsCodec{ + return [FlutterStandardMessageCodec sharedInstance]; +} + +- (NSObject *)createWithFrame:(CGRect)frame viewIdentifier:(int64_t)viewId arguments:(id)args{ + BMFMapViewController *mapViewController = [[BMFMapViewController alloc] initWithWithFrame:frame viewIdentifier:viewId arguments:args binaryMessenger:_messenger]; + return mapViewController; +} + + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewHandle.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewHandle.h new file mode 100644 index 0000000..520f8e6 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewHandle.h @@ -0,0 +1,29 @@ +// +// BMFMapViewHandle.h +// flutter_bmfmap +// +// Created by zbj on 2020/2/11. +// + +#import + +@class BMFMapView; + +NS_ASSUME_NONNULL_BEGIN + +@protocol BMFMapViewHandler + +@required + +/// mapView (弱引用) +@property(nonatomic, weak) BMFMapView *_mapView; + +/// 创建协议实例 +- (NSObject *)initWith:(BMFMapView *)mapView; + +/// flutter --> ios +- (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewHandles.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewHandles.h new file mode 100644 index 0000000..6b836f1 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewHandles.h @@ -0,0 +1,197 @@ +// +// BMFMapViewHandles.h +// flutter_bmfmap +// +// Created by zbj on 2020/2/11. +// + +#import "BMFMapViewHandle.h" + +NS_ASSUME_NONNULL_BEGIN +@interface BMFMapViewHandles : NSObject + +/// BMFMapViewHandler管理中心 ++ (instancetype)defalutCenter; + +- (NSDictionary *)mapViewHandles; + +@end + +#pragma mark - map + +@interface BMFUpdateMap : NSObject + +@end + +@interface BMFShowBaseIndoorMap : NSObject + +@end + +@interface BMFShowBaseIndoorMapPoi : NSObject + +@end + +@interface BMFSwitchBaseIndoorMapFloor : NSObject + +@end + +@interface BMFGetFocusedBaseIndoorMapInfo : NSObject + +@end + +@interface BMFSetCustomMapStyleEnable : NSObject + +@end + +@interface BMFSetCustomMapStylePath : NSObject + +@end + +@interface BMFSetCustomMapStyleWithOption : NSObject + +@end + +@interface BMFZoomIn : NSObject + +@end + +@interface BMFZoomOut : NSObject + +@end + +@interface BMFSetCustomTrafficColor : NSObject + +@end + +@interface BMFSetCenterCoordinate : NSObject + +@end + +@interface BMFTakeSnapshot : NSObject + +@end + +@interface BMFTakeSnapshotWithRect : NSObject + +@end + +@interface BMFSetCompassImage : NSObject + +@end + +@interface BMFSetVisibleMapBounds : NSObject + +@end + +@interface BMFSetVisibleMapBoundsWithPadding : NSObject + +@end + + +@interface BMFSetMapStatus : NSObject + +@end + +#pragma mark - Get + +@interface BMFGetMapStatus : NSObject + +@end + +@interface BMFGetMapType : NSObject + +@end + +@interface BMFGetZoomLevel : NSObject + +@end + +@interface BMFGetMinZoomLevel : NSObject + +@end + +@interface BMFGetMaxZoomLevel : NSObject + +@end + +@interface BMFGetRotation : NSObject + +@end + +@interface BMFGetOverlooking : NSObject + +@end + + +@interface BMFGetMinOverlooking : NSObject + +@end + +@interface BMFGetBuildingsEnabled : NSObject + +@end + +@interface BMFGetShowMapPoi : NSObject + +@end + +@interface BMFGetTrafficEnabled : NSObject + +@end + +@interface BMFGetBaiduHeatMapEnabled : NSObject + +@end + +@interface BMFGetGesturesEnabled : NSObject + +@end + +@interface BMFGetZoomEnabled : NSObject + +@end + +@interface BMFGetZoomEnabledWithTap : NSObject + +@end + +@interface BMFGetScrollEnabled : NSObject + +@end + +@interface BMFGetOverlookEnabled : NSObject + +@end + +@interface BMFGetRotateEnabled : NSObject + +@end + +@interface BMFGetForceTouchEnabled : NSObject + +@end + +@interface BMFGetShowMapScaleBar : NSObject + +@end + +@interface BMFGetMapScaleBarPosition : NSObject + +@end + +@interface BMFGetLogoPosition : NSObject + +@end + +@interface BMFGetVisibleMapBounds : NSObject + +@end + +@interface BMFGetBaseIndoorMapEnabled : NSObject + +@end + +@interface BMFGetShowIndoorMapPoi : NSObject + +@end +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewHandles.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewHandles.m new file mode 100644 index 0000000..110cbb8 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFMapViewHandles.m @@ -0,0 +1,886 @@ +// +// BMFMapViewHandles.m +// flutter_bmfmap +// +// Created by zbj on 2020/2/11. +// + +#import "BMFMapViewHandles.h" +#import "BMFMapView.h" +#import "BMFMapMethodConst.h" +#import "BMFAnnotationMethodConst.h" +#import "BMFFileManager.h" +#import "UIColor+BMFString.h" +#import "BMFMapModels.h" +#import "BMFEdgeInsets.h" +#import "BMFIndoorMapInfoModel.h" +#import "BMFMapStatusModel.h" + +@interface BMFMapViewHandles () +{ + NSDictionary *_handles; +} +@end + +@implementation BMFMapViewHandles + +static BMFMapViewHandles *_instance = nil; ++ (instancetype)defalutCenter{ + if (!_instance) { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _instance = [[BMFMapViewHandles alloc] init]; + }); + } + return _instance; +} +- (NSDictionary *)mapViewHandles{ + if (!_handles) { + _handles = @{ + kBMFMapUpdateMethod: NSStringFromClass([BMFUpdateMap class]), + kBMFMapShowBaseIndoorMapMethod: NSStringFromClass([BMFShowBaseIndoorMap class]), + kBMFMapShowBaseIndoorMapPoiMethod: NSStringFromClass([BMFShowBaseIndoorMapPoi class]), + kBMFMapSwitchBaseIndoorMapFloorMethod: NSStringFromClass([BMFSwitchBaseIndoorMapFloor class]), + kBMFMapGetFocusedBaseIndoorMapInfoMethod: NSStringFromClass([BMFGetFocusedBaseIndoorMapInfo class]), + kBMFMapSetCustomMapStyleEnableMethod: NSStringFromClass([BMFSetCustomMapStyleEnable class]), + kBMFMapSetCustomMapStylePathMethod: NSStringFromClass([BMFSetCustomMapStylePath class]), + kBMFMapSetCustomMapStyleWithOptionMethod: NSStringFromClass([BMFSetCustomMapStyleWithOption class]), + kBMFMapZoomInMethod: NSStringFromClass([BMFZoomIn class]), + kBMFMapZoomOutMethod: NSStringFromClass([BMFZoomOut class]), + kBMFMapSetCustomTrafficColorMethod: NSStringFromClass([BMFSetCustomTrafficColor class]), + kBMFMapSetCenterCoordinateMethod: NSStringFromClass([BMFSetCenterCoordinate class]), + kBMFMapTakeSnapshotMethod: NSStringFromClass([BMFTakeSnapshot class]), + kBMFMapTakeSnapshotWithRectMethod: NSStringFromClass([BMFTakeSnapshotWithRect class]), + kBMFMapSetCompassImageMethod: NSStringFromClass([BMFSetCompassImage class]), + kBMFMapSetVisibleMapBoundsMethod: NSStringFromClass([BMFSetVisibleMapBounds class]), + kBMFMapSetVisibleMapBoundsWithPaddingMethod: NSStringFromClass([BMFSetVisibleMapBoundsWithPadding class]), + kBMFMapSetMapStatusMethod: NSStringFromClass([BMFSetMapStatus class]), + kBMFMapGetMapStatusMethod: NSStringFromClass([BMFGetMapStatus class]), + kBMFMapGetMapTypeMethod: NSStringFromClass([BMFGetMapType class]), + kBMFMapGetZoomLevelMethod: NSStringFromClass([BMFGetZoomLevel class]), + kBMFMapGetMinZoomLevelMethod: NSStringFromClass([BMFGetMinZoomLevel class]), + kBMFMapGetMaxZoomLevelMethod: NSStringFromClass([BMFGetMaxZoomLevel class]), + kBMFMapGetRotationMethod: NSStringFromClass([BMFGetRotation class]), + kBMFMapGetOverlookingMethod: NSStringFromClass([BMFGetOverlooking class]), + kBMFMapGetMinOverlookingMethod: NSStringFromClass([BMFGetMinOverlooking class]), + kBMFMapGetBuildingsEnabledMethod: NSStringFromClass([BMFGetBuildingsEnabled class]), + kBMFMapGetShowMapPoiMethod: NSStringFromClass([BMFGetShowMapPoi class]), + kBMFMapGetTrafficEnabledMethod: NSStringFromClass([BMFGetTrafficEnabled class]), + kBMFMapGetBaiduHeatMapEnabledMethod: NSStringFromClass([BMFGetBaiduHeatMapEnabled class]), + kBMFMapGetGesturesEnabledMethod: NSStringFromClass([BMFGetGesturesEnabled class]), + kBMFMapGetZoomEnabledMethod: NSStringFromClass([BMFGetZoomEnabled class]), + kBMFMapGetZoomEnabledWithTapMethod: NSStringFromClass([BMFGetZoomEnabledWithTap class]), + kBMFMapGetScrollEnabledMethod: NSStringFromClass([BMFGetScrollEnabled class]), + kBMFMapGetOverlookEnabledMethod: NSStringFromClass([BMFGetOverlookEnabled class]), + kBMFMapGetRotateEnabledMethod: NSStringFromClass([BMFGetRotateEnabled class]), + kBMFMapGetForceTouchEnabledMethod: NSStringFromClass([BMFGetForceTouchEnabled class]), + kBMFMapGetShowMapScaleBarMethod: NSStringFromClass([BMFGetShowMapScaleBar class]), + kBMFMapGetMapScaleBarPositionMethod: NSStringFromClass([BMFGetMapScaleBarPosition class]), + kBMFMapGetLogoPositionMethod: NSStringFromClass([BMFGetLogoPosition class]), + kBMFMapGetVisibleMapBoundsMethod: NSStringFromClass([BMFGetVisibleMapBounds class]), + kBMFMapGetBaseIndoorMapEnabledMethod: NSStringFromClass([BMFGetBaseIndoorMapEnabled class]), + kBMFMapGetShowIndoorMapPoiMethod: NSStringFromClass([BMFGetShowIndoorMapPoi class]) + + }; + } + return _handles; +} + +@end + +#pragma mark - map + +@implementation BMFUpdateMap + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments) { + result(@NO); + return; + } + BOOL success = [_mapView updateMapViewWith:call.arguments]; + result(@(success)); +} + +@end + +@implementation BMFShowBaseIndoorMap + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments) { + result(@NO); + return; + } + _mapView.baseIndoorMapEnabled = [[call.arguments safeValueForKey:@"show"] boolValue]; + [_mapView setMapStatus:[_mapView getMapStatus]]; + result(@YES); +} + +@end + +@implementation BMFShowBaseIndoorMapPoi + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !_mapView.baseIndoorMapEnabled) { + result(@NO); + return; + } + _mapView.showIndoorMapPoi = [[call.arguments safeValueForKey:@"showIndoorPoi"] boolValue]; + result(@YES); +} + +@end + +@implementation BMFSwitchBaseIndoorMapFloor + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + BMKSwitchIndoorFloorError error; + if (!call.arguments || !call.arguments[@"floorId"] || !call.arguments[@"indoorId"] || !_mapView.baseIndoorMapEnabled) { + error = BMKSwitchIndoorFloorFailed; + result(@{@"result":@(error)}); + return; + } + + error = [_mapView switchBaseIndoorMapFloor:[call.arguments safeValueForKey:@"floorId"] withID:[call.arguments safeValueForKey:@"indoorId"]]; + result(@{@"result":@(error)}); +} + +@end + +@implementation BMFGetFocusedBaseIndoorMapInfo + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!_mapView.baseIndoorMapEnabled) { + result(@{@"result": [NSNull null]}); + return; + } + BMKBaseIndoorMapInfo *info = [_mapView getFocusedBaseIndoorMapInfo]; + BMFIndoorMapInfoModel *model = [BMFIndoorMapInfoModel new]; + model.strID = info.strID; + model.strFloor = info.strFloor; + model.listStrFloors = info.arrStrFloors; + result([model bmf_toDictionary]); +} + +@end + +@implementation BMFSetCustomMapStyleEnable + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments) { + result(@NO); + return; + } + [_mapView setCustomMapStyleEnable:[[call.arguments safeValueForKey:@"enable"] boolValue]]; + result(@YES); +} + +@end + +@implementation BMFSetCustomMapStylePath + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments) { + result(@NO); + return; + } + NSString *path = [[BMFFileManager defaultCenter] pathForFlutterFileName:[call.arguments safeValueForKey:@"path"]]; + [_mapView setCustomMapStylePath:path mode:[[call.arguments safeValueForKey:@"mode"] intValue]]; + result(@YES); +} +@end + +@implementation BMFSetCustomMapStyleWithOption + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments) { + result(@NO); + return; + } + BMKCustomMapStyleOption *options = [BMKCustomMapStyleOption new]; + options.customMapStyleID = [[call.arguments safeObjectForKey:@"customMapStyleOption"] safeValueForKey:@"customMapStyleID"]; + NSString *localPath = [[call.arguments safeObjectForKey:@"customMapStyleOption"] safeValueForKey:@"customMapStyleFilePath"]; + if (localPath && localPath.length > 0) { + options.customMapStyleFilePath = [[BMFFileManager defaultCenter] pathForFlutterFileName:localPath]; + } + [_mapView setCustomMapStyleWithOption:options preLoad:^(NSString *path) { + if (path) { + result(@{@"preloadPath": path}); + } + } success:^(NSString *path) { + if (path) { + result(@{@"successPath": path}); + } + } failure:^(NSError *error, NSString *path) { + if (error) { + result(@{@"errorCode": @(error.code), @"errorPath": path ? path : [NSNull null]}); + } +// NSLog(@"failure-error=%@,path=%@", error, path); + }]; + +} + +@end + +@implementation BMFZoomIn + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + BOOL flag = [_mapView zoomIn]; + result(@(flag)); +} + +@end + +@implementation BMFZoomOut + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + BOOL flag = [_mapView zoomOut]; + result(@(flag)); +} + +@end + +@implementation BMFSetCustomTrafficColor + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments) { + result(@NO); + return; + } + UIColor *smooth = [UIColor fromColorString:[call.arguments safeValueForKey:@"smooth"]]; + UIColor *slow = [UIColor fromColorString:[call.arguments safeValueForKey:@"slow"]]; + UIColor *congestion = [UIColor fromColorString:[call.arguments safeValueForKey:@"congestion"]]; + UIColor *severeCongestion = [UIColor fromColorString:[call.arguments safeValueForKey:@"severeCongestion"]]; + if (smooth && slow && congestion && severeCongestion) { + BOOL flag = [_mapView setCustomTrafficColorForSmooth:smooth slow:slow congestion:congestion severeCongestion:severeCongestion]; + result(@(flag)); + return; + } else { + result(@NO); + } +} +@end + +@implementation BMFSetCenterCoordinate + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments) { + result(@NO); + return; + } + BMFCoordinate *coordinate = [BMFCoordinate bmf_modelWith:[call.arguments safeObjectForKey:@"coordinate"]]; + if (coordinate) { + [_mapView setCenterCoordinate:[coordinate toCLLocationCoordinate2D] animated:[[call.arguments safeValueForKey:@"animated"] boolValue]]; + result(@YES); + return; + } else { + result(@NO); + } +} +@end + +@implementation BMFTakeSnapshot + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + UIImage *image = [_mapView takeSnapshot]; + if (!image) { + result(@[]); + return; + } + NSData *data = UIImageJPEGRepresentation(image, 100); + FlutterStandardTypedData *fData = [FlutterStandardTypedData typedDataWithBytes:data]; + result(fData); +} + +@end + +@implementation BMFTakeSnapshotWithRect + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !call.arguments[@"rect"]) { + result(@[]); + return; + } + + CGRect rect = [[BMFMapRect bmf_modelWith:[call.arguments safeObjectForKey:@"rect"]] toCGRect]; + UIImage *image = [_mapView takeSnapshot:rect]; + if (!image) { + result(@[]); + return; + } + NSData *data = UIImageJPEGRepresentation(image, 100); + FlutterStandardTypedData *fData = [FlutterStandardTypedData typedDataWithBytes:data]; + result(fData); +} + +@end + +@implementation BMFSetCompassImage + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !call.arguments[@"imagePath"]) { + result(@NO); + return; + } + UIImage *image = [UIImage imageWithContentsOfFile:[[BMFFileManager defaultCenter] pathForFlutterImageName:[call.arguments safeValueForKey:@"imagePath"]]]; + [_mapView setCompassImage:image]; + result(@YES); +} + +@end + +@implementation BMFSetVisibleMapBounds + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !call.arguments[@"visibleMapBounds"] || !call.arguments[@"animated"]) { + result(@NO); + return; + } + BMFCoordinateBounds *bounds = [BMFCoordinateBounds bmf_modelWith:[call.arguments safeObjectForKey:@"visibleMapBounds"]]; + [_mapView setVisibleMapRect:[bounds toBMKMapRect] animated:[[call.arguments safeValueForKey:@"animated"] boolValue]]; + result(@YES); +} + +@end + +@implementation BMFSetVisibleMapBoundsWithPadding + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !call.arguments[@"visibleMapBounds"] || !call.arguments[@"insets"] || !call.arguments[@"animated"]) { + result(@NO); + return; + } + BMFCoordinateBounds *bounds = [BMFCoordinateBounds bmf_modelWith:[call.arguments safeObjectForKey:@"visibleMapBounds"]]; + BMFEdgeInsets *insets = [BMFEdgeInsets bmf_modelWith:[call.arguments safeObjectForKey:@"insets"]]; + [_mapView setVisibleMapRect:[bounds toBMKMapRect] edgePadding:[insets toUIEdgeInsets] animated:[[call.arguments safeValueForKey:@"animated"] boolValue]]; + result(@YES); +} + +@end + + +@implementation BMFSetMapStatus + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !call.arguments[@"mapStatus"] || !call.arguments[@"animateDurationMs"] ) { + result(@NO); + return; + } + BMFMapStatusModel *status = [BMFMapStatusModel bmf_modelWith:[call.arguments safeObjectForKey:@"mapStatus"]]; + int animate = [[call.arguments safeValueForKey:@"animateDurationMs"] intValue]; + [_mapView setMapStatus:[status toMapStatus] withAnimation: animate!=0 ? YES : NO]; + result(@YES); +} + + + +@end + +#pragma mark - Get + +@implementation BMFGetMapStatus + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + BMFMapStatusModel *status = [BMFMapStatusModel fromMapStatus:[_mapView getMapStatus]]; + status ? result(@{@"mapStatus":[status bmf_toDictionary]}) : result(@{@"mapStatus":[NSNull null]}); +} + +@end + + +@implementation BMFGetMapType + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"mapType" : @(_mapView.mapType)}); +} + +@end + +@implementation BMFGetZoomLevel + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + + result(@{@"zoomLevel": @((int)_mapView.zoomLevel)}); +} + +@end + +@implementation BMFGetMinZoomLevel + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"minZoomLevel": @((int)_mapView.minZoomLevel)}); +} + +@end + +@implementation BMFGetMaxZoomLevel + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"maxZoomLevel" : @((int)_mapView.maxZoomLevel)}); +} + +@end + +@implementation BMFGetRotation + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"rotation" : @((float)_mapView.rotation)}); +} + +@end + +@implementation BMFGetOverlooking + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"overlooking": @((float)_mapView.overlooking)}); +} + +@end + +@implementation BMFGetMinOverlooking + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"minOverlooking" : @(_mapView.minOverlooking)}); +} + +@end + +@implementation BMFGetBuildingsEnabled + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"buildingsEnabled": @(_mapView.buildingsEnabled)}); +} + +@end + +@implementation BMFGetShowMapPoi + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"showMapPoi" : @(_mapView.showMapPoi)}); +} + +@end + +@implementation BMFGetTrafficEnabled + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"trafficEnabled": @(_mapView.trafficEnabled)}); +} + +@end + +@implementation BMFGetBaiduHeatMapEnabled + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"baiduHeatMapEnabled": @(_mapView.baiduHeatMapEnabled)}); +} + +@end + +@implementation BMFGetGesturesEnabled + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"gesturesEnabled" : @(_mapView.gesturesEnabled)}); +} + +@end + +@implementation BMFGetZoomEnabled + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"zoomEnabled": @(_mapView.zoomEnabled)}); +} + +@end + +@implementation BMFGetZoomEnabledWithTap + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"zoomEnabledWithTap" : @(_mapView.zoomEnabledWithTap)}); +} + +@end + +@implementation BMFGetScrollEnabled + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"scrollEnabled" : @(_mapView.scrollEnabled)}); +} + +@end + +@implementation BMFGetOverlookEnabled + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"overlookEnabled": @(_mapView.overlookEnabled)}); +} + +@end + +@implementation BMFGetRotateEnabled + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"rotateEnabled": @(_mapView.rotateEnabled)}); +} + +@end + +@implementation BMFGetForceTouchEnabled + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"forceTouchEnabled": @(_mapView.forceTouchEnabled)}); +} + +@end + +@implementation BMFGetShowMapScaleBar + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"showMapScaleBar" : @(_mapView.showMapScaleBar)}); +} + +@end + +@implementation BMFGetMapScaleBarPosition + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + BMFMapPoint *point = [BMFMapPoint fromCGPoint:_mapView.mapScaleBarPosition]; + result(@{@"mapScaleBarPosition": [point bmf_toDictionary]}); +} + +@end + +@implementation BMFGetLogoPosition + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"logoPosition" : @(_mapView.logoPosition)}); +} + +@end + +@implementation BMFGetVisibleMapBounds + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + BMFMapRect *mapRect = [BMFMapRect fromBMKMapRect:_mapView.visibleMapRect]; + BMFCoordinateBounds *visibleMapBounds = [mapRect toBMFCoordinateBounds]; + result(@{@"visibleMapBounds": [visibleMapBounds bmf_toDictionary]}); +} + +@end + +@implementation BMFGetBaseIndoorMapEnabled + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"baseIndoorMapEnabled" : @(_mapView.baseIndoorMapEnabled)}); +} + +@end + +@implementation BMFGetShowIndoorMapPoi + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + result(@{@"showIndoorMapPoi" : @(_mapView.showIndoorMapPoi)}); +} + + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFOverlayHandles.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFOverlayHandles.h new file mode 100644 index 0000000..43fe416 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFOverlayHandles.h @@ -0,0 +1,57 @@ +// +// BMFOverlayHandles.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/2/12. +// + +#import "BMFMapViewHandle.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFOverlayHandles : NSObject +/// BMFOverlayHandler管理中心 ++ (instancetype)defalutCenter; + +- (NSDictionary *)overlayHandles; +@end + + +#pragma mark - overlay + +@interface BMFAddPolyline : NSObject + +@end + +@interface BMFAddArcline : NSObject + +@end + +@interface BMFAddPolygon : NSObject + +@end + +@interface BMFAddCircle : NSObject + +@end + +@interface BMFAddTile : NSObject + +@end + +@interface BMFAddGround : NSObject + +@end + +@interface BMFRemoveOverlay : NSObject + +@end + +@interface BMFRemoveTileOverlay : NSObject + +@end + +@interface BMFUpdatePolyline : NSObject + +@end +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFOverlayHandles.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFOverlayHandles.m new file mode 100644 index 0000000..4e7131a --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFOverlayHandles.m @@ -0,0 +1,576 @@ +// +// BMFOverlayHandles.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/2/12. +// + +#import "BMFOverlayHandles.h" +#import "BMFMapView.h" +#import "BMFOverlayMethodConst.h" +#import "BMFFileManager.h" +#import "UIColor+BMFString.h" +#import "BMFMapModels.h" +#import "BMFPolyline.h" +#import "BMFArcline.h" +#import "BMFPolygon.h" +#import "BMFCircle.h" +#import "BMFTileModel.h" +#import "BMFURLTileLayer.h" +#import "BMFAsyncTileLayer.h" +#import "BMFSyncTileLayer.h" +#import "BMFGroundOverlay.h" + +@interface BMFOverlayHandles () +{ + NSDictionary *_handles; +} +@end + +@implementation BMFOverlayHandles + +static BMFOverlayHandles *_instance = nil; ++ (instancetype)defalutCenter{ + if (!_instance) { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _instance = [[BMFOverlayHandles alloc] init]; + }); + } + return _instance; +} + +- (NSDictionary *)overlayHandles{ + if (!_handles) { + _handles = @{ + kBMFMapAddPolylineMethod: NSStringFromClass([BMFAddPolyline class]), + kBMFMapAddArcineMethod: NSStringFromClass([BMFAddArcline class]), + kBMFMapAddPolygonMethod: NSStringFromClass([BMFAddPolygon class]), + kBMFMapAddCircleMethod: NSStringFromClass([BMFAddCircle class]), + kBMFMapAddTileMethod: NSStringFromClass([BMFAddTile class]), + kBMFMapAddGroundMethod: NSStringFromClass([BMFAddGround class]), + kBMFMapRemoveOverlayMethod: NSStringFromClass([BMFRemoveOverlay class]), + kBMFMapRemoveTileMethod: NSStringFromClass([BMFRemoveTileOverlay class]), + kBMFMapUpdatePolylineMemberMethod: NSStringFromClass([BMFUpdatePolyline class]) + }; + } + return _handles; +} +@end + + +#pragma mark - overlay + +@implementation BMFAddPolyline + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + BMKPolyline *polyline = [BMKPolyline polylineWith:call.arguments]; + if (polyline) { + [_mapView addOverlay:polyline]; + result(@YES); + } else { + result(@NO); + } +} + +@end + +@implementation BMFAddArcline + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + BMKArcline *arcline = [BMKArcline arclineWith:call.arguments]; + if (arcline) { + [_mapView addOverlay:arcline]; + result(@YES); + } else { + result(@NO); + } +} + +@end + + +@implementation BMFAddPolygon + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + BMKPolygon *polygon = [BMKPolygon polygonWith:call.arguments]; + if (polygon) { + [_mapView addOverlay:polygon]; + result(@YES); + } else { + result(@NO); + } +} + +@end + + +@implementation BMFAddCircle + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + BMKCircle *circle = [BMKCircle circlelineWith:call.arguments]; + if (circle) { + [_mapView addOverlay:circle]; + result(@YES); + return; + } else { + result(@NO); + } +} + +@end + +@implementation BMFAddTile + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments) { + result(@NO); + return; + } + BMFTileModel *model = [BMFTileModel bmf_modelWith:call.arguments]; + model.tileOptions = [BMFTileModelOptions bmf_modelWith:call.arguments]; +// NSLog(@"%@", [model bmf_toDictionary]); + if (!model) { + result(@NO); + return; + } + if (model.tileOptions.tileLoadType == kBMFTileLoadUrl && model.tileOptions.url) { + BMFURLTileLayer *urlTileLayer = [BMFURLTileLayer urlTileLayerWith:model]; + [_mapView addOverlay:urlTileLayer]; + result(@YES); + return; + } else if (model.tileOptions.tileLoadType == kBMFTileLoadLocalAsync) { + BMFAsyncTileLayer *asyncTileLayer = [BMFAsyncTileLayer asyncTileLayerWith:model]; + [_mapView addOverlay:asyncTileLayer]; + result(@YES); + return; + } else if (model.tileOptions.tileLoadType == kBMFTileLoadLocalSync) { + BMFSyncTileLayer *syncTileLayer = [BMFSyncTileLayer syncTileLayerWith:model]; + [_mapView addOverlay:syncTileLayer]; + result(@YES); + return; + } else { + result(@NO); + return; + } +} + +@end + +@implementation BMFAddGround + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + BMKGroundOverlay *ground = [BMKGroundOverlay groundOverlayWith:call.arguments]; + if (ground) { + [_mapView addOverlay:ground]; + result(@YES); + return; + } else { + result(@NO); + } +} + + + +@end + +@implementation BMFRemoveOverlay + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !call.arguments[@"id"]) { + result(@NO); + return; + } + NSString *ID = [call.arguments safeValueForKey:@"id"]; + __weak __typeof__(_mapView) weakMapView = _mapView; + [_mapView.overlays enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + // 折线 + if ([obj isKindOfClass:[BMKPolyline class]]) { + BMKPolyline *overlay = (BMKPolyline *)obj; + if ([ID isEqualToString:overlay.Id]) { + [weakMapView removeOverlay:obj]; + result(@YES); + *stop = YES; + return; + } + } + // 多边形 + if ([obj isKindOfClass:[BMKPolygon class]]) { + BMKPolygon *overlay = (BMKPolygon *)obj; + if ([ID isEqualToString:overlay.Id]) { + [weakMapView removeOverlay:obj]; + result(@YES); + *stop = YES; + return; + } + } + // 弧线 + if ([obj isKindOfClass:[BMKArcline class]]) { + BMKArcline *overlay = (BMKArcline *)obj; + if ([ID isEqualToString:overlay.Id]) { + [weakMapView removeOverlay:obj]; + result(@YES); + *stop = YES; + return; + } + } + // 圆 + if ([obj isKindOfClass:[BMKCircle class]]) { + BMKCircle *overlay = (BMKCircle *)obj; + if ([ID isEqualToString:overlay.Id]) { + [weakMapView removeOverlay:obj]; + result(@YES); + *stop = YES; + return; + } + } + // ground + if ([obj isKindOfClass:[BMKGroundOverlay class]]) { + BMKGroundOverlay *overlay = (BMKGroundOverlay *)obj; + if ([ID isEqualToString:overlay.Id]) { + [weakMapView removeOverlay:obj]; + result(@YES); + *stop = YES; + return; + } + } + // 瓦片图 + if ([obj isKindOfClass:[BMFURLTileLayer class]]) { + BMFURLTileLayer *overlay = (BMFURLTileLayer *)obj; + if ([ID isEqualToString:overlay.Id]) { + [weakMapView removeOverlay:obj]; + result(@YES); + *stop = YES; + return; + } + } + if ([obj isKindOfClass:[BMFAsyncTileLayer class]]) { + BMFAsyncTileLayer *overlay = (BMFAsyncTileLayer *)obj; + if ([ID isEqualToString:overlay.Id]) { + [weakMapView removeOverlay:obj]; + result(@YES); + *stop = YES; + return; + } + } + if ([obj isKindOfClass:[BMFSyncTileLayer class]]) { + BMFSyncTileLayer *overlay = (BMFSyncTileLayer *)obj; + if ([ID isEqualToString:overlay.Id]) { + [weakMapView removeOverlay:obj]; + result(@YES); + *stop = YES; + return; + } + } + + }]; +} + + +@end + +@implementation BMFRemoveTileOverlay + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + + if (!call.arguments || !call.arguments[@"id"]) { + result(@NO); + return; + } + NSString *ID = [call.arguments safeValueForKey:@"id"]; + __weak __typeof__(_mapView) weakMapView = _mapView; + [_mapView.overlays enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + // 瓦片图 + if ([obj isKindOfClass:[BMFURLTileLayer class]]) { + BMFURLTileLayer *overlay = (BMFURLTileLayer *)obj; + if ([ID isEqualToString:overlay.Id]) { + [weakMapView removeOverlay:obj]; + result(@YES); + *stop = YES; + return; + } + } + if ([obj isKindOfClass:[BMFAsyncTileLayer class]]) { + BMFAsyncTileLayer *overlay = (BMFAsyncTileLayer *)obj; + if ([ID isEqualToString:overlay.Id]) { + [weakMapView removeOverlay:obj]; + result(@YES); + *stop = YES; + return; + } + } + if ([obj isKindOfClass:[BMFSyncTileLayer class]]) { + BMFSyncTileLayer *overlay = (BMFSyncTileLayer *)obj; + if ([ID isEqualToString:overlay.Id]) { + [weakMapView removeOverlay:obj]; + result(@YES); + *stop = YES; + return; + } + } + + }]; +} + + +@end + +#pragma mark - Update +@implementation BMFUpdatePolyline + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !call.arguments[@"id"]) { + result(@NO); + return; + } + NSString *ID = [call.arguments safeValueForKey:@"id"]; + __block BMKPolyline *polyline; + [_mapView.overlays enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[BMKPolyline class]]) { + BMKPolyline *line = (BMKPolyline *)obj; + if ([ID isEqualToString:line.Id]) { + polyline = line; + *stop = YES; + } + } + }]; + if (!polyline) { + result(@NO); + return; + } + NSString *member = [call.arguments safeValueForKey:@"member"]; + +// kBMFColorLine = 0, ///< 单色折线 +// kBMFColorsLine, ///< 多色折线 +// kBMFTextureLine, ///< 单纹理折线 +// kBMFTexturesLine, ///< 多纹理折线 +// kBMFDashLine, ///< 虚线 +// kBMFMultiDashLine ///< 多色虚线 + + if ([member isEqualToString:@"coordinates"]) { + + NSArray *coordinates = [call.arguments safeObjectForKey:@"value"]; + if (!coordinates || coordinates.count <= 1) { + result(@NO); + return; + } + + CLLocationCoordinate2D coords[coordinates.count]; + for (size_t i = 0, count = coordinates.count; i < count; i++) { + BMFCoordinate *coord = [BMFCoordinate bmf_modelWith:coordinates[i]]; + coords[i] = [coord toCLLocationCoordinate2D]; + } + switch (polyline.lineType) { + case kBMFColorLine: + case kBMFTextureLine: + case kBMFDashLine: { + [polyline setPolylineWithCoordinates:coords count:coordinates.count]; + [_mapView setMapStatus:_mapView.getMapStatus]; + result(@YES); + } + break; + case kBMFColorsLine: + case kBMFTexturesLine: + case kBMFMultiDashLine: { + if (![call.arguments safeObjectForKey:@"indexs"]) { + result(@NO); + return; + } + NSMutableArray *indexs = [NSMutableArray array]; + for (NSNumber *value in call.arguments[@"indexs"]) { + [indexs addObject:value]; + } + [polyline setPolylineWithCoordinates:coords count:coordinates.count textureIndex:indexs]; + [_mapView setMapStatus:_mapView.getMapStatus]; + result(@YES); + } + + break; + default: + break; + } + + } else if ([member isEqualToString:@"width"]) { + BMKPolylineView *view = (BMKPolylineView *)[_mapView viewForOverlay:polyline]; + view.lineWidth = [[call.arguments safeValueForKey:@"value"] floatValue]; + [_mapView setMapStatus:_mapView.getMapStatus]; + result(@YES); + return; + + } else if ([member isEqualToString:@"colors"]) { + NSArray *colorsData = [call.arguments safeObjectForKey:@"value"]; + if (!colorsData || colorsData.count <= 0) { + result(@NO); + return; + } + BMKPolylineView *view = (BMKPolylineView *)[_mapView viewForOverlay:polyline]; + NSMutableArray *colors = [NSMutableArray array]; + for (NSString *color in colorsData) { + [colors addObject:[UIColor fromColorString:color]]; + } + if (polyline.lineType == kBMFColorsLine || polyline.lineType == kBMFMultiDashLine) { + view.colors = [colors copy]; + [_mapView setMapStatus:_mapView.getMapStatus]; + result(@YES); + return; + + } else if (polyline.lineType ==kBMFColorLine || polyline.lineType == kBMFDashLine) { + view.strokeColor = [colors firstObject]; + [_mapView setMapStatus:_mapView.getMapStatus]; + result(@YES); + return; + } else { + NSLog(@"ios - 纹理折线不支持更新colors"); + result(@NO); + return; + } + + + } else if ([member isEqualToString:@"lineDashType"]) { + if (polyline.lineType == kBMFTextureLine || polyline.lineType == kBMFTexturesLine) { + NSLog(@"ios - 纹理折线不支持虚线类型"); + result(@NO); + return; + } + BMFPolylineModel *model = polyline.polylineModel; + model.polylineOptions.lineDashType = [[call.arguments safeValueForKey:@"value"] intValue]; + [_mapView removeOverlay:polyline]; + + BMKPolyline *dashLine = [BMKPolyline polylineWithModel:model]; + [_mapView addOverlay:dashLine]; +// BMKPolylineView *view = (BMKPolylineView *)[_mapView viewForOverlay:polyline]; +// view.lineDashType = [[call.arguments safeValueForKey:@"value"] intValue]; +// [_mapView setMapStatus:_mapView.getMapStatus]; + result(@YES); + return; + + } else if ([member isEqualToString:@"lineCapType"]) { + if (polyline.lineType == kBMFDashLine || polyline.lineType == kBMFMultiDashLine) { + NSLog(@"ios - lineCapType不支持虚线"); + result(@NO); + return; + } + BMKPolylineView *view = (BMKPolylineView *)[_mapView viewForOverlay:polyline]; + view.lineCapType = [[call.arguments safeValueForKey:@"value"] intValue]; + [_mapView setMapStatus:_mapView.getMapStatus]; + result(@YES); + return; + + } else if ([member isEqualToString:@"lineJoinType"]) { + if (polyline.lineType == kBMFDashLine || polyline.lineType == kBMFMultiDashLine) { + NSLog(@"ios - lineJoinType不支持虚线"); + result(@NO); + return; + } + BMKPolylineView *view = (BMKPolylineView *)[_mapView viewForOverlay:polyline]; + view.lineJoinType = [[call.arguments safeValueForKey:@"value"] intValue]; + [_mapView setMapStatus:_mapView.getMapStatus]; + result(@YES); + return; + + } else if ([member isEqualToString:@"isThined"]) { + polyline.isThined = [[call.arguments safeValueForKey:@"value"] boolValue]; + [_mapView setMapStatus:_mapView.getMapStatus]; + result(@YES); + return; + + } else if ([member isEqualToString:@"textures"]) { + NSLog(@"ios - 暂不支持更新textures"); + result(@YES); + return; + + } else if ([member isEqualToString:@"clickable"]) { + NSLog(@"ios - 暂不支持设置clickable"); + result(@YES); + return; + + } else if ([member isEqualToString:@"isKeepScale"]) { + NSLog(@"ios - 暂不支持设置isKeepScale"); + result(@YES); + return; + + } else if ([member isEqualToString:@"isFocus"]) { + NSLog(@"ios - 暂不支持设置isFocus"); + result(@YES); + return; + + } else if ([member isEqualToString:@"visible"]) { + NSLog(@"ios - 暂不支持设置visible"); + result(@YES); + return; + + } else if ([member isEqualToString:@"zIndex"]) { + NSLog(@"ios - 暂不支持设置zIndex"); + result(@YES); + return; + + } else { + result(@YES); + } + +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFProjectionHandles.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFProjectionHandles.h new file mode 100644 index 0000000..7ea333d --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFProjectionHandles.h @@ -0,0 +1,28 @@ +// +// BMFProjectionHandles.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/4/1. +// + +#import "BMFMapViewHandle.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFProjectionHandles : NSObject +/// BMFProjectionHandles管理中心 ++ (instancetype)defalutCenter; + +- (NSDictionary *)projectionHandles; +@end + +#pragma mark - convert + +@interface BMFCoordinateFromBMFPoint : NSObject + +@end + +@interface BMFPointFromBMFCoordinate : NSObject + +@end +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFProjectionHandles.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFProjectionHandles.m new file mode 100644 index 0000000..eae912f --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFProjectionHandles.m @@ -0,0 +1,86 @@ +// +// BMFProjectionHandles.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/4/1. +// + +#import "BMFProjectionHandles.h" +#import "BMFProjectionConst.h" +#import "BMFMapView.h" +#import "BMFMapModels.h" + +@interface BMFProjectionHandles () +{ + NSDictionary *_handles; +} +@end + +@implementation BMFProjectionHandles +static BMFProjectionHandles *_instance = nil; ++ (instancetype)defalutCenter{ + if (!_instance) { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _instance = [[BMFProjectionHandles alloc] init]; + }); + } + return _instance; +} + +- (NSDictionary *)projectionHandles{ + if (!_handles) { + _handles = @{ + kBMFCoordinateFromScreenPointMethod: NSStringFromClass([BMFCoordinateFromBMFPoint class]), + kBMFScreenPointFromCoordinateMethod: NSStringFromClass([BMFPointFromBMFCoordinate class]), + }; + } + return _handles; +} +@end + +#pragma mark - convert +@implementation BMFCoordinateFromBMFPoint + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || call.arguments[@"point"]) { + result([NSNull null]); + return; + } + BMFMapPoint *point = [BMFMapPoint bmf_modelWith:[call.arguments safeObjectForKey:@"point"]]; + CLLocationCoordinate2D coord = [_mapView convertPoint:[point toCGPoint] toCoordinateFromView:_mapView]; + BMFCoordinate *coordinate = [BMFCoordinate fromCLLocationCoordinate2D:coord]; + result(@{@"coordinate" : [coordinate bmf_toDictionary]}); +} + +@end + + +@implementation BMFPointFromBMFCoordinate + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || call.arguments[@"coordinate"]) { + result([NSNull null]); + return; + } + BMFCoordinate *coord = [BMFCoordinate bmf_modelWith:[call.arguments safeObjectForKey:@"coordinate"]]; + CGPoint p = [_mapView convertCoordinate:[coord toCLLocationCoordinate2D] toPointToView:_mapView]; + BMFMapPoint *point = [BMFMapPoint fromCGPoint:p]; + result(@{@"point" : [point bmf_toDictionary]}); +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFUserLocationHandles.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFUserLocationHandles.h new file mode 100644 index 0000000..b283c71 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFUserLocationHandles.h @@ -0,0 +1,40 @@ +// +// BMFUserLocationHandles.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/01. +// + +#import "BMFMapViewHandle.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFUserLocationHandles : NSObject +/// BMFUserLocationHandler管理中心 ++ (instancetype)defalutCenter; + +- (NSDictionary *)userLocationHandles; +@end +#pragma mark - userLocation + +@interface BMFShowUserLocation : NSObject + + +@end + +@interface BMFSetUserTrackingMode : NSObject + +@end + +@interface BMFIsUserLocationVisible : NSObject + +@end + +@interface BMFUpdateLocationData : NSObject + +@end + +@interface BMFUpdateLocationDisplayParam : NSObject + +@end +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFUserLocationHandles.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFUserLocationHandles.m new file mode 100644 index 0000000..e8d1c4a --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/BMFUserLocationHandles.m @@ -0,0 +1,151 @@ +// +// BMFUserLocationHandles.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/01. +// + +#import "BMFUserLocationHandles.h" +#import "BMFMapView.h" +#import "BMFUserLocationConst.h" +#import "NSObject+BMFVerify.h" +#import "BMFUserLocationModel.h" + +@interface BMFUserLocationHandles () +{ + NSDictionary *_handles; +} +@end +@implementation BMFUserLocationHandles +static BMFUserLocationHandles *_instance = nil; ++ (instancetype)defalutCenter{ + if (!_instance) { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _instance = [[BMFUserLocationHandles alloc] init]; + }); + } + return _instance; +} + +- (NSDictionary *)userLocationHandles{ + if (!_handles) { + _handles = @{ + kBMFMapShowUserLocationMethod: NSStringFromClass([BMFShowUserLocation class]), + kBMFMapUserTrackingModeMethod: NSStringFromClass([BMFSetUserTrackingMode class]), + kBMFMapIsUserLocationVisibleMethod : NSStringFromClass([BMFIsUserLocationVisible class]), + kBMFMapUpdateLocationDataMethod: NSStringFromClass([BMFUpdateLocationData class]), + kBMFMapUpdateLocationDisplayParamMethod : NSStringFromClass([BMFUpdateLocationDisplayParam class]), + }; + } + return _handles; +} +@end + +#pragma mark - userLocation + +@implementation BMFShowUserLocation + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !call.arguments[@"show"]) { + result(@NO); + return; + } +// NSLog(@"ios-call.arguments=%@", call.arguments); + _mapView.showsUserLocation = [[call.arguments safeValueForKey:@"show"] boolValue]; + result(@YES); +} + +@end + +@implementation BMFSetUserTrackingMode + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !call.arguments[@"userTrackingMode"]) { + result(@NO); + return; + } + _mapView.userTrackingMode = [[call.arguments safeValueForKey:@"userTrackingMode"] intValue]; + result(@YES); +} + +@end + +@implementation BMFIsUserLocationVisible + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { +// NSLog(@"ios-BMFIsUserLocationVisible"); + if (!_mapView.showsUserLocation) { + result(@{@"userLocationVisible": @NO}); + return; + } + + result(@{@"userLocationVisible": @(_mapView.userLocationVisible)}); +} + +@end + +@implementation BMFUpdateLocationData + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { +// NSLog(@"ios-BMFUpdateLocationData-call.arguments=%@", call.arguments); + if (!call.arguments || !call.arguments[@"userLocation"]) { + result(@NO); + return; + } + BMFUserLocationModel *userLocation = [BMFUserLocationModel bmf_modelWith:[call.arguments safeObjectForKey:@"userLocation"]]; + [_mapView updateLocationData:[userLocation toBMKUserLocation]]; + result(@YES); +} + +@end + +@implementation BMFUpdateLocationDisplayParam + +@synthesize _mapView; + +- (nonnull NSObject *)initWith:(nonnull BMFMapView *)mapView { + _mapView = mapView; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { +// NSLog(@"ios-BMFUpdateLocationDisplayParam-call.arguments=%@", call.arguments); + if (!call.arguments || !call.arguments[@"userlocationDisplayParam"]) { + result(@NO); + return; + } + BMFLocationViewDisplayParam *displayParam = [BMFLocationViewDisplayParam bmf_modelWith:[call.arguments safeObjectForKey:@"userlocationDisplayParam"]]; + [_mapView updateLocationViewWithParam:[displayParam toBMKLocationViewDisplayParam]]; + result(@YES); +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/marker/BMFAnnotation.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/marker/BMFAnnotation.h new file mode 100644 index 0000000..69589e4 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/marker/BMFAnnotation.h @@ -0,0 +1,32 @@ +// +// BMFAnnotation.h +// flutter_bmfmap +// +// Created by zbj on 2020/2/11. +// + +#ifndef __BMFAnnotation__H__ +#define __BMFAnnotation__H__ +#ifdef __OBJC__ +#import +#endif +#endif +#import "BMFAnnotationModel.h" + +NS_ASSUME_NONNULL_BEGIN + +// 改为分类,继承会出现固定屏幕不生效 +@interface BMKPointAnnotation (BMFAnnotation) + +/// BMFAnnotation ++ (instancetype)annotationWith:(NSDictionary *)dic; + +/// annotation唯一id +@property (nonatomic, copy,readonly) NSString *Id; + +/// annotationView的属性配置model +@property (nonatomic, strong,readonly) BMFAnnotationViewOptions *annotationViewOptions; + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/marker/BMFAnnotation.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/marker/BMFAnnotation.m new file mode 100644 index 0000000..6dc248b --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/marker/BMFAnnotation.m @@ -0,0 +1,65 @@ +// +// BMFAnnotation.m +// flutter_bmfmap +// +// Created by zbj on 2020/2/11. +// + +#import "BMFAnnotation.h" +#import +#import "BMFMapModels.h" + +static const void *IDKey = &IDKey; +static const void *annotationViewOptionsKey = &annotationViewOptionsKey; + +@implementation BMKPointAnnotation (BMFAnnotation) +- (NSString *)Id{ + return objc_getAssociatedObject(self, IDKey); +} +- (void)setId:(NSString * _Nonnull)Id{ + objc_setAssociatedObject(self, IDKey, Id, OBJC_ASSOCIATION_COPY); +} + +- (BMFAnnotationViewOptions *)annotationViewOptions{ + return objc_getAssociatedObject(self, annotationViewOptionsKey); +} +- (void)setAnnotationViewOptions:(BMFAnnotationViewOptions * _Nonnull)annotationViewOptions { + objc_setAssociatedObject(self, annotationViewOptionsKey, annotationViewOptions, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + ++ (instancetype)annotationWith:(NSDictionary *)dic{ + return [[self alloc] initWith:dic]; +} +- (instancetype)initWith:(NSDictionary *)dic{ + if ([super init]) { + if (dic) { + BMFAnnotationModel *model = [BMFAnnotationModel bmf_modelWith:dic]; + model.annotationViewOptions = [BMFAnnotationViewOptions bmf_modelWith:dic]; + [self configAnnotation:model]; + } + } + return self; +} + +- (void)configAnnotation:(BMFAnnotationModel*)model{ + if (model.Id) { + self.Id = model.Id; + } + if (model.title) { + self.title = model.title; + } + if (model.subtitle) { + self.subtitle = model.subtitle; + } + if (model.position) { + self.coordinate = [model.position toCLLocationCoordinate2D]; + } + self.isLockedToScreen = model.isLockedToScreen; + if (model.screenPointToLock) { + self.screenPointToLock = [model.screenPointToLock toCGPoint]; + } + + self.annotationViewOptions = model.annotationViewOptions; +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFArcline.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFArcline.h new file mode 100644 index 0000000..ef32772 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFArcline.h @@ -0,0 +1,31 @@ +// +// BMFArcline.h +// flutter_bmfmap +// +// Created by zbj on 2020/2/15. +// + +#ifndef __BMFArcline__H__ +#define __BMFArcline__H__ +#ifdef __OBJC__ +#import +#endif +#endif +#import "BMFArclineModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface BMKArcline (BMFArcline) + +/// arclineView唯一id +@property (nonatomic, copy, readonly) NSString *Id; + +/// arclineViewOptions +@property (nonatomic, strong, readonly) BMFArclineViewOptions *arclineViewOptions; + ++ (BMKArcline *)arclineWith:(NSDictionary *)dic; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFArcline.mm b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFArcline.mm new file mode 100644 index 0000000..fea3806 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFArcline.mm @@ -0,0 +1,51 @@ +// +// BMFArcline.m +// flutter_bmfmap +// +// Created by zbj on 2020/2/15. +// + +#import "BMFArcline.h" +#import +#import "BMFMapModels.h" + +static const void *IDKey = &IDKey; +static const void *arclineViewOptionsKey = &arclineViewOptionsKey; + +@implementation BMKArcline (BMFArcline) ++ (BMKArcline *)arclineWith:(NSDictionary *)dic{ + if (dic) { + BMFArclineModel *model = [BMFArclineModel bmf_modelWith:dic]; + model.arclineOptions = [BMFArclineViewOptions bmf_modelWith:dic]; + int _coordsCount = (int)model.coordinates.count; + if (_coordsCount < 3) { + return nil; + } + + CLLocationCoordinate2D *coords = new CLLocationCoordinate2D[_coordsCount]; + for (int i = 0; i < _coordsCount; i++) { + coords[i] = [model.coordinates[i] toCLLocationCoordinate2D]; + } + BMKArcline *arcline = [BMKArcline arclineWithCoordinates:coords]; + arcline.Id = model.Id; + arcline.arclineViewOptions = model.arclineOptions; + return arcline; + } + return nil; +} + +- (NSString *)Id{ + return objc_getAssociatedObject(self, IDKey); +} +- (void)setId:(NSString * _Nonnull)Id{ + objc_setAssociatedObject(self, IDKey, Id, OBJC_ASSOCIATION_COPY); +} + +- (BMFArclineViewOptions *)arclineViewOptions{ + return objc_getAssociatedObject(self, arclineViewOptionsKey); +} +- (void)setArclineViewOptions:(BMFArclineViewOptions * _Nonnull)arclineViewOptions{ + objc_setAssociatedObject(self, arclineViewOptionsKey, arclineViewOptions, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFCircle.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFCircle.h new file mode 100644 index 0000000..e05ae44 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFCircle.h @@ -0,0 +1,30 @@ +// +// BMFCircle.h +// flutter_bmfmap +// +// Created by zbj on 2020/2/15. +// + +#ifndef __BMFCircle__H__ +#define __BMFCircle__H__ +#ifdef __OBJC__ +#import +#endif +#endif +#import "BMFCircleModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface BMKCircle (BMFCircle) + +/// circleView唯一id +@property (nonatomic, copy, readonly) NSString *Id; + +/// circleViewOptions +@property (nonatomic, strong, readonly) BMFCircleViewOptions *circleViewOptions; + ++ (BMKCircle *)circlelineWith:(NSDictionary *)dic; + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFCircle.mm b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFCircle.mm new file mode 100644 index 0000000..5241246 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFCircle.mm @@ -0,0 +1,45 @@ +// +// BMFCircle.m +// flutter_bmfmap +// +// Created by zbj on 2020/2/15. +// + +#import "BMFCircle.h" +#import +#import "BMFMapModels.h" + +static const void *IDKey = &IDKey; +static const void *circleViewOptionsKey = &circleViewOptionsKey; +@implementation BMKCircle (BMFCircle) + ++ (BMKCircle *)circlelineWith:(NSDictionary *)dic{ + if (dic) { + BMFCircleModel *model = [BMFCircleModel bmf_modelWith:dic]; + model.circleOptions = [BMFCircleViewOptions bmf_modelWith:dic]; + if (model.center) { + BMKCircle *circle = [BMKCircle circleWithCenterCoordinate:[model.center toCLLocationCoordinate2D] radius:model.radius]; + circle.circleViewOptions = model.circleOptions; + circle.Id = model.Id; + return circle; + } + + } + return nil; +} + +- (NSString *)Id{ + return objc_getAssociatedObject(self, IDKey); +} +- (void)setId:(NSString * _Nonnull)Id{ + objc_setAssociatedObject(self, IDKey, Id, OBJC_ASSOCIATION_COPY); +} + +- (BMFCircleViewOptions *)circleViewOptions{ + return objc_getAssociatedObject(self, circleViewOptionsKey); +} +- (void)setCircleViewOptions:(BMFCircleViewOptions * _Nonnull)circleViewOptions{ + objc_setAssociatedObject(self, circleViewOptionsKey, circleViewOptions, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFGroundOverlay.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFGroundOverlay.h new file mode 100644 index 0000000..237e5b1 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFGroundOverlay.h @@ -0,0 +1,25 @@ +// +// BMFGroundOverlay.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/22. +// + +#ifndef __BMFGroundOverlay__H__ +#define __BMFGroundOverlay__H__ +#ifdef __OBJC__ +#import +#endif +#endif + +NS_ASSUME_NONNULL_BEGIN + +@interface BMKGroundOverlay (BMFGroundOverlay) + +/// 唯一id +@property (nonatomic, copy, readonly) NSString *Id; + ++ (BMKGroundOverlay *)groundOverlayWith:(NSDictionary *)dic; +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFGroundOverlay.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFGroundOverlay.m new file mode 100644 index 0000000..4283d6f --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFGroundOverlay.m @@ -0,0 +1,62 @@ +// +// BMFGroundOverlay.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/22. +// + +#import "BMFGroundOverlay.h" +#import +#import "BMFMapModels.h" +#import "BMFGroundModel.h" +#import "BMFFileManager.h" + +static const void *IDKey = &IDKey; +@implementation BMKGroundOverlay (BMFGroundOverlay) + ++ (BMKGroundOverlay *)groundOverlayWith:(NSDictionary *)dic{ + if (dic) { + BMFGroundModel *model = [BMFGroundModel bmf_modelWith:dic]; + model.groundOptions = [BMFGroundModelOptions bmf_modelWith:dic]; + if (!model || !model.Id || !model.groundOptions || !model.groundOptions.image) { + return nil; + } + // 构造一 + if (model.groundOptions.position) { + CLLocationCoordinate2D position = [model.groundOptions.position toCLLocationCoordinate2D]; + CGPoint point = CGPointMake(model.groundOptions.anchorX, model.groundOptions.anchorY); + NSString *imagePath = [[BMFFileManager defaultCenter] pathForFlutterFileName:model.groundOptions.image]; + + BMKGroundOverlay *groundOverlay = [BMKGroundOverlay groundOverlayWithPosition:position + zoomLevel:model.groundOptions.zoomLevel + anchor:point + icon:[UIImage imageWithContentsOfFile:imagePath]]; + groundOverlay.alpha = model.groundOptions.transparency; + groundOverlay.Id = model.Id; + return groundOverlay; + } + // 构造二 + if (model.groundOptions.bounds) { + BMKCoordinateBounds bounds = [model.groundOptions.bounds toBMKCoordinateBounds]; + NSString *imagePath = [[BMFFileManager defaultCenter] pathForFlutterFileName:model.groundOptions.image]; + + BMKGroundOverlay *groundOverlay = [BMKGroundOverlay groundOverlayWithBounds:bounds + icon:[UIImage imageWithContentsOfFile:imagePath]]; + groundOverlay.alpha = model.groundOptions.transparency; + groundOverlay.Id = model.Id; + return groundOverlay; + } + + } + return nil; +} + +- (NSString *)Id{ + return objc_getAssociatedObject(self, IDKey); +} +- (void)setId:(NSString * _Nonnull)Id{ + objc_setAssociatedObject(self, IDKey, Id, OBJC_ASSOCIATION_COPY); +} + + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFPolygon.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFPolygon.h new file mode 100644 index 0000000..67fa9e9 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFPolygon.h @@ -0,0 +1,31 @@ +// +// BMFPolygon.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/2/27. +// + +#ifndef __BMFPolygon__H__ +#define __BMFPolygon__H__ +#ifdef __OBJC__ +#import +#endif +#endif +#import "BMFPolygonModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface BMKPolygon (BMFPolygon) + +/// polylgonView唯一id +@property (nonatomic, copy, readonly) NSString *Id; + +/// BMKPolygonView参数集合 +@property (nonatomic, strong, readonly) BMFPolygonViewOptions *polygonViewOptions; + +/// BMKPolygon ++ (BMKPolygon *)polygonWith:(NSDictionary *)dic; + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFPolygon.mm b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFPolygon.mm new file mode 100644 index 0000000..7268053 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFPolygon.mm @@ -0,0 +1,48 @@ +// +// BMFPolygon.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/2/27. +// + +#import "BMFPolygon.h" +#import +#import "BMFMapModels.h" + +static const void *IDKey = &IDKey; +static const void *polygonViewOptionsKey = &polygonViewOptionsKey; +@implementation BMKPolygon (BMFPolygon) + ++ (BMKPolygon *)polygonWith:(NSDictionary *)dic{ + if (dic) { + BMFPolygonModel *model = [BMFPolygonModel bmf_modelWith:dic]; + model.polygonOptions = [BMFPolygonViewOptions bmf_modelWith:dic]; + size_t _coordsCount = model.coordinates.count; + CLLocationCoordinate2D *coords = new CLLocationCoordinate2D[_coordsCount]; + for (size_t i = 0; i < _coordsCount; i++) { + coords[i] = [model.coordinates[i] toCLLocationCoordinate2D]; + } + + BMKPolygon *polygon = [BMKPolygon polygonWithCoordinates:coords count:_coordsCount]; + polygon.polygonViewOptions = model.polygonOptions; + polygon.Id = model.Id; + return polygon; + } + return nil; +} + +- (NSString *)Id{ + return objc_getAssociatedObject(self, IDKey); +} +- (void)setId:(NSString * _Nonnull)Id{ + objc_setAssociatedObject(self, IDKey, Id, OBJC_ASSOCIATION_COPY); +} + +- (BMFPolygonViewOptions *)polygonViewOptions{ + return objc_getAssociatedObject(self, polygonViewOptionsKey); +} +- (void)setPolygonViewOptions:(BMFPolygonViewOptions * _Nonnull)polygonViewOptions{ + objc_setAssociatedObject(self, polygonViewOptionsKey, polygonViewOptions, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFPolyline.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFPolyline.h new file mode 100644 index 0000000..bcde729 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFPolyline.h @@ -0,0 +1,45 @@ +// +// BMFPolyline.h +// flutter_bmfmap +// +// Created by zbj on 2020/2/12. +// + +#ifndef __BMFPolyline__H__ +#define __BMFPolyline__H__ +#ifdef __OBJC__ +#import +#endif +#endif +#import "BMFPolylineModel.h" + + +typedef NS_ENUM(NSUInteger, BMFLineType){ + kBMFColorLine = 0, ///< 单色折线 + kBMFColorsLine, ///< 多色折线 + kBMFTextureLine, ///< 单纹理折线 + kBMFTexturesLine, ///< 多纹理折线 + kBMFDashLine, ///< 虚线 + kBMFMultiDashLine ///< 多色虚线 +}; +NS_ASSUME_NONNULL_BEGIN + +@interface BMKPolyline (BMFPolyline) + +/// polylineView唯一id +@property (nonatomic, copy, readonly) NSString *Id; + +@property (nonatomic, strong, readonly) BMFPolylineModel *polylineModel; + +/// 折线类型标记 +@property (nonatomic, assign, readonly) NSUInteger lineType; + +/// BMKPolyline ++ (BMKPolyline *)polylineWith:(NSDictionary *)dic; + + +/// BMKPolyline ++ (BMKPolyline *)polylineWithModel:(BMFPolylineModel *)model; +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFPolyline.mm b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFPolyline.mm new file mode 100644 index 0000000..6115902 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/overlay/BMFPolyline.mm @@ -0,0 +1,126 @@ +// +// BMFPolyline.m +// flutter_bmfmap +// +// Created by zbj on 2020/2/12. +// + +#import "BMFPolyline.h" +#import +#import "BMFMapModels.h" + +static const void *IDKey = &IDKey; +static const void *lineTypeKey = &lineTypeKey; +static const void *polylineModelKey = &polylineModelKey; + +@implementation BMKPolyline (BMFPolyline) + ++ (BMKPolyline *)polylineWith:(NSDictionary *)dic { + if (dic) { + BMFPolylineModel *model = [BMFPolylineModel bmf_modelWith:dic]; + model.polylineOptions = [BMFPolylineViewOptions bmf_modelWith:dic]; + size_t _coordsCount = model.coordinates.count; + size_t _indexsCount = model.indexs.count; + + if (_coordsCount > 0) { + CLLocationCoordinate2D *coords = new CLLocationCoordinate2D[_coordsCount]; + + for (size_t i = 0; i < _coordsCount; i++) { + coords[i] = [model.coordinates[i] toCLLocationCoordinate2D]; + } + + if (_indexsCount > 0) { //多 + BMKPolyline *polyline = [BMKPolyline polylineWithCoordinates:coords count:_coordsCount textureIndex:model.indexs]; + if (model.polylineOptions.lineDashType == 0) { + polyline.lineType = [model.polylineOptions.textures count] > 0 ? kBMFTexturesLine : kBMFColorsLine; + } else { + polyline.lineType = kBMFMultiDashLine; + } + polyline.Id = model.Id; + polyline.isThined = model.isThined; + polyline.polylineModel = model; + return polyline; + } else { //单 + BMKPolyline *polyline = [BMKPolyline polylineWithCoordinates:coords count:_coordsCount]; + if (model.polylineOptions.lineDashType == 0) { + polyline.lineType = [model.polylineOptions.textures count] > 0 ? kBMFTextureLine : kBMFColorLine; + } else { + polyline.lineType = kBMFDashLine; + } + polyline.Id = model.Id; + polyline.isThined = model.isThined; + polyline.polylineModel = model; + return polyline; + } + + } + } + return nil; +} + +/// BMKPolyline ++ (BMKPolyline *)polylineWithModel:(BMFPolylineModel *)model { + if (model) { + size_t _coordsCount = model.coordinates.count; + size_t _indexsCount = model.indexs.count; + + if (_coordsCount > 0) { + CLLocationCoordinate2D *coords = new CLLocationCoordinate2D[_coordsCount]; + + for (size_t i = 0; i < _coordsCount; i++) { + coords[i] = [model.coordinates[i] toCLLocationCoordinate2D]; + } + + if (_indexsCount > 0) { //多 + BMKPolyline *polyline = [BMKPolyline polylineWithCoordinates:coords count:_coordsCount textureIndex:model.indexs]; + if (model.polylineOptions.lineDashType == 0) { + polyline.lineType = [model.polylineOptions.textures count] > 0 ? kBMFTexturesLine : kBMFColorsLine; + } else { + polyline.lineType = kBMFMultiDashLine; + } + polyline.Id = model.Id; + polyline.isThined = model.isThined; + polyline.polylineModel = model; + return polyline; + } else { //单 + BMKPolyline *polyline = [BMKPolyline polylineWithCoordinates:coords count:_coordsCount]; + if (model.polylineOptions.lineDashType == 0) { + polyline.lineType = [model.polylineOptions.textures count] > 0 ? kBMFTextureLine : kBMFColorLine; + } else { + polyline.lineType = kBMFDashLine; + } + polyline.Id = model.Id; + polyline.isThined = model.isThined; + polyline.polylineModel = model; + return polyline; + } + + } + } + return nil; +} +- (NSString *)Id{ + return objc_getAssociatedObject(self, IDKey); +} +- (void)setId:(NSString * _Nonnull)Id{ + objc_setAssociatedObject(self, IDKey, Id, OBJC_ASSOCIATION_COPY); +} + +- (NSUInteger)lineType{ + NSNumber *value = objc_getAssociatedObject(self, lineTypeKey); + return [value unsignedIntegerValue]; +} + +- (void)setLineType:(BMFLineType)lineType{ + objc_setAssociatedObject(self, lineTypeKey, @(lineType), OBJC_ASSOCIATION_ASSIGN); +} + +- (BMFPolylineModel *)polylineModel { + return objc_getAssociatedObject(self, polylineModelKey); +} + +- (void)setPolylineModel:(BMFPolylineModel * _Nonnull)polylineModel { + objc_setAssociatedObject(self, polylineModelKey, polylineModel, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFAsyncTileLayer.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFAsyncTileLayer.h new file mode 100644 index 0000000..75f847d --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFAsyncTileLayer.h @@ -0,0 +1,31 @@ +// +// BMFAsyncTileLayer.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/20. +// + +#ifndef __BMFAsyncTileLayer__H__ +#define __BMFAsyncTileLayer__H__ +#ifdef __OBJC__ +#import +#endif +#endif + +@class BMFTileModel; + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFAsyncTileLayer : BMKAsyncTileLayer + +/// 唯一id +@property (nonatomic, copy, readonly) NSString *Id; + +///// title参数集合 +//@property (nonatomic, strong, readonly) BMFTileModelOptions *tileOptions; + ++ (instancetype)asyncTileLayerWith:(BMFTileModel *)model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFAsyncTileLayer.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFAsyncTileLayer.m new file mode 100644 index 0000000..6c2ade7 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFAsyncTileLayer.m @@ -0,0 +1,50 @@ +// +// BMFAsyncTileLayer.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/20. +// + +#import "BMFAsyncTileLayer.h" +#import "BMFMapModels.h" +#import "BMFTileModel.h" +#import "BMFFileManager.h" + +@interface BMFAsyncTileLayer () + +/// 唯一id +@property (nonatomic, copy, readwrite) NSString *Id; + +@end + +@implementation BMFAsyncTileLayer + ++ (instancetype)asyncTileLayerWith:(BMFTileModel *)model{ + if (!model.Id || !model.tileOptions) { + return nil; + } + + BMFAsyncTileLayer *tileLayer = [BMFAsyncTileLayer new]; + tileLayer.Id = model.Id; + tileLayer.maxZoom = model.maxZoom; + tileLayer.minZoom = model.minZoom; + tileLayer.visibleMapRect = [model.visibleMapBounds toBMKMapRect]; + return tileLayer; +} + +/// 通过异步方法获取瓦片数据 +/// x 瓦片图层x坐标 +/// y 瓦片图层y坐标 +/// zoom 瓦片图层的比例尺大小 +/// result block回调:(x, y, zoom)对应瓦片的UIImage对象和error信息 +- (void)loadTileForX:(NSInteger)x y:(NSInteger)y zoom:(NSInteger)zoom result:(void (^)(UIImage *tileImage, NSError *error))result { + // 拼接图片名称 + NSString *imageName = [NSString stringWithFormat:@"%ld_%ld_%ld.jpg", (long)zoom, (long)x, (long)y]; + // 此处应拼接flutter端瓦片图资源路径 + NSString *path = [NSString stringWithFormat:@"%ld/%@", (long)zoom, imageName]; + // 最终瓦片图路径 + path = [[BMFFileManager defaultCenter] pathForFlutterTileResources:path]; + UIImage *image = [UIImage imageWithContentsOfFile:path]; + result(image, nil); +} +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFSyncTileLayer.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFSyncTileLayer.h new file mode 100644 index 0000000..4dfd99c --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFSyncTileLayer.h @@ -0,0 +1,28 @@ +// +// BMFSyncTileLayer.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/20. +// + +#ifndef __BMFSyncTileLayer__H__ +#define __BMFSyncTileLayer__H__ +#ifdef __OBJC__ +#import +#endif +#endif + +@class BMFTileModel; + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFSyncTileLayer : BMKSyncTileLayer + +/// 唯一id +@property (nonatomic, copy, readonly) NSString *Id; + ++ (instancetype)syncTileLayerWith:(BMFTileModel *)model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFSyncTileLayer.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFSyncTileLayer.m new file mode 100644 index 0000000..4cc0b17 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFSyncTileLayer.m @@ -0,0 +1,51 @@ +// +// BMFSyncTileLayer.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/20. +// + +#import "BMFSyncTileLayer.h" +#import "BMFMapModels.h" +#import "BMFTileModel.h" +#import "BMFFileManager.h" +@interface BMFSyncTileLayer () + +/// 唯一id +@property (nonatomic, copy, readwrite) NSString *Id; + +@end + +@implementation BMFSyncTileLayer + ++ (instancetype)syncTileLayerWith:(BMFTileModel *)model{ + if (!model.Id || !model.tileOptions) { + return nil; + } + + BMFSyncTileLayer *tileLayer = [BMFSyncTileLayer new]; + tileLayer.Id = model.Id; + tileLayer.maxZoom = model.maxZoom; + tileLayer.minZoom = model.minZoom; + tileLayer.visibleMapRect = [model.visibleMapBounds toBMKMapRect]; + return tileLayer; +} + +/// 通过同步方法获取瓦片数据 +/// x 瓦片图层x坐标 +/// y 瓦片图层y坐标 +/// zoom 瓦片图层的比例尺大小 +/// result block回调:(x, y, zoom)对应瓦片的UIImage对象和error信息 +- (UIImage *)tileForX:(NSInteger)x y:(NSInteger)y zoom:(NSInteger)zoom { + // 拼接图片名称 + NSString *imageName = [NSString stringWithFormat:@"%ld_%ld_%ld.jpg", (long)zoom, (long)x, (long)y]; + // 此处应拼接flutter端瓦片图资源路径 + NSString *path = [NSString stringWithFormat:@"%ld/%@", (long)zoom, imageName]; + // 最终瓦片图路径 + path = [[BMFFileManager defaultCenter] pathForFlutterTileResources:path]; + + UIImage *image = [UIImage imageNamed:imageName]; + return image; +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFURLTileLayer.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFURLTileLayer.h new file mode 100644 index 0000000..0f7f6e7 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFURLTileLayer.h @@ -0,0 +1,27 @@ +// +// BMFURLTileLayer.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/20. +// + +#ifndef __BMFURLTileLayer__H__ +#define __BMFURLTileLayer__H__ +#ifdef __OBJC__ +#import +#endif +#endif +@class BMFTileModel; + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFURLTileLayer : BMKURLTileLayer + +/// 唯一id +@property (nonatomic, copy, readonly) NSString *Id; + ++ (instancetype)urlTileLayerWith:(BMFTileModel *)model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFURLTileLayer.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFURLTileLayer.m new file mode 100644 index 0000000..819372e --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Map/tileLayer/BMFURLTileLayer.m @@ -0,0 +1,34 @@ +// +// BMFURLTileLayer.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/20. +// + +#import "BMFURLTileLayer.h" +#import "BMFMapModels.h" +#import "BMFTileModel.h" + +@interface BMFURLTileLayer () + +/// 唯一id +@property (nonatomic, copy, readwrite) NSString *Id; + +@end + +@implementation BMFURLTileLayer + ++ (instancetype)urlTileLayerWith:(BMFTileModel *)model{ + if (!model.Id || !model.tileOptions || !model.tileOptions.url) { + return nil; + } + BMFURLTileLayer *urlTileLayer = [[BMFURLTileLayer alloc] initWithURLTemplate:model.tileOptions.url]; + urlTileLayer.Id = model.Id; + urlTileLayer.maxZoom = model.maxZoom; + urlTileLayer.minZoom = model.minZoom; + urlTileLayer.visibleMapRect = [model.visibleMapBounds toBMKMapRect]; + + return urlTileLayer; + +} +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFAnnotationMethodConst.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFAnnotationMethodConst.h new file mode 100644 index 0000000..7ae986e --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFAnnotationMethodConst.h @@ -0,0 +1,21 @@ + +#ifndef __BMFAnnotationMethodConst__H__ +#define __BMFAnnotationMethodConst__H__ + +#import + +/// map添加marker +FOUNDATION_EXPORT NSString *const kBMFMapAddMarkerMethod; +/// map批量添加marker +FOUNDATION_EXPORT NSString *const kBMFMapAddMarkersMethod; +/// map删除marker +FOUNDATION_EXPORT NSString *const kBMFMapRemoveMarkerMethod; +/// map批量删除markers +FOUNDATION_EXPORT NSString *const kBMFMapRemoveMarkersMethod; +/// map清除所有的markers +FOUNDATION_EXPORT NSString *const kBMFMapCleanAllMarkersMethod; +/// marker添加完成 +FOUNDATION_EXPORT NSString *const kBMFMapDidAddMarkerMethod; +/// 更新marker属性 +FOUNDATION_EXPORT NSString *const kBMFMapUpdateMarkerMemberMethod; +#endif diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFAnnotationMethodConst.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFAnnotationMethodConst.m new file mode 100644 index 0000000..cf653ec --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFAnnotationMethodConst.m @@ -0,0 +1,14 @@ + +#ifndef __BMFAnnotationMethodConst__M__ +#define __BMFAnnotationMethodConst__M__ + +#import +// marker +NSString *const kBMFMapAddMarkerMethod = @"flutter_bmfmap/marker/addMarker"; +NSString *const kBMFMapAddMarkersMethod = @"flutter_bmfmap/marker/addMarkers"; +NSString *const kBMFMapRemoveMarkerMethod = @"flutter_bmfmap/marker/removeMarker"; +NSString *const kBMFMapRemoveMarkersMethod = @"flutter_bmfmap/marker/removeMarkers"; +NSString *const kBMFMapCleanAllMarkersMethod = @"flutter_bmfmap/marker/cleanAllMarkers"; +NSString *const kBMFMapDidAddMarkerMethod = @"flutter_bmfmap/marker/didAddMarker"; +NSString *const kBMFMapUpdateMarkerMemberMethod = @"flutter_bmfmap/marker/updateMarkerMember"; +#endif diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFHeatMapConst.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFHeatMapConst.h new file mode 100644 index 0000000..67975bb --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFHeatMapConst.h @@ -0,0 +1,12 @@ +#ifndef __BMFHeatMapConst__H__ +#define __BMFHeatMapConst__H__ +#import +// 热力图 +/// 设定是否展示热力图 +FOUNDATION_EXPORT NSString *const kBMFMapShowHeatMapMethod; +/// 添加热力图 +FOUNDATION_EXPORT NSString *const kBMFMapAddHeatMapMethod; +/// 删除热力图 +FOUNDATION_EXPORT NSString *const kBMFMapRemoveHeatMapMethod; + +#endif diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFHeatMapConst.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFHeatMapConst.m new file mode 100644 index 0000000..7bbb4f8 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFHeatMapConst.m @@ -0,0 +1,9 @@ +#ifndef __BMFHeatMapConst__M__ +#define __BMFHeatMapConst__M__ +#import + +// 热力图 + NSString *const kBMFMapShowHeatMapMethod = @"flutter_bmfmap/heatMap/showHeatMap"; + NSString *const kBMFMapAddHeatMapMethod = @"flutter_bmfmap/heatMap/addHeatMap"; + NSString *const kBMFMapRemoveHeatMapMethod = @"flutter_bmfmap/heatMap/removeHeatMap"; +#endif diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFMapCallBackConst.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFMapCallBackConst.h new file mode 100644 index 0000000..7ba9667 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFMapCallBackConst.h @@ -0,0 +1,61 @@ +#ifndef __BMFMapCallBackConst__H__ +#define __BMFMapCallBackConst__H__ + +#import + +// invoke + +/// map加载完成 +FOUNDATION_EXPORT NSString *const kBMFMapDidLoadCallback; +/// map渲染完成 +FOUNDATION_EXPORT NSString *const kBMFMapDidRenderCallback; +/// 地图渲染每一帧画面过程中,以及每次需要重绘地图时(例如添加覆盖物)都会调用此接口 +FOUNDATION_EXPORT NSString *const kBMFMapOnDrawMapFrameCallback; + + +/// 地图区域即将改变时会调用此接口 +FOUNDATION_EXPORT NSString *const kBMFMapRegionWillChangeCallback; +/// 地图区域即将改变时会调用此接口reason +FOUNDATION_EXPORT NSString *const kBMFMapRegionWillChangeWithReasonCallback; +/// 地图区域改变完成后会调用此接口 +FOUNDATION_EXPORT NSString *const kBMFMapRegionDidChangeCallback; +/// 地图区域改变完成后会调用此接口reason +FOUNDATION_EXPORT NSString *const kBMFMapRegionDidChangeWithReasonCallback; + +/// 点中底图标注后会回调此接口 +FOUNDATION_EXPORT NSString *const kBMFMapOnClickedMapPoiCallback; +/// 点中底图空白处会回调此接口 +FOUNDATION_EXPORT NSString *const kBMFMapOnClickedMapBlankCallback; +/// 双击地图时会回调此接口 +FOUNDATION_EXPORT NSString *const kBMFMapOnDoubleClickCallback; +/// 长按地图时会回调此接口 +FOUNDATION_EXPORT NSString *const kBMFMapOnLongClickCallback; +/// 3DTouch 按地图时会回调此接口 +///(仅在支持3D Touch,且fouchTouchEnabled属性为YES时,会回调此接口) +FOUNDATION_EXPORT NSString *const kBMFMapOnForceTouchCallback; + + +/// 地图状态改变完成后会调用此接口 +FOUNDATION_EXPORT NSString *const kBMFMapStatusDidChangedCallback; + +/// 地图View进入/移出室内图 +FOUNDATION_EXPORT NSString *const kBMFMapInOrOutBaseIndoorMapCallback; + +/// marker点击 +FOUNDATION_EXPORT NSString *const kBMFMapClickedMarkerCallback; +/// marker选中 +FOUNDATION_EXPORT NSString *const kBMFMapDidSelectMarkerCallback; +/// marker取消选中 +FOUNDATION_EXPORT NSString *const kBMFMapDidDeselectMarkerCallback; +/// marker的泡泡点击 +FOUNDATION_EXPORT NSString *const kBMFMapDidClickedPaoPaoCallback; +/// marker的拖拽回调 +FOUNDATION_EXPORT NSString *const kBMFMapDidDragMarkerCallback; + + +/// 当mapView新添加overlay views时,调用此接口 +FOUNDATION_EXPORT NSString *const kBMFMapDidAddOverlayCallback; +/// 点中覆盖物后会回调此接口,目前只支持点中Polyline时回调 +FOUNDATION_EXPORT NSString *const kMapOnClickedOverlayCallback; + +#endif diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFMapCallBackConst.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFMapCallBackConst.m new file mode 100644 index 0000000..c2db80d --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFMapCallBackConst.m @@ -0,0 +1,38 @@ +#ifndef __BMFMapCallBackConst__M__ +#define __BMFMapCallBackConst__M__ + +#import + +// invoke +NSString *const kBMFMapDidLoadCallback = @"flutter_bmfmap/map/mapViewDidFinishLoad"; +NSString *const kBMFMapDidRenderCallback = @"flutter_bmfmap/map/mapViewDidFinishRender"; +NSString *const kBMFMapOnDrawMapFrameCallback = @"flutter_bmfmap/map/mapViewOnDrawMapFrame"; + +NSString *const kBMFMapRegionWillChangeCallback = @"flutter_bmfmap/map/mapViewRegionWillChange"; +NSString *const kBMFMapRegionWillChangeWithReasonCallback = @"flutter_bmfmap/map/mapViewRegionWillChangeWithReason"; +NSString *const kBMFMapRegionDidChangeCallback = @"flutter_bmfmap/map/mapViewRegionDidChange"; +NSString *const kBMFMapRegionDidChangeWithReasonCallback = @"flutter_bmfmap/map/mapViewRegionDidChangeWithReason"; + +NSString *const kBMFMapOnClickedMapPoiCallback = @"flutter_bmfmap/map/mapViewonClickedMapPoi"; +NSString *const kBMFMapOnClickedMapBlankCallback = @"flutter_bmfmap/map/mapViewOnClickedMapBlank"; +NSString *const kBMFMapOnDoubleClickCallback = @"flutter_bmfmap/map/mapViewOnDoubleClick"; +NSString *const kBMFMapOnLongClickCallback = @"flutter_bmfmap/map/mapViewOnLongClick"; +NSString *const kBMFMapOnForceTouchCallback = @"flutter_bmfmap/map/mapViewOnForceTouch"; + +NSString *const kBMFMapStatusDidChangedCallback = @"flutter_bmfmap/map/mapViewStatusDidChanged"; + +NSString *const kBMFMapInOrOutBaseIndoorMapCallback = @"flutter_bmfmap/map/mapViewInOrOutBaseIndoorMap"; + +// marker +NSString *const kBMFMapClickedMarkerCallback = @"flutter_bmfmap/marker/clickedMarker"; +NSString *const kBMFMapDidSelectMarkerCallback = @"flutter_bmfmap/marker/didSelectedMarker"; +NSString *const kBMFMapDidDeselectMarkerCallback = @"flutter_bmfmap/marker/didDeselectMarker"; +NSString *const kBMFMapDidClickedPaoPaoCallback = @"flutter_bmfmap/map/didClickedInfoWindow"; +NSString *const kBMFMapDidDragMarkerCallback = @"flutter_bmfmap/marker/dragMarker"; + + +// overlay +NSString *const kBMFMapDidAddOverlayCallback = @"flutter_bmfmap/overlay/didAddOverlay"; +NSString *const kMapOnClickedOverlayCallback = @"flutter_bmfmap/overlay/onClickedOverlay"; + +#endif diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFMapMethodConst.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFMapMethodConst.h new file mode 100644 index 0000000..2dce6ba --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFMapMethodConst.h @@ -0,0 +1,111 @@ +#ifndef __BMFMapMethodConst__H__ +#define __BMFMapMethodConst__H__ + +#import + +// Map + +/// mapChannelName +FOUNDATION_EXPORT NSString *const kBMFMapChannelName; +/// flutter与原生交互时map唯一标识符 +FOUNDATION_EXPORT NSString *const kBMFMapIdentifier; + +// get +/// 获取map的展示类型 +FOUNDATION_EXPORT NSString *const kBMFMapGetMapTypeMethod; + /// 获取map的比例尺级别 +FOUNDATION_EXPORT NSString *const kBMFMapGetZoomLevelMethod; + /// 获取map的自定义最小比例尺级别 +FOUNDATION_EXPORT NSString *const kBMFMapGetMinZoomLevelMethod; + /// 获取map的自定义最大比例尺级别 +FOUNDATION_EXPORT NSString *const kBMFMapGetMaxZoomLevelMethod; + /// 获取map的旋转角度 +FOUNDATION_EXPORT NSString *const kBMFMapGetRotationMethod; + /// 获取map的地图俯视角度 +FOUNDATION_EXPORT NSString *const kBMFMapGetOverlookingMethod; + /// 获取map的俯视角度最小值 +FOUNDATION_EXPORT NSString *const kBMFMapGetMinOverlookingMethod; + /// 获取map的是否现显示3D楼块效果 +FOUNDATION_EXPORT NSString *const kBMFMapGetBuildingsEnabledMethod; + /// 获取map的是否显示底图poi标注 +FOUNDATION_EXPORT NSString *const kBMFMapGetShowMapPoiMethod; + /// 获取map的是否打开路况图层 +FOUNDATION_EXPORT NSString *const kBMFMapGetTrafficEnabledMethod; + /// 获取map的是否打开百度城市热力图图层 +FOUNDATION_EXPORT NSString *const kBMFMapGetBaiduHeatMapEnabledMethod; + /// 获取map的是否支持所有手势操作 +FOUNDATION_EXPORT NSString *const kBMFMapGetGesturesEnabledMethod; + /// 获取map的是否支持用户多点缩放(双指) +FOUNDATION_EXPORT NSString *const kBMFMapGetZoomEnabledMethod; + /// 获取map的是否支持用户缩放(双击或双指单击) +FOUNDATION_EXPORT NSString *const kBMFMapGetZoomEnabledWithTapMethod; + /// 获取map的是否支持用户移动地图 +FOUNDATION_EXPORT NSString *const kBMFMapGetScrollEnabledMethod; + /// 获取map的是否支持俯仰角 +FOUNDATION_EXPORT NSString *const kBMFMapGetOverlookEnabledMethod; + /// 获取map的是否支持旋转 +FOUNDATION_EXPORT NSString *const kBMFMapGetRotateEnabledMethod; + /// 获取map的是否支持3Dtouch +FOUNDATION_EXPORT NSString *const kBMFMapGetForceTouchEnabledMethod; + /// 获取map的是否显式比例尺 +FOUNDATION_EXPORT NSString *const kBMFMapGetShowMapScaleBarMethod; + /// 获取map的比例尺的位置 +FOUNDATION_EXPORT NSString *const kBMFMapGetMapScaleBarPositionMethod; + /// 获取map的logo位置 +FOUNDATION_EXPORT NSString *const kBMFMapGetLogoPositionMethod; + /// 获取map的可视范围 +FOUNDATION_EXPORT NSString *const kBMFMapGetVisibleMapBoundsMethod; + /// 获取map的显示室内图 +FOUNDATION_EXPORT NSString *const kBMFMapGetBaseIndoorMapEnabledMethod; + /// 获取map的室内图标注是否显示 +FOUNDATION_EXPORT NSString *const kBMFMapGetShowIndoorMapPoiMethod; + +// set +/// map更新参数 +FOUNDATION_EXPORT NSString *const kBMFMapUpdateMethod; +/// map放大一级比例尺 +FOUNDATION_EXPORT NSString *const kBMFMapZoomInMethod; +/// map缩小一级比例尺 +FOUNDATION_EXPORT NSString *const kBMFMapZoomOutMethod; +/// map设置路况颜色 +FOUNDATION_EXPORT NSString *const kBMFMapSetCustomTrafficColorMethod; +/// map设定地图中心点坐标 +FOUNDATION_EXPORT NSString *const kBMFMapSetCenterCoordinateMethod; +/// 获得地图当前可视区域截图 +FOUNDATION_EXPORT NSString *const kBMFMapTakeSnapshotMethod; +/// 获得地图指定区域截图 +FOUNDATION_EXPORT NSString *const kBMFMapTakeSnapshotWithRectMethod; +/// 设置罗盘的图片 +FOUNDATION_EXPORT NSString *const kBMFMapSetCompassImageMethod; +/// 设定当前地图的显示范围 +FOUNDATION_EXPORT NSString *const kBMFMapSetVisibleMapBoundsMethod; +/// 设定地图的显示范围,并使bounds四周保留insets指定的边界区域 +FOUNDATION_EXPORT NSString *const kBMFMapSetVisibleMapBoundsWithPaddingMethod; +/// 设置mapStatus +FOUNDATION_EXPORT NSString *const kBMFMapSetMapStatusMethod; +/// 获取mapStatus +FOUNDATION_EXPORT NSString *const kBMFMapGetMapStatusMethod; + + +// 室内地图 +/// map展示室内地图 +FOUNDATION_EXPORT NSString *const kBMFMapShowBaseIndoorMapMethod; +/// map室内图标注是否显示 +FOUNDATION_EXPORT NSString *const kBMFMapShowBaseIndoorMapPoiMethod; +/// map设置室内图楼层 +FOUNDATION_EXPORT NSString *const kBMFMapSwitchBaseIndoorMapFloorMethod; +/// map获取当前聚焦的室内图信息 +FOUNDATION_EXPORT NSString *const kBMFMapGetFocusedBaseIndoorMapInfoMethod; + + + +// 个性化地图 +/// 开启个性化地图 +FOUNDATION_EXPORT NSString *const kBMFMapSetCustomMapStyleEnableMethod; +/// 设置个性化地图样式路径 +FOUNDATION_EXPORT NSString *const kBMFMapSetCustomMapStylePathMethod; +/// 在线个性化样式加载状态回调接口 +FOUNDATION_EXPORT NSString *const kBMFMapSetCustomMapStyleWithOptionMethod; + + +#endif diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFMapMethodConst.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFMapMethodConst.m new file mode 100644 index 0000000..b18951a --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFMapMethodConst.m @@ -0,0 +1,59 @@ + +#ifndef __BMFMapMethodConst__M__ +#define __BMFMapMethodConst__M__ + +#import + +// get + NSString *const kBMFMapGetMapTypeMethod = @"flutter_bmfmap/map/getMapType"; + NSString *const kBMFMapGetZoomLevelMethod = @"flutter_bmfmap/map/getZoomLevel"; + NSString *const kBMFMapGetMinZoomLevelMethod = @"flutter_bmfmap/map/getMinZoomLevel"; + NSString *const kBMFMapGetMaxZoomLevelMethod = @"flutter_bmfmap/map/getMaxZoomLevel"; + NSString *const kBMFMapGetRotationMethod = @"flutter_bmfmap/map/getRotation"; + NSString *const kBMFMapGetOverlookingMethod = @"flutter_bmfmap/map/getOverlooking"; + NSString *const kBMFMapGetMinOverlookingMethod = @"flutter_bmfmap/map/getMinOverlooking"; + NSString *const kBMFMapGetBuildingsEnabledMethod = @"flutter_bmfmap/map/getBuildingsEnabled"; + NSString *const kBMFMapGetShowMapPoiMethod = @"flutter_bmfmap/map/getShowMapPoi"; + NSString *const kBMFMapGetTrafficEnabledMethod = @"flutter_bmfmap/map/getTrafficEnabled"; + NSString *const kBMFMapGetBaiduHeatMapEnabledMethod = @"flutter_bmfmap/map/getBaiduHeatMapEnabled"; + NSString *const kBMFMapGetGesturesEnabledMethod = @"flutter_bmfmap/map/getGesturesEnabled"; + NSString *const kBMFMapGetZoomEnabledMethod = @"flutter_bmfmap/map/getZoomEnabled"; + NSString *const kBMFMapGetZoomEnabledWithTapMethod = @"flutter_bmfmap/map/getZoomEnabledWithTap"; + NSString *const kBMFMapGetScrollEnabledMethod = @"flutter_bmfmap/map/getScrollEnabled"; + NSString *const kBMFMapGetOverlookEnabledMethod = @"flutter_bmfmap/map/getOverlookEnabled"; + NSString *const kBMFMapGetRotateEnabledMethod = @"flutter_bmfmap/map/getRotateEnabled"; + NSString *const kBMFMapGetForceTouchEnabledMethod = @"flutter_bmfmap/map/getForceTouchEnabled"; + NSString *const kBMFMapGetShowMapScaleBarMethod = @"flutter_bmfmap/map/getShowMapScaleBar"; + NSString *const kBMFMapGetMapScaleBarPositionMethod = @"flutter_bmfmap/map/getMapScaleBarPosition"; + NSString *const kBMFMapGetLogoPositionMethod = @"flutter_bmfmap/map/getLogoPosition"; + NSString *const kBMFMapGetVisibleMapBoundsMethod = @"flutter_bmfmap/map/getVisibleMapBounds"; + NSString *const kBMFMapGetBaseIndoorMapEnabledMethod = @"flutter_bmfmap/map/getBaseIndoorMapEnabled"; + NSString *const kBMFMapGetShowIndoorMapPoiMethod = @"flutter_bmfmap/map/getShowIndoorMapPoi"; + +// set +NSString *const kBMFMapUpdateMethod = @"flutter_bmfmap/map/updateMapOptions"; +NSString *const kBMFMapZoomInMethod = @"flutter_bmfmap/map/zoomIn"; +NSString *const kBMFMapZoomOutMethod = @"flutter_bmfmap/map/zoomOut"; +NSString *const kBMFMapSetCustomTrafficColorMethod = @"flutter_bmfmap/map/setCustomTrafficColor"; +NSString *const kBMFMapSetCenterCoordinateMethod = @"flutter_bmfmap/map/setCenterCoordinate"; +NSString *const kBMFMapTakeSnapshotMethod = @"flutter_bmfmap/map/takeSnapshot"; +NSString *const kBMFMapTakeSnapshotWithRectMethod = @"flutter_bmfmap/map/takeSnapshotWithRect"; +NSString *const kBMFMapSetCompassImageMethod = @"flutter_bmfmap/map/setCompassImage"; +NSString *const kBMFMapSetVisibleMapBoundsMethod = @"flutter_bmfmap/map/setVisibleMapBounds"; +NSString *const kBMFMapSetVisibleMapBoundsWithPaddingMethod = @"flutter_bmfmap/map/setVisibleMapBoundsWithPadding"; +NSString *const kBMFMapSetMapStatusMethod = @"flutter_bmfmap/map/setMapStatus"; +NSString *const kBMFMapGetMapStatusMethod = @"flutter_bmfmap/map/getMapStatus"; + +// 室内地图 +NSString *const kBMFMapShowBaseIndoorMapMethod = @"flutter_bmfmap/map/showBaseIndoorMap"; +NSString *const kBMFMapShowBaseIndoorMapPoiMethod = @"flutter_bmfmap/map/showBaseIndoorMapPoi"; +NSString *const kBMFMapSwitchBaseIndoorMapFloorMethod = @"flutter_bmfmap/map/switchBaseIndoorMapFloor"; +NSString *const kBMFMapGetFocusedBaseIndoorMapInfoMethod = @"flutter_bmfmap/map/getFocusedBaseIndoorMapInfo"; + +// 个性化地图 +NSString *const kBMFMapSetCustomMapStyleEnableMethod = @"flutter_bmfmap/map/setCustomMapStyleEnable"; +NSString *const kBMFMapSetCustomMapStylePathMethod = @"flutter_bmfmap/map/setCustomMapStylePath"; +NSString *const kBMFMapSetCustomMapStyleWithOptionMethod = @"flutter_bmfmap/map/setCustomMapStyleWithOption"; + + +#endif diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFOfflineMapMethodConst.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFOfflineMapMethodConst.h new file mode 100644 index 0000000..d42889d --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFOfflineMapMethodConst.h @@ -0,0 +1,35 @@ +#ifndef __BMFOfflineMapMethodConst__H__ +#define __BMFOfflineMapMethodConst__H__ + +#import + +/// offlineMapChannel +FOUNDATION_EXPORT NSString *const kBMFOfflineMapChannelName; + +/// 状态回调 +FOUNDATION_EXPORT NSString *const kBMFOfflineMapCallBackMethod; + +/// 初始化 +FOUNDATION_EXPORT NSString *const kBMFInitOfflineMapMethod; +/// 启动下载指定城市ID的离线地图,或在暂停更新某城市后继续更新下载某城市离线地图 +FOUNDATION_EXPORT NSString *const kBMFStartOfflineMapMethod; +/// 启动更新指定城市ID的离线地图 +FOUNDATION_EXPORT NSString *const kBMFUpdateOfflineMapMethod; +/// 暂停下载或更新指定城市ID的离线地图 +FOUNDATION_EXPORT NSString *const kBMFPauseOfflineMapMethod; +/// 删除指定城市ID的离线地图 +FOUNDATION_EXPORT NSString *const kBMFRemoveOfflineMapMethod; +/// 销毁离线地图管理模块,不用时调用 +FOUNDATION_EXPORT NSString *const kBMFDestroyOfflinMapMethod; +/// 返回热门城市列表 +FOUNDATION_EXPORT NSString *const kBMFGetHotCityListMapMethod; +/// 返回支持离线地图城市列表 +FOUNDATION_EXPORT NSString *const kBMFGetOfflineCityListMapMethod; +/// 根据城市名搜索该城市离线地图记录 +FOUNDATION_EXPORT NSString *const kBMFSearchCityMapMethod; +/// 返回各城市离线地图更新信息 +FOUNDATION_EXPORT NSString *const kBMFGetAllUpdateInfoMapMethod; +/// 返回指定城市ID离线地图更新信息 +FOUNDATION_EXPORT NSString *const kBMFGetUpdateInfoMapMethod; + +#endif diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFOfflineMapMethodConst.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFOfflineMapMethodConst.m new file mode 100644 index 0000000..514c64d --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFOfflineMapMethodConst.m @@ -0,0 +1,26 @@ + +#ifndef __BMFOfflineMapMethodConst__M__ +#define __BMFOfflineMapMethodConst__M__ + +#import + +/// offlineMapChannel +NSString *const kBMFOfflineMapChannelName = @"flutter_bmfmap/offlineMap"; + +/// 状态回调 +NSString *const kBMFOfflineMapCallBackMethod = @"flutter_bmfmap/offlineMap/offlineCallBack"; + +/// 初始化 +NSString *const kBMFInitOfflineMapMethod = @"flutter_bmfmap/offlineMap/initOfflineMap"; +NSString *const kBMFStartOfflineMapMethod = @"flutter_bmfmap/offlineMap/startOfflineMap"; +NSString *const kBMFUpdateOfflineMapMethod = @"flutter_bmfmap/offlineMap/updateOfflineMap"; +NSString *const kBMFPauseOfflineMapMethod = @"flutter_bmfmap/offlineMap/pauseOfflineMap"; +NSString *const kBMFRemoveOfflineMapMethod = @"flutter_bmfmap/offlineMap/removeOfflineMap"; +NSString *const kBMFDestroyOfflinMapMethod = @"flutter_bmfmap/offlineMap/destroyOfflineMap"; +NSString *const kBMFGetHotCityListMapMethod = @"flutter_bmfmap/offlineMap/getHotCityList"; +NSString *const kBMFGetOfflineCityListMapMethod = @"flutter_bmfmap/offlineMap/getOfflineCityList"; +NSString *const kBMFSearchCityMapMethod = @"flutter_bmfmap/offlineMap/searchCityList"; +NSString *const kBMFGetAllUpdateInfoMapMethod = @"flutter_bmfmap/offlineMap/getAllUpdateInfo"; +NSString *const kBMFGetUpdateInfoMapMethod = @"flutter_bmfmap/offlineMap/getUpdateInfo"; + +#endif diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFOverlayMethodConst.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFOverlayMethodConst.h new file mode 100644 index 0000000..32bf752 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFOverlayMethodConst.h @@ -0,0 +1,25 @@ +#ifndef __BMFOverlayMethodConst__H__ +#define __BMFOverlayMethodConst__H__ + +#import + +/// map添加polyline +FOUNDATION_EXPORT NSString *const kBMFMapAddPolylineMethod; +/// map添加arcline +FOUNDATION_EXPORT NSString *const kBMFMapAddArcineMethod; +/// map添加polygon +FOUNDATION_EXPORT NSString *const kBMFMapAddPolygonMethod; +/// map添加circle +FOUNDATION_EXPORT NSString *const kBMFMapAddCircleMethod; +/// map添加tile +FOUNDATION_EXPORT NSString *const kBMFMapAddTileMethod; +/// map添加ground +FOUNDATION_EXPORT NSString *const kBMFMapAddGroundMethod; +/// map删除指定id的overlay +FOUNDATION_EXPORT NSString *const kBMFMapRemoveOverlayMethod; +/// map删除指定id的瓦片图(适配android) +FOUNDATION_EXPORT NSString *const kBMFMapRemoveTileMethod; + +/// 更新polyline属性 +FOUNDATION_EXPORT NSString *const kBMFMapUpdatePolylineMemberMethod; +#endif diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFOverlayMethodConst.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFOverlayMethodConst.m new file mode 100644 index 0000000..df8781a --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFOverlayMethodConst.m @@ -0,0 +1,15 @@ +#ifndef __BMFOverlayMethodConst__M__ +#define __BMFOverlayMethodConst__M__ + +#import + +NSString *const kBMFMapAddPolylineMethod = @"flutter_bmfmap/overlay/addPolyline"; +NSString *const kBMFMapAddArcineMethod = @"flutter_bmfmap/overlay/addArcline"; +NSString *const kBMFMapAddPolygonMethod = @"flutter_bmfmap/overlay/addPolygon"; +NSString *const kBMFMapAddCircleMethod = @"flutter_bmfmap/overlay/addCircle"; +NSString *const kBMFMapAddTileMethod = @"flutter_bmfmap/overlay/addTile"; +NSString *const kBMFMapAddGroundMethod = @"flutter_bmfmap/overlay/addGround"; +NSString *const kBMFMapRemoveOverlayMethod = @"flutter_bmfmap/overlay/removeOverlay"; +NSString *const kBMFMapRemoveTileMethod = @"flutter_bmfmap/overlay/removeTile"; +NSString *const kBMFMapUpdatePolylineMemberMethod = @"flutter_bmfmap/overlay/updatePolylineMember"; +#endif diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFProjectionConst.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFProjectionConst.h new file mode 100644 index 0000000..f0e9f41 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFProjectionConst.h @@ -0,0 +1,12 @@ +#ifndef __BMFProjectionConst__H__ +#define __BMFProjectionConst__H__ + + +#import +// 数据转换 +/// 屏幕坐标转经纬度 +FOUNDATION_EXPORT NSString *const kBMFCoordinateFromScreenPointMethod; +/// 经纬度转换屏幕坐标 +FOUNDATION_EXPORT NSString *const kBMFScreenPointFromCoordinateMethod; + +#endif diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFProjectionConst.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFProjectionConst.m new file mode 100644 index 0000000..62b0149 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFProjectionConst.m @@ -0,0 +1,11 @@ +#ifndef __BMFProjectionConst__M__ +#define __BMFProjectionConst__M__ + + +#import + +NSString *const kBMFCoordinateFromScreenPointMethod = @"flutter_bmfmap/projection/coordinateFromScreenPoint"; +NSString *const kBMFScreenPointFromCoordinateMethod = @"flutter_bmfmap/projection/screenPointfromCoordinate"; + +#endif + diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFUserLocationConst.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFUserLocationConst.h new file mode 100644 index 0000000..2a48832 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFUserLocationConst.h @@ -0,0 +1,18 @@ +#ifndef __BMFUserLocationConst__H__ +#define __BMFUserLocationConst__H__ + +#import + +// 定位图层 +/// 设定是否显示定位图层 +FOUNDATION_EXPORT NSString *const kBMFMapShowUserLocationMethod; +/// 设定定位模式,取值为:BMFUserTrackingMode +FOUNDATION_EXPORT NSString *const kBMFMapUserTrackingModeMethod; +/// 返回定位坐标点是否在当前地图可视区域内 +FOUNDATION_EXPORT NSString *const kBMFMapIsUserLocationVisibleMethod; +/// 动态定制我的位置样式 +FOUNDATION_EXPORT NSString *const kBMFMapUpdateLocationDisplayParamMethod; +/// 动态更新我的位置数据 +FOUNDATION_EXPORT NSString *const kBMFMapUpdateLocationDataMethod; + +#endif diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFUserLocationConst.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFUserLocationConst.m new file mode 100644 index 0000000..062e035 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/MethodConst/BMFUserLocationConst.m @@ -0,0 +1,14 @@ +#ifndef __BMFUserLocationConst__M__ +#define __BMFUserLocationConst__M__ + +#import + +// 定位图层 +NSString *const kBMFMapShowUserLocationMethod = @"flutter_bmfmap/userLocation/showUserLocation"; +NSString *const kBMFMapUserTrackingModeMethod = @"flutter_bmfmap/userLocation/userTrackingMode"; +NSString *const kBMFMapIsUserLocationVisibleMethod = @"flutter_bmfmap/userLocation/isUserLocationVisible"; +NSString *const kBMFMapUpdateLocationDisplayParamMethod = @"flutter_bmfmap/userLocation/updateLocationDisplayParam"; +NSString *const kBMFMapUpdateLocationDataMethod = @"flutter_bmfmap/userLocation/updateLocationData"; + +#endif + diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFAnnotationModel.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFAnnotationModel.h new file mode 100644 index 0000000..83f3b1b --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFAnnotationModel.h @@ -0,0 +1,69 @@ +// +// BMFAnnotationModel.h +// flutter_bmfmap +// +// Created by zbj on 2020/2/11. +// + +#import "BMFModel.h" +@class BMFCoordinate; +@class BMFMapPoint; +@class BMFAnnotationViewOptions; +NS_ASSUME_NONNULL_BEGIN + +@interface BMFAnnotationModel : BMFModel + +/// flutter层mark的唯一id(用于区别哪个marker) +@property (nonatomic, copy) NSString *Id; + +/// 标题 +@property (nonatomic, copy) NSString *title; + +/// 子标题 +@property (nonatomic, copy) NSString *subtitle; + +/// annotation中心坐标. +@property (nonatomic, strong) BMFCoordinate *position; + +/// 标注固定在指定屏幕位置, 必须与screenPointToLock一起使用。 注意:拖动Annotation isLockedToScreen会被设置为false。 +/// 若isLockedToScreen为true,拖动地图时annotaion不会跟随移动; +/// 若isLockedToScreen为false,拖动地图时annotation会跟随移动。 +@property (nonatomic, assign) BOOL isLockedToScreen; + +/// 标注锁定在屏幕上的位置,注意:地图初始化后才能设置screenPointToLock。 +/// 可以在地图加载完成的回调方法:mapViewDidFinishLoading中使用此属性。 +@property (nonatomic, strong)BMFMapPoint *screenPointToLock; + +/// annotationView的参数集合 +@property (nonatomic, strong) BMFAnnotationViewOptions *annotationViewOptions; + +@end + + +@interface BMFAnnotationViewOptions : BMFModel + +/// annotationView复用标识符 +@property (nonatomic, copy) NSString *identifier; + +/// 图片路径 +@property (nonatomic, copy) NSString *icon; + +/// 默认情况下, annotation +/// view的中心位于annotation的坐标位置,可以设置centerOffset改变view的位置, +/// 正的偏移使view朝右下方移动,负的朝左上方,单位是像素 +@property (nonatomic, strong) BMFMapPoint *centerOffset; + +/// 默认情况下,标注没有3D效果,可以设置enabled3D改变使用3D效果,使得标注在地图旋转和俯视时跟随旋转、俯视 +@property (nonatomic, assign) BOOL enabled3D; + +/// 默认为YES,当为NO时view忽略触摸事件 +@property (nonatomic, assign) BOOL enabled; + +/// 当设为YES并实现了setCoordinate:方法时,支持将view在地图上拖动, iOS 3.2以后支持 +@property (nonatomic, assign) BOOL draggable; + +/// 默认为NO,当为YES时为会弹出气泡 +@property (nonatomic, assign) BOOL selected; + +@end +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFAnnotationModel.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFAnnotationModel.m new file mode 100644 index 0000000..dcef88b --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFAnnotationModel.m @@ -0,0 +1,24 @@ +// +// BMFAnnotationModel.m +// flutter_bmfmap +// +// Created by zbj on 2020/2/11. +// + +#import "BMFAnnotationModel.h" +#import "BMFMapModels.h" + +@implementation BMFAnnotationModel + ++ (NSDictionary *)bmf_setupReplacedKeyFromPropertyName{ + return @{@"Id" : @"id", + @"annotationViewOptions" : @"markerOptions" + }; +} + +@end + + +@implementation BMFAnnotationViewOptions + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFArclineModel.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFArclineModel.h new file mode 100644 index 0000000..daedb17 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFArclineModel.h @@ -0,0 +1,42 @@ +// +// BMFArclineModel.h +// flutter_bmfmap +// +// Created by zbj on 2020/2/15. +// + +#import "BMFModel.h" + +@class BMFCoordinate; +@class BMFArclineViewOptions; +NS_ASSUME_NONNULL_BEGIN + +@interface BMFArclineModel : BMFModel + +/// flutter层arcline的唯一id(用于区别哪个arcline) +@property (nonatomic, copy) NSString *Id; + +/// 指定的经纬度坐标点数组(需传入3个点) +@property (nonatomic, strong) NSArray *coordinates; + +/// arclineView属性model +@property (nonatomic, strong) BMFArclineViewOptions *arclineOptions; + +@end + +@interface BMFArclineViewOptions : BMFModel + + +/// 颜色16进制 +@property (nonatomic, copy) NSString *color; + +/// 线宽 +@property (nonatomic, assign) int width; + +/// 虚线类型 +@property (nonatomic, assign) int lineDashType; + + + +@end +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFArclineModel.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFArclineModel.m new file mode 100644 index 0000000..c7f7319 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFArclineModel.m @@ -0,0 +1,25 @@ +// +// BMFArclineModel.m +// flutter_bmfmap +// +// Created by zbj on 2020/2/15. +// + +#import "BMFArclineModel.h" +#import "BMFMapModels.h" +@implementation BMFArclineModel + ++ (NSDictionary *)bmf_setupObjectClassInArray{ + return @{@"coordinates" : @"BMFCoordinate"}; +} + ++ (NSDictionary *)bmf_setupReplacedKeyFromPropertyName{ + return @{@"Id" : @"id"}; +} + +@end + +@implementation BMFArclineViewOptions + + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFCircleModel.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFCircleModel.h new file mode 100644 index 0000000..312a3e9 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFCircleModel.h @@ -0,0 +1,47 @@ +// +// BMFCircleModel.h +// flutter_bmfmap +// +// Created by zbj on 2020/2/15. +// + +#import "BMFModel.h" + +@class BMFCoordinate; +@class BMFCircleViewOptions; +NS_ASSUME_NONNULL_BEGIN + +@interface BMFCircleModel : BMFModel + +/// flutter层circle的唯一id(用于区别哪个circle) +@property (nonatomic, copy) NSString *Id; + +/// 半径,单位:米 +@property (nonatomic, assign) double radius; + +/// 中心点坐标 +@property (nonatomic, strong) BMFCoordinate *center; + +/// circleView属性model +@property (nonatomic,strong) BMFCircleViewOptions *circleOptions; + +@end + + +@interface BMFCircleViewOptions : BMFModel + +/// 线宽 +@property (nonatomic, assign) int width; + +/// 颜色16进制strokeColor +@property (nonatomic, copy) NSString *strokeColor; + +/// 颜色16进制fillColor +@property (nonatomic, copy) NSString *fillColor; + +/// 虚线类型 +@property (nonatomic, assign) int lineDashType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFCircleModel.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFCircleModel.m new file mode 100644 index 0000000..5f8f4fd --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFCircleModel.m @@ -0,0 +1,21 @@ +// +// BMFCircleModel.m +// flutter_bmfmap +// +// Created by zbj on 2020/2/15. +// + +#import "BMFCircleModel.h" +#import "BMFMapModels.h" + +@implementation BMFCircleModel + ++ (NSDictionary *)bmf_setupReplacedKeyFromPropertyName{ + return @{@"Id" : @"id"}; +} + +@end + +@implementation BMFCircleViewOptions + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFEdgeInsets.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFEdgeInsets.h new file mode 100644 index 0000000..ff76adc --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFEdgeInsets.h @@ -0,0 +1,30 @@ +// +// BMFEdgeInsets.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/3. +// + +#import "BMFModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFEdgeInsets : BMFModel + +/// top +@property (nonatomic, assign) CGFloat top; + +/// left +@property (nonatomic, assign) CGFloat left; + +/// bottom +@property (nonatomic, assign) CGFloat bottom; + +/// right +@property (nonatomic, assign) CGFloat right; + +- (UIEdgeInsets)toUIEdgeInsets; + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFEdgeInsets.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFEdgeInsets.m new file mode 100644 index 0000000..8d0edd7 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFEdgeInsets.m @@ -0,0 +1,16 @@ +// +// BMFEdgeInsets.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/3. +// + +#import "BMFEdgeInsets.h" + +@implementation BMFEdgeInsets + +- (UIEdgeInsets)toUIEdgeInsets{ + return UIEdgeInsetsMake(self.top, self.left, self.bottom, self.right); +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFGroundModel.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFGroundModel.h new file mode 100644 index 0000000..e524ff9 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFGroundModel.h @@ -0,0 +1,57 @@ +// +// BMFGroundModel.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/22. +// + +#import "BMFModel.h" + +@class BMFGroundModelOptions; +@class BMFCoordinate; +@class BMFCoordinateBounds; + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFGroundModel : BMFModel + +/// groundOverlay 唯一id +@property (nonatomic, copy) NSString *Id; + +/// 参数集合 +@property (nonatomic, strong) BMFGroundModelOptions *groundOptions; + +@end + +@interface BMFGroundModelOptions : BMFModel + +/// 图片 +@property (nonatomic, copy) NSString *image; + +/// 宽 +@property (nonatomic, assign) double width; + +/// 高 +@property (nonatomic, assign) double height; + +/// 锚点x +@property (nonatomic, assign) double anchorX; + +/// 锚点y +@property (nonatomic, assign) double anchorY; + +/// 缩放级别 +@property (nonatomic, assign) int zoomLevel; + +/// 两种绘制GroundOverlay的方式之一:绘制的位置地理坐标,与anchor配对使用 +@property (nonatomic, strong) BMFCoordinate *position; + +/// 两种绘制GroundOverlay的方式之二:绘制的地理区域范围,图片在此区域内合理缩放 +@property (nonatomic, strong) BMFCoordinateBounds *bounds; + +/// 图片纹理透明度,最终透明度 = 纹理透明度 * alpha,取值范围为[0.0f, 1.0f],默认为1.0f +@property (nonatomic, assign) double transparency; + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFGroundModel.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFGroundModel.m new file mode 100644 index 0000000..9880a7a --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFGroundModel.m @@ -0,0 +1,23 @@ +// +// BMFGroundModel.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/22. +// + +#import "BMFGroundModel.h" +#import "BMFMapModels.h" + +@implementation BMFGroundModel + ++ (NSDictionary *)bmf_setupReplacedKeyFromPropertyName{ + return @{@"Id" : @"id"}; +} + +@end + + +@implementation BMFGroundModelOptions + + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFHeatMapModel.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFHeatMapModel.h new file mode 100644 index 0000000..80d1afb --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFHeatMapModel.h @@ -0,0 +1,59 @@ +// +// BMFHeatMapModel.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/26. +// + +#import "BMFModel.h" + +@class BMFGradient; +@class BMFHeatMapModelNode; +@class BMFCoordinate; +@class BMKHeatMap; +@class BMKGradient; +@class BMKHeatMapNode; +NS_ASSUME_NONNULL_BEGIN + +@interface BMFHeatMapModel : BMFModel + +///设置热力图点半径,默认为12ps +@property (nonatomic, assign) int radius; + +///设置热力图渐变,有默认值 DEFAULT_GRADIENT +@property (nonatomic, strong) BMFGradient *gradient; + +///设置热力图层透明度,默认 0.6 +@property (nonatomic, assign) double opacity; + +///用户传入的热力图数据,数组,成员类型为BMFHeatMapModelNode +@property (nonatomic, strong) NSMutableArray *data; + +- (BMKHeatMap *)toBMKHeatMap; + +@end + +@interface BMFGradient : BMFModel + +///渐变色用到的所有颜色数组,数组成员类型为UIColor +@property (nonatomic, strong) NSArray *colors; + +///每一个颜色的起始点数组,,数组成员类型为 [0,1]的double值, given as a percentage of the maximum intensity,个数和mColors的个数必须相同,数组内元素必须时递增的 +@property (nonatomic, strong) NSArray *startPoints; + +- (BMKGradient *)toBMKGradient; + +@end + +@interface BMFHeatMapModelNode : BMFModel + +/// 点的强度权值 +@property (nonatomic, assign) double intensity; + +/// 点的位置坐标 +@property (nonatomic, strong) BMFCoordinate *pt; + +- (BMKHeatMapNode *)toBMKHeatMapNode; + +@end +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFHeatMapModel.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFHeatMapModel.m new file mode 100644 index 0000000..9080597 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFHeatMapModel.m @@ -0,0 +1,64 @@ +// +// BMFHeatMapModel.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/26. +// + +#import "BMFHeatMapModel.h" +#import +#import "BMFMapModels.h" +#import "UIColor+BMFString.h" +@implementation BMFHeatMapModel + ++ (NSDictionary *)bmf_setupObjectClassInArray{ + return @{@"data" : @"BMFHeatMapModelNode"}; +} + +- (BMKHeatMap *)toBMKHeatMap{ + BMKHeatMap *heatMap = [BMKHeatMap new]; + heatMap.mRadius = self.radius; + heatMap.mGradient = [self.gradient toBMKGradient]; + heatMap.mOpacity = self.opacity; + NSMutableArray *mut = [NSMutableArray array]; + for (BMFHeatMapModelNode *node in self.data) { + [mut addObject:[node toBMKHeatMapNode]]; + } + heatMap.mData = mut; + return heatMap; +} + +@end + +@implementation BMFGradient + ++ (NSDictionary *)bmf_setupObjectClassInArray{ + return @{@"colors" : @"NSString", + @"startPoints" : @"NSNumber" + }; +} + +- (BMKGradient *)toBMKGradient{ + BMKGradient *gradient = [BMKGradient new]; + NSMutableArray *colors = [NSMutableArray array]; + for (NSString *color in self.colors) { + [colors addObject:[UIColor fromColorString:color]]; + } + gradient.mColors = colors; + gradient.mStartPoints = self.startPoints; + return gradient; +} + +@end + + +@implementation BMFHeatMapModelNode + +- (BMKHeatMapNode *)toBMKHeatMapNode{ + BMKHeatMapNode *node = [BMKHeatMapNode new]; + node.intensity = self.intensity; + node.pt = [self.pt toCLLocationCoordinate2D]; + return node; +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFIndoorMapInfoModel.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFIndoorMapInfoModel.h new file mode 100644 index 0000000..a443b5c --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFIndoorMapInfoModel.h @@ -0,0 +1,23 @@ +// +// BMFIndoorMapInfoModel.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/2/28. +// + +#import "BMFModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFIndoorMapInfoModel : BMFModel + +/// 室内ID +@property (nonatomic, strong) NSString* strID; +/// 当前楼层 +@property (nonatomic, strong) NSString* strFloor; +/// 所有楼层信息 +@property (nonatomic, strong) NSMutableArray* listStrFloors; + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFIndoorMapInfoModel.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFIndoorMapInfoModel.m new file mode 100644 index 0000000..37edbe3 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFIndoorMapInfoModel.m @@ -0,0 +1,14 @@ +// +// BMFIndoorMapInfoModel.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/2/28. +// + +#import "BMFIndoorMapInfoModel.h" + +@implementation BMFIndoorMapInfoModel ++ (NSDictionary *)bmf_setupObjectClassInArray{ + return @{@"listStrFloors" : @"NSString"}; +} +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFMapPoiModel.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFMapPoiModel.h new file mode 100644 index 0000000..f515280 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFMapPoiModel.h @@ -0,0 +1,29 @@ +// +// BMFMapPoiModel.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/6. +// + +#import "BMFModel.h" + +@class BMFCoordinate; +@class BMKMapPoi; + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFMapPoiModel : BMFModel + +/// 点标注的名称 +@property (nonatomic, strong) NSString *text; + +/// 点标注的经纬度坐标 +@property (nonatomic, strong) BMFCoordinate *pt; + +/// 点标注的uid,可能为空 +@property (nonatomic, strong) NSString *uid; + ++ (BMFMapPoiModel *)fromBMKMapPoi:(BMKMapPoi *)poi; +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFMapPoiModel.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFMapPoiModel.m new file mode 100644 index 0000000..bc0a665 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFMapPoiModel.m @@ -0,0 +1,20 @@ +// +// BMFMapPoiModel.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/6. +// + +#import "BMFMapPoiModel.h" +#import "BMFMapModels.h" +#import + +@implementation BMFMapPoiModel ++ (BMFMapPoiModel *)fromBMKMapPoi:(BMKMapPoi *)poi{ + BMFMapPoiModel *model = [BMFMapPoiModel new]; + model.text = poi.text; + model.pt = [BMFCoordinate fromCLLocationCoordinate2D:poi.pt]; + model.uid = poi.uid; + return model; +} +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFMapStatusModel.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFMapStatusModel.h new file mode 100644 index 0000000..f1c6a48 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFMapStatusModel.h @@ -0,0 +1,43 @@ +// +// BMFMapStatusModel.h +// flutter_bmfmap +// +// Created by zbj on 2020/2/20. +// + +#import "BMFModel.h" + +@class BMFCoordinate; +@class BMFMapPoint; +@class BMFCoordinateBounds; +@class BMKMapStatus; +NS_ASSUME_NONNULL_BEGIN + +@interface BMFMapStatusModel : BMFModel + +/// 缩放级别:[3~19] +@property (nonatomic, assign) float fLevel; + +/// 旋转角度 +@property (nonatomic, assign) float fRotation; + +/// 俯视角度:[-45~0] +@property (nonatomic, assign) float fOverlooking; + +/// 屏幕中心点坐标:在屏幕内,超过无效 +@property (nonatomic, strong) BMFMapPoint *targetScreenPt; + +/// 地理中心点坐标:经纬度 +@property (nonatomic, strong) BMFCoordinate *targetGeoPt; + +/// 当前地图范围,采用经纬度坐标系东北,西南两坐标表示范围 +@property (nonatomic, strong) BMFCoordinateBounds *visibleMapBounds; + + ++ (BMFMapStatusModel *)fromMapStatus:(BMKMapStatus *)mapStatus; + +- (BMKMapStatus *)toMapStatus; + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFMapStatusModel.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFMapStatusModel.m new file mode 100644 index 0000000..3c6323c --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFMapStatusModel.m @@ -0,0 +1,39 @@ +// +// BMFMapStatusModel.m +// flutter_bmfmap +// +// Created by zbj on 2020/2/20. +// + +#import "BMFMapStatusModel.h" +#import "BMFMapModels.h" +#import + +typedef struct CG_BOXABLE BMFlutterMapRect BMFlutterMapRect; + +@implementation BMFMapStatusModel ++ (BMFMapStatusModel *)fromMapStatus:(BMKMapStatus *)mapStatus{ + BMFMapStatusModel *model = [BMFMapStatusModel new]; + model.fLevel = mapStatus.fLevel; + model.fRotation = mapStatus.fRotation; + model.fOverlooking = mapStatus.fOverlooking; + model.targetScreenPt = [BMFMapPoint fromCGPoint:mapStatus.targetScreenPt]; + model.targetGeoPt = [BMFCoordinate fromCLLocationCoordinate2D:mapStatus.targetGeoPt]; + BMFMapRect *rect = [BMFMapRect fromBMKMapRect:mapStatus.visibleMapRect]; + model.visibleMapBounds = [rect toBMFCoordinateBounds]; + return model; +} +- (BMKMapStatus *)toMapStatus { + BMKMapStatus *status = [BMKMapStatus new]; + status.fLevel = self.fLevel; + status.fRotation = self.fRotation; + status.fOverlooking = self.fOverlooking; + status.targetGeoPt = [self.targetGeoPt toCLLocationCoordinate2D]; + status.targetScreenPt = [self.targetScreenPt toCGPoint]; + // 这里需要KVC赋值 + BMKMapRect mapRect = [self.visibleMapBounds toBMKMapRect]; + NSValue *value = [NSValue valueWithBytes:&mapRect objCType:@encode(BMKMapRect)]; + [status setValue:value forKey:@"_visibleMapRect"]; + return status; +} +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFOLSearchRecordModel.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFOLSearchRecordModel.h new file mode 100644 index 0000000..4b13754 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFOLSearchRecordModel.h @@ -0,0 +1,71 @@ +// +// BMFOLSearchRecordModel.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/25. +// + +#import "BMFModel.h" + +@class BMFCoordinate; +@class BMKOLSearchRecord; +@class BMKOLUpdateElement; + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFOLSearchRecordModel : BMFModel + +/// 城市名称 +@property (nonatomic, copy) NSString *cityName; + +/// 数据包总大小 +@property (nonatomic, assign) int dataSize; + +/// 城市ID +@property (nonatomic, assign) int cityID; + +/// 城市类型 0:全国;1:省份;2:城市;如果是省份,可以通过childCities得到子城市列表 +@property (nonatomic, assign) int cityType; + +/// 子城市列表 +@property (nonatomic, strong) NSArray *childCities; + ++ (BMFOLSearchRecordModel *)fromBMKOLSearchRecord:(BMKOLSearchRecord *)olSearchRecord; + ++ (NSArray *)fromDataArray:(NSArray *)dataArray; +@end + + +@interface BMFOLUpdateElementModel : BMFModel + +/// 城市名称 +@property (nonatomic, copy) NSString *cityName; + +/// 城市ID +@property (nonatomic, assign) int cityID; + +/// 已下载数据大小,单位:字节 +@property (nonatomic, assign) int size; + +/// 服务端数据大小,当update为YES时有效,单位:字节 +@property (nonatomic, assign) int serversize; + +/// 下载比率,100为下载完成,下载完成后会自动导入,status为4时离线包导入完成 +@property (nonatomic, assign) int ratio; + +/// 下载状态, -1:未定义 1:正在下载 2:等待下载 3:已暂停 4:完成 5:校验失败 6:网络异常 7:读写异常 8:Wifi网络异常 9:离线包数据格式异常,需重新下载离线包 10:离线包导入中 +@property (nonatomic, assign) int status; + +/// 更新状态,离线包是否有更新(有更新需重新下载) +@property (nonatomic, assign) BOOL update; + +/// 城市中心点 +@property (nonatomic, strong) BMFCoordinate *geoPt; + ++ (BMFOLUpdateElementModel *)fromBMKOLUpdateElement:(BMKOLUpdateElement *)olUpdateElement; + ++ (NSArray *)fromDataArray:(NSArray *)dataArray; + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFOLSearchRecordModel.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFOLSearchRecordModel.m new file mode 100644 index 0000000..aeca764 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFOLSearchRecordModel.m @@ -0,0 +1,62 @@ +// +// BMFOLSearchRecordModel.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/25. +// + +#import "BMFOLSearchRecordModel.h" +#import "BMFMapModels.h" +#import + +@implementation BMFOLSearchRecordModel + ++ (NSDictionary *)bmf_setupObjectClassInArray{ + return @{@"childCities" : @"BMFOLSearchRecordModel" + }; +} ++ (BMFOLSearchRecordModel *)fromBMKOLSearchRecord:(BMKOLSearchRecord *)olSearchRecord{ + BMFOLSearchRecordModel *model = [BMFOLSearchRecordModel new]; + model.cityID = olSearchRecord.cityID; + model.cityName = olSearchRecord.cityName; + model.dataSize = (int)olSearchRecord.size; + model.cityType = olSearchRecord.cityType; + if (olSearchRecord.childCities && olSearchRecord.childCities.count > 0) { + model.childCities = [BMFOLSearchRecordModel fromDataArray:olSearchRecord.childCities]; + } + + return model; +} + ++ (NSArray *)fromDataArray:(NSArray *)dataArray{ + NSMutableArray * models = [NSMutableArray array]; + for (BMKOLSearchRecord *record in dataArray) { + [models addObject:[BMFOLSearchRecordModel fromBMKOLSearchRecord:record]]; + } + return models; +} +@end + + +@implementation BMFOLUpdateElementModel + ++ (BMFOLUpdateElementModel *)fromBMKOLUpdateElement:(BMKOLUpdateElement *)olUpdateElement{ + BMFOLUpdateElementModel *model = [BMFOLUpdateElementModel new]; + model.cityID = olUpdateElement.cityID; + model.cityName = olUpdateElement.cityName; + model.size = (int)olUpdateElement.size; + model.serversize = (int)olUpdateElement.serversize; + model.ratio = olUpdateElement.ratio; + model.status = olUpdateElement.status; + model.update = olUpdateElement.update; + model.geoPt = [BMFCoordinate fromCLLocationCoordinate2D:olUpdateElement.pt]; + return model; +} ++ (NSArray *)fromDataArray:(NSArray *)dataArray{ + NSMutableArray *models = [NSMutableArray array]; + for (BMKOLUpdateElement *element in dataArray) { + [models addObject:[BMFOLUpdateElementModel fromBMKOLUpdateElement:element]]; + } + return models; +} +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFPolygonModel.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFPolygonModel.h new file mode 100644 index 0000000..20e0bcc --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFPolygonModel.h @@ -0,0 +1,46 @@ +// +// BMFPolygonModel.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/2/27. +// + +#import "BMFModel.h" + +@class BMFCoordinate; +@class BMFPolygonViewOptions; +NS_ASSUME_NONNULL_BEGIN + +@interface BMFPolygonModel : BMFModel + +/// flutter层polygon的唯一id(用于区别哪个polygon) +@property (nonatomic, copy) NSString *Id; + +/// 经纬度数组 +@property (nonatomic, strong) NSArray *coordinates; + +/// polygonView属性model +@property (nonatomic,strong) BMFPolygonViewOptions *polygonOptions; + +@end + + +@interface BMFPolygonViewOptions : BMFModel + +/// 线宽 +@property (nonatomic, assign) int width; + +/// 颜色16进制strokeColor +@property (nonatomic, copy) NSString *strokeColor; + +/// 颜色16进制fillColor +@property (nonatomic, copy) NSString *fillColor; + +/// 虚线类型 +@property (nonatomic, assign) int lineDashType; + +@end + + + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFPolygonModel.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFPolygonModel.m new file mode 100644 index 0000000..f9b8fd3 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFPolygonModel.m @@ -0,0 +1,25 @@ +// +// BMFPolygonModel.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/2/27. +// + +#import "BMFPolygonModel.h" +#import "BMFMapModels.h" +@implementation BMFPolygonModel + ++ (NSDictionary *)bmf_setupReplacedKeyFromPropertyName{ + return @{@"Id" : @"id"}; +} + ++ (NSDictionary *)bmf_setupObjectClassInArray{ + return @{@"coordinates" : @"BMFCoordinate"}; +} + +@end + + +@implementation BMFPolygonViewOptions + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFPolylineModel.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFPolylineModel.h new file mode 100644 index 0000000..fb911a0 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFPolylineModel.h @@ -0,0 +1,57 @@ +// +// BMFPolylineModel.h +// flutter_bmfmap +// +// Created by zbj on 2020/2/11. +// + +#import "BMFModel.h" + +@class BMFCoordinate; +@class BMFPolylineViewOptions; + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFPolylineModel : BMFModel + +/// flutter层polylinr的唯一id(用于区别哪个polyline) +@property (nonatomic, copy) NSString *Id; + +/// 经纬度数组 +@property (nonatomic, strong) NSArray *coordinates; + +/// indexs +@property (nonatomic, strong) NSArray *indexs; + +/// 是否抽希 +@property (nonatomic, assign) BOOL isThined; + + +/// polylineView属性model +@property (nonatomic, strong) BMFPolylineViewOptions *polylineOptions; + +@end + +@interface BMFPolylineViewOptions : BMFModel + +/// 颜色数组16进制 +@property (nonatomic, strong) NSArray *colors; + +/// 图片路径数组 +@property (nonatomic, strong) NSArray *textures; + +/// 线宽 +@property (nonatomic, assign) int width; + +/// 虚线类型 +@property (nonatomic, assign) int lineDashType; + +/// line头尾处理方式(不支持虚线) +@property (nonatomic, assign) int lineCapType; + +/// line拐角处理方式(不支持虚线) +@property (nonatomic, assign) int lineJoinType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFPolylineModel.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFPolylineModel.m new file mode 100644 index 0000000..61b620e --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFPolylineModel.m @@ -0,0 +1,33 @@ +// +// BMFPolylineModel.m +// flutter_bmfmap +// +// Created by zbj on 2020/2/11. +// + +#import "BMFPolylineModel.h" +#import "BMFMapModels.h" + +@implementation BMFPolylineModel + ++ (NSDictionary *)bmf_setupObjectClassInArray{ + return @{@"coordinates" : @"BMFCoordinate", + @"indexs" : @"NSNumber" + }; +} ++ (NSDictionary *)bmf_setupReplacedKeyFromPropertyName{ + return @{@"Id" : @"id"}; +} + +@end + + +@implementation BMFPolylineViewOptions + ++ (NSDictionary *)bmf_setupObjectClassInArray{ + return @{@"colors" : @"NSString", + @"textures" : @"NSString" + }; +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFTileModel.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFTileModel.h new file mode 100644 index 0000000..3d6869b --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFTileModel.h @@ -0,0 +1,54 @@ +// +// BMFTileModel.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/20. +// + +#import "BMFModel.h" + +@class BMFTileModelOptions; +@class BMFTileProvider; +@class BMFCoordinateBounds; + +typedef NS_ENUM(NSUInteger, BMFTileLoadType){ + kBMFTileLoadUrl = 0, ///< 网络加载 + kBMFTileLoadLocalAsync, ///< 本地异步加载 + kBMFTileLoadLocalSync, ///<本地同步加载 +}; + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFTileModel : BMFModel + +/// 唯一id +@property (nonatomic, copy) NSString *Id; + +/// tileLayer的可见最小Zoom值,默认3 +@property (nonatomic, assign) NSInteger minZoom; + +/// tileLayer的可见最大Zoom值,默认21,且不能小于minZoom +@property (nonatomic, assign) NSInteger maxZoom; + +/// tileOverlay的可渲染区域,默认世界范围 +@property (nonatomic, strong) BMFCoordinateBounds *visibleMapBounds; + +/// 瓦片图缓存大小,android端需要,ios端暂时不需要 +@property (nonatomic, assign) int maxTileTmp; + +/// 参数集合 +@property (nonatomic, strong) BMFTileModelOptions *tileOptions; + +@end + +@interface BMFTileModelOptions : BMFModel + +/// 瓦片图加载方式 +@property (nonatomic, assign) BMFTileLoadType tileLoadType; + +/// url +@property (nonatomic, copy) NSString *url; + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFTileModel.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFTileModel.m new file mode 100644 index 0000000..54e7e95 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFTileModel.m @@ -0,0 +1,22 @@ +// +// BMFTileModel.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/20. +// + +#import "BMFTileModel.h" +#import "BMFMapModels.h" + +@implementation BMFTileModel + ++ (NSDictionary *)bmf_setupReplacedKeyFromPropertyName{ + return @{@"Id" : @"id"}; +} + +@end + +@implementation BMFTileModelOptions + +@end + diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFUserLocationModel.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFUserLocationModel.h new file mode 100644 index 0000000..bc6f642 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFUserLocationModel.h @@ -0,0 +1,137 @@ +// +// BMFUserLocationModel.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/01. +// + +#import "BMFModel.h" + +@class BMFCoordinate; +@class BMFLocationModel; +@class BMFHeadingModel; +@class BMKUserLocation; +@class CLHeading; +@class CLLocation; +@class BMKLocationViewDisplayParam; + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFUserLocationModel : BMFModel + +/// 位置更新状态,如果正在更新位置信息,则该值为YES +@property (nonatomic, assign) BOOL updating; + +/// 位置信息,尚未定位成功,则该值为nil +@property (nonatomic, strong) BMFLocationModel *location; + +/// heading信息,尚未定位成功,则该值为nil +@property (nonatomic, strong) BMFHeadingModel *heading; + +/// 定位标注点要显示的标题信息 +@property (nonatomic, copy) NSString *title; + +/// 定位标注点要显示的子标题信息 +@property (nonatomic, copy) NSString *subtitle; + +- (BMKUserLocation *)toBMKUserLocation; + +@end + +@interface BMFLocationModel : BMFModel + +/// 经纬度 +@property(nonatomic, strong) BMFCoordinate *coordinate; + +/// 海拔 +@property(nonatomic, assign) double altitude; + +/// 水平精确度 +@property(nonatomic, assign) double horizontalAccuracy; + +/// 垂直精确度 +@property(nonatomic, assign) double verticalAccuracy; + +/// 航向 +@property(nonatomic, assign) double course; + +/// 速度 +@property(nonatomic, assign) double speed; + +/// 时间 +@property (nonatomic, copy) NSString *timestamp; + +- (CLLocation *)toCLLocation; + +@end + +@interface BMFHeadingModel : BMFModel + +/// 磁头 +/// 表示度方向,其中0度为磁北。无论设备的方向以及用户界面的方向如何,方向都是从设备的顶部引用的。 +/// 范围: 0.0 - 359.9度,0度为地磁北极 +@property (nonatomic, assign) double magneticHeading; + +/// 表示角度方向,其中0度为真北。参考方向 +/// 不考虑设备的方向以及设备的方向 +/// 范围: 0.0 - 359.9度,0为正北 +@property (nonatomic, assign) double trueHeading; + +/// 航向精度 +/// 表示磁头可能与实际地磁头偏差的最大度数。负值表示无效的标题。 +@property (nonatomic, assign) double headingAccuracy; + +/// x轴测量的地磁的原始值 +@property (nonatomic, assign) double x; + +/// y轴测量的地磁的原始值 +@property (nonatomic, assign) double y; + +/// z轴测量的地磁的原始值 +@property (nonatomic, assign) double z; + +/// 时间戳 +@property (nonatomic, copy) NSString *timestamp; + +- (CLHeading *)toCLHeading; + +@end + + +@interface BMFLocationViewDisplayParam : BMFModel + +/// 定位图标X轴偏移量(屏幕坐标) +@property (nonatomic, assign) CGFloat locationViewOffsetX; + +/// 定位图标Y轴偏移量(屏幕坐标) +@property (nonatomic, assign) CGFloat locationViewOffsetY; + +/// 精度圈是否显示,默认YES +@property (nonatomic, assign) BOOL isAccuracyCircleShow; + +/// 精度圈 填充颜色 +@property (nonatomic, copy) NSString *accuracyCircleFillColor; + +/// 精度圈 边框颜色 +@property (nonatomic, copy) NSString *accuracyCircleStrokeColor; + +/// 跟随态旋转角度是否生效,默认YES +@property (nonatomic, assign) BOOL isRotateAngleValid; + +///// 定位图标名称,需要将该图片放到 mapapi.bundle/images 目录下 +//@property (nonatomic, strong) NSString *locationViewImgName; + +/// 用户自定义定位图标,V4.2.1以后支持 +@property (nonatomic, copy) NSString *locationViewImage; + +/// 是否显示气泡,默认YES +@property (nonatomic, assign) BOOL canShowCallOut; + +/// locationView在mapview上的层级 默认值为LOCATION_VIEW_HIERARCHY_BOTTOM +@property (nonatomic, assign) int locationViewHierarchy; + +- (BMKLocationViewDisplayParam *)toBMKLocationViewDisplayParam; + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFUserLocationModel.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFUserLocationModel.m new file mode 100644 index 0000000..d2fedb3 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/Models/BMFUserLocationModel.m @@ -0,0 +1,105 @@ +// +// BMFUserLocationModel.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/01. +// + +#import "BMFUserLocationModel.h" +#import "BMFMapModels.h" +#import "UIColor+BMFString.h" +#import "BMFFileManager.h" +#import + +struct BMFHeadingInfo{ + double x; + double y; + double z; + double magneticHeading; + double trueHeading; + double accuracy; + double timestamp; +}; +typedef struct CG_BOXABLE BMFHeadingInfo BMFHeadingInfo; + +@implementation BMFUserLocationModel +- (BMKUserLocation *)toBMKUserLocation{ + BMKUserLocation *userLocation = [BMKUserLocation new]; + userLocation.location = [self.location toCLLocation]; + userLocation.heading = [self.heading toCLHeading]; + userLocation.title = self.title; + userLocation.subtitle = self.subtitle; + return userLocation; +} +@end + +@implementation BMFLocationModel + +- (CLLocation *)toCLLocation{ + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"]; + CLLocation *location = [[CLLocation alloc] initWithCoordinate:[self.coordinate toCLLocationCoordinate2D] + altitude:self.altitude + horizontalAccuracy:self.horizontalAccuracy + verticalAccuracy:self.verticalAccuracy + course:self.course speed:self.speed + timestamp:self.timestamp ? [dateFormatter dateFromString:self.timestamp] : [NSDate date]]; + return location; +} + +@end + + +@implementation BMFHeadingModel + +- (CLHeading *)toCLHeading{ + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"]; + NSDate *date = self.timestamp ? [dateFormatter dateFromString:self.timestamp] : [NSDate date]; + + CLHeading *heading = [CLHeading new]; + BMFHeadingInfo info = {}; + // 磁北 则对应于随时间变化的地球磁场北极 + info.magneticHeading = self.magneticHeading; + // 真北 始终指向地理北极点 + info.trueHeading = self.trueHeading; + // 方向值的误差范围 + info.accuracy = self.headingAccuracy; + // 获取该设备在 X 方向上监听得到的原始磁力值,该磁力值的强度单位是微特斯拉。 + info.x = self.x; + // 获取该设备在 Y 方向上监听得到的原始磁力值,该磁力值的强度单位是微特斯拉。 + info.y = self.y; + // 获取该设备在 Z 方向上监听得到的原始磁力值,该磁力值的强度单位是微特斯拉。 + info.z = self.z; + info.timestamp = [date timeIntervalSince1970] - NSTimeIntervalSince1970; + + // KVC赋值 + NSValue *value = [NSValue valueWithBytes:&info objCType:@encode(BMFHeadingInfo)]; + // CLHeadingInternal + id _internal = [[NSClassFromString(@"CLHeadingInternal") alloc] init]; + // NSConcreteValue + [_internal setValue:value forKey:@"fHeading"]; + [heading setValue:_internal forKey:@"_internal"]; + + return heading; +} + +@end + +@implementation BMFLocationViewDisplayParam + +- (BMKLocationViewDisplayParam *)toBMKLocationViewDisplayParam{ + BMKLocationViewDisplayParam *param = [BMKLocationViewDisplayParam new]; + param.locationViewOffsetX = self.locationViewOffsetX; + param.locationViewOffsetY = self.locationViewOffsetY; + param.isAccuracyCircleShow = self.isAccuracyCircleShow; + param.accuracyCircleStrokeColor = [UIColor fromColorString:self.accuracyCircleStrokeColor]; + param.accuracyCircleFillColor = [UIColor fromColorString:self.accuracyCircleFillColor]; + param.isRotateAngleValid = self.isRotateAngleValid; + param.locationViewImage = [UIImage imageWithContentsOfFile:[[BMFFileManager defaultCenter] pathForFlutterImageName:self.locationViewImage]]; + param.canShowCallOut = self.canShowCallOut; + param.locationViewHierarchy = self.locationViewHierarchy; + return param; +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMap.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMap.h new file mode 100644 index 0000000..4f3e85c --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMap.h @@ -0,0 +1,22 @@ +// +// BMFOfflineMap.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/25. +// + + +#ifndef __BMFOfflineMap__H__ +#define __BMFOfflineMap__H__ +#ifdef __OBJC__ +#import +#endif +#endif + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFOfflineMap : BMKOfflineMap + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMap.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMap.m new file mode 100644 index 0000000..3cb0fbf --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMap.m @@ -0,0 +1,15 @@ +// +// BMFOfflineMap.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/25. +// + +#import "BMFOfflineMap.h" + +@implementation BMFOfflineMap + +- (void)dealloc{ +// NSLog(@"-offlineMap-dealloc"); +} +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapHandle.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapHandle.h new file mode 100644 index 0000000..ef95afe --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapHandle.h @@ -0,0 +1,30 @@ +// +// BMFOfflineMapHandle.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/25. +// + +#import + +@class BMFOfflineMap; + +NS_ASSUME_NONNULL_BEGIN + +@protocol BMFOfflineMapHandle + +@required + +/// offlineMap(弱引用) +@property(nonatomic, weak) BMFOfflineMap *_offlineMap; + +/// 创建协议实例 +- (NSObject *)initWith:(BMFOfflineMap *)offlineMap; + +/// flutter --> ios +- (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result; + +@end + + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapHandles.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapHandles.h new file mode 100644 index 0000000..cc4d1a3 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapHandles.h @@ -0,0 +1,69 @@ +// +// BMFOfflineMapHandles.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/25. +// + +#import "BMFOfflineMapHandle.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFOfflineMapHandles : NSObject +/// BMFOfflineMapHandler管理中心 ++ (instancetype)defalutCenter; + +- (NSDictionary *)offlineMapHandles; +@end + +#pragma mark - offlineMapHandler +/// 启动下载指定城市ID的离线地图,或在暂停更新某城市后继续更新下载某城市离线地图 +@interface BMFStartOfflineMap : NSObject + +@end + +/// 启动更新指定城市ID的离线地图 +@interface BMFUpdateOfflineMap : NSObject + +@end + +/// 暂停下载或更新指定城市ID的离线地图 +@interface BMFPauseOfflineMap : NSObject + +@end + +/// 删除指定城市ID的离线地图 +@interface BMFRemoveOfflineMap : NSObject + +@end + +/// 销毁离线地图管理模块,不用时调用 +@interface BMFDestroyOfflinMap : NSObject + +@end + +/// 热门城市列表 +@interface BMFGetHotCityListMap : NSObject + +@end + +/// 支持离线地图城市列表 +@interface BMFGetOfflineCityListMap : NSObject + +@end + +/// 根据城市名搜索该城市离线地图记录 +@interface BMFSearchCityMap : NSObject + +@end + +/// 各城市离线地图更新信息 +@interface BMFGetAllUpdateInfoMap : NSObject + +@end + +/// 指定城市ID离线地图更新信息 +@interface BMFGetUpdateInfoMap : NSObject + +@end +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapHandles.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapHandles.m new file mode 100644 index 0000000..de661c7 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapHandles.m @@ -0,0 +1,274 @@ +// +// BMFOfflineMapHandles.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/25. +// + +#import "BMFOfflineMapHandles.h" +#import "BMFOfflineMapMethodConst.h" +#import "BMFOfflineMap.h" +#import "BMFOLSearchRecordModel.h" +#import "BMFMapModels.h" + +@interface BMFOfflineMapHandles () +{ + NSDictionary *_handles; +} +@end + +static BMFOfflineMapHandles *_instance = nil; +@implementation BMFOfflineMapHandles +/// BMFOfflineMapHandler管理中心 ++ (instancetype)defalutCenter{ + if (!_instance) { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _instance = [[BMFOfflineMapHandles alloc] init]; + }); + } + return _instance; +} + +- (NSDictionary *)offlineMapHandles{ + if (!_handles) { + _handles = @{ + kBMFStartOfflineMapMethod: NSStringFromClass([BMFStartOfflineMap class]), + kBMFUpdateOfflineMapMethod: NSStringFromClass([BMFUpdateOfflineMap class]), + kBMFPauseOfflineMapMethod: NSStringFromClass([BMFPauseOfflineMap class]), + kBMFRemoveOfflineMapMethod: NSStringFromClass([BMFRemoveOfflineMap class]), + kBMFDestroyOfflinMapMethod: NSStringFromClass([BMFDestroyOfflinMap class]), + kBMFGetHotCityListMapMethod: NSStringFromClass([BMFGetHotCityListMap class]), + kBMFGetOfflineCityListMapMethod: NSStringFromClass([BMFGetOfflineCityListMap class]), + kBMFSearchCityMapMethod: NSStringFromClass([BMFSearchCityMap class]), + kBMFGetAllUpdateInfoMapMethod: NSStringFromClass([BMFGetAllUpdateInfoMap class]), + kBMFGetUpdateInfoMapMethod: NSStringFromClass([BMFGetUpdateInfoMap class]), + }; + } + return _handles; +} +@end + + +#pragma mark - offlineMapHandler +@implementation BMFStartOfflineMap + +@synthesize _offlineMap; + +- (nonnull NSObject *)initWith:(nonnull BMFOfflineMap *)offlineMap { + _offlineMap = offlineMap; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !call.arguments[@"cityID"]) { + result(@NO); + } + BOOL success = [_offlineMap start:[[call.arguments safeValueForKey:@"cityID"] intValue]]; + result(@(success)); +} + +@end + +@implementation BMFUpdateOfflineMap + +@synthesize _offlineMap; + +- (nonnull NSObject *)initWith:(nonnull BMFOfflineMap *)offlineMap { + _offlineMap = offlineMap; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !call.arguments[@"cityID"]) { + result(@NO); + } + BOOL success = [_offlineMap update:[[call.arguments safeValueForKey:@"cityID"] intValue]]; + result(@(success)); +} + +@end + +@implementation BMFPauseOfflineMap + +@synthesize _offlineMap; + +- (nonnull NSObject *)initWith:(nonnull BMFOfflineMap *)offlineMap { + _offlineMap = offlineMap; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !call.arguments[@"cityID"]) { + result(@NO); + } + BOOL success = [_offlineMap pause:[[call.arguments safeValueForKey:@"cityID"] intValue]]; + result(@(success)); +} + +@end + +@implementation BMFRemoveOfflineMap + +@synthesize _offlineMap; + +- (nonnull NSObject *)initWith:(nonnull BMFOfflineMap *)offlineMap { + _offlineMap = offlineMap; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !call.arguments[@"cityID"]) { + result(@NO); + } + BOOL success = [_offlineMap remove:[[call.arguments safeValueForKey:@"cityID"] intValue]]; + result(@(success)); +} + +@end + +@implementation BMFDestroyOfflinMap + +@synthesize _offlineMap; + +- (nonnull NSObject *)initWith:(nonnull BMFOfflineMap *)offlineMap { + _offlineMap = offlineMap; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + // TODO:ios没有销毁接口 + result(@(YES)); +} + +@end + +@implementation BMFGetHotCityListMap + +@synthesize _offlineMap; + +- (nonnull NSObject *)initWith:(nonnull BMFOfflineMap *)offlineMap { + _offlineMap = offlineMap; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + NSArray *hotCity = [BMFOLSearchRecordModel fromDataArray:[_offlineMap getHotCityList]]; + NSMutableArray *dicModels = [NSMutableArray array]; + for (BMFOLSearchRecordModel *model in hotCity) { + + [dicModels addObject: [model bmf_toDictionary]]; + } + + if (dicModels.count > 0) { + result(@{@"searchCityRecord" : dicModels}); + } else { + result([NSNull null]); + } + +} + +@end + +@implementation BMFGetOfflineCityListMap + +@synthesize _offlineMap; + +- (nonnull NSObject *)initWith:(nonnull BMFOfflineMap *)offlineMap { + _offlineMap = offlineMap; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + NSArray *offlineCitys = [BMFOLSearchRecordModel fromDataArray:[_offlineMap getOfflineCityList]]; + NSMutableArray *dicModels = [NSMutableArray array]; + for (BMFOLSearchRecordModel *model in offlineCitys) { + + [dicModels addObject: [model bmf_toDictionary]]; + } + + if (dicModels.count > 0) { + result(@{@"searchCityRecord" : dicModels}); + } else { + result([NSNull null]); + } +} + +@end + +@implementation BMFSearchCityMap + +@synthesize _offlineMap; + +- (nonnull NSObject *)initWith:(nonnull BMFOfflineMap *)offlineMap { + _offlineMap = offlineMap; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !call.arguments[@"cityName"]) { + result([NSNull null]); + } + NSArray *citys = [BMFOLSearchRecordModel fromDataArray:[_offlineMap searchCity:[call.arguments safeValueForKey:@"cityName"]]]; + NSMutableArray *dicModels = [NSMutableArray array]; + for (BMFOLSearchRecordModel *model in citys) { + [dicModels addObject: [model bmf_toDictionary]]; + } + + if (dicModels.count > 0) { + result(@{@"searchCityRecord" : dicModels}); + } else { + result([NSNull null]); + } +} + +@end + +@implementation BMFGetAllUpdateInfoMap + +@synthesize _offlineMap; + +- (nonnull NSObject *)initWith:(nonnull BMFOfflineMap *)offlineMap { + _offlineMap = offlineMap; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + NSArray *models = [BMFOLUpdateElementModel fromDataArray:[_offlineMap getAllUpdateInfo]]; + NSMutableArray *dicModels = [NSMutableArray array]; + for (BMFOLUpdateElementModel *model in models) { + [dicModels addObject:[model bmf_toDictionary]]; + } + + if (dicModels.count > 0) { + result(@{@"updateElements" : dicModels}); + } else { + result([NSNull null]); + } +} + +@end + +@implementation BMFGetUpdateInfoMap + +@synthesize _offlineMap; + +- (nonnull NSObject *)initWith:(nonnull BMFOfflineMap *)offlineMap { + _offlineMap = offlineMap; + return self; +} + +- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result { + if (!call.arguments || !call.arguments[@"cityID"]) { + result([NSNull null]); + } + BMKOLUpdateElement *element = [_offlineMap getUpdateInfo:[[call.arguments safeValueForKey:@"cityID"] intValue]]; + if (element) { + BMFOLUpdateElementModel *model = [BMFOLUpdateElementModel fromBMKOLUpdateElement:element]; + result([model bmf_toDictionary]); + } else { + result([NSNull null]); + } +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapManager.h b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapManager.h new file mode 100644 index 0000000..9895b0b --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapManager.h @@ -0,0 +1,18 @@ +// +// BMFOfflineMapManager.h +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/25. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface BMFOfflineMapManager : NSObject + +@property (nonatomic, strong) FlutterMethodChannel *channel; + +@end + +NS_ASSUME_NONNULL_END diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapManager.m b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapManager.m new file mode 100644 index 0000000..66e5d93 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/Classes/OfflineMap/BMFOfflineMapManager.m @@ -0,0 +1,65 @@ +// +// BMFOfflineMapManager.m +// flutter_bmfmap +// +// Created by zhangbaojin on 2020/3/25. +// + +#import "BMFOfflineMapManager.h" +#import "BMFOfflineMapMethodConst.h" +#import "BMFOfflineMap.h" +#import "BMFOfflineMapHandles.h" + +@interface BMFOfflineMapManager () + +/// 离线地图类的实例 +@property (nonatomic, strong) BMFOfflineMap *offlineMap; + +@end +@implementation BMFOfflineMapManager + ++ (void)registerWithRegistrar:(nonnull NSObject *)registrar { + FlutterMethodChannel *offlineChannel = [FlutterMethodChannel methodChannelWithName:kBMFOfflineMapChannelName binaryMessenger:[registrar messenger]]; + BMFOfflineMapManager *manager = [[BMFOfflineMapManager alloc] init]; + manager.channel = offlineChannel; + [registrar addMethodCallDelegate:manager channel:offlineChannel]; +} + +// 通信回调 +- (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result{ +// NSLog(@"ios-离线地图-method = %@ \n arguments = %@", call.method, call.arguments); + if ([call.method isEqualToString:kBMFInitOfflineMapMethod]) { + [self offlineMap]; + return; + } + BMFOfflineMapHandles *handleCenter = [BMFOfflineMapHandles defalutCenter]; + NSArray *methods = [[handleCenter offlineMapHandles] allKeys]; + + if ([methods containsObject:call.method]) { + __weak __typeof__(_offlineMap) weakOfflineMap = _offlineMap; + NSObject *handler = [[NSClassFromString(handleCenter.offlineMapHandles[call.method]) new] initWith:weakOfflineMap]; + [handler handleMethodCall:call result:result]; + + } else { + result(FlutterMethodNotImplemented); + } +} +- (BMFOfflineMap *)offlineMap{ + if (!_offlineMap) { + _offlineMap = [[BMFOfflineMap alloc] init]; + _offlineMap.delegate = self; + } + return _offlineMap; +} +#pragma mark - BMKOfflineMapDelegate + +- (void)onGetOfflineMapState:(int)type withState:(int)state { +// NSLog(@"-ios-离线地图下载回调type = %d state = %d", type, state); + if (!_channel) { + return; + } + [_channel invokeMethod:kBMFOfflineMapCallBackMethod arguments:@{@"type": @(type), + @"state": @(state)}]; +} + +@end diff --git a/lib/my_flutter_bmfmap-1.0.2/ios/flutter_bmfmap.podspec b/lib/my_flutter_bmfmap-1.0.2/ios/flutter_bmfmap.podspec new file mode 100644 index 0000000..28b9968 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/ios/flutter_bmfmap.podspec @@ -0,0 +1,29 @@ +# +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. +# Run `pod lib lint flutter_bmfmap.podspec' to validate before publishing. +# +Pod::Spec.new do |s| + s.name = 'flutter_bmfmap' + s.version = '1.0.0' + s.summary = 'The basic map of Flutter plugin for BaiDuMap.' + s.description = <<-DESC + The basic map of Flutter plugin for BaiDuMap. + DESC + s.homepage = 'https://lbsyun.baidu.com/' + s.license = { :file => '../LICENSE' } + s.author = { 'Baidu.Inc' => 'email@example.com' } + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' + s.public_header_files = 'Classes/**/*.h' + s.dependency 'Flutter' + s.dependency 'BaiduMapKit','5.4.0' + # s.dependency 'bmfcommon_ios', '1.0.5' + s.platform = :ios, '8.0' + + + + + + # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported. + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' } +end diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/bmfmap_map.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/bmfmap_map.dart new file mode 100644 index 0000000..061f83d --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/bmfmap_map.dart @@ -0,0 +1,29 @@ +/// flutter百度地图插件map库 +library bmfmap_map; + +export 'map/bmf_map_controller.dart'; +export 'map/bmf_map_linedraw_types.dart'; +export 'map/bmf_map_texture_map_view.dart'; +export 'map/bmf_map_view.dart'; +export 'map/bmf_offline_controller.dart'; + +export 'models/bmf_baseindoormap_info.dart'; +export 'models/bmf_custommap_option.dart'; +export 'models/bmf_heatmap.dart'; +export 'models/bmf_infowindow.dart'; +export 'models/bmf_map_options.dart'; +export 'models/bmf_mappoi.dart'; +export 'models/bmf_mapstatus.dart'; +export 'models/bmf_offline_models.dart'; +export 'models/bmf_userlocation.dart'; + +export 'models/overlays/bmf_arcline.dart'; +export 'models/overlays/bmf_circle.dart'; +export 'models/overlays/bmf_dot.dart'; +export 'models/overlays/bmf_ground.dart'; +export 'models/overlays/bmf_marker.dart'; +export 'models/overlays/bmf_overlay.dart'; +export 'models/overlays/bmf_polygon.dart'; +export 'models/overlays/bmf_polyline.dart'; +export 'models/overlays/bmf_text.dart'; +export 'models/overlays/bmf_tile.dart'; diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_map_controller.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_map_controller.dart new file mode 100644 index 0000000..c7bbb32 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_map_controller.dart @@ -0,0 +1,1124 @@ +library bmfmap_map.map.bmf_map_controller; + +import 'dart:typed_data'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart'; +import 'package:flutter_bmfmap/BaiduMap/map/bmf_projection.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_baseindoormap_info.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_custommap_option.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_heatmap.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_infowindow.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_map_options.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_mapstatus.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_userlocation.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_arcline.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_circle.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_dot.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_ground.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_marker.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_polygon.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_polyline.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_text.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_tile.dart'; +import 'package:flutter_bmfmap/BaiduMap/private/bmf_method_channel_handler.dart'; +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_map_dispatcher_factory.dart'; + +/// 地图通信中心 +class BMFMapController { + // static const _tag = "BMFMapController"; + + /// 通信 + MethodChannel _mapChannel; + + BMFMethodChannelHandler _methodChannelHandler; + + BMFMapController.withId(int id) { + _init(id); + } + + void _init(int id) { + _initMethodChannel(id); + BMFProjection.instance.init(_mapChannel); + } + + void _initMethodChannel(int id) { + _mapChannel = + MethodChannel('flutter_bmfmap/map_' + String.fromCharCode(id + 97)); + _methodChannelHandler = new BMFMethodChannelHandler(); + _mapChannel.setMethodCallHandler(_handlerMethod); + } + + /// flutter -> native + /// + /// 更新地图属性 + /// + /// [BMFMapOptions] change 地图参数集合 + /// + /// bool 更新成功返回true 失败false + Future updateMapOptions(BMFMapOptions change) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .updateMapOptionsDispatch(_mapChannel, change); + } + + /// 获取地图状态 + /// + /// [BMFMapStatus] mapStatus 地图状态 + Future getMapStatus() async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .getMapStatusDispatch(_mapChannel); + } + + /// 获取map的展示类型 + /// + /// [BMFMapType] mapType 地图的展示类型 + Future getMapType() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getMapTypeDispatch(_mapChannel); + } + + /// 获取map的比例尺级别 + /// + /// zoomLevel 比例尺级别 + Future getZoomLevel() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getZoomLevelDispatch(_mapChannel); + } + + /// 获取map的自定义最小比例尺级别 + /// + /// minZoomLevel 自定义最小比例尺级别 + Future getMinZoomLevel() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getMinZoomLevelDispatch(_mapChannel); + } + + /// 获取map的自定义最大比例尺级别 + /// + /// maxZoomLevel 自定义最大比例尺级别 + Future getMaxZoomLevel() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getMaxZoomLevelDispatch(_mapChannel); + } + + /// 获取map的旋转角度 + /// + /// rotation 旋转角度 + Future getRotation() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getRotationDispatch(_mapChannel); + } + + /// 获取map的地图俯视角度 + /// + /// overlooking 地图俯视角度 + Future getOverlooking() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getOverlookingDispatch(_mapChannel); + } + + /// 获取map的俯视角度最小值 + /// + /// minOverlooking 俯视角度最小值 + /// + /// ios 独有 + Future getMinOverlooking() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getMinOverlookingDispatch(_mapChannel); + } + + /// 获取map是否现显示3D楼块效果 + /// + /// buildingsEnabled 是否现显示3D楼块效果 + Future getBuildingsEnabled() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getBuildingsEnabledDispatch(_mapChannel); + } + + /// 获取map是否显示底图poi标注 + /// + /// showMapPoi 是否显示底图poi标注 + /// + /// ios 独有 + Future getShowMapPoi() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getShowMapPoiDispatch(_mapChannel); + } + + /// 获取map是否打开路况图层(在某些Android机型上,路况图无法正常展示) + /// + /// trafficEnabled 是否打开路况图层 + Future getTrafficEnabled() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getTrafficEnabledDispatch(_mapChannel); + } + + /// 获取map是否打开百度城市热力图图层 + /// + /// baiduHeatMapEnabled 是否打开百度城市热力图图层 + Future getBaiduHeatMapEnabled() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getBaiduHeatMapEnabledDispatch(_mapChannel); + } + + /// 获取map是否支持所有手势操作 + /// + /// gesturesEnabled 是否支持所有手势操作 + Future getGesturesEnabled() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getGesturesEnabledDispatch(_mapChannel); + } + + /// 获取map是否支持用户多点缩放(双指) + /// + /// zoomEnabled 是否支持用户多点缩放(双指) + /// + /// android 中效果是否允许缩放手势包括(双击,双指单击,双指缩放) + Future getZoomEnabled() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getZoomEnabledDispatch(_mapChannel); + } + + /// 获取map是否支持用户缩放(双击或双指单击) + /// + /// zoomEnabledWithTap 是否支持用户缩放(双击或双指单击) + /// + /// ios 独有 + Future getZoomEnabledWithTap() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getZoomEnabledWithTapDispatch(_mapChannel); + } + + /// 获取map是否支持用户移动地图 + /// + /// scrollEnabled 是否支持用户移动地图 + Future getScrollEnabled() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getScrollEnabledDispatch(_mapChannel); + } + + /// 获取map是否支持俯仰角 + /// + /// overlookEnabled 是否支持俯仰角 + Future getOverlookEnabled() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getOverlookEnabledDispatch(_mapChannel); + } + + /// 获取map是否支持旋转 + /// + /// rotateEnabled 是否支持旋转 + Future getRotateEnabled() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getRotateEnabledDispatch(_mapChannel); + } + + /// 获取map是否支持3Dtouch + /// + /// forceTouchEnabled 是否支持3Dtouch + /// + /// ios 独有 + Future getForceTouchEnabled() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getForceTouchEnabledDispatch(_mapChannel); + } + + /// 获取map是否显式比例尺 + /// + /// showMapScaleBar 是否显式比例尺 + /// + /// ios 独有 + Future getShowMapScaleBar() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getShowMapScaleBarDispatch(_mapChannel); + } + + /// 获取map的比例尺的位置 + /// + /// mapScaleBarPosition 比例尺的位置 + Future getMapScaleBarPosition() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getMapScaleBarPositionDispatch(_mapChannel); + } + + /// 获取map的logo位置 + /// + /// logoPosition 地图logo的位置 + Future getLogoPosition() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getLogoPositionDispatch(_mapChannel); + } + + /// 获取map的可视范围 + /// + /// visibleMapBounds 地图的可视范围 + Future getVisibleMapBounds() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getVisibleMapBoundsDispatch(_mapChannel); + } + + /// 获取map是否显示室内图 + /// + /// baseIndoorMapEnabled 是否显示室内图 + Future getBaseIndoorMapEnabled() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getBaseIndoorMapEnabledDispatch(_mapChannel); + } + + /// 获取map的室内图标注是否显示 + /// + /// showIndoorMapPoi 室内图标注是否显示 + /// + /// ios 独有 + Future getShowIndoorMapPoi() async { + return await BMFMapDispatcherFactory.instance + .getMapGetStateDispatcher() + .getShowIndoorMapPoiDispatch(_mapChannel); + } + + /// map放大一级比例尺 + /// + /// bool 成功返回true 失败false + Future zoomIn() async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .zoomInDispatch(_mapChannel); + } + + /// map缩小一级比例尺 + /// + /// bool 成功返回true 失败false + Future zoomOut() async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .zoomOutDispatch(_mapChannel); + } + + /// 自定义路况颜色。 + /// + /// 注意:如果需要自定义路况颜色,必须4种路况全都设置。4个参数全部合法时,自定义颜色才有效;否则全部使用默认的。 + /// + /// smooth 路况畅通对应的颜色 + /// + /// slow 路况缓行对应的颜色 + /// + /// congestion 路况拥堵对应的颜色 + /// + /// severeCongestion 路况严重拥堵对应的颜色 + /// + /// bool 成功返回true 失败false + Future setCustomTrafficColor( + {@required Color smooth, + @required Color slow, + @required Color congestion, + @required Color severeCongestion}) async { + return await BMFMapDispatcherFactory() + .getMapStateDispatcher() + .setCustomTrafficColorDispatch( + _mapChannel, smooth, slow, congestion, severeCongestion); + } + + /// 更新地图新状态 + /// + /// [BMFMapStatus] mapStatus 地图新状态 + /// + /// animateDurationMs 动画更新时间 + /// + /// bool 成功返回true 失败false + Future setNewMapStatus( + {@required BMFMapStatus mapStatus, int animateDurationMs}) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .setNewMapStatusDispatch(_mapChannel, + mapStatus: mapStatus, animateDurationMs: animateDurationMs); + } + + /// 按像素移动地图中心点(Android独有) + /// + /// xPixel 水平方向移动像素数 + /// + /// yPixel 垂直方向移动像素数 + /// + /// animateDurationMs 动画更新时间 + /// + /// bool 成功返回true 失败false + Future setScrollBy(int xPixel, int yPixel, + {int animateDurationMs}) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .setScrollByDispatch(_mapChannel, xPixel, yPixel, + animateDurationMs: animateDurationMs); + } + + /// 根据给定增量缩放地图级别(Android独有) + /// + /// amount 地图缩放级别增量 + /// + /// animateDurationMs 动画更新时间 + /// + /// bool 成功返回true 失败false + Future setZoomBy(double amount, {int animateDurationMs}) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .setZoomByDispatch(_mapChannel, amount, + animateDurationMs: animateDurationMs); + } + + /// 根据给定增量以及给定的屏幕坐标缩放地图级别(Android独有) + /// + /// amount 地图缩放级别增量 + /// + /// [BMFPoint] focus 地图缩放中心点屏幕坐标, 若为 null 则返回 null + /// + /// animateDurationMs 动画更新时间 + /// + /// bool 成功返回true 失败false + Future setZoomPointBy(double amount, BMFPoint focus, + {int animateDurationMs}) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .setZoomPointByDispatch(_mapChannel, amount, focus, + animateDurationMs: animateDurationMs); + } + + /// 设置地图缩放级别(Android独有) + /// + /// zoom 设置地图缩放级别 + /// + /// animateDurationMs 动画更新时间 + /// + /// bool 成功返回true 失败false + Future setZoomTo(double zoom, {int animateDurationMs}) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .setZoomToDispatch(_mapChannel, zoom, + animateDurationMs: animateDurationMs); + } + + /// 设定地图中心点坐标 + /// + /// [BMFCoordinate] coordinate 要设定的地图中心点坐标,用经纬度表示 + /// + /// animated 是否采用动画效果(ios 独有) + /// + /// animateDurationMs 动画更新时间(android 独有) + /// + /// bool 成功返回true 失败false + Future setCenterCoordinate(BMFCoordinate coordinate, bool animated, + {int animateDurationMs}) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .setCenterCoordinateDispatch(_mapChannel, coordinate, animated, + animateDurationMs: animateDurationMs); + } + + /// 设置地图中心点以及缩放级别(IOS不支持该接口) + /// + /// [BMFCoordinate]coordinate 要设定的地图中心点坐标,用经纬度表示 + /// zoom 缩放级别 + /// + /// animateDurationMs 动画时间 + /// + /// bool 成功返回true 失败false + Future setNewLatLngZoom( + {@required BMFCoordinate coordinate, + @required double zoom, + int animateDurationMs}) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .setNewLatLngZoomDispatcher(_mapChannel, + coordinate: coordinate, + zoom: zoom, + animateDurationMs: animateDurationMs); + } + + /// 获得地图当前可视区域截图 + /// + /// 范围内的截取的Images + Future takeSnapshot() async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .takeSnapshotDispatch(_mapChannel); + } + + /// 获得地图指定区域截图 (ios) 处理方式 + /// + /// 指定区域的截取的Image + Future takeSnapshotWithRect(BMFMapRect rect) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .takeSnapshotWithRectDispatch(_mapChannel, rect); + } + + /// 设置罗盘的图片 + /// + /// imagePath 设置的图片 + /// + /// bool 成功返回true 失败false + Future setCompassImage(String imagePath) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .setCompassImageDispatch(_mapChannel, imagePath); + } + + /// 设置显示在屏幕中的地图地理范围 + /// + /// [BMFCoordinateBounds]visibleMapBounds 要设定的地图范围(东北,西南)角坐标 + /// + /// animated 是否采用动画效果 (ios 独有) + /// + /// bool 成功返回true 失败false + Future setVisibleMapBounds( + BMFCoordinateBounds visibleMapBounds, bool animated) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .setVisibleMapBoundsDispatch(_mapChannel, visibleMapBounds, animated); + } + + /// 设置显示在指定相对于MapView的padding中的地图地理范围 + /// + /// [BMFCoordinateBounds]visibleMapBounds 要设定的地图范围(东北,西南)角坐标 + /// + /// [EdgeInsets]insets 指定的四周边界大小 + /// + /// animated 是否采用动画效果(ios 独有) + /// + /// bool 成功返回true 失败false + Future setVisibleMapRectWithPaddingHandler( + {@required BMFCoordinateBounds visibleMapBounds, + @required EdgeInsets insets, + @required bool animated}) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .setVisibleMapRectWithPaddingDispatch( + _mapChannel, visibleMapBounds, insets, animated); + } + + /// 地图设定是否显示定位图层 + /// + /// show 展示ture 隐藏false + /// + /// bool 成功返回true 失败false + Future showUserLocation(bool show) async { + return await BMFMapDispatcherFactory.instance + .getMapUserLocationDispatcher() + .setShowUserLocationDispatch(_mapChannel, show); + } + + /// 设定定位模式 + /// + /// [BMFUserTrackingMode]userTrackingMode 定位模式 + /// + /// enableDirection 是否允许显示方向信息 (Android 独有) + /// + /// customMarker 设置用户自定义定位图标,可以为 null (Android 独有) + /// + /// bool 成功返回true 失败false + Future setUserTrackingMode(BMFUserTrackingMode userTrackingMode, + {bool enableDirection = true, String customMarker}) async { + return await BMFMapDispatcherFactory.instance + .getMapUserLocationDispatcher() + .setUserTrackingModeDispatch( + _mapChannel, userTrackingMode, enableDirection, + customMarker: customMarker); + } + + /// 定位坐标点是否在当前地图可视区域内 + /// + /// bool true在当前地图可视区域内 false 不在在当前地图可视区域内 + /// + /// Android 不支持该方法 + Future isUserLocationVisible() async { + return await BMFMapDispatcherFactory.instance + .getMapUserLocationDispatcher() + .setIsUserLocationVisibleDispatch(_mapChannel); + } + + /// 动态更新我的位置数据 + /// + /// [BMFUserLocation]userLocation 定位数据 + /// + /// bool 成功返回true 失败false + Future updateLocationData(BMFUserLocation userLocation) async { + return await BMFMapDispatcherFactory.instance + .getMapUserLocationDispatcher() + .setUpdateLocationDataDispatch(_mapChannel, userLocation); + } + + /// 动态定制我的位置样式 + /// + /// [BMFUserlocationDisplayParam]userlocationDisplayParam 样式参数 + /// + /// bool 成功返回true 失败false + Future updateLocationViewWithParam( + BMFUserlocationDisplayParam userlocationDisplayParam) async { + return await BMFMapDispatcherFactory.instance + .getMapUserLocationDispatcher() + .setUpdateLocationViewWithParamDispatch( + _mapChannel, userlocationDisplayParam); + } + + /// 地图添加Marker + /// + /// [BMFMarker] marker 大头针 + /// + /// bool 成功返回true 失败false + Future addMarker(BMFMarker marker) async { + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .addMarkerDispatch(_mapChannel, marker); + } + + /// 地图添加Markers + /// + /// [BMFMarker]集合 markers 大头针list, + /// + /// bool 成功返回true 失败false + Future addMarkers(List markers) async { + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .addMarkersDispatch(_mapChannel, markers); + } + + /// 地图添加[BMFInfoWindow] infoWindow + Future addInfoWindow(BMFInfoWindow infoWindow) async { + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .addInfoWindowDispatch(_mapChannel, infoWindow); + } + + /// 地图批量添加[BMFInfoWindow] infoWindow + Future addInfoWindows(List infoWindows) async { + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .addInfoWindowsDispatch(_mapChannel, infoWindows); + } + + /// 地图移除[BMFInfoWindow] infoWindow + Future removeInfoWindow(BMFInfoWindow infoWindow) async { + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .removeInfoWindowDispatch(_mapChannel, infoWindow); + } + + /// 地图指定删除Marker + /// + /// [BMFMarker] marker 要移除的大头针 + /// + /// bool 成功返回true 失败false + Future removeMarker(BMFMarker marker) async { + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .removeMarkerDispatch(_mapChannel, marker); + } + + /// 地图批量删除Markers + /// + /// [BMFMarker]集合 markers 要移除的大头针list + /// + /// bool 成功返回true 失败false + Future removeMarkers(List markers) async { + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .removeMarkersDispatch(_mapChannel, markers); + } + + /// 地图清除所有Markers + /// + /// bool 成功返回true 失败false + Future cleanAllMarkers() async { + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .cleanAllMarkersDispatch(_mapChannel); + } + + /// 地图添加Polyine + /// + /// [BMFPolyline] polyline 折线 + /// + /// bool 成功返回true 失败false + Future addPolyline(BMFPolyline polyline) async { + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .addPolylineDispatch(_mapChannel, polyline); + } + + /// 地图添加Arcline + /// + /// [BMFArcline] arcline 弧线 + /// + /// bool 成功返回true 失败false + Future addArcline(BMFArcline arcline) async { + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .addArclineDispatch(_mapChannel, arcline); + } + + /// 地图添加Polygon + /// + /// [BMFPolygon] polygon 多边形 + /// + /// bool 成功返回true 失败false + Future addPolygon(BMFPolygon polygon) async { + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .addPolygonDispatch(_mapChannel, polygon); + } + + /// 地图添加Circle + /// + /// [BMFCircle] circle 圆 + /// + /// bool 成功返回true 失败false + Future addCircle(BMFCircle circle) async { + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .addCircleDispatch(_mapChannel, circle); + } + + /// 地图添加Dot + /// + /// [BMFDot] dot 点 + /// + /// bool 成功返回true 失败false + Future addDot(BMFDot dot) async { + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .addDotDispatch(_mapChannel, dot); + } + + /// 地图添加[BMFText] Text + Future addText(BMFText text) async { + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .addTextDispatch(_mapChannel, text); + } + + /// 地图添加Ground + /// + /// [BMFGround] ground 图片图层 + /// + /// bool 成功返回true 失败false + Future addGround(BMFGround ground) async { + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .addGroundDispatch(_mapChannel, ground); + } + + /// 地图指定删除overlay + /// + /// overlayId 要删除overlay的id + /// + /// bool 成功返回true 失败false + Future removeOverlay(String overlayId) async { + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .removeOverlayDispatch(_mapChannel, overlayId); + } + + /// 添加热力图 + /// + /// [BMFHeatMap] heatMap 热力图 + /// + /// bool 成功返回true 失败false + Future addHeatMap(BMFHeatMap heatMap) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .addHeatMapDispatch(_mapChannel, heatMap); + } + + /// 删除热力图 + /// + /// bool 成功返回true 失败false + Future removeHeatMap() async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .removeHeatMapDispatch(_mapChannel); + } + + /// 显示热力图(在某些Android机型上,该方法执行无效) + /// + /// show ture展示 false关闭 + /// + /// bool 成功返回true 失败false + Future showHeatMap(bool show) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .showHeatMapDispatch(_mapChannel, show); + } + + /// 添加瓦片图(在线瓦片图在某些Android机型上暂时不生效,等后续升级解决) + /// + /// [BMFTile] tile 瓦片图 + /// + /// bool 成功返回true 失败false + Future addTile(BMFTile tile) async { + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .addTileDispatch(_mapChannel, tile); + } + + /// 移除瓦片图 + /// + /// [BMFTile] tile 瓦片图 + /// bool 成功返回true 失败false + Future removeTile(BMFTile tile) async { + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .removeTileDispatch(_mapChannel, tile); + } + + /// 是否展示室内地图 + /// + /// show 展示true 隐藏false + /// + /// bool 成功返回true 失败false + Future showBaseIndoorMap(bool show) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .showBaseIndoorMapDispatch(_mapChannel, show); + } + + /// 室内图标注是否显示 + /// + /// showPoi 展示true 隐藏false + /// + /// bool 成功返回true 失败false + Future showBaseIndoorMapPoi(bool showPoi) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .showBaseIndoorMapPoiDispatch(_mapChannel, showPoi); + } + + /// 设置室内图楼层 + /// + /// floorId 楼层id + /// + /// indoorId 室内图ID + /// + /// [BMFSwitchIndoorFloorError] 枚举:室内图切换楼层结果 + Future switchBaseIndoorMapFloor( + String floorId, String indoorId) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .switchBaseIndoorMapFloorDispatch(_mapChannel, floorId, indoorId); + } + + /// 获取当前聚焦的室内图信息 + /// + /// [BMFBaseIndoorMapInfo] 当前聚焦的室内图信息。没有聚焦的室内图,返回nil + Future getFocusedBaseIndoorMapInfo() async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .getFocusedBaseIndoorMapInfoDispatch(_mapChannel); + } + + /// 个性化地图样式开关,仅影响前mapView对象,需在地图创建后调用 + /// + /// enable 当前自定义地图样式是否生效 + /// + /// bool 成功返回true 失败false + Future setCustomMapStyleEnable(bool enable) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .setCustomMapStyleEnableDispatch(_mapChannel, enable); + } + + /// 设置个性化地图样式路径,仅影响当前mapView对象,需在对象创建后调用 + /// + /// path 本地个性化样式文件所在路径,包含文件名 + /// + /// mode 加载模式,0:加载本地文件 1:加载在线文件或在线缓存文件 + /// + /// bool 成功返回true 失败false + Future setCustomMapStyle(String path, int mode) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .setCustomMapStylePathDispatch(_mapChannel, path, mode); + } + + /// 设置个性化地图样式路径,仅影响当前mapView对象,需在对象创建后调用 + /// + /// 在线个性化样式加载状态回调接口。 + /// + /// 在线个性化样式创建地址:http://lbsyun.baidu.com/apiconsole/custommap + /// + /// 调用该接口加载个性化样式的默认策略为: + /// + /// 1、优先通过[BMFCustomMapStyleOption]配置的个性化样式ID,加载在线个性化样式; + /// + /// 2、如果配置的个性化样式ID无效或在线个性化样式请求失败,则加载本地缓存的最新一次请求成功的在线个性化样式; + /// + /// 3、如果本地缓存中没有最新一次请求成功的在线个性化样式,则通过BMFCustomMapStyleOption中配置的本地离线样式路径加载本地样式; + /// + /// 4、如果以上样式加载都失败,则显示普通地图样式。 + /// + /// [BMFCustomMapStyleOption] customMapStyleOption 在线个性化样式配置选项 + /// + /// preLoad 当预加载成功时会执行的block对象,path:本地缓存的最新一次请求成功的在线个性化样式路径 + /// + /// success 当加载成功时会执行的block对象,path:请求成功的在线个性化样式路径 + /// + /// error 当加载未成功时会执行的block对象,error:失败错误信息,path:失败后根据策略加载的个性化样式路径(路径可能会为nil) + /// + /// bool 成功返回true 失败false + Future setCustomMapStyleWithOptionPath( + {@required BMFCustomMapStyleOption customMapStyleOption, + @required void Function(String path) preload, + @required void Function(String path) success, + @required void Function(int errorCode, String path) error}) async { + return await BMFMapDispatcherFactory.instance + .getMapStateDispatcher() + .setCustomMapStyleWithOptionDispatch( + _mapChannel, customMapStyleOption, preload, success, error); + } + + /// 地图代理回调 + /// + /// native -> flutter + Future _handlerMethod(MethodCall call) async { + // BMFLog.d("_handlerMethod", tag: _tag); + if (_methodChannelHandler != null) { + return await _methodChannelHandler.handlerMethod(call); + } + } + + /// 设置地图加载完成回调 + /// + /// [BMFMapCallback] callback 回调接口 + void setMapDidLoadCallback({@required BMFMapCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapDidLoadCallback(callback); + } + } + + /// 设置地图渲染回调 + /// + /// [BMFMapSuccessCallback] callback 回调接口 + void setMapDidFinishedRenderCallback( + {@required BMFMapSuccessCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapDidFinishedRenderCallback(callback); + } + } + + /// 设置地图渲染每一帧画面过程中,以及每次需要重绘地图时(例如添加覆盖物)回调接口 + /// + /// [BMFMapOnDrawMapFrameCallback] callback 回调接口 + void setMapOnDrawMapFrameCallback( + {@required BMFMapOnDrawMapFrameCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapOnDrawMapFrameCallback(callback); + } + } + + /// 设置地图区域即将改变时会调用接口 + /// + /// [BMFMapRegionChangeCallback] callback 回调接口 + void setMapRegionWillChangeCallback( + {@required BMFMapRegionChangeCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapRegionWillChangeCallback(callback); + } + } + + /// 设置地图区域改变完成后会调用接口 + /// + /// [BMFMapRegionChangeCallback] callback 回调接口 + void setMapRegionDidChangeCallback( + {@required BMFMapRegionChangeCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapRegionDidChangeCallback(callback); + } + } + + /// 设置地图区域即将改变时会调用接口 + /// + /// [BMFMapRegionChangeReasonCallback] callback 回调接口 + void setMapRegionWillChangeWithReasonCallback( + {@required BMFMapRegionChangeReasonCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapRegionWillChangeWithReasonCallback(callback); + } + } + + /// 设置地图区域改变完成后会调用接口 + /// + /// [BMFMapRegionChangeReasonCallback] callback + void setMapRegionDidChangeWithReasonCallback( + {@required BMFMapRegionChangeReasonCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapRegionDidChangeWithReasonCallback(callback); + } + } + + /// 设置地图点击覆盖物回调,目前只支持[BMFPolyline]polyline + /// + /// [BMFMapOnClickedOverlayCallback] callback + /// + /// polyline只返回了id 与 polylineOptions + void setMapOnClickedOverlayCallback( + {@required BMFMapOnClickedOverlayCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapOnClickedOverlayCallback(callback); + } + } + + /// 设置点中底图标注后会回调接口 + /// + /// [BMFMapOnClickedMapPoiCallback] callback 回调接口 + void setMapOnClickedMapPoiCallback( + {@required BMFMapOnClickedMapPoiCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapOnClickedMapPoiCallback(callback); + } + } + + /// 设置点中底图空白处会回调接口 + /// + /// [BMFMapCoordinateCallback] callback 回调接口 + void setMapOnClickedMapBlankCallback( + {@required BMFMapCoordinateCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapOnClickedMapBlankCallback(callback); + } + } + + /// 设置双击地图时会回调接口 + /// + /// [BMFMapCoordinateCallback] callback 回调接口 + void setMapOnDoubleClickCallback( + {@required BMFMapCoordinateCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapOnDoubleClickCallback(callback); + } + } + + /// 设置长按地图时会回调接口 + /// + /// [BMFMapCoordinateCallback] callback 回调接口 + void setMapOnLongClickCallback( + {@required BMFMapCoordinateCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapOnLongClickCallback(callback); + } + } + + /// 设置3DTouch回调接口 + /// + /// [BMFMapOnForceTouchCallback] callback 回调接口 + void setMapOnForceTouchCallback( + {@required BMFMapOnForceTouchCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapOnForceTouchCallback(callback); + } + } + + /// 设置地图状态改变完成后回调接口 + /// + /// [BMFMapCallback] callback 回调接口 + void setMapStatusDidChangedCallback({@required BMFMapCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapStatusDidChangedCallback(callback); + } + } + + /// 设置地图View进入/移出室内地图回调接口 + /// + /// [BMFMapInOrOutBaseIndoorMapCallback] callback 回调接口 + void setMapInOrOutBaseIndoorMapCallback( + {@required BMFMapInOrOutBaseIndoorMapCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapInOrOutBaseIndoorMapCallback(callback); + } + } + + /// 设置marker点击回调 + /// + /// [BMFMapMarkerCallback] callback 回调接口 + void setMapClickedMarkerCallback({@required BMFMapMarkerCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapClickedMarkerCallback(callback); + } + } + + /// 设置marker选中回调 + /// + /// [BMFMapMarkerCallback] callback 回调接口 + /// + /// Android不支持该接口 + void setMaptDidSelectMarkerCallback( + {@required BMFMapMarkerCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMaptDidSelectMarkerCallback(callback); + } + } + + /// 设置marker取消回调 + /// + /// [BMFMapMarkerCallback] callback 回调接口 + /// + /// Android不支持该接口 + void setMapDidDeselectMarkerCallback( + {@required BMFMapMarkerCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapDidDeselectMarkerCallback(callback); + } + } + + /// 设置marker拖拽回调 + /// + /// [BMFMapMarkerCallback] callback 回调接口 + void setMapDragMarkerCallback({@required BMFMapMarkerCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapDragMarkerCallback(callback); + } + } + + /// 设置marker的infoWindow(iOS paopaoView)点击回调 + /// + /// [BMFMapMarkerCallback] callback 回调接口 + void setMapDidClickedInfoWindowCallback( + {@required BMFMapMarkerCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapDidClickedInfoWindowCallback(callback); + } + } + + /// 设置地图绘制出有效数据的监听回调接口 + /// + /// [BMFMapRenderValidDataCallback] callback 回调接口 + /// + /// ios不支持该接口 + void setMapRenderValidDataCallback( + {@required BMFMapRenderValidDataCallback callback}) { + if (_methodChannelHandler != null || callback != null) { + _methodChannelHandler.setMapRenderValidDataCallback(callback); + } + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_map_linedraw_types.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_map_linedraw_types.dart new file mode 100644 index 0000000..431e969 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_map_linedraw_types.dart @@ -0,0 +1,36 @@ +library bmfmap_map.map.bmf_map_linedraw_types; + +/// line拐角处理方式(不支持虚线) +/// +/// iOS独有 +enum BMFLineJoinType { + /// 平角衔接 + LineJoinBevel, + + /// 尖角衔接(尖角过长(大于线宽)按平角处理) + LineJoinMiter, + + /// 圆⻆角衔接 + LineJoinRound +} + +/// line头尾处理方式(不支持虚线) +enum BMFLineCapType { + /// 普通头 + LineCapButt, + + /// 圆形头 + LineCapRound +} + +/// 虚线绘制样式 +enum BMFLineDashType { + /// 实折线 + LineDashTypeNone, + + /// 方块样式 + LineDashTypeSquare, + + /// 圆点样式 + LineDashTypeDot, +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_map_texture_map_view.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_map_texture_map_view.dart new file mode 100644 index 0000000..21e7081 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_map_texture_map_view.dart @@ -0,0 +1,82 @@ +library bmfmap_map.map.bmf_map_texture_map_view; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_bmfmap/BaiduMap/map/bmf_map_controller.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' + show BMFNativeViewType; +import 'package:flutter_bmfmap/BaiduMap/map/bmf_map_view.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_map_options.dart'; + +/// textureMapView,android设备独有 +class BMFTextureMapWidget extends StatefulWidget { + const BMFTextureMapWidget( + {Key key, + @required this.onBMFMapCreated, + this.hitTestBehavior = PlatformViewHitTestBehavior.opaque, + this.layoutDirection, + this.mapOptions}) + : super(key: key); + + /// 创建mapView回调 + final BMFMapCreatedCallback onBMFMapCreated; + + /// 渗透点击事件,接收范围 opaque > translucent > transparent; + final PlatformViewHitTestBehavior hitTestBehavior; + + /// 嵌入视图文本方向 + final TextDirection layoutDirection; + + /// map属性配置 + final BMFMapOptions mapOptions; + @override + _BMFTextureMapWidgetState createState() => _BMFTextureMapWidgetState(); +} + +class _BMFTextureMapWidgetState extends State { + @override + Widget build(BuildContext context) { + if (defaultTargetPlatform == TargetPlatform.iOS) { + // ios没有textureView + return Text('BMFTextureMapWidget不支持$defaultTargetPlatform'); + } else if (defaultTargetPlatform == TargetPlatform.android) { + return AndroidView( + viewType: BMFNativeViewType.sTextureMapView, + onPlatformViewCreated: _onPlatformCreated, + hitTestBehavior: widget.hitTestBehavior, //渗透点击事件 + layoutDirection: widget.layoutDirection, //嵌入视图文本方向 + creationParams: widget.mapOptions.toMap() as dynamic, //向视图传递参数 + creationParamsCodec: new StandardMessageCodec(), //编解码器类型 + ); + } else { + return Text('flutter_bmfmap插件尚不支持$defaultTargetPlatform'); + } + } + + @override + void didChangeDependencies() { + print('didChangeDependencies'); + super.didChangeDependencies(); + } + + @override + void dispose() { + print('implement dispose'); + super.dispose(); + } + + @override + void didUpdateWidget(BMFTextureMapWidget oldWidget) { + print('didUpdateWidget'); + super.didUpdateWidget(oldWidget); + } + + void _onPlatformCreated(int id) { + if (widget.onBMFMapCreated == null) { + return; + } + widget.onBMFMapCreated(new BMFMapController.withId(id)); + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_map_view.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_map_view.dart new file mode 100644 index 0000000..08accc7 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_map_view.dart @@ -0,0 +1,119 @@ +library bmfmap_map.map.bmf_map_view; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' + show BMFNativeViewType; +import 'package:flutter_bmfmap/BaiduMap/map/bmf_map_controller.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_map_options.dart'; +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_map_dispatcher_factory.dart'; + +/// 地图创建回调 +typedef BMFMapCreatedCallback = void Function(BMFMapController controller); + +/// 百度地图Widget +class BMFMapWidget extends StatefulWidget { + /// BMFMapWidget构造方法 + const BMFMapWidget( + {Key key, + @required this.onBMFMapCreated, + this.hitTestBehavior = PlatformViewHitTestBehavior.opaque, + this.layoutDirection, + this.mapOptions}) + : super(key: key); + + /// 创建mapView回调 + final BMFMapCreatedCallback onBMFMapCreated; + + /// 渗透点击事件,接收范围 opaque > translucent > transparent; + final PlatformViewHitTestBehavior hitTestBehavior; + + /// 嵌入视图文本方向 + final TextDirection layoutDirection; + + /// map属性配置 + final BMFMapOptions mapOptions; + @override + _BMFMapWidgetState createState() => _BMFMapWidgetState(); +} + +class _BMFMapWidgetState extends State { + final _gestureRecognizers = >[ + Factory(() => EagerGestureRecognizer()), + ].toSet(); + + int _widgetID; + + @override + Widget build(BuildContext context) { + if (defaultTargetPlatform == TargetPlatform.iOS) { + // ios + return UiKitView( + viewType: BMFNativeViewType.sMapView, //原生交互时唯一标识符 + onPlatformViewCreated: _onPlatformCreated, //创建视图后的回调 + gestureRecognizers: _gestureRecognizers, //透传手势,貌似不加也行 + hitTestBehavior: widget.hitTestBehavior, //渗透点击事件 + layoutDirection: widget.layoutDirection, //嵌入视图文本方向 + creationParams: widget.mapOptions.toMap() as dynamic, //向视图传递参数 + creationParamsCodec: new StandardMessageCodec(), //编解码器类型 + ); + } else if (defaultTargetPlatform == TargetPlatform.android) { + return AndroidView( + viewType: BMFNativeViewType.sMapView, + onPlatformViewCreated: _onPlatformCreated, + hitTestBehavior: widget.hitTestBehavior, //渗透点击事件 + layoutDirection: widget.layoutDirection, //嵌入视图文本方向 + creationParams: widget.mapOptions.toMap() as dynamic, //向视图传递参数 + creationParamsCodec: new StandardMessageCodec(), //编解码器类型 + ); + } else { + return Text('flutter_bmfmap插件尚不支持$defaultTargetPlatform'); + } + } + + void _onPlatformCreated(int id) { + if (widget.onBMFMapCreated == null) { + return; + } + + _widgetID = id; + BMFMapDispatcherFactory.instance + .getMapWidgetStateDispatcher() + .initChannel(id); + widget.onBMFMapCreated(new BMFMapController.withId(id)); + } + + @override + void didChangeDependencies() { + print('didChangeDependencies'); + super.didChangeDependencies(); + } + + @override + void dispose() { + print('implement dispose'); + BMFMapDispatcherFactory.instance.getMapWidgetStateDispatcher().unInit(); + super.dispose(); + } + + @override + void didUpdateWidget(BMFMapWidget oldWidget) { + print('didUpdateWidget'); + super.didUpdateWidget(oldWidget); + BMFMapDispatcherFactory.instance + .getMapWidgetStateDispatcher() + .sendMapWidgetDidUpdateMsg(_widgetID); + } + + @override + void reassemble() { + print('reassemble'); + super.reassemble(); + BMFMapDispatcherFactory.instance + .getMapWidgetStateDispatcher() + .sendMapWidgetReassembleMsg(_widgetID); + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_offline_controller.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_offline_controller.dart new file mode 100644 index 0000000..f2bde24 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_offline_controller.dart @@ -0,0 +1,141 @@ +library bmfmap_map.bmf_offline_controller; + +import 'package:flutter/services.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_offline_models.dart'; +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_map_method_id.dart'; +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_offline_map_dispatcher.dart'; + +/// 通知事件回调方法 +/// +/// type: 事件类型, +/// 取值为MKOfflineMap.TYPE_NEW_OFFLINE, MKOfflineMap.TYPE_DOWNLOAD_UPDATE, +/// MKOfflineMap.TYPE_VER_UPDATE. +/// +/// state:事件状态; +/// 当type为TYPE_NEW_OFFLINE时,表示新安装的离线地图数目; +/// 当type为TYPE_DOWNLOAD_UPDATE时,表示更新的城市ID。 +typedef BMFGetOfflineMapStateback = void Function(int type, int state); + +class OfflineController { + /// 新安装离线地图事件类型 + static const int TYPE_NEW_OFFLINE = 6; + + /// 离线地图下载更新事件类型 + static const int TYPE_DOWNLOAD_UPDATE = 0; + + /// 离线地图网络问题 + static const int TYPE_NETWORK_ERROR = 2; + + /// 离线地图数据版本更新事件类型 + static const int TYPE_VER_UPDATE = 4; + + MethodChannel _channel; + BMFOfflineMapDispatcher _bmfOfflineMapDispatcher; + BMFGetOfflineMapStateback _bmfGetOfflineMapStateback; + + OfflineController() { + _channel = MethodChannel('flutter_bmfmap/offlineMap'); + _bmfOfflineMapDispatcher = BMFOfflineMapDispatcher(); + _channel.setMethodCallHandler(_handlerMethod); + } + + /// 初始化 + /// + /// 调用离线接口之前必须先初始化 + /// + /// 在某些Android机型上下载有问题 + Future init() async { + return await _bmfOfflineMapDispatcher.initOfflineMapDispatch(_channel); + } + + /// 启动下载指定城市ID的离线地图,或在暂停更新某城市后继续更新下载某城市离线地图 + /// + /// cityID 指定的城市ID + /// 成功返回true,否则返回false + Future startOfflineMap(int cityID) async { + return await _bmfOfflineMapDispatcher.startOfflineMapDispatch( + _channel, cityID); + } + + /// 启动更新指定城市ID的离线地图 + /// + /// cityID 指定的城市ID + /// 成功返回true,否则返回false + Future updateOfflineMap(int cityID) async { + return await _bmfOfflineMapDispatcher.updateOfflineMapDispatch( + _channel, cityID); + } + + /// 暂停下载或更新指定城市ID的离线地图 + /// + /// cityID 指定的城市ID + /// 成功返回true,否则返回false + Future pauseOfflineMap(int cityID) async { + return await _bmfOfflineMapDispatcher.pauseOfflineMapDispatch( + _channel, cityID); + } + + /// 删除指定城市ID的离线地图 + /// + /// cityID 指定的城市ID + /// 成功返回true,否则返回false + Future removeOfflineMap(int cityID) async { + return await _bmfOfflineMapDispatcher.removeOfflineMapDispatch( + _channel, cityID); + } + + /// 销毁离线地图管理模块,不用时调用 + Future destroyOfflineMap() async { + return await _bmfOfflineMapDispatcher.destroyOfflineMapDispatch(_channel); + } + + /// 返回热门城市列表 + Future> getHotCityList() async { + return await _bmfOfflineMapDispatcher.getHotCityListDispatch(_channel); + } + + /// 返回支持离线地图城市列表 + Future> getOfflineCityList() async { + return await _bmfOfflineMapDispatcher.getOfflineCityListDispatch(_channel); + } + + /// 根据城市名搜索该城市离线地图记录 + Future> searchCity(String cityName) async { + return await _bmfOfflineMapDispatcher.searchCityDispatch( + _channel, cityName); + } + + /// 返回各城市离线地图更新信息 + Future> getAllUpdateInfo() async { + return await _bmfOfflineMapDispatcher.getAllUpdateInfoDispatch(_channel); + } + + /// 返回指定城市ID离线地图更新信息 + /// + /// id 城市id + Future getUpdateInfo(int id) async { + return await _bmfOfflineMapDispatcher.getUpdateInfoDispatch(_channel, id); + } + + /// 返回通知事件 + void onGetOfflineMapStateBack( + {@required BMFGetOfflineMapStateback callback}) { + if (_bmfGetOfflineMapStateback != null || callback == null) { + return; + } + this._bmfGetOfflineMapStateback = callback; + } + + Future _handlerMethod(MethodCall call) async { + String method = call.method; + if (null == method) { + return; + } + if (method == BMFOfflineMethodId.kMapOfflineCallBackMethod) { + int type = await call.arguments['type']; + int state = await call.arguments['state']; + this._bmfGetOfflineMapStateback(type, state); + } + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_projection.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_projection.dart new file mode 100644 index 0000000..808db96 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/map/bmf_projection.dart @@ -0,0 +1,85 @@ +import 'package:flutter/services.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' + show BMFCoordinate, BMFPoint, BMFLog; +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_map_method_id.dart' + show BMFProjectionMethodId; + +/// Projection接口用于屏幕像素点坐标系统和地球表面经纬度点坐标系统之间的变换。 +class BMFProjection { + factory BMFProjection() => _getInstance(); + + static BMFProjection get instance => _getInstance(); + + static BMFProjection _instance; + + /// 通信 + MethodChannel _mapChannel; + + BMFProjection._internal(); + + static BMFProjection _getInstance() { + if (null == _instance) { + _instance = new BMFProjection._internal(); + } + + return _instance; + } + + void init(MethodChannel methodChannel) { + _mapChannel = methodChannel; + } + + /// 将屏幕坐标转换成地理坐标 + /// + /// [BMFPoint] point 屏幕坐标 如果传入null 则返回null + /// + /// [BMFCoordinate] 地理坐标 + Future convertScreenPointToCoordinate(BMFPoint point) async { + if (null == _mapChannel) { + return null; + } + + if (null == point) { + return null; + } + BMFCoordinate result; + try { + Map map = (await _mapChannel.invokeMethod( + BMFProjectionMethodId.kCoordinateFromScreenPointMethod, + {'point': point?.toMap()} as dynamic)) as Map; + result = BMFCoordinate.coordinate().fromMap(map['coordinate']) + as BMFCoordinate; + } on PlatformException catch (e) { + BMFLog.e(e.toString()); + } + + return result; + } + + /// 将地理坐标转换成屏幕坐标 + /// + /// [BMFCoordinate] location 地理坐标 如果传入 null 则返回null + /// + /// [BMFPoint] 屏幕坐标 + Future convertCoordinateToScreenPoint( + BMFCoordinate location) async { + if (null == _mapChannel) { + return null; + } + + if (null == location) { + return null; + } + + BMFPoint point; + try { + Map map = ((await _mapChannel.invokeMethod( + BMFProjectionMethodId.kScreenPointFromCoordinateMethod, + {'coordinate': location?.toMap()} as dynamic))) as Map; + point = BMFPoint.point().fromMap(map['point']) as BMFPoint; + } on PlatformException catch (e) { + BMFLog.e(e.toString()); + } + return point; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_baseindoormap_info.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_baseindoormap_info.dart new file mode 100644 index 0000000..b94ecea --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_baseindoormap_info.dart @@ -0,0 +1,37 @@ +library bmfmap_map.models.bmf_baseindoormap_info; + +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' show BMFModel; + +/// 此类表示室内图基础信息 +class BMFBaseIndoorMapInfo implements BMFModel { + static BMFBaseIndoorMapInfo baseIndoorMapInfo() => BMFBaseIndoorMapInfo(); + + /// 室内ID + String strID; + + /// 当前楼层 + String strFloor; + + /// 所有楼层信息 + List listStrFloors; + + /// BMFBaseIndoorMapInfo构造方法 + BMFBaseIndoorMapInfo({this.strID, this.strFloor, this.listStrFloors}); + @override + fromMap(Map map) { + List list = map['listStrFloors'] as List; + return new BMFBaseIndoorMapInfo( + strID: map['strID'], + strFloor: map['strFloor'], + listStrFloors: list?.map((s) => s as String)?.toList()); + } + + @override + Map toMap() { + return { + 'strID': this.strID, + 'strFloor': this.strFloor, + 'listStrFloors': this.listStrFloors?.map((s) => s?.toString())?.toList() + }; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_custommap_option.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_custommap_option.dart new file mode 100644 index 0000000..23c613e --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_custommap_option.dart @@ -0,0 +1,37 @@ +library bmfmap_map.models.bmf_custommap_option; + +import 'package:flutter/material.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' show BMFModel; + +/// 在线个性化样式配置选项 +class BMFCustomMapStyleOption implements BMFModel { + BMFCustomMapStyleOption customMapStyleOption() => BMFCustomMapStyleOption( + customMapStyleID: null, customMapStyleFilePath: null); + + /// 个性化地图样式ID,可从百度地图开放平台控制台http://lbsyun.baidu.com/apiconsole/custommap获取个性化样式ID + /// + /// 样式ID是和AK绑定的,因此若要两端用同一个id,必须是同一个账号申请的Android和iOS的AK + String customMapStyleID; + + /// 个性化地图文件路径,通过id加载失败时,将会从本地加载此路径下的个性化样式 + String customMapStyleFilePath; + + /// BMFCustomMapStyleOption构造方法 + BMFCustomMapStyleOption( + {@required this.customMapStyleID, this.customMapStyleFilePath}); + + @override + fromMap(Map map) { + return new BMFCustomMapStyleOption( + customMapStyleID: map['customMapStyleID'], + customMapStyleFilePath: map['customMapStyleFilePath']); + } + + @override + Map toMap() { + return { + 'customMapStyleID': this.customMapStyleID, + 'customMapStyleFilePath': this.customMapStyleFilePath + }; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_heatmap.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_heatmap.dart new file mode 100644 index 0000000..dd8b150 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_heatmap.dart @@ -0,0 +1,118 @@ +library bmfmap_map.models.bmf_heatmap; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' + show BMFModel, BMFCoordinate, ColorUtil; + +/// 热力图瓦片提供者 +class BMFHeatMap implements BMFModel { + /// 用户传入的热力图数据,数组,成员类型为BMFHeatMapNode + List data; + + /// 设置热力图点半径 + int radius; + + /// 设置热力图层透明度,默认 0.6 + double opacity; + + /// 设置热力图渐变 + BMFGradient gradient; + + /// BMFHeatMap构造方法 + BMFHeatMap( + {@required this.data, this.radius, this.opacity: 0.6, this.gradient}); + + @override + Map toMap() { + return { + 'data': this + .data + ?.map((weightedCoordinate) => weightedCoordinate?.toMap()) + ?.toList(), + 'radius': this.radius, + 'opacity': this.opacity, + 'gradient': this.gradient?.toMap() + }; + } + + /// map -> dynamic + @override + dynamic fromMap(Map map) { + if (null == map) { + return null; + } + List data = map['data'] as List; + return new BMFHeatMap( + data: data + ?.map((node) => BMFHeatMapNode.heatMapNode().fromMap(node)) + ?.toList(), + radius: map['radius'], + opacity: map['opacity'], + gradient: BMFGradient.gradient().fromMap(map['gradient'])); + } +} + +/// 热力图节点信息 +class BMFHeatMapNode implements BMFModel { + static BMFHeatMapNode heatMapNode() => + BMFHeatMapNode(intensity: null, pt: null); + + /// 点的强度权值 + double intensity; + + /// 点的位置坐标 + BMFCoordinate pt; + + BMFHeatMapNode({@required this.intensity, @required this.pt}) { + this.intensity = this.intensity > 1 ? this.intensity : 1.0; + } + @override + fromMap(Map map) { + return new BMFHeatMapNode( + intensity: map['intensity'], + pt: BMFCoordinate.coordinate().fromMap(map['pt'])); + } + + @override + Map toMap() { + return {'intensity': this.intensity, 'pt': this.pt?.toMap()}; + } +} + +/// 热力图渐变色定义类 +class BMFGradient implements BMFModel { + static BMFGradient gradient() => BMFGradient(colors: null, startPoints: null); + + /// 渐变色用到的所有颜色数组 colors与startPoints必须对应 + List colors; + + /// 每一个颜色的起始点数组,数组成员类型为 【0,1】的double值, + /// 个数和mColors的个数必须相同, + /// 数组内元素必须时递增的 例 【0.1, 0.5, 1】; + List startPoints; + + BMFGradient({@required this.colors, @required this.startPoints}); + + @override + dynamic fromMap(Map map) { + if (null == map) { + return null; + } + + List colors = map['colors'] as List; + List startPoints = map['startPoints'] as List; + return new BMFGradient( + colors: colors?.map((color) => ColorUtil.hexToColor(color))?.toList(), + startPoints: startPoints?.map((p) => p as double)?.toList()); + } + + @override + Map toMap() { + return { + 'colors': + this.colors?.map((color) => color.value.toRadixString(16))?.toList(), + 'startPoints': this.startPoints?.map((p) => p)?.toList() + }; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_infowindow.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_infowindow.dart new file mode 100644 index 0000000..0e666d5 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_infowindow.dart @@ -0,0 +1,68 @@ +library bmfmap_map.models.bmf_infowindow; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' + show BMFModel, BMFCoordinate; + +/// infoWindow +class BMFInfoWindow extends BMFModel { + /// infoWindow唯一id + String _id; + + /// infowWindow图片名 + String image; + + /// infoWindow显示位置 + BMFCoordinate coordinate; + + /// infoWindow y轴方向偏移 + double yOffset; + + /// 是否以bitmap形式添加 + bool isAddWithBitmap; + + /// BMFInfoWindow构造方法 + BMFInfoWindow( + {@required this.image, + @required this.coordinate, + this.yOffset, + this.isAddWithBitmap}) { + this._id = this.hashCode.toString(); + } + + BMFInfoWindow.withMap(Map map) { + if (null == map) { + return; + } + + this._id = map['id']; + this.image = map['image']; + this.coordinate = BMFCoordinate.coordinate().fromMap(map['coordinate']); + this.yOffset = map['yOffset']; + this.isAddWithBitmap = map['isAddWithBitmapDescriptor']; + } + + String getId() { + return _id; + } + + @override + fromMap(Map map) { + if (null == map) { + return null; + } + + return BMFInfoWindow.withMap(map); + } + + @override + Map toMap() { + return { + "id": this.getId(), + 'image': this.image, + 'coordinate': this.coordinate.toMap(), + 'yOffset': this.yOffset, + 'isAddWithBitmapDescriptor': this.isAddWithBitmap + }; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_map_options.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_map_options.dart new file mode 100644 index 0000000..da9f79f --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_map_options.dart @@ -0,0 +1,212 @@ +library bmfmap_map.models.bmf_map_options; + +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart'; + +/// mapView属性集合 +class BMFMapOptions { + static BMFMapOptions mapOptions() => BMFMapOptions(); + + /// 当前地图类型,默认标准地图 + /// + /// MapTypeNone = MapTypeNone + /// + /// 标准地图 = MapTypeStandard + /// + /// 卫星地图 = MapTypeSatellite + BMFMapType mapType; + + /// 限制地图的显示范围(地图状态改变时,该范围不会在地图显示范围外。设置成功后,会调整地图显示该范围) + BMFCoordinateBounds limitMapBounds; + + /// 指南针的位置,设定坐标以BMKMapView左上角为原点,向右向下增长 + BMFPoint compassPosition; + + /// 当前地图的中心点,改变该值时,地图的比例尺级别不会发生变化 + BMFCoordinate center; + + /// 地图比例尺级别,在手机上当前可使用的级别为4-21级 + int zoomLevel; + + /// 地图的自定义最小比例尺级别 + int minZoomLevel; + + /// 地图的自定义最大比例尺级别 + int maxZoomLevel; + + /// 地图旋转角度,在手机上当前可使用的范围为-180~180度 (ios取int值) + double rotation; + + /// 地图俯视角度,在手机上当前可使用的范围为-45~0度 (ios取int值) + double overlooking; + + /// 地图俯视角度最小值(即角度最大值),在手机上当前可设置的范围为-79~0度 + /// + /// iOS独有 + int minOverlooking; + + /// 设定地图是否现显示3D楼块效果 + bool buildingsEnabled; + + /// 设定地图是否显示底图poi标注(不包含室内图标注),默认true + bool showMapPoi; + + /// 设定地图是否打开路况图层 + bool trafficEnabled; + + /// 设定地图是否打开百度城市热力图图层(百度自有数据), + /// + /// 注:地图层级大于11时,可显示热力图 + bool baiduHeatMapEnabled; + + /// 设定地图View能否支持所有手势操作 + bool gesturesEnabled; + + /// 设定地图View能否支持用户多点缩放(双指) + bool zoomEnabled; + + /// 设定地图View能否支持用户缩放(双击或双指单击) + /// + /// iOS独有 + bool zoomEnabledWithTap; + + /// 设定地图View能否支持用户移动地图 + bool scrollEnabled; + + /// 设定地图View能否支持俯仰角 + bool overlookEnabled; + + /// 设定地图View能否支持旋转 + bool rotateEnabled; + + /// 设定地图是否回调force touch事件,默认为false,仅适用于支持3D Touch的情况, + /// + /// 开启后会回调 - mapview:onForceTouch:force:maximumPossibleForce: + /// + /// iOS独有 + bool forceTouchEnabled; + + /// 设定是否显示比例尺 + bool showMapScaleBar; + + /// 比例尺的位置,设定坐标以BMKMapView左上角为原点,向右向下增长 + BMFPoint mapScaleBarPosition; + + /// logo位置 默认BMFLogoPositionLeftBottom + BMFLogoPosition logoPosition; + + /// 当前地图可显示范围(东北,西南)角坐标 + BMFCoordinateBounds visibleMapBounds; + + /// 地图预留边界,默认:(top:0, left:0, bottom:0, right:0)。 + /// + /// 注:设置后,会根据mapPadding调整logo、比例尺、指南针的位置。 + /// + /// 当updateTargetScreenPtWhenMapPaddingChanged==true时,地图中心(屏幕坐标:BMKMapStatus.targetScreenPt)跟着改变 + BMFEdgeInsets mapPadding; + + /// 设置mapPadding时,地图中心(屏幕坐标:BMKMapStatus.targetScreenPt)是否跟着改变,默认true + /// + /// iOS独有 + bool updateTargetScreenPtWhenMapPaddingChanged; + + /// 设定双指手势操作时,BMKMapView的旋转和缩放效果的中心点。 + /// + /// 设置为true时,以手势的中心点(二个指头的中心点)为中心进行旋转和缩放,地图中心点会改变; + /// + /// 设置为false时,以当前地图的中心点为中心进行旋转和缩放,地图中心点不变; + /// + /// 默认值为false。 + /// + /// (iOS独有) + bool changeWithTouchPointCenterEnabled; + + /// 设定双击手势放大地图时,BMKMapView的放大效果的中心点。 + /// + /// 设置为true时,以双击的位置为中心点进行放大,地图中心点会改变; + /// + /// 设置为false时,以当前地图的中心点为中心进行放大,地图中心点不变; + /// + /// 默认值为true。 + bool changeCenterWithDoubleTouchPointEnabled; + + /// 设定地图是否显示室内图(包含室内图标注),默认不显示 + bool baseIndoorMapEnabled; + + /// 设定室内图标注是否显示,默认true,仅当显示室内图(baseIndoorMapEnabled为true)时生效 + bool showIndoorMapPoi; + + /// BMFMapOptions构造方法 + BMFMapOptions({ + this.mapType: BMFMapType.Standard, + this.limitMapBounds, + this.compassPosition, + this.center, + this.zoomLevel, + this.minZoomLevel, + this.maxZoomLevel, + this.rotation, + this.overlooking, + this.minOverlooking, + this.buildingsEnabled, + this.showMapPoi, + this.trafficEnabled, + this.baiduHeatMapEnabled: false, + this.gesturesEnabled, + this.zoomEnabled, + this.zoomEnabledWithTap, + this.scrollEnabled, + this.overlookEnabled, + this.rotateEnabled, + this.forceTouchEnabled: false, + this.showMapScaleBar, + this.mapScaleBarPosition, + this.logoPosition: BMFLogoPosition.LeftBottom, + this.visibleMapBounds, + this.mapPadding, + this.updateTargetScreenPtWhenMapPaddingChanged: true, + this.changeWithTouchPointCenterEnabled: false, + this.changeCenterWithDoubleTouchPointEnabled: true, + this.baseIndoorMapEnabled, + this.showIndoorMapPoi: true, + }); + + /// BMFMapOptions -> map + Map toMap() { + return { + 'mapType': this.mapType?.index, + 'limitMapBounds': this.limitMapBounds?.toMap(), + 'compassPosition': this.compassPosition?.toMap(), + 'center': this.center?.toMap(), + 'zoomLevel': this.zoomLevel, + 'minZoomLevel': this.minZoomLevel, + 'maxZoomLevel': this.maxZoomLevel, + 'rotation': this.rotation, + 'overlooking': this.overlooking, + 'minOverlooking': this.minOverlooking, + 'buildingsEnabled': this.buildingsEnabled, + 'showMapPoi': this.showMapPoi, + 'trafficEnabled': this.trafficEnabled, + 'baiduHeatMapEnabled': this.baiduHeatMapEnabled, + 'gesturesEnabled': this.gesturesEnabled, + 'zoomEnabled': this.zoomEnabled, + 'zoomEnabledWithTap': this.zoomEnabledWithTap, + 'scrollEnabled': this.scrollEnabled, + 'overlookEnabled': this.overlookEnabled, + 'rotateEnabled': this.rotateEnabled, + 'forceTouchEnabled': this.forceTouchEnabled, + 'showMapScaleBar': this.showMapScaleBar, + 'mapScaleBarPosition': this.mapScaleBarPosition?.toMap(), + 'logoPosition': this.logoPosition?.index, + 'visibleMapBounds': this.visibleMapBounds?.toMap(), + 'mapPadding': this.mapPadding?.toMap(), + 'updateTargetScreenPtWhenMapPaddingChanged': + this.updateTargetScreenPtWhenMapPaddingChanged, + 'changeWithTouchPointCenterEnabled': + this.changeWithTouchPointCenterEnabled, + 'changeCenterWithDoubleTouchPointEnabled': + this.changeCenterWithDoubleTouchPointEnabled, + 'baseIndoorMapEnabled': this.baseIndoorMapEnabled, + 'showIndoorMapPoi': this.showIndoorMapPoi + }; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_mappoi.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_mappoi.dart new file mode 100644 index 0000000..fc8bfbb --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_mappoi.dart @@ -0,0 +1,33 @@ +library bmfmap_map.models.bmf_mappoi; + +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' + show BMFModel, BMFCoordinate; + +/// 点击地图标注返回数据结构 +class BMFMapPoi implements BMFModel { + static BMFMapPoi mapPoi() => BMFMapPoi(); + + /// 点标注的名称 + String text; + + /// 点标注的经纬度坐标 + BMFCoordinate pt; + + /// 点标注的uid,可能为空 + String uid; + + /// BMFMapPoi构造方法 + BMFMapPoi({this.text, this.pt, this.uid}); + @override + fromMap(Map map) { + return new BMFMapPoi( + text: map['text'], + pt: BMFCoordinate.coordinate().fromMap(map['pt']), + uid: map['uid']); + } + + @override + Map toMap() { + return {'text': this.text, 'pt': this.pt?.toMap(), 'uid': this.uid}; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_mapstatus.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_mapstatus.dart new file mode 100644 index 0000000..b2591e4 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_mapstatus.dart @@ -0,0 +1,58 @@ +library bmfmap_map.models.bmf_mapstatus; + +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart'; + +/// 此类表示地图状态信息 +class BMFMapStatus implements BMFModel { + static BMFMapStatus mapStatus() => BMFMapStatus(); + + /// 缩放级别:(4-21) + double fLevel; + + /// 旋转角度 + double fRotation; + + /// 俯视角度:(-45~0) + double fOverlooking; + + /// 屏幕中心点坐标:在屏幕内,超过无效 + BMFPoint targetScreenPt; + + /// 地理中心点坐标:经纬度 + BMFCoordinate targetGeoPt; + + /// 当前屏幕显示范围内的地理范围 + BMFCoordinateBounds coordinateBounds; + + /// BMFMapStatus构造方法 + BMFMapStatus( + {this.fLevel, + this.fRotation, + this.fOverlooking, + this.targetScreenPt, + this.targetGeoPt, + this.coordinateBounds}); + @override + fromMap(Map map) { + return new BMFMapStatus( + fLevel: map['fLevel'], + fRotation: map['fRotation'], + fOverlooking: map['fOverlooking'], + targetScreenPt: BMFPoint.point().fromMap(map['targetScreenPt']), + targetGeoPt: BMFCoordinate.coordinate().fromMap(map['targetGeoPt']), + coordinateBounds: BMFCoordinateBounds.coordinateBounds() + .fromMap(map['visibleMapBounds'])); + } + + @override + Map toMap() { + return { + 'fLevel': this.fLevel, + 'fRotation': this.fRotation, + 'fOverlooking': this.fOverlooking, + 'targetScreenPt': this.targetScreenPt?.toMap(), + 'targetGeoPt': this.targetGeoPt?.toMap(), + 'visibleMapBounds': this.coordinateBounds?.toMap() + }; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_offline_models.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_offline_models.dart new file mode 100644 index 0000000..e4cb62b --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_offline_models.dart @@ -0,0 +1,160 @@ +library bmfmap_map.models.bmf_offline_models; + +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' + show BMFModel, BMFCoordinate; + +/// 离线地图搜索城市记录结构 +class BMFOfflineCityRecord implements BMFModel { + static BMFOfflineCityRecord offlineCityRecord() => BMFOfflineCityRecord(); + + /// 城市ID + int cityID; + + /// 数据包总大小 + int dataSize; + + /// 城市名称 + String cityName; + + /// 城市类型0:全国;1:省份;2:城市,如果是省份,可以通过childCities得到子城市列表 + int cityType; + + /// 子城市列表 + List childCities; + + /// BMFOfflineCityRecord构造方法 + BMFOfflineCityRecord( + {this.cityID, + this.dataSize, + this.cityName, + this.cityType, + this.childCities}); + + @override + Map toMap() { + return { + 'cityID': this.cityID, + 'dataSize': this.dataSize, + 'cityName': this.cityName, + 'cityType': this.cityType, + 'childCities': this.childCities?.map((city) => city?.toMap())?.toList() + }; + } + + @override + fromMap(Map map) { + List childCities = map['childCities'] as List; + return BMFOfflineCityRecord( + cityID: map['cityID'], + dataSize: map['dataSize'], + cityName: map['cityName'], + cityType: map['cityType'], + childCities: childCities + ?.map((city) => BMFOfflineCityRecord.offlineCityRecord() + .fromMap(city) as BMFOfflineCityRecord) + ?.toList()); + } +} + +/// 离线地图更新信息 +class BMFUpdateElement extends BMFModel { + static BMFUpdateElement bmfUpdateElement() => BMFUpdateElement(); + + /// 未定义 + static const int UNDEFINED = 0; + + /// 正在下载 + static const int DOWNLOADING = 1; + + /// 等待下载 + static const int WAITING = 2; + + /// 已暂停 + static const int SUSPENDED = 3; + + /// 完成 + static const int FINISHED = 4; + + /// 校验失败 + static const int eOLDSMd5Error = 5; + + /// 网络异常 + static const int eOLDSNetError = 6; + + /// 读写异常 + static const int eOLDSIOError = 7; + + /// wifi网络异常 + static const int eOLDSWifiError = 8; + + /// 数据错误,需重新下载 + static const int eOLDSFormatError = 9; + + /// 城市ID + int cityID; + + /// 城市名称 + String cityName; + + /// 下载比率,100为下载完成 + int ratio; + + /// 下载状态 + int status; + + /// 城市中心点坐标 + BMFCoordinate geoPt; + + /// 已下载数据大小 + int size; + + /// 服务端数据大小 + int serversize; + + /// 离线包地图层级(ios没有) + int level; + + /// 是否为更新 + bool update; + + /// BMFUpdateElement构造方法 + BMFUpdateElement( + {this.cityID, + this.cityName, + this.ratio, + this.status, + this.geoPt, + this.size, + this.serversize, + this.level, + this.update}); + + @override + fromMap(Map map) { + return BMFUpdateElement( + cityID: map["cityID"], + cityName: map["cityName"], + ratio: map["ratio"], + status: map["status"], + geoPt: BMFCoordinate.coordinate().fromMap(map['geoPt']), + size: map["size"], + serversize: map["serversize"], + level: map["level"], + update: map["update"]); + } + + @override + Map toMap() { + return { + "cityID": this.cityID, + "cityName": this.cityName, + "ratio": this.ratio, + "status": this.status, + "geoPt": this.geoPt?.toMap(), + "size": this.size, + "serversize": this.serversize, + "level": this.level, + "update": this.update + }; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_userlocation.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_userlocation.dart new file mode 100644 index 0000000..bb5bd7a --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/bmf_userlocation.dart @@ -0,0 +1,349 @@ +library bmfmap_map.models.bmf_userlocation; + +import 'package:flutter/material.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart'; + +/// 当前位置对象 +class BMFUserLocation implements BMFModel { + /// 位置更新状态,如果正在更新位置信息,则该值为YES + /// + /// Anroid没有该属性 + bool updating; + + /// 位置信息,尚未定位成功,则该值为null + BMFLocation location; + + /// heading信息,尚未定位成功,则该值为null + /// + /// Anroid没有该属性 + BMFHeading heading; + + /// 定位标注点要显示的标题信息 + /// + /// Anroid没有该属性 + String title; + + /// 定位标注点要显示的子标题信息 + /// + /// Anroid没有该属性 + String subtitle; + + /// BMFUserLocation构造方法 + BMFUserLocation( + {this.updating, + @required this.location, + this.heading, + this.title, + this.subtitle}); + + @override + fromMap(Map map) { + return new BMFUserLocation( + updating: map['updating'], + location: BMFLocation.location().fromMap(map['location']), + heading: BMFHeading.heading().fromMap(map['heading']), + title: map['title'], + subtitle: map['subtitle']); + } + + @override + Map toMap() { + return { + 'updating': this.updating, + 'location': this.location?.toMap(), + 'heading': this.heading?.toMap(), + 'title': this.title, + 'subtitle': this.subtitle + }; + } +} + +/// 定位信息 +class BMFLocation implements BMFModel { + static BMFLocation location() => BMFLocation(coordinate: null); + + /// 经纬度 + BMFCoordinate coordinate; + + /// 海拔 + /// + /// Android 没有该属性 + double altitude; + + /// 水平精确度 + /// + /// Android没有该属性 + double horizontalAccuracy; + + /// 垂直精确度 + /// + /// Android没有该属性 + double verticalAccuracy; + + /// 航向 + double course; + + /// 速度 + double speed; + + /// 定位精度 + /// + /// IOS没有该属性 + double accuracy; + + /// GPS定位时卫星数目 + /// + /// IOS没有该属性 + int satellitesNum; + + /// 时间 YYYY-MM-dd HH:mm:ss + /// + /// Android没有该属性 + String timestamp; + + BMFLocation( + {@required this.coordinate, + this.altitude, + this.horizontalAccuracy, + this.verticalAccuracy, + this.course, + this.speed, + this.accuracy, + this.satellitesNum, + this.timestamp}); + @override + fromMap(Map map) { + return new BMFLocation( + coordinate: BMFCoordinate.coordinate().fromMap(map['coordinate']), + altitude: map['altitude'], + horizontalAccuracy: map['horizontalAccuracy'], + verticalAccuracy: map['verticalAccuracy'], + course: map['course'], + speed: map['speed'], + accuracy: map['accuracy'], + satellitesNum: map['satellitesNum'], + timestamp: map['timestamp']); + } + + @override + Map toMap() { + return { + 'coordinate': this.coordinate?.toMap(), + 'altitude': this.altitude, + 'horizontalAccuracy': this.horizontalAccuracy, + 'verticalAccuracy': this.verticalAccuracy, + 'course': this.course, + 'speed': this.speed, + 'accuracy': this.accuracy, + 'satellitesNum': this.satellitesNum, + 'timestamp': this.timestamp + }; + } +} + +/// heading信息 +class BMFHeading implements BMFModel { + static BMFHeading heading() => BMFHeading(); + + /// 磁头 + /// + /// 表示度方向,其中0度为磁北。无论设备的方向以及用户界面的方向如何,方向都是从设备的顶部引用的。 + /// + /// 范围: 0.0 - 359.9度,0度为地磁北极 + double magneticHeading; + + /// 表示角度方向,其中0度为真北。参考方向 + /// + /// 不考虑设备的方向以及设备的方向 + /// + /// 范围: 0.0 - 359.9度,0为正北 + double trueHeading; + + /// 航向精度 + /// + /// 表示磁头可能与实际地磁头偏差的最大度数。负值表示无效的标题。 + double headingAccuracy; + + /// x轴测量的地磁的原始值 + double x; + + /// y轴测量的地磁的原始值 + double y; + + /// z轴测量的地磁的原始值 + double z; + + /// 时间戳 + String timestamp; + + BMFHeading( + {this.magneticHeading, + this.trueHeading, + this.headingAccuracy, + this.x, + this.y, + this.z, + this.timestamp}); + + @override + fromMap(Map map) { + return new BMFHeading( + magneticHeading: map['magneticHeading'], + trueHeading: map['trueHeading'], + headingAccuracy: map['headingAccuracy'], + x: map['x'], + y: map['y'], + z: map['z'], + timestamp: map['timestamp']); + } + + @override + Map toMap() { + return { + 'magneticHeading': this.magneticHeading, + 'trueHeading': this.trueHeading, + 'headingAccuracy': this.headingAccuracy, + 'x': this.x, + 'y': this.y, + 'z': this.z, + 'timestamp': this.timestamp + }; + } +} + +/// userlocationView在mapview上显示的层级 +enum BMFLocationViewHierarchy { + /// + BMFUserlocationDisplayParam( + locationViewOffsetX: 0, + locationViewOffsetY: 0, + userTrackingMode: BMFUserTrackingMode.None, + enableDirection: false, + accuracyCircleFillColor: Colors.blue, + accuracyCircleStrokeColor: Colors.blue, + locationViewImage: null, + locationViewHierarchy: + BMFLocationViewHierarchy.LOCATION_VIEW_HIERARCHY_TOP); + + /// 定位图标X轴偏移量(屏幕坐标) + /// + /// Android没有该属性 + double locationViewOffsetX; + + /// 定位图标Y轴偏移量(屏幕坐标) + /// + /// Android没有该属性 + double locationViewOffsetY; + + /// 定位模式 + /// + /// IOS没有该属性 + BMFUserTrackingMode userTrackingMode; + + /// 是否允许显示方向信息 + /// + /// IOS没有该属性 + bool enableDirection; + + /// 精度圈是否显示,默认YES + /// + /// Android没有该属性 + bool isAccuracyCircleShow; + + /// 精度圈 填充颜色 + Color accuracyCircleFillColor; + + /// 精度圈 边框颜色 + Color accuracyCircleStrokeColor; + + /// 跟随态旋转角度是否生效,默认YES + /// + /// Android没有该属性 + bool isRotateAngleValid; + + /// 用户自定义定位图标 + String locationViewImage; + + /// 是否显示气泡,默认YES + /// + /// Android没有该属性 + bool canShowCallOut; + + /// locationView在mapview上的层级 默认值为LOCATION_VIEW_HIERARCHY_BOTTOM + BMFLocationViewHierarchy locationViewHierarchy; + + BMFUserlocationDisplayParam( + {this.locationViewOffsetX, + this.locationViewOffsetY, + this.userTrackingMode: BMFUserTrackingMode.None, + this.enableDirection: true, + this.isAccuracyCircleShow: true, + this.accuracyCircleFillColor, + this.accuracyCircleStrokeColor, + this.isRotateAngleValid: true, + this.locationViewImage, + this.canShowCallOut: true, + this.locationViewHierarchy}); + + @override + fromMap(Map map) { + int userTrackingModeIndex = map['userTrackingMode'] as int; + BMFUserTrackingMode tmpUserTrackingMode; + if (null != userTrackingModeIndex && + userTrackingModeIndex >= 0 && + userTrackingModeIndex < BMFUserTrackingMode.values.length) { + tmpUserTrackingMode = BMFUserTrackingMode.values[userTrackingModeIndex]; + } + + int locationViewHierarchyIndex = map['locationViewHierarchy'] as int; + BMFLocationViewHierarchy tmpLocationViewHierarchy; + if (null != locationViewHierarchyIndex && + locationViewHierarchyIndex >= 0 && + locationViewHierarchyIndex < BMFLocationViewHierarchy.values.length) { + tmpLocationViewHierarchy = + BMFLocationViewHierarchy.values[locationViewHierarchyIndex]; + } + + return new BMFUserlocationDisplayParam( + locationViewOffsetX: map['locationViewOffsetX'], + locationViewOffsetY: map['locationViewOffsetY'], + userTrackingMode: tmpUserTrackingMode, + enableDirection: map['enableDirection'] as bool, + isAccuracyCircleShow: map['isAccuracyCircleShow'] as bool, + accuracyCircleFillColor: + ColorUtil.hexToColor(map['accuracyCircleFillColor']), + accuracyCircleStrokeColor: + ColorUtil.hexToColor(map['accuracyCircleStrokeColor']), + isRotateAngleValid: map['isRotateAngleValid'] as bool, + locationViewImage: map['locationViewImage'], + canShowCallOut: map['canShowCallOut'] as bool, + locationViewHierarchy: tmpLocationViewHierarchy); + } + + @override + Map toMap() { + return { + 'locationViewOffsetX': this.locationViewOffsetX, + 'locationViewOffsetY': this.locationViewOffsetY, + 'userTrackingMode': this.userTrackingMode.index, + 'enableDirection': this.enableDirection, + 'isAccuracyCircleShow': this.isAccuracyCircleShow, + 'accuracyCircleFillColor': + this.accuracyCircleFillColor?.value?.toRadixString(16), + 'accuracyCircleStrokeColor': + this.accuracyCircleStrokeColor?.value?.toRadixString(16), + 'isRotateAngleValid': this.isRotateAngleValid, + 'locationViewImage': this.locationViewImage, + 'canShowCallOut': this.canShowCallOut, + 'locationViewHierarchy': this.locationViewHierarchy.index + }; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_arcline.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_arcline.dart new file mode 100644 index 0000000..455ee0c --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_arcline.dart @@ -0,0 +1,76 @@ +library bmfmap_map.models.overlays.bmf_arcline; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bmfmap/BaiduMap/map/bmf_map_linedraw_types.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' + show BMFCoordinate, ColorUtil; + +import 'bmf_overlay.dart'; + +/// 弧线 +class BMFArcline extends BMFOverlay { + /// 经纬度数组三个点确定一条弧线 + List coordinates; + + /// 设置arclineView的线宽度 + int width; + + /// 设置arclineView的画笔颜色 + Color color; + + /// 虚线类型 + /// + /// iOS独有 + BMFLineDashType lineDashType; + + /// BMFArcline构造方法 + BMFArcline( + {@required this.coordinates, + this.width: 5, + this.color: Colors.blue, + this.lineDashType: BMFLineDashType.LineDashTypeNone, + int zIndex: 0, + bool visible: true}) + : super(zIndex: zIndex, visible: visible); + + BMFArcline.withMap(Map map) { + if (null == map) { + return; + } + + List list = map['coordinates'] as List; + + super.fromMap(map); + this.coordinates = list + ?.map((c) => BMFCoordinate.coordinate().fromMap(c) as BMFCoordinate) + ?.toList(); + this.width = map['width']; + this.color = ColorUtil.hexToColor(map['color']); + + int lineType = map['lineDashType'] as int; + if (null != lineType && + lineType >= 0 && + lineType < BMFLineDashType.values.length) { + this.lineDashType = BMFLineDashType.values[lineType]; + } + } + + @override + fromMap(Map map) { + return BMFArcline.withMap(map); + } + + @override + Map toMap() { + return { + 'id': this.getId(), + 'coordinates': this.coordinates?.map((coord) => coord?.toMap())?.toList(), + 'width': this.width, + 'color': this.color?.value?.toRadixString(16), + 'lineDashType': this.lineDashType?.index, + 'zIndex': this.zIndex, + 'visible': this.visible + }; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_circle.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_circle.dart new file mode 100644 index 0000000..02a0b0e --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_circle.dart @@ -0,0 +1,86 @@ +library bmfmap_map.models.overlays.bmf_circle; + +import 'package:flutter/material.dart'; +import 'package:flutter_bmfmap/BaiduMap/map/bmf_map_linedraw_types.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' + show BMFCoordinate, ColorUtil; + +import 'bmf_overlay.dart'; + +/// 圆 +class BMFCircle extends BMFOverlay { + /// 圆心点经纬度 + BMFCoordinate center; + + /// 圆的半径(单位米) + double radius; + + /// 设置circleView的线宽度 + int width; + + /// 设置circleView的边框颜色 + Color strokeColor; + + /// 设置circleView的填充色 + Color fillColor; + + /// 设置circleView为虚线样式 + BMFLineDashType lineDashType; + + /// BMFCircle构造方法 + BMFCircle( + {@required this.center, + @required this.radius, + this.width: 5, + this.strokeColor: Colors.blue, + this.fillColor: Colors.red, + this.lineDashType: BMFLineDashType.LineDashTypeNone, + int zIndex: 0, + bool visible: true}) + : super(zIndex: zIndex, visible: visible); + + BMFCircle.withMap(Map map) { + if (null == map) { + return; + } + + super.fromMap(map); + + this.center = BMFCoordinate.coordinate().fromMap(map['center']); + this.radius = map['radius']; + this.width = map['width']; + this.strokeColor = ColorUtil.hexToColor(map['strokeColor']); + this.fillColor = ColorUtil.hexToColor(map['fillColor']); + + int lineType = map['lineDashType'] as int; + if (null != lineType && + lineType >= 0 && + lineType < BMFLineDashType.values.length) { + this.lineDashType = BMFLineDashType.values[lineType]; + } + } + + @override + fromMap(Map map) { + if (null == map) { + return; + } + + return BMFCircle.withMap(map); + } + + @override + Map toMap() { + return { + 'id': this.getId(), + 'center': this.center?.toMap(), + 'radius': this.radius, + 'width': this.width, + 'strokeColor': this.strokeColor?.value?.toRadixString(16), + 'fillColor': this.fillColor?.value?.toRadixString(16), + 'lineDashType': this.lineDashType?.index, + 'zIndex': this.zIndex, + 'visible': this.visible + }; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_dot.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_dot.dart new file mode 100644 index 0000000..43d487e --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_dot.dart @@ -0,0 +1,62 @@ +library bmfmap_map.models.overlays.bmf_dot; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' + show BMFCoordinate, ColorUtil; + +import 'bmf_overlay.dart'; + +/// 点 +/// +/// Android独有 +class BMFDot extends BMFOverlay { + /// 圆心点经纬度 + BMFCoordinate center; + + /// 圆的半径(单位米) + double radius; + + ///园的颜色 + Color color; + + /// BMFDot构造方法 + BMFDot( + {@required this.center, + @required this.radius, + @required this.color, + int zIndex: 0, + bool visible: true}) + : super(zIndex: zIndex, visible: visible); + + BMFDot.withMap(Map map) { + if (null == map) { + return; + } + + super.fromMap(map); + this.center = BMFCoordinate.coordinate().fromMap(map['center']); + this.radius = map['radius']; + this.color = ColorUtil.hexToColor(map['color']); + } + + @override + fromMap(Map map) { + if (null == map) { + return null; + } + + return BMFDot.withMap(map); + } + + @override + Map toMap() { + return { + 'id': this.getId(), + 'center': this.center?.toMap(), + 'radius': this.radius, + 'color': this.color?.value?.toRadixString(16), + 'zIndex': this.zIndex, + 'visible': this.visible + }; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_ground.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_ground.dart new file mode 100644 index 0000000..297a91b --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_ground.dart @@ -0,0 +1,101 @@ +library bmfmap_map.models.overlays.bmf_ground; + +import 'package:flutter/material.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' + show BMFCoordinate, BMFCoordinateBounds; + +import 'bmf_overlay.dart'; + +/// 该类用于定义一个图片图层 +class BMFGround extends BMFOverlay { + /// 两种绘制GroundOverlay的方式之一:绘制的位置地理坐标,与anchor配对使用 + BMFCoordinate position; + + /// 用位置绘制时图片的锚点x,图片左上角为(0.0f,0.0f),向右向下为正 + /// + /// 使用groundOverlayWithPosition初始化时生效 + double anchorX; + + /// 用位置绘制时图片的锚点y,图片左上角为(0.0f,0.0f),向右向下为正 + /// + /// 使用groundOverlayWithPosition初始化时生效 + double anchorY; + + /// 宽 + double width; + + /// 高 + double height; + + /// 缩放级别(仅ios支持) + int zoomLevel; + + /// 两种绘制GroundOverlay的方式之二:绘制的地理区域范围,图片在此区域内合理缩放 + BMFCoordinateBounds bounds; + + /// 绘制图片 + String image; + + /// 图片纹理透明度,最终透明度 = 纹理透明度 * alpha,取值范围为【0.0f, 1.0f】,默认为1.0f + double transparency; + + /// BMFGround构造方法 + BMFGround( + {@required this.image, + this.width, + this.height, + this.anchorX, + this.anchorY, + this.zoomLevel, + this.bounds, + this.position, + this.transparency: 1.0, + int zIndex: 0, + bool visible: true}) + : super(zIndex: zIndex, visible: visible); + + BMFGround.withGround(Map map) { + if (null == map) { + return; + } + + super.fromMap(map); + + this.image = map['image']; + this.width = map['width']; + this.height = map['height']; + this.anchorX = map['anchorX']; + this.anchorY = map['anchorY']; + this.zoomLevel = map['zoomLevel']; + this.position = BMFCoordinate.coordinate().fromMap(map['position']); + this.bounds = BMFCoordinateBounds.coordinateBounds().fromMap(map['bounds']); + this.transparency = map['transparency']; + } + + @override + Map toMap() { + return { + 'id': this.getId(), + 'image': this.image, + 'width': this.width, + 'height': this.height, + 'anchorX': this.anchorX, + 'anchorY': this.anchorY, + 'zoomLevel': this.zoomLevel, + 'position': this.position?.toMap(), + 'bounds': this.bounds?.toMap(), + 'transparency': this.transparency, + 'zIndex': this.zIndex, + 'visible': this.visible + }; + } + + @override + fromMap(Map map) { + if (null == map) { + return; + } + + return BMFGround.withGround(map); + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_marker.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_marker.dart new file mode 100644 index 0000000..8674990 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_marker.dart @@ -0,0 +1,384 @@ +library bmfmap_map.models.overlays.bmf_marker; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' + show BMFCoordinate, BMFPoint; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_overlay.dart'; +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_map_dispatcher_factory.dart'; + +/// 大头针 +class BMFMarker extends BMFOverlay { + static BMFMarker marker() => + BMFMarker(position: BMFCoordinate.coordinate(), icon: null); + + /// 标题 + String title; + + /// 子标题 + /// + /// Android没有该属性 + String subtitle; + + /// marker位置经纬度 + BMFCoordinate position; + + /// 标注固定在指定屏幕位置, 必须与screenPointToLock一起使用。 + /// + /// 注意:拖动Annotation isLockedToScreen会被设置为false。 + /// 若isLockedToScreen为true,拖动地图时annotaion不会跟随移动; + /// 若isLockedToScreen为false,拖动地图时annotation会跟随移动。 + bool isLockedToScreen; + + /// 标注锁定在屏幕上的位置, + /// + /// 注意:地图初始化后才能设置screenPointToLock。可以在地图加载完成的回调方法:mapViewDidFinishLoading中使用此属性。 + BMFPoint screenPointToLock; + + /// markerView的复用标识符 + String identifier; + + /// markView显示的图片 + String icon; + + /// 默认情况下, annotation view的中心位于annotation的坐标位置, + /// + /// 可以设置centerOffset改变view的位置,正的偏移使view朝右下方移动,负的朝左上方,单位是像素 + /// + /// 目前Android只支持Y轴设置偏移量对应SDK的 yOffset(int yOffset) 方法 + BMFPoint centerOffset; + + /// 默认情况下,标注没有3D效果,可以设置enabled3D改变使用3D效果, + /// + /// 使得标注在地图旋转和俯视时跟随旋转、俯视 + /// + /// iOS独有 + bool enabled3D; + + /// 默认为true,当为false时view忽略触摸事件 + bool enabled; + + /// 当设为true支持将view在地图上拖动 + bool draggable; + + /// x方向缩放倍数 + /// + /// Android独有 + double scaleX; + + /// y方向缩放倍数 + /// + /// Android独有 + double scaleY; + + /// 透明度 + /// + /// Android独有 + double alpha; + + /// 在有俯仰角的情况下,是否近大远小 + /// + /// Android独有 + bool isPerspective; + + BMFMarker.withMap(Map map) { + if (null == map) { + return; + } + + super.fromMap(map); + + this.position = BMFCoordinate.coordinate().fromMap(map['position']); + this.title = map['title']; + this.subtitle = map["subtitle"]; + this.isLockedToScreen = map['isLockedToScreen']; + this.screenPointToLock = BMFPoint.point().fromMap(map['screenPointToLock']); + this.identifier = map['identifier']; + this.icon = map['icon']; + this.centerOffset = map['centerOffset']; + this.enabled3D = map['enabled3D']; + this.enabled = map['enabled']; + this.draggable = map['draggable']; + this.scaleX = map['scaleX']; + this.scaleY = map['scaleY']; + this.alpha = map['alpha']; + this.isPerspective = map['isPerspective']; + } + + /// BMFMarker构造方法 + BMFMarker({ + @required this.position, + @required this.icon, + this.title, + this.subtitle, + this.isLockedToScreen: false, + this.screenPointToLock, + this.identifier, + this.centerOffset, + this.enabled3D, + this.enabled: true, + this.draggable: false, + this.scaleX: 1.0, + this.scaleY: 1.0, + this.alpha: 1.0, + this.isPerspective, + int zIndex: 0, + bool visible: true, + }) : super(zIndex: zIndex, visible: visible); + + @override + fromMap(Map map) { + if (null == map) { + return null; + } + + return BMFMarker.withMap(map); + } + + @override + Map toMap() { + return { + 'id': this.getId(), + 'position': this.position?.toMap(), + 'title': this.title, + 'subtitle': this.subtitle, + 'isLockedToScreen': this.isLockedToScreen, + 'screenPointToLock': this.screenPointToLock?.toMap(), + 'identifier': this.identifier, + 'icon': this.icon, + 'centerOffset': this.centerOffset?.toMap(), + 'enabled3D': this.enabled3D, + 'enabled': this.enabled, + 'draggable': this.draggable, + 'scaleX': this.scaleX, + 'scaleY': this.scaleY, + 'alpha': this.alpha, + 'isPerspective': this.isPerspective, + 'zIndex': this.zIndex, + 'visible': this.visible, + }; + } + + /// 更新title + Future updateTitle(String title) async { + if (null == title) { + return false; + } + + this.title = title; + + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .updateMarkerMember(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'title', + 'value': title, + }); + } + + /// 更新subTitle + Future updateSubTitle(String subtitle) async { + if (null == subtitle) { + return false; + } + + this.subtitle = subtitle; + + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .updateMarkerMember(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'subtitle', + 'value': subtitle, + }); + } + + /// 更新位置经纬度 + Future updatePosition(BMFCoordinate position) async { + if (null == position) { + return false; + } + + this.position = position; + + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .updateMarkerMember(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'position', + 'value': position?.toMap(), + }); + } + + /// 更新是否锁定在屏幕上的位置 + /// + /// 如果isLockedToScreen为false,screenPointToLock需要传null + Future updateIsLockedToScreen( + bool isLockedToScreen, BMFPoint screenPointToLock) async { + this.isLockedToScreen = isLockedToScreen; + this.screenPointToLock = screenPointToLock; + + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .updateMarkerMember(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'isLockedToScreen', + 'value': isLockedToScreen, + 'screenPointToLock': screenPointToLock?.toMap() + }); + } + + /// 更新显示的图片 + Future updateIcon(String icon) async { + if (null == icon || icon.isEmpty) { + return false; + } + + this.icon = icon; + + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .updateMarkerMember(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'icon', + 'value': icon, + }); + } + + /// 更新marker centerOffset信息 + Future updateCenterOffset(BMFPoint centerOffset) async { + if (null == centerOffset) { + return false; + } + + this.centerOffset = centerOffset; + + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .updateMarkerMember(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'centerOffset', + 'value': centerOffset?.toMap(), + }); + } + + /// 更新marker是否显示3D效果 + Future updateEnabled3D(bool enabled3D) async { + this.enabled3D = enabled3D; + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .updateMarkerMember(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'enabled3D', + 'value': enabled3D, + }); + } + + /// 更新marker是否响应触摸事件, true则响应,false则不响应 + Future updateEnabled(bool enabled) async { + this.enabled = enabled; + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .updateMarkerMember(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'enabled', + 'value': enabled, + }); + } + + /// 更新是否可拖拽 + Future updateDraggable(bool draggable) async { + this.draggable = draggable; + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .updateMarkerMember(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'draggable', + 'value': draggable, + }); + } + + /// 更新x方向缩放倍数 + /// + /// Android独有 + Future updateScaleX(double scaleX) async { + this.scaleX = scaleX; + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .updateMarkerMember(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'scaleX', + 'value': scaleX, + }); + } + + /// 更新y方向缩放倍数 + /// + /// Android独有 + Future updateScaleY(double scaleY) async { + this.scaleY = scaleY; + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .updateMarkerMember(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'scaleY', + 'value': scaleY, + }); + } + + /// 更新透明度 + /// + /// Android独有 + Future updateAlpha(double alpha) async { + this.alpha = alpha; + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .updateMarkerMember(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'alpha', + 'value': alpha, + }); + } + + /// 更新近大远小的开关 + /// + /// Android独有 + Future updateIsPerspective(bool isPerspective) async { + this.isPerspective = isPerspective; + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .updateMarkerMember(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'isPerspective', + 'value': isPerspective, + }); + } + + /// 更新marker是否显示 + /// + /// Android独有 + Future updateVisible(bool visible) async { + this.visible = visible; + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .updateMarkerMember(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'visible', + 'value': visible, + }); + } + + /// 更新z轴方向上的堆叠顺序 + /// + /// Android独有 + Future updateZIndex(int zIndex) async { + this.zIndex = zIndex; + return await BMFMapDispatcherFactory.instance + .getMarkerDispatcher() + .updateMarkerMember(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'zIndex', + 'value': zIndex, + }); + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_overlay.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_overlay.dart new file mode 100644 index 0000000..dca5c41 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_overlay.dart @@ -0,0 +1,62 @@ +library bmfmap_map.models.overlays.bmf_overlay; + +import 'package:flutter/services.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' show BMFModel; + +/// 地图覆盖物基类 +class BMFOverlay extends BMFModel { + /// overlay id + String _id; + + /// overlay是否可见 + /// + /// Android独有 + bool visible; + + /// 元素的堆叠顺序 + /// + /// Android独有 + int zIndex; + + MethodChannel _methodChannel; + + BMFOverlay({this.visible, this.zIndex}) { + this._id = this.hashCode.toString(); + } + + BMFOverlay.withMap(Map map) { + if (null == map) { + return; + } + + this._id = map['id']; + this.visible = map['visible']; + this.zIndex = map['zIndex']; + } + + String getId() { + return _id; + } + + void setMethodChannel(MethodChannel methodChannel) { + this._methodChannel = methodChannel; + } + + MethodChannel getMethodChannel() { + return this._methodChannel; + } + + @override + fromMap(Map map) { + if (null == map) { + return null; + } + + return BMFOverlay.withMap(map); + } + + @override + Map toMap() { + return {'id': this.getId(), 'visible': visible, 'zIndex': zIndex}; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_polygon.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_polygon.dart new file mode 100644 index 0000000..0c5678d --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_polygon.dart @@ -0,0 +1,86 @@ +library bmfmap_map.models.overlays.bmf_polygon; + +import 'package:flutter/material.dart'; +import 'package:flutter_bmfmap/BaiduMap/map/bmf_map_linedraw_types.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' + show BMFCoordinate, ColorUtil; + +import 'bmf_overlay.dart'; + +/// 多边形 +class BMFPolygon extends BMFOverlay { + /// 经纬度数组 + List coordinates; + + /// 设置polygonView的线宽度 + int width; + + /// 设置polygonView的边框颜色 + Color strokeColor; + + /// 设置polygonView的填充色 + Color fillColor; + + /// 设置polygonView为虚线样式 + /// + /// iOS独有 + BMFLineDashType lineDashType; + + BMFPolygon.withMap(Map map) { + if (null == map) { + return; + } + + super.fromMap(map); + + List list = map['coordinates'] as List; + this.coordinates = list + ?.map((c) => BMFCoordinate.coordinate().fromMap(c) as BMFCoordinate) + ?.toList(); + + this.width = map['width']; + this.strokeColor = ColorUtil.hexToColor(map['strokeColor']); + this.fillColor = ColorUtil.hexToColor(map['fillColor']); + + int lineType = map['lineDashType'] as int; + if (null != lineType && + lineType >= 0 && + lineType < BMFLineDashType.values.length) { + this.lineDashType = BMFLineDashType.values[lineType]; + } + } + + /// BMFPolygon构造方法 + BMFPolygon( + {@required this.coordinates, + this.width: 5, + this.strokeColor: Colors.blue, + this.fillColor: Colors.red, + this.lineDashType: BMFLineDashType.LineDashTypeNone, + int zIndex: 0, + bool visible: true}) + : super(zIndex: zIndex, visible: visible); + + @override + fromMap(Map map) { + if (null == map) { + return; + } + + return BMFPolygon.withMap(map); + } + + @override + Map toMap() { + return { + 'id': this.getId(), + 'coordinates': this.coordinates?.map((coord) => coord?.toMap())?.toList(), + 'width': this.width, + 'strokeColor': this.strokeColor?.value?.toRadixString(16), + 'fillColor': this.fillColor?.value?.toRadixString(16), + 'lineDashType': this.lineDashType?.index, + 'zIndex': this.zIndex, + 'visible': this.visible + }; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_polyline.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_polyline.dart new file mode 100644 index 0000000..8a9fe28 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_polyline.dart @@ -0,0 +1,433 @@ +library bmfmap_map.models.overlays.bmf_polyline; + +import 'package:flutter/material.dart'; +import 'package:flutter_bmfmap/BaiduMap/map/bmf_map_linedraw_types.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart'; +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_map_dispatcher_factory.dart'; +import 'bmf_overlay.dart'; + +/// 折线 +/// +class BMFPolyline extends BMFOverlay { + static BMFPolyline polyline() => BMFPolyline(coordinates: null, indexs: null); + + /// 经纬度数组 + List coordinates; + + /// 分段索引(多纹理,多颜色折线请赋值) + List indexs; + + /// 线宽 + int width; + + /// 颜色折线的colors 用于颜色绘制 + /// + /// 与textures二者必须选择其一进行传参 + List colors; + + /// 纹理折线的纹理图片路径 用于纹理绘制 + /// + /// 注意:纹理图片宽高必须是2的n次幂 + /// 与colors二者必须选择其一进行传参 + List textures; + + /// 设置折线是否虚线(Android独有) + /// + /// 当以纹理形式渲染polyline时,该属性为true,则显示纹理上的元素,为false不显示 + /// 当以颜色形式渲染polyline时,与BMFLineDashType配合使用;为true,则polyline可以渲染成虚线,为fasle则不能, + bool dottedLine; + + /// 虚线绘制样式 默认实折线 BMFLineDashTypeNone + /// + /// 实折线 LineDashTypeNone, + /// 方块虚线 LineDashTypeSquare, + /// 圆点虚线 LineDashTypeDot, + /// + /// Android平台要想渲染成虚线,必须设置dottedLine为true + BMFLineDashType lineDashType; + + /// line头尾处理方式(不支持虚线) 默认普通头 LineCapButt, + /// + /// 普通头 LineCapButt, + /// 圆形头 LineCapRound + /// + /// iOS独有 + BMFLineCapType lineCapType; + + /// line拐角处理方式(不支持虚线)默认平角衔接 LineJoinBevel, + /// + /// 平角衔接 BMFLineJoinBevel, + /// 尖角衔接(尖角过长(大于线宽)按平角处理) LineJoinMiter, + /// 圆⻆角衔接 LineJoinRound + /// + /// iOS独有 + BMFLineJoinType lineJoinType; + + /// 是否抽稀 默认ture + bool isThined; + + /// 是否可点击 + /// + /// Android独有属性,iOS polyline默认可点击,目前不支持通过该属性设置可点击状态 + bool clickable; + + /// 纹理宽、高是否保持原比例渲染,默认为false + /// + /// Android独有 + bool isKeepScale; + + /// 是否可以被选中,获得焦点,默认true + /// + /// Android独有 + bool isFocus; + + /// BMFPolyline构造方法 + BMFPolyline( + {@required this.coordinates, + @required this.indexs, + this.width: 5, + this.colors: const [], + this.textures: const [], + this.dottedLine: true, + this.lineDashType: BMFLineDashType.LineDashTypeNone, + this.lineCapType: BMFLineCapType.LineCapButt, + this.lineJoinType: BMFLineJoinType.LineJoinBevel, + this.isThined: true, + this.clickable: true, + this.isKeepScale: false, + this.isFocus: true, + int zIndex: 0, + bool visible: true}) + : super(zIndex: zIndex, visible: visible); + + BMFPolyline.withMap(Map map) { + if (null == map) { + return; + } + + super.fromMap(map); + + List list = map['coordinates'] as List; + List indexs = map['indexs'] as List; + this.coordinates = list + ?.map((c) => BMFCoordinate.coordinate().fromMap(c) as BMFCoordinate) + ?.toList(); + + this.indexs = indexs?.map((i) => i as int)?.toList(); + this.width = map['width']; + list = map['colors'] as List; + this.colors = list?.map((s) => ColorUtil.hexToColor(s as String))?.toList(); + this.textures = textures?.map((s) => s)?.toList(); + + this.dottedLine = map['dottedLine'] as bool; + + int lineType = map['lineDashType'] as int; + if (null != lineType && + lineType >= 0 && + lineType < BMFLineDashType.values.length) { + this.lineDashType = BMFLineDashType.values[lineType]; + } + + lineType = map['lineCapType'] as int; + if (null != lineType && + lineType >= 0 && + lineType < BMFLineDashType.values.length) { + this.lineCapType = BMFLineCapType.values[lineType]; + } + + lineType = map['lineJoinType'] as int; + if (null != lineType && + lineType >= 0 && + lineType < BMFLineDashType.values.length) { + this.lineJoinType = BMFLineJoinType.values[lineType]; + } + + this.isThined = map['isThined'] as bool; + this.clickable = map['clickable'] as bool; + this.isKeepScale = map['isKeepScale'] as bool; + this.isFocus = map['isFocus']; + } + + @override + fromMap(Map map) { + if (null == map) { + return; + } + + return BMFPolyline.withMap(map); + } + + @override + Map toMap() { + return { + 'id': this.getId(), + 'coordinates': this.coordinates?.map((coord) => coord?.toMap())?.toList(), + 'indexs': this.indexs?.map((index) => index)?.toList(), + 'width': this.width, + 'colors': + this.colors?.map((color) => color.value.toRadixString(16))?.toList(), + 'textures': this.textures, + 'dottedLine': this.dottedLine, + 'lineDashType': this.lineDashType?.index, + 'lineCapType': this.lineCapType?.index, + 'lineJoinType': this.lineJoinType?.index, + 'isThined': this.isThined, + 'clickable': this.clickable, + 'isKeepScale': this.isKeepScale, + 'isFocus': this.isFocus, + 'zIndex': this.zIndex, + 'visible': this.visible + }; + } + + /// 更新经纬度数组 + /// + /// List<[BMFCoordinate]> coordinates polyline经纬度数组 + /// + /// indexs 分段索引(多纹理,多颜色折线请赋值),iOS在多颜色或者多纹理渲染的情况下,更新经纬度数组的同时,必须更新indexs + Future updateCoordinates(List coordinates, + {List indexs}) async { + if (null == coordinates) { + return false; + } + + this.coordinates = coordinates; + + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .updateOverlayMemberDispatch(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'coordinates', + 'value': coordinates?.map((coordinate) => coordinate?.toMap())?.toList(), + 'indexs': indexs?.map((index) => index)?.toList() + }); + } + + /// 更新线宽 + Future updateWidth(int width) async { + if (width < 0) { + return false; + } + + this.width = width; + + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .updateOverlayMemberDispatch(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'width', + 'value': width, + }); + } + + /// 更新索引 + /// + /// Android在以colors渲染的情况下,更新纹理是无效的,应该使用updateColors接口 + Future updateIndexs(List indexs) async { + if (null == indexs) { + return false; + } + + this.indexs = indexs; + + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .updateOverlayMemberDispatch(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'indexs', + 'value': indexs?.map((index) => index)?.toList(), + }); + } + + /// 更新colors + /// + /// android更新colors的时候,必须带上indexs + Future updateColors(List colors, {List indexs}) async { + if (null == colors) { + return false; + } + + this.colors = colors; + + if (null != indexs) { + this.indexs = indexs; + } + + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .updateOverlayMemberDispatch(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'colors', + 'value': colors?.map((color) => color.value.toRadixString(16))?.toList(), + 'indexs': indexs?.map((index) => index)?.toList(), + }); + } + + /// 更新纹理textures (ios暂不支持) + Future updateTextures(List textures) async { + if (null == textures) { + return false; + } + + this.textures = textures; + + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .updateOverlayMemberDispatch(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'textures', + 'value': textures?.map((e) => e)?.toList(), + }); + } + + /// 更新是否设置虚线 + /// + /// Android独有 + Future updateDottedLine(bool dottedLine) async { + this.dottedLine = dottedLine; + + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .updateOverlayMemberDispatch(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'dottedLine', + 'value': dottedLine, + }); + } + + /// 更新折线绘制样式 + /// + /// [BMFLineDashType] lineDashType 折线类型 + Future updateLineDashType(BMFLineDashType lineDashType) async { + this.lineDashType = lineDashType; + + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .updateOverlayMemberDispatch(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'lineDashType', + 'value': lineDashType?.index, + }); + } + + /// 更新折线头尾处理方式 + /// + /// [BMFLineCapType] lineCapType 折线头尾类型 + /// + /// iOS独有 + Future updateLineCapType(BMFLineCapType lineCapType) async { + this.lineCapType = lineCapType; + + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .updateOverlayMemberDispatch(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'lineCapType', + 'value': lineCapType?.index, + }); + } + + /// 更新折线拐角处理方式 + /// + /// [BMFLineJoinType] lineJoinType 折线拐角处理方式 + /// + /// iOS独有 + Future updateLineJoinType(BMFLineJoinType lineJoinType) async { + this.lineJoinType = lineJoinType; + + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .updateOverlayMemberDispatch(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'lineJoinType', + 'value': lineJoinType?.index, + }); + } + + /// 更新polyLine是否可点击 + /// + /// Android独有 + Future updateClickable(bool clickable) async { + this.clickable = clickable; + + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .updateOverlayMemberDispatch(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'clickable', + 'value': clickable, + }); + } + + /// 更新纹理宽、高是否保持原比例渲染 + /// + /// Android独有 + Future updateIsKeepScale(bool isKeepScale) async { + this.isKeepScale = isKeepScale; + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .updateOverlayMemberDispatch(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'isKeepScale', + 'value': isKeepScale, + }); + } + + /// 更新是否可以被选中,获得焦点 + /// + /// Android独有 + Future updateIsFocus(bool isFocus) async { + this.isFocus = isFocus; + + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .updateOverlayMemberDispatch(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'isFocus', + 'value': isFocus, + }); + } + + /// 更新polyline是否显示 + /// + /// Android独有 + Future updateVisible(bool visible) async { + this.visible = visible; + + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .updateOverlayMemberDispatch(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'visible', + 'value': visible, + }); + } + + /// 更新z轴方向上的堆叠顺序 + /// + /// Android独有 + Future updateZIndex(int zIndex) async { + this.zIndex = zIndex; + + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .updateOverlayMemberDispatch(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'zIndex', + 'value': zIndex, + }); + } + + /// 更新polyline是否抽稀 + Future updateThined(bool isThined) async { + this.isThined = isThined; + + return await BMFMapDispatcherFactory.instance + .getOverlayDispatcher() + .updateOverlayMemberDispatch(this.getMethodChannel(), { + 'id': this.getId(), + 'member': 'isThined', + 'value': isThined, + }); + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_text.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_text.dart new file mode 100644 index 0000000..5b37937 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_text.dart @@ -0,0 +1,163 @@ +library bmfmap_map.models.overlays.bmf_text; + +import 'package:flutter/material.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' + show BMFModel, BMFCoordinate, ColorUtil; + +import 'bmf_overlay.dart'; + +/// 文本 +/// +/// Android独有 +class BMFText extends BMFOverlay { + /// 文本 + String text; + + /// text经纬度 + BMFCoordinate position; + + /// 背景色 + Color bgColor; + + /// 字体颜色 + Color fontColor; + + /// 字体大小 + int fontSize; + + /// typeface + BMFTypeFace typeFace; + + /// 文字覆盖物水平对齐方式 ALIGN_LEFT | ALIGN_RIGHT | ALIGN_CENTER_HORIZONTAL + int alignX; + + /// 文字覆盖物垂直对齐方式 ALIGN_TOP | ALIGN_BOTTOM | ALIGN_CENTER_VERTICAL + int alignY; + + /// 旋转角度 + double rotate; + + BMFText.withMap(Map map) { + if (null == map) { + return; + } + + super.fromMap(map); + + this.text = map['text']; + this.position = BMFCoordinate.coordinate().fromMap(map['position']); + this.bgColor = ColorUtil.hexToColor(map['bgColor']); + this.fontColor = ColorUtil.hexToColor(map['fontColor']); + this.fontSize = map['fontSize']; + this.typeFace = BMFTypeFace.bmfTypeFace().fromMap(map['typeFace']); + this.alignX = map['alignX']; + this.alignY = map['alignY']; + this.rotate = map['rotate']; + } + + /// BMFText构造方法 + BMFText( + {@required this.text, + @required this.position, + this.bgColor, + this.fontColor: Colors.blue, + this.fontSize: 12, + this.typeFace, + this.alignY: BMFHorizontalAlign.ALIGN_CENTER_HORIZONTAL, + this.alignX: BMFVerticalAlign.ALIGN_CENTER_VERTICAL, + this.rotate: 0, + int zIndex: 0, + bool visible: true}) + : super(zIndex: zIndex, visible: visible); + + @override + fromMap(Map map) { + if (null == map) { + return null; + } + + return BMFText.withMap(map); + } + + @override + Map toMap() { + return { + 'id': this.getId(), + 'text': this.text, + 'position': this.position?.toMap(), + "bgColor": this.bgColor?.value?.toRadixString(16), + "fontColor": this.fontColor?.value?.toRadixString(16), + "fontSize": this.fontSize, + "typeFace": this.typeFace?.toMap(), + "alignX": this.alignX, + "alignY": this.alignY, + "rotate": this.rotate, + "zIndex": this.zIndex, + 'visible': this.visible, + }; + } +} + +/// Text水平方向上围绕position的对齐方式 +class BMFHorizontalAlign { + /// 文字覆盖物水平对齐方式:左对齐 + static const int ALIGN_LEFT = 1; + + /// 文字覆盖物水平对齐方式:右对齐 + static const int ALIGN_RIGHT = 2; + + /// 文字覆盖物水平对齐方式:水平居中对齐 + static const int ALIGN_CENTER_HORIZONTAL = 4; +} + +/// Text垂直方向上围绕position的对齐方式 +class BMFVerticalAlign { + /// 文字覆盖物垂直对齐方式:上对齐 + static const int ALIGN_TOP = 8; + + /// 文字覆盖物垂直对齐方式:下对齐 + static const int ALIGN_BOTTOM = 16; + + /// 文字覆盖物垂直对齐方式:居中对齐 + static const int ALIGN_CENTER_VERTICAL = 32; +} + +enum BMFTextStyle { + NORMAL, + BOLD, + ITALIC, + BOLD_ITALIC, +} + +class BMFFamilyName { + static const String sDefault = ""; + static const String sSansSerif = "sans-serif"; + static const String sSerif = "serif"; + static const String sMonospace = "monospace"; +} + +/// typeFace +class BMFTypeFace implements BMFModel { + static BMFTypeFace bmfTypeFace() => + BMFTypeFace(familyName: null, textStype: BMFTextStyle.NORMAL); + + String familyName; + BMFTextStyle textStype; + + BMFTypeFace({@required this.familyName, @required this.textStype}); + + @override + fromMap(Map map) { + if (null == map) { + return null; + } + return new BMFTypeFace( + familyName: map['familyName'], + textStype: BMFTextStyle.values[map['textStype'] as int]); + } + + @override + Map toMap() { + return {"familyName": this.familyName, "textStype": this.textStype.index}; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_tile.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_tile.dart new file mode 100644 index 0000000..555fa94 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/models/overlays/bmf_tile.dart @@ -0,0 +1,100 @@ +library bmfmap_map.models.overlays.bmf_tile; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' + show BMFCoordinateBounds; + +import 'bmf_overlay.dart'; + +/// 枚举:瓦片图加载方式 +enum BMFTileLoadType { + /// 网络加载,取该值时BMFTile必须传url + LoadUrlTile, + + /// 本地异步加载 + LoadLocalAsyncTile, + + /// 本地同步加载 + /// + /// Android没有该选项 + LoadLocalSyncTile, +} + +/// 瓦片图 +class BMFTile extends BMFOverlay { + static BMFTile tile() => BMFTile( + visibleMapBounds: null, tileLoadType: BMFTileLoadType.LoadLocalAsyncTile); + + /// 瓦片图最大放大级别,android平台默认为20,其它平台默认为21 + int maxZoom; + + /// 瓦片图最小缩放级别,默认3 + int minZoom; + + /// tileOverlay的可渲染区域,默认世界范围 + BMFCoordinateBounds visibleMapBounds; + + /// 瓦片图缓存大小,android端需要,ios端暂时不需要 + int maxTileTmp; + + /// 瓦片图加载类型 + BMFTileLoadType tileLoadType; + + /// 可选的参数,只有tileLoadType为LoadUrlTile时才有效 + String url; + + /// BMFTile构造方法 + BMFTile( + {@required this.visibleMapBounds, + @required this.tileLoadType, + this.maxZoom, + this.minZoom, + this.maxTileTmp, + this.url}); + + BMFTile.withMap(Map map) { + if (null == map) { + return; + } + + super.fromMap(map); + + this.maxZoom = map['maxZoom']; + this.minZoom = map['minZoom']; + this.visibleMapBounds = + BMFCoordinateBounds.coordinateBounds().fromMap(map['visibleMapBounds']); + this.maxTileTmp = map['maxTileTmp']; + + int tileLoadType = map['tileLoadType'] as int; + + if (null != tileLoadType && + tileLoadType >= 0 && + tileLoadType < BMFTileLoadType.values.length) { + this.tileLoadType = BMFTileLoadType.values[tileLoadType]; + } + + this.url = map['url']; + } + + @override + fromMap(Map map) { + if (null == map) { + return null; + } + + return BMFTile.withMap(map); + } + + @override + Map toMap() { + return { + 'id': this.getId(), + 'maxZoom': this.maxZoom, + 'minZoom': this.minZoom, + 'visibleMapBounds': this.visibleMapBounds?.toMap(), + 'maxTileTmp': this.maxTileTmp, + 'tileLoadType': this.tileLoadType?.index, + 'url': this.url + }; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/bmf_method_channel_handler.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/bmf_method_channel_handler.dart new file mode 100644 index 0000000..7906bc4 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/bmf_method_channel_handler.dart @@ -0,0 +1,518 @@ +import 'package:flutter/services.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_baseindoormap_info.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_mappoi.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_mapstatus.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_polyline.dart'; +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_map_method_id.dart'; + +/// 地图无参数回调 +typedef BMFMapCallback = void Function(); + +/// 地图成功回调 +typedef BMFMapSuccessCallback = void Function(bool success); + +/// 地图区域改变回调 +typedef BMFMapRegionChangeCallback = void Function(BMFMapStatus mapStatus); + +/// 地图区域改变原因回调 +typedef BMFMapRegionChangeReasonCallback = void Function( + BMFMapStatus mapStatus, BMFRegionChangeReason regionChangeReason); + +/// 点中底图标注后会回调此接口 +typedef BMFMapOnClickedMapPoiCallback = void Function(BMFMapPoi mapPoi); + +/// 地图marker事件回调 +typedef BMFMapMarkerCallback = void Function(String markerId, dynamic extra); + +/// 地图点击覆盖物回调,目前只支持polyline +typedef BMFMapOnClickedOverlayCallback = void Function(BMFPolyline polyline); + +/// 地图经纬度回调 +typedef BMFMapCoordinateCallback = void Function(BMFCoordinate coordinate); + +/// 地图3DTouch回调 +/// +/// coordinate 触摸点的经纬度 +/// +/// force 触摸该点的力度(参考UITouch的force属性) +/// +/// maximumPossibleForce 当前输入机制下的最大可能力度(参考UITouch的maximumPossibleForce属性) +typedef BMFMapOnForceTouchCallback = void Function( + BMFCoordinate coordinate, double force, double maximumPossibleForce); + +/// 地图渲染每一帧画面过程中,以及每次需要重绘地图时(例如添加覆盖物)都会调用此接口 +typedef BMFMapOnDrawMapFrameCallback = void Function(BMFMapStatus mapStatus); + +/// 地图View进入/移出室内图会调用此方法 +/// +/// flag true:进入室内图,false:移出室内图 +/// +/// baseIndoorMapInfo 室内图信息 +typedef BMFMapInOrOutBaseIndoorMapCallback = void Function( + bool flag, BMFBaseIndoorMapInfo baseIndoorMapInfo); + +/// 地图绘制出有效数据的监听 +typedef BMFMapRenderValidDataCallback = void Function( + bool isValid, int errorCode, String errorMessage); + +///处理native发送过来的消息 +class BMFMethodChannelHandler { + static const sTag = 'BMFMethodChannelHandler'; + + /// 加载完成回调 + BMFMapCallback _mapDidLoadCallback; + + /// 渲染完成回调 + BMFMapSuccessCallback _mapDidFinishRenderCallback; + + /// 地图渲染每一帧画面过程中,以及每次需要重绘地图时(例如添加覆盖物)都会调用此接口 + BMFMapOnDrawMapFrameCallback _mapOnDrawMapFrameCallback; + + /// 两端类型不一致,Android返回的是MapStatus状态,ios没有返回参数 + /// + /// 地图区域即将改变时会调用此接口 + BMFMapRegionChangeCallback _mapRegionWillChangeCallback; + + /// 两端类型不一致,Android返回的是MapStatus状态,ios没有返回参数 + /// + /// 地图区域改变完成后会调用此接口 + BMFMapRegionChangeCallback _mapRegionDidChangeCallback; + + /// 两端类型不一致,Android返回的是MapStatus状态,ios没有返回参数 + /// + /// 地图区域即将改变时会调用此接口reason + BMFMapRegionChangeReasonCallback _mapRegionWillChangeWithReasonCallback; + + /// 两端类型不一致,Android返回的是MapStatus状态,ios没有返回参数 + /// + /// 地图区域改变完成后会调用此接口reason + BMFMapRegionChangeReasonCallback _mapRegionDidChangeWithReasonCallback; + + /// 点中覆盖物后会回调此接口,目前只支持点中Polyline时回调 + BMFMapOnClickedOverlayCallback _mapOnClickedOverlayCallback; + + /// 点中底图标注后会回调此接口 + BMFMapOnClickedMapPoiCallback _mapOnClickedMapPoiCallback; + + /// 点中底图空白处会回调此接口 + BMFMapCoordinateCallback _mapOnClickedMapBlankCallback; + + /// 双击地图时会回调此接口 + BMFMapCoordinateCallback _mapOnDoubleClickCallback; + + /// 长按地图时会回调此接口 + BMFMapCoordinateCallback _mapOnLongClickCallback; + + /// (ios) 独有 + /// + /// 3DTouch 按地图时会回调此接口 + /// + ///(仅在支持3D Touch,且fouchTouchEnabled属性为true时,会回调此接口) + BMFMapOnForceTouchCallback _mapOnForceTouchCallback; + + /// 地图状态改变完成后会调用此接口 + BMFMapCallback _mapStatusDidChangedCallback; + + /// 地图View进入/移出室内图会调用此方法 + BMFMapInOrOutBaseIndoorMapCallback _mapInOrOutBaseIndoorMapCallback; + + //marker + /// marker点击回调 + BMFMapMarkerCallback _mapClickedMarkerCallback; + + /// marker选中回调 + BMFMapMarkerCallback _mapDidSelectMarkerCallback; + + /// marker取消选中回调 + BMFMapMarkerCallback _mapDidDeselectMarkerCallback; + + /// marker取消选中回调 + BMFMapMarkerCallback _mapDragMarkerCallback; + + /// marker的infoWindow(ios paopaoView)点击回调 + BMFMapMarkerCallback _mapDidClickedInfoWindowCallback; + + /// 地图绘制出有效数据的监听 + BMFMapRenderValidDataCallback _mapRenderValidDataCallback; + + /// native -> flutter + dynamic handlerMethod(MethodCall call) async { +// BMFLog.d('_handlerMethod--\n method = ${call.method}'); +// BMFLog.d('_handlerMethod--\n arguments = ${call.arguments}'); + switch (call.method) { + case BMFMapCallbackMethodId.kMapDidLoadCallback: + { + if (this._mapDidLoadCallback != null) { + this._mapDidLoadCallback(); + } + break; + } + + case BMFMapCallbackMethodId.kMapDidFinishRenderCallback: + { + // BMFLog.d("kMapDidFinishRenderCallback"); + if (this._mapDidFinishRenderCallback != null) { + this._mapDidFinishRenderCallback(call.arguments['success'] as bool); + } + break; + } + case BMFMapCallbackMethodId.kMapOnDrawMapFrameCallback: + { + if (this._mapOnDrawMapFrameCallback != null) { + BMFMapStatus mapStatus = + BMFMapStatus.mapStatus().fromMap(call.arguments['mapStatus']); + this._mapOnDrawMapFrameCallback(mapStatus); + } + break; + } + case BMFMapCallbackMethodId.kMapRegionWillChangeCallback: + { + if (this._mapRegionWillChangeCallback != null) { + BMFMapStatus mapStatus = + BMFMapStatus.mapStatus().fromMap(call.arguments['mapStatus']); + this._mapRegionWillChangeCallback(mapStatus); + } + break; + } + case BMFMapCallbackMethodId.kMapRegionDidChangeCallback: + { + if (this._mapRegionDidChangeCallback != null) { + BMFMapStatus mapStatus = + BMFMapStatus.mapStatus().fromMap(call.arguments['mapStatus']); + this._mapRegionDidChangeCallback(mapStatus); + } + break; + } + case BMFMapCallbackMethodId.kMapRegionWillChangeWithReasonCallback: + { + if (this._mapRegionWillChangeWithReasonCallback != null) { + BMFMapStatus mapStatus = + BMFMapStatus.mapStatus().fromMap(call.arguments['mapStatus']); + BMFRegionChangeReason reason = + BMFRegionChangeReason.values[call.arguments['reason'] as int]; + this._mapRegionWillChangeWithReasonCallback(mapStatus, reason); + } + break; + } + case BMFMapCallbackMethodId.kMapRegionDidChangeWithReasonCallback: + { + if (this._mapRegionDidChangeWithReasonCallback != null) { + BMFMapStatus mapStatus = + BMFMapStatus.mapStatus().fromMap(call.arguments['mapStatus']); + BMFRegionChangeReason reason = + BMFRegionChangeReason.values[call.arguments['reason'] as int]; + this._mapRegionDidChangeWithReasonCallback(mapStatus, reason); + } + break; + } + case BMFOverlayCallbackMethodId.kMapOnClickedOverlayCallback: + { + if (this._mapOnClickedOverlayCallback != null) { + BMFPolyline polyline = + BMFPolyline.polyline().fromMap(call.arguments['polyline']); + this._mapOnClickedOverlayCallback(polyline); + } + break; + } + case BMFMapCallbackMethodId.kMapOnClickedMapPoiCallback: + { + if (this._mapOnClickedMapPoiCallback != null) { + BMFMapPoi poi = BMFMapPoi.mapPoi().fromMap(call.arguments['poi']); + this._mapOnClickedMapPoiCallback(poi); + } + break; + } + case BMFMapCallbackMethodId.kMapOnClickedMapBlankCallback: + { + if (this._mapOnClickedMapBlankCallback != null) { + BMFCoordinate coordinate = + BMFCoordinate.coordinate().fromMap(call.arguments['coord']); + this._mapOnClickedMapBlankCallback(coordinate); + } + break; + } + case BMFMapCallbackMethodId.kMapOnDoubleClickCallback: + { + if (this._mapOnDoubleClickCallback != null) { + BMFCoordinate coordinate = + BMFCoordinate.coordinate().fromMap(call.arguments['coord']); + this._mapOnDoubleClickCallback(coordinate); + } + break; + } + case BMFMapCallbackMethodId.kMapOnLongClickCallback: + { + if (this._mapOnLongClickCallback != null) { + BMFCoordinate coordinate = + BMFCoordinate.coordinate().fromMap(call.arguments['coord']); + this._mapOnLongClickCallback(coordinate); + } + break; + } + case BMFMapCallbackMethodId.kMapOnForceTouchCallback: + { + if (this._mapOnForceTouchCallback != null) { + BMFCoordinate coordinate = + BMFCoordinate.coordinate().fromMap(call.arguments['coord']); + double force = call.arguments['force'] as double; + double maximumPossibleForce = + call.arguments['maximumPossibleForce'] as double; + this._mapOnForceTouchCallback( + coordinate, force, maximumPossibleForce); + } + break; + } + case BMFMapCallbackMethodId.kMapStatusDidChangedCallback: + { + if (this._mapStatusDidChangedCallback != null) { + this._mapStatusDidChangedCallback(); + } + break; + } + case BMFMapCallbackMethodId.kMapInOrOutBaseIndoorMapCallback: + { + if (this._mapInOrOutBaseIndoorMapCallback != null) { + bool flag = call.arguments['flag']; + BMFBaseIndoorMapInfo info = BMFBaseIndoorMapInfo.baseIndoorMapInfo() + .fromMap(call.arguments['info']); + this._mapInOrOutBaseIndoorMapCallback(flag, info); + } + break; + } + case BMFMarkerCallbackMethodId.kMapClickedmarkedCallback: + { + if (this._mapClickedMarkerCallback != null) { + BMFLog.d(BMFMarkerCallbackMethodId.kMapClickedmarkedCallback); + String id = call.arguments['id']; + Map extra = call.arguments['extra']; + this._mapClickedMarkerCallback(id, extra); + } + break; + } + case BMFMarkerCallbackMethodId.kMapDidSelectMarkerCallback: + { + if (this._mapDidSelectMarkerCallback != null) { + String id = call.arguments['id']; + Map extra = call.arguments['extra']; + this._mapDidSelectMarkerCallback(id, extra); + } + break; + } + case BMFMarkerCallbackMethodId.kMapDidDeselectMarkerCallback: + { + if (this._mapDidDeselectMarkerCallback != null) { + String id = call.arguments['id']; + Map extra = call.arguments['extra']; + this._mapDidDeselectMarkerCallback(id, extra); + } + break; + } + case BMFMarkerCallbackMethodId.kMapDragMarkerCallback: + { + if (this._mapDragMarkerCallback != null) { + BMFLog.d("drag marker", tag: sTag); + String id = call.arguments['id']; + this._mapDragMarkerCallback(id, call.arguments['extra']); + } + break; + } + case BMFInfoWindowMethodId.kMapDidClickedInfoWindowMethod: + { + if (this._mapDidClickedInfoWindowCallback != null) { + BMFLog.d("infoWindow click", tag: 'BMFMethodChannelHandler'); + String id = call.arguments['id']; + BMFLog.d(id, tag: 'BMFMethodChannelHandler'); + this._mapDidClickedInfoWindowCallback(id, null); + } + break; + } + + case BMFMapCallbackMethodId.kMapRenderValidDataCallback: + { + if (this._mapRenderValidDataCallback != null) { + bool isValid = call.arguments['isValid'] as bool; + int errorCode = call.arguments['errorCode'] as int; + String errorMessage = call.arguments['errorMessage'] as String; + this._mapRenderValidDataCallback(isValid, errorCode, errorMessage); + } + break; + } + default: + break; + } + } + + /// 地图加载完成回调 + void setMapDidLoadCallback(BMFMapCallback block) { + if (block == null) { + return; + } + this._mapDidLoadCallback = block; + } + + /// 地图渲染回调 + void setMapDidFinishedRenderCallback(BMFMapSuccessCallback block) { + if (block == null) { + return; + } + this._mapDidFinishRenderCallback = block; + } + + /// 地图渲染每一帧画面过程中,以及每次需要重绘地图时(例如添加覆盖物)都会调用此接口 + void setMapOnDrawMapFrameCallback(BMFMapOnDrawMapFrameCallback block) { + if (block == null) { + return; + } + this._mapOnDrawMapFrameCallback = block; + } + + /// 地图区域即将改变时会调用此接口 + void setMapRegionWillChangeCallback(BMFMapRegionChangeCallback block) { + if (block == null) { + return; + } + this._mapRegionWillChangeCallback = block; + } + + /// 地图区域改变完成后会调用此接口 + void setMapRegionDidChangeCallback(BMFMapRegionChangeCallback block) { + if (block == null) { + return; + } + this._mapRegionDidChangeCallback = block; + } + + /// 地图区域即将改变时会调用此接口reason + void setMapRegionWillChangeWithReasonCallback( + BMFMapRegionChangeReasonCallback block) { + if (block == null) { + return; + } + this._mapRegionWillChangeWithReasonCallback = block; + } + + /// 地图区域改变完成后会调用此接口reason + void setMapRegionDidChangeWithReasonCallback( + BMFMapRegionChangeReasonCallback block) { + if (block == null) { + return; + } + this._mapRegionDidChangeWithReasonCallback = block; + } + + /// 地图点击覆盖物回调,目前只支持polyline + void setMapOnClickedOverlayCallback(BMFMapOnClickedOverlayCallback block) { + if (block == null) { + return; + } + this._mapOnClickedOverlayCallback = block; + } + + /// 点中底图标注后会回调此接口 + void setMapOnClickedMapPoiCallback(BMFMapOnClickedMapPoiCallback block) { + if (block == null) { + return; + } + this._mapOnClickedMapPoiCallback = block; + } + + /// 点中底图空白处会回调此接口 + void setMapOnClickedMapBlankCallback(BMFMapCoordinateCallback block) { + if (block == null) { + return; + } + this._mapOnClickedMapBlankCallback = block; + } + + /// 双击地图时会回调此接口 + void setMapOnDoubleClickCallback(BMFMapCoordinateCallback block) { + if (block == null) { + return; + } + this._mapOnDoubleClickCallback = block; + } + + /// 长按地图时会回调此接口 + void setMapOnLongClickCallback(BMFMapCoordinateCallback block) { + if (block == null) { + return; + } + this._mapOnLongClickCallback = block; + } + + /// 3DTouch 按地图时会回调此接口 + /// + ///(仅在支持3D Touch,且fouchTouchEnabled属性为true时,会回调此接口) + void setMapOnForceTouchCallback(BMFMapOnForceTouchCallback block) { + if (block == null) { + return; + } + this._mapOnForceTouchCallback = block; + } + + /// 地图状态改变完成后会调用此接口 + void setMapStatusDidChangedCallback(BMFMapCallback block) { + if (block == null) { + return; + } + this._mapStatusDidChangedCallback = block; + } + + /// 设置地图View进入/移出室内图回调 + void setMapInOrOutBaseIndoorMapCallback( + BMFMapInOrOutBaseIndoorMapCallback block) { + if (block == null) { + return; + } + this._mapInOrOutBaseIndoorMapCallback = block; + } + + /// 设置marker点击回调 + void setMapClickedMarkerCallback(BMFMapMarkerCallback block) { + if (block == null) { + return; + } + this._mapClickedMarkerCallback = block; + } + + /// 设置marker选中回调 + void setMaptDidSelectMarkerCallback(BMFMapMarkerCallback block) { + if (block == null) { + return; + } + this._mapDidSelectMarkerCallback = block; + } + + /// 设置marker取消回调 + void setMapDidDeselectMarkerCallback(BMFMapMarkerCallback block) { + if (block == null) { + return; + } + this._mapDidDeselectMarkerCallback = block; + } + + /// 设置marker拖拽回调 + void setMapDragMarkerCallback(BMFMapMarkerCallback block) { + if (block == null) { + return; + } + this._mapDragMarkerCallback = block; + } + + /// 设置marker的infoWindow(iOS paopaoView)点击回调 + void setMapDidClickedInfoWindowCallback(BMFMapMarkerCallback block) { + if (block == null) { + return; + } + this._mapDidClickedInfoWindowCallback = block; + } + + /// 设置地图绘制出有效数据的监听 + void setMapRenderValidDataCallback(BMFMapRenderValidDataCallback block) { + if (block == null) { + return; + } + this._mapRenderValidDataCallback = block; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_dispatcher_factory.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_dispatcher_factory.dart new file mode 100644 index 0000000..dcb00b2 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_dispatcher_factory.dart @@ -0,0 +1,61 @@ +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_map_get_state_dispacther.dart'; +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_map_state_dispacther.dart'; +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_map_widget_state_dispather.dart'; +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_marker_dispatcher.dart'; +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_offline_map_dispatcher.dart'; +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_overlay_dispatcher.dart'; +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_userlocation_dispatcher.dart'; + +class BMFMapDispatcherFactory { + // 工厂模式 + factory BMFMapDispatcherFactory() => _getInstance(); + static BMFMapDispatcherFactory get instance => _getInstance(); + static BMFMapDispatcherFactory _instance; + + BMFMapStateDispatcher _mapStateDispatcher; + BMFMapGetStateDispatcher _mapGetStateDispatcher; + BMFMapUserLocationDispatcher _mapUserLocationDispatcher; + BMFMarkerDispatcher _markerDispatcher; + BMFOverlayDispatcher _overlayDispatcher; + BMFOfflineMapDispatcher _offlineMapDispatcher; + BMFMapWidgetStateDispatcher _mapWidgetStateDispatcher; + + BMFMapDispatcherFactory._internal() { + _mapStateDispatcher = new BMFMapStateDispatcher(); + _mapGetStateDispatcher = new BMFMapGetStateDispatcher(); + _mapUserLocationDispatcher = new BMFMapUserLocationDispatcher(); + _markerDispatcher = new BMFMarkerDispatcher(); + _overlayDispatcher = new BMFOverlayDispatcher(); + _offlineMapDispatcher = new BMFOfflineMapDispatcher(); + _mapWidgetStateDispatcher = new BMFMapWidgetStateDispatcher(); + } + static BMFMapDispatcherFactory _getInstance() { + if (_instance == null) { + _instance = new BMFMapDispatcherFactory._internal(); + } + return _instance; + } + + /// mapStateDispatcher + BMFMapStateDispatcher getMapStateDispatcher() => _mapStateDispatcher; + + // mapGetStateDispatcher + BMFMapGetStateDispatcher getMapGetStateDispatcher() => _mapGetStateDispatcher; + + /// mapUserLocationDispatcher + BMFMapUserLocationDispatcher getMapUserLocationDispatcher() => + _mapUserLocationDispatcher; + + /// markerDispatcher + BMFMarkerDispatcher getMarkerDispatcher() => _markerDispatcher; + + /// overlayDispatcher + BMFOverlayDispatcher getOverlayDispatcher() => _overlayDispatcher; + + /// offlineMapDispatcher + BMFOfflineMapDispatcher getOfflineMapDispatcher() => _offlineMapDispatcher; + + /// widgetStateDispatcher + BMFMapWidgetStateDispatcher getMapWidgetStateDispatcher() => + _mapWidgetStateDispatcher; +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_get_state_dispacther.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_get_state_dispacther.dart new file mode 100644 index 0000000..5fa1af4 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_get_state_dispacther.dart @@ -0,0 +1,416 @@ +import 'package:flutter/services.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart'; +import 'bmf_map_method_id.dart' show BMFMapGetPropertyMethodId; + +/// 获取地图状态 +class BMFMapGetStateDispatcher { + /// 获取map的展示类型 + Future getMapTypeDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + BMFMapType mapType; + try { + Map result = await _mapChannel + .invokeMethod(BMFMapGetPropertyMethodId.kMapGetMapTypeMethod); + mapType = BMFMapType.values[result['mapType'] as int]; + } on PlatformException catch (e) { + print(e.toString()); + } + return mapType; + } + + /// 获取map的比例尺级别 + Future getZoomLevelDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + int zoomLevel; + try { + Map result = await _mapChannel + .invokeMethod(BMFMapGetPropertyMethodId.kMapGetZoomLevelMethod); + zoomLevel = result['zoomLevel'] as int; + } on PlatformException catch (e) { + print(e.toString()); + } + return zoomLevel; + } + + /// 获取map的自定义最小比例尺级别 + Future getMinZoomLevelDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + int minZoomLevel; + try { + Map result = await _mapChannel + .invokeMethod(BMFMapGetPropertyMethodId.kMapGetMinZoomLevelMethod); + minZoomLevel = result['minZoomLevel'] as int; + } on PlatformException catch (e) { + print(e.toString()); + } + return minZoomLevel; + } + + /// 获取map的自定义最大比例尺级别 + Future getMaxZoomLevelDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + int maxZoomLevel; + try { + Map result = await _mapChannel + .invokeMethod(BMFMapGetPropertyMethodId.kMapGetMaxZoomLevelMethod); + maxZoomLevel = result['maxZoomLevel'] as int; + } on PlatformException catch (e) { + print(e.toString()); + } + return maxZoomLevel; + } + + /// 获取map的旋转角度 + Future getRotationDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + double rotation; + try { + Map result = await _mapChannel + .invokeMethod(BMFMapGetPropertyMethodId.kMapGetRotationMethod); + rotation = result['rotation'] as double; + } on PlatformException catch (e) { + print(e.toString()); + } + return rotation; + } + + /// 获取map的地图俯视角度 + Future getOverlookingDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + double overlooking; + try { + Map result = await _mapChannel + .invokeMethod(BMFMapGetPropertyMethodId.kMapGetOverlookingMethod); + overlooking = result['overlooking'] as double; + } on PlatformException catch (e) { + print(e.toString()); + } + return overlooking; + } + + /// 获取map的俯视角度最小值 + /// + /// ios 独有 + Future getMinOverlookingDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + int minOverlooking; + try { + Map result = await _mapChannel + .invokeMethod(BMFMapGetPropertyMethodId.kMapGetMinOverlookingMethod); + minOverlooking = result['minOverlooking'] as int; + } on PlatformException catch (e) { + print(e.toString()); + } + return minOverlooking; + } + + /// 获取map的是否现显示3D楼块效果 + Future getBuildingsEnabledDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + bool buildingsEnabled; + try { + Map result = await _mapChannel.invokeMethod( + BMFMapGetPropertyMethodId.kMapGetBuildingsEnabledMethod); + buildingsEnabled = result['buildingsEnabled'] as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return buildingsEnabled; + } + + /// 获取map的是否显示底图poi标注 + /// + /// ios 独有 + Future getShowMapPoiDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + bool showMapPoi; + try { + Map result = await _mapChannel + .invokeMethod(BMFMapGetPropertyMethodId.kMapGetShowMapPoiMethod); + showMapPoi = result['showMapPoi'] as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return showMapPoi; + } + + /// 获取map的是否打开路况图层 + Future getTrafficEnabledDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + bool trafficEnabled; + try { + Map result = await _mapChannel + .invokeMethod(BMFMapGetPropertyMethodId.kMapGetTrafficEnabledMethod); + trafficEnabled = result['trafficEnabled'] as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return trafficEnabled; + } + + /// 获取map的是否打开百度城市热力图图层 + Future getBaiduHeatMapEnabledDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + bool baiduHeatMapEnabled; + try { + Map result = await _mapChannel.invokeMethod( + BMFMapGetPropertyMethodId.kMapGetBaiduHeatMapEnabledMethod); + baiduHeatMapEnabled = result['baiduHeatMapEnabled'] as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return baiduHeatMapEnabled; + } + + /// 获取map的是否支持所有手势操作 + Future getGesturesEnabledDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + bool gesturesEnabled; + try { + Map result = await _mapChannel + .invokeMethod(BMFMapGetPropertyMethodId.kMapGetGesturesEnabledMethod); + gesturesEnabled = result['gesturesEnabled'] as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return gesturesEnabled; + } + + /// 获取map的是否支持用户多点缩放(双指) + /// + /// android 中效果是否允许缩放手势包括(双击,双指单击,双指缩放) + Future getZoomEnabledDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + bool zoomEnabled; + try { + Map result = await _mapChannel + .invokeMethod(BMFMapGetPropertyMethodId.kMapGetZoomEnabledMethod); + zoomEnabled = result['zoomEnabled'] as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return zoomEnabled; + } + + /// 获取map的是否支持用户缩放(双击或双指单击) + /// + /// ios 独有 + Future getZoomEnabledWithTapDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + bool zoomEnabledWithTap; + try { + Map result = await _mapChannel.invokeMethod( + BMFMapGetPropertyMethodId.kMapGetZoomEnabledWithTapMethod); + zoomEnabledWithTap = result['zoomEnabledWithTap'] as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return zoomEnabledWithTap; + } + + /// 获取map的是否支持用户移动地图 + Future getScrollEnabledDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + bool scrollEnabled; + try { + Map result = await _mapChannel + .invokeMethod(BMFMapGetPropertyMethodId.kMapGetScrollEnabledMethod); + scrollEnabled = result['scrollEnabled'] as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return scrollEnabled; + } + + /// 获取map的是否支持俯仰角 + Future getOverlookEnabledDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + bool overlookEnabled; + try { + Map result = await _mapChannel + .invokeMethod(BMFMapGetPropertyMethodId.kMapGetOverlookEnabledMethod); + overlookEnabled = result['overlookEnabled'] as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return overlookEnabled; + } + + /// 获取map的是否支持旋转 + Future getRotateEnabledDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + bool rotateEnabled; + try { + Map result = await _mapChannel + .invokeMethod(BMFMapGetPropertyMethodId.kMapGetRotateEnabledMethod); + rotateEnabled = result['rotateEnabled'] as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return rotateEnabled; + } + + /// 获取map的是否支持3Dtouch + /// + /// ios 独有 + Future getForceTouchEnabledDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + bool forceTouchEnabled; + try { + Map result = await _mapChannel.invokeMethod( + BMFMapGetPropertyMethodId.kMapGetForceTouchEnabledMethod); + forceTouchEnabled = result['forceTouchEnabled'] as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return forceTouchEnabled; + } + + /// 获取map的是否显式比例尺 + /// + /// ios 独有 + Future getShowMapScaleBarDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + bool showMapScaleBar; + try { + Map result = await _mapChannel + .invokeMethod(BMFMapGetPropertyMethodId.kMapGetShowMapScaleBarMethod); + showMapScaleBar = result['showMapScaleBar'] as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return showMapScaleBar; + } + + /// 获取map的比例尺的位置 + Future getMapScaleBarPositionDispatch( + MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + BMFPoint mapScaleBarPosition; + try { + Map result = await _mapChannel.invokeMethod( + BMFMapGetPropertyMethodId.kMapGetMapScaleBarPositionMethod); + if (null == result) { + return null; + } + mapScaleBarPosition = + BMFPoint.point().fromMap(result['mapScaleBarPosition']) as BMFPoint; + } on PlatformException catch (e) { + print(e.toString()); + } + return mapScaleBarPosition; + } + + /// 获取map的logo位置 + Future getLogoPositionDispatch( + MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + BMFLogoPosition logoPosition; + try { + Map result = await _mapChannel + .invokeMethod(BMFMapGetPropertyMethodId.kMapGetLogoPositionMethod); + if (null == result) { + return null; + } + logoPosition = BMFLogoPosition.values[result['logoPosition'] as int]; + } on PlatformException catch (e) { + print(e.toString()); + } + return logoPosition; + } + + /// 获取map的可视范围 + Future getVisibleMapBoundsDispatch( + MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + BMFCoordinateBounds visibleMapBounds; + try { + Map result = await _mapChannel.invokeMethod( + BMFMapGetPropertyMethodId.kMapGetVisibleMapBoundsMethod); + visibleMapBounds = BMFCoordinateBounds.coordinateBounds() + .fromMap(result['visibleMapBounds']) as BMFCoordinateBounds; + } on PlatformException catch (e) { + print(e.toString()); + } + return visibleMapBounds; + } + + /// 获取map的显示室内图 + Future getBaseIndoorMapEnabledDispatch( + MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + bool baseIndoorMapEnabled; + try { + Map result = await _mapChannel.invokeMethod( + BMFMapGetPropertyMethodId.kMapGetBaseIndoorMapEnabledMethod); + baseIndoorMapEnabled = result['baseIndoorMapEnabled'] as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return baseIndoorMapEnabled; + } + + /// 获取map的室内图标注是否显示 + /// + /// ios 独有 + Future getShowIndoorMapPoiDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + bool showIndoorMapPoi; + try { + Map result = await _mapChannel.invokeMethod( + BMFMapGetPropertyMethodId.kMapGetShowIndoorMapPoiMethod); + showIndoorMapPoi = result['showIndoorMapPoi'] as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return showIndoorMapPoi; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_method_id.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_method_id.dart new file mode 100644 index 0000000..36d13af --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_method_id.dart @@ -0,0 +1,469 @@ +/// 用于methodChannel合native的方法id约定 + +/// 地图状态方法ID集合 +class BMFMapStateMethodId { + /// 更新地图参数 + static const kMapUpdateMethod = 'flutter_bmfmap/map/updateMapOptions'; + + /// map放大一级比例尺 + static const kMapZoomInMethod = 'flutter_bmfmap/map/zoomIn'; + + /// map缩小一级比例尺 + static const kMapZoomOutMethod = 'flutter_bmfmap/map/zoomOut'; + + /// 设置路况颜色 + static const kMapSetCustomTrafficColorMethod = + 'flutter_bmfmap/map/setCustomTrafficColor'; + + /// 更新地图状态 + static const kMapSetMapStatusMethod = 'flutter_bmfmap/map/setMapStatus'; + + /// 获取地图状态 + static const kMapGetMapStatusMethod = 'flutter_bmfmap/map/getMapStatus'; + + /// 按像素移动地图中心点 + static const kMapSetScrollByMethod = 'flutter_bmfmap/map/setScrollBy'; + + /// 根据给定增量缩放地图级别 + static const kMapSetZoomByMethod = 'flutter_bmfmap/map/setZoomBy'; + + /// 设置地图缩放级别 + static const kMapSetZoomToMethod = 'flutter_bmfmap/map/setZoomTo'; + + /// 根据给定增量以及给定的屏幕坐标缩放地图级别 + static const kMapSetZoomPointByMethod = 'flutter_bmfmap/map/setZoomPointBy'; + + /// 设定地图中心点坐标 + static const kMapSetCenterCoordinateMethod = + 'flutter_bmfmap/map/setCenterCoordinate'; + + /// 设置地图中心点以及缩放级别 + static const kMapSetCenterZoomMethod = 'flutter_bmfmap/map/setMapCenterZoom'; + + /// 获得地图当前可视区域截图 + static const kMapTakeSnapshotMethod = 'flutter_bmfmap/map/takeSnapshot'; + + /// 获得地图指定区域截图 + static const kMapTakeSnapshotWithRectMethod = + 'flutter_bmfmap/map/takeSnapshotWithRect'; + + /// 设置罗盘的图片 + static const kMapSetCompassImageMethod = 'flutter_bmfmap/map/setCompassImage'; + + /// 设置显示在屏幕中的地图地理范围 + static const kMapSetVisibleMapBoundsMethod = + 'flutter_bmfmap/map/setVisibleMapBounds'; + + /// 设定地图的显示范围,并使mapRect四周保留insets指定的边界区域 + static const kMapSetVisibleMapBoundsWithPaddingMethod = + 'flutter_bmfmap/map/setVisibleMapBoundsWithPadding'; +} + +/// 地图获取属性方法id集合 +class BMFMapGetPropertyMethodId { + /// 获取map的展示类型 + static const kMapGetMapTypeMethod = 'flutter_bmfmap/map/getMapType'; + + /// 获取map的比例尺级别 + static const kMapGetZoomLevelMethod = 'flutter_bmfmap/map/getZoomLevel'; + + /// 获取map的自定义最小比例尺级别 + static const kMapGetMinZoomLevelMethod = 'flutter_bmfmap/map/getMinZoomLevel'; + + /// 获取map的自定义最大比例尺级别 + static const kMapGetMaxZoomLevelMethod = 'flutter_bmfmap/map/getMaxZoomLevel'; + + /// 获取map的旋转角度 + static const kMapGetRotationMethod = 'flutter_bmfmap/map/getRotation'; + + /// 获取map的地图俯视角度 + static const kMapGetOverlookingMethod = 'flutter_bmfmap/map/getOverlooking'; + + /// 获取map的俯视角度最小值 + static const kMapGetMinOverlookingMethod = + 'flutter_bmfmap/map/getMinOverlooking'; + + /// 获取map的是否现显示3D楼块效果 + static const kMapGetBuildingsEnabledMethod = + 'flutter_bmfmap/map/getBuildingsEnabled'; + + /// 获取map的是否显示底图poi标注 + static const kMapGetShowMapPoiMethod = 'flutter_bmfmap/map/getShowMapPoi'; + + /// 获取map的是否打开路况图层 + static const kMapGetTrafficEnabledMethod = + 'flutter_bmfmap/map/getTrafficEnabled'; + + /// 获取map的是否打开百度城市热力图图层 + static const kMapGetBaiduHeatMapEnabledMethod = + 'flutter_bmfmap/map/getBaiduHeatMapEnabled'; + + /// 获取map的是否支持所有手势操作 + static const kMapGetGesturesEnabledMethod = + 'flutter_bmfmap/map/getGesturesEnabled'; + + /// 获取map的是否支持用户多点缩放(双指) + static const kMapGetZoomEnabledMethod = 'flutter_bmfmap/map/getZoomEnabled'; + + /// 获取map的是否支持用户缩放(双击或双指单击) + static const kMapGetZoomEnabledWithTapMethod = + 'flutter_bmfmap/map/getZoomEnabledWithTap'; + + /// 获取map的是否支持用户移动地图 + static const kMapGetScrollEnabledMethod = + 'flutter_bmfmap/map/getScrollEnabled'; + + /// 获取map的是否支持俯仰角 + static const kMapGetOverlookEnabledMethod = + 'flutter_bmfmap/map/getOverlookEnabled'; + + /// 获取map的是否支持旋转 + static const kMapGetRotateEnabledMethod = + 'flutter_bmfmap/map/getRotateEnabled'; + + /// 获取map的是否支持3Dtouch + static const kMapGetForceTouchEnabledMethod = + 'flutter_bmfmap/map/getForceTouchEnabled'; + + /// 获取map的是否显式比例尺 + static const kMapGetShowMapScaleBarMethod = + 'flutter_bmfmap/map/getShowMapScaleBar'; + + /// 获取map的比例尺的位置 + static const kMapGetMapScaleBarPositionMethod = + 'flutter_bmfmap/map/getMapScaleBarPosition'; + + /// 获取map的logo位置 + static const kMapGetLogoPositionMethod = 'flutter_bmfmap/map/getLogoPosition'; + + /// 获取map的可视范围 + static const kMapGetVisibleMapBoundsMethod = + 'flutter_bmfmap/map/getVisibleMapBounds'; + + /// 获取map的显示室内图 + static const kMapGetBaseIndoorMapEnabledMethod = + 'flutter_bmfmap/map/getBaseIndoorMapEnabled'; + + /// 获取map的室内图标注是否显示 + static const kMapGetShowIndoorMapPoiMethod = + 'flutter_bmfmap/map/getShowIndoorMapPoi'; +} + +/// 地图代理回调方法ID集合 +class BMFMapCallbackMethodId { + /// map加载完成 + static const kMapDidLoadCallback = 'flutter_bmfmap/map/mapViewDidFinishLoad'; + + /// map渲染完成 + static const kMapDidFinishRenderCallback = + 'flutter_bmfmap/map/mapViewDidFinishRender'; + + /// 地图渲染每一帧画面过程中,以及每次需要重绘地图时(例如添加覆盖物)都会调用此接口 + static const kMapOnDrawMapFrameCallback = + 'flutter_bmfmap/map/mapViewOnDrawMapFrame'; + + /// 地图区域即将改变时会调用此接口 + static const kMapRegionWillChangeCallback = + 'flutter_bmfmap/map/mapViewRegionWillChange'; + + /// 地图区域即将改变时会调用此接口reason + static const kMapRegionWillChangeWithReasonCallback = + 'flutter_bmfmap/map/mapViewRegionWillChangeWithReason'; + + /// 地图区域改变完成后会调用此接口 + static const kMapRegionDidChangeCallback = + 'flutter_bmfmap/map/mapViewRegionDidChange'; + + /// 地图区域改变完成后会调用此接口reason + static const kMapRegionDidChangeWithReasonCallback = + 'flutter_bmfmap/map/mapViewRegionDidChangeWithReason'; + + /// 点中底图标注后会回调此接口 + static const kMapOnClickedMapPoiCallback = + 'flutter_bmfmap/map/mapViewonClickedMapPoi'; + + /// 点中底图空白处会回调此接口 + static const kMapOnClickedMapBlankCallback = + 'flutter_bmfmap/map/mapViewOnClickedMapBlank'; + + /// 双击地图时会回调此接口 + static const kMapOnDoubleClickCallback = + 'flutter_bmfmap/map/mapViewOnDoubleClick'; + + /// 长按地图时会回调此接口 + static const kMapOnLongClickCallback = + 'flutter_bmfmap/map/mapViewOnLongClick'; + + /// 3DTouch 按地图时会回调此接口 + ///(仅在支持3D Touch,且fouchTouchEnabled属性为true时,会回调此接口) + static const kMapOnForceTouchCallback = + 'flutter_bmfmap/map/mapViewOnForceTouch'; + + /// 地图状态改变完成后会调用此接口 + static const kMapStatusDidChangedCallback = + 'flutter_bmfmap/map/mapViewStatusDidChanged'; + + /// 地图View进入/移出室内图 + static const kMapInOrOutBaseIndoorMapCallback = + 'flutter_bmfmap/map/mapViewInOrOutBaseIndoorMap'; + + /// 地图绘制出有效数据的监听 + static const kMapRenderValidDataCallback = + 'flutter_bmfmap/map/mapRenderValidDataCallback'; +} + +/// 个性化地图方法ID集合 +class BMFCustomMapStyleMethodId { + /// 开启个性化地图 + static const kSetCustomMapStyleEnableMethod = + 'flutter_bmfmap/map/setCustomMapStyleEnable'; + + /// 设置个性化地图样式路径 + static const kSetCustomMapStylePathMethod = + 'flutter_bmfmap/map/setCustomMapStylePath'; + + /// 在线个性化样式加载状态回调接口 + static const kSetCustomMapStyleWithOptionMethod = + 'flutter_bmfmap/map/setCustomMapStyleWithOption'; +} + +/// 室内地图方法ID集合 +class BMFBaseIndoorMapMethodId { + /// 展示室内地图 + static const kShowBaseIndoorMapMethod = + 'flutter_bmfmap/map/showBaseIndoorMap'; + + /// 室内图标注是否显示 + static const kShowBaseIndoorMapPoiMethod = + 'flutter_bmfmap/map/showBaseIndoorMapPoi'; + + /// 设置室内图楼层 + static const kSwitchBaseIndoorMapFloorMethod = + 'flutter_bmfmap/map/switchBaseIndoorMapFloor'; + + /// 获取当前聚焦的室内图信息 + static const kGetFocusedBaseIndoorMapInfo = + 'flutter_bmfmap/map/getFocusedBaseIndoorMapInfo'; +} + +/// marker方法ID集合 +class BMFMarkerMethodId { + /// 添加marker + static const kMapAddMarkerMethod = 'flutter_bmfmap/marker/addMarker'; + + /// 添加markers + static const kMapAddMarkersMethod = 'flutter_bmfmap/marker/addMarkers'; + + /// 删除marker + static const kMapRemoveMarkerMethod = 'flutter_bmfmap/marker/removeMarker'; + + /// 删除markers + static const kMapRemoveMarkersMethod = 'flutter_bmfmap/marker/removeMarkers'; + + /// 清除所有的markers + static const kMapCleanAllMarkersMethod = + 'flutter_bmfmap/marker/cleanAllMarkers'; + + /// 更新marker属性 + static const kMapUpdateMarkerMember = + 'flutter_bmfmap/marker/updateMarkerMember'; +} + +/// marker事件回调方法ID集合 +class BMFMarkerCallbackMethodId { + /// marker点击回调 + static const kMapClickedmarkedCallback = + 'flutter_bmfmap/marker/clickedMarker'; + + /// marker选中回调 + static const kMapDidSelectMarkerCallback = + 'flutter_bmfmap/marker/didSelectedMarker'; + + /// marker点击回调 + static const kMapDidDeselectMarkerCallback = + 'flutter_bmfmap/marker/didDeselectMarker'; + + /// marker拖拽回调 + static const kMapDragMarkerCallback = 'flutter_bmfmap/marker/dragMarker'; +} + +/// infoWindow方法ID集合 +class BMFInfoWindowMethodId { + /// marker的infoWindow(iOS paopaoView)点击回调 + static const kMapDidClickedInfoWindowMethod = + 'flutter_bmfmap/map/didClickedInfoWindow'; + + /// 添加infoWindow + static const kMapAddInfoWindowMethod = 'flutter_bmfmap/map/addInfoWindow'; + + /// 批量添加infoWindow + static const kMapAddInfoWindowsMethod = 'flutter_bmfmap/map/addInfoWindows'; + + /// 删除infoWindow + static const kMapRemoveInfoWindowMethod = + 'flutter_bmfmap/map/removeInfoWindow'; + + /// 清除所有的infowWindow + static const kMapCleanAllInfoWindowsMethod = + 'flutter_bmfmap/map/cleanAllInfoWindows'; +} + +/// overlay方法id集合 +class BMFOverlayMethodId { + /// 添加polyline + static const kMapAddPolylineMethod = 'flutter_bmfmap/overlay/addPolyline'; + + /// 添加arcline + static const kMapAddArclinelineMethod = 'flutter_bmfmap/overlay/addArcline'; + + /// 添加polygon + static const kMapAddPolygonMethod = 'flutter_bmfmap/overlay/addPolygon'; + + /// 添加circle + static const kMapAddCircleMethod = 'flutter_bmfmap/overlay/addCircle'; + + /// 添加dot + static const kMapAddDotMethod = 'flutter_bmfmap/overlay/addDot'; + + /// 添加dot + static const kMapAddTextMethod = 'flutter_bmfmap/overlay/addText'; + + /// 添加ground + static const kMapAddGroundMethod = 'flutter_bmfmap/overlay/addGround'; + + /// 添加tile + static const kMapAddTileMethod = 'flutter_bmfmap/overlay/addTile'; + + /// 删除tile + static const kMapRemoveTileMethod = 'flutter_bmfmap/overlay/removeTile'; + + /// 删除overlay + static const kMapRemoveOverlayMethod = 'flutter_bmfmap/overlay/removeOverlay'; + + /// 更新overlay属性 + // static const kMapUpdateOverlayMemberMethod = 'flutter_bmfmap/overlay/updateOverlayMember'; + /// 更新polyline属性 + static const kMapUpdatePolylineMemberMethod = + 'flutter_bmfmap/overlay/updatePolylineMember'; +} + +/// overlay回调方法id集合 +class BMFOverlayCallbackMethodId { + /// 当mapView新添加overlay 时,调用此接口 + static const kMapDidAddOverlayCallback = + 'flutter_bmfmap/overlay/didAddOverlay'; + + /// 点中覆盖物后会回调此接口,目前只支持点中Polyline时回调 + static const kMapOnClickedOverlayCallback = + 'flutter_bmfmap/overlay/onClickedOverlay'; +} + +/// 定位图层集合 +class BMFUserlocationMethodId { + /// 设定是否显示定位图层 + static const kMapShowUserLocationMethod = + 'flutter_bmfmap/userLocation/showUserLocation'; + + /// 设定定位模式,取值为:BMFUserTrackingMode + static const kMapUserTrackingModeMethod = + 'flutter_bmfmap/userLocation/userTrackingMode'; + + /// 返回定位坐标点是否在当前地图可视区域内 + static const kMapIsUserLocationVisibleMethod = + 'flutter_bmfmap/userLocation/isUserLocationVisible'; + + /// 动态定制我的位置样式 + static const kMapUpdateLocationDisplayParamMethod = + 'flutter_bmfmap/userLocation/updateLocationDisplayParam'; + + /// 动态更新我的位置数据 + static const kMapUpdateLocationDataMethod = + 'flutter_bmfmap/userLocation/updateLocationData'; +} + +/// 离线地图方法id集合 +class BMFOfflineMethodId { + /// 初使化 + static const kMapInitOfflineMethod = + 'flutter_bmfmap/offlineMap/initOfflineMap'; + + /// 状态回调 + static const kMapOfflineCallBackMethod = + 'flutter_bmfmap/offlineMap/offlineCallBack'; + + /// 启动下载指定城市ID的离线地图,或在暂停更新某城市后继续更新下载某城市离线地图 + static const kMapStartOfflineMethod = + 'flutter_bmfmap/offlineMap/startOfflineMap'; + + /// 启动更新指定城市ID的离线地图 + static const kMapUpdateOfflineMethod = + 'flutter_bmfmap/offlineMap/updateOfflineMap'; + + /// 暂停下载或更新指定城市ID的离线地图 + static const kMapPauseOfflineMethod = + 'flutter_bmfmap/offlineMap/pauseOfflineMap'; + + /// 删除指定城市ID的离线地图 + static const kMapRemoveOfflineMethod = + 'flutter_bmfmap/offlineMap/removeOfflineMap'; + + /// 销毁离线地图管理模块,不用时调用 + static const kMapDestroyOfflineMethod = + 'flutter_bmfmap/offlineMap/destroyOfflineMap'; + + /// 返回热门城市列表 + static const kMapGetHotCityListMethod = + 'flutter_bmfmap/offlineMap/getHotCityList'; + + /// 返回支持离线地图城市列表 + static const kMapGetOfflineCityListMethod = + 'flutter_bmfmap/offlineMap/getOfflineCityList'; + + /// 根据城市名搜索该城市离线地图记录 + static const kMapSearchCityMethod = + 'flutter_bmfmap/offlineMap/searchCityList'; + + /// 返回各城市离线地图更新信息 + static const kMapGetAllUpdateInfoMethod = + 'flutter_bmfmap/offlineMap/getAllUpdateInfo'; + + /// 返回指定城市ID离线地图更新信息 + static const kMapGetUpdateInfoMethod = + 'flutter_bmfmap/offlineMap/getUpdateInfo'; +} + +/// 热力图地图方法ID集合 +class BMFHeapMapMethodId { + /// 添加热力图 + static const kAddMapMethod = 'flutter_bmfmap/heatMap/addHeatMap'; + + /// 删除热力图 + static const kRemoveHeatMapMethod = 'flutter_bmfmap/heatMap/removeHeatMap'; + + /// 是否展示热力图 + static const kShowHeatMapMethod = 'flutter_bmfmap/heatMap/showHeatMap'; +} + +/// 数据转换方法Id集合 +class BMFProjectionMethodId { + /// 屏幕坐标转地理坐标 + static const kCoordinateFromScreenPointMethod = + 'flutter_bmfmap/projection/screenPointfromCoordinate'; + + /// 将地理坐标转换成屏幕坐标 + static const kScreenPointFromCoordinateMethod = + 'flutter_bmfmap/projection/coordinateFromScreenPoint'; + + /// 米为计量单位的距离(沿赤道)在当前缩放水平下转换到一个以像素(水平)为计量单位的距离 + static const kMetersToEquatorPixels = + 'flutter_bmfmap/projection/metersToEquatorPixels'; +} + +/// MapWidget 状态更新方法Id集合 +class BMFMapWidgetMethodId { + /// widget 状态更新 + static const kMapDidUpdateWidget = 'flutter_bmfmap/map/didUpdateWidget'; + + /// widget 热重载 + static const kMapReassemble = 'flutter_bmfmap/map/reassemble'; +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_state_dispacther.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_state_dispacther.dart new file mode 100644 index 0000000..a4a4153 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_state_dispacther.dart @@ -0,0 +1,591 @@ +import 'dart:typed_data'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_baseindoormap_info.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_custommap_option.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_heatmap.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_map_options.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_mapstatus.dart'; + +import 'bmf_map_method_id.dart'; + +class BMFMapStateDispatcher { + static const _tag = 'BMFMapStateDispatcher'; + + /// 更新地图属性 + Future updateMapOptionsDispatch( + MethodChannel _mapChannel, BMFMapOptions change) async { + if (change == null || _mapChannel == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFMapStateMethodId.kMapUpdateMethod, change.toMap() as dynamic)) + as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// map放大一级比例尺 + Future zoomInDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel + .invokeMethod(BMFMapStateMethodId.kMapZoomInMethod)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// map缩小一级比例尺 + Future zoomOutDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel + .invokeMethod(BMFMapStateMethodId.kMapZoomOutMethod)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 自定义路况颜色。 + /// + /// 注意:如果需要自定义路况颜色,必须4种路况全都设置。4个参数全部合法时,自定义颜色才有效;否则全部使用默认的。 + /// smooth 路况畅通对应的颜色 + /// slow 路况缓行对应的颜色 + /// congestion 路况拥堵对应的颜色 + /// severeCongestion 路况严重拥堵对应的颜色 + Future setCustomTrafficColorDispatch( + MethodChannel _mapChannel, + Color smooth, + Color slow, + Color congestion, + Color severeCongestion) async { + if (_mapChannel == null || + smooth == null || + slow == null || + congestion == null || + severeCongestion == null) { + return false; + } + bool result = false; + try { + Map colorMap = { + 'smooth': smooth.value?.toRadixString(16), + 'slow': slow.value?.toRadixString(16), + 'congestion': congestion.value?.toRadixString(16), + 'severeCongestion': severeCongestion.value?.toRadixString(16) + }; + result = (await _mapChannel.invokeMethod( + BMFMapStateMethodId.kMapSetCustomTrafficColorMethod, + colorMap as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 更新地图新状态 + /// + /// mapStatus 地图新状态 + /// animateDurationMs 动画更新时间 + /// + /// (注意:animateDurationMs该字段仅对android生效,若animateDurationMs !=0 ,iOS则启动默认动画设置mapStatus,反之不开启动画设置mapStatus) + Future setNewMapStatusDispatch(MethodChannel _mapChannel, + {@required BMFMapStatus mapStatus, int animateDurationMs}) async { + if (_mapChannel == null || mapStatus == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFMapStateMethodId.kMapSetMapStatusMethod, + { + 'mapStatus': mapStatus.toMap(), + 'animateDurationMs': animateDurationMs + } as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 获取地图新状态 + Future getMapStatusDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + dynamic result; + try { + result = await _mapChannel + .invokeMethod(BMFMapStateMethodId.kMapGetMapStatusMethod); + } on PlatformException catch (e) { + print(e.toString()); + } + + BMFMapStatus mapStatus; + if (null != result) { + mapStatus = BMFMapStatus.mapStatus().fromMap(result['mapStatus']); + } + return mapStatus; + } + + /// 按像素移动地图中心点 + /// + /// xPixel 水平方向移动像素数 + /// yPixel 垂直方向移动像素数 + /// animateDurationMs 动画更新时间 + Future setScrollByDispatch( + MethodChannel _mapChannel, int xPixel, int yPixel, + {int animateDurationMs}) async { + if (_mapChannel == null || xPixel == null || yPixel == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFMapStateMethodId.kMapSetScrollByMethod, + { + 'xPixel': xPixel, + 'yPixel': yPixel, + 'animateDurationMs': animateDurationMs + } as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 根据定增量缩放给地图级别 + /// + /// amount 地图缩放级别增量 + /// animateDurationMs 动画更新时间 + Future setZoomByDispatch(MethodChannel _mapChannel, double amount, + {int animateDurationMs}) async { + if (_mapChannel == null || amount == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFMapStateMethodId.kMapSetZoomByMethod, + {'amount': amount, 'animateDurationMs': animateDurationMs} + as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 设置地图缩放级别 + /// + /// zoom 设置地图缩放级别 + /// animateDurationMs 动画更新时间 + Future setZoomToDispatch(MethodChannel _mapChannel, double zoom, + {int animateDurationMs}) async { + if (_mapChannel == null || zoom == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFMapStateMethodId.kMapSetZoomToMethod, + {'zoom': zoom, 'animateDurationMs': animateDurationMs} + as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 根据给定增量以及给定的屏幕坐标缩放地图级别 + /// + /// amount 地图缩放级别增量 + /// focus 地图缩放中心点屏幕坐标, 若为 null 则返回 null + /// animateDurationMs 动画更新时间 + Future setZoomPointByDispatch( + MethodChannel _mapChannel, double amount, BMFPoint focus, + {int animateDurationMs}) async { + if (_mapChannel == null || amount == null || focus == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFMapStateMethodId.kMapSetZoomByMethod, + { + 'amount': amount, + 'focus': focus.toMap(), + 'animateDurationMs': animateDurationMs + } as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 设定地图中心点坐标 + /// + /// coordinate 要设定的地图中心点坐标,用经纬度表示 + /// animated 是否采用动画效果 + /// animateDurationMs 动画更新时间[android]支持 + Future setCenterCoordinateDispatch( + MethodChannel _mapChannel, BMFCoordinate coordinate, bool animated, + {int animateDurationMs}) async { + if (_mapChannel == null || coordinate == null || animated == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFMapStateMethodId.kMapSetCenterCoordinateMethod, + { + 'coordinate': coordinate.toMap(), + 'animated': animated, + 'animateDurationMs': animateDurationMs + } as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// [Android]设置地图中心点以及缩放级别 + /// + /// coordinate 要设定的地图中心点坐标,用经纬度表示 + /// zoom 缩放级别 + /// animateDurationMs 动画时间 + Future setNewLatLngZoomDispatcher(MethodChannel _mapChannel, + {@required BMFCoordinate coordinate, + @required double zoom, + int animateDurationMs}) async { + if (_mapChannel == null || coordinate == null || zoom == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFMapStateMethodId.kMapSetCenterZoomMethod, + { + 'coordinate': coordinate.toMap(), + 'zoom': zoom, + 'animateDurationMs': animateDurationMs + } as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 获得地图当前可视区域截图 + /// + /// 范围内的截取的Images + Future takeSnapshotDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + List result; + try { + result = (await _mapChannel.invokeMethod( + BMFMapStateMethodId.kMapTakeSnapshotMethod)) as List; + } on PlatformException catch (e) { + print(e.toString()); + } + return Uint8List.fromList(result?.map((i) => i as int)?.toList()); + } + + /// 获得地图指定区域截图 + /// + /// 指定区域的截取的Image + Future takeSnapshotWithRectDispatch( + MethodChannel _mapChannel, BMFMapRect rect) async { + if (_mapChannel == null || rect == null) { + return null; + } + List result; + try { + result = (await _mapChannel.invokeMethod( + BMFMapStateMethodId.kMapTakeSnapshotWithRectMethod, + {'rect': rect.toMap()})) as List; + } on PlatformException catch (e) { + print(e.toString()); + } + return Uint8List.fromList(result?.map((i) => i as int)?.toList()); + } + + /// 设置罗盘的图片 + Future setCompassImageDispatch( + MethodChannel _mapChannel, String imagePath) async { + if (_mapChannel == null || imagePath == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFMapStateMethodId.kMapSetCompassImageMethod, + {'imagePath': imagePath} as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 设置显示在屏幕中的地图地理范围 + /// + /// coordinateBounds 要设定的地图范围(东北,西南)角坐标 + /// animated 是否采用动画效果 + Future setVisibleMapBoundsDispatch(MethodChannel _mapChannel, + BMFCoordinateBounds visibleMapBounds, bool animated) async { + if (_mapChannel == null || visibleMapBounds == null || animated == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFMapStateMethodId.kMapSetVisibleMapBoundsMethod, + {'visibleMapBounds': visibleMapBounds.toMap(), 'animated': animated} + as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 设置显示在指定相对于MapView的padding中的地图地理范围 + /// + /// visibleMapBounds 要设定的地图范围(东北,西南)角坐标 + /// insets 指定的四周边界大小 + /// animated 是否采用动画效果 + Future setVisibleMapRectWithPaddingDispatch( + MethodChannel _mapChannel, + BMFCoordinateBounds visibleMapBounds, + EdgeInsets insets, + bool animated) async { + if (_mapChannel == null || + visibleMapBounds == null || + insets == null || + animated == null) { + return false; + } + + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFMapStateMethodId.kMapSetVisibleMapBoundsWithPaddingMethod, + { + 'visibleMapBounds': visibleMapBounds.toMap(), + 'insets': + BMFEdgeInsets.edgeInsets().fromEdgeInsets(insets)?.toMap(), + 'animated': animated + } as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 添加热力图 + Future addHeatMapDispatch( + MethodChannel _mapChannel, BMFHeatMap heapMap) async { + if (heapMap == null || _mapChannel == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod(BMFHeapMapMethodId.kAddMapMethod, + {'heatMap': heapMap?.toMap()} as dynamic)) as bool; + } on PlatformException catch (e) { + BMFLog.e(e.toString(), tag: _tag); + } + return result; + } + + /// 删除热力图 + Future removeHeatMapDispatch(MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel + .invokeMethod(BMFHeapMapMethodId.kRemoveHeatMapMethod) as bool); + } on PlatformException catch (e) { + BMFLog.e(e.toString(), tag: _tag); + } + return result; + } + + /// 是否展示热力图 + Future showHeatMapDispatch(MethodChannel _mapChannel, bool show) async { + if (show == null || _mapChannel == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFHeapMapMethodId.kShowHeatMapMethod, {'show': show} as dynamic)) + as bool; + } on PlatformException catch (e) { + BMFLog.e(e.toString(), tag: _tag); + } + return result; + } + + /// 是否展示室内地图 + Future showBaseIndoorMapDispatch( + MethodChannel _mapChannel, bool show) async { + if (show == null || _mapChannel == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFBaseIndoorMapMethodId.kShowBaseIndoorMapMethod, + {'show': show} as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 室内图标注是否显示 + Future showBaseIndoorMapPoiDispatch( + MethodChannel _mapChannel, bool showPoi) async { + if (showPoi == null || _mapChannel == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFBaseIndoorMapMethodId.kShowBaseIndoorMapPoiMethod, + {'showIndoorPoi': showPoi} as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 设置室内图楼层 + /// + /// floorId 楼层id + /// indoorId 室内图ID + Future switchBaseIndoorMapFloorDispatch( + MethodChannel _mapChannel, String floorId, String indoorId) async { + if (floorId == null || indoorId == null || _mapChannel == null) { + return BMFSwitchIndoorFloorError.Failed; + } + BMFSwitchIndoorFloorError result; + try { + Map map = (await _mapChannel.invokeMethod( + BMFBaseIndoorMapMethodId.kSwitchBaseIndoorMapFloorMethod, + {'floorId': floorId, 'indoorId': indoorId} as dynamic)) as Map; + result = BMFSwitchIndoorFloorError.values[map['result'] as int]; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 获取当前聚焦的室内图信息 + /// + /// 当前聚焦的室内图信息。没有聚焦的室内图,返回nil + Future getFocusedBaseIndoorMapInfoDispatch( + MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return null; + } + BMFBaseIndoorMapInfo result; + try { + Map map = (await _mapChannel.invokeMethod( + BMFBaseIndoorMapMethodId.kGetFocusedBaseIndoorMapInfo)) as Map; + result = BMFBaseIndoorMapInfo.baseIndoorMapInfo().fromMap(map); + } on PlatformException catch (e) { + print(e.toString()); + } + + return result; + } + + /// 个性化地图样式开关,仅影响当前mapView对象,需���对象创建后调用 + /// + /// enable 当前自定义地图样式是否生效 + Future setCustomMapStyleEnableDispatch( + MethodChannel _mapChannel, bool enable) async { + if (_mapChannel == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFCustomMapStyleMethodId.kSetCustomMapStyleEnableMethod, + {'enable': enable} as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 设置个性化地图样式路径,仅影响当前mapView对象,需在���象创建后调用 + /// customMapStyleJsonFilePath 本地个性化样式文件所在路径,包含文件名 + /// mode 加载模式,0:加载本地文件 1:加载在线文件或在线缓存文件 + Future setCustomMapStylePathDispatch( + MethodChannel _mapChannel, String path, int mode) async { + if (_mapChannel == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFCustomMapStyleMethodId.kSetCustomMapStylePathMethod, + {'path': path, 'mode': mode} as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 在线个性化样式加载接口。 + /// option 在线个性化样式配置选项 + Future setCustomMapStyleWithOptionDispatch( + MethodChannel _mapChannel, + BMFCustomMapStyleOption customMapStyleOption, + void Function(String path) preload, + void Function(String path) success, + void Function(int errorCode, String path) error) async { + if (_mapChannel == null || customMapStyleOption == null) { + return false; + } + bool result; + try { + Map map = (await _mapChannel.invokeMethod( + BMFCustomMapStyleMethodId.kSetCustomMapStyleWithOptionMethod, + {'customMapStyleOption': customMapStyleOption.toMap()} + as dynamic)) as Map; + result = map != null; + if (preload != null && map['preloadPath'] != null) { + preload(map['preloadPath']); + } + if (success != null && map['successPath'] != null) { + success(map['successPath']); + } + if (error != null) { + error(map['errorCode'] as int, map['errorPath']); + } + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_widget_state_dispather.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_widget_state_dispather.dart new file mode 100644 index 0000000..90d0717 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_map_widget_state_dispather.dart @@ -0,0 +1,41 @@ +import 'package:flutter/services.dart'; +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_map_method_id.dart'; + +/// flutter端widget 状态更新通知native +class BMFMapWidgetStateDispatcher { + Map _methodChannelMap; + + BMFMapWidgetStateDispatcher() { + _methodChannelMap = new Map(); + } + + void initChannel(int widgetID) { + if (!_methodChannelMap.containsKey(widgetID)) { + MethodChannel methodChannel = new MethodChannel( + 'flutter_bmfmap/map_' + String.fromCharCode(widgetID + 97)); + _methodChannelMap[widgetID] = methodChannel; + } + } + + void unInit() { + _methodChannelMap.clear(); + } + + /// flutter 端Widget update通知native + void sendMapWidgetDidUpdateMsg(int widgetID) { + MethodChannel methodChannel = _methodChannelMap[widgetID]; + if (null == methodChannel) { + return; + } + methodChannel.invokeMethod(BMFMapWidgetMethodId.kMapDidUpdateWidget, null); + } + + /// flutter 端Widget热重载通知native + void sendMapWidgetReassembleMsg(int widgetID) { + MethodChannel methodChannel = _methodChannelMap[widgetID]; + if (null == methodChannel) { + return; + } + methodChannel.invokeMethod(BMFMapWidgetMethodId.kMapReassemble, null); + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_marker_dispatcher.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_marker_dispatcher.dart new file mode 100644 index 0000000..c34af79 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_marker_dispatcher.dart @@ -0,0 +1,175 @@ +import 'package:flutter/services.dart'; +import 'package:flutter_bmfmap/BaiduMap/bmfmap_map.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_infowindow.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_marker.dart'; +import 'bmf_map_method_id.dart' show BMFMarkerMethodId, BMFInfoWindowMethodId; + +/// marker处理类 +class BMFMarkerDispatcher { + /// 地图添加Marker + Future addMarkerDispatch( + MethodChannel _mapChannel, BMFMarker marker) async { + if (null == _mapChannel || null == marker) { + return false; + } + + marker.setMethodChannel(_mapChannel); + + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFMarkerMethodId.kMapAddMarkerMethod, marker.toMap() as dynamic)) + as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 批量添加markers + Future addMarkersDispatch( + MethodChannel _mapChannel, List markers) async { + if (null == _mapChannel || null == markers) { + return false; + } + + markers.forEach((marker) { + marker.setMethodChannel(_mapChannel); + }); + + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFMarkerMethodId.kMapAddMarkersMethod, + markers?.map((marker) => marker.toMap())?.toList() as dynamic)) + as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 添加infowindow + Future addInfoWindowDispatch( + MethodChannel _mapChannel, BMFInfoWindow infoWindow) async { + if (null == _mapChannel || null == infoWindow) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFInfoWindowMethodId.kMapAddInfoWindowMethod, + infoWindow.toMap() as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 批量添加infowindow + Future addInfoWindowsDispatch( + MethodChannel _mapChannel, List infoWindows) async { + if (null == _mapChannel || null == infoWindows) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFInfoWindowMethodId.kMapAddInfoWindowsMethod, + infoWindows?.map((infoWindow) => infoWindow.toMap())?.toList())) + as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 批量添加markers + Future removeInfoWindowDispatch( + MethodChannel _mapChannel, BMFInfoWindow infoWindow) async { + if (null == _mapChannel || null == infoWindow) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFInfoWindowMethodId.kMapRemoveInfoWindowMethod, + infoWindow.toMap() as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// map 指定删除marker + Future removeMarkerDispatch( + MethodChannel _mapChannel, BMFMarker marker) async { + if (null == _mapChannel || null == marker) { + return false; + } + bool result = false; + + marker.setMethodChannel(null); + + try { + result = (await _mapChannel.invokeMethod( + BMFMarkerMethodId.kMapRemoveMarkerMethod, marker.toMap())) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 批量删除markers + Future removeMarkersDispatch( + MethodChannel _mapChannel, List markers) async { + if (null == _mapChannel || null == markers) { + return false; + } + + markers.forEach((marker) { + marker.setMethodChannel(null); + }); + + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFMarkerMethodId.kMapRemoveMarkersMethod, + markers?.map((marker) => marker.toMap())?.toList() as dynamic)) + as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// map 清除所有的markers + Future cleanAllMarkersDispatch(MethodChannel _mapChannel) async { + if (null == _mapChannel) { + return false; + } + bool result = false; + try { + result = (await _mapChannel + .invokeMethod(BMFMarkerMethodId.kMapCleanAllMarkersMethod)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 更新marker属性 + Future updateMarkerMember(MethodChannel _mapChannel, Map map) async { + if (null == _mapChannel || null == map) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFMarkerMethodId.kMapUpdateMarkerMember, map)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_offline_map_dispatcher.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_offline_map_dispatcher.dart new file mode 100644 index 0000000..1f30599 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_offline_map_dispatcher.dart @@ -0,0 +1,239 @@ +import 'package:flutter/services.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_offline_models.dart'; +import 'bmf_map_method_id.dart' show BMFOfflineMethodId; + +/// 离线地图处理类 +class BMFOfflineMapDispatcher { + /// 初始化 + /// + /// 调用离线接口之前必须先初始化 + Future initOfflineMapDispatch(MethodChannel _mapChannel) async { + if (null == _mapChannel) { + return false; + } + bool result = false; + try { + result = (await _mapChannel + .invokeMethod(BMFOfflineMethodId.kMapInitOfflineMethod)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 启动下载指定城市ID的离线地图,或在暂停更新某城市后继续更新下载某城市离线地图 + /// + /// cityID 指定的城市ID + /// 成功返回true,否则返回false + Future startOfflineMapDispatch( + MethodChannel _mapChannel, int cityID) async { + if (null == _mapChannel || null == cityID) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFOfflineMethodId.kMapStartOfflineMethod, {"cityID": cityID})) + as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 启动更新指定城市ID的离线地图 + /// + /// cityID 指定的城市ID + /// 成功返回true,否则返回false + Future updateOfflineMapDispatch( + MethodChannel _mapChannel, int cityID) async { + if (null == _mapChannel || null == cityID) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFOfflineMethodId.kMapUpdateOfflineMethod, {"cityID": cityID})) + as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 暂停下载或更新指定城市ID的离线地图 + /// + /// cityID 指定的城市ID + /// 成功返回true,否则返回false + Future pauseOfflineMapDispatch( + MethodChannel _mapChannel, int cityID) async { + if (null == _mapChannel || null == cityID) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFOfflineMethodId.kMapPauseOfflineMethod, {"cityID": cityID})) + as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 删除指定城市ID的离线地图 + /// + /// cityID 指定的城市ID + /// 成功返回true,否则返回false + Future removeOfflineMapDispatch( + MethodChannel _mapChannel, int cityID) async { + if (null == _mapChannel || null == cityID) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFOfflineMethodId.kMapRemoveOfflineMethod, {"cityID": cityID})) + as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 返回热门城市列表 + Future> getHotCityListDispatch( + MethodChannel _mapChannel) async { + if (null == _mapChannel) { + return null; + } + List result; + try { + Map map = (await _mapChannel + .invokeMethod(BMFOfflineMethodId.kMapGetHotCityListMethod) as Map); + if (null == map) { + return null; + } + List list = map["searchCityRecord"] as List; + result = list + ?.map((city) => BMFOfflineCityRecord.offlineCityRecord().fromMap(city) + as BMFOfflineCityRecord) + ?.toList(); + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 返回支持离线地图城市列表 + Future> getOfflineCityListDispatch( + MethodChannel _mapChannel) async { + if (null == _mapChannel) { + return null; + } + List result; + try { + Map map = (await _mapChannel.invokeMethod( + BMFOfflineMethodId.kMapGetOfflineCityListMethod) as Map); + if (null == map) { + return null; + } + List list = map["searchCityRecord"] as List; + result = list + ?.map((city) => BMFOfflineCityRecord.offlineCityRecord().fromMap(city) + as BMFOfflineCityRecord) + ?.toList(); + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 根据城市名搜索该城市离线地图记录 + /// + /// cityName 城市名 + Future> searchCityDispatch( + MethodChannel _mapChannel, String cityName) async { + if (null == _mapChannel || null == cityName) { + return null; + } + List result; + try { + Map map = (await _mapChannel.invokeMethod( + BMFOfflineMethodId.kMapSearchCityMethod, {'cityName': cityName}) + as Map); + if (null == map) { + return null; + } + List list = map["searchCityRecord"] as List; + result = list + ?.map((city) => BMFOfflineCityRecord.offlineCityRecord().fromMap(city) + as BMFOfflineCityRecord) + ?.toList(); + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 返回各城市离线地图更新信息 + Future> getAllUpdateInfoDispatch( + MethodChannel _mapChannel) async { + if (null == _mapChannel) { + return null; + } + List result; + try { + Map map = (await _mapChannel + .invokeMethod(BMFOfflineMethodId.kMapGetAllUpdateInfoMethod) as Map); + if (null == map) { + return null; + } + List list = map["updateElements"] as List; + result = list + ?.map((element) => BMFUpdateElement.bmfUpdateElement() + .fromMap(element) as BMFUpdateElement) + ?.toList(); + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 返回指定城市ID离线地图更新信息 + /// + /// id 城市id + Future getUpdateInfoDispatch( + MethodChannel _mapChannel, int id) async { + if (null == _mapChannel) { + return null; + } + BMFUpdateElement result; + try { + Map map = (await _mapChannel.invokeMethod( + BMFOfflineMethodId.kMapGetUpdateInfoMethod, {"cityID": id}) as Map); + if (null == map) { + return null; + } + result = BMFUpdateElement.bmfUpdateElement().fromMap(map); + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 销毁离线地图管理模块,不用时调用 + Future destroyOfflineMapDispatch(MethodChannel _mapChannel) async { + if (null == _mapChannel) { + return false; + } + bool result = false; + try { + result = (await _mapChannel + .invokeMethod(BMFOfflineMethodId.kMapDestroyOfflineMethod)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_overlay_dispatcher.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_overlay_dispatcher.dart new file mode 100644 index 0000000..2f65d81 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_overlay_dispatcher.dart @@ -0,0 +1,205 @@ +import 'package:flutter/services.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_arcline.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_circle.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_dot.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_ground.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_polygon.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_polyline.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_text.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/overlays/bmf_tile.dart'; +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_map_method_id.dart' + show BMFOverlayMethodId; + +/// polyline, arcline, polygon, circle +/// Dot Text (Android) +class BMFOverlayDispatcher { + static const _tag = 'BMFOverlayDispatcher'; + + /// 地图添加Polyline + Future addPolylineDispatch( + MethodChannel _mapChannel, BMFPolyline polyline) async { + if (null == _mapChannel || null == polyline) { + return false; + } + + polyline.setMethodChannel(_mapChannel); + + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFOverlayMethodId.kMapAddPolylineMethod, + polyline.toMap() as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 地图添加arcline + Future addArclineDispatch( + MethodChannel _mapChannel, BMFArcline arcline) async { + if (null == _mapChannel || null == arcline) { + return false; + } + + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFOverlayMethodId.kMapAddArclinelineMethod, + arcline.toMap() as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 地图添加polygon + Future addPolygonDispatch( + MethodChannel _mapChannel, BMFPolygon polygon) async { + if (null == _mapChannel || null == polygon) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFOverlayMethodId.kMapAddPolygonMethod, + polygon.toMap() as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 地图添加circle + Future addCircleDispatch( + MethodChannel _mapChannel, BMFCircle circle) async { + if (null == _mapChannel || null == circle) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFOverlayMethodId.kMapAddCircleMethod, + circle.toMap() as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 地图添加Dot + Future addDotDispatch(MethodChannel _mapChannel, BMFDot dot) async { + if (null == _mapChannel || null == dot) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFOverlayMethodId.kMapAddDotMethod, dot?.toMap() as dynamic)) + as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 地图添加Text + Future addTextDispatch(MethodChannel _mapChannel, BMFText text) async { + if (null == _mapChannel || null == text) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFOverlayMethodId.kMapAddTextMethod, text.toMap() as dynamic)) + as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 地图添加Ground + Future addGroundDispatch( + MethodChannel _mapChannel, BMFGround ground) async { + if (null == _mapChannel || null == ground) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFOverlayMethodId.kMapAddGroundMethod, + ground.toMap() as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 添加瓦片图 + Future addTileDispatch(MethodChannel _mapChannel, BMFTile tile) async { + if (tile == null || _mapChannel == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFOverlayMethodId.kMapAddTileMethod, tile?.toMap() as dynamic)) + as bool; + } on PlatformException catch (e) { + BMFLog.e(e.toString(), tag: _tag); + } + return result; + } + + /// 移除瓦片图 + Future removeTileDispatch( + MethodChannel _mapChannel, BMFTile tile) async { + if (tile == null || _mapChannel == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFOverlayMethodId.kMapRemoveTileMethod, + tile?.toMap() as dynamic)) as bool; + } on PlatformException catch (e) { + BMFLog.e(e.toString(), tag: _tag); + } + return result; + } + + /// 指定id删除overlay + Future removeOverlayDispatch( + MethodChannel _mapChannel, String overlayId) async { + if (null == _mapChannel || null == overlayId) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFOverlayMethodId.kMapRemoveOverlayMethod, + {'id': overlayId} as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 更新overlay属性 + Future updateOverlayMemberDispatch( + MethodChannel _mapChannel, Map map) async { + if (null == _mapChannel || null == map) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFOverlayMethodId.kMapUpdatePolylineMemberMethod, map)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_userlocation_dispatcher.dart b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_userlocation_dispatcher.dart new file mode 100644 index 0000000..934fdb7 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/lib/BaiduMap/private/mapdispatcher/bmf_userlocation_dispatcher.dart @@ -0,0 +1,106 @@ +import 'package:flutter/services.dart'; +import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart'; +import 'package:flutter_bmfmap/BaiduMap/models/bmf_userlocation.dart'; +import 'package:flutter_bmfmap/BaiduMap/private/mapdispatcher/bmf_map_method_id.dart' + show BMFUserlocationMethodId; + +/// 地图定位图层 +class BMFMapUserLocationDispatcher { + /// 设定是否显示定位图层 + Future setShowUserLocationDispatch( + MethodChannel _mapChannel, bool show) async { + if (_mapChannel == null || show == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFUserlocationMethodId.kMapShowUserLocationMethod, + {'show': show} as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 设定定位模式,取值为:BMFUserTrackingMode + /// + /// enableDirection 是否允许显示方向信息 (Android) 生效 + /// customMarker 设置用户自定义定位图标,可以为 null (Android)生效 + Future setUserTrackingModeDispatch(MethodChannel _mapChannel, + BMFUserTrackingMode userTrackingMode, bool enableDirection, + {String customMarker}) async { + if (_mapChannel == null || userTrackingMode == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFUserlocationMethodId.kMapUserTrackingModeMethod, + { + 'userTrackingMode': userTrackingMode.index, + 'enableDirection': enableDirection, + 'customMarker': customMarker + } as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 定位坐标点是否在当前地图可视区域内 + Future setIsUserLocationVisibleDispatch( + MethodChannel _mapChannel) async { + if (_mapChannel == null) { + return false; + } + bool result = false; + try { + Map map = (await _mapChannel.invokeMethod( + BMFUserlocationMethodId.kMapShowUserLocationMethod)) as Map; + result = map['userLocationVisible'] as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 动态更新我的位置数据 + /// + /// userLocation 定位数据 + Future setUpdateLocationDataDispatch( + MethodChannel _mapChannel, BMFUserLocation userLocation) async { + if (_mapChannel == null || userLocation == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFUserlocationMethodId.kMapUpdateLocationDataMethod, + {'userLocation': userLocation.toMap()} as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } + + /// 动态定制我的位置样式 + /// + /// userlocationDisplayParam 样式参数 + Future setUpdateLocationViewWithParamDispatch(MethodChannel _mapChannel, + BMFUserlocationDisplayParam userlocationDisplayParam) async { + if (_mapChannel == null || userlocationDisplayParam == null) { + return false; + } + bool result = false; + try { + result = (await _mapChannel.invokeMethod( + BMFUserlocationMethodId.kMapUpdateLocationDisplayParamMethod, + {'userlocationDisplayParam': userlocationDisplayParam.toMap()} + as dynamic)) as bool; + } on PlatformException catch (e) { + print(e.toString()); + } + return result; + } +} diff --git a/lib/my_flutter_bmfmap-1.0.2/map_doc.zip b/lib/my_flutter_bmfmap-1.0.2/map_doc.zip new file mode 100644 index 0000000000000000000000000000000000000000..0b3ab6ed604c9de32e45ffbac49004b70120bc1c GIT binary patch literal 1860536 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­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%0DfoTIY0Qk6ds!jFAr=%0m4pq)>tgWy;^0&B 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≦V7r%8nKHt1bPOqiki%)x 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ΜL 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%0Arm_4!+1p+{g2x&jA5Hb!Q`3${PuiA|4A? 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⪻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

TC1kDMQ~6z@K>!DD!%F6#uT| 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�U#} zHVT2_=&Va%O;@^+_3!Aj_XYy61e;*i8W_1!(ldArwd|N3cozB zY2`_^Pc6WjP7Lv|!qO$7pI#-KWg5N*Oo&T%D0l!xo@OVAhb((>$K_O*m%o#)%Xs(& zg>J!W+tN{7o;9x9xAYx>Y@G7L2VUf>O_lQc^DsWjRJDI7a?kFUfGI$czXVKg1!U@p ztuB_h+WjHw)O%YkxF%tvuMi6+T7uD%Q~nN^a!6i32TZT#H%mbQ({KL-Ov@S144W`U zc<1`wK5rP{G{6V^$}SRPUG!L&8UAsbIhhme69h zU1$+t_76$__;K!D>=>tNX`qa`{PpX}^cQM&y>#||+lJGk8B?>bQ*oF&Utb|@K!%O7 z`uBTSZct|CcMMmLbr79lQqLQ4dJ1mb-P#Mp+IZEN`6dD`L^U$mfQ`8YXtsR=#uNE_ zVmD<(%no;c@HKaH;-lI?NK6EIKh9y92^Cd5WjU>isbn1T!kz1g&n7ASvG(s2)NsEH z!DywuVl#XwT=dV%=a}n761T(2&e9HEjH!?3JI!z`cL@-RH>*iDyVBX)K6|=4D?|Ep zyMFfg@oIB>w*LtMn%jJQo*>K2=9(vr1?>CTr>9`xZ#-_cfBJrRL&X4psQYk5B>3l- zovExg%>rBQnqdj4Yz>4`qF88kh>@kVl9UMl#E;OFiF3lF`TXjsWAQ;Aj2rkY39XW< zAr5ezW#)t8Pmtr~Z*(BJL=aBJH}|`jcoWS8u0vWzNYCb9S*fMG-wm+PzHRRAU|uj* zY?iKu+h#3~8q;R$z9Yw}2qaQtL7CgYxF(S!61X!9HgeuN!r;{|u=dRct6TpNNF&v%D?@9~ zrM;w)m~@)+Ab|&N(ANIXE4&~06N&$Fh5zq1MGZ@5k9`c3G*$$yQy zW|<=H*nHYIBmQzi(t`KEfg4E)Qyc6Ck|}=jxakJYNV4&Qlfv8>p%@f+poVi3FyYD zyp&dmcz>F{AvV-h9>OR=ou?SGN8X{gw%|-E^C6Z#q^15KCP2c!mk z{=!c#mZ9Z^KR{ppji01R`+WNs{N(-_KY<6~CsiSbR~>)hCjl?`2_&+UJ@%G;w&B}X zihfFQ>DMM5axd-w;3r-Gj-RCcg`bpp z%1!Eo-dM1HuEgv1)APXVhJ|NJN0$5{8{=DDWp4jkqf!gn#YK1e%BQ{ zyqm1-ylE;4BTfFp+^?CJ@QrU(4?1a2Y~09aQ6$4S$-%gET8R)e_G{`)Df!w(nF?Ev z*sjzmrPG_>LDBpyMCg_bIs=tpN*D(r7 zvRvy5=P8DhP|gP~1NJA?X`R`^+SP)gk>hu61IiAIMCZi*-rQNlrw)l0hJh>tMM0_~ zD3Vh$sn{_$`1uz?gQnkMdEE#SB%!Q03pD%@(&Tih$VGN`tA&&Y^s;>tjznnDb*T!d zJ5chF6Up4NauiHuE0(Wi=kSZijKAtJt2^M6#r=S_#koP&M|J#G1g3!~0a>k`4ILpe z;X%ZE2v}9R|B$|Eg^r440w8k%p+Wp-$h_9}1u|!dl?ebK^XWa)qBm~(rx&JY%OIr- z0GTsBL*}C{@~fs%Ajq69);1Hie9vEd1S;u5I0YpvC4{g(h66!nInRMbJCTq<8?0XQ zVnlaS{PUAvi?nnmWSqmmPu@heY4~{;hwu%ijkj%BxJ5_e1V5$}yBb*iPaq*IOb>Pl zY}r9JMc894!>2DsjIhr(#YBe!Nm+GtC^eauASY6C(t35aHR{w1z@`{#7D~<{5GZ5R zL7QN8_f)9Z;9RGNwy^{5Q{x(w!|Xi*zA%CDnGW`?^BFSm)LpUsmi>%XvotUWF(bw`mQi1i>y4p0!?g2CVk*;%I)-OS)i z`Rl{a{f71&?}8VG>jJ-t7F_?LK%NBOeV`da^+`c{GdHa9E@nG<-0tbTQ5a|>xeZyx z(r(V-3zPvgu@KbPdkbL;&bg{y^Or`_uV@vNg$3H`RUoqJ0rk>IvYPR6v@OprNxI`d z>OU}Y3Q^2a=Nk?%wCi;3$W}_n`OY0Xq3P+8YC)hx1~^^b1(1;DabLCqtoRt7%@?_W zG~n(HFDOKzty%m-qrH&=@VU_BoW@QSe~1HoE@j}yOSNGTg>2E(?bFmolc7bVM8rLt z49Wy=E&-nlz^Pw-u0d=YsS6yMwoG_|Puz!zc>efY%2DbKB~C5+Qi-TLF{`a1xWqKg z1%w6~A$AkHmIHzSwEVLgWK$Au{-6&6jQbvLiAi}8Zhtdkr$8T$muuxW|1}JNE}x8D zqUve_=<=v@xEH!S$8Z6pa#;b9Cy@*&G%caDR%T_&9fa}P2g!|7v`e;Ri{&Uy#!0PD z+#+b#5Td#G1{_8-YT1bKNpe%3vnQyvhW_B= z-}SfE&Fz7k81x^`58MGk9#x0WTC;CS&p*wsS<~3 z4yF(XccIYvuJixA)knz<&I+`QiFZhh?0P;}L0tE^+Wh!@ zce4KM@q9(F?tORs#oOa)Q)a#WdF8b8;WP{Qtt4Q;uRK5fK0SRtTihgs*l^^6(;e;7 zw`5KdUq0foL9U+yP9zD?9c21leO;B#l+|IgEA_hb_<+H3#<%52Y8;R8Xxe}G=bh_Sm!Zs2_4J2-(C>gY~BHq>R@O4_I$VDvsv}D z2nF?A2bPpC+u&1h`h2`W2uJ#3RCeE8T1mKs75+(%8tYQfV1N<`0Tp$!LFT%N+GPO( z$2#^$3V0$c5s)g8%ZQ_FfywlE7EmSD0IEa*mXAA-LdHfh{PP|CtKp>`{pzGQeEiHI z3xa&2oH+bGU%gqHhPiM zrnM)KF;3_vwyB|Fi=`9j9YH5U(3YKZQ;&$Rtj%8{d!1Liqv#+0 z&9aA3@2$yPKA*r21#3l>6Ea*aJq3G+*?YFW6-F*(((a|nz0C2WqmP3l)SM{AebD1D z)CVON?`DwLag2AM1yJ7wy(xO3Y3m9x#+| zghO9oEnTmeYmmNc1OBIe<*H%U_kG>@uJQV!wSyHflyiMN8H^?RWG{GO%juq7Ms%s3 zUle6`n)ir3co!$^#<}pW%ftqfO_o@ix z(b)C`2AZ+dfd+7b)+nq!d&RU`#PQPr>v{g}FB3fZKK;673-O+&zvBRFigE+l?Ubjc zWuJ+QOz?`br^H2A_5fkK;3j1|v0mg#=|>~)R3)7T%(6*{E*ZV7+IcIOPDf`bV}bLW zr?<+A6~;8K(<7_Xkp&qIJsy0aP3g{UH6q`!$qMeHtMhBOe|gGP5z>BRn?)?l9i$Hm zz=guI@5ojT-_}=wM|Q_0FeMPwq)c_h@sAS;;~?9F(i*rFSF~d_J@WbS<`l8ik!*je z;ZqP|IciL(Lk<=ly*gpi!5awZBo}!X(H$hqfPGj6RIL&^d8uFd>uOUC;5@CTzexnW z_-!bhU#pj5qA90uzD`71q}RqvNBE99qw0=ZiWonz*WJ9&;Gyq?`*XX;g^ts$qD*u9#i_t4c6t6i#gnG(}# zMa-9x+`OU8CfFJnN=bhJz8Y zj?rM5M^>=qW;9o)PObqBVgUWOo$KLDTaFdkq#dO$oY&txf&P!lZk;kz_Y4;iTUvW! zbscc`My6#>5TRe}#Ru1p!!QikhJfd3rglo-Cf~&v&T-=_iN|p5aOwC-C;jDwV0cVZ z0WhZ!pp%c(-DiGfpI$<9QyIxZzm9MwZI1S|O#1l-8794d5zr&zAx|ulc3Rs3j>McU zgAk>4X}>&SF4DcpL}x`gX@e)9kM9c})y{p1d02L6YL1{L!o9ZY$vc z)Bbr|IxHF!+2+Z=>k6v>K#+-}@#v4rE|)1~VgFor8k5~ivAiW(l7knOnTi@Zu*mLg7YPZJPa~}5jwOvr&?{re&<}D*nnm)pC zX(vVi+`L;lOh-DIdwa^JJg*Y>V7J8`=XH(&l-p>lu`bja>E7{K^jPl>YZO-d25maW zW%?x3ivx+y)j3_GaJzgv9Z|FX3o`0ah8;^wVG;yo4&QhI0_cZA4WZ9~4c@|}y;L%| zP^xJoY&{nqJF|wH!Oa2`{|Wc|41D*tXWF?D74U`<+nFZ3^}sl+x7N_wf%;EJ9-8>1 z?VCEJr0N$pVzPuAq#!L_gJl=O$9_EP74G9T^0j=jUGsCbi(9yHE8Wg18}v;nIMzAc z7F@I2Z&g;T!WkAdx0Io~b$a4_%$apQOK>scw1+=w+CAn;X&*bp)Nfh#6u+&}RK?UK zl?76XO&9wLsm*B0cb;l(2(=_Qe8)Xp#?4;nZPc;wR|su7%YdB|V1P|i(X4~EIT8vj zfareU$p~A-BO!zE^1XxE9AT(%ka5q)F>VDnu(G#Hzf6X&IQEHNh77a%FvoNq#cWj? zl8g-?BUPw&8jdTfnka_hk;A@$+0I8L3YJ4Ab9>xIHmgLzUo}d_? zi);}S?^N@COxK59RrG4!J5&Eb&fZH!9|7v*$yH<|$%r!JSIawvA%@vHUZmJV#kV!c zoyjYg`TfGsR*c52cGSdUNiB_9vr^VIR$lC!$#`?N?{jbHF$YaoG?L@zc!!(E<4ARe zwRogZ%;=pf<{uB6LPs9%4wuT7Bs7wLlqY*CCEu7_R4}I2vw< zN1mi7G%tD^9!FsgMgc5Ghx(rESTQqYq7(ncpV=CnA5_Nz%vR7i{m-*iAD}$`TL(CR zNlV(8*vQ&Am^lIu8UM@a`uEkiIgTnx3xmBD&xZ9dMNBRB$NzFQ4u371H*9U)^1kIq z^bWRs%a3~3)MnPG7;7-x-=m3;_DlG=ZPPk=zL2kxKHZx?8=h`86;-{szgc<+qT(F6 z@uwVpz{PWi6Msgal!jmq2vU^}`b$ne+CY+#EVymXMq#(%AbM?gx$d8a81gZv*>jxn z$C#(`SM;hF;EbCUXp5t8;A=9pYC@M#=SpDgyWmb!W61M-uykiIx=_UwR9L=N9bqO} zRUz7Rd^B7cMN4oEd3Dc*PTL$@Dq9<9Ok6?O$@S@y7@5lEeSVR_!FUNbih~^$ntpkl_HsR#t zQT26*E!F%w)8t)K$8<*eW7~IzT3Si6gjMQE9@w+OdIJo=o*m@o2G4C3dkI_WLIX61 z9@hU*e}Df={VfHkzu*2*e{1CBgp^lID+*GB!j=lTx~eM7Z~zg#0}#5yh+}OATfQSy@B^{0(={95r=ME(z4kw8pg9^25zbpS%fA7tgLG*>k z;7H=S$;;H27D^4c;1(H$^;iaNv6_LggOEhLx@EWS6Smpoy-9o|-&Nt`x}#4Je+ z^p6~0#Z2i_>;M;F2lh!GkuOlT>?}1>RK)ju_d-NRv>Frs@8<754>>DlG_L1<>xzYe zr81?ZYr5dx_CMzDF=rJ8V$TpJGQnt{yQ$hxZry$2*~TcA4#*M@!X3unikgTZ^LI_l z2C!(8$04=*&?f#*=I=B}Plr1Ox1j@N;&UwiqX9KF4v%W68c{dOh)Uq`AIuyR= zH3!9%K)0UkosRo$Hp;Ww?`Xl_3X>z4UEHb!v6rC~dENKfD44s`O~+013!H$j)e_6$>S1tpP=*;%|G(dMO}^{+}c%Gi%o7Fub$6HeT8F@QGB2VE&8 z^MP2@igKJ|)n!%cF-%g=Vb_j#@8%-pbkA!fRO6SLJrZ^;L}3@k9sNu8i29gRhu3QBJn`?Zr=S$e~!@t6o+6o0sVk?za0F11ZG)gAxx!%V9 z7HQ&q&Nk_f^Skgphk{dn`i`i#5uXam>R#vX45VS?j@FT1OuV_-h!@40?__H5s*blb@ z9`t`Gza=ARll?Zq4*6r3!UHR$OJ}tRJB;3TDZTc@{3x6-{G$Axl_--#&ou~lmK?-9 zq*W)MMAtW2>9AvNqaoNsx$O`Ib7e7h^GcqtFNyum_{P0rva}Mk)^HPsRL@~ zDvnpIQP_FMeI9G2M5?JI0VD6LNG;1X$Tk!YBh_iIbU_CI@F+v$N^Y)Rr>IcWA7Wl6fPbYKv4ak9_&p4)p#DSoodj&! zV`M=2-A?mI`CSJnzsb9$Nvu%-8z47e1C(9gh|mVv0ITCml7&tFqw+iMMfv?@KZI-e zMftr7Qhvud;#q`gNzaT*3%C`Wbie&3=CKeI8g2pFw8p47{1cYnFtOXU?W6JEaFDL% zNcg#zzY#-OhFT}ug6rZ^IpVW{W$Wce*?)Ww+=(NjC--ncn>Iv@ zc)Vy=Ut(juLfIO_1kWLGC;qf_CREuXwwj`Kd+#a1Rt_8d9`r!*rD$0t!gnJ9JWz~* z$6?O$w%(s32W)^kvptuOK!`Y5m zOyk)oApL#^BrQFgfTU%Xq_8>Pzmk^Qp>X2T3yb45mE#a2=*x7pie%V}V}lwlo%$E? z8yT4>9dD^9&*aD0up|)}S~?f`EoYu85bTij&|eM0j>AxEDvB9Ieq5CfmQ+MJmZW2IJ9 z@_KcwFrLS)=IYBd(mM!zALFLSP6QLg?WK2+^VJvkel5XnX$tdk{+CxtJA~NiI;<7p zL9Eo~%&7cnf*Ee$&;+xNbjQWTKj&1NKEZtU%fOxJ>&Ga3g>9ul5{G(7iJd5xy7Q*R zde@W~{{2`9j@NCnTni32Y$l}4ANpA~+0pb;>LAoVa%{+HSDt>{HqHqXkD)m>kJBFl zpMJIWI<2mEMVaAInAVY^&>{74f-CR-C7Oe(RcTcQ3}(L$qxsl+A1kOE;MJ7lP`!bXIPpB(a1z!O(JCtzG*+z%FtFUU|mX zU}%O5^$qi*B+esc;Yzh93-zQioD74z>x&u2Tax&atBqmt@P>VQ+l5~&u6i`iCIQ=h z?Eh)w*oSz6qJK4v0!6=0u|BN%5+i+_U0fk{92V-QX{3NvDrxN2xsoj(A_9HkK8;YA z%GqR|;RtfqD}CR$5jY6-zu|r4P2&xVw0q7icgnO;br2w#WGQ>t4IDzJ{etQB_X$z9 z2ASef+!#2F*`v-n@G!RBMbbU*Of4)f>MCe+f3J8nH(XJZ*oHI8K?AS_(6sc3GT`_H zf-Oj~B);!PHTdy9tG>V%t@mqy<%F@n4A&nm=*=xPDcl&vt3^FZNC)CL4;+3A8)Y2{ zr+Jk^9c720iFncGpSzZOw~>TXp7Jsxgl_c&nNB_NpQx8e)=$smaG>Y$qnz~-A6674gz2FwC3YP}D%QmG6qQ;U63c!w50(P{{@vqwJ zoxbZiI~$p%twlxIdi! z_F17qcr;k_H~_5f)oSrPk1TBMjw>nl7u`+;>I&B9)=n#Aep^MxkccLy92k2eYQ4$i zuhL+`CRP*Z=+<*CU=>2xmSTEQOWhfK|J!vKnO74st*tMQNaATC47t2FU2X z3&~itEM8~^z^cviGX0H10s~mJiJGTA4I3Yk(O_Gul~kEpBMbfs=#-K5HOqIePSs|Qx6jIM){nKBuuHjv#*zTIrzq5lpeIFgR8pzSvu9}9w#YZ>K3V7#;zloYCB34#I zn+V%pRUOSfXth`gtmxx9c20ee%@0Dc=p|gqp}#8J4!_Xt7)Tj2CWKl-2!tzFrj$V8 zO798P)~HGPiZ_ai(n!CDV(cJ&H{uh zwUKhTErD=l2iCmb1=S!#>RTWWKM%^oqokzASH0xnsdMJEaLKk>zItQ{3B97v(D&hR zwIH!iuVq^G=&+i?C92ncd0~iCmE#1!ueon@pV;#n@D4ucz=I1o1jxD%mqA+`VyK>M zNa}aKsli|4(@kL}#KR>wJ&@=?ic|EAu8cMZzSx#%8d}yW%=*aL>^6~^m@-5ehwpi% zysoO6^lbc$`vNxNEp&nu}Lm@DgYMkPD(=Dea=+g`S4dh=SmI0EhZcQ+~Se(B@a)&1mG5cSsTdb zfXv#x<>?k-R-v`Cpe=3P{njO}c_t_o*wSOM-YqcHpe=30PV)gmH0m`T%E=VF{3&p} zFL+@tu)UmKm+Q<7nypbs@DvS^`Iw)v9fLj z2Fv_ShP@&!yNrNYyX40WL~iv5UX-gp`5ez|%}Bo!p_eU9q8s*0xvbAZqPl)04U)KlGkNgVA99JdL53aDrdL zL366l-ffXdyg(sczbM0Ff#d{0(Vv{LX|+#Tez4e)ar6&jtMmFF6}(urJMe;AZD}m5 z+C7j-LadsK13{XP$Qo^=_PN*a+JNTc9q_H2Uub7TM1>y;1euBCE(=p!~ zaKbx@IBloI6Xs11S-TYo%u#61s>>r~q*^GkK8&lD70wqGB903(`P;3sGb?41OCoyV z)EOy94ENu5*{pj$pEjMY|2}>?^?LX{dCL9x)OPcHJ8oP3Dm?Hixu}G+(a|DRWg+cI zeU08vC1VuQu=|GF<6+$U_uYy2x~D>^%k!6Y@7rx1mbshf``IrxfE(k;RMP}jD6^1i zMFH(D$(NtulL}HPD>1*nM_LWm#oJMEv*RNpGwp-#x>&W~JBIAa2u4}D6~g>JLLb(w z9BLpR&FC>+x-l+uKPQK?R%~rA6mEXq`37$iE|zgUAD%)ZE2dLq9M8g3A1-nFMPpO> zbAaRP>W!4}L*cDW+(paBq3&+mXH|3^CuM73h?xiB{`Zx4$3EOSn>WSB$HOPup zsINDdupJGx(_U=!m{qRL+2oSE21)#EbEHcu)gJEZhMmexe~Z)pkWHW~zxWb{3#4#B z)W+-2aOgY$L=D>P|9Q=406fS4o5WAS5!AmFG&B6;@H6~>WT^kn;{4sD|D){w_P;8- z<%mkO0A)9ZCuQi?3I4t8MrbFRC;UkXFM-?oK+6LbUg(_n@N*(UY&jcK`noL}t{jSq zqlvrs;cXL?OoptmV=b#Z4}#FS$I;d|CGc>+;neMLVw#xkFTt=hgVt0gYem+>&;^oQ zkMGICY98L5-l5ur3Bkk~iq{<8(j>A4X>-a9vL$becVP*+9MM5*zYiY`-HQch#D#L< z^Efh!a3b$B#2-m7);L562_X%3>k&bVA}Hr9`O0NM#7i((4uPq==@2X0v-Nf>&L59l zx6{@*oRhH+0nQPTOax_E(K1e#8oX&k7gml#=y%AQw*nY!OcS}19uBA2!8X1epk04X ziK5>j+Z564h%&K@D})^KGbK%ddGL)@Hn8i5=XpEunRO-e)B<9GU7rK&dY(7>LGW*I z;aNs-UQtPkZ=sU!xUhbnhYOty>cuWb^9SvEIsU${Ceu@xTS-i4$Zo9M`jj{4PqY{t z4^Ziz*DeMIPbM!8zu%??+Zo7g{53=1fWzGQx><7*!3>&qTa!HytIlr7}0#i;w`$O6bM@Hz^ooVq(3Yf5y zsUH#)cvjK0BAdfLOgbS#9oE-ZY-2nyydBP^T0oPYk)H+Bq<74gkLOI0^ZELifN(R7 z1ZvXjEZQq6(tWDq4IhcM!*d!B+%w8!p-LM|1e)|)Q)4RheX6XbDgOZ3GFSZzo7gT^9Q8FymY*WV`;_pHMn#qW z^2546-h))#btxcKcRTLRi>mtzBcSTeJtRfDV>3k4w?8^zL@SOjaYBTAZ-k)qGenIx zxr`zbDWvXFIpC9EQb7Aj$(hm{`OU-KJ?=at`!({&R-~94ind^|(;S1H3mwGr8@YB~ zehYf;;&L3%{gm@GYlzqo8*`4&_w7e>nGpBM5)2$xN3U+|BSMLWRx5#vB&-rm zl~PvlcdgD_*zPbN5gI}F@iypO*dB4TlkQKb_L@2Wbof~!Abt$|3!-)aAnL*D{(nH! zMj(j#G2jKFrp_CySrsG|9dGr(G12%NqDJ@^L`|7ve)AVZZ89bUfnfe`h}zR*OrFQ` z4@3=t!T94Zh?*{~?#;g;>IM;&e>?n)Cn22j!wto}jRaIsj`p~p@C>Huv~|@XC`y!N zMcb>^+!#KC9X9wWA9f=TXPAPlBpY(gp$o;g8V-M0Qa3HvY@9Pr6eBqmKhEdukGU+!}~V z9^goxh@_6#B2`P4zHDHcV5ro!_e#}s+|=sfUPBeWdy0lg5g%}ejI=@|YOp0H+wfI> zF+pmU!ih$RL}$Lj(+SQH^(>}~p#r4jCDAk^tW_rUp$d5`A~PwVW&fh-&cfqi<7GS& zsFGN!>sdW-#4>6R0rY#IW&en3sZIVPi&lJ<8%AR9AS^^#=RI&Dr$ebX8D+&t*4NPn zoygslxkwn0i4YKKIAEqsgqi>rdv36w`-o~1gIMGuY;{dvqvw0b&7GIJx5T_zw~$|= zvdH(@YPdQ)b8}mOSGf}gOPI)*kfr^+x@LdC=TBOd~ zEpCV)Ye=H)HBQylJHQZmKfkl9780#sX{u87BI&jXxf$91!%?5EZ~&5S1R_Av&BN<^ zk9A81l5}IbHN8l>mHs8^PCI~~#u#8IE923Aaxa8ls%;FLKu&dh5dAUwi!Kqp{aypm zhJ;=ptW3TYOlaqrh!y22Xa9+9^kXy_|9YeuB?G|u$mp{lWkoovFJ9HGRo5w@-`;Pr8X9oDL#hmPpL zL&reWWCl(@5i-xMX&)uACLfBWn4KSso9!(cB+!$tThZv(beBXd?8f`4iSG>39f6X42#>z94|C) z7u)_;mk|Xf)B)u08(Uf$b-pUy&S&$iR7~N>mF!B{)O3iK7vplG05EEN5~sc*=0fu~ zgI~jxKKXH~(W78x-!mMULn-ZUX-=;;wB`MXm!ay1DaCj_@akMJd5+2ltl=U=R|EO+QC2{E`o^Gc$4;THt#ED=c20>R)_oYRa(JRV!m+%L-V7+{;- z2Lj)NkAq8b6iLjB@Nb;O`Ot3LXT}ak5p+IpdJ{}MpMSq=T7N!EdiHqiCE)pe-1SrE z`RTD&hv)ZQ+J#Lg$Mba-kJn96l+M$`9plEGKhmII=V>M3+7Jd-yrpS(vYVdfB7}^QVSaTAvc}Gv6*s zm(m>l&{7EH7`7u>)}IXk6KMEXle zjwXD6z;$fbaknXie(%4%;E1+ADt9-EjZkVfurHzQn#e?E^odM0OS1r6qO4gR2M=CK z?wjdA@|=_S6>blgQh}qsUxBu~q2E@wu0eH7_r79nAysyLV?zub`DgH((YMN%I2o+4 zs_5{EJBn~RU1AJ8@3?WeaJlFs_yo7QEpn(B8-Ob1d3K&Js~( zgmNDg0fhQ)bK+kJwbOiml^Vle2=xKGbM-B7S_e(;|2)QZfulR?e|cI5SQG_Q8&Eh$ z*2e7L_jHh21awaa{rbO|`o^tsTR`s@-N=3PdJnLdv_T{a49)Pbx6#CWvB#vC{*b!vw6 z<181>>b~b?)Mepyoe|?*oDU#*b4kZ86^q2-qfo$r+#=zCTLcLiaEn|qe!A*9N(dJ{ zoGUtI`pj_fH0OP_x{hoo&YWhud;u0?n#x=8gh_%kVOpTgug`IyMb9Ai` z!AH{G?(YY?F_p@YFz}G>*XZKUMG5Xn6$Cq+TyNsre$H+Lwdf(zDH>YJJ0$Y2;g^N506(DC=@@qOVRgo}vdUVAo^@ZX=QhE`=-TUmK^HuRr$ zjgtc{`dY9eQn?nN0-N8q7G*!hMnpapV5XM_%Uj{NX@LN1y#XQ+V9mV>mD?%~0#fb) zYqkJh7n!XpWhcX=n30LYR{V~IAgO2tM^3EiLNwi% zg#;ncnwtZKbW8rz_^q(4lCgMmZcAmfmJ1E;RUbq`I?W>ujNa{+SRjZN@y9RnuNFOH zg;1;lI;)6KqX+9|0-)MX19!v6@IA#fYMQ57&L;Q{ytqaHO_1 zHL$qLfyFJ;=Argr{XO#?kf+Rqy)hV$w#J%mZ%XHx0uJfo`70tV7i?XZ5 zpWK#v7{qhpG9$w}OXf_8pqlf~j~~6t3V**^Z&Ek*#X#9T$Ph1C+D+rA7uuWL3~VP* z$4ukL+li|P=+^;(*vy8%Yct> z4ZT$n76Ow)NBs3@w|oU<+tecq8BTD4xrA+wJ5NgJ$FoeN3wcj5z%kNFm>%9E;3Cum zJX^FGIbkj)4 z(|QMyh`$mLm=ZCHDc0#%ulrr{BOvP&fP-0rf4QY&4fa=>ld!VUOWs((5QTo^?{_>u;p(UPzU)LG+$mV!UC@rx70RSW2~wXUKAsR2cqnN zVr0axk`z#k+&K_!y>a7n1zs%zijiStd_5RDgmd-ol4(35r-mYaCtrE2@1bdsz$twk zIHi9k)~%jVwlFs|VQYv6h3K;&{|eDVH9n1&5U@U@7efxBt7Aqw1n9rKTEtW}iIps( zF?Ev902-An3b%o8_g0!2N+p584a=OatsYT|glEvM$HAdt4Giu|q<0D>Z2)QgBJ10E zA+15L7UgDCHK*>c8-*PLrj~bD{~_ypUF`*s)*`#T%JAJYxI~Jqe}(ArQcbCxbu0gp z^+657;CR^svc7?+vA<<~eRo?<-G4&#Ob!)2Oqw^vY;yQNK0-u>L@EQ$>{T_rbr()Q z*d@T3tw~7iTep$Eyq%8+7)HQg z3ihIgW?iZLRiaO9e*4GPcSQAaO23ICagCps0kql8;vie!Fyq3Em2~Wdw1BescV7@{ zoeyZU7csu6{GJE2+38Ew)Qm2GHk%r5FB%l7JgK=R4cVu9GZN0s0^kF)B6Ejx% z%RTHA`YvE%!zr>VHJG%{x~VF< z;p%C;Fe*ebz~|I^kN@?z^_-am;M=>=vtYWqEgME6q5-@u=&K& zb}m=A>fg4$Xfzx}&4c3D^n;J1zS*!vx)l*g1w_;Jdl(+)8uhHb3=0;*KaKhQD_)*2 zB6HA;vh^_^n7S-_k9vf2E$ZK-SSBL1Pb=uF5CM%!za_|ybL}8|md^#(pDMH9f1;{=#J0Fk z=6RKZ zHhcc;^}LPX~kOz}$OnfK|EOtFe1@A&3*z$CCU^ ztBVKsXv9eduqsO-+z2|*taDv{CT;}o*bhjYRhd+-&%Ppa#4znTV3F9Y_$jD`R_fby zZzOcT^Zvl^9`h6GYDTa=K1h3z_`pZ0O-K3Tl&4rU-Y4*@XF9yCLYnOFjirIAFK;X% zn6a0a>@OM1KZRS^OjQMCHBl9Z?KPz+Q8UJLHcP*cm9y*EH)5-9k?So%TFyV5>*c>q zE_bm0!uP3efa6%syQ~W^_1P|c6(r2FGB9P-|3v1`C>7TZ)HrCQ^1J)k<@}vbnW!-R z$)5(FL>i}})MmVk=#QuN-YufvaN3h3-AO!&1*KK2>;;2*luI(_*_%NPIvGdn^`V;| z&2t18a%K%(cJJo?G-^D1n*BhgKG1Id&x@KD_!E}@a#1_#Sr{o;>)AS(+Bp7uQ2$>6 zmA{YKQ&zr&AoVr#;$>}{kp7@EG_jb(R=DX;0%GZI>G9TT=rc9(?kB z$8ULNh%oVjdGM3(NEJ~(goh|9BD$w!-paUv81LO#XKYS_Yp&jJE^8cwwU3+N2F<4neKGQ0{K&}r{Pip!adgSRWP5RANr)WL z`y6?m-9hm{fn_r^z;-k_7yY_*NE~>ed!VxcooFm9BDqE#fWFJ{mRX~?pnCC>{F_j(kKkO zNQ`cxbk6=jwvD~H0X@caPgwB#-^movd!a%2yc=2RX_U~}rDFlMLJnHUoHwe>M!ZUhI{1#Nr3|3`Xl z(BnBpK80*rQ)-rio*=RQK3GYOu`;hRCD?0CqwG(ICXXWPw#CLx3r43N8*pBG+ewy5 z+0B$T)o;J8rTZSi%?(Q^FWhfv>aJkh)J06g_mwSs$Xc5 zBn2ZnfeEyzhx305Np5=JpaYBgOW_T$sQDHyjMD>{F>tr6zO7)A_6$$%A%Jn-UDccq z8G|KY<-q8faXZlp;1G-SdK?*;>VKhU1_m_+TR_}%%@<6nbAlh3VmmySa<%m?+dUT#E-Yb?Nh6YJ1K^fd1-Z?ctJkjYi0w?UBL8^;shdoa&CZdaDrfV7# z_@Lf9%Kk3<3D>9%!=z2@zELHnbreC9Zn!j7-e8`-DHW~ySE5Q|56+hL;-dBLFBOSu z#eo4KZf*99N57n&mWaU}TyRc>7J7FJ5q_;{_q2WpQUVh+B%AyN`SF0ue=Qa*F`?Qx zP417guWGt^Ccp4Sd9Bs^qP%Val-DaDGKI8Gu`VF9ryew@|Mq|kgUFN?Rn8$%v`=wF z<)fh!2>_V_IQvSAS#JR4HMCag_wK=mdk&rium!&Yb%#^_3zK+L!o*VA?!c1{M`G<> z1O71yzyw0;ci?9Wm_W_~0)PRu-A_z7drC8j_7c2mE^}UC*;k$DG z{kICJ86_O@()RgXwb|4#){Z)lg29GanF`v#5nEbT)h+lzg+HCIQ`y$sQAAYhsRUR{ zXu?gu3cGDV9U6lwJXmPuU;gX#`zY`-UKYTA-3szwD;U5Q z>NbDnNHAp7)3b;^aKsd?O74kL;PsCD@DI{k0YrK)N)8r{s?jd0^>q7N|IsIA?j%P;xS^wKjBafZmwBygFuF6pY@RU*jPXPqj2;(Xhe+1a=I|%^| zPSmAMW~C*oK`j8DvcX`+$H68&b!O2f?+)Xo3p!$xQ>4rg4`WurY6Bgb?<6TH7U-Fq zts?y)zvy{LZ3P|M-~K_p`&KaifqI+FS(96#P7IQAQQN5i&bM{F7$qHPzYJkbGQfb1 z_hP{Ac}ESb@tRTjLVX-Og~!6Kkx*-Z{oW|*Qv!q{)PiD#DlHxTp99*G@JD*fJ3)7B zCBH~ZcFCj`R`&@pw*|8y@e++{ur<;(3&07|0C64T-2ekmWWstB42S=Ledz69toNyE zTP&#~y2qDbrbl}nI|w%oK!M#UTBLH<(GMuFC5z7321P&$?4}i!q18x;<^i@s!H`RV zKckvu`>_Kws$<~^c2djwGL{0P)>Q&}TYXGxdy=KGMKF@#e;A=T^87uj<8J;M)n6Pt zWiGuq`aMBX5MWeKefu-2D~5l9q#(^xks1_d?~%9Y&iPy)L9n+~zn2EoAnh_kA2z_J zfM9Qvf56_wWs$ip&IQ>2g1w6X*xT_51bbgB{|$Sm{dj@BwSZeTpuj%)9}4VIp%&~K zzYbRGtJVDeQUcG<#p^UsJ)jH?t2S#`aAAM-hW~o*3!lQk@eviL{pE~}3p`%rT1Ql1 z8Hxq?6d66RW$LZ9RlwI*1)Q;Mongu873{#O#CQAhAj)E`f$BRd?PyhR|1nOHmCff9 zR2e{j{YM9K0_d;z0R1&c2l5g3vm;0c!Xm6~{zre^mizUTPVK8cI!GqV;aAmRDJu^GQ+zNsH&V^GW zn#)=Dt|z5*<$>oM4;^+NMLJDZmig*4@SR#;9lq+m`bC3sQGfJcd3k*L>~uGtMfdzG zYP71e<#CdL&ikQl^uzP-V;!EZ$F21w9q*_0^+)(U|KFDNzO_1!zkZc@YkU1Ze15u9 z8M^xwWgFvdFV`aa1utWum`1ERTjmGZXCye}hJJMR9Oe&RrmLLGz5FrY!~@)C6;Qri zMD_P{Z^ffxMNWqQ^H}#=VvMqHaNGD{=b+yAK{TL+o{WvQ@wvS9c^! z2o3ghv0!+bYldZ3$il681x6ZJhG7l+>GEDdoUurQdG80hJo{;HG%h&&Z)t>jW@pNJ zdO6b{OQ{h!N(qu!#JkygKbEHL1$ToY?_;(fH&ZKg@K3dxLN-6D1Ce*b**V+YtC>He z8kT-3eg+uTpy~XdM>QTmlW_i*quR;VP|wjw(#Aj!^kPy_&r$DxPHR2jP7Rva|J$uv z$7ZJy*}IY_uol7(c4Fq9u7z3Zb5nEOcAt;dI}>uV2NYYflTZdSYta$+6M}4rdn9n^ zDKIMnlx$BkUv3D>=*4WE!k;?^j>7rMb6Hmz9haLY$~Xu=KjKb=Q-m_P8J)V^93_#T zLY7S28d?MZGLSnDuI#&4F!7{u6@*wuigAR}z_^Zr3d{_&fj#WM(Nf5M$>HKG8OQE)|ARDdyBi{JG%$KuPpek2Xgff=Iyvaa_~&SO zRv9NDX6KdHqbbG#U#Q-vM-o^<1?JYallX8?2tm>1P$gRCqzvKp4U$9g5$mIm1;9Cq z`|HObNg)bJMmt3DdLzY#k|vAAB+$r2UPle-V+x9PvnTM4g~+c^BfAS8=o0m7#?lzv zwKH4s?J_fpn-#KWltaB;B;@U7PBSt*XLy8VOA~)FVt4Zj3y`?N@*;hyd*l)Yy`f}N zI5-C0P!cOK|MiBlpZMK?_>-kD)w zrNt`6Atly-4^K=GM#o1%iR;*x%8NH(ACH=M>q=9xM1EyNDZKgp8fo6iZ-o|vG8BMB z%&M(${q~EMd)a5r7$S7*n+|Q7@9*;t7O&D{U=2es?r>YJBZA&{HVP}mXhLp4lBT0T zOdN}1y#oJDsR0XNz4HrrLs=i6P#xw&2E3sJsxqV1L#WUJg0W-?{==rw$3sEE8zMt$ z93j{}^;7CQWJ)ywyF0`?j)elWyAI)co-IB@44VGKWp|3SYuNDPo|L?{+o@lHs!XB~ zt5Ub-mr%Ok05wV7S17w#WQ5!v#*!*Hz#B^VI0o5AwSbbp-cTBBgWgd3@@>>4Zqu>+8y)4jZUk_91lcpjIf6OQd3r)up@(hk%e3!%eKDoSs3`=X*gwxk zfyR2-vwDcc+|sTMcklY_m}mWjVcVAQ%6UnxPma*}YlLx1iCDa)Uj_mGEq0Ay`mrtR z3gO0v+A#5qpy2+B^YH>iM~Mn|fH~~gj(^X>{1S_RE{CK#Mq%}Punwo(ibK1yPG)S{ zL4yfct0t(#G==KU!F}AsG8N18T*YyPJ?K7(P)U1K(+Y*sV70A4}p!W29c9;$H^KYka~KvlYU2!%K1ks}mmhnviKV9$YoJ zUfuCT==>fC*E6}aoxz9xo@Bg!!GY>C>sD!ckkc@0z3|aLI04He>B`c5eEC9do4FV9 z?G~P{wrVYHXY!$`zA8H5xpC@GXXH*6 z#&LwuFtrJB!c*!*WHDP;0ZphLY)B^?0N7=UeYH!GL4`Hh`YYlVeV)j62G)r{OX5Tl zx${gY9huX&_w!W&14w&NTXg&~SAJdRMoSZbU1oi{(_);5=qj>5=Z?Q5;kZYptdm@| z+b*l(TKVJW$x(A$V_S~Mm~sl<{Oms0WgHRzLnv~LVU>M8)Nj6)^|yit-Dgqq1${`; z(?1{%q=7Ta-b@M0Nv}6v1L)q(;CHV)86DyrTY6z|3zJ7b;pLh|M5oA(saBb{*|ei* zm3-F&!Zn15Nqx8}c`x`?gG~g51sR?B#Z`mAMZmb*piMl_8jG%wPMq4$QW*V<6voM@ zkq?#7eg$rVcDm=5U469}(=9Bs%EyA0!5>gur8Q%+FzL;2X?08d5%}KCiX%H3+_v%`AKg(SD@K~u910I|z@oFjfY&F29?>;tRvnxx@u%zGL$s)9kKFuk9%787Gz za_|qI8j%)lE&?eAAGkh$NaI-}*z7-VG(T3nvb4j`BiD(#P${R)vWv^Up{h+fK&t!5 z9*VX9IFGQPKLa+%D@xd9v*6i#Bhm}w-f+k*WL1KeO{fJTE{w~ zyaf&^VI_cUeNQ6Ck?6Jin88~oP~~Vgv2-5?6xP~bdbM)tBbX=9eHwlOKN#0BF!!Ld;E=?Blbzs{TAIE_uAjnQLWP0`=&QDvbK$1K$Idm zHpRGTt~d7zZfP_08rYpAVR2;zSlD*1g8c<#{M(Vge;n$SU&HsH}dHC+Y&bg)2VsY_r7Ir1wi9W!> z?!TP!I~{_dwqzi{-Qu*ePUi)iY(0Ed2JvLZwU)3q^0F@)4 zo9UibTh)C$N-rDx_3)VN^RW6s&+}<{R?X*edq2ENtQ+bh?L*`W{#0Zi=fh>uKv&6-hEkEuexYBzp78a#&kZ z&?e+EC-rIYMbe=$O1;dY(EX5Uoa%bn-gtxF_AulGC%H69>YQD10 zTD?$6cEfvsMrW*f9YbocFq3}FD376Pr+oaX{H!se)c>dI*+2$~-NadJnUM4|znmVC7I```;$0uAoyq{0%k>2lRE;E12qNeYKRBuD6F1 zB5+XYZ(d>}+Mq6)lLfFjtBjPB3YM30eIfWx<6B$kiE<>&O`0KLtfgLKl5Z0!&FT2b zSX*r-PHy0{ivjKAo6RE2+rc8J#N_VTyx<84k5?u%(Yy-kl$M(^X?}TG4l^n_8Z5M@ zfwyc-iVUP;j-v2O2+am3$XNtSb>SAaSAzbAh?SH>wBc({$e@uo8P2ga1u*gk#q$3g z*d+n_3FChm*qv;ZoE$9PoBfwD-Ntc|4GrM(b)K8PUkH`pl$biGk9%*(ZNX}k&C?LS zw496}EJ$n^qYoxuYkS%-B;(e(3Xi<^FeGMiBP z41k$f^ITYL=Y5QG_5R^Dm0-Cp0t*tHAJPfCCx8-wQpfxK{`A`;3Ok_SdlL-)qD2y-Z3tl zU+j;RX21H_RWkqDfpR7;pAuZ3AHKFQ$6f^RI<_Jc9)5-DWzs1ic|v&d$e<;Sy?H~U z@pW&n=LbF*ORi(mvU_NLS!(p>T<>&gRj`t-dK4>JiBVGy|4S#XIakI{7Zfe zWB!vwikTJQqs&aHcVf^9yIlznCF_i%5Z}b~Lq@;VE1^Zt7h5zHY0M>6{l-QRZq`00 zKRDBF1(kzgbS_53C6FbSiOI;LiLc>)#YRD?CStQyz2VO!r->4~E{ zY2Q%x6RTF~!_8h#ofKH7jHO>JWRN)Ko}!x-K1JFq*w5JAU?ku8!e8(?{bzGsae(Rj}t)z`Ymf_7{h+$kUl`(xBMMzO^uF;g zjE$@!6Y;Zt8)@)})_{LKB{+fD+B37e+8c^|=!yQc$pokw0mYEf8f>^Kjx4+PjDy5e zGzIL{ChE0Go3Up;mPymTY*yg8p6}_dWtq_WZA~D}YAo#{zd~KZLX>0HS+wx;Vl?{( z2El&=uzVMK5LOFxF;Drz{?)z>;8=6v)}*|hw1U>JZ$-D01R@nU2D=;^xw{C|x&a}L z@pQ1u`c=V?8!K0qlA4OI7%m?SRMD_@+3iv+V`{b_6YJHu8?HqIAN`DNIZtGbxfrR{bEoOCT}k!^UNv9nAG0a8-MLeA05BuRhF>zLB*3|HKvN( zMwm@RKc`SVE0Q@?AbjO(2~}!LM6wd<51p5>ln+F3oBg-?-xo6Oaj~o$+Yq3q(YUs6 zdz>7U_;MrnwHdD)6hGWkC=sG3nh{g613H={bLB7WdHE%C)IhPV6{q@KC$uHe!Z{`h5b{7R-xeVe*!_7S-d{>JP22 zIs*?Kzc|xjD*!qgDL_Z_s_SQ*@E61rI(V_eBASNN5i*Yb9-*LPPtF36js_;TW@;!C z>qMhZS#X0otYhQk+;9o_#x3(Y-EqSxMjpvQa2KyU_qvWT)_Lx3djam%4>ZxlutzH1GcIklQ+|AL5;nwnDD(HBUQ2 zMW*{zsQs^zuLzM@gTW_oBSPDw4_%8VVqI(6{4Dcp--;vOB7cM5;)3t9U1*8G`}yg` z&pR!#A{|jW&s*~4EL5+giZdSJ?gdotbJ+v3{u@Lg;5iWmT4@t^ed*a5 z*&%-m{FS*^zC@ZY)#?ajt(A6=F#f{6B_A}D-NL?aEP%IVI9T{>zEByn_9JnRw-uv# zy%AOCHvQ3OOgVJUMRo#1NbfkS#7%>@(4lMAD|{}FL%_D<(ORLd_x{2a?*-D*@L;|HSX^j#`=(=$sd{%Pyy&aa1{YQ8Sg25hADvvgSrq%=F#3VdH|zcS`qKN+9kmN5}+G=oPhEq=P4I+=pKhCt&dK&TkC zMpjx(4>&@&blGyQ2ea0hh~mo7YcE3T=l5KNOP94a8FwNLVC$t?PI&bqsdQ=K>xTnL z>yLUtVrvQ#X6I*M!}P()T&I|&#D&t}i^i{+=_3<9h!8uzhneA=`Gi@m!ZZ495(d(2C5 zhlkdFA0#gKzn-QA%4JX@{m)s|0a!=#{I^;4ABzn&3nz0$6Qlpv<%V|Up2>&sxu_FB zT8_#sv6%c3_)P7cQm&w)uI*DR{sJ$ayH_*#Ecnf25ihzIwI=$FO~%1rn#E9%X0hOp zW-*t;KiVbQMb^juVJY0XOYAiSpjnhC>L!r!5dTDiYva1|CMV6+KsrCyeQx-w$7iw( zyJjX;Zgu<6bMC(B={&XLE$}+Zwhe4kiKkftRqw}wS<)soTM|f|=D5wAl3+`$a+&`c zZge#M8E%CB&*6reGUh*q8zyO?bwRg>uB+j|fmvuwR#ZvRAP$d&M4@4h9y5N&r<`kk zndkY2;!7LCWBfR4m;_M0tUC~@m<~_cB5X+?Z%8E(SM8+9!A`D(i~X5pDkG}W?_5nE z%qT+|Ew0VihrrB8ViPX}irC3?oV}SH3_6xWYOGa#adA(Ze>wlijV0J&T5!%>1_Q7SuC}V&pwf_WW z9a-d*gx3jKfFWG6e(xk$vr}JNk{Kzq5H0BT7ca`RN?0-{CgsaJpk01BFb*@TP;sYZ z=g5on=?lA+E#SMz+f%F0h;c-Rt#yKvVTbl&?q`EGLLF%fF<*}k^#iN2*nI)C%Z*Kb z{H4RvK)XDSQR4`5mU9%v#W!Uap-Kmd$Km|#EDw2`K;zfrWRPJ+JLy-dF0ABm?8r6I zjyXj+YQ!_9e~n$TvMbA_IzJ__x`YJ>$({o%h=wAVN^Z0zQ(t8+N)llRi66u8iw6Aa zSD?MlTI<9|77%he9BfL#mSqi0VC(g(V}D-XDE@F2nKBK9mdhi^8Y=2O=kK&~!X3L6 zDox+4De1gG^Nm1TcQu)Z+M`eOu4my!T57(7vy%x{*n=M0o8TlCgCW-;*&8|UI;3OC_$E0!pKm; zr{{cUr-G!v^45t%AA++I>3zJac}ey-6-5271Z;v*q*kw2*|grwt8X_L6pfXM;vai= z3}aQ;&K?C4&0K9aJMpdHOtPABoY2<7HscCb2{!-C_`rK$Yrj&(d{Ne<*Uaa= zP)-m%L{wUDj)SsZ+W$r3NtEXoDsMpjHz8UQlGDtEWrx|SgIP?X6koIJw+9xEQ;=@9 z^afto-TNu8ANoDtxB$&J1n;W< zfJH#c#b;yrzvdgWL!-}N5o`b~@;u*w(Jlc>RH@T*USHs5g zf+mq(%q7mwh=F!)Wh7I9dwMm+my2^ZO&Stf5Lu)!_nsj*;1JrzG4s=Q#73H0J!fitxRcEeiiV-Y8Jsrvos3iVALTx`%z^QSuQu|@ zo70rKXST?#if+jxBp<(;IBV&v1Z|60^zd2EstuOi<5=l!%|NrpV^G745ey3qqSbQP zL4)XQ&>*@g0>l;(1~*&7sb7@f4!B^19iv)O0kK6ijHlK9Z4mwa??LpCvUDC6ddF2& zZLStbUoK&f;gY!nrx3TN^4_)vf9<$P?3}{(SkYP2F7eY_t*FUf?coMai7_saauGN} zOz-iqDIRQW05!~P1`-3Qh%Lmy{ZcP#y8xlfhuydz+%s7uusTrBpuPo=auL%m$m`AI zp2{;^q~nv4YsN+%8QEUl;t{p+`+ji8h>sMp-XVa`rAW2SG^1md(I!W$cFkYgF%e{3 zJi8CGQ~zyTq}&()|D4kr;&&W;O+_TeWpa4Y#4p0`j@=DD@i7sEZ`O9Co@9pEh;F8iv(%#Htas&uweJ z*YGcnpY2a&#P37gIkZ=>5iQrRiqzucv#8l8DY_fJNX6%vjy+&KJEtK|OX~JR_70yh z<>+(o-Tn4lFGJdhbAamQ8c@BA;bxPeCjh=czwu|f!TLX^8}YxV8)a49TmL@YC~j>H zJWc|p8;cpIOwdw)O*cfGMHL+WOgCzQ>4whNTwuEKi8h(;ovZo`-9vu4j_W!rE)7x& z*1(zn1iuLh?ey>IhMEZtIw9?7Mjp5pp|W}XhUUJMLuG2T*qLW?dv4n53 z;gNuCU2>kbzmAnx@IjIPygD0ge-f|itB)q?^_OT#6mm!@RJ85PfvVe+zgWhcXPpfq zBR-fsu^;2YmktF%v0SS9riY^|sAO>T=?iDjuL#~ixzy$f;jpLZwJ zfTi!#mF$NOn#xZ~HwIsIzK{r*kz z)9v+n*^{>S&2kIh13txy4%v5}lXF|WU#CT@ZTH)&$xn~&<6~faucrfjZm*>hp6*^Z zRud-GDkN)UHk7=Rs7_PBxC%r$L#7P?UiWN;QiC^saXcWrv!rwJzP^J z(MrMKmk+2)zW7n@gAP>5pb-9_U;z+Haiz07IcS&{O+uHaVymLE;S&*A(R_w%Uw znGrIOBObOXb>4G53rAnGN!N^t)O78 zB(X_~;>cm%XKs#e3kKa~mz3pJlmGb)>|Vl)5pR^g0B&3G8z(7zp`ScSw|q(VsCd`y z*6lxc)xDrywcM8m>|b91{NDk)>W_eYDy-_u5kgxV#CH-uT|a?L=!MGZect652=4jM zyXqXrf9$Fm0y-qSk;-abERUsW%zz2KlQ>goI&xxMc(%`+ zDp%?cJKOwU?CjIxzu4J8GT-q1YA;OpNE7)6fmk9*8Hp^9=u`m#)c`P|^NLHqDomXr z9w`YEVIke&En+^hV$3#zJQ#-Ri3HHu#~^ez)BlamHuwiRoA_(!pV>#`e?(_T{YP}R zsF#BMGdeq}Vy2(7Jg@o4pcw44oZ`$IrU-)-?rgL@sSHMYi$!A6DhCgDZ;X}rtig1m4tl3V93+uXAAv}&d&Ia z&VKzHovkYFg8nab_S{z4!k2$TXOGNn`%l07gU)`pklBAvEBX*=)E;ryb#u0XnWTV# zf90xpDF>jld3sEuY%E?izb zB&h{yq?hR1NbtYeAowQKV(BSh^n@wF^)NW0xkXF?CYlqCaX$oa*dTN;rV9@RFQUc^ zG$|U#e+t5><0e_k%m;4MQ%>;HsA&1YFMI4sw+4L(R8QKMO4EXzhFUX5C-`cGw%wTM zuH;gr!3tvjiJuO09%`!ogPkpBpz<$vwx-rIJA3Gvon5b>|MM)On&Pwl&vzqgv6$uQ zd(cV~Jizh;Bv>Rb#@T56p<>em4YHxXWERQOG_pIVP`C%#(0|XWBSEw3woj5~aSb|) zz>s+X%h8?$y&FmtR=EH~{e#USk0?SF*`KdLmXz^el)@);?W!)ZVABC=MMprb_`*N2K~w21cXvsku>f#;Nz${U zN^NOO&QYUY38)o2L25;6K&`m*viJL(ALVZk`iT16em)oAL8mS}EyEbkUh6An0@R9h z<96;Atfhj02R&`?)~R0P0PuucOBWn(10HlLz=NJ52iBlOBTsH?BP{XCUiM&d5f|{F zTg5MuaCep10BXgeI~72!$Y@lDpBAmn3MmEf{^tM3p!)jFY1*Gmj-y-B2Fb^jERF$W za%qd$&G1>NzXsK1$YXZPdF#S%DXRn=#9YS!6$Ie@wVyRWVbuaukiRl{zrVAY6u;<09g^^x|K3w4{%cRIOV9a-_ea{v zGgCTh@bHv?Sw6*@P^b)xCRKIb5{&|%P;f05i%rvcv%gVN)l?<{XI*)sItIR4iN%bmD zzT^2VVpPb(Er0`kzbFJF?A6iq)H51{cQkH~p_0=qIsBX&X9c{avbV^}4lcnpme75@qsH*!2xDUfJp&NJ zc!^LZykCPhrIOVzGk*V0^I5T2&oNQ^z@?2o+i2tQ*(2LEJ}CuY{`GFqvV8gICbViA zfMrzu$$i6Kth?ox)|ScUPs}_yPao{MDY%E@R;X|0r#5{W%(iQt-Ng25vPl+|TwQb;iY!Tjdbvv-@aQ;Ubx z8$(s`M?s1+L&~8kg_@C?!^PUBFGo*9SjbfFfTD`tv z#O&%}WDDmhPuW+Oe4C5>DTox3m&eIwvFe2;Q&{mgK6kS%w!grQ4ud;>9s4{z_TQg) zKmBUq>$tyJZGXBx`0(_wy*&Gb1F*CaQKa|P9;*^e1l{-^&Q4Z+?t?QX4fKj)sie@p zJu11e5g;UlEF6Ys$fx1+vFK(W8jwkV=MB<9mwWhjSmppTYGR#<{xkTApgRxO!h@Rd z9Eh5og}wL>CvL(zg*i7?ADO!Q-b!`V$v7?<=p&Tl7cY^f=-A<)t94aa_%?N4f;Vux zcIGE^cvMj-K+pypua|#JUradnkYn@a#x*qhv^Bnz)S!1{RuZnSI-XX^T(0e z{XxmQL!;Wbh_L8%Q&FLGa@I819GQJt9=3q!P;N69mhYdf%QpxhwK`Ri%+^gH;{5=N zdF)`)RRY5BcbRjHCUevG08M)wplM&R<()g+Qn+Hjs}2O~BD$3{pvs+KF9F8X=cH;) z(w!{bGP5#HJs|%K0;cN^yO9O@=$lHd-qY9h<2fmt7PY(=+6TY;ZW4r>hC!h32F2$8 z9H=#cM>zlcK&@yC;P*^K-WwQNn;8FVqw)Wnr~e)MK>*U0Uwwm2GIoO!k9{-f5*OaN zw=F$o$lgz)l{Yv>v;!%DBoIeFK>3xxacHBwCOWp1%;Qe4fhEDfBTc3EE=&Y7-T1Sp z-ck0U&coehBGy5GT!ZNChJD;`D{$-?MTD9R`mJKtJL=W$kimy!_d_oo(3h9`0saT+AXkACak zE4aTCXhUCUO>p36F1bh`1q`U~sYo)SvaLN*bD8K-`3Z}1p|BJ%Bpb%1^D%moi-L6l z7xhTMrIU0U=d_vND;d3lV#;%V5uo5E6N!UABp}3#?D7ej}LWo{C=9*x%eVr63w4t|h zM^yYNKVb4u(n#P+G6kON*jWON!bqvBaZ*mg>Y8+95iMZ$>r z33H(0E(_?BcM+*(&4qkI6SEXlPm?n^$U%H7-u-a6fzk`ThJug2oAZOA{Gp1+Q$F;G z#z&m^sl;q6T#v9ES;AceBvq6TMYz~q1f+^qB-}ww6?1zRwTi(ld?)A5NB1C6xpSKv z-BL8EP_v2gMW;KafLb>oDnBMT7|nYm*m$f&)$8+IySsIRAKDG{cITyRE>g^cB3Os( z|MKcFQ}h0n=b2?{pr&|A-3?WN>1W%6DNG{uuJoS_wYqG9TmxoWuvVSest62J)HO+J zjY=ChbxHZv-vd~e{3J&xZhtsEM)W0;vFa#bt26Flj)sPY+5a?YQ$Xj=Y{!ZFrZ|G; z{z54js!aa<-cw6dZGE1M^vC4rk?ubK2;m7SoG#o7b8QKL$8D^>ElH;bgt4NEk zz3WK}RSqvz4+_>F{=QD^b|PEpEEA;p`#O;cE_#g?)^SO*jqg0at>$;xls%X&6TYXWC=*0(b+hY@UemRztP#V%6rn24OXv# zc3TWsPX_|)X$s%c=XSe4uUqF&yIqYn@NXfy%IB@HgK!na?+{JH)A^Z(h>l2?nuE3Z zZGPpoGEiK?V$^5O&8XLC z`7&wyWlrrNHSFsHRppZjWu+zA!;X zHRL~nG--Xmga;@{(@Q-E>HEKebUKLkAqNW5?7xFF%yW>&={>ps6Que64$`Ze&q3P2 zomj5+IY_gEf;5Rv|AJw1{AKM_jBbfXHMk2}c6|=<#sc{LP{({gPz>|yYZ2(GKeBRA zw@q-s9~W>90QNY#>BlfU#uvdytD}XvItEW@+uv?7a|O?Gwp$v;jkYYWymjQm{DHd> zfkrw>UsFJP^u6>$#Kjm_A+3`fn`f-md$bRxSnb}cXh;X(xf0QgnM_eM3@}3n3geHH z$FCefV#S?oEv_pN>?7I9P54rQtN$<9$I{=hk7bpA!9D^2*oXFS*vA2OZrlA%!?!q&y?seT+AKK zB)#D9b?7fPCoU(iY=PUv`rCZh*5GYShLgSiKd_H?#~|3pL3zZxWy8zF6J&oERo~Uj zhL5m_?J{gug|zS7G&gA&R}!uj-4O{o-XCGh@=)>!M!N%>wy5?!>&zu% zI2cVgO+g9D67Ib|62`Z@#}d7r%F@mR?5Z#GTF8z+#2VU<#1^+DieMOcP+IBf-_}SE z7t)jQ{o3l_d$=NG=;3`lxF`H|eIn=c^lK{n>2@#M=kCnsIYHB+#MV>)(v8*+M$JqD zjt?1{he!$f!mUqsLxra4Dl!`87gqz87_3PZ7I+ALOw$fw13 zrCF_cRUITJfV8nT)tIF&RX#5jWr1YpdvM1oBkRs2Qjj}AnzXdF!9w&z z11nQgbyl1~YMKOZ%z>#X*`$6{M(J8`G)`jK+UFk@r#+aU5*jA3BuI2Mzmj8jAXwXs z8fpsRM&-ib?8;ow-?}EXGXhnnj-uP8$&5~kyNwf*`=I1Y8BFaxPoK0mEc{@`>ZMbuHVEIBS93Pvr0j)}-w#;NnK zw2bv9Eyw+PTDI|M%B`h%PRkIWw47u?Hi^4_FeOBfmUC_@=+0HRlCf_TmuZ#jxFv9< zE(`!W^7W4i2*DhYsigjFK^Dt~?w_|Hbf7JWE(a^QBQCZhumzF5d-K5B>tVEwON|-S=)zvVL z1h!t(mR zqcla)X5nXnD#LE@WP}kgbf)uie<|!7zs}ZA4AqJ9i^`4~{_n=Q2xy$WfyP-6Xq*dy z#yOB!AZavbf5zN=`}+*gI2T}{$~;giFnqGYg$DEWfqP%64>oOL8bGbN8#b5NpL@oy ztuQz^IX3kY+J|J&@1M3t8fcKMaaJ=QN~I>GaC2zKsn83!G|c$op4w^6s0e(>?o?W< zmX|{b+JXpy^y2|ca)m?bR(cZ=;=8>sao^-TX+Z8jT5U9Uxy7SeG)DNY&AtfA?lkTL z^yA2;jnP4nxZtcaDix+8M-yLO^^}%le^8js3h|!MEUO(kqOyO7C;zGWez zp%t996z?9GK#BIkOPhOxm*$VggN_#z{}dUFOm(J*jtrnYZpuA>KBGLULO>`FOXfdp zJh;Iqo%ht&cde!0H;xx|+Djj+-_s-1RI-m1+}9Y3f5@2dtPTTE9@y>}laD)%7aG4l zUOezJx1}8vEN&#@W9PlP+uh1POw)`+vI{B0S%tpwsJ}G3t(|5 zmZv(w?DPotHg49gP=vS1t|CZmmzct~eXKUduq?K-ZEz<|2o{iZLlFAn!8(% zV4$PQR!Q7A-qz2rCQ}cP@LK7e3NYd5oV@9w%Au&AqcU=WzHyl{sBsPk8t35I0CnYk zYEa`018SVRU!xf=Nj^vA1<)3R>ec~iF(L6eDswVQ0U!^o>QALCMuVZMs@c!B#vb^% z_U+dBNZS2Ait6(@QktQoR?m1$5XfWf+1B{&`PL9k{&fT^a5rVlI?Y65Xb|rSk~FskJ{lK*%E0j{7kn~ zpvED1nz+l`6JZ}40X0;Rva#Z~vJpvM;aS-@Rs|>^j_`Hkb=1nZ7P&z>1|8r7U9m;! z!WDomDXb0&wn&Ltocx6`H$Sv7cjU;%AIQU>fn!7bHI{~F%?#++kkhCxGo?xs@ws+h z1g0R70LSA7GzIZjNA^H*mC=kLhhG6Iv;l$RH_Ct|NbBm6 zl`%mdxVBLSuy(#9ZEyl#zM8eSg37& zH&(biy@i7Sy!lT87e8&Jikt=MtZy-N@KC)HM$hna1#M#R*YLhXU1gXt{xHMA;xIkDLTFA{D*! z_djttSg96>%b!EcHC^D_Z)r7?*RT)p^Wa~N>syV(FT~gdL`hw&zmsNtLw(-I(cur~ zq#os=WS9G@;fl3D-u>h2loF2MinyjT^UnQz7~tGcdwBoAPGjju!_nih*Sd_RVI^jE zLNxOD652MzW5O%lsLr_k$bKHglY865NQHdOi1zbGgYglH(|aXMhSbh4p(aNOfo5aF z8G(8Uobapek#J?l+y6yb-<^Vd3P=;`IhX+|RHPfF&WA2s$RKzk6i z-?cM54~7%I0;qPjVo1T;q?py8wd7mBn>J@mlnDoF=XnTyjo3sdDciK|%cah$s`Bs# z-ZY3Tw>rL&^dHXD4B>qTS93EPUEAahl}FwOl@e7K4E`uwGP98L zysE()7qNzD+|t~#f3}Qb%^>A8NWhED`nS$FGXvRKg<$541C!S02#vQoykx#xslAAu= zD9RYxIu$v6=V}Ts&^7rZuM1r?&vsH7?{ZV4vNp%hBFf{-{U2C|vFm&L{sr4Hq!Z2F zQ!P-xjAvOZ68`P*cfX9BVB1>)WMxny{?A#tR}c)0_rL6y9Zj5soE@EPZIm4hOie9} zglw(x9c;NdYeE{h`x-fhcL<47>*_DN~f@{@5ro z0#%&T=`5Ua{(!}Mo!4<^1Yh$P@(dR5WLc2_n>3NCh?5koD1d5pv8Fa#G0M%#g$%o;2@dgW{?w zf?d6>M$S^nGk7%b)o`|*O0^>dC!t?ppbT9Q%){9;a`=&zb<=i-iV;dk%#Ws zpC=yD8=8dCQ^34w{Z#=w&OFAIT@+&JyNd)dZ$pPt%eE5Acu;c!i04toe@E zu15XxQrfZ)IxaK8+6;vvxw*r!fd?`14O*ZEZBHB6`VU=X`{c5haGyg3GFZy% z_{3Qv3ifP6>3x-%D9~`e^wY88p-VwuIEmLl;>?_|<7L0ZaC}6UA!^CG7R!Y%F_^Ur zLU-fPM;FyEsu_)`TF;$XwoYrDQ%r0zeXn2HXB{G*0Qq_FO>hkfk!g!%bt!a7=YseI zkEp@Nrf9Bxfq-M7L80B29lW>Mzg#-qkwrYj%@O-xnmBU_b*8+PZ2XKxnOQNYy|PqF z?QWKJcuTyR-^(E|R?d!<+^a~$M{)LB7@^4}lo{-rh?8eu&Fnl1VZn5|;Uur5Q{b%`?c+bGoH%(R|eJY#lm|*D2Vx{aWon z5OuS%B0$Cv?Db3Rv?kbOWe$Z6*g8y+YM4N;WfVsVhFg8B^YVyc=`-Zsr&@^J4g->!^Lu64ij^M4WIfUB;#sfEFj>rwx78^`{ zh|9x}PFuhyCIO4$>K z#358Ksq^e0k|aayUtKi=0Q(eGo8Em|(HodkXyyrs;QcC++vj4?zHJBRBqgqLG^k+nDPJ^sdj!3kOtsTKsm&!8FgO;>paY&4I3=cnx$*X+ zk{v~AIKcDr;4ygVjRm4xAxVr`Z<*#&TXR*;t%+m<6+P?|Ld+ny557r(f80ZdP##Qw9lH^8 zw6=a=<7*0=a~a1i(-5HKiZ~KqzK?|gb}@!iVWZ@8O7#XijWl3MN>?;R>kAiTUu=&j zjv-I0|5qjpeku;t@$W@$L^Fa{s9Zur3KgG7U=|0rowK*?;Q*Zom&5d$MWvTA1_gWk zYbY&oXy;uKK-aR#M<{KC)d4#iUHme^wPg;Eoc67x$H3x<-2q?ZAP zG+*lnRX7*V+^RrrG8U$ShKj2HM68;9e^6eWRBIM^SEwGGxic@gY0fZwMA|^QRBs+{ z+t;g9DhY22t66Kpoc67L4Js^mSyITdK=#?*Scb@nvxu2O>eB$LBsgQOZoo)G4=Wz| z0t4;(+1^-&7ubl@F4%+X?NX`kuZvk7)Ha&iNz;*hn-oL8{(@%5vIJJ1rP#$I^4lIr z^n%5RM$?R?H8iPO;T|RLuGXIrC_5PB;V?pDZw0b9Y6u(XeIzMmEL7}^gSz8)V}dKi zI^rUd0#q-pUSBGdGGh>5dq;>Jh*ye1I3va8U;?Taw!)~ZqGC4r%ZbgvM+73^*-#lJ z|3jursi^1m{8c<$6k=W4MFU)vPF*;|==btf!FE9P!V=~g=7!;352#+g7Z2a$(k)IR zysi?LEn^qf!sae7_BQ)rmlJ#RusY+hH>}>mA={ zh&Vk3hgo9nAwzBu4|}C>iz~OFkh#2j$y>SFQaxLkR;r8yR(9QYm$5w-&kn~#oTQp8 zQrCP4fRU%{hxuFe;y^$K7lY&WJ|kNQOjD}AjSf(~R9$fv$a4k0PC;D^QX}=+nE1FQ zQ3R-78aC%=*XlU>Z5HE~@0HmtV%s%aQ+cxl9hFjcfKZUThb>(qTck8`T1puI5J9q& z>y>@bkhb+5{0r9y0Tb3nGI$%V4{L`_EN*Ks7Ux|?vN>IwL2iC{8AlDhC?X}ea|u7U zkFAeltK&{&=`yJi$;2oWthm@zu=|wJ)Ruc4p>Tx7mk$T62ZS6ETE$HWS(?jg;;5?~ z>raZ#L$8bb!wbvODu>9yhLyJ!qZutD+I+w;F7tk>v`%HJdynMG)C{ozKN=K&eosV+^b8FnaHcZ&g0J(s|d6owYnM^y?4$#&D4;+pP-a8i@y&c zRkk|YJq~qF53eq}+dho;Zw&i%cOZq86yli>z zh>X1mGnj?kWVSvBR%hibx%&6+YO_gm$W9l*ey`LNFkqs1WPR6mS_~yxFJJL`T4UJ^ zEhU+Zd1xY4y;%tBm1!u9j{3+TS4H8rGJD&@NBMqM_17D3^(x)TiWaTs?Y{30AZ8_bC zcDCTV)}1CDz7ahN#4#Sb)qce_$u*fK%t5Jm37zZM($HzE=3HC<;E<9J z!k$X?r!~qP-3gnOpp(N%vnr=gS(0PPXxxIu<%o~gxgdx^=gxixV0ADs(8J|FKWW4P z(aHa5D-3?x^uc*XG5bIwZyuG=+pUhx!KkAywmGrWDY59&KOqrY|Ee9$EAN_m>0;Et2MjEN?jb`E{lQ zX(#yM%fqHvGGtD8m3nJNiZ|U6Q;ag}gRT5D=54)ioMe~;4&*g<4!AL)9C-r2zYhwP zanv0=Du*@hMozV&8rXY7C3KS4WJB?}s6NR3`7B%o1Km6whf`2wC~yJ_`L*^%GZ?%=gdf;GgWIS0pnvuNOuNiZ zYv!LVK~EY7g+khooVj4Wzc`41i%~y7M<}NIRaLR&Y7BynUS`nr8y8Mqa^!r8HM@40 z(>k0ijovQ7tq~pR0{cEk+EbZk6}@ulPk!AGKXZ8~OG}QUnn{GKG9uA#n@8(vI&ps} z^^KZ^^h?ppK}mWdDQTvdu&<>MwV_B;`6s5oXA}yOqpre0&Ao7p$)_`!Tp%8GCc_G; zihuuOJ4P{NB)4t+eU4Jm{OVC^!lHVn#D@lhsytp{%840mv>Q}i^o!QwUUg*2!0Pn; zhX~nS9f*>Km!77AhT!<8|dG^ATlzc9a9J{25EW%{pRRG!LidU_0o+y;eoo*B=vV z@{tVfz}d7k-8F+5kh8kY6_E(kzCTc<$oTcZei~?Cui`8{2wUk6lS;Oi4-qZlwj3mI z|1x{50 zg9??@@r7FE-=}`jnbr6+&K)))k7pYeIO>*yUNdW9G{qVl(8e z?65Q|3&RW>I#7!qrKnrGCJ6TwxEQU>DGDfCtu_Y|I^0vlY=T(4 zKxUpQ8r>x}fXMmhwn);wp;Zl25^}pjZ44cdqvyuuu4!CMIAIg|29pm}reu=?w)w8( zvyKEPM_&)*=w-!-=qNO2^cMjz{Y`5$kfX1UG)qwfmj*p%%wEYx5cPOeZhYHMifJ8G z&Ru#p5@}lrBy^~OgicaN<0PqugB2%N9aqLu+{>SJci74mhQEj)KfEh;xNckkF}Lwu z_^7uwDyDc4TXv$x*JXIxMEG%@a_)dTCJQxJ;1jr)?ps{dIH!1HNV&q~`5b!DueiWJ z{i|>ZK=;kmFHYZ(ED`F)$h!W)I|*#802g3tWlC0j7p3U|z&F-WtC623Lzp zbB=`%EJ>e3E8RU(ON5nE1}-tUJ+7wS)^`UcifWf2=4cZS$~GRRz~2~J&T9zAh(U>@ zOr`)~4ndlpGQ4j52)=Ub+x|_g^R8Avam$UOYTn9t6v;6e9<%UY$x7~jCM%y-g;~}g zzleplN%o@OQ^QBxv%|aMJ0#`2)#k44#(cOyvSUoBGaH~l$3WXMASsUr3$NIJdCD|5 z!?lfm0Ydawj6gjn$-Zezw=;cy9ds<3ltZN*RvluAD6Q!E&0<)%)T#y|i*f?sX^fZs z1{c2BVrT_ZGcMMQC^dJOkRk&4oSNW?SdT%Ee#HQszmt{B@9YpY`qn<2Uomzy0gsv6 zb4=U4Lp6*%x22OCX!ZqT-zDQ?V@eHAH0>qOV@8_xE$Cd-s%}%b>b1;Dn(pDv1C-)- z9MVv1AVqIH0`Vl=0-TGc-;lpNW<2fJ<}G4Dj~TzcWl7s1T<-k}`Veq^)1uJs>h7<` zaaSlRs%MI=HWuP>>(yG9fgUr#6;;pnzktV#$>kC=pM?3$2}L3c0H>>+9onHWU@|O~ z+X*tDs$N|1I*~us>}E(LB(hLo*CY=n?!%Gv)B1w%1oM?qmfv5ycAxf+Xv%CCN`0oB zC>C42L)J<+#5;oTamt+9n9jkdr#6JwwHg0%YnTV48J9fx3z{;glK-bmUzogG1pw8| zb7gc#EQ0gXA7DhoR7khNh>oC8vUH*BjZ?`l>z%9=^GStYO>eC}Uf>6%_wo0!D2ZO; zj+IW>e`hk|dZCdlw1!4li336{w)q-xz=^Fy%TOYS?{% zV+qG~nQ%4T>|1EcNS;cR%}Aeg#(%Hy%vQ8}KG?$Myp^D|H&>pgAU~^1RQ$#Gl<VA>A|&Eru)#uh z9MHJR?vi8^JXk+kJy~Uo)DzuWbIO&LXy{bbb*RqoY$#zpiUdlR>VHa?W-N+!-pq>+ z=g;$|ZRXzj$&MxTqjRdQnsbl8!9gQ@Y;ExoGjK)<8r1*u2rmTuUcvES{wnc@;8Ah6 zH~la99R<6UR^@*ej79W{KxX|Ak3^-Pm2xFYv{kIH9t$ zNR~wHgwt-~1lR0wGqFA+`}{acJfeGy^CPrH$&7hIn%{5GM?ZvCg%s7F)J9l{yXBDg z9_&vys?*YcMF+o9q~^0{Q;jug`9N+(Dj@j!MN~)+5*3b@2$28!MP5v-A}@L@S12hn zAD-`Ja3ZYwm#NV5lcr0wZ1!AWp`^#~!4A8gqJjT0THDHBKq|bn7+fMi)8yG7I8>=Lk8JBQA zurG_rp7-jbm@G+_iPj01q(2~*sb@a09@&y4b}& z#AvKt!Q**{b>4+ppD$hV-vp0nog~d@`oX*D41nOleIa;|4*eOnTW8$2$t+p`f=8W9 z{_V5dC_wOh{LuUg_Ai1bKkpp(J6J8f)u7zBN*JT}jq_zXrmmRkor(zx{xdw@JS*k+ zeZGJy{KotXxxD(gN27ueI(1q-HWjk!$mGP+Q(DSycd2bYEgF)0TvfEJI) zn-gRJ6cGnc z_OvtRTNRY6PO&P`nJIBcGMK`EZiInZ6L%GGw4-I8Yp>s5TEFWrwG!Gl0)LWN* zH5GNt1%r1~D)D6G>+3$$8(SDxvg*eizur5s)ycJufH;c62^a{B{FWYN8CtX21a;k0K;jDf9c!_Cdk^EFs5!*Q~mRAYq|6y;Rf{54Q6-1q4oOHE=WP zA<05#2k{NK8D)Gk7|%e)OsYq~%LL%=oj05S?oOZo#^Fn^edwGckmAWiz^$mCO~YQq zlV_l00KgN@MbHxeSO|OfCMXiX+;rZ_JegrFdR^;Y(5Dw-wkRn~S+M$QRxU@`cZ;{Or~F zSA=J<>YGp)Ns?6o41nYWP z&v!FCW%x)1I`46PGqEn9cX=kV#dl0SiIqqB@axnLQ7S%X_M6!Nzg0JOcV1NU7>WTlmrr@07i8e;20s(O*j$JKUw8uG z3r7P^N3%h`a0Fh!7ruDR*Y)u(Dn{V|NpJ72OiGgb=;H%^YFjPX0&Z~vZLC))lP*Z- zVw&MI&!(IErfxG_$0-w}bGd#9deOPe4ciSt2x3Nz! z2SK{<&~xLBTgvd)AYFJIb48Eh!m*gLD=5X2s;3IN9i0%Vm(R;oG&)<}Ph zRv}5ctLBE8}+Z=+Gk7m)lVnyr|kWR#1<}8refg`{j02FDtkd+eB^+7j!#Hr1JOe zs0dxc&kdLl)DwT*j#3|>pf>Q%);;s-VDSLAqiuiRjtUpWGoeS+-z8m=++rS;&~osZAm!jRxI9?U{<*W=IaS3dVw(LO%+n}Q_2 zpC2|!N$kLVaC_pK=OW_3TE}#MNBcbN4Rt*?RXawjb`+J8%dwR!B)YqTmo;f(Q{{4V zyIXs{73hwL#e|9Wy4ALW@L6P*Vz^d?G5Xv$$8)0D$3YZDq}_z`P#%l+r)e49t`C`j z$N18;gxDsAG&U%Gw#u~sX26<*5}On zsHqX7dpypSumj2X)%JISfN}fFd1wc$6YfY$xut0y{Ww=3y|d`dPWWB4WK#vs#?fhs zjTB;Rtfi(eCsW+`?G5b;{6}eC3}Wq+YvXzwWVzAuViOfJ&`lQkA?H?R@4Y@3f?itC-zGDrk5}8OM-fqc)M;j_I*p$3a@Md znnxYfv$UI~bWDPu{gd92>^3BC0%#u4bo`&^<}N_YBK}{_%>c~cqG&gi~ zxja7j56RO~@M#g0kOb$s@i{vj(?f{&n2$TapaC$C2mtel@FZfK8aEjPC{Yu8C&n#K zJ!Rfr#WoG(K}oR}eRuK1mLU|W&KwdUlyxZ8k09rFHiMeP7&Mh~mWRMYf#jzUxTza# z#V}$=HkJQY=@Q&8iZ1$glOinmc0NFtXcNI8O`M3To@i}%N5 zw!xAlx~B=9K636u>W9*ahEPzYLWdIf@+QU&;Hk!d4VmvM^2cVG%$8~`UNHJz7Zk2c zvuxK&3J_hnyix8hL6Jk<`n++;iH~ST|JE0y-w+!T7cBS}4S30|e8Um@UL;J(7CS^x z_Kk|4qXY&5YD(ACrocW0F5K1rp;krMOraTeh@vKIRbEvmYKL{bxM}9%`-}&11HN00dE&bJR>8b;2oO=XjM#CL$(g*Z+ii@xwZzc}O)VaBhG!8edI7kWyaB zVpo4lIcC(4GX8w<_?ydndc2C|03&#IYj%gs&v1$H{)BR5pE_?8iV#a#oihW-NrEGU zMNw9DgCG)F8h+|c{`lH?$j@#C?S$2bM(&Wbf-Ur_mWr(S6TREqXO*+o*R7MZP#L$m z`OKm}-VQV8b+?`3{(4-1Jo3VvjG4lZcqMHmuJ7^Tv1l1$M3je%NZU)#+0x;5fLZ^l zQ?tn|2zTM=XyvJ_P)c3r@|*4toE;!_32|_*+3i8x+#_p1g@d_BnjL&*2&wMhUGSE0 z$4T{Yx~5-Un{smHRTbBje#yg^AEhjK!7H7rmUCYAs<1q89j{lqKSFFfu9o=e@JfG| z4XUaAjLO8+UeVV8qhL@^8`MF6{D3}2)wAL6588aQmi`1b-*HmvFPm>y3()3!?x6h7 z=6fhc0!bs(QS7%q&nR}(ycNLl6tk$Iuwz0+H^0(u@wA8T3Hr$d(JEc$vK+K)Lyg!l zRg-(kF=6naQ8H&kkR~`JS=cJvK=ysA14H4vQ?p%-dv0gWq8O?Ts#>1?E8EnVZR|sr z<*W~i>HxdVya6Ad>ZI+c4SQpS?B#K&@gZM6{ z33N&6AyB27$7xz zffk6$@e7Ys!%LZ!$=Yx!i$P^-x zQ!)%8kASdvz+I$N*^CY8TMFThbBOyQ4_11rJw5>Bk!Fb$N(6yC7+60gzIrjrxvn<&H(vS^1!UA zx7`^N*~j+&>YR_>rA`>wC2t4G#Qg@6YYXXY=F0X0W)O*HFbu8+Kx4?t?e@w*W1JJzE!oO@NX(LC-|T$e zoRp^ACYhxgaWP$YY?tMv58vGe>Z;aIZ43#&l-+O7t(%3#j5Dx{ZbqBYGXYBg6>H98eiZvinRf@#*|NRk z{HU7+I%(*og(8o)|GbIDpojRG4h^Rpr#W<`q=vA%_T@3ZtO_aO#VD^&091YaP=_tR z??hiy6;8GKvalMvLPbm8hf6@JQLlpKnMlOp*actiBIqycowg}lQ!&kCW1sFN^RTWE z?m~MflBW$B$h!pfCHXczHI*z3Te843@mH@~CE>cAa3Pho_HfKuUgHOSy1gV1(%%t7 zB6*XD63#Nt@#AdGoD>~%&(c5{JH^h7#S>TcNjyAyGLc$YB%zcCBZJ{(=iNDS36(l1 z>9wi+U5VS*cw?XpzlUfX7ar;THN&wZtm^ib&csr~vj4A?Xz4`wGF0#&uxZgyuu~I; zwhAw@7uY_Nglb6SA5D`_sHs4v4nfZrAyU8hq=7m`V>FJAn@~74^FVtEJ?cP zALkzrYsSb=qa2Dt#W+;+=R=jb;!uSiDGe^0Q)*4FF55_a?oZn;yPoZzSEKjzA0Hkc z05{8J^<{PETc6v32SFdN=j-I(50m=d&zlN@UYC=%`p?^s?%QvBNQ(eSJq8`@|U?p;#bic*)irJUX;6V z2d9kk$s_K!4XnCvt5CASws%Ymnm9f$giAWK64jrLEx(zt+83vuIKlD2qwm30zI5JP z!RK?3F1_59+msUl?Xw$9WTmB;O;Tfm(f+kC53QYKevr=q%I zMaQI@@bP-EH0{UHK3q?tO3Rnz5~pN_8*h(hr#a>{{i8y{vO_}`Uu(6hKUTyBp>+>P zV4V#bzW?)B9v}n;#{b`s<*H7mjsRkB400mM*_r&yUi*Km&Fie%5jFwCxPFh0Z?|~; z$GX{qQm2oBOq!u!rRa=QKoRrI)x9aA`77c`Vnvbrut;nHi6jD)*c7G>B&FDUOcVr6 z^SIsZ>{^qq9sObZk&YejmBkswASR~ZzF*@=!6HA0nt%5X{=DyDxwXyLpt5eBS?EIT zJ206dvyi}miwa_ZyT-_4MKEThRP>iG8U%jLs-sY|#E)6v@Zj8kBzHUbP%{xvr{>%* z2^+|-N*SoA-2_XShH9o0hQYp1sOZSQBmBBzh*RmDlw5+7QfN&>j4d}_150#PON_HH z%m{lJm4m&xF^pYGbglQZfTTMlGdVk^a~Z7yQGfa;ZQ89|QDf$qFn92KUxQP`o(BH%FD8Fvn42Vt-gZ)^j7^syqX6l zw(iZQXD?iq(jv0^3}WHqA}&orCen>NweZC^KJ&|OSsOfAn%de==S%o=f@;}%+7FSY z--k-a@EEDB%d43-}C02Lou0e{Nd}8LA<0xz>2#qX? z(~OvMFhH>gQ^BdM08Q##v3pnpI!uAu1FJlqu7ap<4o@I8>c`bD@5y>6@QlCC zQ0yWzsRsfj8)zf3B%(bub^Q<_+e$3WQ)@V8PYQSf*cLlJ#Cb2a`t@zb-<8Gli8&ma zs=)Ongg+HR;d_6Dj1f}=|gq$)uHWP@@}aE6dQ^dz|#S^UPqBYCLb(eMRM7vz*c z{{dQ(xZkz!7lAQTgOjGd50cz*sYKroFCE{9w~?G&Ebf1G`BVj{U0Rq|sv|4+(!We@K1|lQ-5F(RClQ=|$B}1PmW7AS@gu@~Blx}><9mb;nZHlL zM+2(5_YUBTpH?mAm;|e}2?BnySx;-ny3|{!2oYOQ5h5G&^1UjW2U*e3i*RL^nPxzrjkyAUflQ3>rNesggY_ZSpb%N9V z?>t3rr+Q6{jU6JVTIZNe+EzMY-U_V2L@1KF1-fBJ(e%bwBLq5$M!B0JyNG^$;I)`m zO9GT#k~I)UbW7--!)ww*k67QC?i}bk3x0{k*r4j=*~4;64?A$27o8~7RfON#~J+RK3ATrZ+3qq90ek*caVl4Vcdl*>F)?zsq2^O(jq z<2qhmh450xw7rn-ovEWzJfc(;1^yF)KcRl7W|EYN#^HPt)*G!9?eb)fB`m{9kfqQ1 z5xjr_oc8WN1Mc#)U^9=W{6o=}bRUVDU{(HC9iu?gvTeK4X;6%4`Q*~K1U@1txL-hC zYbYYp-c4g`V*4zhQ;340Q`WCin$hU0_$y3oKXE+%tDCG z@oohuDA9Jv$4Olpf%x$}MBHvL%Q7hJ6290dKKl?ypDN^hG1y;q1`ZH-|I%?l@rdss zxZzfy34dJMzYXvVmNj^@pe+|ME7i8Vccv2sb06UlY%nrAG+j6X)G^g*jia4q;}7DT z-53`bjc$vQ*Sz%yktU!uHeZj{U%1V5^S{p$6M86m8$A+_fg1IzY!lT0N<0b{1I&$Dq*2>vX19irO=tjLwoo7*OSXy9*=pezPz&l zh$3-sx)IJBiHl~le*%Otrxo`m@+^QbCTz9J+)Ee}QV+|g=J7!m?{a&TuJv8X>=Q-e ztFOzg?Hj7u8h#Cs`atW~^b@#hzY{TV+C9k2u_ALz3Dga#ytKwkVN9@YQO}ryh=_om2e{FxYDTH7eXD`ml?BEduK$D2Sw-EEW zF|3&fnT36`aSaWjQsxeVW9PxX+@#a3-hlZ49TjU`Jkt4hhVo2C3oVfM4Yd6Mf>9OiMSJ`lWdQF-dsP*d1`)NVl^I3BYI90kV z(m)gI0*Ih^9$bW~P(I>`LDv&7MblCGu$Ck_A&g6`nHZ zl>QcUoV-#+*AX3;y)U$Hr;0kUb5MHfZn^WD{A`oMU(e@~Dp(5?kh(HpX$N72XnSMy z4?mz_Qe+;=@5P!J#1{s0#FDCY*uI;J^&w#%Cv2?q^E9)|R9d@;i!>_o4_p3_4-e&) zJ5fh;hwo|sWue}k^!&}?I7gN9G7e=Ud|Bw?BQ=3aiorh8x`uTyhk7_xHGHG7tqQD| zNd(!kAH^6uZocU5YWGxU!8A`wbXoy9nLv8iZ%n8>;@j2g2JQR05JoKFk@ILL^@hMFm(EN74TUWSj9nPp77^%!k(u~_@ z*Gk1{gjrJM4s#Sfc(`kYPuWaj9+oDhGNwr)%hzKmmWmPfRD2-Vm&-Axwvf*r$>Ni- zM0B~ZVvy*ZVecyuXew`^w)>G)rf>je;ZsSDu|Awx%u`Lys4#=t0lqC~ByoqUY>F7i zL;D?J?-Mz9Z50^b0k$c@{6*ETiK&il+94e}>~~EA6@DjS@mtqwRoRk-0hQcx6$Fik z5zdjViWa(F-aB$_q@=P?7Eq(sP7)p;B|56w;Pc(JKRLkEs3tj;p=Wz#l!;PooulAA zWmU!>N557ta;|P=x_F24lW2*xN^MaySof&PWxl%J|Qvd|o6KDB=8_%zPl3NP1IEu|Y}{R6q&uZ@Xo_KViwPukgN9cFS0 z7?#KZYDsN6w(k1+Eocy!kDN;|)AHVBvTJ(b|6jPY}>U<3B$^ zoPpmA-u#zO5P+!p+sgj`&m^g5$95JN5$cS4EdKRcef8@5UqZyiZ37`)<7 z3Fk+u5JQ-$jq>`3scWQHgbLT0I|lr*5~8>NG4bQg*I? zm$E1Q4=H=~UsCp4yf(sD-UnUYKTpH{P0H?{{7)&n4*S1K*=1g&?4SOYvfunu%5J{= zAEoR7S@W+__RfMhM2B;BG2K{LX(Kdu4!Ss<9|P0RXqv}<2q3-&@wKAmr%EG$uVE@k zk%^;Z%-pLQAI^Xoq#frhj`t?*f(6H&HA#vYcyqVsz?~>s^*Lo*NJLyD-yQKCYVen< z-f*hSNZ9Ynhv}R4F!ZXdI7Sn6nygp>Y1O^?y$hGw4|FjdI*qQHH;y?DqeZva^=`EoGN^k+Ro{s(B}gqr$~f%Fx5cPow_D*RYcSe9f$^RqU?H z0C`%RO!jQ*O+(5gThO&7c&u>&O#G(<6{f7nprQ;0)DDPxbK@b|%szB*#sWkh&1;>G5Sh5R#U7nguOG|00vb2gxMKo&QB9+4drn%mT?I?f;fZ9!J6k z12Rb>kW8|;4UUz{vnf$`ln3t1dvI#{hLhE&>4_PQvZ=j+LD}3P&}g;Ki??o4|;7r-dP}ynFnQg z@X_&=05VCEEv=!Z*{8}SKqmS0M<&_&k)iNIpWWdcNGAF4i?q%gB$K4khA;2MokwP6 zW|#(KlB$0UIr{+(f5{|G{#7Ok^CFW(16~~eB9lakf00S<|6cxwOmggxOwtLjSNboR zWb)rKNrk^;l2p(YD1T&Gx(*y z3BdF0vlr}X z+nK5-@@Kg|Vl3f|%xF0n)f_y6OgJ(|zZG<`IH;49g#dJtjBnK;8c+a1@*F6XR15*b zVAD_}?i!?wI087hA2dTIE7iUY%i9~(>L@(X_^IaL6RMl*@=lv*FlX<~7b$!3zf0L|K~i=)K+2x|N6K!8x0el)vPW6pF)rxP{E@Pg z5za%4#{WagzVI(n_DO+;KT>v<{fn6WzJE&DOa38cXHf%Q8V?0I>bN{{_@iN5un z`OGRsV(^YGBaPd&azDaA=*{7Q8FZfX8ll;UGwwphmq{^q-08kGT=jTFkEA$g&XVSD zid3)X?2;f2apZfJa9OlPMQ8K0&j#$Kmym`u>~M9{;E@|)GIO{9r+zc%XOu7pI|O;>-p0;6OzDsIkQ`WMHLC19#7r8A&afd`85Ww}M9g6XD~*5;M4??u zW^8V28<@`0w7c8$PdR$S*)-mFoHyrh>i(|e;J63~pT_AFL|Sr(_Wrm9QN(%2eNvIy ze75fp+j91W+-cLQTFua_gI^+wL{8jNXhs;Bag_Yi$HoVFa0G>Uo{8Glal}!VB|WBk zD!hfUp>VfOqsxSihOC*-^i>7jGHj;?tc#QHs{mT8bLjfZv?KkItFasj2YfgCm|7Y_ zPi5`x?)x78rR@8_pJn*65$9DFck@q#_r7xm4>OG(GY62e*a5^bI3O$gHcmXr@2hN* z=f{t@A4qPuSgKyywGltTs*rx40>g<;==6o;McfPbEaGUvUy^tvLST%X^DtVTY?iF?kfeM}B7W zK~;fzMm;+|6yR#s#@O+fR!TsYoEewH9#T))`IZ{Uyev)Qx3{$4;awehF-Wvi;7sam zB4v{*icK`At>aFIRXOwluEtD$?yT(=WR#5Ga5x)&F-m?!z(9@cl+tyWilu6q&_^i3 z`}xH-ADEvVoy}^xIf4l0y}dl_XX%61O9D{_zRAZQrS56`CIL;)Zk?-w4FFdInvwtW z^sE7__WxT8yOX)yN6-de*3Q__8DMMvNu~d9+k0*OKS!j+Q$W=ySVN1(qH5vmPwZNv zb-Ws@KG(QL7I5{gDqLltYV=s_qj#@@Nt+go{dNWG~k@^jym!$%~8GOXi#%hy6dGmYIx;LT~HO0 zRVO*r7m`&IbMJ0E7fzQx*h-o{vM!Rstn>K zPsR&Uq(KApZq)d20?Z&KFhJ)s<93M%vJQ?=l6~1b%N|#PDlP2H$G?lWiA20yNWGSk${K((EQCOfi>Mg*JnTm9fiHtV==0VBx#=yqry3NW8 z>35TdkIl)R+D6Qaj(zU5vho_xvDXw|y?)6W)q0m;A?@a~8Yi368(N-PLn`VPxy1q# zbk3{a^vK@GAjxEzpef(PAb7-$$5W(=wh!l1T^5F;A9)XBCg^x{y`nO)M?-W^Pn7d~ zNL0u`o%0F|;`c~Psvl|DC=eXwT)?WucnOZ?#>G1c%1~%P#Znfl+=v7Bqd?b)Eb2Y` zD|C(kha#?iA|;TIUEWikW@*8QZ{WIo(yYcZLdDLRfv9}3PiVc~3ED3mxF3aw%N>iW zy(n5zcNV7{GlGJQVf_s%j;1>3{sfAn-$2FDFJQCp{}e}^UW%i@{b*IyPFV^6y{oTA zBGoqiAvR84b~M1Kn{Z>|fEe}16`qbNG5sroE9lAJTkUFX#t>FFjhBcQF&=Sskg63s~5+d-2g@Fqq0yppz!pZOk-hIbuddfUeQdR>dCBHPXoBkmni>87bHklQr}P zw)UW|Q6SJYGB|SQkQc^BL~-CbK7m6wB2zR|HdLlT!!`fk}vZ2KaatP%7P-bFb2^-uFJ)ZJg(b`1|mDHN|HgK8ugVARod_SXz@%JY`$bTU8K|f#7H| z#7$tK)~svpFGOihRGGOXfMj>&Lz~=CC6oW-W4H9TM-OZ}O9~+5QMX(A$yqKoCttCK z^XQ3?&FJ(J9Q8892IPCu2FgIzC<&voqIIdZpca;Oiq9#liU?#WXnS7f3imFs&f6%QHb?SXdlAF8+r_YtWn#GWRf@(SlavBfFzUh zi4&AIt**YC5LObh1D)@YcyOuSCmupT!v(uJH_Mv<49x+8GDc=8pOU;|L04Ta1H7$s z_LFFcNpRMCJ!sle`S%*F!DgDmgncjPqfsD+Cb#t+U4(5#Iy4}eOanNz)lQ4Bj%4A_3tHtl49+)zU^20Z z6A(=D=3Y;}bd9ztKE@uy72n`#0mD+Y7U*HIUY^kpxjq6`wBfZ@l7$9uq+DdZ^^0AjgCj&FIDNAN`!y+HefkQc2 zrV@_SZ`{+Ib8S6pHFT^^d2iZW2|E;moMm2R~y+`!2YX zFxv0wi~_erKV4safl%zCZfBgJn>EyNn!v`{F%*UUWT7J$bzms{fi-7KNg@%z(-%`Ultv0@j#j#R6Bk*=P`O)VWD7$qF>kGL z0%@bk`!FT*)o$c56~f-)7sq5-0RiBceE;=gVKc9#-)8w}^`Sq#zF&uFje*$Cpc#71 z>7JdUJ*3C)5IL9$((Ylsot}cF3D@(-!&8o?>PAyClYx-GUHCZmSL~l_42RgA`rnv5 z59j#CSU@}b)#-QRl3FFe^{C0|M5Cz}Ceiq5y0Mw|s|2fhC#`*HP}*n#a7+TtQJJ?? zo>;1YV^YIuionJcls58M-@4!2aArJGGgcrehwEmqP{Kz9rs$@kDPW2gygph{<0~RpZ&d zM17=tUSWIKyBs$7%f}ribWzqwZAEJhFZB{i5LbRa*oQiK_U^yjatq6e1N^&)ovpK@owc>8BlAZK zXLG6lHkxGPwA_sL{8PV2*^I9xlrQx6qwCc@Ec;+RTEJWF%2xa-*2{VDIZ5 zF4o&*K9keNxmuH_Qj)vkOn%W|d=~>XD43x$X8Y{^OF+_jv>4X-5uSHMEgpOvhBk*X zix{ehw=fM#QMe$_gMIj#{n7M29eU*g*;Cq=ag(#?v%WTa>KU$S>z)JB5YZwFn1JUp!FN{^0$gB?d=|Y_1n>z z6OM8x-go9UqbvZhzdu##vBC)*488_d+e+;j#yZ3hYYQ4hoAyw^Y8x|37!K%-*855B zg_G6axL-%AYI`|9<)+Eh3B_;nX$#HypAScj`kxE;-wMfc!sCec#Mq<4yaVj-HdUm# zI_XrKVb~gM%TSD2Nc}<5@<03d!wv8H7Yh|6xqBcC%|JxoN{#Np76c=? z?}H8L>1HOZ4rRwj-4MfO|7aV6@!g>H$2*}Nv-qFeXud)3BCE>gO6-|M-n?TpDRe_v zd47i!KCd)ya-0w~G_2$)?VJ z*2UnIhVP_fOF|>W@F=O+&x9L+(tSJwV)((;kXHK7K^tD8b;yb^J%inNjJxdhCrxv% zvfP!xZX5ryOi8Ah!aS&eV)G&2ov z@>VQ%?*+SWA=HneH(ObA<}j6%cojN^u}wuv90)dDE4umGZNA^qz@r!x;G~3A{EpZN z{Oj)C0RVu+Zt4fR4quBtrPpyZ1CK454T!82*BEFb&XeQ+A7$?po#&&k?Y6OP+i7gu zc4OOSW7|n%+ji2Vv2ELSyWh0`IoI6#Tl*Vp9b~)*$w@|@gZugAy02SgvVh3`O;)r< ziyB)M@`ZR3gMg!_Xbt~S_y`IG>K*Z03J_WdY6<1z;ClcPY#-DT6yRs-3!gyPz-lXd zsMF-U=0&#%FDJHrAnKRk))Kw9%e?jA@pPely8TU)aO+T?1ghZs6ld^X!IEWAza(?( zF}i9QmXec=L6dk6x_90_6!37UD&r%g9lF4DO@@Q!6%P41Pqw%&F3)>3gkwyixD!(uL6iXh)vj(&kA5A)usqQFJ z1dj%X|4e!~{M5_RrNT{CCo!LQ_oF0iLM5{p!Ck;L*)*vK{ARs7P<-+z*a5vO-eXH| z8MLbaX$MWT_=jSG=eD_J1o8Q#0_PeAxhK>&>Bd<1sKq4TyMn0Xx&AD53*ef>yTPvL ztF~$X^d(>^qNeuYcSZUTGr8T6@~8nOACAwg;*uiYim)Y;rO;S7i@#h>-o{bBeFeQS z^s2BY+wzwA_9a6c3)Ue}2a}f}bL|YT`m3|g(*v2bZat|IK1z})5fxbbIgHe7+37I3 zITdTeFZr(t?!C6$=@${5HFJ3Q+Hqn|^FW)fkr)-ww-RN+w#GVFncxkQQ^*<$Jo#xw z4q){h+#)@+Q;H2{+;-chE`DU&4B=0s8OMVtd2hHGqJwyE;;67yTbXO z(B1CK?WgY#s}3n~=}wH=MzB z6lzu#^-<4?i8h<;_>1^Z8;|!vvwf+LXjUr|RS)y5d&4eDcTYPm+WL%$H-sxr;lA0O z8fNLX#=r$en?!vxQ9RI?Jg>G~_jI;iI=RXe)-D&e9PFu}<6&zdag*jV4oP=gl?av~ zA(j95YcO)uRZ+86h~En63Vr{t*WqeuAj zy0hSxvkXgOs9Ox=)|Wo}{XkW>{<>KbW%iIEBcR{j0wU*Fr4jnNCODvq+3U^B^-Z!_ z%l67m>?#$S?&oSy2B+tZJ+zM`O98kk6qXi@BD#yI-ork2LrrWj400dK&sku?VaC@e zANrsmndK)JWlyT0B)AJ7dfM=d-_s`kQ8BP;mSf6UMQ$xJsDtA>1$5J^NNKl6^W6!_&>L{Bxtwr2uYh(w!@Xm?fp78cV*W&ze>va! zwu|WhnQ2N!6U&N`vOgl|C8rjpLcsFr$a?@dCfS;Qe;m1yDI*%)p4pi>A zLaawtI0C%?+R8>r_DYSyHx_OzJX9x<5CV%Z7kbt~c3{%{6Dxve!Hb6&usoO-lUmUy^+~7oka`!MMwz0A+v(;aJ z%)gbYMEX>tfuYDDrW*zg5N`c7v3uTbAb$bem_HKgf1h2U0PM#90umQ8wsA6c5VEy( zFfz9RY<~XF&dgf6eoLmAaU=1L*fHAuLl2y#OEbsZm0NsXB+t6V_8Mc zifCiO+{I^6Ai`NGUwH@P%9M`{Y!{~8NpN7wBiTN}^kJMk~qT!=7d ze<`ZHJ5Wf9@}QG{C<`A_aEh@F!!ig2we*%9l{oHnT%bis_LqLx7VPC5{u=T;FKQmy zVTd>4uRR5!iDUOu#cuXw$JthF2N`HN#6#f5WcnhNhm15*g1!Tcq(|4T;X))W8aEd9 zVzW#L39zusfrRdC%o~%Vrkc7!OnE|D_5`VeWJHqcOF&*9Oavp>@v{p7s+;=YoNZ7z zV``YYgc7m+aAslZM=%@_Olg{$rB((EZYA7J!5Oz^Y#XC&4K3nN@`N z%(9#$4(0KXz@3S}mmxHS0c$e^peh88enLcG;y;pX&R3!P91fI6vg}F}9m1m)mDI9v z3?oo@B^DV)A!u(bWPLKOicX)TiW3M}Naj}LIDLDmlEAi=W_ zIH0q+jp6pu*)$b4N`&(|I)7fVENyxixpSutIpPm{+BE`^Nom97`H|cPjE2WS2&UsTB$$C${_6B&8jz^7nLh$}pl|UtKRfX; zB)2GzC_^Be9mY2#e~(LffUQucJA&%NR+w8IAGeCH=-czw1@~wJE+CdOP*F5cL80wo z;*XI8x=V9%f;>IyVX3^320PGd3sNLRcN@iJx^XDejw@QfX<;^srA%h2q9=-(&JPzJ z!5RvVxYr%Kyg?vI+`+>;772~ zB4n6+E9=-aN*%hHu2EYo6vrZ_63SMnLTFc3`>=coW8T8~D;cqi@@`iedTO~_6rx0( zFe|KGC^2N~ijrR$C%`c`J`F5N*wT@L<4kC98FU8F&0Buh3O)6_edB>i8o+h~X5OY! zvW~mWSw$G*q-B1nW}`=aU3+&*k<-+zSY;B5JiT|m@Nq7dFwNMU%RE5(TiSeM+IY$6 z?$PM(>7X<5xp+Ss083Ye6}mUz!_QTW0Q1RV<<1&@Iy|{@or9ur#}fZZ=vke7al*q_ zu89ru4M^%v)C{N6wv0gToYV@IcnJWBCl_fhY-weZPiZFhOdvlv8vZG5W*+}XY17nB zHc+_WLH{TAvvv6_y3md}kwoMpfhR@{(thMGKHEeY+{!}`H+Lyr8XO}E7~7jqtd{PF zPyqRQIfzq|@~J0w`eG{0TwfGyX0;s{cE4a{S99*ON+bya^n5TtYADKR^r+XUmmugZ zP#;0CLQo;RjYg9gyIXW}-^nwcSG5v8&lQOmwY6+qwu)eNTqQe}VIcI1cUBHHeliiR zs+e_tVxwOfODFG;Fmpn`Py(GFSR#XiHhdR-r(qGkF!)H0T=vE%`ut>+5tynZAS zWCcoYkYIkYsb2u1vbzMp#Qz8j!9IkAjf2y6;{HDgQ~<)l3#8l)-OumI|JmA<{b+4o zAYz`&;Qwc9lg00u47v_P4{YF5;|-eV9=i#6%Zr<4u7;o)Hvkh)wxf#4HI7$#&jZ!F z=E!ffK2_631re$bl=m2-hJZe`;Q(SKsJwKd$tgv@5wz+**?06)&ig7L5oBcF;DeqnjA=a$AW})F9J9=8)N}wg$p%3DBup!Y$lS+^#++F!outw0rL^RG*la;mg@yO z6*7Xf4?eu>%#-J^0PlK~(RbV8d8IN{=z|aMI#=36<27w~{JW}J`bgGPWdR z6D_^eFE3<^5AV7mB@G?s5Df5FlCxaLf~?vFj__-mCp1LMr-9ZTn7blhmNS{;$b;w3 z-sV6r@EAP~H7S|Ec!l;=(;=-$P>UFQaN^#0)4#P%&%l{t<=D0aoq=%Y!h@dMVm& zSHvLi&+%r#43&(@G*jRsvlM2!4W^J9bprke>&4cYCXmZD+aYdsVS6TwiiZfG7C}~! zrsXaby7?>o(_#tD(NKYaC%m0g(2qQfKNHCoH9Nb(&MIg8mglJgY5x=^Oy`HbZ5o{%^fa`wYl90cHCMPU8Xn zewc^87Nqmtb&#lBp=UANkLSUI3!!0quOjGr#y*r}B1DAt4XkpwCek@&D@@kx%4`bi zYg|oWRnx(;dujo4-}*sag3+8p$IwmLP}!aI;fXlT8*}w@{BGwRt@7Z5CZ9H zQimH?#^#r+#`EW{SAeIK=-vF<#mD{g`ndkZF56#Mp=|Zy%ykp~>`G+CPTp(Aq4S%G zzTcuwYmNmLx00u7wN{G5cwJZpujTz-d01tsa3Q6nV>%PY zZQgEvMyU}*FRe@+i(WLUHbr!bUpHNMo~~`wLfJZ!srpbVg~df-njSRB2kOc;8GD2i zx?CDSh&Qw11XGZ=&}Irr7<8!(g@dOX&cIoWc>A|K)iK?NK`q{DMj;^)^TZvjXko=Y z7ac&+4NWyBnxa_?RJl2J4cCnFL<|I(%$`)1?OV*~GSr&R_@>dlFD&PW%jn~dW%JIIRJk37F;D2*@J1Pf=3@-|FY|>fuvD{|-W7+FNcQ=psExxO+(iL8T zHm@|nK$wUK6(Y9i)PK*W466b&ZOqzhV&}()iyiHF@7`KfeA848ZUiPr&YiTR46o8< zQBKgMg*iS$|Ai~f@Mc?mBGMh%f6<)%wUQbRNlap^15%LlkkiaRl)16b666I$({^kz zj%tGA<~AH^R;c@_2LZh=<+kQQ^K4?^OF4@QE-Y#47qzkKuT{U9rMovsv|DTMlEW-8 z+@rA#`Lqpi8-H@*c6Xp~)}t+Xk+L>MGg$!ZdL*y#SMDq)zt{{aQ@eyjN@(+|X=kJs zj~qV87^zyWN1j%_Q2&wyD^4jVRY@;yq;+;aZzFb-M^VUMoYwCQ{yI%y3@dzi&!#vQ z!%6qF_*Q=KGe%;k`-`$d&B9_e)q^HgN-=8CF9H>C{KIKPKk8D4Vm{RnA5*LMmCUGm z*6Fve)cf)(HkGH<^}nCDet$qL)o(w!76HfckJpI*{sqGea5fkIA0Eg5%3=PoqRZ$z zSOQ)(^sTH60HxIb*^7qe_&+PDW<^wuUm}?5aBW%JnG)3FJIkpk6(#C2_jdYXQweDh zaz5LMhM!A04AHv#D(}aSI8!ewQ@LZCJ~GS@^lbk=G9^ekCv3xhXTgdhgQydOe~5XU z_~v=j7oj3Zu1Wm9tI&U7h!3EG=)=i0v)CkS1a&Zo32U)l)6zk8pGk>TsbH^OBWZsA zvh`P+4B*Ks5RaoA=t6fWq7Tpkr~ApCzAMQWjKuwb4nn8&MOnm2f(SK+xPyQY?&fC` zx*=nXiU4z^bqswTM4lfE;=u0Ust#H0kS4^`U}W_$9hYF0S;#!{>z=Lz6g24=+r98$bzE!|t z>hc8K^lxjv_2p+X&f>31P0Y4rN=aX%?k zDXs0P7xV&f@IwD97+^bGRR?x*s)-_CjPvyu01p0Z<<6PM)GSv7jPkqCV&(KyMN8#$ zqL`XaAPQ8GxL}JK^V6r?-+OD)g4`;`CZUoUr{P0=#M4WM&@>cnP>g83Goc_~4YuV( zg|;jiq9E)GNN))kgi=i;?UR*A!{~(~e0S2IP_ifQ%T(1UD@cj=<$Okp7~f5pna{O8 z7n3myh<_5Ks57GKY=t6`jq}xr)cXWGO`vK#+!EDxAP93a{WVF(M9O{}JM5Td$a{BF?;V{=R7mz# zmuEmlhVw_IijgU9o1l&4NSAmZ!`|QkN*Mpq7!-Ac(65FH0~-h_CgVe$ZK>E1V3HKb zqPLkx`6Bj;suzX~z<*7H;zdv&#a$V1Q;H0yZY2Fd_6=5M)81H=ZOLkXG?%ID@zc%!Ru8bHTom zzf4pJqfvb!D8E$sDg(c^&`H~;2ibfPFvPjWd_u4ojnov&U`0v5Pd)nO(yq7{8H3iK zMkwfACp?Gu3#T^|NgRU+k{6stKLBQFzWc5H zv6%V+vxprS>=Fnm+-U{Yg#81v5dRBiIV}4Fvvi~4utxudS-2vd@~Bll7E{5kes1PYm$V*aI zYqzofu)!EiQdY_t2DCAZ;FN0%=K<=c=ro&hUu$fNu%*M`^e&_s4^-4e+2# zXR}`rO@p24we=~B8`niACg2=bTOCRIV*|XzyWAZ8(9(Z#aQ(rTnuuFy^=i}%taU`i zMK>w{rw}w<={&2~(qG0gQM)M10YYsP^#=&oj0YVEdZ?GzZ5CA^=IRZ5c1U`WV=v`r zVXvBMv&$ex`4M9BbH4>VQ_uk3o`)Nl-)aHq@fN$lEZs#RxA@)YF;c0Z zvwytAK!Vq;he$a)OPeQ2LhH*F%py;jY~tYaBN(~(fcKFzrK{=^*9Km(7ISSmH+rZT zPc`jd4*Zp*?qrl?$-JNQVbP_<|09C!it<)v-|Ff6&7G=Dj8 z(DZ6Y&xmt~M_=5C-3lMcdGp>shQ<2%uTrj*2I!f=carM?fVT?!N?26PMYJW&UmnO< zf)iFthnQ>ZA^ ziTg@2QLByf2fVb`TK-E0S%&zG_5S3h2Bq>11j%Y=00y3A)e>j95XMz6wdtcv4D||B zARoh!$rw#T4?a>(anxo02+2_=;CE1e+9d1!v60H6gGb~%bnx;~IQ{S|vP9ow|0P%+ z%l;57r^G03@eua_4E*_70(=nk>!iCT_#o{HWq+E^Jvqe;9dNf0O`f__uB%jAji{Km zGn&k565ySJVP5%Ztro+K3dt|IaRx2dZa^zSp>qjC7MB8|e; zbHP}RY`~(^)b+STkc^o&;ZXGz7pE{Z5cA% zNj9Y_IIsi}9Z|Q=A!}whX7l%B$ZxOgy@&U!5P&JdV*f^pqQpc$JvNawvV5*)R0~VLgw#0wRtr-c4vhyfl~!dHqdRy!)N5C zV3b}{w|Fo-Y4Yb@pK6_Q3e&2x7MJa7CfWpNf7tT(7FWu-gzGVa*vJf0X}EK0y8jSh zDRuKMEgLd#@~9|YIT`(~tci)rCY7F_TlpJnoL#Mmq%@1!EeAUOi&f2Bd5D!fH{KZx zfD}*QZE~tj_}EjO@5=&oEsMf8az{;)%8GiiGDfxmq&S+|kKzFGfWamPaR}^=gtoJp zqwjO5@SGMxYAjy^%!`VjzHl1Yk6udm`C3os(;;l7BY_oZohn)DUDs87PrvF97 zU30O0=KyE?k1YM)r|e9?cUb<1Dci<0bmGe{h< z00Kx`7Ai%fCV)F(Mf%`QZcI4O=MppSR!$q^FObO1SqvAmmaH!?q`-*?5g7o_7=;Gg z`VVGjn4<`YQ7A`-0=J62$Hddz)^rbf;~r^BmLm`)g2(^%11>OMG=kn;p}w z%*wL~Ff&6mMO|B!i%8oH!z2zN*XvS6jdz*FDOU@Mh*lQNdq9{XufzufXP+ZxbEcG& zXn~F#3Bm0k=W7jG^%WZsbhYUMgnt5{5!BQ~Fu@HJdk+a2ssw_1K13zz}ifU}Kb9WyZb9J)zq* zDGHzasT28K*O$(_1DzoHG1;RRgjXFBPDKB*=hP06+JTeh2r>ops>g-|dBDB9a zQPFVlxmA@uHDn}G%Af=wi!p%|evjSZ9VCg=I3YP46+wUf7h3 zx)+QED%eHK9&B3kbwOstgVGwK0eI4D>s3O;G4lqwzwZ<<}F* zC04y*?nKQp_GPgkae^mg5f|m4h-H+I8YO}lg$7s{ZeJO_Xn1^?h9Ky&XhxNc(Vj`b z>B5<#I;|>|mKUWe=Wlb?#&bo#Jyt+${w!D#ZdDi%6~;Us=C2{G_X+ACn>2^Ft+|Ri zvpF>`dK3f0hp+bz`O5;JMfoxt{Awi$h|Rn5izX@!Ux=IeGe&~1F`VCnFp~0}sb0tY zc1GCJZ=981$Z#~TRI-$?Ot5)*=R zs_uJ}-So9Av)thoj37`L=OuN(11n-cmNOpC`9^A0{~*xEx;0nKC3HYpola?k0Mo$O z%jjoL!r8IL(-Du?yQyy@M^1SwT5{i31yaGt#njJ})^-*b+QS$cL<}Ya0N_j&Q-;HY z8F`n$9a9>2*6wkn)1y7ZYTbzH_{g=SD;9RVW|a`0n620CHZ1WG+83PBFCE9sI~Q{8 z9T)E%HgvG|Rn3b@ueHV!F1X4&cB`Lh1$=Sd*P zi;aSeO!?p^_Mhw0d-1OcqA%zj%UCLa?HKX7!%Ed}LoxSuzc6@T;QedkOi0 z-nvljAfZDGoYY+0<{tn!h!wT|WU`Vm1}MJP;-Zh`sUSx3w5B*VT!n~x!S8G=3eUEJy^%lB~$QdN)5Z)$T zBP1N0Ke1lTHd$9YA2_ibe#CZ@E_LSer(0hS(opa+>kfid$;Z^xX{ZDE=N6{F66zvc zhu>Z>Ka_~&Ta~!Ws4KQOKdUBUi-WUH+y#^#BQ3-#@8$?qq0jl-ubrL{8pP}ZpJzrw z%Op(b(YrI3gpj=Dl&5Y;E~&zSap^txyrx+wQE)n0#{euTf;M}Na{&AsR{r~kvxV&` z{fb3Fs0Oi!PFhGhw_TicIN{eqa24UxwD)g(%6jOw!VcIe`OX}A`=HC}f{uXumA>OC z9>S=oVv&14MNA%bHlAR)is)T#&-2bey~2QLr=blyPN}-Qrzs!g-FrP0+&c6O<%^TK zZ?qcFWrNp2tiijuxsp-907E(OscPJP`apoh3BcL%KEdph0rX<&MQ=fR$U6v*Rg}`3 z^Hq2f;~Ra##zKr)KDTaYr}7D14CDLvq7%WN#z1xnJHDdsV#HMG!?fqT8!l#92w?E7 z-gV>|6NYBr_f)#^KC}Cbt6Qr*l&gaGPID7B;N4*LO}DYI94cd!O%N{rV1ig9!ySSc zgvRo*Ui3)Y20s8R6}k6UG$XEexNSSM&VXCziyzktxuRL*qaqtAzlrT(VK^qdt4idf zUcf4&0K7N;-nrZw}jVBaB`$A^cwANePj>84J$Wd=$6hz0&p0NxT}yV z2wuZZC6fG*EivJaZMI8P_#Al94t-tmTKAz#;4bpLM%`X=d$-meu3+ZAFa&t)XXp3=Ga!czv1@@jE&-z88&!P~G) z4M@_8zIrQa#U`N)JqLmeictd)43Fr zRY%})xvQ`)Msr>HuZO40G|r^N;0#wuqW2bSta2e3}T>H`nZ3 zCOZwg8LnEabi{BqF+W-MqBkJofB2RO;abP5y}NKB#B3{97iEQt^%VqZ*RO)FZfya^6h^?Lz-y}bXvQ8*c53Cr#ym@Q_q!p;VL|9 zHo5ZR*hE=$L&^^ji>G9%YJ}rH7W)an} zV0a}8FG|oC5n$G-^BsVRqoz4cq3Lkbn5TK`EYo-*JaQ_5Pfi&+ju?))3IYDK&kaJbrDvK7C7pOlnSwfjND?T>EWga`tE$2?^%EaFFAvp}Fl;wiw0##M3A zdg_8-p#dp+&h>23q**FbKJy70y2lIxeS#ULTdU35xY4(g)r>kyQm4Ovp|GK56}2)t z6yX9#phbNlKB@a>uGT#4X~ZHQhJbOb*Lr$Yn`8jM)>6_VVy|5vz_5Q{z`)6*o&|xJ zdx6x7Jf65$c<#y!=|YM684`p>)&u@aKu&2mIAQ<#=Lhc|C;pvO3z>vrtMq`@=N%lv z5;y`M;0jD7gqaw2hTj~|)bvQ!OL+$^Z#sw-W|B=X4{%ACqby6^q#ZeCg|PJL8DL|+ zRy0gC2oV&$0SJYDS}C-pOTmzR0VawTLCrmKN9j3kLBVCcXbDuUz%3duF^mzqnhRYj zP;4}$>lRpPnbVXrBFXyqgEg|OM3_2aZ}#9ys?=qn&f8zA z{^sEGxtW5~PC63*Vd%wFBWY<~vx=357c}jGgt(cRwog`dR9E)*l$?roq++hJ4qhs^LmSy<3s*bUUFPYo6^WD}?S zUR*@7vS9Nkn#%*C`StBO!J;xMAetKza{YCIa70z` z1Y^pQcVcXV?f0ab)JM|r_ICT$ml9ck_5(qU;lozW;7-LLWQ3Iys5r6WZM_}ghy1`S znVZ%c;V3rhbwU}n!mxZ_#T>@ajiNKEGI+7lCA(Wri|6ZFSzUd%v5ndO)=u~M@M{MI zpzaIu&Ak=JZrmS?07dSvdh=aG+8iVSyzU z*e3u9Zc|0*f5OPr$3p8wdd8_Y>_$*sx?_ZTK;(BNhoYg#k{TJ@BgP;c$SyccBz}fa z)XJcUqCAd7HRL>WJQgTAaoFN8Zt?kaKoXWru3wo>CnmT_n<92Cm<)oFKU5`4#+jZi zw+K2<4-FZ^*Z*>Fx5 zmw*M2#ucgV;%ZKIRZ8iZatRK$Mm*d-jArKC(Mx!&lj z+k0~tS>RE?Evyf@MMN-Kv%J~*Te`DmBYOEHiSGEegmL96qSvv_m$CRAp;ywg5~}f~ zo4llXHLj+n1*m8LP__)V;#!e)EMwVm&A#}x%2C(6B>~PFpCWu|nHW7-iFv?&kcYrH z=HPhM1yK__?-ZPIhGjZ4Sio?;;5x}Rxc0!E;(`4Nrd7y3@FjVfOqJPUBW*Bzg&{|Z zsUp*wo-)5PAT<$aZMF9`3p@9Eq;}E6GPK$dp_0hGSYo$@Z;3sQ;}?!aAG7Q``-Y!@ z28Ahk1(EKfRxD!423$av+H$j$!6(ifO|+Racp0$Z94=cPBKaq|h|Ust{xGK*{`j>- zA{R3in1^)i6kD~5e=!YP$kRsCHSpqGLKs_|^(4aJ1Nui}CNvk)iU}9M$H22sK~P7w z*S#gl8LK$>W~n-y0cD6hhF(TwomzZ(_cvaIO^T)6+#`3MGV`^O5g=P+1E242nnabE z6BZku-Bxql1&_G*ngBjUte9M9Km=<8*L!6#Y|LDN*MtQTyA72094d#Qj+?ay;NUa5GA3h5z8~J=+<+74%5!+GD zJQ#0Q?nGN717vfhS{=)X=8VvC9U)dp9{-Qqb}=jq<|bN;=C5tFyI}kweT9~?d@Cdhwe8Z9X;~dA9g%a`Br`a~v9S7Pj z#$GlodB@V~Skklcgn0K&cF-vZZ#cNxVcdFW61-1emmg+XPr5pi9Qq7;-x=j@ zvw;oLy{^~yAfmlV_Ise$(iK-5H`#&u*fo!E&-e|tJd&|od%GfUBBZl;Wc}oioRGJUjpgaD771{Pev(iL2 zUUQ99RJnoZt**b%O^LPyj}&o;_(2(=Tz=rb@Cyz`ud&i(2+|5}JrUDMA|bV!DV4784Gu7)o^ zm=?fAQ&@9*^9AV4g!+&2m-I_iX=YV2SZ_$Hq z`{3S;Lq#T`)-?1USPxT`Or~&eVu{@GNRMt^?v}DMAi2+o%=w&Z z9qla1ycV!Q)ZiiI$!YruDvbX!xY@`5{c`j8``6{>@8_H5ZyuQ1^37fh$4pg=f|;h6 z3!Eo;F9>K7g4**E0wq?mx=Rx2IQpP6VAR9bff?U?yYaH}3Sa7&nfe={k;7ituB?s> zLk&L}?y;TDTl?9JQVl9ac_v1z_ZPI;v&~KTv+?qEkrvZQ@jOAx}FSln0yZlC|1%A zMy9s1dRUdOo8M%Tl2xvqOI?|roDK8S5`QK$vM2?^)W#lBS|^H!;=C_W?4sN}r?;A=^2WYC$hl#>qBawqu#;KRW%3<=6M;Y43J*pK^3gln8C>drJk&zasOsZCR(u z|Lbx46cDNZxBEgiM#c`R`c~#f!un47|4WEu{jU^7H&@AzNT5QSyj82(wSD!ci-T!T z73`|SO4q-qI?q>RZsZ&ItNE+(`Qa(jg>=I`sU6&@!qGari(GC@ohTH`C$+!P;F4(A zo3M9p+p*_S$Xo`DuSfmJKIgF$#GLMxlzV4K8QATLFjPaNhXSLHo{gvxj>aeYQghZ` zisO#o4oaNJczt!7DE)FF*D3bc35!N59#1$>wOg;ggW+M#bF`}$DfMoEvfaf+=$1|o z;MA3nhHCJ)Ag^mvSX46+66`4)^K2?PNyy>}P9X6W*19`S3V?1afO_&)bxGF%KHaM4fUCZ6rG_q;LWkt_)#SrbTx4DmVe>ka{#_G=_cR9|v~ z9K%li#4JqZ;uR6Bm}syj`jQz~&mg8Cykmc`j}m1swn`pW;ATfCZ3~A%A3RMVIIQ$^ zD9^YTn*E6(Ab9(}4a*4h3WbF9Iu6-^`=s6CS3mjs1%z_=L~1R=00m**Zhgrq^mRUB zI0Vlzeof-*(*hXuRVB{^Z)mcsAK4Q)+Na}YRrnh#w4y>}%YfUCb&#ghLs zF{JQ!VhHZf#Lx;*o_fK@#89Rz`hQIfxk?+Q!g0~Bl>aj^6yXs)B^>4y?*^l-=Aqqr zqUs@pmcjlx(3edZNU*D*7Zl>2e76XQsEme5PmGJ^oF9;4?I`xqZ2f2V7Ob_$2>ln`nPBK=!SK2jnVh5~?AFNJ&5 zLGR_y8SJPUDEpw*{XS@Q#*-81=~2=DqSc83w7O?5Of2=WGv>I@JV}akDYt7h71Qk$ zCZn?Qo#+}op`2`RsHc{(y1F*ZO^N>gtFk+$o z8V=t3JzC zF};t|uD{zbkszVH#*vS35qICzEMAj4Qb&>m~xSH&j8n z>E~1TEi5L#BrSQP057~gPgpHjpad7&*h!UAu^&jf)^Xg9d@VCm-NhG^@x@(6I1aC( zr7DlT#<*()PDOUWn^2LX&iPOd7ZmzTn0-Hi1RENz>fqF{xc#Q{FdoWkE~V&GKmy<& zOcqC4`U={p9e}0CwEH*+k#biGF>Uw8Rg39D`e)VSA@Bw981zU-NZ-HBQ+((6S`7%_ z(Ov4CL-Gh~hrCw%H@&DJ*llbOM^vQ?fIT6$G#Wto4xX4~4>&i>Rc*F5`-MZCbOQAU zR#)XVklX6&Eed+^H$fL@5Ks^6!)-AZjQ(D_XziIUqTPsE{)oYY`6FRmx|wikMq4|T zV<7lJXh|P6U1byitLvPX{jsA^bjg`JV_D7>D*RNhB1S4O(dG@U$1VJ9X}Z#j;s(8d zuzQ{(Q-wO0DBt*uD$|cO2(}`0Pz(f~)LXKrkTa1`6ENZJHKfRA1=G}9=Lh)jCgXm~ z@e0-tumx7^dLFXS6+IMwW55gy0ZvK%pmYCsJz8naRHR{Lb5fs$j9gLO*T!yKkexFPa7aOleJA#?#SL9Z@V_;5pk7z1*!IyQ;q zn}z~BH=>CZw;L*BcYoa^SRXj$HdL7a*g(P)8U@U#i$M3>Sc+P%&eQc#K?IvX=HA7s zAtW!*)~xl^_Im+4@Nft8SkL%2*j40|syzu>iJXu+|BG5z08s0>|Dx7!|Do2~ms7w! z#e;AEQtPfAu%ejNhAHl>2&jHYzahTw7Q8iz_;JbgA-#}6M!pb1HeuC@Pi4`5SJw;o zZtcN#EIiY=j_n7$=ucfH9%xK|F`k6Fx3S0jJ1}%j^k-nGc}KhJ``>{f60_mtb+@L4 zc<1n)d{vl0-GEP^jnm5l-cc)(qp1A*j_x;RNUD0u;9lqLS}jvEVo zwGmD5_C>1icu;erJ(CJJ^8dlAN3>agT*VDE)NDhW=;1U}-nVZqnM8()lC+(o<%?Iv zsNhCd)m5*`ibF}mQP1~hCy|8HI=Cki#rZ1O4+%e5b)1Kp79`y5fd6x2Xy*UBF(iGZ z{NHU1&9Ha-f;1%k=f+U*$Hvg7e{BqD1Lqlm|J@iu0&EPO|9fNTAZ77mV~Elx>+i!(-&h0&uL~8fiEg^-(Du22 z90|q5NA{-QoXC3B%YA`0!Oy0aDGH`gvL$0z!zololJibDgk+44d+95#DYOC_?1@le z@#jjVN5aTCQCr%FEBiUnn%YRs<}pi%pGbwQOb7(?IWG+9^Tx2Mi^i)oL3N$F?~ZX_ zmTmgQmPnDsm0=YX5y!-!VxunXypX+Bm*`Lg$i%g0dtA}hU^P@XV>c&b{Z_mAn|a^# z*g}r;g>o7R2qGWU67v@_TFj1bx9jb{yExuo&W}$oH{K8Fign*^@7R9xzP>b@>U!Hh z%&*qdZFan#R&RFxnmxwvsKq_>NR>Y*h)2VvbS@B@s7I;{i20<|0ZFjI%M_%dn*A%z{`! zUXROo0s3o<3+M3U7D!I6Qco?$6HX5FZO3C48?z@uL!1K|m;H9F{QCs-k%Z_(RI$f! zS;!q=cZg)iYsz&eQSoqpv~M-IsGU>Ra&W@H(ovg@4-~apRVNKI=yx~I%@3^CTA6TKNVKRS?&?9XO@A_Oy_FrY^ya^W@vw= zsi2CRg?B*Nj;s{sNd-y;lk_}^u80^!Rl!JRrf}x8R^4O%d*!GL0Qsf^Am3c&5$5$X z4}UwQ%M@Qe;Q&tHAF2GmKY>H=|F1fws^*U723E!ZEsCJ6vyGACe;vaAuj;~o4G+~W z1NlXnJsP!3%OmTxedVHSxZ67cVrd5tY_ zH=6|;5_(B`W8#qTJ^_q1#(TcHn@Wj+M%!>OWo+7s!?kM3K9)wU-v{7dtpBN$N~!^p zI%$4Z1oB5xe+4ABsJn>=4j445q75AgohapjEPotAITJ2+sFdm0a%es~*)YYeb-3u#qN)TDn->Lj-t3W*^jFt`wMd{V{&2p9PiLa4S7Pd3pzm0K1Uo&}TbY7jUteiA2E`+|+dl*`u7mMoQlM*4* z-_2iERJOtmHXK5^OV@_dC%3iAS%CWK4394fAUPgwnKt=Spix#i!o**?Ze_>P;{d~J zg%ln|hDOf#!B=*wd(+OV>ZWy-93bFQB7Vz=%sBzHUQL%IU3>Zr$%T>Jfl2h-QkYvl z<^CFNDfRuYN~zeNN@-t4o*_IKl5|jPKIDN-_v+^^B&AS#K&6yb+zA;B5YmTB`~%qq z#P9}$jwM*JN;PO=2I*ZJ5?8-*VuoHvtVe$_g~FH@LJnjn0O5`T@57Xk+hW+6iXde6 z75bfkFy{&10N4S&Z~wCc%6Fwg@9--0u>)Eb;@KPkkboQN%p0gC;_)yEM2`5|<2m1l z9T``$P@Rqi@2s%_&E}>&|J0_xye(UY%U`ZOS*Zg<9sY`%suN6w5U`U6w<7>@eQD+k z*a6)OOzS7$#ZuisC&4V9xohl)=cmH{(|Ph>bRzY>2h_RFC5wJz7zV7;z-fM)jZJcEtrN9_IK} zU=@M?luGsO+$T9s1o}6k&IsW;Pd`efJT<)h!-z;<1Fi+keU8K?8#a}{6Q%)5r2~Lc zX%e7R>XtHTp4NSFEWmgd!z2O2!c5*=?#aH^>sE(zRyZu7w%WD|J6~;#xt&N)*e<3op-^%V*0^<#Pt1tVmcYLqTdfm zL**+9`9p~%fy2+ddgcf$SgU%=J)V%zX%1^n)=~O^<)Nr0JY->OdZ--6c`zu1hk3yA z(Em?N?~TETXud`)GWPYi01YB(Kar296-uop1vD;^6g5310iD#==_q$4!=?T*_KCX1 z3wjJdrxY+f^si3oBk=v2**~39jiXJ&|LBy40H%ikol@tXk4~v5`A4VpM2s0!^>)nJ zof%aJD~bw{*04j+$cf%l#BzUGup&s&(>^h@9q85?&FFKFQ}}0#ecGrY`>|-d`}@BE zefUp6*ZFrqcl-$G*=_#>^!UF4U28C`-wW4(rz4<;(VYJ)yXw>&xI1B!!TohBKb1md zPJv(@`)UW?ETe3Y4Zeg}mAhNICB6#i$od&xFJAmK_gz^c5A|4h^904N^BLnLSRRo) z5{`jmMng0OZq8OsPbRrOq<28z|3leZ1?9P}+qMZBAh^4`J0VDd1$TFMcL^@R-GUQ> zy9I(va1ZY89^Ci$!x&?Z+Gn0sYhQ2!Ra8;+Up#N8_tr!_ks&l9RLM+765;8Xx_mWP zB7OpU)EP1uWMqV6-HUAR4D>_b8?riR+j>cW;`AL3y}gIO72q72-E1_wh%cJ-6ZT8A zoRu)H zp9ir;_!o|sT^Sejvj#MkJV*Fh1G?N!syaL=kD6^badi2PCCR{d&S0Tkv|>Zd(o9^V zb`M=(*8pS#CBw~lxzckJmpz_splm(K%GeSZJK&qMpjqkm%dGUF$0~gbG%LMxt%}%i z{?Dv5|6j9GxW8wmoS<3hG1|0@Iv2<2R$5){l3h)RGj#XYlnW0kMM7{L5iwC_8$p|- z8odY{r%mk%BaIZj^@QFAcfp!KySAb|#KflzY7&mZgKrK2+>3njcB)I=RembG!gO*a zri__hiA4Pyn|2gJP;y=GQsdFTAUn)RtcyDaU!k%EL2V{+_XBUY3uhwJ&OSAX_1twN zu{4)3^=o+bI6drrf_7B=(Ur+8^coU97%i)z>N6%eU%Fn2^?NL^QDwd(r}j{3*HT96 zz~AHxZIUy5O*Ff>QBWn44G=E&DLAPV%p2HMF!O;^eeu^B1U9+o;y(3X zvr;2qRyy=NE1i>3xY2iESyAd#l9Jg(@iC$?Fl)nN@8;w6gS{QQ2e`aRlLZS{CUOHR zWu^xtIeJjAhiEIybR6+c7|LG{0Jw=&y^A7gBfXT6n7%c=AvHwTmkjf#8eCm@?>(-( z-$krvu{dp*Hqhdt;pY?Trrw277`SP)C70ir6{K>D^F9r2u;f%Mb5kh6QcA*jVO5FA zzwNerI;bv}ema}&^Uz86Iv?51k;%_|vc8RSX}S4Ro`3vgf4g%$j@aVYnvdx1bUDSC zNBDW{F#NU0!ZFkd?D!HYcK(sY_CZ`G_~?1{m5F(62kr9b8`ImV#;3b04HH6d-iO0R zm66B$yIn$pjQiaSJen&%hd)cpd5HWs$NS}(Ef2frLozbUkJEkcZPGqp_x=<}ww3li zON#r{+LAIYFYPS7ep2>@kJDsWX74*omT9~6CQs}dOpXrnB=9(!cB`_F57b|zv~HCf z*>bCv7yJTdhq=Y9b@=W6B!O7XK?D=5!RYV;10Ni<8#DF27JjbkT$O+IBaHjyEfu&G z`LY`Q<7{%{2&_iSA29z}jegSJF7dn?o^mTT^(sxYFA(RLn(a|rdU|>dT8)BF3fKPx zo)Dmi!he54oCA-G|1J95$<`1c(E!f}8Cwwf{Qr7C{Qq{^|IMWFt@WtV$~XJ$5=j0m zE+w1&i%C;cKfvDCJbr;Fd!GH~_BT(Br(H}-%}z1+#?J>fmftpGpofD_m7`*`(7+3e zhAycG+pEf>#^G{ceOsE$fO`q6h#x_?&vIk!ml8yH$7#^|TLZcnRH0xvx=+>=`Agf@ zeZk))dG9$$&tmT2j=NZGzI0K?8VdY{qS3w^`NWmBD&7jw<+?Epqy0U6AautsfCVSe zRT}JIGeQb@H(>Pn6=V5>@E^n=u zmM-J?D#QnCwvBRnSJiHE(O1P@=w8noyjHJz42OQszto?r7DwO*uWxN zCTwdJ5Fmmgs7H`sPDaKyLM0UOXna&JDsE+YD9TV^Qz7w68O+-6w#}NJ>bC9Z$OZrC z(*%QpG=mP$@S(ul-kO3axQInT2y)md(C{eQcBAUu78-ps9gH4w03JP)OHb$PlZ0e} z0517hx9A;WNfv6gSOrKJJHIW0E(PGlkXm>_n?zlLL%$h$OpY4EhmYX+UZt%7K?-Tj z2kC?^ER_d$*Q?fWe z$k;2m7czhVV$d|*K-fhUTf$fbf0Sk`(Z>*tHU2$V^$U|I;fnyny3|bIewHMQYC3fn zis6jo9yc*EO=}QjiohkAb;;ngW=Y`iix=z_m$HiD2M*I}q*}0*nq)hH7I3C##8Di&kIEPUaVJd&%|VRmdd2mk zB%D^tyx|*Dh5m2&G*n{b!o#Ffk+B2ETX#_&39^t=?C%KR%GnE}PjwMh2{{))?k)j1L2B}95i?~V;^UgX~yYA2oLuyjFgwNRVoxeGy^?B?~JMfaXv5?^`yG0*jo%iUk0tKiKd&VN#vNe~e z%9+Pe9wU~ zAwWE@oBRUkT{vGdefS~)Akz=+-Lbp~nd++!oDqG_^cf+xpy_&1pELbF4cwUZ`j4hr1PJaK=^I&;Y$FoW8?(q z6u~FvBmZNh${?K#+RLmu$Pzum3Pa}vz#JseOX&(#?r>2QBFnPx>=8A%sG4<&MTrHI z_&J>3%B)zqnIv9&Kl#Tf{_Kfd*-!C>6s^6BI~2JYOrj9?@ZI=ILtj2wZQ+ks5{)m} zex`Pv(;jM-UgyZ^+N(Z)!@OZ)@d=z+lwrMf)z*)-zTcuK>XHC+P-V6jes)`uP?mHE z;=n#7J^)SP-L}HVYc!=qGBKYd%#nS-x<(fl2zA4Bulo*fp$JgVevPLqN#sglD@-jSw%tn*^_(FQ{h4~MFZ@D1CohkxCSnOTAD+!A;R)Z-E03TZ zd&egw3ky!e;G`&~e6fG{VKh*oVyb)G2l(A~JyV!{UC4fBNfhZMI72wxg zbT9o#pv+KF9&%ktyKTF>Ink?Uz|e5@<#?;W5I%5+_71Ik9Oi$-uo zS?#P{#zR$sU!p=A0y8n3;4M6e4DylAo z?q^SVNAK8$o$yOx`h@4BF^qhYyZAK?O;4MI;*jtArGa?O2(4YusQ&!Uu7K%MWnNw- z;a7=;G`TPa6IdQLQ26ILHwvx8T1q+M`e{pgHVe~jM#P=4$WYX6)o#iKG;~t^lof@l zsRxiZ)3Ni+WbtHMp&b`;>N}R0SQ9Kc8SU1zQc}@B@{ic?$K7VU%<)XYW+iXySs@fX z$pQ%Z5obxLxB2Kp+3;kBqQI*qwtSMogt#A1j_we>J-lzOu9A))9c~uu2)&+;{S3OG zBMCAMUOnD_LG<=~YIX5$y5HId6A6sUDZM_q;7szq?LmBc7}#vIAs@+_=5M`Qz4PAO zwEyY)1(lnZxQa`8GJ&MrC14UuUtu*CReV_}%8@AiN~u=*t;Ezp{UFaP?@f_NxC>$4 zg8Wzrh_K(wo#Swl^knSA3r|CBO*#%Kb~E`1C6}}m#;bZ7Qgw7MO;xdxlt15KY*Uz9y;pUW+FSliR z^w_bv(Ri0Otc+VkBw;a+wMS$0=_HFTMc8IkxY}5GOgC5N*UHfR+q2D;%BNm$Qyecz zl&1(;;Vkv#`m&kh0!6LKn436B&(kH5PY|HM->XR4!+PeftM5^&(bOv^$-aQ5eDdOl zTg2VVwQdtB(?!6$bzhCP?|8JU41;AAVoa+h(dX`24diMXx`$2_wUEu4#7T^D^ zD*8xQ8mIY}s%ZP|Os(E~vH2t)T00dUkgBN3`RTLInvXVN=o-Q8LO$4Z9hk6PW}es` zGdHPx@sspHu0I*=v!%$MDt0ZLZ=QGV-QDCV9OD#Bre*j^&pKIp6f_$?(0@0rT6N0_ zFkcH~jtSj6B^qaa8u-{3T&sP3uGP)Z?XPoNo^kh{L=9;O=)X6~eox7hwRq}E7I9E7 zOo|PNgvJbKz!caE-H8?ECiryj7dSBjm#Qr}%QFQz7SF+($TIZiN=cLppMUP0Mc7E2 z#D`B>7>?l^O}u6HS5eyFk*KR?(SZI`nBCoEcZVVwgGwHG-MN4GR7 z@)(s5gQr=>Cta6{Ox+I-{^dCUhQ1XCT zTt~Rzx59uU&w4~5r}Q<79umlQq(>Tff9CUcC&l8`v|X-LsL{FkNltmKi?Q>4^Wk2| zP>3)`1SL)pK~x=}0}x!+6l}UC6XMsdHOBPn&3&8$D`aN@4J)bUn5N1v1|EzE=ruoa z>9Tve2qGjBu|!1#iX38)rAQAi+mKIG5;gDZ6vE|W777|P|)<@g%&$Lq zOLxgdH#-4KQU03!3ScP;9)--uG5lr8aYB-3n-TG1DGC8BMXxzeFwz3pFz~vUTy2R& z1IDw*@FASJ@$@%CB4BCkYA6D7Z`gj|EHQ<$4UY36C|DvPjDPecfJG1-cb9t4^l^ zN4qM^cU%!p!V+T?MBb|2n;Cn$d@!K5-x2Bwe-% zlbdP<>}Jqo>milKySZNwt~aARCA__&XuL_pB@+Ne90Ie!1#73MfWrtg#U+qoQlLF> zI7z;3uR_tHpMlL=Dg;Wua1JChk}+9>Z=(BE1<>ObND3ISLrA=-5q-d~)_DvJQykFx6c zHrTxx#-=0kLU$3q0(Kq;P*x7R^*U{|H=Tg(?tQEnB5&42ZL4uCwLqi}zFKBG>AB!V4+ zr(vZdj@}d&^P(5Q#dqu|FR)=TRGLRR9Mqz|_D}esu0Z;}voO#Q#H(TZwXIBRZb->h zait^m(DQ$rJ_)4CqMRuDEW10DDJORsqP1BAGs}EhB5-s1pUEzrySbAuWS6}4>Pd{! zxNX=<=7fgSPhZ`03wV(9_+HOQSAIxuszoLTBu%9@HWqB3-jqsN#{r(AAMhZuiwgd$ z{hshKXTuhUNhG=D%(e926FZ;Nvw}_FlU7EBE)zM^tK`DM*R%bmz8$iMwRK^!3i%_Dq z{<%^cqX&M|eb&quEx^DOZ|IdiuVMMA{%$vhr++VBF&#sba;G;j#}VBk%u4$AnY5sL z?ok`;jM(RizcodFF<#KIoBmxN;oJUQD9G{xE&}(#%mtv3<@)4reNBSNP0$p?hJxaA^Ms z4$c#yNh})$U>a0pxv$%O>TG<} zFf!hN!OR)??2T1(277<>3sTbT#A;5B)oyic9ngH52yb;HX_t2Fxq}cdDd7`--ve<} zo9k(t&K6L6lMJsR*?$^i}iTT0!(8%=pXQRla`oy4$7q9np zAI5n~Qi$pD%x?NPF`lTv$JfZ}kkQ|A`4KP4dLxdU^IkGv5;<#q!r6R)CXiEk(SG(m zYd@>;U9gkE_n~R7-WX$PLUz^KT4?GXF*idDx%PdJZ+*%l8T&y0{b+r{=lw$bALtPd zFMb?-kF3+twZs7x<|DmmkIpQdFm0UxOaR5ll#o!4>?&e?-LerC!9p9YB-*1OL;~*p>v|c&re| z>x?1ikNGv3D;`f(AV?<^(E$i7ZRAz(95RFo@sQ^wPc_Tds8|(ka=DQq-)9y80u4>~;5(H%8`1xk`E~VtNA+HKi{*{Suq--pS z)jlX@$ylACWC<&`k^BLG<#3EnV(ieN$O%05JROu&avw+Rx{02?Njxz^h8ze^$R{W6gg@bt;v%?rdw$~vz3?gjKLsh-sA)c?G~;R3+2&0O%_bhY8h1oRnlYtOd=%5JfbYN@GW>x}#iYG-U?I@bM;lJ%ds{lRdr#?|4 zJE&hBuvm_*CMQ#`)N>R%q??3RPTQudY4~?9y0heiP=_hea>9F=*31}V|4Nv9`Re-G{F{YTfp;Gr`D{@YWXm$$)sEjpKgBnDVw%VSOi{4#1X!so(aszjLX z{_B-0WuSlZJDm4>g^z4~HMo#l%$jhdFl;BmJuNzfHJZaM?R5KfHW~`_;ulNwx*rx5Ox==;kE052XhR!cMo}r2m;A^tpMil z_FWHbVPt8pKra02M!YWWY@9_sQ&e*q7lJwTfWXKDG-T!PO*isB!3xn&;P}4*qT=@l z6y7zo4yNngaehOb1xBy$cD5tce>Rt2l|&(>l9;in5>6<`-eAw1&RaW>;hs%6ADp{Q z7IrQkyWBKg4T09D4NLb7i{%Dx!4RvLc_sn3ENYL(HR;Xf{7Fq=vIH^gp ziu0cRpj$=q&wfx;yvwA7XFsSzxZ_l@A_%GY-f}Rroit#C<^p|)-tQTy=y7uXw;yx> z#kI_M>W{GfW(N@i2^lTi&tMEdE}5tnX|DXRz{FyxaJ~s3e8wt*6)AwQilT&S*8gA?H>*MvqXDd<)ea4S zRm^YQ;92ZaklcTTJ_!S>cXulpeuk=A&YlMKj8!xT;CZ;k6(*YUC?Bj}T3fp>sv)@ia( zshIh1Eh1iWd2cH4+dMDkBJyqFNI151ZFOLUif^!kTCjdY3&JX{3D7tteG2(ZQaQ6J z7xU`iyK0v7QhzX5{^!ut@;Z0`oH!+ML^6vkz0O`EZC|A0{HmnIIQ)m_S#F6hND^w! z=!ULmw1`qnKZu5*5xu{P4?z%z0Vv-gq`YsE>?tP+YiPgYOu~pWpv!~}?PHe$E7YSH z$u0FDllmh$r*8|440L!z33P%s04K47@AL=Prap4xu!C;_poylOA)rjiq^DUh0{DD& zVwRJ@1a&+(3}SJ%DuO(ZOCHnJpfLVDEdi>Cq2Ib-$uSIF^*4?Fbo5)+b(RC}5%g~# z;=&e|^xtfPz{+hoW)soTb6k!oDdel9giMXQXH7EBah1fcB{r`ovYEM@c+QTJg| zsz~<6og5>pr}92@%vpjR_zfR!@%Jk~P-{ay-`?CRntn?dwn5DUvl}GOxA)N1=Z6An zzHOIpj4?m4;pQ-58LD#kX<`J6i#!l8vBohPh;bP4B>J-4;ow+*8Am3>DZG@O+0%{g{c&VfE5o{7N^j*pV zPcf1>@L9Nh1Gz*-;wj#wqQ$?vQvX52erc-RF3kCjU7pIr>(Gmywh`noY7DKN#aM=t zF*%h?;c@3&Yz}Qn`l31^6|A17!bjJOCbgww6UZqf2zvUj5wv z%;gLxT1xp6m^aD3KYfqr<0=R!<%~- z3JING{@X3LCWi`;ls9{1-cr!BsDxb&WO6bsplrSK`bw(att)l`EhlO1}%Cmpv13 zZuV#JJ1w)ko`Zgv6@6=w3)dk3S_GU~Bm^Q8eZLuj4U=ksi2)i5?ZK~?<6*T}VE-gv zKt&x^GqU0x&7sdLX5(_&ct}X7;SWwSqIG>g6sgQ%TPwY#&M{uQ&vVZOm85s;ZGYc` zm3+fyhjNBpY|M)5^)yts{BV_e#^1{Ov^ReSQ1tHi%SXJgqR#37Y3OF_aO?GYBme!G z_tVYzm5ukqVv@J_)m>}4_vy43BlxxD3{X2 zKxHI1gJoLlYz-&C{(U0@CU7;9p;}B&YL-66iST4Q2eV#L2O|K=9sSPOQNoq`H=|b3 z?ML4WbAk^`cRU;}ld1Ddv^$dBOVA@j{gZ0|e$jeu5yzD-f5PLT!M^+jzsTHFbC^3f zpXv95)57M!vZD!RA?2rA!?|P2xw{^3soOxT(N`ra=K0vQ@+by{dm}|n2CFNNA9$tw zTbf^C3yt&Ee9NM^EA1xfjH^x^I2Yb=IH*h!lOBhsFCd3r3yhqln!BzYG+ zjrP*ZzTRPyA*gj!;=Q8EQi}Y-H_gXq#`#KawH+#ue}nGw|9-LG0Jl8f|MFrtb5L?H zvX`_m&;ylK{_4K}Cj$Q;EAJXM8$Zy!uF7TeK2(I&vMot*O2vJpc0P2{Z!3$ajjQp5 z;X*O_m5f43wyAdYXB13IjwlRj2U0kd#B+DEP$P>`%J+Qwm$jG32y$TzTdc7aV)M)* zG9qH@@kun#H>&h@+V@}PDVO=(*Sfe@b0S_px~6>}*Ne*IMUzE|;NY=|mX&H^qL7#4 zJuq@#YaOGd)h{*Sd!RBf>0G+HcOkr)C;5sz)SY(u9EFdXANNIzD5#qOQ8yp2y%*#9{S&jX_H@TkbkCQuaq1{8%$Hp7YD zk&qSK5Gc&xBHHRByP;CYYVM!5AHDu+1s;l)rm!2BMpgUs!z{792P<_RC=1X3>B7pA z>su)SWZ|adNy{I>(AN!Pqi3N{M%FFqLU^F{q+u4Z&*873PKeM=b_+2jxUny7nlg))bggzH}!JlqUq;ZY%e z)Y>0+UPC_iS+GK~78bD*YmVX3>YEUR1@YR6kW+4ZC5lwwk%(<6UW)khP2}LPbnpla zeU43L2xl!7PLV(lGZi2HEKNB#tgt;T5iIb8gP9TwMp{sWAK+f>QxCo{TAg zMWVYu)m&!`JBBF~+3`cib@iK-2a|56pJyWA@($SGotcnW(e61g(6BW8Oyi!Tl%vR| zW0N(S=m`?b3`lTl%9_yDZp624HuM|zfEpAOhOce6?3QZY2(N$CIl0G#t_$@&EdlR{ zWMlIajgK!4erpiyZ(=~=8G?+a9OuJjRvdb&yGu9j+{Eq)rGE3h*Xh2}b?Qts53*z& zJ0HjKm*MX-l02p@5lCE?yX@0Xk;1lf7fsld#1W8Ru(=Kn;ZXE6*=9cKuIm%xMjgy$ zp=?_UsHQ+ycaeSh`JLGKj!UglkW0-2(u0ailIh6_kx_B2HBpBw=BcgvwyPX*>I)e! zX+M!Fq2g5V&vUCMt7^!&^q~a~V3s;t(6z|ua`Wxtuz{BoILb9Kk9uN}wHzYOmPj(P ziuLvqBsq01hNmCs%kFEZynf!oJ@p{seulz>+Fvce$`KC>f+YTZ!*R4+FtFTqSMi*M zW3^~e(_cL_L|VP^d$&+@E7iW7T zVM=T3+ngl*>&~_n=?tYM{-=?w6`Hj1>gxp>;%@pCsagCg^&n^ciQrfSf?dq+dAlgci3!eg*1o z7BN8dau<73$xnVSATalfYYq7?>XK<#8L6Y-!cuof0_;=-CF5S6?G#FrrLLoyxG11PU9u=G>!=L%5}T zrVZoSkWFeHT{Ys~=>y&*hA{lo2?D`llKktUK-~v+gHePbxN;o-gm?M{JR1pqwUy|T z^K6rf)`BHpOpxlO)MFEIC@rtewF{debOe$l(F;)%CCy?sQl}lXHw*g~S-C;j-}HdkeK#g8`Zb{kRj6o^MM%L3U#=LjECN>kqxi%xT3cs z>0`xYuu|xe;3iMWT z=8%uI-Kh|(Z>g1vA&b%QXYG?2rsfWqDR<3^iPP2VK&ZwhAO?@LfIFb~u7!~h2TTiHzelA>*QGvn`FnpVy|d}jV!h5GdMQVNRQ zn#DtW?mC0lN6Z=W--O)JHB#oJOWiZ=9_4%360G}zXnz_fG_W?FT;36^RxlE!IAV<# zt@naCWHlv29&#QskbmMZ{lMonJ5?yr7YM(cd*=D=YMeSlFusJnk~G6V*WiJ?5DvqE z?dH14kP7%9oW6m~AQRvr=cD51H!HMjpR!w;l3!0eq#k6|y!b@ck>qdN_y8$+;}v5Ehn<5m%3#ZA;5}9cyjLZEFDP-MkhdO z9GEJx9lRjOaX=ki8Outj$y*J^uiLtDOD>X2T&s2Sdh^<}Jozeb1p<{|pEgUjA&`+t z!R~F8_*U2_31##}upEpY^+cO5VQV-#^GgSfGWW5G$uePxVFMaF)*sJaKTwf2CHn_X z;38;nFI_H^@RN@G#A;f*d&v5#zEZc%psVa}Q$3pKfO*7E6^q%TMaI~)I*CKq!Zh-A z{VvBhC8oy5S4z#WHU022a?ou~*Qf1ZU55aB)%O*Uy0LacpYJh7R4h|a?yK@^vc>7C zCvuZLM{y603sj2BYP=Hm>!8jmOHw20JqIaY4KO*F(LvO8w{QnSZT)_nXx%OA&b*G9BU+eXFev3?QJ9_A{72dz!qvoCRzVa{CrOjvEw*zO5emmFQ z_I=M?Jjkep>L!{;LmE>UTWGIx&-+?VWYg`bcIBh(GKOD3Zu=M5GeY>K0tCDoGBXC0 zd_TJ&85hp>;PwQ(MeM;7!}XNXWzPneMT$JHLUe94Rtc#hvy7bwZ%}#MeG%~h95}~8 zNB4g}$5Vi!%Kuh5WMbqfVq@UsU}Pwu=U^lTfEaD;fo=*2%lMz8{C@;8{%eOC1aEO= z_+EPa`UqCyd50=mwRqVD+M${~?@-4tz)eGIKKOX?)a(e#qrH(muY|n)o%G|zK>eN9 z{>uv0^OlQ7^xNj3tykx&ZQ{WC`SLv94EIg@Dl26yGZ30j5`Ot+$YN`^Mgu0YYCB|i z%beH?L-GqU5u7u@;8?IuS4du(_nv~>1pMl5=`4QrVklGs^DypqGI-YLU>WoWhw7Z<;pps5;`)OII^*%LQcRjuE2;}-it72 zpS3efxcMC0R3a_&Zye!Cva>XTjW?P1XA#FYoG()+H9 zq(gO2PiGPqtU5lmGKy@AY4ys*mn!jPih8x8Lrl!`GDVdFrl>K9In8R`^pjJ-6t!d< zD;=1krbuS(tGDK>EU0_`>iCID64HbW;jc2a0v2!!qQ$Hg(g9&PK#LI_#zR5SbPjqa z>;TA3RdI+vu?{ZkwL)>-CnlB;?;Kj(?_;y6Q?8*F^#Y>$9?q`xpu+h2le&ulOD z;ABIXj-cty%?Y44gwTL}Gy1z~fP2C81VSVXWhT4B%O>qPcUA62rl&ge_%*Fu+3r)S$ZW@$yOdAT)kSCj$DocAYD8Vs zB*ZeJnbBt94=Q4{*7KuHLx$NHI2?{%gV>gMaJ3Cqf@hRiVni54@a;j?33NIg8vaAD z7mz~?ey08vD1mn;9RYZCvgPxaY+()Nw914m+?j2hLjwPz#h}jU{EHS-rQC~2zVG<)$Q4z^1Q(!xhr}3NsDfkzfTi z5lYUW0zMJGDXKD>x<_hy3X7xSawY(u<>LfY&MO)PDEf%k!lc8H$uNm-#I!cIIty9ZcWo?LXPDw@R zp%$-k4QRjD2aKl7FY8k=kkK>>Sf66OtWT?j_xKI}wLZ=NYkk@=<|^seO$J(@Y9nQP zZG+wB-7?XTZ*%uRrHC^|d;}RywNbFs>G=L_H2vB3ISNt@j44jvN8OE<)E=*zRr8^# zbd-*mjn97HP=YIAWR#_^$ZHI&;x=V$4&huz_r+*>3m8pl_c2thSB3OjAb%3Hd|YAw zYlMn;C2-Ka*Ru;&C{*hg3){D5dB&apHzh{vd4x*d?|;zJP8=(T>8|urDewB%2sI5f zLJg$C&t9o%JB$S?OsbA{Srehv#}zhBd=1b^P3Mv=!EJ#SD6S7DllCyOZr`o05~IZGXA zgNmm|rfLsd=D(Fo-NmSyCzz$OHL6y{%hV{WhZrtyJ$goTz`Do&}NbQ+icqU&jdB~42(E`X0$9)c140jHviXM*F_u# zu!4v@`+*UuRYMxgTDylRR{(GtA;^iln&6wYeh0DB?Dba{%>Q8P?52%zx(G6bTMtm0 z%q)5I$P1n+sR|oL-UHhHU3zY~1F+f`Xq7^h-_5V1~Hvd>xFxgAPczf)oJz|4_<$8$zw&+JYE4%pxY!Ec!8A{Oc z2Kie;?gWG|k1cHbbKMzCh4>ACqmGf%Se>NFCEpwrR=h19RfyjopSn9V*-Z^}$~ph= ze58Ppzw&^U=!dceiA_oBJJX*Rs7o#dpMPgYxH`Qm%Fj24YpW{xW;VOQ5v0^wxNJ8@ zgL{__v$Fr`EZ<$O$ufba-L7nHw6<|J`UqQzLN%Q8OKFQzZWvS7J)2?mciTP3>m$ym z`s+hNhR2J>uo3TvqjAQTn*+w>&!@9pI!~WZ2Y_?^=J?6$VRByPY3f+&iv^JfoV9%- z>C?6ezxUl$`O@R*Szg=I<4v)P&eP-C06%$vG1L#&>`8Qz2m_^cs;VNvH#bPBp|Rnz zT$JtwImY$HMF#q+n8q3gd8pTL{Pt>b4q<2#jJXwsj@h>>HWo{AC>6~^t#hQhh$bdU}e9wnDayfzdIjNxa~>Ep;;}LQ^BHn z!XLqHv_zEOVBv>O>>XR{GyWUWIJ7eSIJPu<9F^%>DZXQBk>$-3Is?Euw=BR!#!Ls! zpkS1H;S9*glm+<}##d-t4S$K}zV=Fwxfy-ZIytbb=!rw4X33tp5*S7^9<{hP49>wW zJ2#+e7xb1sA=wmA62c^tKV|B0Kv^TQvGic3s8&T68lSs-LmEni(~Bg>)6{xsgc8;i z_{y`_6^@~U1&vH8pc-~PjpuZ_QYHK$_j8c=Gjwn7|C(m35GDy~%;RkQ|SC7<$R8*WF}a zDX2VQo_NG5z(OR5wxXHRJ}y%&gWQu-GL0X<)M{aSUyPl46cK+dASuJ?(J&)+(yrd2+9t|0EcjsFdW>0y2 zcSn=$k2+b5au!=!Fs+W|ViE`X!Nel1p~Lfi*x`T28HXgM z^p*M>%60<@%athG`3)XiD1(2vFpz`$VyIr{d?dV9mn0RyGwb6K9Ymt|DxbEgC`K|k z%9G_<1lDE3+8jG+1iRlOdXtk`9U|F^eJ%yeI16EqLz2 z+>#`ZwwA0A+?HJ)G37S4b97;;eXu`F+Q?Bc%A88n@yGDTTl-*g$an8Y+l!#T`%f~C z3Q7~V`7!c(634CRdBq5|gOBuMw!T&+B;ok<+q8nOpaj|BxtStChCB4!Oqm6mDVfeU zRagHB!Kdj38@6!rA6YU@RRnhuME?oFBmN4(qtsnR-bqg7$T5FPAfSg6Xug24TxuPQ z_Rc%*6gSLX1GB%@&Yi@&bHbk|ImfWgA^0>knI{K*vq7a7ht&xMCICvo5ja6?MiM9w z*_r8FRVu%B=$-)!tA85dWvgjeeX7UZC7hwg`Qw~|DA)>Q?IzLubgF^&Qcufl{fUtr z7GO=EO&K^4SkQ!{gx_fV0E}$yfk(Vx4Kzhk^MPBQW#YA?w%KPI?Ru%IMeJ6XDXpEN z`StR(-v0wL;1Y{b zlDZ3}u*UpPF$Fu@eVle4m~q0@M9Ufa`D*y#*Z0uuZUI4LT(X z+xc4fAh;56zV#kWl;(CS-y)z`@_}p8B(zbqrky*vj0s)-YYFKl*{53|29I44x#}Y1 zl0i7Z8>jgo=Hw?Z6T>&Rc8@n@0SQ#4118urU?(BP^&Bl0|5FP`Xb;uMDU3;9ok)DC zg-=YE%1!i2+v>Nd<~Yb?CY4WSDJ7qN1h)Gw=2i-0 z)aAnedB({w>ga9;%s3sxPyGt6EpLLS`W!$r&Z9q6F(YIc&^&{vKIv$1016vRZY5yE z?&0)@h(o}rJ22zKUj@bCWcjy7&}~~5-KOtZ7@N%BByPRQ{u8Z&!ZAf(IoBzvR|)-- zAmif-huKGNF6q(pVmIoZ5HA?5msWV8YpjhnquEOzg--Xy5Kc+kRn)_Ud-0k@Zt)cM0a| zWE??P0al!8dW5zd8rxSG%gBFVGTIL{m(BHm882Gv5Ielb*x~Jl5s9rHsm!H6oG8K! z_$|YoNAD=X@j3Bt@n`0<_;VEY?{Z3#+^FZcHu-ZoMTWoDNu3-hr!22^y_Scz%=`bA z!d)08K&9|TJ^^3K5ZO!=!oM?g_q%4M^^QZM}8mutNE5li^iXvHO17%hz9+*%BC zYNw!h_?ubd@3**&c`1AJW9Z%3<;DE-_nvv-H{X7QF(9QlUWsn%xnT~#Xg{D;3fO&X zcE45gEr{jpQA0xSX5Z$?ZQ==6ZC}Dt$#(eM4_a~Z?G*r90nT~f3b=e-tMH^;Wcm7J z4A1pCQ>!3@l5Ge^Ndf;){?el<0i=%2>?0$chVWHnHsNQVL_e&P97%PCfY|6%fm8IK zefzGdd1$^e63_!PPPpLEOd7cse1;U<&%n)n%y*Gg)B9Qdv!dowhb>%k(zR2NDY8H0 zBrd{xsHKbLDn8QkpI8epeqQBT>PU{$3_C?ZZOYl~7N9UZ6w^xyjq&s5BsX0v(?|>` z43|Wvod5uhRm;O=JfY)%ayCD0tNWKC_fO7+(4$dcE0K*ZuR+ERV*S>+jOS3yhJ+#* zpM-ui9Tqe6-P6%gdB3BMVbh$Tq4O34mAOcfXvYtn3IE#{6qu!66?>(9`K*Gxol$}f zfsdxCk2_Lj`scXWv^bCqmgV!sUoeQe4^*HBNPL0}8cQn^-s@>yr$4Y0Cw-dK+GoNw zapo3DkIUJ|A?E(&_6xHlEy3~p^dai$?&NVVlV8*GX?;@X@!_=dOYxQW!|upa{q3U; zq4)K8RwkG#H%>r>r%eP2rF&p@#_pf--)CB71NS1O_VqGjh`yZUO(C!f?@8374?5$q+Jd-f|U7W;9|FpX_KgMH2F~B*w)y% zgzH18a2%FoJhYSle<*wB7|Gu~Sa@vPws(vj?bx<$bH}!A+qP$RY}>YtclMl{T)e+? zb8aV3I-T!dopieDsZZ6X41!8ML9Q=hxRc~gJ3TcxCuSv8rq0fn&zef6?VhlYU#-tF zGZAb%duWg76=I4VVwSFy6at&608vv%mHjJAvR-c;%8DbxrX&LWyDE>cBso-y21>FJ zz8gRzCap~8%Y7{&)~_z^|2BXUG&$bHeK&wID0Tg905uQO&J8y%EG_B{OCSC$U&2I7 z{s`^_?|f^Tk$^bsjB9h8J;q)@ed0XjN@h{%6e}WsBKvm(=y~C*?0#Bjc4kEN+MjFe z&ISP|xw2CE35$U*_`jlee@83-!8hUlORN7U;RdsOmj(DAF9tjS0Pg?jK~Xevb#$`- zyCg-$%xVGEn?Rdh+P%Kl zVqK(#i;j-WI#K?qY>emHVv(qFwplC25&T7>kDv=6+eAO+y>$mbASC8!+^$UD7y>@^ zhP_#LHMyCs{dv@nEx#tbUk~FQl2fNHEGZ13+c0htUB;`DCNkXce` zW$@U#mu_@__575*r?Aj4f19X_NSV+e3AFH%PD)M9nit=oH)h(u;#A&%o2z{{yEqnS z<=U&ymJ*+KQ`W>i9eo%eVanW<*0j&Z{&6ab2P$wy4emx0mcT zsf^aFv5eUYi;nteJxZD8#$3%BbnFTRb&D4GPd%X`Lj{e6}y8yV|V(&&BO8r#9Uw8UEZO{06rV z^V*azquT9flTZ8FXB)njoLTk&fb1`)+K>=qeN0Su>XcH<`pwNZ^Ik%_POPgEBdlNV z?>Ih(8WB$>eg!0AJK41{F+wm^28#u#%}&kYJ*z`A?iG}7iXR#Y7H#|q1&OFJlXde; z%QPCLw@C@}v#vt0B+nrNAVk-^Y-^aJ1wSU!p!#vD<7^=4lVevIXpgPdN07pD=kL=_ zD5m67M3@tX8~Po^cBNFE7O75hf|4a?rD&E{2bGmj7i&AMa@~F^Cw!?@Nxms0z1AA! z1jtD7%@X8JYt=Ir)YapEMwxdNRQ*!TyYzws18jE%w!&HAsd$>U847M z6%Bc@^5gBofJ_Ia(Sj}r!E)Qy=W#ABbLS?Z+z&G>i1?2+)f29worijevuC&#S`+=^ zD$fzu=%v{%dEg`>Wm~ox)5a2ys%`ZH84A~*6)He&&}~GD@g6%?5t6VB%W{beC`uu+ z!=v&y8($8xKT%(a*^LoHdv%H^4Fl6F6YjkK1u0tn4DN?t6spq}T@;}cfP$%39&>+D)g>{P`~Pv12PCn|Fh zfdM=xWyusKoyD>%&?0a+No8rN-O@TZB}_E&dDz1TY*!TVFPGWdAgw+(B*91m_^M7` zZR;+vUzMGA_%g9{ff6Cm%VkfjQ3OMF<>=SKHDJ;?T)%+N+4c2)T$VApKxo&_rG?Aa zca4)DMU@O{&rTMOkvH88A^!aapJ1h4u9|u# z5smIZh>n`M=q#wew5~>ArwziDSMeagmVwhre^-$0HHESWevn;we*MO|a~H#3If@GF z%5bMpqaz>Ber3XO-QZ_^ql=o`zwSVj!H2jh!3ehK`~cn=3I7y)ZvH;RD})%V=hF6` zaVABDbtVp=CJ8mKl4vx$hy8eXrTvNF2AIFrm@GK;IB?`h{E4+mDPQeXK3Un<{LvHT zcRY~_LbeAlEsg9J-oQ6MOruuM16^F3BuHX`p*(CCSWH?&hd zv$d)ndFnu9BDSg6HQWW()3^`W37!r10gsjm12kgjxe82wbvP*{JZVjen5s)|2Y3VT zW(2@rjSrb0(?RFIuVF=r(zEz`f={nY=rHxYx0Ta_eXLOA2U!3e*1>Z2$)4pG0O0W` z+>Lbnd2^t^@>D9bXq8%K{hBa}CQN8S%`jc`gDIghA(XRlA+1u*_QCg%muTrddyT8G z<`x6}k)~D%!Vn9Wfx12Tp(*K%ju;$gXazEyYMZ`r2;bLwY)Yto# zW7S^*VtghYGqc7w?NXF#`}!dnhhn*Xo;{ToAaR=sggKzEU-NC7*Cc6`3biC`v7Z- zWjfF5BU5sBMN>J1&3azLoDhb(TfCJ6El7NggkM~TL1Y|j-QFA&J6GKZ*%p@%rqV^4 zBASXLOD6l!#|P=h5QsL%2urmNVZ`N2S-IFYCC30hm@ zuQlpOnsj1m5h^V9OX@51Wjn0TQEPMfmk#cyYU?%&le4zj>6M9fpJ8?`v~oYR8MFfv zmOEi#a(TtjM*2eU&cA9QL4$D(8v@G${j>+BXza|41OcSZ&yjT{_*8JX%io7wy?yCD8= zEJSU>8b=7B>y0vve;4U#e3g)pq&^&p3o!{I)V6Pm@-*`#^`xcPeRiY1i4+b34ku*W zZ-CHb6F`XXmR-yTxti}`>U^@w#s9*Pc!*0uOG!t`Ny*BE!_(wxa--;k%aULN-NzlwZNX`PvgEWm+agaHM$9%;Q!!z_sXNarLIz-Pv znm9pBuLPj9GhHApxq+NqR4RBTV5VP~YR-V$u(dRZBeNz#|EVsNYIJneQShrNG(|TE zG0I7p9oO0_Pg&t$6Cwvb@F!rhLMG)R2AL52&Fcnt!kA?KFDgT-Fe>9qIVC8F|wi7uK$dzox;?ALr%5{nbRjCwOwi@!Y%jrfb zJB|%VP}PGzjdoh|1-}8l5KRn(5>RbJwk6YCH?RQ=V%d?wOXM3cgq@r37f2|3TyT@+ zlQQChPT1p};>Nia4{Z3r=tj` z*?2Kvhzcn1g;#ML%BaO7pPm|&8J3eLBi06FK{Y(|;6q-W!q8QK%izVwCWSy-YkCu~$={3kB>~+T?@~Qb+ zH!mlQefyEXtHz5fxC<*M!S9)V*`{GRLlau3lV>t$8{B`gzV+BY<3H@-AqE>ew@q zLQ!FP6(AlrP1rBrj4sJs3F&UtlRiuyu-9ww8-;Kd3zB8k*4#$~O(?*=$f|jQi#a^P z$^sOmID9!FT()0Kn0kcpEog>3Zoi4tZNm;nU0**?B$uwF?nND$Op`dBjD0`W*E-TF zPd(T&PZ-yYjDrNdE8^V0>PF~E_Q(|*^z#zg{{a&bIj=Ja!C%|+Sp?@DUSFXgX5=RX zUF3_TsaVSw@4mvxL(m2$(yy!R_Ukn^8BPPwJJVGO%M!u|W6`7P=Vt9Yi|SX0rH_i+ zcH9y=TK~H?y&<~Dw#ZY+Oa_8_a(o=DuiqbDOJ3;M3&z4!$9r6z%|cgGh}%XD-#zar z(lTl|YrlzmdW?v+DX<> z*&we3pC8r|7AIs`hj=Kir?d0xqI>qt-@a!PdZ<1FT`O!*1869C@VitAaQNNggI#hK zlr)+F0Je&mPRdzL`q5-&5%Mgsnt5r*ed!_!f1ICmU6sK_g$0+~(tW;k-*!e0#yqL#&z0yj2J0UlmSa0Z4O)ws$(22cnL|+l?OyBePewkdy~Ja3f4x_j zR57bx3}%}6;+ebIlAANhESl#B*;mXI)RPL*EKH5tD4-J3$T@tFoAOkH+4=gB?A`Tp zQf>3)`tnha?)`bayE5mU&Fl5BS6%Jp_4>4TrOopKI}-HMoYJkDc_~It&~($dMvoh4 zozM6B>WH#zl;_*Ci-Ae=6o55Ld`Ss#A zI_iaP8z4gyCN!zBopMF1Z2pqv{cgmnG;$>m0{}v@u%5cgFdCZpuGeS2lF~w=P6~Eq zO1&n}M8=BeXcNeh;$}iHi%1`KmM-U+a7*4%RhpbnqptO zK?o}AR`}9>l8A)gnM(LivMi1W3=24AXht;eRbC@4Ne;j_;?}r%=KuaPR@5_hBKgx= zX!7K@qauR1bw4H>2^V|${m0bfB-QQ`dVwY1#qsJ?-NshzC-7f*^&67!S_A_C_zR-{ z46g#;z{~sJ!|N|8;s5jM|G!`KjsDX`-@;~%_1fJFv>Z?%I4v%|Y9ncMwXLAvkJh5b zv04U{b_NYwTv2RPtmdKn>Up}q?$%MOAk?*k?JDXgqnG{r<# zaVd!$&fiS=D{+s<;_}mKHTw5;Nb*mz^lC+SYQicsh0Abc6vdXQXJE&|$OGaI1)PDMTOeK8Ys}k4w`beJa0?31OR(O9lSJOI9f9UeFwi0%Xv5c?G!e60oHYP!lQxWY3)9)*2{2olm_ ze-u-~h{O|Lz4)O9t4)sbk|;f$Nf=+xCBypB=T7#|P7+de;*aJ|yz#yTiBTfg=l%2( zX1=&vwVZpFVya?AuKKHTP+)py^9&>@(tv?_s${-4bP+o8r`^`!Dmh{1UWYsaLN^>B1ijCd6?Oif z4|Zq))aJj9ECW?pp$Edg_bAzE8OQugB}rBU6T|84;AcWAZAf7i&49d9w~$jW(Z{46 zfpTb@Rt-Ox-S6zGB3Q#wj`2{NRC=I_T3=>FSPvv45Q~W!ZA+nUm{*+%6IJ~K0~1s8 zNdx@&JlZRN`^f#~lTM0ffR9>#R2OHo(LGbIf{|@Lbp) zQNy2mDfR{SF)|qC0NRq9S^TJsuN#e7b63>%ZK=X3JC!ns?N~P%S2Twm6&E(v435;1 zg&avj!Go|7BteyTfd-DcT>b6OQV*vsqQ2d=rY2~}ygJ{ka)x;iVz`hGW07R*B$k;l zBWoijiRyQ)yRHwFw0s&g+zvam7b*!;;p`2ZfDRS0K*qCR?ktEczp5Fv2KEhtD%L1B zYpewfV=OlFtU@p0>a~O+kD_n(S~O8V`0yT^_Yc$TID4Uly=~8F35=)E&X25$#C?Hu z_ddC77eV67uC)W&2kQ-M)SD`ot;n~DVPCwI>z}6K;dU$m+TPFvU|~P`IX$iA42@B4pX za@N8DpEcaQY~)LTEvGaS00MUq6DUeVwfg|vB>d_agZId{e=-o}Wt6OEWTyYQ>DLNr z%aM}vuhxQyaVk~g-|9u%1$`iZAFsQJhfeF(G>lOzzBG6v5VOL_=;!aOtp;BS6u^CB z%Rrm1tO~ua(Siu{Y}UqGbN($IZ9m8)mR^9Dxt5B=`(v`bZdpao(-<8pVYfrt0i9FZ z9=`!PRvm|_jwaBLNA_cJAprK-Iw0Eu61+pX2>Vig{zu^gUk2cX{QhrgcJyT6QoJ^e z-e0G%wE*t2YJ$-V`8otriwG{qZfhQwefPqX?yt3E9b#KxVaD}{bKu>ptc$G0H^>qB zwjJR8t{rns+yswHp8e7`UpZzET^8z{HZxfKXK>U!TQd4ev2}V5fD_=Cnff;Dnpkm$ zAC}haFBWKHoAmbmEhVkS)4>TSuPsJmF#XEtV+kwa-di;3pAPedeYn0b zEUM&T{_+W(2*r<@wk)T?7BiU&1wc&( zeKSq*x=_x}c<5)-LpU-V*HQ_ZdVwUQ=Pe+>W)(kCbZX;j(}L*vI~!YWX!lYJd(8ya zTLhavVES^^)>8&~Srbe9*;TE3=gzJcU%I~()kI*>)~e;=&*cm}Wva7{*gkM877r;V z2FR?*TVYCb$PV3J;AV4etnYPr= z=S!gNJv@8TKS#Bs`o5mLH2^=~4tGCZCcJq%3=+!^^cnMYB<&m1$a9c@0O-+>2aQ?S zCvU^Bp{=tTswBNdgF;7J$pWV;Rj1;;i@Q6erkplx$&-+fk}MAR2p139IZ&uEb||&` zf2u*ZSTxw>7rNxxE_C=b4ii53BP;u=Dpdgo%|IfHv-cXAJJ9KU-Uc+HMc~`*^QgE* zYXP#d<=OozM;vO#r&G&y7!$WjDfdxYS3YV3Sj5=yvBOrz(t0b+uJ&s6bzj12*`4SH zIo(&KYi%UwegtKUVo(WMYLun6SxBlTfWBqlA)$HvT>y_f)M}))*zpqbm4YJC4@>B( zOz~-n6(SwOQycSZqi&RsLuQ!wapV9(CbUd{RAV0cMIGg-K@Nmo|O~vmNG5ll8d|R{xX4QlGkJgiLN42 zwS46e&QvJ@Whr9`Elbs2T$$u`ebHzNl3~Bk=aof$kjSM3P4(*rs9NK^6mmCM;ajQI zGNAr$hIcs0x)dq9tRzGc2CqW+xSYN^CuwT<#yo&OOQiv`h0@i^39Z(1x?KTEBfA=n z4HM}r%n{sxv;wBPME*GTbBhvV%5>ju2!CxFSwR0!bkI1NEB}*@8#JaaBSv4pEfYnb zI3dbd(3EJxbrXfCFoHpW5&`81p1Bl)*nNf@6nk*{9}iF>W#ETT!!Brb1Y`3W6f0A2 za0aXkvtMN0QHZ6Eu&y)JEpTU2+%)@S)itA)$?F9{r^JU*gH#yBoM+Gr4Rmfxx$j~S zfZb$Tr*8o_i)Q1a!hZcMZ8XTr5E7`3$1R9Q38Uop*A48TYJFHE4kZl(uIc37a~(OS z=%yxW6+Op|xOv&oy=SVgDfxEZB!24c+&<3sN_lGDS_jpM+;QFbn_Y%nzzytPHoe(AX zNHwp9NC=N>+CQQ#1+lCT4q1i!hggvokBjsv+r9xqdtg<~&XS#KiZX{>Kdd!L>;lB? z{`%X;NzhS)IC_eO%FdoefW#&6E|&YP^bq1cyD==xrdY|1ZR;QAzNmgQmmO!PovCIC z_UZr{7)LWN+shFBccKCus6*9|i`2c4oO`Eq6~Yjrs~^Ygl9^oy9)%5m`m;aYWJw>l zhxENKV46I+ml%H1)kFIj2NU{6jor8H%AdC5b|Jc1F0Qt44??)>*BVYG8fvmq2D_Th zZn|U-$#w7DBl0wBI-jibuXuRzeF*Tr0$1_&PIigSnKgZ9hTyY7P9jnUvD-J|x5w%) zDV~$R5AfQrV=kwuR=3uam7wydaaug-He(y6&1JJ0{rN6r{SIYJn(r2tLLmo^HjfjN zr(~flC+f@|;s~IhKvgK@@ir_q8c0|@zlB7)3<*uaZ{n;P+rev&cYQ8Sm=1rmnN#$R z`Rv@s&z@%Yu{%DFAe713kszUPLR^s!blNkDJ8#qh=jkQN^l^^Z8@t^jCI=6qd8=w%z;l+3r$ZV$e&x zH_31j{iK7($lPf~Ov2jMcB3Tr4tJ{%fm*Zt1xAsxkAXl;DpF=j%BBt4R@@I%x1xMv zxa&l!vvmWz$Nv~%8FFZ^?Rr(Vr*Si70QaFr` zv(W1zf8M|QEYd{{PXsc-5q9u-4CauT8!w^)%Re|xVOyx?W;?U35kqL!ya~h&OOBc% zMEHv3aBqC>81<#m#jQsN%xlvD{Json&!Rj3pzAsug86n!g z2*X@emNQ+kEm6p^Wr_2(Sp&hxnFytbLTFF9?RVF)`4sR2F>a!y5%Vg#xQ2V4Av_4G+F!64lSBb=(}{9lYDcY}R&~o5#qhAIMcuKyc&G14C8I`87&o zutQ-$0;gSDPEfUQQMs{KoPJlH`cE+KtukbNay7kaeK5D;a$q@t?us&))PgPub@1`O zI7W6ARj9kG%sj5m711Vq4p#MYH*zS$S>Z`?XoTqa4!SH6Xur~AC69mm29DvDy-9|x z(UDWiSD$?TiNv;rI%M8>uvTIdx+|!Pt z9a(ww3j2Y%;#eI;*(kew_u|O&^GU&Ee#G=@h{QR!O4JA=mxJW1|%8?AU{=2ne{jbO9vEsad z7hD=f3hvS%Hsvo~tWWU2@(8PH8dpCA0Ki|W^v@&;`uoZM!}P(%*2rGZ(Z*iK$j(X6 z@_%WL`M*vdPHfg$(Y|=RLCZnI&@jzBEZek9jGZ;O0AZNZbDW=^QEW-f2U3Vo<8EDj zKK9=5;Ki7d6xJRf zzx^t6KZP>3pTHhV#4&w8*(0S?v=%L8u0UeJ zomk`sEm#bVlQPvY4@tp?>oCI#6cNLbJ|TX+WN1;i=rIce}8=ZrPqg=I4A{if3g)7g_M`7N-}5-%7kjL z=>Doo%|1Ysc9W%EL|9Qx=WE(U=ITviI$DSM&W0ApAOpy0JYhLuwNS-){rLOcYY~Gt z?UQ9PZgV%GBGy7TbKIn>itH|ts;M9+sfgN~pcEVlN!Isk-PD30Fvvli3dW%h%1gqv zR&<_r&d+*I8BG@8dnHFv{DBA99y=@x$qikFx<#U+Vm~z5i4~QqnL_!ZMTJ(o zRgV69h2cx3X6oUD$Kh5c0I7$09|ADWgc?@#<5}ZK@tz=-4!jnVkB=xaVGj*9lq!!Yt2tPfHzz-lz z)=F5!rfq@Uxt<9zl~X#xhDIo=dc^TQ9Hk^k%9h?PbwR5Vjz45jSQ#{7p-C~q(-}(Q ze3P_sIw-U?pl&N_XzJTAsmZxmDT6eXl*v_|PG+zx2D$XbDOtw|MJ7m%N8)_qg}ewJ z3{GyRc&9|%gnC}@>3$C!iOut_kbwUDO3y>g&-lxnQiR?@x;TG2Ot5_4q6x2B;Gx@@ zNcgU@iQk_O#bheXV;ylpa)aj2Sh%|T=v)-1V+?ZB6+&M?9+L;O{uH{gHB~1H#cPLP|=niSx%$ zp9Bbr-e6K+Si2>^DQW369{e1qQl+K9ty#|R0=cdcm#ysFUL{6DxscQOg*eUI;^bVB zlXZ=>n+QVHktGoAmxSVYE+>NeCu671&xmZ?O+R*=%A87*c!(fysh^@)CRO%FS<3Kc^WPs zji>+Owa>~y<-B7zZ<;3Q<#-uz!gVO{82fNKWFxjegYSzvnf7AL?mV8gkH4Pu_X-xm;}>f7VoUXEW=Vw6RrMxTnFtPExe9 zZS76%>Vfp+=N;|di$4M<(5&c^R=#(z&a5c>gRO=OQYV|c+jg-|qmx*NUEQwlmu!AY z8){O2lOW^rVkM~%iVMq=-U*wAqIlqua14$gc6)uupQ{btn+OpHOPv0mApX+*?$#!R z!qtHz4ydjDG$8Y=|ZIP@F zwf>`6+gumr&Hxk;_hL0TQjkBLgCytK0#}E5(9;f_{)AAITQ_f%IVKd|PM)r*GVeEpfOw{+d_JDOyc-x4PU{0PLNqySl!9E7 z3xb^Kdmci*aE6v_q>DPvl4vf(PXfHxBUQ`bAodJIV#?J`Ao}2 zeB}oPpC4)qerV<~gzP680oO_p723VJ=#zB#;=da$LgZ0beYZ@>jhTKb92NX1i7|u% zcx;Jkm5#K4ygqWD(zui+-hZ()&A!Q2+3cjdU?y@N_j@3CBnrNmi{ru)jBTIpyPgk- z*Fo)|oRP$Q80lJ_5IQTBFTTG)h0aD7nI*Glxkw+5y-~v z1Oaa^8fmVuxHmnjD;vtFG=Hq!^6Ow(2MC`2YGOBCST^(?#?=ExMQRD#c*gbs`Wlo- zNY5;+zo~$Gk4$Y~HeRvEStY(%ZocPygHz;^_MnzvAx4eu`!R&4Nu~6Au)*(8ky6#g zd3?)&F8Dny>BNz&On9!Gg__L@m-p^_DFegz&U+yWf8W06%SYKl=^f#ydlXXqOJ_Z3B4e zzwI1~zg<>xvWK0SrrGj*CV50I-B1~4~zDy{z zdcQr~meP26L_-7qNf+@(J*oQi{uiMtdO5!x{w7p^Y12OwD!A`S6zhMlN?H9w3*TQZ z^`CU9Zzsn(>t81a2I?_sQG;_Dvs9x-fin6KFcTa}KJuT<^OqFw`)OjSEZO5#wG0)^x+}?ffO?iGe{*-pk=)6Z=@+$m5D8&#W zYAmU2oXjJFxP>{yC{-Ra%U%f!s23J3I+X#Iy8rwh(WijGt0fVB? z{7CqZ35nHs43$?b>z4y^Kj!;ac|<5mX~1BhEbUH4#aMeuyDX;*2Qx zN4fG+dmE7HpoH)j09Ok#Vp}#!*nD7R}EO zCu7iVR_a1BVt3rY5HHc zoxWco^`%6kQ0xp0gi;-=+fTB* zX*Vy=noU&s@X?0S_*s-M=QpMeUn`~q=hYt~`7<)UI~foc7(kw1cQX{f!fx#fCNdPX zRrHO&!5VastH1012#8X2-98GP?WVxEAVQjKOLCB!fN2dJ+OO9Dd5}bi8 zvLza~hIi~VWOwWvikcN*o-=A}CY54)VG+9+!wtsC)O2D7TX%x#bey^$BmWFp2j4ar zy)KZsCxG(YE(6m(6_SE@!2*JRU)IOFtLu%RK@j+Uz;8Q!B#{f~;=OzTeX`NEVMWri z$?J02Y?I|URCYL%=db$hDW#2Vs=jltzRz5GWnJj1c$$1!*drvVM)P}co&8fn?g-3P zZ_4iYY9;kK;Pry_*S2B0F4EcT)Zcu4fpF23)fG4cjW*O&367B>36jAsu#N#Ll0lnw zQI+KWBI>O;t|@EPRfLLzUI5jln!g#mx06Dk;V_=?r24)7dJ}w_@d{Y@YwT=q;jedt z+m8&Cn^Lzz4&1jbLod(Ify{QJRx~c`coZ+L{hLc|_-M^mHTKR~6DU%{l%IflB!ZOS z9ZWVp-5h|iHHja}S`>fo@XV4rK-$5P-%SqU8L?SE0MN5n?xeK>VVSo3243wn{d8vA zpyV#Ym_of6^{}-HUUMB`*I^z1BvV##t_LNYTC2DfL#cTy*zm#nJuXUF5Ja8x>AXT} zJ?#SOZH)Sxka7iLRWy=V*Uv@|WBirvH4Zcs0{c3H5+Y6Xkv zE$Y6&eL46JcLM9VgtVFHAR@GPLq!Lv`y&TrpRQcJUiI3zs4X5c}=DlTeU<2s?!FMMS0dndt=>zz}wzeWr@x+V_DnL2jt#f-$-6HBnW4?^PC90N=Mv}lHP0Qk& zuhh#9NAjN;cp&KQCIsJ=*8oeG*wmDMGXK#USKBqCwwG?6k@KZ)buw9xIlrx%t?uS( zEf3MriLZle%s1f;clQ2x`IpNv$~>MZ{@aG}7ySMi78wWu0NDR~Sah^eaI`nGHW4&3 zvi7$6vc(Z`0D zt7d2)`nZ$<=SoTac<6JU_VA4ZpyBuSxx4tWuTF0PagERe!>I0%9Q)3Yl!%xf)2<8z z#_E(p66#Xcak{)gw3{h8URiaGp>u_Pw(#Tb8~pA;^0Knh1L|I)I7+irkg9q%=%nfu zADP)O+B{g3rN&ujhKIDHCe3}zekQc`WJ*d*o#ZCc*JjF{I1OnbOGc{YT~l$a{s#Aa zpRO2lcsdiZxsE2y5y0K*t0~bcMgge8P+H8|(>`;$rQ(PMkY$O)_+RCtuw7nHYozV9 zk;Yf1ANX*}YH^U};|+Vfg{yJu<&8y3p!OL$*lot4OT+fm%l0s&pLMPn8cIS!XYkk2 z|4v%W`1(TL&4*_K0Qo`CRg0FY)rQzcj@zZ7>DG!ZidTZ>v#^O3l`%6N>VQ_Zv}kFT z2%DU*gpRJ%KdIw(XG|1*rA)AYrgWuDd_p19l`vcX%8~ivNEZ@hstt+gL>*6vP_sGJ zYTT~Ds{B{d0_|}H6JcTroMa*pGNq-r~1KXxrb^yG)I4h zIQ1%DCq@}hW2r;x#I3jtb*$#4YtfRV$k=bFZ5gA%}dAaNXtA1&7F^0)Yx#69^ zO7g=z>(zyv4-!9(K@9j;QM$R&@akaDf?_|_p{`HR!x2YFv`xoZ#@)BfaKH!`wnd^E zkY_{);CBMgvwlPgD&VsxQQ@f!gSQv+S7xxqwKZ)r+K6MSS72 zb=Xa83x%+%@LR6{t!EHH6%w?!u4y`?#UdI~6$R`a$-^*5ECroVEd>$WAaW}=jZ&H( zla7-GRWQ^J^3cWFYsk}V16l-S9f%HG#WC>7n{HG)xyR6z#ivY#Z0FF%{cxGwwKHYkxaud+3s_R`5W zn5u>57Z4o3Ef~@F*Wbw#OmrZcR!kIj&&%fmfx#AQ*78Ty9xg!)6< zyOejr->8L7JrWjJp+CKIN%W4ZDT<Vx5 zhpVgNbo#g$i>vp3g8+#`pj{xhyT!q8o#7i9Z9vL(^IJi&OoP9X(H0mVd;P3xS!_h8 zN-g~`-vC^3kBv@Hhap(pG8#u1w3IHb;+`L+Cb*#AN8M@kM4bvao$v0dOZAM5d&D6B;0*_((QjKOrfCV#2YMk&iz2WZhhT*VT z6o0umD2z2zgG!A?cpU$2#>!y>&-qger+DO3nHFygdYA48T(L{LdvE^Hh4FQ=Gt)EE zivF>iQ?Mo;?NL!t9jXK9TKx6HN~B>%)A_24Ax%O;8vZ zyVv^<$@IAEZU2j2On})MT5LpirBWRd18^doIe2(XKhpa{!V{ ze>`?x8;#J^PsbRC4NNcxF+i`YGC7yLz(7Khd3)y0YXbaPb)AD#^~c{z^xiHjh7hEK z9MPs=<=^Z2GA%-=LTFnFk$AcTMl)U1S&t?pnxLBYX_| zUXbHg!ro;n2HF;BpV_+7nWH{oulFbuCF7hb zg;l>HBVrL{P7zhR6w_q{)j%-FUrOY-T=Hc-dFucZZ&umL>SPoz!UYu4k0iwA3c$e9 zfGC?u2jlK?xh=@!mOKRJz7mBD`nLax-s|^)m!u2%11Vszb6r#eCN!fk^sD3T3njnq zR(?z;?09_fNK%|e8mNE|a}ll#7e zl;N6H5Oy5>I>ozVGBzmvuJy(FPgob6yI+)N(HqU~-(KU~HzkPX3*=h_Wswn@R1Ws7 zd#P)_Es6AT&n$%e`p?lsuL8DqwklD78nx8>y<#wNuUDeqSvY~oARXBr16dRgw@GV$ zLzf)w?jeQ?!`xtcbTO9KCBDH&HxHns@^-e8aOQe1o)R zw5#>m_Va`ne=ByC`KONIW4J9q8USZ2~+y>n`uT#q?y6< zYV8HptIPXZ^i8X!y7_XNfFKkl3`9bkN3&m@UuZ@SY(*Zef4VXilU}D@VW|qKr5a!@ zc18@As#1E^u?Tqpq%p=pEgePh!U^OFGX+~-NEgyAKoy7<#Ud8jACQ}&=;VTgKr-yo zkWyb1s1jcn9IOm-3Z1by%LL2ybD1mePmty!h3l-QFMZP_LeOIMY#1oI62=0hI{5~( zl#&bsE_MFhWW$u5n5n*jr?a6}r+PEfH_R^x6APgQTqIm9tk^>BDcXszu^v<&o)hAK|md$)pfgR7N46Y9!FG|r+l43_xtd^N>8Uy!4LPaCles~ zxPs?$STKFW{Ij0p2K}PTMM(8G=HF8+{jWlA^R47`8rBjtcO-Tp1l%=^h zY34BJp+OLY=h5jG%wRJKCIYQs#pQ+?eWOYw%{lCy;aqb1NC{z^K4G^se}0b{Bl2@d zqmyg~IGIGCM3t#Q`dJ&mVIyO!DY1G_XoahND+KQvwTl;PG!F*FeD?Th!vVdTXk`|Q zX^Lcv)AE7ss(FA=PuYnjJY5e}4wGX{ZF`JC(A`p&m|?fDA`r6Ko-HPnLISe8JTpJ2 z$)fETqD|2H6t>6`On7ReP1^Pu%5}B@xqK1y3t4FM>d)_R!b`?_1yFHykjvX zWSHy~l;&0Mnk>rnjmk+6V+PVNie9yJ^DZQpjr^Sjc~Eda5zG8|+&pN}4Ap!#PE@hvC)xzXKp^f?0L^OI|E0bS9u^byMso-B0- zfA3o(z>fI^b4S2_b|+^#xbd}h;D2woaf$Yq3%Nh7#gcO~*8gT!L_9Nx=|ns^Y5hE3 z@w)f$mLH7f*mCdoVgf&S*tPB)d6Pvd|58lAQB2(}Mm-#uwwczifyHp@l1;H#MrvJFYWyq(StQYmt^b?9n~8{MZW&ha$B4g6Q{WvT}~9 zeT;m9UptcwBvT*ROn+u4m=%I2m4bMj+mQ$aG z3Mow`W25u?s(?%mykjWJI$Op9jWIM!r+>!E(= z-7YkdOly>Ikuqp+UVTt7XkWJVcMh1DeH|Y%_A+Y+Tx33#IgAQHbY*T%5VSSBGiW1JAO*9m$m zB)G4>JbChXit&n8xv5c)FU$o_v?^fkqO3~?Wo)92J*yFE{|K)^FCJl3<7Cgqg2l7woLw4Gv&RAx>leHgT0^T|O1`4XIun4` z$}`*ujq6wV&bx_QZ=^Ofw0KqA+jML5C=X0siKzvz9=2W;wSVb;{A=gK1F^{b^|uP~ z7hL}tcEP`&{6DxIEcJfdI5`TM*&7-B?H>8xf%iXcd{C2dz-B?|K2j(dgGm-{mll_x zJTnrXoiq%Zh7kj2ciPvgREbnx6;~(E+JVw!?C^1BVAkeXmH zmkPxfz6%^p0h?2yO^3<1xxO2E=39jQVL4zHU{48yO5k*FC>s9bVgyotPLEmdJ}-9k zUX@-|uS}1hoThlW^E@xC&hB3#z0ki!dh!goC+Ghm(g*+2_NOkHME$o&|GW=@%D7aL z@Ga8&VHef01WV4W*X0S11W_>w6~;C0J-jN`Uxm4SU{KXk1WlUdBPd%Oo$L=lZZafmSD$+Vx~dQ?d!|3Av! zslC#6+uDw8SL{@bic_(jRBYR}?Nn^rwr$(CUEw?GnQMJI=K7AgHpa&N2S&Sk@2#C} zfTIkJHsp6yl6L|r*-F)ZZGwS}c)w%DIOk~NX9X$C{`_vKrIO4w{)qn;xBT7gN3ZU4 zey{JUPWv-Nz%@ueCGr|0*z47B0DmCbVZT^9WpP{Hf~$v38!Uv~X_K84oD$MryC~m+ zjY3BUO6(rHA0WI+NHj|&Xxb1AeG z43hog5=qn$gvA;XxI9e{5csVLc*$_`meZ7*ngoXCknVnRt(B;}vOQo`AM{_V`U=!c zmH%4RAHz1wH|Js0{$MxNs`ZxkIwq2K3(E}2YdqYBE($xinh$QKw|QG-xkWP44Ix*Y z{u4Gvec~IBEU&t{1)WHmD;Qizhw(RLS<9*`eSq3`yYssv63Hwo5Zj8KrH5pkNdSDl zX&nPEO?arO5yXF9*m6v`WS6u!@gUZ#{{&VXW*w#TiXDNLv9?dG1h&kwYbg+VdBhkR z!Obv7!yvt6i7>rHJ|s&LVKj(<@GZx}bDDbrd`r}?`)#1+Eh7|qR$K6fznbTr1b~02 z{q}3b5FbqC)swEFZ}aQ=F7?5A^NRJa4s$&NLY8etfRN>qWJNjA2AY_>biM}5M2w7HZuJ5sCF-;xA*LQ~vCSF?dkIb`Hd!m3} z@R)Jsh~P6ZVf^ZklJnuXMp-^t_vdASk@5MV_|>LWBPfwh#wWQ(cVZ^Yo{TBk;@4(n zS~|g^o3mM`mM85pXOrF(9Lih3eU9I3;2rYd-(?PcJ=U6^w`&{pr`&t8s{M*MeXEx} zta^L-<_tEslWLD)L8A-l>e7X+PqqzbSFnMQfvbk=z?@#vNl>Wx2>0syrk+jPo}8gu z{eOilC#H#dGRN8ugL{RA`3_&t*Xyoq@Z_{Pr(`mIM z0qK##9pUMT25Eu((&`ds?-#m^h-6Li0ryDJgBIQlKJ@qlppeJ)4#P5J9Zi`Fh*!Ur z|9E;!X~&Hp-qsfK=YKmrI4n;pGqb1Pih1sn)ck?mz2J<0_GlClt^#jm(x2eE5bi%O z?WhO{R%`+ylf2!P5BJs4*3^5;$psaHmj$aaS)18j|B6fs3*ISb0#x#^7XEvcZ2I2~ zr~kdHS1`4)|Idfh1y&@$a4Nte1sNRg1zlLU;{XetIVwdd1v>wPnqPldA4>C0yo+@H zsoUjoFS(uFD((nNtRT^u;L_ZsQfsa{dK=H{W&Z<5F*VJke&JIfBlM9e4=|ZZgj)v7 zsVfM|X(Jbws)sF-ofIIQ`~&shZ4mrZHMDB;D+Hqq{bsDt0oBQf7UgXf;`h*>L{rM)C6a`k%yPui z9UI^HRMDmez5x_5`FAJT2eG)sjM}gT{nDhDNZ|?^#Hc2iP@fk zMN*ZaT^Ni$lr}PaGnpqv^FL+=>9~kC)i;uFetLLutF#uj?IBp1s;ElY_jAldz30219<|2y< z5)L%%R3WGs3Gk_iA#u=bh-?Va=oj0@a@Kkadz$Tj$ zw%s+~e#vrQkW*C?9$P63=^53N4a5d!U?sI_{5@Z{7=gMAZJ}@Acf?^L6IcF5%7ib5 zcp9mTl`!%G z%A(g-ShLmG8vu7;VyU%2WvIn`HsdhbTY1wwg5VgH-NvuABZ&6o(#@E`L!mF&kc?!> z5Dv#X!2i{=L;_B5w?g@7V;J)HUHaw6XP+v?A=`cM{@mMve$ zXVva!(`}EAZOXlnl~cf{7*dC zlg=#N0d~cvY%GuP30KW6RxXV|pow9=Aru`a*ky3}x}nb>D_Q33<6jM;gAHKB75qM`_Som8obu7bDZV}))fKMRck4z6c7e;2JE5QylzMxZNLrO7;zk7PU26BU%HQ?}ZofmhWwOC$otr#C-0DF2o!&2+elYtC= zFO)7G6}qLX@z>|}LpWLt3OY>-iW2KqJ-IX}n8HnUB#U9Ii(UO-{|KnRwGGD5I zBP+iIder_bS3E9r-9K$vi}JcheuDiWL(TDQ2DV0}{jKQ*k?D=MWf@b!a&&SIDckLH zYOoAX&g^2W%oJjY#DTgSpD?k0uenGBYM7@CYu8faN@~4Fy;uELA8ZTTDoRRNg z!?(dz5qoqSf-z@lSyRnyr>CySY~vJWC~Z<^l!doZF;>aRD^1)}eT_EH-}@f%2O?Z| zcRasOSV|5`rWbBe0@Qcri9CCB(0X}&jxbz>^Ur%>;Te+~Ho*|2-d|urcB9q4yW48h zPN}xTHgvd3<#)iUEfPj*w31^#_`sz3@bl$-)JpCB6(O0W#47eJy7f(`%m<*hkWiW~ z%R@j@J zuug}khx=`|OSP)?nEp4seFEhha|b5WML0;X=_F)>;X;OtLJpe-28#Nniv8}%SIkyM zCmL^y!zaV1>z9v+7sW&tHhZPeZ<0zzLg3|7+L@u2B>qn5^n;_8)Pq&ZQP4$KhQ@dC zQkF(k`mc;8t+DAFFZ^#7Q-)+w2f`H!+M)5q4ol{HbVN)KjzT%-C*lpjA?GHm8vAQzhJ%$f;3q=T7&uf zpyBZ7X&#`Eh^hpXlWA-QUJZk}in8f3EOvA#a0*$2b{ZGN%f^Ju9-l3=$M#+iG#jO< zx;T|mUtml*Ej(#TtG|9s)&O{$WF$EUI`2hFr14cU9D zP?26lQS8IB<@s5Cp20ypTKNv!;1-dp_4qUb7fKl*Wiq(e{wB9kfwq0Cd30V{a3}p} zO0?)2q!ib((lvAJsBy-?t5$TLWU_Yc*uzfv>B|6$_CnykZZ217JC%m1j#MFKojM_7 zY)+l#uQP0w=*Mpeza3`W^i#XXBO@3~Sn!9qI1Oz15|+|zNm6Rb3oG5g+JJ}^tLgYr z8w6}!z417Gd16&Jm-fmw7$3Sai{39#thpjul{71<3gJndl|eWxQ{68kh@E|EYEG1` zyA(tra=)8$Fs(VuRyv>{Q}4zz?~a`wsEQUdGaK|?gA2F;zYCoW$c;eSp@EtJ&RcK9 zj^tR3K~8e$NozYG@6%fW^ao5f_CQ~4D-_>#3ssP*l8faV^2uIIYn6^LoQFJJSs2ek zk3$zBWhaY`Xq+80<3<0Y0cs}}gANuLnnt=nKMwQGtXe7ahxXLr;1mPLI$u9sJH?J~ z<*-@dn&>$J6!qC?(=#mUE8=^a`yiO~nNFb)jZFu2#4byv9H#NW-FW$J#DXPNKVrC* zz)Mu$Re}-QBD;%1m?E+n*|xu;{9Y4OG^%L9C<1yUE(|VST*f)2WU^tKZGRno3j8fd-jO+;R>1& z2;qKnK5eE_Z4ea*SChK{=@I1kB8VIOMzBw-Lt!Df}M7mvA(E|5|ENZ7@zRX35 z?P01Wq^)d+&!82QodAV?7k4|D(}c3}M&d9;F0-q{ittNYD;cvU=d z=gEjLB5Eyeq9pr@r#+=#Ty#)Bqu?UVM%hOO2HD`(!=waL(m@9=P`9U%Fvz?`NUyLCkayrTb>awfLT!RMsx$( zCHi2OzMwcP!I0$jF4;A#6DM#*`#m`{eZ8QZ(;4#m_czPbAmDUsp-}wm*5+h;IRjUv zYtRqCE>eo%?yi8r3<+ZLOYt9sb zxMj+N*Fj<_6D7r;`O#X;OdT;Pv;$JL?th5Kv8I{A;@x`P*RU!SN(+8@Qb@~mp1>GP z+~z?rogaG8n%01+F=$07RvC>&E2N-~h;b3|^N8D|wD@P{Rq?miNt@=Y9^D0s-7r5Z zYW|R#2b)e&M=g@=8}cqP;?Tn+B<*!2Ayz_Pj{KqJ-)@Y)FrLRBnjLrq4W@^rMyU?^ zYbswckxZ;v*wOcgo@%|s#lwZY^-2;ZZ8*b@kb!}UrJGSneM|@(C$ZB8l9*M9DzD;= zF(`^Pm;i`!2|>B*5u1?miUCofRGxw)lDX;-XVg4{S+;CC^2KdRM4qvQ8rGhGB62lT zQu!tyrEj#<8MZllNk9j=DqO0n!;Qd~&=%fHt6&xI#5CXBz)h>wi*E1f7LocJ{s9?` z>?xU$TM^}_a8yYzO3x_DGq%f*^FIb7t%U3x7vf^PcR^*2(iy(eqJ#?;Xdi8~xV*IZ zhJKWJ-rFPJ__~c%n_Ken({!KlO21urE-0f2fXGFrBd|6$=K|VSliY@wg zx&M?0vL}<{J#i}XrQQK$<&39PrKZu{sn4x&`2_oP^SfF$=qv1GgcsU4g|{dd$T8~s zNr+SGpO$&a=aHY_Ni@^bLrzLFy#hnV9>_&jhyU{%khNj=&gB_sOT{wycI0G@0}7IA zXFf=Pv$+_1ry+5)NHYW>@bj@uUwj#s>3RZd-Uo9DmFZytPt>MeacCLKitT1;(}-&B z0-4-;61KCK)uJUuMHVBi6iCw?)OFkkqju!#(8Ssd{584fLUPcbsql;Os6SUXgo7aG zH|HF0N29$NiUtVG?{GfZ^`N#q>>%_IKY2_XPwq)?-41u-M{ePhW#`N*Rf-RPaBcr*2}}pO|JcrzZ>s?2-vqH>_pP#fe$jce!w-T zQE1Uh8|umCqZ}msVbR;r6C;dM7)o|`h1F_>0wmLlXftJSJZ)*eY*R}?ezmUw_sfq) z*1zFUc_3x!RJ;+&fH?Tf8a^{X*Wz6biL8R};wk3m@7ID#Yk2hbx>1>4HR zx`>xtvjsI*5FLaqbxW4mgx}vJQZjw9JcZUC(7vK7+WeKVL_XV_ux`TpvHq+^g#WwoaV!TgESgS9d z<*L{X73+GTj-#*v&jq@UVKsOBzCmb*WKVah=go|GD~w-yhKYN{d4jUFA%cA1*zIBS z(*&zSbDVv;xudNv{Um!>n&iSontuD=x^ zofwgBGwaIAY1lsGmWPQ(5g5K^Cc-IS$l{~ViDn;uBhRvwYqN~0!Kts|8bd`PT~pf{ zraT^EcA(@^2NkN2$KIfQ;P5SzflbwRHwmS47@U^`J200X`8E=_+dUV|6M<>bu z+BUpdN~P!kYCsl>8n2EPF}}5ekC>THDyALB2d?%9n^g*O*1%_7tL|18g~38V3#?FI zFqVfK8~pu82{En}t20Dx)UuPE^z!DFqNZps5pCViiO5SmP-W;Fdp3E;=v=2o-s^c_ zM?X^@=Ud@^>L`5M3)o;0eTwc~-FTI4*As~Hn<|Mw;x)fH=r?&qT_r5v+6HVZMl~#x z6c3^Kr7OC{s7QP-NJH2<6i^ip*spJyJ{Zed$RESJ4CVT5aZa=oqP(7d&^bR)$9^*M zn06qKDEOY+Cq(1+eYAv7$R`&NF)0!x=d>1$c)e1kfc4CsR7pPn>JC8%Rle6&D^<^i zWMbVBXrH~um`6%`hHTQrgiRua4kilq%>iE#u6uaC1W)l*Xs@FDsc^_mG}5op779E- z;fu@Vpdf5LFfg%<7+o|Vrljctc4TTmDqL&&Q4YuM8=3jAjOVrJQsp@#^E4~`j~8> z3ucx=K!DH36v$~~PqX`eAMg8y8F>Yi&&ewt-L^(mY+NYNFapDF>OpN5_s(4ag^awn z%>lbkJdG?F`Zdw!>4LnEewOdIHdfGDQ<;(`*k(R_Os7KHYhKbtq!DY zw#GLKL38Ri(SyehMEoDEm0Jt>#Et!wFytU2l55RherWa-%XW+bsql(R(EV)$jYCSz z_#!$ha-)`ig69hQS`{e;1N}vFkmQu9(wTC20yHyf33Xp56d_)Mm=knD3o_9;wo?v z*7nZhaBA6A{>pY>=o$ivZ|_G!gp4OB0lF;#t1w^Vj)@$jPWdSEU%Zn*i#(VqRi{R+ z36i=*;X1{e`U774@~tWzjH&G2B5D&ERxH1_M!@Pd7dp}7n+Qo+U=MeTzSXQ#DM5@U*XQS*spR7lAfwOQszeDkyX9>23!1?>i znT^;0TVJS#jisB~{1!JEX3wiwUCocH$|B-rSD?-m=!bf8|yX6HIe*P)qi;TLv4g9VK zoqLZdFIZ}Z%=`d1bJ>sO$iQ2g;03@k>2#EC)LNKmae2VDHM_^T7F`e_;D13<3$QhvX{Q(%YcCwAcmK_{gaob3j5$?sR%py_=dSZiW)9Y==yJ*2q6>e6BvX z@WL2$v|l1nH@@S&LBV5`xPrMQ!dRePeMd%Va>%ex-)`f#u*17cLVJJS0w(H?m z)_$6yS71?nWG4eWw(l}~PlgRwPz`(>-O?Kmbf{-F{~m5ggxLuXRpi)5BFMWO(+y`v zYZElilccTDGE?eCDffczg*Q~xCa-Mh{McAsl7hD2+-f|NQ_(9SZ|S!$c`L!Qh~^M+ zVNYWA1zGcyFqjx1M|yGHR!n$uBECr4I(ll8|?>{eijK#1v%zp6n@yu`A#@tSUnKZF*kBFT{V&T{nT%*laaGx|4 zbOc8G+`{$ouQhWnuMW{GU7}}u%zOqfzZ_GHfC>j8I8J?*8akh~jg2h!c(fhqAM0#f zi%;+2{MN}>q5ih*LFn_Rzf%H6-b(88_bM~wNV2ZcL2Tdi#Q|9O$n~maaFuwzg8npK z%?ww_EyxDEcDwyCT8>OhdnpjjYH>Z~5RV8!2*pwpDrFgsNYESB#$%oZevB*cDn7kW z73@e8cW7j^^^ml7%)La(sm1};;cgduzTan`=I4Yqf@T){YxgER&(92d1%jp23y+ZO zLI>C3&+VQ_O?3t*=K-0O1qPbZh8Mb5cE!Tq5A7N)aMinY!YErwMr@nCkI7D(E=6pf z$$ysHJ(JD&H!fLkZu`6_-8+=WR$?$il9iMqv+1-sH?h1;P8@g4>=SU2IX%2s`lg9# z8%|c-k&4nAz9KVyc2xGOSL`h1M-sI?Un=EbWX1Tu)Yb%}ZN@Wprg^>?i|Lf=0o zfeHllcX{{k*Los=g&*60?)bEKvUW7HGE#K2{r?n={Exv<9YFpC&S$zPfe=G$3OOOFD3J2h6Vxb9O(Yu2Jj4a_sim+E#d*-$T2kL~G=1^t z_QO1vdqG-~8V_b{tbjNyN~_G4Y_4XHuWTJe(P&)15};?qvU9JnvY3p<4S1pZA|CrC zuZf$n;}Vsw^-xMqfdP0vz-#W?%x4tQt74gkEm?}d{gOQyWa#yjj94j*AXQ;lrQeB+ z`c}`NG;G0Q8Mu{=SfSFsiVxR^E%0*FyzSUpH+!0qI8h4Y8#VB-l*VxDOodsCrt7e? zC9s*?s6DkVD~#ZEQjEoYk+~|s>xtTXoMtw>GdmOd6W0D2sV^6bj$XVnH;w!%VIrNT ze8xDQEeH?4x7 z1s7iSV_EfIZ%Z#Wz1)B4uVVBrer;x_ZgSL^Q>Ke`qMsJ9zC3hL+KP=+6FHvH)kP#F zh1&i6vpA)T1pllkg>_RW(M8&kL2eGMUW2nXiV~l*Z~^1UH2y==WgVB;w0j;>oI!6( zt-PQZTif4Ik}9Wep=_}4uzGMNgIrIA=}mr0`i*tEuN^Z-2ugaR02xp)@`KG#uhcKe z?B^f~{EX{ohtTZ|E0!IG4 zk;gv4fv5xGM+nhUlJn+)XM83?sx$6{$Rh9Q1QUrDS(gSuZIymj)&0{wWtyLp?)3A* zQRp@tCTZp>)QkaW$^$J6*}%zGCi~ws8i=9&cAjTi+hm~5EBZDp!Bsc%%czLR*s9u+ zxYGoSsuGC(lLs|R$O_OaeAS^N+sy9T^$V#3_?^>+m{K^7)FvQj=wxt)3h8yrdxlX9`5=6MAy;szW^(;JtPU(&F&rTDrdqO1ydx;!+8TUUg$JcYlk#k*vc| ziqwQg=JV+Mh-!KJ((2mVs$B0Ro_*YHb?NqiEr2{~6jNpyXvG$^iF$aE^10L8c5C9L z+Fl0y&31cpK%gJ&nRRA7hA`{4for#DAVdv**0O%>boo?X!IU#EUFG+#Hyy^hp&=51Kfo1loC?BAGt=gHc97^AYVd=QSxWLNU1aU0b^v_zBf^upM z!YOSJR$kiz5m^HTSUoGq`|D2aLxUvOhCl7tj-JJ`cP)m6vZuHcrHV<8Vm{OxTf4$0 zv*ptYn>|=Kx8T}Xe-8m~Isb6AU2zHMe%RcxsOzn1tME8@)lEuI8r7a4d!qO-x;8%7 zn7K@cx4wyHi&kBdi7q}z7l~103stM!+QQIFmr;$5iUhL+!;Isow%O2QOIYwdpJVYJ zwai%?N^}XFj6xbokrvG8-N*&0h7?((($4D~!F(WKyre_jd_k8L&`COzuwGl5+Cqk> z71#x4oGvKaWmsZs<(8i8&N*P7UfbP#OA>H7)oUxV%U9SBNyWk-8-Q3sWo0Qx6m*@C z(G=WzI1}#HgTl4O&dUus4e44CrY%bCZ#96AhifqOe?gdK@dzMsPdAB1ua$c#>D>=O zmI-fJAXej?0J2xneuTyXG!IItX>Xd0p$Kiz_utb@dEH4+;)o!p+m)B#2x$)GuV!Ei zr6bOXbKcq#@o!lw+^k%l$+^C)+ZQ5urULF$6FK5Shi1x2FqmY@Q)U6dv{d$^l6G_LaViAGpc3 zRtMMD&Gxg6>Lqq-%ESp`yk_MQbV(po&-h?qtr}=_ecsWKe>z2G`5ZyqCf}uIdf%~3 z#qp@moQ{vww9~x(Uy7%)DS+a+e3;IWK#g@vxzz)pc&;?8wahL=eb?fq*Q13I`xsAH zBvfuZ58JgG3q+BzOCrsuNylVQt)wqyN7JC%k*pR_>j)wh(?do;KIYAZ?PL_W$G{sRCfz;_5@dx z8-%9NtEJ%S)S!!|O)uNM6n&pAP{pQ`jtx%_28SBI}E=c#6;AyQk`VYaAFa{uq{9k~n zgwb`#fr^gSRjp9< zInPXq63w#*bKyT{O|-`1DTy?nB}q*m>okbh+P+Cd%yx17fqjmXb9IT5v<(|OR7s}3 zy^ok=;j%XV=Ngr3RH=q zJ4SXem4S_Mm~s|j@~pC-rEcPfbR$!Bs#o^<+5<0;f_AI6xt_h)Am8=}^&X`u2}cQG zMgW4?FhD5LZStU-{!r*+I`#k_asSp$X|7`nAb5&}@?ahEyGrGM{I=o?N2Vs(m(RXV zi3TWQyXOwi|D}k$o#1oa_p0QAlY}Y;CzrAKSpdV?I>q#r$Kf+wzen|Qbu>SiTZ=?B z#>ZY{inSkxqr13)yiZA`Pmb48YL)GpZWIqeC!YE{P%(bKS7k(Z--%v$_LCeU6mu%| zPnjVnRNrV<-kO|-|)3uy>jNw?23;BTP1C-MKZxoZwAL4gu>uFQ{AH;*p^S*kUq3qu6 zyx@VS38?U%J=~-MQQx1ZI&EaxEQigt^s74I5o3_)f)GQge+B|7x4swKSpd0```@CHa>Pf-TA8!pvHWMvqv# zNv$E`;=dT4>;;|Y1hNL+F#v|Ai{{hmh5~@$Iq+`K9o)3UR$YHR$2@KQYNlCg_rPBI2NR7PZD!P&nkvDK~E3sizLS9+))fYa>LvFToXfbt>@3 zL(T-KPHjv7dYg`pTGr!00hT!VIl=9`X3$yGrzjxFIzOM*G~I91;7Cp^my&b3sR6NV3jytG zeE6{_qC4@J6N`A-MNhWz1s?6Gh-wM~%)?%g@F8|*u)PbTOgZ#hw~n5D^@uVApjw>#}Q6WJGR zqT$;v{u3oPU`m=Guw6SMF0M{5A#<`)(M;= z%(cmI;xQdVMF%Lf4ai*I(2vNvRv&ym>Htf@2m5A+M{9nHUJgCl5B+C%c#Buq?@|cj zVGJclgJD?j68fa`YDr8FIco{n3W1t=Kx5G0E7H`$M7XPre44pWDUq*EgpLo5ur9TT z-#gKoPAUqk5{ZmM3+>S4qd2g2)mETQ+$g$Lt**=3nk=wi(+obI6B7)FxL9RZs{0=! zYT{|>PN!ls#svwk!&)plSLoMU9FdE@J`?63A}B!mS`8+yN#ST8_!+{S^QPf&8*Nwi zzFpqZOb=-=wp#>T%Yxjly+&JXU3VX)v4y_0iVo?Wyv=cG@Z9N#}1 zjhMgOoRc!$T58y2Pm)-~(kJ>tgpH+Z->wFEZ`1pywT1d;)YjhTj}azVeNsC|vWAl@ zkg47bPq}1bn^!PBFAU~wIWlN#EyY|zBeAt8M>EyNBhKIKzh1A$-|7NyLFw$jdlA8A zPrRF)egXe|$4tdnyh#Egoqt~||MNSB|381n{NvjZGIB7mH`6x~G&Qp{v^V-s6DD7P zsu7H@O&{=LPdwpG>_fFAYb?>wh z^R6fQx4*BwMxLW$44)fL_t7k_s#Rr^3T=GeEEC{`75Y8IHLdovIKF8Et%z(;wrpF>st4arJt$hJ%YH z`89;#t-Cqp`8Zm)Uj1dP`0!g{Bd$D~DCp!3dn$bex!xiZgE{OXtq2gnypPusmnv{S z^mpFp?d~Qmq=HMOmbM%e8@+S3+Z{Uk%kW!}LWxx-G>fKh!eSB(`E_+DF4Kf@VIniWMVWsBe* z-c=G$@14rkI@09(-O}W^Uy(X8bzkFMo@okekapMy+M>gIO>jX-Lp5D+NvvgQhOB$}&$2%8ZZm`7Q14gFzPGV~ zJ5H#T1-=QRA{yyha}g4+;G__eEn3i(MZnnaF%@$zrAQMMp&d-jEUE>K7d7^tVJxA$ zE!!IGX>JM!HYxKru==ZEJKzUeo6NY5i9 z7o+DA7x0(*?S?@dX!fv?W`Fui{rYT29^=j>k}d*PAUTQ?P%Ua(|Kb6t7L5i}i?#u( zMH#x@qV%4?6D7?%0&@cR3tpz#D|l-j#d?c{bvMfIS?2MbzFNmTuI9@&rAbS+d|b|k zlPK`Mof4nb!<1ob{+;|+eC|$o-QInaAXJZir(hP#y<)X_R4*4Rek}Q#nV^6#3EHhd z;I}_@?@U=bX{Z(wm1iTWuVcFg#y!vCm)$|qv=QtDb1Q@5CP|T@mB`()NNG&*Az#1Q zWGuSV>6FHVuUi;j&{z1Y3!LUe(4HxL$2W&sT!XFZ90Hlac%=08{hU%d(xRz^mia=1u>j?8+jRg?F3&Y6+g5|frMu%8lu zSaNXjJaqosNJ}8QOBdu2O8tGkodw~0v3xnCD~T$6@f`dN9~b<^Run}KK?$WSYm`na z(s>|9#(?p(SrGuIsiC+P2J#f^h%Hx6$F3!2wBu>&tz!~~_xE*E5e!o!`Zzi751?sU z0u%pz-JqijY+CO^oR#J#HgWavaWSdI4Nn=Surdah(9dl-Wf!XfQYC+BnkRj&`EjR? z(|6Awr-)rw4FBXi>pYAjo(W)XTd+dPyDkNHS0k zpM%7T7s8PQF7NrdYXVZ0ZpMo4mW=Ku%=m5z@i*K@jJP}=w&NPsnO7i@LPghZFl*wL zTAV|gE6=Y$_XQ9n>SoIg0&>nx=crv`mH;)epL`LFd)sO7z3&|3)7PNQ!#R{v;4pkd84AR& z(9VM**#QmgmmEsF1sHvclfkPKNrUl=5Q7Lm))Qxic%4RFr_0hrN^eKvmX=WovGPgv zb;e!ivm1iBSbk*haYV=}JQ{R#L!jFu)r%?LpFd|U0SAJt!?&}ZiR(yV|JZ|VQ#pT zVjyI>KlMTaYBN+?XPCmKgVff-J8!$#PNX%KUxxHI%0(mVp`X>GYh*wdVY4Ajl3hhZ z2Du)O4`TOox~H*r0NB!JPPF|abhk>}6AhDUWO5_NBii&lm202T*C#F}r_QUfVBDRL z>#w#PAPuvo`~q)5@)nYK=5N*+2Q$tam+QN8e|pF+pAlON9*Oalu?)>xSf`F)9*(S; z*j&)j_qmUx8Fr5f4Hy>Hn8e8urmmStI!GSpL{gtw^&M-ym-DhuH=pV;=6de!RS|5aJae`k9B!&S@wgT2M}G(dP*a2g@V zxV&~6X%a`S(C*-p&4dIU9?I_z%(t4w{M8x378iGtb*Y|8N{re5M)M@C`u*eR;^Xx2 zi>HG>vC55AauRZ{K#i7oO(>X8{P!dPL|FzsMoo;q7*R4$_Q{BiK~$&Y(SN4nb7n9B#d$f?JYsft_B_0=);uOh-T9dJf3mZ7 z{h7y@TwiAq@7)4P4ie5Yz2ap#v)#3_-wqv%pE!sBUAuefjD&%( z1~E}MxFw&!yBhG>ZInZ%lXg-Zd@>`$J2~ql#h3&FlA^cc-yTs`5EPd%1SLlIfiAv| zF}+=)Gjem}b$E|T)N`)006_a0SrdMEQ#sE~aoEn&ypR)(aoQ5$VLpuKjK!JX?~xAw z&n9h@u)@`6X|s`0uA^jQ9586MD6f&sNXWMC8J3S@IUitNE8{2+|7_@ z;FwsWP?0L=^ncL^&{A+zf`wRW2-$#BPS9muu|H+fGxnucgHlO*F9otR**!wTyXEI% z8pNj<3z9SD`)0u+j0Sd#9`P@}1bLOfzT>)m-h}nOW-wdiWk6g9$aA-dUOZn9x|3$N zZotaCdLsSPZ|+9lsne_>*m1t;VB78HPyo5~Bj$BWPZPeBjgY&mFS}#tS^E&N@;-Mi zV81+B;kyhO*qIT=-Vcn08*qDGZe{PhH=*IOsq(z!3-+xX$yk8Jb#`*P#b3JjM!!OVq&4au$ke`G49S@H z#u?C-t$M#)EAW}w8-TjCW9?*oyhg@diA7HeZ^YBuB>KbKC<77R!E)ee%v;KIKsZ^2 zF6`%1N&|r$?G%<8i$L#Au{TcJ0D_m!%~io{ez3e=wysG+lZJ0_gU(C@fJRx>Y|HJm zJtJ_2r<=oFqn02ucY-O+e&@d`gA z-oaJ0d&)5*6}qy$U^VSGJl#+DqJRbFBZLF;!LdoKGOSjnJ_p94!jSf2lWlj3l~lpo zhC}3&sn7B!6avp_m?glkAeUjL5?f!h1)6KX5UXBn9?C%lEVVav4u?YZ-ssuJp_(N1 z6dOnWayVpX@`hGrmPz?rO?Xxh=uE{460(NJb~??}@pupJQLQ>m(9>^9*}=Zw48 zS15&I?NJK~XnpzUG^PpViM1Gm2JTQzBj*b;2hzcmw6xO84UFg=az$XyAl)RfCQ7o} zbBvFVe&r$Tbn57KHmlC%@N763D73|5i+tf(c)3r%XW-r)?7*&t!@=kYM_iKOFh4vZ zc>!B=^wT33X?)22=%u<=I{|V-)QR$>0!E&Oc#Qo-nonEdgvn`NGFx1)D z+Z4Yw)~|vwl1S(eorc}F93a@fGfMJ9yITZj`#WS0B($j~WHiL}RbaDC!HDCpgn|9w zkSp{2-0j!5UaqV8uI_2CGzGiv;4JdbV0zl1nX5Uo`dcW=s*EbnJF6|kKcrmI$G01O ztyRoFmepj|X`H%`3CZqvLm=+LHY~rUbWP=EBojSfH{{*YJ3_OEhd;@JZw9jyTG?G* z>!b%2n%_QXH9IcSK$s4YIjL;P*sdZq;&iwbUt_kX38?m#nhOB6XtF3*Y%p(tJjvfZ zL_T2~wJD$$?XRBy`#ppd;L`HHU|iT(11e9Y^=t+IK};F`hl0QUmqP9JtWrZYlbkZQ zW;U1Z9I+$=1S*ZXaC%9(Bax485Uwa@ZUyRfF8P(q*PT0k`3!bq;^;bC^^~*{{VxJF z!g1RH``5|CpV4t0ou5Pi+ra_hU)uo(4#hvV0~v(>+jhVXupRKqCc!o~(gv~NWyi$p zoWyL;pe{B{+?DzUqDiR7es_8@ggbN8Jiis~#`pvyXaiI>cT>(jW>^#w>1Dg8ll3PqLi8D>k&no}JP zT&w}img4~9K^2RE>P@JrR2KLqB-DN^STbh8l3WykvUhKk zq-5GIZXz)WR+E(8ASbPib?-EYO;lU<(dr)%zFa*RlRzpN<9l{X#_Zj^Tf z9Kd)mjdU849VG%iOE?r(y9^=)uN%{V6#K}QdX{AIzB;gyR z-X`c$hhFYc7U#=%IIlazr<65^?DkbkEks8PP@sTcmBgNZ8kj;!TmT@{gFC;6K*9hJ zY5>`y5Tlfh-F&mIE4S-87Fb^XI@i$T&$GWX@Oz;}RW z%VU&gzRXn{hvq!evM}sF-c--Hgi$FjAmED6siXp}m#L(hUkMcPv#bo|m;HX5)oMP6 z;h8!$v8&cZp{9U(FHA{d&jk*}Hl=b~5|(4JnPpfiYSus-(B)mDp607albG!UNyKJa zn~)PktB|xiVEZ6N_nOiIIX@HfnM--f820`_F}R5-HI)jDorehVh>UO6z#C2*`+q2V z$KXo%FKav9v2As1+qP}nM#r{oCmmZI+qP||W51{GnR%z?ssBvPd^o4-RK92JwSQ}` z%aAmZymb*!LQQk!(>;zp_vX^RE$-~?ezkeM_5C#EfhIwO&Y^l}L5py+bMLzI=t=j% zt@_R6@CmUL-zE^cjlnRM)H@GM5F49(V>EPV$XBhM&vkoH)h$>B>+N}T$7b`Di`^aj zvgE4EA5cR*?WzWE&zvs79Wm7Ez%SOJ&fTs<^Yq6bkUQ{(9P)u?$-zsC`L`PC+l4$% z&oP%9b&$U`)ChCAZ%pobVp4tHrFs=rVRg4Ezd=iVRcH11SwQ0jL+>Lwe@ZE@g;hCdypJ$j&b&@05zeT%i`OwsM`w(IM3Y(+e z?5LT&L>F{ZDRL-n@gd;mys`_@yJzd09*yYP>$!?QFO;y=B=uxLcNaT__gvP3LymD{ zWFO>uVRzJc<^XF|TXpVp>?jrQiQJNAJf2OyI~@aK-f442Z+{vv{at}P@kBvIoAT>; zvIzmb`%P!Wc8=dQof`!!ik$N1NPka7o3SoUN_dL8&9Hu+!&W}>b{4(3EvZ7+g3Rvg z`R=m&E3cE!q1Ef{7*Iz2;hEEPz0eIk>@2e%@@puTi2+kGOifKrU8FizNKtxfLuJET zuEC!8Q5fd+_Dq!Jp8n$`wM}~vh%*bufD6mDqHI*R`;=eL41Rw9p8TK4fz^IUxxluu%5C%L zwIN}mESCmUYh(;ySD(c-zoha&Q|$Y`d(lj2;4L%8u@GI+|GxHhdE)z5BKQ2rGBW^? zgTF%fuO+eo_y3f|`?vN*C1*edse*Q^s-)YuW zeV&8}krHG%2zdE$7?i?_ac{qsB+^`Dv<+D?wxrskEK@{6wed%tcY0ySOxvvg$<|Sr zV>yLs9VI=v1m3*(}0cCPaA_v2N|T6A2KXN zFF^^))N!IULlv$sJMFP zk9~PL!sCdo5h*$igjs^j%}$Nf1bWd8Fx7ykY0PygtnoG zN&`7ukrppGthvxMs?&M;!)T+D{41VL<%vLQvmNzE8njFrNWL~&yY$l_4m{g5YAPJJt=+5G^box;S6#chQnqrn|`bUF(I88 z8F#EeX?IZpPXde}<##4V`10uOwb16M>9}0{&!O7a?{}!GvH`>TNvKy0kB^?sRiyac z6HKy(y!0|XA72F9j`--V?FjIlo^UsrY+@dUstx8^0x$~*9)Tst$1jm)ud_}cn5(=8 zo;_VZ*@{ObK=nGu10zMH;g!*koRQxIzqBL2j30Gr-UOi`UEaLzo9&*M^0Etf&`!iK zISe^uLCbsxfQ;Pk`rm1atpR)Z&(Ylhk_^=9~Yj|kDL$2l* zo>o)btG{6$Pn~+faWx=)AOmOMCjN$l7i;7*<1E$nkQVIxk0Vawd$95xZBkpg2xXT| z3}tI_f2B014X?A?xYPrco9@%Oq1&Z>hF&vR!CS04I%1wy4*iMX1m1$&{dRE)Z>rkG z(}~Tyty$OCp%j?bY?jg26olNmw1|TZz+J)HV$y1*IT^f)BH%<(b~=Tzylrkv$BHQ` zvAg25cM5>;_m8hIO6VhQY@imtyY{shF}cA{8&Q-%`j^C|caAMdrFTD8ZjIxmcp(wb zhkr`tkL`djx2s?JjvPxtv%H@3KBjh{tL;USwY?teF}>F z=(kuuFVP`t*ArD7u{!Q+PaUM$2p`i|&&twv!+J$@J5P+C?*kT%PvrwR3YcE!C;i>4 zKn3yAA8fyZgq@})KWI+_ZpcH2VN2{vTzzXeuQ5U+MB_%n5D?bso0XArvt3owaL88> zAA+Zqd+MVw&9Hz-et19dOl}|%jvqK#z-e&hflmt?G4NEn{S>`gu(FUJp%f#7f2anQ zCxRe)MH*1k^Q_hsLrB)8D`gVUVDKIuC+8534x`fX?){sHw1s5Sbu0Xzg5^q>DyD*t z(ZVH>7I8uhVo*TsW-N_3`Fk@5OZ1nr!C#W3(!(#Zr41Has$RhIFVy^3#Q${ukitl4 z<8X3e?Pg{$jOkk0WTZhnJ6(5^F-b|#X!UrxkdGDvh|7`2eRaa_)RDL7|X(w|65O*P6VVytjUgMhH!DA9RE>jdgQa>6V6y3A2w!F&{|h~Ub>wmd|~^zB=aZ%MEtvu z{ypMP%S)Z7-5&;s_@j-6^veJu{xqGt#Z~Ae*6!aH;AO>Oy>!-dFht3Mq-;5m7f_^o z_U?n6!5Z-yg!RN-z^g%&%(pbF4$4O6zp^Z(G^>^}SYT7FYL;WF2w=JDH=xvI^Jm@$_czMR zu$Fv!eE|qfQ;$et_zXo7YQ9$8L#Ur`;ar8s}?kYtbR*CFB%6k z_*SU*54t*(aq9F`FsbxaOlx*}a^>c}|KvTs>P}?4d-2^5kRpxNLpUY#O`k?C5THgf zYWeH5`xWrppktO!T5jVtX3SUA(8Za%$)4>=35zX4e4|C!sL9LWDo2+#mNqE|=Xs;~ zDl_)nw7z(zB5XDi8k4Pzvkx`GDmA(k4^xsR7~2fNHUSfb0L0Vqv@4jmc}Iz1pI@rV zAK2YPLIv!Z02>Q3DHwmn2JD$p#%cR48mF+l56NrdU5JV)O%k5P8zka&`ESX^s#VLh z9+%C7X^<5Ohfj_sYfnGXhIIXqdRZLeMS}$0CdcBMiorBXW+O=O_zORNhVPx)$Y-l< zF`9W&?zi5qFOcLLYd{78eUP+z<}h$WIBpELMMlgLMSnvQxgy0QvL!?-sFy^TSZk=1SM^?ZD~B2L#1^HML_5xIn<=YsnowU zA)UBH9^gkL(?Wx-T3|KkAEl)-;PG?u*_x@QSLf76R-r%T(QMGI{948Jj~ z0`S_(0I$7xE$V+i(uy`3CzMq_``{`r7kh6O`%ozMrnKjce%txyyhTY|fEw%kvc6?D z>=e#*x0;>#==B%gi`>veTxr;Jf5ZBsEuF7CK1++5{>8NXez3r4X(aHO6FD9oRC&X(Hh8p19^fYs!AD}Z z^%FrO5qGFNNqj^EItX*bXae_ue}hHK@XU*M#ZmWy zcRP2|JFniUJSte234J-(Ky0~%MmJ2QAI@CK<(NVnvfB#l^bO_(D^)qpsw!qw2g%TL z)7XRiP`^o4-5<2$hwa}F$Odi%_lt4Xo*B=8%(wj;XIz<)T<7W$_cX32mfHmMWwl`# z?j}5z`EpO)dKS^$R2db(ALmG-MTYOoeXu3{?h2XgE@YOvPO)@uLvvOkjNWYT*SxuR z(S!MHq670K_Jrxz*(6&2HNMd({b*QS#~p5$+poNvLKAx4ZWMKiN=KvFlsXTv+SJm- z`UWj26J-wIJfaJJPIIUZY3MELM|XsVmwE=n+|`);q)%*~@!OU6j>>(%BVgI0o2que zVz2eGj12k%)1<`(%OtB>Tz1 zxGet}u>8y6djS#rB*L-MEZVrlcq<;gM^G2wGJ7Mv=)tplXzsBDOadbwqrg6rQs~#| zdc(Gtg`O2m=##{ zXOSU3Way}P2K~a|wuQaJdE5jWduxI$trE*+q9g@{NGdP!b6%4q$i`-=0z0Tvsqzdh z9b!%e4s^{+XJEU3zHeKM>j65N^O~qMxOv1g=x2(OrI(qjyKTIN(>WpQ#&;mO+81jA zrD*B2hX*#x9zP(D!I7;_2A^Pmo;gBsHYNH_Z)|H#F2Q=~0$qCxxYt2P#2e~$#d-)dnYR|E5wIbp;z*>#IAQ#zV|t`uZvMEkNc^~o zW7R;ot;NYUt8++IlU$vVTANmjXp^0DVP5xHC(Afy&i>^DkB+oD;ZhdRsDa13j!+o6 z=?3zcyou){YR^1@OO@#TvE;vHYB#rhYJv0jWi(S;QisBs1=L{EaDLTsl#Z(oph;s4m9fz-vKK);Ns-T=9fNzVYGG zcGlM`VpoP}FGtna;0(PGqij=-3$<(+W09(3mAMK5)$v+LHNmYUrYU=+Edt6m^|$4@ z@>25;$S<<2;)rr85YC_GBZgNTa`FI5ZF(zlaeyJ_s`#ne-A{klb7Pvr4B)DCSw@XX zrm8Q6nTXqp!(eM=FgZD6IJs@Am$Sp$+Y7tl;fYTcPY17eGyc{*L9QU6+>eiEc0#CU z#<`=2K-zCnEsxEb^idKOLmVu5^c`~32&LV_?!F}Ak_jB2vtWq~k+UxP_g<6It3{BS zo_rp$ETVQQUw9@0Y-l89gIE$|k-uwdMhTN&P)E!19VA&upZtV^2rqnXn`YC<7GUX>75uA~o$ff_* zWLm9gFRF9kQEBp^l~wD}9er*x#BKZ{C8S7-D=U#?(a2O6l0g+^5CcXT$~_$6{XEk- z&T7$|!A)gQez!8zQfQ=Pj{tfY{q<%jJBv`%8s1nF(QAYQMO=Gt=qAycAaUzvZ56UyAFW0V#USEj%_|@NMM+inWTOaRIJA>4#Sd&@ zq^yb4E3lCYujSFi%Yla?|N3JkY;HuXYChTfBZfL6>_B>*H?w7~@?eEkC27Z9A=4hQ zjAJq{3CGC}^MlmFc0K<%n>ZhLisqJ58I(M;3e^OFbm@xxB?kyTOnE=wQ12)Ik_6Px3E_}l*qOyYF!9(Jy<_Wy!IdJ)%r=qLoZRzW9oWUT6Y3Tg09CqIC zB;$EPmfOMn^{MF<{0*12d^AdVrC$!r?yY&dztgC8o%0P%)QueOvI|e&oDr2hV9!`B zkP&7E@w(ltLZxP0?_O+lLTu&;Hi?}>9M!81+#6zef8YnU(-;8th|mc5DFESnYhoBBQf*(1OkYF#m|4jdPC;RptqBql4&WtcEMRXNpF*ESFUv?97dTDuC73q{Pw zGEfJ_zqLXVhW+7I-Px^c+a+OGmHiePDxNw)G5`v9S``gEVz6-r+Hokq+vOx??uRQ% z?GustP`3VBVz0=ULuEeh<$UR9`98*ejSV>O+f42+{c#|Ym<#}CUl5$o3r2IBIMWmj zZRUNNZIe{@!jo*l<76v;d8ixw0(!{dhvuxDp;x>dy>t~1MWsppO^RXQ27qRFWx%YL zR1utoHo9Hz8%)@dcn8qI9@=oU$k%Jfr13qfwXC|VuM8Hl=a4PCS=~On&e)>t+o!d3 z<9a=IY{GwTT!H%%a)E5NUJ<8Gt3vB2&DQ@Oz?FP{jWSLe)OJDcD25fIi7|k%9xu0S zHE88Q^jmLl%3Dh8yw8^hZ6&=>rPXX2JQKczs}n-B`Yd2{06*nfDc=A zglraZVE?pmApxc8sDJ60xPc2dj|iGpi{35d#2bZ|j%(YBv&Kun zg)n-eF|ezX)!UQpFn&ZuB@T9o%A79_C!FFkdnJRW{Fto|u#te>Me0@@AYhEY1*^j) ziS`ISY5cr; zRln4Upd&N{wRCp1l4vtpKbLVKYa$M13T^&fK4|IjM7QKb;@iuB4kM0xt>lO&Ow(dy zGn6Gx0L0>e*8M?upK2UEOSh8AqRc#oOhrEoT1rw)(Ol7WO}-m8hbyM5}S919uUGi z(wG|F%*{+J-Wb1czpz9(2Ff-~do?PrSF}5-XwW$+3lvXYQ6qR@8tRbhUA638NGxl? ztZh+dc|Du<+9t;!EAej7?6=oXW!|S~PZv`;sY}y{SEtAsdWTLc6DZBc%PMW_(C`tm zNmwg%f@QaEym`JjEA>C#e$=D;_`2`!9%w%H-gFJ(naN?CYnNt;c47mJrl9G%K0t8F z{T$^-`9aT+`ST_o_gKB#9x{z;Q{Ag9o{+^8&TEY1X?fiG-4+qw7avh$C}Hz+m>?rZ zmwcp3I#=pcu7hj$4(~-Dy-#HNFJ_q^wZ7Wl@l-2@#Q8G8z>La+{J^7%YW9pHb4Ai* zpIG&UapDj6n|{jRg$G%n1Z~@o{IcnYi2*}aH-xpR%Kjak*B|pVTbnm;+xYsU98CK; zfD722E@)ejtFO6WNAtzGkg2YLDV?kzF?EBPy#?8|6{BsJ@NjrtyT~1_1$!6$&c3OE z+&UA$18MKCjJnk6HzB{;jPytFHyd?uycl>vbThnW;BFc1dm<@NS=wfspT0l;bZH1S zkdu6Pze@#MSbP`x!~GLY7b(i)kH-3&(zIRExcfyyOS_N6oah10Rezzdn&bIYQOW9| zPMPnQy{j5hcbAw6uBBbchf32M8R5T8Vyr~gncpCRfd0-~|9TQD#{dE%{qN5%EUZoF zJS1$5P2B(M(DmQaJ0@+h+5Ymi(`aU-CUjOU=9rV4#j{Z8<%tBcfo$l$HAz`uUMFBD zP_2vDeSC|+bENYSzvg*NdU6Qt5-}66b|o3FE-n`!yfr(*p0YO`NQbfG@$tBMKR1&T zH>hCT#N0!tNY9EPq$Secp_X%lz*OB}OhA>!wiQz_BD?olut8Z`O6s;9utxC~(c>-x zFE39=-A@oBR+@8!)DD#s<<9+smurlQFT&I-XH{$yd#`-ZjB)5i$|$>OoQk3?4ZTkL zx=M?vsNO4S$*B5gc8k^mX4!TKkYFm8+H0B7Ux;4EDy@!6$7?2{E6DN2#O5Vps51(NC9V^|ve4+865{-09 zIoWu~i`5{Rd|GU{d=|6YJI~SQEnOA<3J$Ct9~SI8pX)UY*fwZ@5ot6L#CbbDJQ(6^ z2ad>4PU;3qmR8N0j2uDF+9g9w+94M0)gu9Q#<^drTR;)J>`qPHjwvSSyn|IjS*-|D zjKKQjGtVNW5BIA}7BZ_)LTieW{w5|VucK>-QF3l#mWJr?gx~rj0wIFG?}n{WkJ&3T zvMSb9ts?^wA-;&^kjv3C zx#^D6tlK#PE&6o+?O29U;nN}zMD6bTD_&^~^6xlmb*>7t*mDR!zSXa*gVPS+yGVi+ z)w)8KGzIM*260LWk0Wl*!6U1**>!aCVw2{lP;KDK3!s&8GL|%auV1vDU|vi+{=ti4 z+)%rysXo$Hw+lwY2TbWU850t-s3ELwget77;|R@c$rvt93u8LeksOjhQ6dnxQ;Wf= zD14S+(jiasyg>dcScl`3F&wiWH;-g28`$C$t*g#JpyQFzPU9XLJRv#zAy44kU7DOz zhNK;`MZ`{z+PM#=BKstfXV*=U#cSj^6eR}1dh)Xqe=g5gKT`_oQv+-$ne{qNHSKL% zhWGf>_uu=;t6m(AQkSCE7&FWum|0qN$t>>Jw>*gLXi}D=k7#qWfYIINgY|4%gW4^u z-tcxwG%$I&%|~X=OaFZPl-JxeR<#hX2k%_1cVuf+dh_lqUIOI`#@{7U1)rhU0_pTO zIU1#?p^2DK$@(?dsB6J*yZJMujzKMu|g zAyT4O+W-3KM`^aLoS$tGD(W?6drLhJL$6@u;~HMabpE$a?~_W*&rA_+<)6W01RJsM z`byJ%nl(}e2F(r-WpHEBEoP?_EulaCT=%O4J&Ev8q$PD-712^!$mGlSNvXKq5tj7U za(*;uHXI&aLN=bQSh^2QdiTgJM?u!dO!zqOz~kT9h5Wj-_Z(|Fp?f(8qg=`}YL^r( zM76Z#`V^wzjr}xYBU|*9`rhn`xhgeXP#pWS=@_bQmqs%2*>O`)4P8{75m1YwNgMU} zxIT80*v!}_hlX(kuSxcMMJlw!v_6=_zs2JXf%CeaA)%;KjkZ3Rw{JsyS5&j8oTAFl zt?fYmSem3ETGy+DW@HiPkz|QQfwBk|sit5kBaJ${T5i1}pKL=SL~E!mg!lkO$E77Q z=BEs%l6I_(=RaqNJ8veSS%7TAU)B59 zdWen*;7URlXC_@SsA zRlzf~Qwk}UExFS)5|s5()-ej~!!`})2Acu)`6v{1lA^qiY#U`N%F8IfdtUU^fnsHn z1eFZPtpxXLd;DTT1#)Dh)2sppCDSkPqBc6q97<&g1%)y)^2CBh;wN}sc2iIh34x@w z97oM^nHJ@oh~8WQDXH}I&|=T`x}kj(4sKQbiQ zC$QgYORK-<`0kSg8-VyGgDp$Zr^Q&JMyE}k8$hg84_}v}-DXzl4W`G}5kOM$eqX9$ zcbsiRg%{xzpqK@L5C5)aO91kt@4e2>3Uq6}WK=xAbWm~?qplG@j3F5`UH|5X{hM-v z5@nzOPOqnsDY2pjMO7j@YDm*kz`Dwy;@Bt#I`h1Ga!8z?1LyMarU3opzdBr(q_?YVG_f}Fswdk83V{L_1}f% zUj}}A;vmX{u&2~b6%?=x@bYsXTntj$^M2N<%n`jbNzq4>pwKW{(;!mEUWPEm2pi-c z;j9CZis&3Y9Yfy78I55A1B{f04L328R3bcqDTp!8S9u-hzDm_cnWYDq^5Y2&EM7zd zP`oB|*id;Mmbq{WD7nd)@l0d9DX~!^tw6va;n45z%BaNozsY;1UwcCXib(f4F6i$u z=@=(~@xLi!O;bbevzo~0U~-EJfej6jL<?L63QC+tjZEe6GD z11y&4OTd;hB{cb(+3+^8Bd;HbywLWe%kH!Sr`&L3_LuTFg3)$K%EEt_>*sc>DV)jN zVJ_CoHpayTJZU!kWT~;JJNnr)sS40ZIcD{_z*i0Qd#sf71oe8AiGd#4p#I`He8NKg zs{YfJ3u97WSRN@y)0|N*=~ zt!bcR!3tdjjtZBEbU!y}{p>noZgFVK;xK9uBNb$oZEY8I<(W3KfHa&YCD#~TtxTK@ zJA&ID*Kpp=-m2(=Gb?dE&qcTwf`5w>Y`|~m>r6AU>{186tgaCdo65U(a7e|LZpra9 z;@Y9CVLH%}Wz8Fs7B_To_-o@VN?i4H);`W1fs_qqOw!rO=Ansc_66IX0o%42O6RE< zHy8GMJ%_b3aa)FDDpd>k3g#}#PkZ2Isw`a7$ve&8UPC`v+~couP=0A4%`{}jcRAB! z07g^4=ElhF9(E`?HF|f4aN`KF3oW%flDR2cC8Eyt1#vg|Py>&qri8m}flA6g>@?)o zCN}i^(E__d0=&kncCel&?2@BDX7l6?7uk+$rn_68 zcbD1At5LeGvCC<|p-{|xMXxpIAoYebyC zXQ{iD3gag-8*K+Yb}#F<)HDYBZX6I793ck`mL4Xcu;OanNUfdG`iCZggeG`>*@A*S z>>Sh<=Y>=(3o>74bJIn|UuMyJZ@N&6(DT8qPj{tZFYC)TJz^{0X0SRwI!W48NA*uq z)+C$8Bo=W&enbv$MOl_GTmPp0u$*A)O{iS*DHdmk0J^(^mD5@nM5w)E+{04ONN-Xw zgPD5#fw9WfF#cuD*xuH(17=``Po>q&+85Xh_}@+biR-3DJwPx2s^Y)aOG|)~693P7 z=?pND|4a9116bK3d|v7GTJX;nlpGXUEf*(*vR?WD!D3NU)Lu#nNHq@pbCk}zw0^nMq{Rh{|44+Xm$$5ZGT&BT%@I;0v z88d#Xwoh3@Kn-vOCsR^dP+2M6a$=@50KybyU+L6m;mRyhRWddSAwC_{K~$Z`saDA# z9T7j!f^JqC_ghq|EUt{4F-i%SF4Z<|*O^yzAXA=RZ(%%xS#O7L&pJO$v%dg1q_8+VGz};N^gvp>P;%A;O=JB$ zkys;ul#{lYnu7#(-huXgiqzqHfEcGwN%7+sA^<8i@F|}d!{?}^Ms@^<$!z!Qu zP6EUwMBnTE@hY_-fNwl!I$2gt&Z1j2oD<-m+-{VGEQG4Pa>t~;unoMm1)1;<*RiM5 z@gIm436n~Dn85l6z#@9TKb~ywYbPX=gkvjwKPQ&)8jzj~rd}%j5wZh1yHiaR1R=cQ zYumE8LuZshvYWwK8Bm2lRWDv$x@R1%rQm0U9hIyn#WNRyr{o?HkxzE@Fi91`DE zWuYqlK{atYr%yCKCt9q*h5(&InZbt$z1bmw%;yG_;0bVuphy6$BXqQ6Ad5{{fEG3X zH_)ePD8J#BE$1osyCmzhsNP;XqfG6BmxMrw@-Fv(XIKgS2gAw_ht<^|`ZhE>;TuKe zrvE8*K82p4S-3gQB(6<{_!aNvWVD9$-Yw4Vk{_6(7!LwsvRYiODs(|@eL5_mkl-hj zR<=#LxhC?})Qnc1Bl?B;jo_AOSfi-m1WOiHUi`R85LAf`Ej6cwDr0jvJTW`9p$@qq zEa2#k7~F2GAT|MoHSy;KJ6t+--NfC_v9iWj1tc;p!vh?&kHL>r!*h34f^&BTGM-eN zEYNO2*F3BDKG?JG_=Wu2-iGYnvI7z3u>gYAAGd!aSV=+Ui~{d>vf`&*F+BNZcKoMB z{EM)nyTqvBK648Ei?I4(@dd%_4ucPXx`gi&ByjDk(j8-OFWY~kJI>w|3vxR+XrAaH zpt~*@ihVqv{Rd%X$%8xDjOtkw-8Ox#WuaD!{d~qlCIbZ9ATuMTUP9(z+@2QhuM_4M zfG}1QLfKEQeqMmTo(S{jX{Ld+*L$dLXgA2r0BzbNR&VI03-!oP;@FBnfP|i>f@hX5UigT zC`tC6@Xx0)4F0b195HZjgJNEjH)Ys(vcKUzpg)!bbFrK+R25P-3y<>m`IvXS@AcY# zlJ7psem5*G*@ZPDkw?%ZC1b zurg5_cT#B+VYXLWC>sxEzRaNI*xTC*v#;G>2=Zy>cA16^hSEtOzkvdjp$aRa0ahZS zFQ-;#!nUPF#jS1L2F=%qqS;OqJ3~6BgbkX-7tOuT1%zb?^)1B|KxTX^D%m7LPix4_ z|Kcp~=rJnTzkJ^1Bku}2gX44bDxdjHT?iv2#=hJ2GSEa37ZvKUY z#g=oVTz1gq*bzv0${huknlTx!lwQ+nuUIBz@AmWEnZv8)mw>-2M!_;@U%YL4w6B^Jv+_^6%#JZMQRa{ffb9~Lt}62isvU3`q6 z+Mi_ezxI^4&;!{6-C!jyF;Q>_RYd`%;!fkpjk{t*=2xKn~7=pdPo*zOsOlV+!2Sc{w z`yyWhSA#D0b-nPY?U%CmqKb~nx=OfS+mrtBP3OlOzy!tv?l__U(*#PfB1A})LrOXU z&c8qMmV~^h(rgYi)zWy&R$K8qBJsC+xe6-7OalYJ$WgVG;I!MH-k7mx(eTMgF2RjN zW2p#SBJa~oIIqo|Cln(tjgb$Nq8&G>+g3>pvn)iRDisxHK9@+#QIlOo`8{$Yo%R^Z z6-Oy2LF^(qSDd@WagxT#!R=TEyhf8nlQyor5sOT zOCg?wB5F*04Xq_(VIeoDNoRpXk&#wt$U6ZJYKaGk&-?&b;`opeD8Is?_`o$FWngW3 zpCCtx(2t&t;5J+lp&995A_7rR5>zDv$}w`4vq^$~3}BdM$^BZ)$Vrnoh3)pq1FPO8 zzyPjvY@K_bK*If-0qk1(uLiKQ0-%74nMN0gG9=nNO*-nzso$or-6ae#di9EXHx&U2 zs3}5Ja_4~%&|GoLRW9;=bdu@-H@XrRgo^*|TomUw#9A0QVP;;Gc>uVu|64P{cLama zl}%0m?M91`BKZYF6YD7TCHR4~u>fiNNhbRT=>#LnK;jtv?KsSEWlhO*V%cDUs-_)R zmAWWL#vxE#%gRA>;{s(l$}m_lRN|T&|MIOcBDNNw0{d!6VI<zHuPDT=sd5eG-P#zY-`Xm}nhftnLRviO=B{OY|4xC{o!_Y7Scmj{wiHt`0Ue zjNdHjLEP;MS5g;LFo>Wf1rk}%wi`~Quwv&FXrr1Kx0dw@=a0lF$w5TII7#3c4K8eG z@ds}p-0$M31xt!acX4gIsDzB)q-K3?$DbV%p{&Udq7tgyUlb^iexFE*NjXIiAyAXO854G>O4RNmfjKp(^fG&;NjpPmj1e`bss>k??9S>pQjVliD7pB#ZKB@rS_b&|{3P(& zcZoW_Ar4M*4_1$IEO5LFc?`%neFYiGuu`2%sneo5N8YDdXj*>V;ajo!5N#cu+wImI z5IRhagz591hE;u_R(hLMOv|mp5i|rd89r~g4?EkO5L&<0%+E%2bL``wF;(OoKSv%J z6v#e;+km#BtCEY;tXzHn^9o|=kVnFOSi-wgA~gh}DQe2aIRTIFU>5>DY41J8auR!z zh*hpuW7H7w`T=TL&GqT6!5jSv%q4aRSd)4@GR__6h&bWTmrtX)+)81H?Y^vm($U69 zuLgNLS$46nt=X0rE@z&dpq1Uz}%A!In`Qif1lbUMRUTvJKI z9@-TPP@M}hxz{*BJxqlm>x^G1RS{_^t{j(iK_U$`rMe?FmBr2mAUB_Cu{^|Sp4zXM z3<)4|veI(Vl=BE3po-Hfk2*v2=KUc@9`2}+O3vc(c70s^^=tdn=kfjYR8B9~=d1se zPR|x8N20gB0pIuYygl~Q>+yDbn$JwI_kNHqx8wP2na}5~uWDGqSrfz>d>hlJG!0@3V1yB54<`7Ay| zHI)F&*-xu(W6WbLU894Fqn_k^obz%K;HSc&0k#s;#7_ zB!Tx&%5_So?nhNE`eP;gaT9ilq?wG!LXbqCE4tQ zJ=eycM1-6_yGAB$zHoG>-{~wBWHX_6fpYrdrd9ucA9!!BaTR)fK|8+pc-$H#Afva) zqIv0S@cvJtix5P(#{X+C7`xw$_}2@T^3U#3 zuePU3%@4RbtP+oW=h?__|F-7CF*7%^S0#KVKBkNQa+^(1*3$G;@4ES;1&v~g>AIhw z>G^Ef*s)v|A;;QP3Srad6AT{v`f+oJGQP}>}{ z>qOK%ev*4zW4Dj3vbYi90*NS<-1sB@?C}?gF*e4Ggl;e68q~_7uNPb9VQI1i ztE7$OP7}REdAWw=#I~buxMO#RQnc(YYWVG0pz3yK`t&co>EnP;X~1`PFsPe0R?CkG zxi7|CF=?USQBj+z`cOdU$)05>-)XiYZez4&PCC?D*e$w1-tT30l8Bk!x7A^qm__IP zSsJ2iMH*z~*Y8d~%8l-cUsK7Qx{668XxPL#H72|srO~XCFExf}VwX4cPv8&;jRn4b zw?y}rVpfm-wCFJ~F&r0ej#@x-9({5kVuHDozQa8+Z%W(s)D*=LXiugU?|?cV(j?ie zM8p*Dik2F&v0gM4!nAy1ISST8t@*g_)af25Q3 zhkillA^}!RAt9`0eCpr6!lr{E}A@PL?%&c%|xgh90o2EukJvg6MiO$PBdT`98Cct zK>*cTdYDs=)DNgtm<=r3TfWL4+p|JjYUyT>%ys;II79@34MVuiHze@IzvKYLpb6Gj z$a)UC{J z?cR3*f-Ph?fu^3PaTu3nNaSy~51%x&F92#>3cX4vK7Gl}Hygx1ed@AQxgeWj!6kgx zDk~o@oL$uygzJ4j(WZ~|Err`OiiQg7FLV0m;n0f{-Ixj{n}xp3M}7sfiQ>!omD~&4 zMG$Qz%22>dfOcx_4+6%++jB9-iKwPRZ_i3#`gk2A8rJ%`&V&ndnvYz^n5b18L<>}y0#(FD=AcZ!=@~wE{BVHsoBcIhwABeGNx<$M9JE=#v?g zP^z+DVucmwkJk6gfDa8eqBBj^zP5H1TFFs;@XsFGPMaXWe~(DCDll(a#E`e3E!kcQ zSs)56%JHig5mo8p47&$@G%X?i5WR*&|d3)7fm<(#}PK>CWc_Ob!Ur?6>kLn`2pf7r8J%T5*mQs_}Yl zK+f~NS1_)bdb0LOw$PgG{hSREwC&(a(Eb842ssa(G@f+I(Y+89(S}xe6<)u4`}qu= zw+v`Qa74-8>9U=8KGyD>@CwpwiF!lv*G9Bp4g8IED77oexMh-E(J|P43ACQo&zt(` z`!Z(M^5tdHL5DeI0`b>DedeTt29gTJv5RB(BWYc@<;muxC{x%n76bylZG&9DF@I{) zj|A`}`W+>YrB8sS<`YH}wF5ijaSN`=Kc}+-XUX&*2STP|$~;am6)hWHim#OHW*7zg z@zQMbxq#F?PURueNj2Slx=O4wTpZ-c1{DJZ(gdRw1s92n0lOB#VK#Kz)KA{Ylapy= zof+>gEjB@`2agqCmcaZ}F?WU4Nc4ahaf*kEE2Dx8I<)O;fYga*^6eEU&P?9RpX7;{ z;;JP$#AqwXb-QfBhGjyG&uIFZKw^Z{Riy2<-*Ree{D%HRB7d|vp$prHWkcXJA@b2X z^6Pa(@=15n7MycqI%j=IT1n+Te6%%|mtmD!8@Mg}c1TtGt=Z6pi?YCAeei16qXXX3 ze6>-p-|)<}w#LcA^BtGlFp!|^)o@6^ebzhbjkgs=Wzk-Fb^on(`v9}a$T|h4o%B(g zZi&@qck3hF^UO}yQSOpJcL|l&boat={D2ZBL2~3EF<(v&&yEF* z_tCqueN%QRdZMk|?cGl}=?rN--O{l)j6H)J~- zDB~1BS=`@==U>l4ME`Ro|KCj2U)HpNvz?=!iGz!Q_5bsP{NIMFZ2og3ir=9gZC{s~ zkG>#WCHC{jyNcTcvgyV#53hHZiswwIUl#E7G7~==)V(&jY!k4hNw|BpH)SrWukrEl zeY&ZE=Sv)0GGrLN35B3sz6%?LAj6+v3F( z`-%DWDCG6)EJU*liJI_tLW;zW<|nt=U`F&aan&mKntiiPQZvyU4V^U$-Ac$YwQC?n z8HS!(bLM>^#cqO@tcbNE<;uIIq-K93w!#c=>REbQK)Uwd;#x5*-{)H5;4xT=WYT6s zVHRm6=)jjOAh%*DMN5_TCj9M>KRuvCzw?HqJyUW^n~P>Gt1NV!e!I#yJ5M6n1s$r^ z4kGs6b_rwDoYj|1iam>g=vkDz(Vrd!=4+gh$ncYop=$FcNH#d)?aHRDGt>0aB~~VD zLW^SCCTK5O*iLLqX*$(qZda%tUrc6Gu4KY%Zgyo)miVSmvVW#;O_+W`f;=f>i6I>Q z^39$kEJ#li8@d8vLN!|QeA1+1*WXINjnOPIc-x{jnDdgj*_E96+f!>t4Wfky>W^K0Y9Kva82V?A45{cv+PqyfqR^)U2o^+EBDU8K@&{m}uQfXtYE<})}@eR&= z#aGww`FT|6xJS#_8J-a?gpWksvOt7_A9NnyyVZ;WRLpOmWQhP!$L}B>_v8Pg?VSQM zZPz5+jypCwb~?6g8y%}-+qT*1*tYGYW81cE?JxhoW@gXYYu3!kK26S&gL><^tFE$B zWfRsM>|A93MjY5|tj|FVgKT&j6B0%2I1raF(WJB5MNg)Z%iUiU%m)RQk84sqPFbXt ziaJ-_UjpHplhqKI4`)h~IvcpAilAl2+piznsg4InmSyU4t)(ty9lrs~Q z@{=kot9vL1Lk`gtbWAND^v^ukb8rsWZ`Myrt*d0LD`HNDX+%GOQah}K*MUHSc5D%$ z7Xqh;A(DQt3HdesQNs_uAj*1GQ0vbE@uYJny=tanb9TSvSB!`pz(-N{N7uYLlr07D zj{GP@0g=rI{Vw;z2fCB7n9n+|^X1NP&43IsT;DT_^?SgDROt#fRe+m2D<;nKgG5ow2CctiNfmWl z^u`qFSJ+(7>`K1Rm-51{KS1ad*~S6$Ff6ln;3l4jnNxB6AK$#@Zy~+$j>r4-wlxp= zdO8yTe>XM`4UEK}dR`6{bkN>a2;6+JP)Gxc2Vs`=U#B;ZGzqY*E(d|8?sEO^i$~dE4VSkF*Y|x$OxN|o+N6r073`R>ZcUmF(%w$Q@9xr zcy{<_w!8}a*s9 z46b&UF55n&RhNBZ^iMTzU*4(FgX+}Kg!0w$p(Hfv2!a_@aA<9R6i&Lp1003{Fy{dm z6pZgLcoDGZUpFEe@_4W5AuxrEGqvBqzVu6f@vuelYU>TqT8Iu@9tL_ax{{;cMv7k1 z@(xTkFa`PjIOmsu!V+DkD$I&~*|#D|0Xk%7qJ?(xBa=`0cZ)B*b&!eA{4k$ z!y%@Chs|`O9!nH?I{|JwNPhT)#30c<{1U5367V<`pA}tvTjx0?x zJ~VXhO$L-ge3bY*MBfkJ5)%BluV7nAIzdr!MP|Bjk_y)_qRZC|4q{gR{M^29X3olY zeb0F;CF1n(EV>ycZ|4y?R;lQ}m%ga?Hc)NW@BlK$ZU zY`zl4zIm#0XO&A&!_GlYBW!P?J#XQsW)As>Y%zy;SL}$_4s@M5uud_?APv=1g~m5H z$!V`sJfKX!pPr|bK8Z1XosXTr=i>-rt{ZsX^4lrhFHny;wMSOn_=~na(c%56Wz*%B z{tNPc&#e&K_#V&1RE!c+$1@#-aFX>kJ&IP2sYGYh3+PIt^vCm5*$8WUm%gl5^!Y{P zHa=ntjNegL5QUXmd$0R12m+fKMibbltv*#C9UKB`us^5*^TeMAlF{k*SV~Y=6Q3ptT8hLqTc?-K;ff+ zpC&GNGoT14_c^*!gzNBb3h-S?CVV*T@j!l{e;!V%*5~_u0bf6#-#GvJ>n9uVMnv@Q zUxFO%EdGxd6Zz;>CIqieoh|Ut#EkfMO6q(A|K(gUGTYAhd8$S^mdIu zAOc)+kh6tQkXO(yzGMLiyurBJp`Be3XQ!mj?t4yZB~Cv%88=+|8IdQLI0XeUWPcMcS-N* zk$FB;V$8^U9+LUQ8C2kY7YP9|D_tIT^~@gTi&hKh1+S zD!SKXaEJUT3PrCVMGz|-G}af}y9mrCL?z@XVAnU$`=z|{LU;229k+9uMvA#D})yDz1mluXEYQKOaSEATo-yXLsy7 zsO7?rv(m_;?MdYhb}e~afFm=|XIPHD7B$*{h3Fe&L{t)Z@EJZRKJdq4V>`(&D-;@JEi#Db8TYktj(r$OcRW2h}DQ!{8+lT$w~ z$`O$vM@TZ35@2F0$F!+MI=oq7H#dXD1lmjEE8r6-OS4ZK=ojrXE82v8`<}J=Dhz&k zJDNO>NgJv*VE_yW%jvs8#@PZ9Ho0xDa!380D5uHEVa)ps%WeM^mMi*4SgxFeiMD@M zo$xTwUJ_fhrb?Epg$8~fcVt@@Rt(?u7c^$UG&aMm!ygpoq!oMyVgtI5lKS$ZjYjyPi=y~tPud&h3r$-yf&{N%|b*jg1#iGrkOKEFQwLjj;-=-=0xXq(c# zn}S0OQih+W5{mE`_A9S()MuR`Aw%SuRlROn7z4$ys9>n<9kB9SCA3YdTexmtnj>n? z?~E;yT%Ip^RWHAk6$^0u8urOAEt^(nHBi0)=oxg%$%f&>L(UbO_i$@AMbIimH|;Yyw9jy{AW~-xQnLD zk29NBsJmM|_=f)6fZ#JK=M*%tQ=@EKT~%@PWlNEK1Pph49voR2eROOdjPcT+{19V0 zUi6fv92%N_f9jOXhC8NsQdPmnnLEY?)hzdI`x?O9I1x(dJwvwJV%Dc0P9DE%IR&eq z8H1FQHWV7->_0EFkcnuN+t5z+|FG!1v9*a$==E+739g|@{1))yi&b`_rn*7>c`U&Z zumdt2NUgmMNPYV}mWTk3B@cEg%5AD*N7U9bx+KvlOwOCys?MhNez$gGG&F$BT&$=_ zH;&c$UzxcWWdo;N5MGbbwQsofy<>pKA>OSC%sD1}281wX{+6xP?BC&-9g;7&lUfubYnKwB`-ab&jbI zJ;@-Qq$pF5LTb*gginroTV8oiH*XV0U*L>V??&ealBf23ZOZ0+bP^=^CM1~0?;g4_G`84C`t6d0gstvchG z-q6Gcw4G78&-EJ3W|A%Bk``B{D-QlMV@;2JDA$|gd;7^6s{aa?7rWVSkR84fL$&fqR9wHZ2zmJLgavh_pD=-9 z|GCqri}DBuKK3@%oLhYm6|Xkpxl*}6Z_<8Cw?Tjd97(D*RHHfT$`|W@g{mCoAP;BM z)P_gOY5J!zOi#@i!~Uo}RB6IGe-!`f{BT*^Kc3Mm`P?4TO zJ|6}EG}+Hg0gbb%g9#vE{@-Qte|#7KEZQ_6eQ!Ne1;x#DIO$lpF4l14cTuWP z;Z!{YWoMBr>q~}Gh_er^Ja=A1=@2hD#x383F_A_)XYQ_`isq%T?ep2BC$~(kOhpIS$!j?D1dEron9h&qxgnKVXiUE>!6=b);X=yk&9kp zm5d5Kgsf21e+`~T<2~xyyiL>`G{+@7@2Ar!v4VI~|J^bn(SsUFW^Fe@NwbUsE7Z$L zM2M(NH!j6bJR>tRcHHL72&V2J@>xi0NIF~CJkU%8v(w#E8~~H8QA$}1i@(r$dx?zU zYDa5u>r>xl0x&rP@A6gZf40PoCJjnJv7Vr#-_;nMX*|m2shSj6Pq^LUB{k&DndPf# zg&Xa)tyiPUzIl~b#Z6qSfUGGFh&_OnAf_N?rzv z|BxsrHZG?#%{~UK*shS22DXh=DiuP%-wGtW9+{VSxY8%5y_qv0KAxOD8C)CdHt9#& z!uWdK?-|4)j2UKNxKlP4vo)@dPOJrf8QEdcrXOJrcs(L%+2PqdOUNRZW_+YagEQgp zc3e%d0K+{;BUg1#Y6FnDqcu8Z?S|$D;~K`Ggk+79Cz|7z1QHta41Q06G1_d3euXUR z0<_&3ZM^!qBuQbNRr6Jm<@ZC??Wvcj&r*=$a%WFdP7HWPba9sCh!&z|aFDEfa%xqW zqs)Ycuo?>DXsPSX>U-K68mSH944yLebt-3c?3;O%!Ko2B7hDA&bFLI-;axlTvt`{af-T#5SWdQJi$DjK%<^D;|t|KfGyOZ-f)(KtW3X zO_@x10nXL8suA}i@A)&pGx41l_F6Qf>@s75;dCOb12c9z|IF5q=j|Szj4`>GdE?pG==b!B6**BY32iLnoU#KHuQQdvN~ z^V+{x2KnAoFchj51X%=@&&q=ezOt#E3Zx1P4{?$6B1d1kcQ5OwzXz3LWXo~bupor; z&*|#fq%{@G_~`uc63Wsozj@Jh*@t1En&^I8mQ8fb8&;pp?Mu}l;nT)fL5MNaDq02c zj0?J}re<8XbDo*X)wEe}vaK_lf$B_68{@_aOY2-WX-H6F$(hQ* ztJnV-h`sJFC@U=SfE8N7rL(2rpzedb|Gl(Bi_2pmE^e2EtcnG||RH(+y z6vQK4JK`hdum?0I_dF6Un{bGoFnPSC6KL@y{ZrKj=b*}`W8(3xBA zp;G(^7zsG67YGBjNg;=G<~QoaL&E#s!HB2u>+^3E4iufaH^$bN_=Uen@W|6rk@Nsa z&8H^+Yqhri->YEuh7Ny2=mbsltgHMe9LJ@cLpX0?Rh#$jROtGm!Xy8qN$&_B zukzJ`JqmjjGzPH^VGec(Rfia8J=6VF7dfY6#SLwHW$(<~;O4v3}^RGyW zr&`72D`Rwt4lnw2TuQj#i}?LpUR;*62g41-ZR4r9zw7as(ludhFUV8J#p=BZT)*oP;Cq9Upx4Wj-4 zYb}&c@EtM^TeCwQ-Tpcs3qxXONM0V>L^O)^)4k%i?rjiYa@EBVyUkF z3jr98ZVP#zuN4*P%>#)3{$B!${?`|EZlzBQK#t@*5BfarP>nYyR}HoXoFq zMW=lLADig>>0>v;|MIbYga99l!TFbu#rO{BeCeC0|HH@X8j4?r8+;St48{rKSr#7T zy1Ab~T{Z;xSP&KCL0wvKeOh7vKOous;GaHLSLl|c8(nMq;68u!5c2BwEWYPlQKdY| z>8myb2(L}$Z01I-V_aJwT83@uxO)Nh@w;_`^XfEIC;dh-iiz9s_3K9s=c#rBcdjy~BUd1o|*k`j$orT2;-Ns8-9^-n5J3zpJh-oHPwMJ`}m=7>8XMi+apF&B*W^$6_ zK9GKU{lI2Cbbjfo+#q^NcCQSGy%QKN?QEG?)5*hjubSx4f$(BPR^ThR{@I%CsEVZE z!fZQ(u0g^yN2~(G-fQybuNDd$dm2^9O0bcXzJ^C%_I)?z7>HPgHVY0$&Po{$iG%;e zoy4AoQJG!c0SEDMu(Zj!1tvD}d1h>=B^GbMzL|W#2)`YFp*>qHv~h<3nlTnJBBEA* zIXdRmSnS&XnAp@i=rwJ8y(1w{z>qB;2ahRb9^MMn5$ZR3htTqbG`tCYt=f{nX5X|m zN~6?JqNB1A$JnKZZ&W#*@o1$MP(=7YE7_E|M#7Rs?n0NvO17(1^c+Dl(a9NTP10sy zzg0<*!dux~6L+MSE@d@!tAjhiD(et19d@lBB2*EXK-bgL)t_k7d(mJJZJv`;i7}C$ zrdTMiIc0a8(l**Sz}FF*v&cfAFDi$wnxR`X+xJ%(`>5<&8>z;WY5leuMrsXPzJKac zXE;~ZBYSoqkzH*zHdbx?t*Zdw>G0^ala!-cZ>`*u2@`>j5xj$#n|#6YTp(L1q2_gy zcn1z8MdxV4rH(O>dNjJ0#m+WZBt5khWKS1Fx)nnT6dWLcZ~l4G*a39I*So#<6B7+? z+t!yL$^)82Tg+5bnfD%1yt<(C>IW-L*BdHM@QjUFANxSEZf94vwEhAn_M53pW z^9ihG8puuB$>B|6Q0dE|s|ynD3;$Oz;YYQfqSISr{aq`|1zM>@X@UZ9@{aHk*h*?y z9K9*|tgV3E`8$grXpJ5Hflz(gmFDluAKFiUJ@Zm6X)0v_yzHk2{%dud0{n*T-#_yj z*;!lu-#x5l^emwJ)zR6LhXiaZbDt##wNz&#ca%pc(=KTC0_KW*(VvD4v9i=^KH_~5 zan^RaE@1sb0~BlJ8}CovjAWOf+x653GIZ~>c9Q&Z0~YZse&W)^+K>fAI2#oMWP#~0 z4Uy|O)7~>Gvok-Q=pgj`df2^8jp`KP&Kda1!_X2;qdv{+klm7owji}aYvVT6>#4RB zWe>D+&`vYJX?u!Ne$h_lGGUP2F`Y=kuA0h{_0U~ZXtoE6w0J0aw|0kU8nZ$x+V@_q z+^U$eX{g?$Ozuu>r?gg4p=dQGaQe^hG^)Ci_3EImQ3ceBlYX7fmpuV78M~nf_T#<{ zI!p1~IfdF1q`T><#Tt_6H{i0WIAg3V2OQYv8#DRpeWF()g;C}iR=UF~JzvvpdD1T- zNeZ)xd9xn$;g_JJ;lyfPUQ%sJX5{SV0ipKFB+c}^)T$)AW2c(+90$=dO5J$rrgz&% z4sN$^4iuLMheHm}vIuO(^|ruzuZO`$OoS;TY6ho~y9K+e&*^K9sK8C&@T5=v&f^6AI+&S)MR`)tfXsD8Y~XzPn|lSw9QsLG@l!dXcnP_w+pm;X2nxn zI+OG4l~-f@)I<(OeWs!i2;~5nkd=9#p$J1XDF7w}s+uq-N!YBf-hj2P9GdP@pq8>C zmr8n*J1kqIB0Y~0sWZ^kyc{rCiwIV^6eiJ8HCwWWw27!qF?_yYKhq|Kyy5&s z!fghW02b43O~qdD_ixN~I@m(hE^wx_&hK9`wB3)fUDbx?zav*&o?r+{{h}r=+I-Gs zePGh7LQJ}45LzdzO4LKx55fesa(fsFd$ZDMre}y$bSEL057F39r?$q-E_b;O|8(4NW$;M13_c z2c9q|Zp6<;3lBl*(bc5luq;Z}M*xL|3(qDH&Woiw$dA)itUdhE2L)q_%NZpoCTU}b zR+esF*Ao`H99Xz+(ak~iM>%Xi7)#(Loa3xHPM6{KTX#_LA@V{I)N>N()490b9ee4I zQI~+O?!jZv_@K97)Aj=0Oa`gd;U_v%=(P`NSKgP8{55J~xr-H?x5XPlPPg)i=dZp> z{ztGW_YXV%?$_NOuA-+Q-`0VhhfnEOVT|TK%l)=rH&Mt#NMQMsEpaEYMRxFMG_I@OqTXww9sbEYj~R zHHWgiqdiqlF*DJX8~gNhb&kJm$>x^;!MnTrhq}S+yTACUJ$BuOb^YKC%nZ(y%OZK$OeNj3!vFtz#9l9Diz03L61D%{z?TFT3d9z#y2 z2DfHGgXW(&uwQiwb0_>SPEX%oT-)H6H_tCTe(H=s;rX6JFRaboI}kAQHQ#R~Y1_H0 zgPJVxe6J(B$}<4W9%mU^KH5N;JFf5NLjdmDg29Rg4Hp*nfS;9fG-6uWw!=Q2NAd7G zO|jp@y9Q0zH`bi;;0l79%Y1XCDN}7wsRbcfF`q7x=otsj=;j z)XR@YwcLpl`48Wvw^soFmke~hej!0rGe%ktuT>HeUZ>D0`x=()&IyjOJ=@$ZmF74hI5lvW1c3uzL@5HR z&Cxk_Ka8o2Onh}F>T{1OmvEA`jN2&3^bnazrR7yt`9!F%tBUW;cU<81*9_wQhx~8N zDr%=%=-Gkw@gr|XoEjMVkH9?oQ7((Hf^sc#9Bnm;aRz;4XKcQ#*a`+_9q&CuAnkp1 zW7F@PAZzCQM)%>nl)>wB8JuFttzQ=Gr+hRbpf%UK#M1Ot;DYu{a(ZUfLUb5E?#BKUN80pNm7eMbP1e%` z9|K8>pHKAcUV4KV z@BDltu5MFO-vQ|Ar+WTtT@3=f9{(=@6662hT<1T^)d1ItqjRf2aHQW$sUDtpp0R^- zA>(ZEJoXY@_@h(DgD;`@$s%qUVq55!nvk#o`gd|8)>y@(A-BI#3x=Uu z4A}du>;fo;hld@)y_^D)bb}D19A((X028C7#deIq(~JZcp_E1AsOB*7`ovdfecvby zDy9S|3@E}R%*Kn04Q$mB3BHTgr)CGn)f2fmzu%zlpzNiYc+TFmlMQEy3@OC6809$J zTZoJQ>_qN`DXa~iyyBo5J-Evu9bb<|-Xis}=w?S|EmClZ6~33c zJt0=}3Ht9f>q0O<&D!vC!v_M-hlY3F9XyhH0AzSDT;U`I02S9O&@=6sV zD*Q5zWucUD6fVA^;Bi8SDci8zNy8}F#LrCc&UwcKXe|Dx#+Jf1X+?EA%pT?$6qp^* zn*bbV;c~xq<2&;>n3{TA6C%KIPX7^|CQcvG4}{YHnt=>!#U&8J7x1>T-hk<0ELDrI zsTizWMWQc^HbkPFR%Sy9W%DEut5K4pmeS=eX+)y1_dPw{1$DoiUZF{O42oh9$-aed zaj>Rt%1j0JPe@^y(MD*q)q371iEF6c{L^qYo1HX^Bs7=v}~a9VR1 zx2Z|YOZDsSI9E$^Oj&gEgDNkqugwJb5O!T5oFJg)62Ji=;RmC)b_G86$_)9S%%68V z{GR+pTU9G`D`(*BVM^HSzO0B{yRz$$$(cqvDd<%U0iJUWb-iRKgQCKMEbvEc(0NPQ z*q$_HK7f(=7OrTun-h~O(HW7jJQg7wwh-K8S06Fk&oq@YTqY$U!ZHUG5-wbIAxy4U zT!wO}d!*(NT^uU)jLQi-*dkGNU+vPnq)cZ%05Y-4O%&XlKE}P;QLHq^aj+;pLlRCV zK!=cXlG*DV+|gH7F6$x#!zmNFns^zIsE^q0g14OnES$&r4P19M&FzECpxJ*k4!M6G zP65xtw_dBs8{@CjQMRMGJjSYk!zpasee|jSzTP~ybYY+b}zDxrO!|QUp;Gr|K76(;bptwR> zC=tzVDeGrrSdB$^N^sQ2WZuJ+_Yr^;xxxvVl+D2KFq{*a+3{f?sr5N1>e1=ly@Ex& z!m(vzSigjilj(pn9jz673sp{k8(0qLSWhT?cC1(V#&BV3sa>d#$|@bH?VF5kLbjwh z%3Ah<`1@$SJ8xG{W(c;YvxQ7h%Nu~s(f|;!3UyYr&42W51tfkuUoOqhD z1@E|E%BHhjh#;?sxYvmvUqr^LJlRx>^TfA~xl6Z#U-2#s9nexMm+rcHAmIgz!#Fy< zs;z``M6+r@tUIMHI)7YYA1jHmxa%tEN?473V@ zaD4pBG{(ZSN$UW_?Nh@3wYb3mWRL3Ko5oLCh?KRSfs(7uKQ+bv$6B>KfUJe!HBq^U z8JcKxCMh9F-XNcfMvf#;6bHx%)f-==H&(ZwpFhV5wh?W{iW2`pzTnEewl2A5Oj^>~ zSW1)}!VyjAZ#_x2b}};V=Zt?GpE(dc(8=T>3M?LWpzVhsSL2oj)`kG2gEGz$k$wQu zL8yRqP+S%>@-v-k$M*=+@7`-+YDgXc;$(qnjad@nP8RM~X5R zq>-Nvi$XH)QU0KG?CvLV^2{LflQ=m;-Lk}kSWoAdpk!ROJJii%%KXErpU+KU#C+SX zf{_H1$Y3r0@$oikmtn?$5S1Q`Oyt)q^w9NMAETs98?YF&79VS))=F+kQOCu*XnVHIv#IumqVud&D^Z9&0Z zozqhtKLAz!oe{#b?Al|1D%cSbRn!Y}!uD%e0raUIUz_e8Y-JW<#Cr-dfKRlso4+rI z4=@0rlix%Jr2L^D0DWrTkJA+u|ASjo(z4lA{XKmVp$t&Fe&wP4x^jD)2hD293O}Z( zP42jCp$e*eN2J1@CT5X&C*|<81q%^L9{SnABNU=JA5K!=T&QXIlWHrT$j?4?jRT-h z4Ml8FQr@2;1v}TK2PH!f0fv&+IS7=Y%?{{O=hI^)0p3eMFU8B5GuEpsED!Q70mRN{z$H zij5cNv&*Lcxu4GTONyS`4>Y`QvKV;!7u8N6Rd;9H7uE>1alPQ|2|GlF!u6YGf#|ZN zBFhr>COVfe-w4SmRCxl2zO49+A*9t{9(=Y*)OKSCWf}O;!ix+Pr_5@%{yIRJ`cT*h zO94=())2eyPfcvVaWPm`8K^ zBXI#Bab(B9GzBpz)&QVZw}UUMDQ!{exr~pQIT6J=qm#9vGXSU+bia)A+Bnc&8IWp$ z{k{SKYWW0?60FLu>S|2%VA>@2yjq+f#7TbVTu;w0T*W@XU5;{wI*V{os%qKaQyA8D zbp|$foi_>udFXkTY(>snFmGsS~jdw_6ID_Z%hx{_BzS@;FuU3H-py`_Vz zrziB8WzNji!DewzG}Ga3N{~TURnxqDcN;&_vG*8mAK2=2P1vO4`Anpz&Ur!DXhTOe zX*g3d_(y#{qK$DS`z+T?O0o(ptvSe1Snms_d74I=Nn@p>^W&Ch@A(U9vZ{G}eabz% z8|rg_26dNpl{O(_v(SMK%3%h)rhT zpjUmfzlP`C@pf0pX0}ebMJnD>PH~E2w$chBJJ?*gecB`EWP8X($lYI32b`!EvS$e# z?8UZPvYnn(Q7t|tzx73a9QHyb%5+k_?;WGYkLrs~=_R4v*C4pio{r%7)a?Rjx(%}C z?8?hc7Edq;+t#m9L>osTWD1x+Jm9(I6sX#1U)f8 zj;x_0fTh%O*n5Kv(Npa@AFo{$(H^`4p<%n>#YOCQkauK_U#6F$$@%Uzwi{rBrCq4D_x%N!6c=bJ-iAbzWPw1R2&uzQP|^Xe1v8MC5myBJf{#YP|w;Zu>52=QF+*? zX>$U>#ZH{v)ukpZO?!G28mq#P)F9HEeah<%-U7BuBG z4DXvYOWoH)QP0uf3cVM0PJNe)@|vF z{!jMuZt zX5NpfJ;zrS%(*-fiox2K^rajpRwkvFwsoaazw~bB$Cx<)Qe>asS~rk&9dd)foCD1rA~I%*f^Zq>41@W(%$CZMF=;XcMrM z4Vm{ndQnRqy+J-u)PJf4|7Ujf=$8vO{4Moak=OrB%1WbLZ^8bZls*0zN!iJ^b{2?_ zA^ro9EmF$h4>v^kd~F)WuMdK(stdJM>#6y4yc(PVyD-C1tj0%(tPsh;4LgwnoJ8jb zWhE~3@eGXsx?}>E)%2>byWU#<807Q_vxeq6!1YB(`nj*pLaaLUCE=G2o{D@P83A-j zt6%_KQrLSqlU1(H4QEAp`hr&elP+0$1)xi=u#*Gml5_yNWU~Xc`eX9EdqYmRPA(G^ zEjo>Zt6=~$^4(fd-|%NrHgercGPl(rO3y9#lP*a-&s?gWq}Wu}h@LHez~aLsevlIG z(UC}3AIBSqRsy&)ZWd_U7CDHZGDfC!7LGxxV6XpBT>=d)ib!-pW&Yh~VC$~6ErY|o ztHPAV_?v~8(D<-yM*TA>`!JO7tjmZXRV>5ksxn5YK!&dK;c~SHh`+jD9luOyzu(XG zW%71D@Avgx@V38hCjthhAMY!5ycffBpVeJ|49!Wa>Hm~nQNc?4+3)#eh`#R}chPbq z1y_|uwbk`a-xa#M`E1-;^GZc(#V_yB2tn@qL71}*kL3h%>kl!=NuPS9&f-+$TYIEH zEob5%?5RI#${O9v-vmG3f((C#W} zHzU+kojA)XryRpVr4I973?~+!^goan@I7H1Zckl%=ZKe~oqKTr38&XB#zG<`gSsFk;1WE@#O>Y?+wT&HPExq zi{hvB{cBM~0Q`pJ-I_SoH09ayTYysxv-)8M*4?GADi$uG6|f!o{P}gqS&06yb@I{ zRU{3C$;speDf<)|{3{gb<#02#*nP}*qH(miL1qVagCtFC_K0s?--O1Gv6LiQq=0)n z+;D^?Rl}j637}-edzF$xDTaSNn~GEPFAU|I7>Z=3ho$kf#%$k(KfNBlJf$UP<{sQU zZD?=C%??97zUSiY-+U1tj^{gKE-cAYYIWpxLW6NRFR+ziN~kiN7|&Algmtn1qw$%n z`2`L!LMJC$9|l!0;)K{^_AukDuyQ*#+gZ>|Oi6^q;s{hy3n+*%hNBbeAf#asrdFr82%2RG^@625TKF;uFi>zXSO=QPUB46{XL8yNrb_w-%psJGR+aH z(UUW$KHKo4I&Iz{kX_5HOjtgtY4!v>r&}EC$oWoy84#?gr}o(#XXY343zTY@6UY|$ zDU3y^hiS--kXCud<|7@Y&aWuEHu%0yi!zHLCMU$? zsz4J~GcCdD3-ZC;2;#JsS*f2n%g%7d)M!{3UJ9&&h199@%`&H%#UPFt`q&jn@r-hs z_cO2z!BeSH>8E|?gC+Y$4F=&Y;im&SB+X#IsCO8zX7Ee#;z$V-zU*tMrP;9-8ke9T zPhbDts9(ehSo)omjSc!MQZl;o79dwMdO3bPYJpU+YTX^?2ZA8ABZGDLHnz7U36rqBDKGiJ(U%;X|!|R2J-uCail8NQ| zV>e*+M40YTqX(g#hjT^L?Hdl(9VobtRA#ye$S(CeQ}dyl6H8SOfj7HF-$aJK9lYcbu!T#41#9 zpko%O2Two=B*XL!w*Qzu$^7h-rJR>VDJF|+yIN0cLD?+o-{{G&B9)v2+;)=g(<_I5 zmb#{~#aa2&5%NHG@RKH4L|noIVPsuojyvvSVLnE|LFhhf&&HSm;D84Ef81Ey+S){> z_j-4RIE!QTysfsMo~RY{U@0V7pWz7T`_x3b7VAQ+-sc8Nwm8E47^%qc?lhNZ;8@{m#?k&a3 zG+XJ;{M1c8&O!}9liXPNq)9F}@b;XggWlROOg}^kWAS?C8<#deVnyU$dQJH?{tyNn z+~3blYbiK*j)rsaT5AqbQ@-C8s+l))$^4v)Y4LCN^=~07kVQ1&I)iT#>D|Cl#pp!D z;hVD?+qBSDEV2wsIaGlwtPLd>*DGUjj93CX*qWcc{m!aF??{(2ZhlYPp*47WWTNcZ zE>!NgxVbL)a=avWVa&smZ%rjquWV>F{i}Ti7|Q;*6nBNbtdz@^sld3vuhhp_-{uwD zw=Q10F1F79;{2&Rxi&f+?rkd$TfYq7$kB-u<3e&HK|(lyl-v|rD0eblMDeVloHOyrWYR{V4wH9 zC7=l`MSzNZYSq71F*1PZqx|7pR`O(=aY-fEF&Kwk7|va3LLJ-of^*^Gysb53j0Z?J zf7m`D&J}Du$(!MYAXg6(QV??Tiznj|{9>6!P?{AoHLEFNMD@af1!ShE3v@UeMsqf< z4xAsQSg7eO#!UmD$YD^s9N+14_xz$BK}}82sK2$F=Q9vZbE>3pP#(phqO^9?mym1B z7G&P${`{MZ3=QBS+eL6lCtxAQWI#UgX^J~$tC}aF5QSdQOvsZ%M^XT|$m9y?bY76mr~UfW^WLSgS8yF5bXIWPBY-3 z*N8)vdsm3{K2o&CrBfW6pRJQ$-RYxLiI zWEQX1J8N4N15@#B6)K;*@6sMHIQjN!6>{P*-S#=%zM@|dL#n)2%?i71`PwwTWS?@~C^Jz$d>)CGv*lImoUkMmYiFg|#UON--q+bqtGxeLelf zK+dCtvZ#9-;muYX1)+HVdAAEZPH7f_2Jn$X{S>MAfxr$XBzy)QKKaP55~QR*tFB%a z3sS#VvV~+FhdVzo5oCR};p*oQ>N`XY{sI}(+e2eR@Lr|JfFIZlLDx>gw1?{SJES4V zapD(gTx%hB4}ImBIP$zr7$1~){x_3Q3bR4o5q5dirB#SnLW17F{PlUMx^zfm(?f2# zW)Np47n%zqAr2w}a19wi-?1c2Zm4eTw;}DAL_Z6&A84>}nWS*hUS3xH?xvR7Z7FfS zwC!g!CQOpb9``ka;v^bYuZN_h9>hNrW3XY7BS(3VLw{D1mKfroyE4Xe3f5~&I|V5- zhi`+I{D|Zw(be!9g)0G~zZ}3vZuqou9s8dXIxI+17aQ(3E3ui& z^j@xYy#D2gXiU%oug!Uc5I=EuHIjWdLV$I-HEyh^e%EH zobOvrm409p;~!*1ilk!lOsT%ztn3364X$GdJr6cZj|t4v&u|_vp@YsyUj>b5;|vo# z2!JEoy;(Uk3~mTc1g)+dIL?%^Nu8PlCUg{sjk;=c+q;u6{GX;ebiutWC~D*p5e5`r zdYr-_m|RxS4TkEdxw~4|C7THEf1#i_}?yVfJMl^ z4<@Z*z>$!unwVAgc7HhXJc~Vck8gGA{1JTmF@n_d*3$`)vxavp1yu}yoZ0!9mV8|S`P^fi4;@xzU6&+V4>)*J%NVzN3@Sgk>LOmM)vXmnx9d#}If$y&S%hLz}M zQ@!r0w&F!oIgzKAEff!p*2Ue?;Di*LLn(D`YRFUv_iZ*&v~nsy&$HAq?j)XTjvA4B zlv;D~C4ACs$6o*FdP;fWI%vH|x5S3Vsu$t4-wA)d6n@BWv0x{tdrVudC<4tdNk;m@ zAzqpS>ZC_SK%QrLc^9fFaBP0oBvs}od#*rRjuqY}zBxSnGjQg{2ihF2;?zC*7V)el z`NbclMi%d26ia>-Yy?}W8cb&_t+|DXp(j}U0n_QIi+p&N+eIFS1*Qh$A}w_I)ttQS z9DC%M^tr-y?rVFEY?ilszqKwfnZhu@@#2UxZPAVTPhrB%Am(hp5@b&-Wqy}wzw~^g zslFONnvb=z%ZuJ)yZ}p`98xsV7jCp4o?n7khKVeLf5@70x`Y%8yQBn&h^dR4dRX$@ zX@puDdSOKwsf$3Q%WkW2*>AUr;w_bI6Fj7z{osW7W?m7WT8RTV z@CkchW(M%XB=CFWTJlcq>?v+qN>4b}5@z&{VNUPhVlXGgY1sEulUq6Oy}zzJRZw|( z`j24FI+=N%%)d1b@_ve63TdQr06_dcCGKB~UkpGN{}&46e{A{wA0IaV)5VzqsuF)K z0@T<1!^JWEy$JBDFM#l~D)Em+0Nc++fO*2=)&mznRRSlK=jrlj_j=+c8n6g3L0asI zFZ0I^_wPjj3qLt^ML{`j#Qfr9(Q@*u6BC#JSOjprg?PV)%N%SW2%=_-l%omE25yq! z9XGB1E40E9trD@$q>zkw1WPH!OnVr%htfKPqWp`Ra)$bO35C8Jh6wv4&4zVcBCw6@za{~k4+=jg0rHgwl~BI9>Y*S@f|eyv$rT%%X}9sdoWn3e6tqAp<*Z^h$45d>lFX3$)9`b3lTr3qpgFzvO`J z{WS|QL8Y9ozy0cXxLW?(PJ4cXtR5!QI{6 z-CcsayE_E;yV(28oij6M?%bhj6~8G8y59c!>2^>fYgy<@%r}0u_9oCsm^~z`&7Pc0 z@Vv2SO?zhs=pK_7L)se>ByGr4B!0Q<&&+YceDW;Ol{LFkDv5|6=QRM`JGaI%0q7pY z!z(iC-GdL?CaAbwdbf^M_xRtt0FuU~&ItaEFV`NWR2se}HWpPpk(;!e8BWlSFjpJGi1=ehr+Y2fsmqc>487UVk z#V&9_tm@5W5rJ+hRpSR!)02_(2M`igj;U?npVM*6QTjP)O=dfXaD4WcseJi-0+lQ7 zIny(`(pb4$$S`tzJx_JOTh|qU3P|n5Se7`3rAI5vIH~vqY$3V3`8JQ#Zvg)iS05)= zpShoa4|wlNAFcV@&m{_s=-w6X01{kMN`B zKnUdBz@E$-@S&;Fj`0PE_v)@n>ll!vEqXC9-C>k2vT0^t4z*;Pq{ zm(mz}+a$eg`Ov9rivXQ{u`}`Jx{>4plyW{}>q)~_vWczm#=_%{LWCV??Ye~=O?1zX zTAr`M2469rTJjRMlTkGlK)`XhqbYk=XG!F(tcih{-5WBmDqX}lpJZ+}%~k5MU19JL zea-?n{l{4VLWJKnf6oH6`=+bn>anhPZy%nQK4e2=Zgy*jhBp(h>G^=_m~_QgvJ zq$Lmp>%X4qtghGrf)#o3D^G6Z26tWbfKrx6yGk4V>yXR!6F{EXCemjp38}Q)#|Cwp z?Sqo5pf4{ZGKf-vBLisPx;EgDdvUz=x{CYjkbC$%@J+ zDQ9Za9~TPA|AcR3^<)c3teF1i#7cK%;gMH1)w@e5RDIZ(o#PTb-Ze{Kk+m!PKId)K ztp*IY#Z--k@XZq{3p~z84#s8PNAI{GRFexLy`YidMZ)J5*L8^5dJFZLSFr))Rftv@ zw{1}xmeB#502zQy0FzrxKwbsxGp}M)VjXg%TbZK*AB5qNNiy<`xyTsk0UC@vk=s|S zVU4bIwS7nT(~z9r9UX=ukA$W6(qz(xpvFzL&gb0q@*%Hl^TD?aE~DeNxln37}>dpocY zyHsY4eJhmG)z(Hdw-v35o*oqDdJSv6B@w4Hcsj0z3WIehcvfErPF&}5Q;5xVX8lvy zZycx}zAjVM3M7!CIU~pA@3+gV%r&0)pwX8l3m&Ysl@YP7XTC=ST^GRkYr5a3uDjf& zhAs(k(e%s^FYvQ_k_MXwPHD+%tU{~&w->pVbhq+cQ76;cFQbrFZ9mg2HqoDHmVNQc z;q!xtA}#;$nyHcbro_@VfY@Q<1&V)7aPurUN68!-UGQyMXS#m?y#}V#5R?6)zMscHXO?IJM$N5j(5=6?Y|{HO7o zQ*HI-^;By<9~9WcuS@p@p9sI;UkJbU`^$yc$+%tH=lBicNZa9XuuBn9ocHy?`ttlG z8gFcGqCLZ30K~#g$PWZ(+eA9jfP9jsa6_=!pjEfIC6qVT69{Mvi{HGg`b<&Yd0p>( zlS*n#REeKUsR{cirWqgXhfk^Sx0EV>-0Bft3sqL&glvSY!`vp=2zTdL3iG%0wU!!Z zn+k=L{sJJ9_io}S086Qr1KrQ<3J+uZYleWr<6?8&>)W=z`ywg=juB!e;}xhby_Hz?vIb)#iqZz68a)eKj~f-$5i}w(&OyKXTFr!V zZ}^X2$dco?IF6hE&ob3D9IBfj7kQqAf>~#r$Z)e=EEc7Fpx>fkA+}CEnO)H+7URZz zK!V`%APF#&`qRD89)Rtap-r099sj6H>DHMwsaxLU--=ZpgbH{+W~);ZVotglUg8>& z?rFI@bw8p8y;_smrK!{GOXTJbmbu~BI*-x)%w{s6VpHew;WUw|!Duj#qN{i$cP6bA zL@9oxAB0-T5m%P66a%uELu15RrLU2DV~nka;MmSS-+ZB74@Iy*;F#jo7|fdceh&nN zcmj(37Gu`|r8Ye+4&&C%k*H?CyW~NrEzYqM;;)E_5e=pG9U^<}`dE}tzZJ?BEW#x{ zeh4zVmY7}_tEWC2r9L)-$j!8oLYh@a9~Ww3);7*vrJ5}bV54U1eF(!{-7Y8|4r}CF z3Z?k`+8j*Q&K;2OgR0#0aFIm<2bh+!CHL|St_1+CGvuv?*9_r3LB)s`*yK)5gzDQ5 zfPa~OCGH~`^k^@|ba-)?17BFbN z?iDqE4V4R{RjCOpm@yP3onMhd1ge#by16&dRzF@ZEby z0iH&u#bii=d=gGHAg{79v(4anOU|Q?eTg#SMcs6UI*FDi%X-#*BP{vKca@p*)dCh% z;fCk*5wR;;g)K!Hv-Wg3yP=~NB6g04S9Z1&pmcX&;2@@^5&U@FQe->*_c`KU03cxL zH;L+03o7<%r|FJeDfbtM@;bw&$9Bq9l6#zB1qjHW|X`Wb&8M zRs>;I-T-Z`F_8}Qum(^2;_)0<1i74_UZXDNb{*njv6lw1G#&9F48>c-j>xvq9 z?f5_`)Tsu~(C}8V3}& z-V)u0;zRU6?WF0`x|uyNao+nPbp`L0QI=M^S>!G+kV6PHpoZj9T@6UghUFd`_aOpy50)DNF-dx9-@#2PF=ExmkLOXF$+>%+DPtRRXNt3{SW1)L!U+YFJjuB(eNZ}^-20-&ZwTs{_Ac?#k$vPt zSp%J+S7x+;z@%esXO77>Kel zBgk>(y`URg$IE*E%X4)GSNw_!AoV}x_FoI}C_tkBr#OwC>wk^Y{I`ixozL32pIx$g ze*Kb*BO3{c3bp*_4gaxr4v`B`JIB=zf+*k<&=2w*zsEorFPf5=7!>So)|Te`H46HN zIBQ$e59_1?bG91p8>~rJtN7DeF;@K>KCtawem*x{Qu2{l*npi_ zbHAB%G2uJ>;yXwkm_nGA1(ZT~b5;z{%bhm1t44CF+~w+QAPKO=c#y@3bD;6T`o1A? zafqIP={yOsbpmevlnDrojOuuOuA`jvTD!_LakdkJ!4%{CZb}j`9LsyTisE`A;28+b zbc7`N1PK*0QdiNPhz^|iUrISK(PD?l344!T1QLHOwaQM3^$wS>t$CgLpdc53$(JrN zt`P#3T5CR+T9+_uNewVtX#h*Dsp-B0b*}WdiFvU~4_kPYOLB;2A^*tKfb(I_`CSXf zOLAg@9w5)%kz@MGP-4R{(2|!VLo3RQlqlFlij9QE^>h{+Nzhq^g=??G?K~%VcRiSQ zO^(T4+IM~AkS&pEssZzEdQ@z}N9PaV%RT33Qx++4t<$!`fZtm;)<`lZ*g7UT>ne0W zx_bXj?Nh==ChF7U%u`}AWi0l6tJjLyl&9HY)A)&S7$WsmT=klv+PXg`EF;2|ycQ`Q zLHa71+;$C4;0xgxUYk0VZ7S_}2y&=;dARhqQE=a6Ikjjc&6}_3-{bZ|e&hclQe`s~ zAxuaFJT5Bgsanu9XDCzWrAyiJi(*5swE_#)2^7^{Oq zR8UJ23>?IyQb&L)O7;atoX9fz5*3wkTz(y!JO)_m8H^H)Gxjr70xb1h{@YTITlsA9 zQTt!7i>=jP)1!DT6K=)4FTP3{KnaH-G$uk$1UUA66V0ubb@0^Ui3?U|{prpJ{wqIy z1|j7jx`tE`@VwXpM<~Q6aw8cLfl+0CJ}EbAkX;L5Wp*Wp4G}V@&UdB^HqS>SlJ~_( zD&;JhWhUIvQsFaH)8DM%Q|gz`j0Wa9kMF7xJ(kb%iS1Vi2XS1#%M@Jq#nM|NDV;WN z;bGQNvBH@mGs2-W&nU|K%x;wpw-+PoG|~Z>xSl5Lvml03n!_qVuO~O+LkOly;F3F!KayzeSZ#32B%q&7!S7q;t z9rJA8My@1|xaJBl2`D(Y_w|a^7D-APZ&DcLoEH$tT)zlEXlTpMNj(gcZlGR5@CmHjCUK%flt%F35W~j?!CMcaTPn_+)Q6ORZLC#&(m#X!b;*(j_;uM^t)sn zAT9!(iWbPkXcjEJ-MxStmKG5&>?+`!w__Q66JwSm;BK~wE+%Y?+_bXnVV}95vx9Qy zPnX7WdvtwMPa}WoL^Mrz*$frG+KBVX+K4=lHJDx$RXkV;_ou_GOz)T5Wf!~*9?#pe)1s@F*O9#0N$(?s z&%K^mou8aPx+(d`zEbPAvxy>=P zf)KNTEONZ9gz%9N$)Vda!zRLlNo_q(chgmR=ELftvHJ%InIb)J2yp?^t=!zF`M_!B z&r@k$jkk9vHbHOIHUk`J8}tdSf~z4~Hy9KtG9CqcJRF%e38@^z%z`NEKjjqN5Vhc% zdZl?Gw?*(aeiS|&Ud5_y3B&$w?D+<_E%MdO3M?F3N)6p12t^z|X}|MjVxpGX+ADGt zea=x?D{cOLao{hrmMzKUp$Bljern^tR?QWFp8gLohP92NlY!~q6*vFChHca;E8^#D z&xsEqe_||~nR|zj%BrPecXt7-byK%i7ihhZ8sH^MKw-nlj<=JE_)fnnt`e4Qsa(kZ z0K1 z0Cd#T>}PS-s0n=(biIjHDa|rcsjx(eRp##_HYeJkwX5DhWf{Wi2x0YHsu!FG+{z#~ zsv~<6*~_eN`2mXPs8(g4r@;^uRC~_A)F)2LI$r;EK_ zzr`X`vgLmk(IJ&owzaztSrtIfJc^bm@1kzDzdVV|rSGvY9q4a8{W6nOuUJTBiHNo+ z8jY-QJ9E(stZ;LNOt}!~b)AogwczdksSuW6><$wr^Tm=y`up5hIfQ1^KZ#1INnwyy zdfFu7P-INk>LpI&YE)9`Wuzk!Po0Jl#Z6%r^T+ADZ3h}{*&I0dcF}5& z9e%)rE=qlt)YH9lWQhvhxFcY+ReaXZy}L#Mf~OS^tFA-Ti@Mz=lF7_Ez#BS$@3|WE ztlLAE?k*5p=#^Qc^qI--J}3nP8d`M#drRPe_sU9Nr$ka7KjUKw6b%LX(W6id+f66| zP{OM$jq|UM?Wnh4Wc87cC{Z)O^a&QrGQpi~#SIp9QVX@qk+vK_#O> zqE(Funszy8p}l^t^bRv`&RQb`Ru;ub2T)S4Q}p>>srOSS18EvLmBqK7JBZ5*v)(QI?rV+(21?Q@W>5gij}{5o za}`}D04(=-e3`ZAy=u*uL7L7fzHplnn!osknqI3fu(JPE1yp^QVq9#@QJepLr98P1 zlL=2K)bABF(OnB>*_m}|=8s3VJ-7?AW5EScFJ~D(_-d*~w!9HWi~#yrf-v9>UQsF> zVB0b{mW0%^jJg$=UsVd<+6+LC*?zuP21!P9z<5uxJR9@{IQ}xX)xAQ3X-Ui_+VP!2 z$kTSOG`Gclrs+YOokF`Ppg3|sJbEDuTtAeuPQHfZhd}yxsA5j%t%i;DD_Zcq&Ylo0 z1UY%PNPu7aS+%k*;&<}qQRR*OR6+!Z9|vgydTkc5NHTDzO`?wLgzqTqxJ8_+_D+l% zZ*U+4+sEABWFhf}N3S^r1Uq>S*gv`_3+J`06N2JBSTN4;9Wk*eo@$C#p%Ex`_poc;eZO;5`qT|=N40c%?A^!+)U_HalVw3*aZ?~f~57c`p z!9s)^DFcpV4}Bn71fcl?Q;xuEmH5(SGN4zFIkS6KOYpJusxJV!)4VMJAM^Hp%m27> z8c@Ea08Md?P?M}QrsNt1=l8t*1bQT+K7IA8mW=5T35mJBtm>xcqbA*x=ymJpikD`` zYbMC{LHu>EJ!F0}xwrRd@0$Wqya#U<;GCrm`*OZ934Na6s?0#)#x1d&!jsi~yvPQ* z+CiHI_+5C`z8&8{)t{`GH~)s^*$NgN1mzGpVCKB)8v?vnF23J+2A@vzUdiIjRc(jA zQL9nIVc)D><3ZmLJXfu=Yi`TP06Vv1EJG~jcIXJMABMKxQc1);>YWR~qlv1rPETd7 z&_&W_JY zZ57gTC~;bhSQZUQu0#rr>q+Y?BN+{#o@mEFsI~oQrGQr%+S__JmYr!!m>^|=O{A|j zBfmG-+j^WxR;>2zUSv^}J6R}>#!6sXL|ro)&{7QXHtIXE&px|zQdKIx8~{9h@pakB z{BhK;%)#B0$pQxwID%aVx-HQSJIgkz9)ZHmv4L?S6OF64zHE{^U02pb6d?vh>w-w| zoxSZ4gPgJz-$2xZ9Cfh%O1Hyorq^cW97xzqu+;_XA&;r~Tt&AVCBENJiQK{8-Oi-K zVmLt6h#&z!lSE?a(RUKLd(f_Pz2gT7Q!l6AH&~4V6AE%jT=xzNO%6e0&|27ITxoZ%9158;=ZutB zQF^!mTSw9ei%CCK3E%Uqt1|BK*tsjk5amNe^lq}?ZOWp-b~dt@#c8BtlllW+z{adB zpx*o9IDFF|FKY{!iE8Le}{%m%UpDr799FN?1I2aU(P<+R1gD`6}$ZO?mN7dwQ zXs4G{)v(}qTDl_fBkh6$g#|VxXNUOQC7BjjPLc8`q2er#+TFl?c(af_EE) z{v%Jz)VioM?=F)_hiEz#(x=CgUH7#1kgTC3y>EitXg`^kK<{0bX|Hl*?xyrYf5^f2 zh@OLnLo2D}aqcGWHx1c;+-L3A0A63CU{FHOoi=S;evUjNefrTSmAoWB0B7*0Z2xOP zul=9TU}rN2GyVVXIrje=JBnkeSNjjKBP{X1Vn-ckc1wNt&B5F@bRf?qE9VAhk@?ii zcC|}4p$i9DZJXDTE+!i+oexi8c{esPS#iBeMzv_WXaKMh2cjL$*0+v&nTWWuS&x_| zd1fu#e_`*|ZpsFEkU74~Y`_xRQ(A|o;4iQ;4ggjr{0&y(-B|vH@MI}_WKV|jUKTR~ z&rc#`8erdLim^8*djS~K>dDsANITdY zaj5;2`2S@pDa**`pX<_~@6T509BBmNOLL04>tRG_Tprg##tyLzeMbRiwrfCu%l9g3-HL^MJet&` z-~g2hiHWe*4&OvG!BS?G6NGFMxowY9YzOlGAANOk>?oua47H7A>W1ycOzMBuL-XPTSVh~g&)W6(&)RiBJ2#+qeK~dn6#JF( zlO}P40@SYW|D$%Dtp?ywqbmSnwY8i78L2dqsUY#QAXsPUkD)$i)834RznStI-^7jP zCoFO2ESv#mT(Il~)UKZbUSkcJyXKcw=cFxOaWK8Xl8H;AA7GNW%-@LVK|F*2rqW9nLRsXKsqCak z=P|kqHw)gfqQCNB%h&!n*%-aYU4I*HVYR{ZPfX=s1GWEPDw_aICBi3DsXcQa(|)76 zp~h^3J?SOnf=Y`^D#^QH3j-fF@d(mu(W~J336ro*?}NNnFqcY4C`Fq@f!8UYUziqO zyf`aC@WaZb{-i=?~Ax5disFz8N5p~g2`naZba<_CVW(Uw^XGS*#CPTHhAKd0k zmgp=$Q%EYmONahqDslZjnM!aTde{uX&_5x41y*_*%I?hQRxmsMDD9^y0VeWj*JYy? zfJiNp6A+y|;28=Ksnu=mE&^P=(k_63_67tLJamuhS}ukSfzeN@(q+gW50Y(}{k18~ zmHZAmg}*tgxu-ER@J>7HZ>o|z9_MmmM$tNw3EpamE6`cwJEf}DO>I(bJ%FHW_---V z3jj&_3f7@!PFXaxHZu5#Cd2())_MUTNnbL4+Ay{V#QPP)gR$%M-&AF2msyVKCsk?q zT|4ifa(DB`ZrBlTorA(#6S3}dQcTM|wfd9l+$TtKDG#73VE|MmV{huOXX`n0BLG#I zAd=-+Fl|uVU+p@rJ~F_Mc>3AT1NMEPEqKZ^`ZR_VloQt-(hE1gfoHmwL&lXu-!qT$tcH-8-j1E!2t%H#bsp_a~0e!7$AJ`&Pafpe=&T$pUyZ#qsyj2oX@FOZfDOshIwp9?)Fw$`nrFCQ!7TUm;6fI$M1 z4A~3O93|y>h|jG!%>VL1$8I z;Bk3Rte&x`30{cbrYnADyW`sRcEELP>}Ouv?loQJR><6M#K))Uq+PoJ;{7c3}7+b0u0GI?-kmNean}pE>n|Uj2?OWte@S$cP3gJFqXgFJ|K00xp!zv| z4kj1duc@c|Zk_1<*`rY=)ei(*cG7IKY!Vuf}_YtY5Wooy>ZZ zF*U1_>b>YMzo)yPPOSzw;?4C8?{`=pLk34QCxN}dL;lF$FI4E^k+;bmGx1mEujED# zZ>&{(?3h!);>+mfcui-fK5o1ubv*gST4_j$&_v= z8!mbBQU)7%{&hYE_R0$-e`ji3Pl8+)EN5Mh6Cd;;H37(Y4e!DhHG)`?Jg8pPSk+mU zX!(A4vaGplwq^-?4rV<9ydt2kSJd`f1I#rCvv%;Xyg{YlutG!A;>FWhqJ;VX# z+Qo^_ucWv%qL#jt(4>i6X?L8`p0hRop+Dzdp;F{RA`?bLlS6;%yaCG=3RM5AUynH% zB%&F5OW1WSK_BP^)@xA!>EsTk&XiFtZ^znT{b4~XA8(nVv=Zs6waV_c1=vJxGB9)8 z+2|NHJkHhY#`pReb%>dFX_K#_k^RL*AnHc>$PPD~BuIvWs&j2pVLqC(8(VNb0s?F+ zTbs#n*?z>l`R&{%@Kyt{yEM@PT-ZfA$1G)0sHwK9t(P%qMtU_=MR-F>wvZ9)7PGLy zC&Q04oCyqi`5dFy5wvo%+d2HlN;Q=&=iVJ=~ zKq3@ox*TG;-dWOd>-CLOfDtCa$5#4&=U=yu4)NlBymL#ZTB6j;o>6s| zR!};$RGvAp5zqTQzrb@%hf!WWe&Jzu;Xolavj~wPaNVqsnE8U&`9;@(+D9Dr9qh85 zl#S;13#~N179&bkVL?oRIsv9g6;bspk82RqgiDfH`{q|ty-l7q_jpp{>1={xr-{mS zgkNJAzhYfoLvz9=25n=XU&dfAJ}z|j-zWJsy_F0+a4v0#XH&kdXvNZGSpug~)f#l2 zjy|Y)yFBdLeQ(@38^oIPX-sO3k`)_i{{R=*h@G96#W#i%&@GK^x>To}jBUHlaNUF- zyYIJ2Xqk0!U1q#$g@<3S(EASd;Dcxa6OJe~62Y+>v^NB3KX`w){j2=|U_5)$*k#F{ z6^;H)dg4Sfywd>=)lVhGw+ zb8xg57y5Vq`3FF*)d8Q+?@q2TUw}Yki1@#Owq~M`cc5zlQdC#mU4HXE9dq&Nj_0it z_fw=ay1M-S1z?Rueu?B^u)?Lp`~BV8O**xQZ)NXM>oM^(WX`B2BcY9?Q4c*Yb2y^1 zG8=e5AJ5NdN;GN6Ac$TGVoRRbw<-C*m<;UsM9Yuk5V;M6?^~zWSLV~j-SO{h3O*&N zP!En&-R@erm!Af4FvNW)Xi@NILT{;54&^a!$8%1K-9?epGIkyV0$`TScOYPA) z#ecO2Q~*sFJ8YLaC;Bx$T62}cBjyiO zJ55)?H5cwd(U2RF6wSz-WUyGT_0@z@9of@hsT+^VqdwyXp%F9%js=2hF*{8maS)}k zNd}?=l-&V+gaI$jmg#cZw2y>X0UCe?suZYsM)KqF{nBI!)Mx;FvC*X z{Z1N_83bV$gom+U=jm{r646S{v~J6HfB5XLU)mi>>5v38$OwwC#&UH}8>K`GsFvpo zlL1_4>NNbG8+~+LC^KS!3r*6$!v3UI2k1=N$|$V4FcSOzORXDL#AH0+kC6q+#5Wc= zN``@Ip+I`-I2rd!k^n?6ep@|@=P|kyKirs*%{PT+uZcOo?Bw{@x1pKOA?B~ zitqppt4`7t{fnP$Pod9t;}>*@(s&CQPk^aH592y1l>`uJ*qo+B$B$Rhfp;u?gOILYfnP(}<%-?||tdN)d&u~)UzlGEH zDz*BEeTNN$xWDO&V=dyaX{zjaId(L*Y)iFYfekP-A6AbT#+Q@zea zJKRAx74@xLl3MBPVf|0c+=Y;rpB~;pbg>r%$?i2O$aiz+elv>%tV3_v69}o8YZ zOPYKx3tmTwWx$c>aoP`lN_N?rDU6&o21-pcP^M$Z!Gq3~$rj@WWNw0hKjO;j7~!J8 zwQB(vge`O-*2_iFb7^Ukhgt&6>I4#umVRBGahVwWu*Ix1B}lx`?%0FesU&m7IO9Ke zmtCFjPY~J#EeXf82aOdLo_#g%%3z+#S4)Z>-G$93x!d^xh(Hb72a2is2*r8R_ z(zRvK$o>uCPw1;MTaW(|>dRVY?IvKXax z#?;pOz7R-XjKGxU^*&=?Hth6wK)mi}t$7EJj*X2T~ z7t*jKRv@7u19x6>K6P0#3eE^#hd3Lxe8TpK%D3dGsq2?isb~3UfAIGFc{hB!5yl2# z)5Ya3E}`*bStgV>U*DcHyg3};rV_3a5LdJq5!0oxuEFIk$Q;F)w#cim%Dva1)al*Q zcs-=!7PsoDgj3xiRc>^Ng7Dgd6*1u}ZAs9+!|?a!@}??WMPl&{DJ{ zCpK!_)@c#uSNkc??UnEJb!Y+l&ey|%p5;mMTq6t3zAA8Y1k`3 z8AMfhD^nD}n$?>(H##s*mpZ@b;B`KyV(`R*eZ#IbCMFBrLt!#@A=m|*MO7hTI6ljgc-M?;1#fsgbJe>g!JtpE`SR7yr8O+xhjd7963}j$+;gLQ2^>hTl z0I_n`0I{1ZN~!*BOIG%ci7-?z-&pg9rHqCeA0={XhW+P@>5EuUh$fc=8nJeuokc~g z^?Zn*Bx@c@ma6%@W2leb%YYlB(E?YhUzu)lwpmcwQ zq{s;~oc*dmnkn#oE`s(4Jxw9|FBYH><@VumX;SFNxrsWv( zyeb<(6tdD#^}L(FaA8BwY+@Er0t|$x;Lr&*VR-{IV|__87$!@KQ2sY?Dy!)n0>*(_ zXh<2543(|ZlgRrY0@>;nPiXaNg z06k2nqn1+q`Xd8B5XISGYdJK>EYRnRq~2o(Qj;-Ps2=c+vnxT&TX;*D{BJ|bx|$X@ zB(sakkM>H{wlMfn`j~@hwO=HhS8!ouy zcoo7oxjjZvwG)cmm6DGfjoi$0ZxtvXU%LiWnpy(uM3?z(oaJAvq}rXYS5Uixc3==i z8yiqSi^qwX^Ljk|{23xq4Zbh@q5qgCrMgB8x666l^xKz?M*Y%yY&C-0p$ZN7P&GKD zM3XRk%c)vp7Kx8Y{j##~IVp4rDAX_$9^Vugf%WM~z!E*60VUFOl2GO&#(nOoc!aCs zroRZS&sq;PEK9Use~f%3p0`U&+8_n0>~a(>R^j*VC3DHi&f1`-9bSMq5`|nKIiR{v zvvw6Vcagh%8bZAw7)JltX_ zcdh7qaA*^O;{HrrzD^oyKoO~XQ%5o+brsrg%vIeMa4(2htK=TAOH^sx?=J~niJ6gi zC)+Vm`gzcBL!-7yffq{;Mcq5W+a|LFSHFc9PB%=B*XKyrGGGYdR*hq$6{U&?xM}E# zdzhC+47T%7TqU!RPn0UvOGYMm-)!G+if(j19$y}^-k)!hZt#9e#vMppr|C**EI!5> zuC2leiS!7PU81V^j(XYbSq8AhVG4xglm}Ai{oGGab)jEpLLcZ3tQSd#^*FM)EqOq1 zHNP{0+mwsOx%#48F%xDqTCcbzdRLal5m9+xzK}^Ffks$6YOhbbAnHQQYW_ z#F7OZWq@i){A%FDi=wy-4SvVh|E8wJf02vMitMf`3-B=b^mT}*x-P8Bwi#U6+%gs( zPowg1q|cRi117E+mGNEoN^N9xR0XWc<3)WIwn_z?9WhL9+56aY6yLW=_2HDy>dXRaY+WLlV5)wk#S2O;7(f>W1e4XH zB@@VHU*mFzuAh29_ZeqRNl_TVgz4^eI`C6vglG#^$mWH{^1&8G=2L*OQ(_DJ*Y<@@ zVXv&q0@D-gVwEnp0fwovPzId3w}%jh5(USPeCm{BF5Wpq8G|Zcy`b4!fs!jXzbzKT z?py;{aCDN)5!94#JItFSll_6AUnlMHqh#BU)30X`)EF^9dSvwh z1wW31zF^9iUd>U6z@c9TN#|&(+y$`_iKEY0D+R2z81;+n@Y~?FzWNV}r2fHhW>t?` zsse@el_zX@X^gy>t(mt)`g!Qs?YpDoEGA?GhCDqGPhM{M6xbgtXV|B*i%D9#0=kIh z4lGB@gZ(x0cN}EQikR4Ps3HixJ!_cUL_N)tTi>|-U?V38glO0jWVqabxCqP$0s7Fi zg}A*2CHFZyTmfUvu$dTAspVs00Mw7g71!WuM!Bn+2#vDnh}GilOmVoHAUqh|)(DVm#E6;^K^%$Z$ zEo3-|-Uiq!X<2RZtG141z)yI-Q*iE`GouBkt>FQFf(XP-7%g@ya+;DuS zoVX>GCYYyfr)mKRR-A*ESAbOTb*5~5-5=2wb*^=h38I(h`+(TrE0s?{7D8+EfDKPQ zuDDWYpfAt2$r%H8?ns~-+=dOnTZ@5C5j;D8>4AM5+wjy~LpI`V18Nm7#wyMVVt^(W2Pm5P!rd}B6>MN`u6V4M;& zYLWbB*weR4Z7WvnRt`!VYKlTEnLMV`v|DQp_r;>93*Geo(^dKKMYfJcoWbpLgNEbv z4YSsb%e2Y|D0Kl-CzrFZbH{utLQF={so?F6U!BLv4eZDEW%}ZQFhzNIo-1;+7S`yu zhJFIFTxk7srCh#PDbKk}RB)V0A05-zN(CLAbB#G$=B7*MBan86Z>vSiz>gcqZ5+-J z3i00RzzuIqqyl1C{P)0Xd$m8jxR-6|V93(_v9sx~dTiZd)~2xv*eI0P$GZe73nF(3 zx3xj85QQeMU0U1@)?I>xhTPOT+8p@I3_AmQsn%oq9^1?7#|K^rXaw7>A$4A^Ab;gY z+PhJ=5|=Iv9wzbre0f;x>U_PPOzQfHN21*NJBJFKO4Cs*@m@`~EtplTKRrkzUgPKy zm21QHxPJpuQq0oiMult1Mp&tyV6$C9UqhnXBk?_`!^wR8#SpsC0Bs#)E(alC8YUVdfZZUl5t2{?Odj#!6nRDIEma+3gPwKm2~X!>;!<2wGrY#55vJ;!?Lg9? zPI%I2LjS$GC$eX~XE1E%Qe^P;RE>jmtrC{G2GK`#ME&p9CWSw~>E%2LD=Z-!B{Dpo z2|`kd1d-tFLw6I z$X#82MzH2O%5O|%FHOTgKf^Qo)xXyg02=ups|)_wlkCCy@`dGpp^>I~4yJ-OhX2%2 z{(1W8{5Q5F#+waR)1Av3${8%WijYfeM&YTtxL|61u@5-Z0rHYJba9&t=iv800)Gr) zmhieB#5RJdIqJT9@LS@IJiHBv+Fy^aKG^WQpZ3v}+c#)RquvIKS2m7V>&Em!C<=9t>Z%a}+kM3n1<5kVFwOThLVL?HSHrQu>vv?at45bOb zLax$FIRjl|UTH=+iXhi)pw=a`7kktFP5Ev0w^N)RvylK4S+kVY1PL`=VR?h@YY5Rp z!Hnn`bae|t1d@6Ld*^$#ao_|ERfAq7u!@~V$23^=;1PKEYTeAy3f!oX*N`Z09-hzzBZPOaNz&fV(qJUM0nnq_JHRN7ETs5b0tal(Mt@TOm!8qBgo`U69 zwt#K79N;j(P8mOVzaX^JI3>tFBLVy}o=F|zUBj}=X!Fi*cOQ1%w^PqddJy{*)utp}sxN5FUd713 zUemv>Bf0307SJrx>vf1cT}bSI*J8Xk!THn6PCIU$SyE}vTQknx+dTrEAoKisXBmsV zge10@LzO2BQyVTD(a#IxrfS|j2G`1rq#z#ldw-f=(1(oBlc1$>RS#TZkf%oK03mwf zu~PPhl0)|fAyuO>ZkEyQM+gtTn`!yVj!2aV(i#rP;4sWlLrNq691! zTUp-B>Z1;3`XmBYYlrcJ*Xr*EYbzvanAft=V3fMEKZJevW>-Hw$$3A#WU1_}CX9q^ zLuCm=paVt7hk@`s!Vo*WlW3H@NoG1ZaS>li_tW`OhZ)Gz5GR>+X-t^6 zJg0XgtIoenNtlPU>7&Y>sG5tB5eTdopwI_=+_PzwZ^f)XmK;Pbq4*3ukGjOm`I7;6 zo`R~&{#X^_Ve2qgvIpYmsu&I9QIM>#$D1>LySGQI`5|Kt<=Jg@A)p1nj<$rbOi#xX z)w)nwX6_21%*v2Gm4k~h3m^SjNbwk$=vwR16>)PK0ivtz8CyhFVENd$^23{ym%?lQ zK)G7nkS)`lv{J^vd&hc}3O&eV5X__g%PwS2Yro)t_of$5+zL*atn2*{i1=J*n$hS! z6v%fA=YE49Sy(^3$48^x;|lA}n$@IbUHaz8imnfKtl2#6 zmK*who~~@;EddE^mbp&M518v=RdO;eE@eAmt$S-KLz%Le>q0W%(n2_hh`O6K@r|#W zqVa%-eLq#<^tDO{w)AfbZCk*;*nmL9>~<2ivZ+PvEwORsCJ;7KXd%# z4ifwaN8Za99eQlbYe)x0sPA_ergEmYHFrPc;=gt~9z*zU^((J2XeT~eOmu{X6!j&12?u zwx{T|nj^B~_cD3(i?=hdd~FOc=8Vg;{y5#<(NOyo8DDIZ4}G8|KV~f_^|yuK!mRhk zrj1rlQX08A9Q55NyD_s?PMl?yL3kEySLm-QxUY&$s379%p}2T~+A`)0Y{f$X%3$!qw)8Ez+PxIe zin^H%FP?KEG*{#rY&O|8fHDA{b^f&ji%pkDrisGLK~MK>GbBP(ZxuD_QB_%Yc;msP zL!jK>#I(O)j;-g3r^zFzV{P`AEwWX09=m_LLOh6RH}1URAmOxA)4jI>Ihk6zxyAl= z>Y!+qh|%;{#h`X`<~HBlaS$kS$ru>9mMUzaQJn%*q*e{1Z7Iq9OmVw)Ba*-ql;-5{ zuUZUaFBkJsgB+ppE7HwHQD$H!NlR7fX6^b~x5Cf)>w9YEg1m$F?jSRV_)Z9LKZBA- zA9}vLc{{grZ8TA=G*%wp^*%oY#Ft}S#=Q1#v#MzYks3Adkhj|*4QcQFvHdYn9B$eA zBPrgU?2Ot=AWPd{!}15RvgH_wrS>ygc2;hkyfO$`0{1#fK%%d_!;tZEGlao|ld~2K zI-T`p%hBsQ0a}J{f1mr<0JU}ptwe=ZGwk=XOh*Y9-^FQ~U^Ex`!!XOtaqhOM|3leX zMa9`}TN)4U?!n#N-8EQncPD6Y2@pIG+}+*XEx227f)m`WKa$<&bf5nFbnlBAby2r9 z#(dYBYd%v;em{d*DV44#4zHGiNYDSy+{g14C3LsSd~IZY zKqV;q<%lqupFbZ|O4iDk!ooynD`!)aC$n0+`*<_l5WRlP3`d&pkHqm|5YtaeKu` zL*%k4B3~MIX&f;jYH)>w*O@XJ_B$yIi2dubnhtio+ySd=6K>@evP7M!d6N5%&bzDc z-j_GMsilGfFCtbeq1SZ1L?lH&D@Z6ve;U;3Oh6Cgno(0*l_1oX7S*afi8}KYmD?KM zRN&P7-2*eeT_&^Qh1lx@!~jF3@CXhDzyj z&HAuO$z2k8+Q~&S?fiy-sf5%#C3!9E%hNCp9enk~k{L+PYl-;dImvPcJx0t+Uph?u z*VIf#OkXHJS(-?2=*LT6227MGxiS)Cq=4iU<|8%WL4)5m6@H$fRnT2s$x&t5A#ryj zz44ul`iUL0rz*7Dc{Ig&#CG);jKw3H7ZUrI=p0{!+8ka8X{~0+S|Kj^FG=_2u-Pa}VI)UNStaj?>RU5=dmM_~ed!A%}Njq1XdN^g_Jc-skT!`{R6<`CE0uK>! zleZh19|*2TH%g7q@`HN4L>(IBd;=36MPwvJ1a5G`U}jtB!WeX4Q4;;ulo3YhYC^hB z!pI%uB9kKa;B$v>E;flsAMig$?;?O|kAz24JGMcW-|>l#&6jD?cRs;Jqg{kCI%Dt? zS+$I+QpIAQZPit9DXab<0!3XEvRQNsnrLet7){>_N`(cDNHIPqFJ@tmv13M?1c|Mt zhC0W%yd<3tYJOeb0lyjfJJx4*IxPG9!2pyom6CW4KNhTpML`+9_WBfD>y z2PG$w&B;3|0Y9!PN^SqZWmS>Q>3YMoy1?ONgzIFDg}*cxyx zdpMg2h%!BhfPK4L6XXj&JrjSI@d$RJF(I;4LaKZFB;pf$SVL=NAJ=8qb}gb)9`F=& z`I0BwZtRCO7IpTUeP6AkTZ?3P>?^7UL{=47uyfVuh_+<7ZtT+}~$1&BBk9 zHB=jj=8G9Pe|C#TIa3Rj8|HZASlRo`Z)H%e59yy>J4lNT2Di#zzz%Xp;aVTIs!(Qg zqL)2bMP($HuZpd5r=UY9gsyj$kWBHjv-y2D2=|kLO_R`_-A-)wi21k$a-XOV;;9!l zXZOaD^yPLDTw6t@Y<;3+YvWOA3QA(xPr_hnjo5s8sVzlWb!7*_VNH2A{NwOX^fVB| zuuZxPL>CiXG_tEb$abM>eUC9hpP<>xNK_M8$@@Vw`4h^UVYu9JT?3VS8qDmx%qH7^ zIO6O)R2gfDx+3SzM34AYT55Kef@hyasjA6|x)asU$Z<)ckekoqQM@n8zL-5bp^CBM zG5%VOUpI;aE%j3>4i*aQM2Iq3cWyRd;8RbzV&wf`8nPh* zQ$bJGGF0tbgE!gW4du&ulu?I;xRg{%pW!#aYB&>*gP`YO6V6f4?_Pe;blcrU>BhME zf8oqM7$b<;d&XUtd>GSvzt=~7kr)D1mha)nc>gOXWWw%Jho`_?CF{2dcY^r_f^~wmqCcNXawVmM$5zSRzoURmz`{0 zhdDpYO`&Iz$+PN3(7gl$dx8xsb$$v7@?>@|b(oDixK={dD`O|(^J66Dh|B*<7-O=g z_rHVC{2qi~{6xnGw20@W2as)-;nz5UbM-kl6Dft184bK&D`rk&@Aqtnd7Jc(Nf{6 z1!7AUJD4HwNQw1tLBd=7fsLm`EbfVOsxQa7;rH}1mgz2u0z#+y&qpAhteVWaL+JILb;v|{ z{R7gXf_^!r170m}ZTIdVyfo~^x!=%K)p_AGA4a?3%MFsDjbz zc=5~#1%eGW-^ACqZyC?4%kYdABW9p~eZZ#ivwq;o?N39zgDAGdq{nWz$zuVZmQ_!p zq1_L7!%0G`eINUSlZ5`CILQ=(sJ|Vk`^hnQ4v=%rMv;ae;F0w+9@Z)`uCFu0EL!YHOrD9R9 z=FW9~a2Mto@{F6N?`Zj|#HO5^x-tM*$-%*ztmujFUgyqygx<`AtdHya!|qQi#9Wjj zya81L4^Dhhe{srAZ&=BNtA;{@jqu;tg#cF4&YSOxxOd#f5ijW98dM0wKQ*W(<8pK3 zMw2&oPZ?Hto%|2-Y2=z8fg03L2K-WJnHuj7pkOv~ zfTpbZcD`-$O-HGJ7_~9S4}uE4IgchK59U~#C0r^#*I9T=EvbG$YEzw^wul&R)Y7u* z+hy~ZZmkWmF`pXSz0RofrAx|PGa7L-l05MTznId73`;i7k2AqkXTbF~)tMlz5MRed z!KZ=LJd-gKctjtJ6;yP28AN1N@3YOn*W0>frDfRgj#4qiPW9E%O}4|K=>x*Y903Tx zVb~j15>Gs}c-=7%z)CKBb{(=9SqNiv$K21_nWYs0YEWrbjU>?38ze+-q>6$JOKSxI ztYm;MLOU1@7DN=(#Ex2!lr`CoX>Tzou4V!XO;Uqe{r)5!O9MGNavGgcFP#ViC3iVl zNa#q8Jvp@v=vB=&7kXD8i=qgFlBsbWg1FE)`RqK=B;+R0#Ux^*OVVM~c@m72=lbp%^s}#pRKU$D&5s&- zDEG-@Xj@U4 zP;u!zOADk`g)LM&`5!e3lD!^|8WlUA9&S&4eIB;=*evbP+u(#6U2HR5>O3t#D>2w~ zs#be=Ok8%_Ig^)zv!QNLX=#(d(wysjM8tWMesjaFWCeV$<>I|*V|{qX{ODs?EX+5w zQesTBI3&R#vtz9;6Zl21r)7)CvV@To4y6*q}-uM|rO7g-zi& zCibMfLP@}AU&G+O(yFqKH&CmNp0*|~0r|%v5WNWZZeI80Tutmh)!(jxs*g5(xgKp- ze+7SY2*^kTB}oB?;7yDES*13BUj+V*+1lv8-ZB60a`k_+3V`C8SuW(4j?SLMIOI^C zrG&t3;$axA81r;s$o8V z>1^u_sW}NXlvN;Al`<>>spt=hNMI*8hnb$H(_;R-CT%K_w^zm{uRe`IOXV8JKdYq9 zY4-7|mj6Fc{|%iXpXK9IQG_Of+MqN(=u*w&Q1nBeuMUI7*Gv}0!X^jjkWV?km!Y0x zKETY0g*IWU5sQy4&vo|&@EYtn0chp7^Baj|VdY)}^QM!xghndC95vE>CA5zQ? zNC=KZ+qu}^v_MTaJ%(~()jqK>aBbCN?q{6Mg=Su)T=#?Ii1C?1nr2dOu>L!HVV*G$ zgGnm7)~nvPg!7SO)ti#62_#eL%uK5L-CtfEw_aXGhtd zS)gp)0D6YX)6IS(K>Ih9-cp$D;*mwmG_7@}9+6c=6|F*m=1V{Z1xmVIJrTaK6%<1+ z%ns8m!B(?`?}X7PFgP;GNQHd(_NgR?Pu^fXR`ZQ{3vtVstLI9P&>;VPbxUP#{waQK_you$KT{IVo)0$ACAlTn0Is@y#p0_->ON z(cR5xq#cvfwgne`~&OcmNi`%Xo9=@Jsi*u@PxLM*OrJ79ub9trpjSo(3VV z+1GTn*Cn60$U`_%jM>ZHspFEDR%{Qa^Kp*Oz%6Uw6zs1$u@y`nyQtzwbYoKQ6*w@Fn-ci%5ihZZ}{M+u3rDOM!qskplWO4CvF1 z_%@(V1G3S7^~rew_Thkk8|=i(&oOARMa--Jg$hu6*jvl1D>d z{;7pLQ#xku0jI9Kh}Mw*40^jh&(ZYBo)f~@%X2}5la|jjC4*7zg$^2;0e(4ZrI8kD z(tBmO5buOgr3;cALB3XdaWRMc%x(zl25d4QGc+D;qkHn5^|Zp2@YC5=kgbW|X4w5IaNwSuqW0mj{$7o`IqCE05X0rD`u_kKYVVSwOI9s8z( z_LdR(iSQ+F&z^n-Twj7^MEI{Kru%eFR*$==IyFQS+s%QO-7K|O^o+I%4_MN9 zYSkW?r0YZda~jO8P;*AbarWz;B@A&`=fZ776pkZePx33~gp7>qn0(im^&Lb5BYNM{ zev{;asyJDXH<9))c{g`HH8(K=2VFgYSxq$g6rSQa@$#of`((*$^A!>V`d z>4@{*zt)K3KM#}5l&ur5EZN$q%5AA$=fhkupJfC)^Fm7Ok}$%HJQM9tmkld5qo zB81MvxyCxe4sq3uAG+%qHqi-_u*KysI3V)y3q1>fIMEscEo!}X_5k6%VL10_Jx-^F zy{0cx$A6zp-b-A5`U}mtR5x8N95gq9b!ZpF%idZ8)P?zItx5c*g2wxKF?7wmc^!>o zAUo+d%gDyN$&-=~(flZk2ZCc+GIKNv^W`#JGOy{^=J8*moTsLX*y zubibCFf<+C^Mecucn&bs#IJ~I%%AhJg#vzT_Pfm5(n=h<;?LR{HyLF04xL#^6G%)o zx127{yxk=C@+9isX`MhDw!x~2z=rzhyKH)gSKgiWtJR+0_%M@?dx$+Zd`XQkFIsoMG3#zax-dv4xn7LBNt5my)-YqeYrc)7#|D{?(aKzOpZ9s|GYZc#8- zJCOAiBTfd})8u*u)g1Fa4ceD$Kic|sp4Y_GD>>O_RX1csE5?fcQLvU)^#_{Dx1@N?1MG1x%gsKeNIpYYUTCB2x@;b%yk)S|Z} zxn={TA8&b-!`h+s_E0&XL#{F=j>A|-V9zz}_Fgy7(3vknmZCZ-U1HuplW!+`XLW^3f_ZZkqHT(Z9e#}uHo+1lMhy9h303XPLq-ZI3i18 zsmJ?d1YLeF0uTnRYYtRpo*ggm{GC8fq9#wHk$;Lqm6!-M3?ixCWsNrkV^@w5mtHw$ zE9@YzK&2C3z5F1IA>1`99VoYw*IsZ>H2rykYGTvfJKTc;CHhMgY1t;KFb{Wn*?-O+ zf9+Pla;^B3VT}qCwJYj@(PP1Ug{;qd5aG0JiQG3}*A3Y!;G6;n)wk34bgDKml6g$| zg?N-}4Ls(YTZ&9@>2qTv8on#(%%yOtwx_KpcsOg#@Gq&<2s}c5w-GGnq2uEu-PmR( z9Oo(Da##I6_3TF8*4B4%oih;UpiH3MaPN<`vAWm9W8Hrm4Vgxk9yx4&*oqZ>iYvw6 zY7Z-|pJansfORm_n9p?Pl+{({+anBtSmFB)MR&Vx$>*}`MVhpMvuvH3_kx;?osQI) zdQ8j9@7w&9t?0)W=?)+3W&v5kex&W^s!;3q+m%rEM{ONT1zWZnVb4>7dUZ8Lck<5P zK}^3m3?Pg|SJFP;C*He=KRtf>08Oo4pTU;}x@uitIerH3n{@L6*~=06vZH>#7Ubqv61F=XT%xv!c4`ECzlr#pt|icaQ1~*K`dTeRqVzu*2u?CX;}#Rn+GS1g}~}|ITxtfa*5qP@uYP1!W@x#v?>m*rnpFx(z()bOP&N{WY`b z#R}N-lZ;3Is&13WkBw}7cDOkJ2gW>D>Ny-steo#udtyhu2wzlkBE-wlEpaJm%$K56 z*=|^H%(&7OFS-Q{KoUm^Y@{9$Ufz!RdqD)j z60>-RJdWg>{8nZ&L1H_fc9`;EJHEXVnChm(9VOt^Hh%8Gam@;ncs)`$yd`|Bz_XJ8 zY6Lq^aZ+)sDg5&9kkjmfv+{kx9-zx6ps&0Li6Y& z+m07OnJtJKW?^=UW)ZfU0OTuH~hgCg472{gm3tvYtu+5TNFf?29fJB6L zz$t}Agkt<9A0%Z?W@0{442u1C>4?#=->f;ln4q$;VS$2YgJQ)!Y)Q}Er;GW_AZ)-A+^7>wN zjqXkrgna}OKDOK^nMctXC$FL%r}5`2X{RUpohduNU;=yf#ykZPs(w36*wzM$_OEN7 zWFBiQ7BO&s5QY@QIkr3Mi1w#MI<-CZr0M{5H1O2+_g@whg2Qbaq{80zs%N) zu_>1dmn-1Nbrfjtd_$G6@Me?R6NTSwIm@~`@<`Xa;h?eCc`2zA0x=(XXIs4au99^D zlty99cfq+6=isE5C;=!?X3Qdto3$>$#4x!A22a{IPrgNav*&X!W_4TEF?C8HM`rze7E0p8tQw( zyTxe{RAs4wzxQB~ahMRAF^X|z@f>33T{@)Mbe|Pc-DEiVQ;Y3x8b(KXWeY)|&#fD5 z1t?k*W~HQJ>y0NaP}xShladnO)LY!;OhFRE^FF1VJjVV~;Ea2LGpa}K;v|G``+;m9 z&Ry>XX3n+PA~U-S?XVuRLv`yNDcc}Be|yr8c0k0|1v9M3C2*Et-w?fr36 zpkpYFFqacQ3&hwN{cqirkE$DxeUum(uEDqHHN{^5)H~P7%UQ$^uPin2T>huBu|J*6Xq9l_i97k@K&dPy1$On(dY zqFwjr?fUlug^E!E1U~miJK!bqy|tQFzQ~kD^`S+f$Drh<9HLaVMemD>zE025<%|Q{ zM>f6Lfx0B0)5XsyZ)yc>9|5)EE<~ZpV^Rf~zvvA}pylaC%gYY87~2=8jZgN|tD2q- zkFC%Yu3kCLPN`9|eGu(j5&e_eX(3KyxVcp-EOz1r`-vs8X7FeIh)dBQwA~spszru=Wxt!C4?%2-R%!SsRHssQBwWh34 zG*9Xy)lNOD5outpQ!y zryve8L9QU1UZ)H9d?H~N;(22jg)IfM?);}Tkl=z>M)+u=7)@9AsEF6m(E6P)X~68) zxhw>Ni7h7?sh~bOt4kQzaNB#UwDL!+%7&H!vHA#lNGI>5FgC4|pix8?yn(M1RftYv zVEEd!q97V7XGjC|uGPsjNR;V_Imu&CYBZsdL--aCL8<|OBM19#I>{3JJYWYYvW7$Y zg?FwjFQAOMFuq%&LY>2YObu>nD?8`d{M*ru?f)WH*-E-`)^-09E0{kHnLl606(Cjs z-^dUUEB%3nCo#=_Ag{CT)l>)rDh{&EG0RL#A^Vos!Dn=R-$?(qgN#{)atIW*Czbd3 zk{+3J^mV=Wt$1zW!6nQLZXp!o3D!Z$E(Il~C?^=Var|q~4|T~Q0vL8Co$Gn?oD;dT zitI#?Um{)I8#;Otq0SN_>J4eQe&5tEvSTf^6-P2se?{1yLm)1qrd4t*J%6+cxav8+@N1geC7s56)2esJgY2znWJzn4K;LM(;4*Wr2b(I= z+Y0jA%=4$G?%F5cp-Wv>@6qeEtLu?+8$S87xsfurDTpJe?H*TlF7$g(>!-NqGu$~0 z2^y;9khoQs`cvbT@(?$UYXWp4A^gSm@-87;lB|UwiHiImOt1r7IP>ad%1N(pD@cE( z`=QOU=+?;Echzl(vtWTfk4klklBAozrqoN?N0N%NM*_oYtkd2)L{F5#OMM=teyUQ! zTkm5P)%$PmnC$)M3X&06LAo~iyXdDs{}!ggXnrpG)544ej~zCfX@H1ID{7y!)f2A0g9`fZAX|g- zN{TWL!BrJ>Uhr(ZoUx1otmYpX^3HglO%EabEU>}6lhVq-1J0Jz)s9I~k`&VuFGM1E z>XytYn$HO3bMLe+6-aXStcMQgcVwc1T3 z;k}WbNPki{c{Lg+-=+92w=e8w=aG}jW*eqvY`XIoq8WM##3q$_@xnvm<#4Yp{j}XwJNA#j=rLFKD8GWlPbn-omFs$ipKB&v^++R=doeAMP zx$7XnPX_@W?c%+A+7ix)3c#byMzK_jIMv^Y(9!dKsWDe#c1ln4J}qjI(d&D6?(;{b zk{eFBGxQpy-B)sFm~aO?C}k8*|3jtv?<*Gd1sUDM&uSm7)g*u78K}^Iy8s{=0!n^9Z;=MSlI=8KB}%A}l{_`G!)kKQi|7$D~g{ zSQPk!QlNT6DRcunN;fic*{?I?nl;&__f79k-H-^Do>Do9^j;qZ2OIN%IE|ds8{ub+ zZ#FGjymHRiT8YKFNf-5xkG&~# zA{i6WF4nLw`}GX>xzQ4x?mVgTo#|r`FYMkdsm~ZNQOPwK#1)F2sbi={O=*<#>9TgT z$3te~ZZjj31&S;wxC#Nk{YANC&l6neOG4^LHiQ zPwrQhjulIo($f;QelD@*?^7x6WfJ%DOroYRn$i%-$+Ey+FI&sM?Bh(A0gRs!n*M}P zr;L4i&e-%B^?2l)e8a+@WZ`^)-ejVYKiy@B$hw2n0LG8cTv#k^Lw;-}fy?LG?g$qE zn;@MfgNZcvgM;ysZnPcbjq&ph6yb~IQ9L=`U&c>@!5iZTwQr^tB>kQJw^|evFhrjO zqfKc{YZ#iQd-NXu32baIe2wbgHAYN%%)&WCs{l6P1i&WHM;YCs=zN$oG-=jRiB@L$ z@esu|QFqn3Kl>hOzH|tcA687s^pF69RUFdAw$&&Yw=6V<9rsZ0=b^(N#82tAxzMll zQ_Fps%s+@90RZunHFe}7B4bz`oRH2jD_3n00L2(?=uV#Zt!yJc0on3$C*6#EzKxhy z-gs;z#slS(A6~>*3e2x?b)r#ZRzxeN{w%RTCaO3E&unrCRBs6f1M7!Aq{CPNif=y&~w!#2HKNOlWw}6Ph)O>-omvCN(Bi-@ZLFMCfFs7 z0AU&^5#Wwv#`*EM+m4wa>DN@b{=d68`t`=e9YT# zUE6%Q#}d5$;o87;YIg;s)$M$lOTYIlqc3h17ZTKr6>^N6%^rbM!2x93Sa87j1o2Xz z`CCtmvAIt|)jZ^?#fd^pqq3IjBmlg-xfoM8yBO0eP9F&>$!ZRCa+={9qcNkkkePuSDIFIU#Vn~+td9clJpWWfEgV%wC~o?fwH3)4k4m-8sE%~WJ#lwinD>?c8fAU zdL;)oNzA1;-*ftq4Y=j7@C5I@3U(B>^Y$|gGSD^3HuBvMzBO?zJVevE*hEAvKUE+0 z>UihpITqzUbNFd{abjEY*6xFeOF!1p^n+SMG(h?BpXdZAKa97<&c37(^Z?}t9Sd(W zcTkt|$$J4tkdidGL;gIaG*{dXuYiY{axzu?=|QajS$w^jSh7v(GxL;3x?fAYf)H;3 zS6wY$zmE0Y$34Vn-MHcJ)BCj0U{A}D9jp6!MCTIL5DB;6ULSrJ2iBy*+p^#zW>-lD zTfsmf+(MaqQLTy(2Iwvj>ey6^tISH9F2ceu6`001Y6d}0%VnPL7 z>24D7y3>_;;^1fEi?Oi=7J5q{!;jfTh+nsO#Nc%kaK}WMFQCRN$R3W{ksqtX$A0eZ zT&uCBm;HtdimZ9@h9;@pIrrJXaFYJ>_8!Dvb6gq*y#vG;ycw@Z`!(LRMl> zdcpAY{wW6{?d;&N{vBe${fO_!yO144B@B^%Bp8pojp18HZ@6tq#?aCr`R5*Iv5nM1 zI5rwK+0-FJgkJ|TrUiwoz zg;u?r0^-N4X1Hrwa;yF%5{y_aPyd&@@tE)G)+5Cy%Lw?gWP8uk4r#u(zZ+{6 z0S00QTSa_7$>6(ha<&>U8ZdSa>KJe$7YV!)KZ0>aR%s4&<$dK4-$i~R_@(bztxf)# z=ldi!;k?33$q`GLH~Yg8^5fAht)A^Ygkp6jcOjphC6!R9b&2Fj=n*C8dF!ve!Af3L6=*A43eU8scJWi!6 z6*f<`t6!5D=P{i5(5Pv7vTijG+pM2{wD$d}Ke^&A91u^BcAbnTk7o3{qn$aY`%`F# z@$c6lj;}k6Bc>woiKTrl?K=&dKOuEbX}*B?!W(%R0D!!caCVzzdz20zRPKCBD8YGQ z;skWL!Su0)9`{MOUb%+fAKeg`$ot8Joz4xo+F#O@@q@l;XACG}{=rHlxwa(zDZs~5 z|HH?F9s0}1BQckxKqJ0W3p1snwt}H+y2pRhPAV|$#%#hGqYD}10I}GRz{i+WKs(u^ zO!h$Rn6Pb3n#+nCm01#>z!fqq4>I>xsA({(jYs$O{k}}k5c(xk;}v%JlYNXx!iR_X|f%tk=j$r4b3S5}1ksrrh&n8f_@(8%g$vn*rW0Ed-0w%WKT)YXd@52VsWV6i)xF?bpq(h^|22G zIuxql1VpOwj{}zTOe+SRxS9wflv`$>e~FC<3IhQeO5WS3QAy|lB`IQ5QA3Zkrmhjh zHY5z5GQux4Gw)hnp1(e^(KmcsbzHw9(|M!got_jKd|U(Qc!9u>2T+GFX>RO$kI;(w zs~$!>ZycDvE+e&?)Tc0a#hFRA`9wB5{$4oGedMC9Y5o=NV*JXn`lg)G6P>vLAFrX* z8Mu;ANFJabxc0fb`ZbCC>S7V&l@FSNGo+p^>$gsFe>Vij;VDSp@lcB*crURb*P-TL|C3^Bk)U z)8KI=@B%0mcf=k7jtlOP8*3SuFnvD>7=y4?rm*_U%pEYHPz)Jpyo(VT4%&{fCfD>i zbWkMF$;djv;)EyRRcNFR7a>l*Rt3eAHzsIUX1EaBX{5b}vxDhl?CuWokLfVqb4i3% zNR!}pm1;jOpP^qm3qFBxW(%Y`!gXF`Ui$Q%4Fac9A=Ci`PJ=E6mD1HfJXAHux^vpW z95YPX$zfFL3@uHg%?w(=L3Elp+&ZEI!qo!?LF)WSZ25M;K>OD%cs>r&Sj+H@ZMd<( z(K~x|>b}y1buO+74;-VKkK6UtkoE-c(9@y?IJ}4j;VGywF+#2Kd`Fhnd3zh^J#U^D z^jaHRZxE`OJeMuAbrwB4{NU(0Et-{}(WA{l_u8 zpB%^?kJQ*0`{V_6t|@HtJ)$sEW)v{!AP$6Jg`7rTFhzy=4(RA8&5LRhKIG0e*+4JnSOW*))==5n;i%xhF|I(^AL z`MjzQQzB8uJu6b6`M;hBCdqZ&LYS9LC3IDu`tl@0h@I2G)M={fB&Ok+FWUlTDl5-_ z%2dGIUa>K+0DpQe9gG?orUgThXD^p42 z_B>bJg^OkF-T!XscOoSMLIaekoUj>~$*EMye4?er`b2U;7W1isrXfo=4!rMEKSLAj zG*`geVQ;Y2cqe(d%!AyQ- z!HB`KnUs_kri{YRwVA@^Bn5)PZZSF`D>9}Zm0eCJl{d+Cbu)_6u?TCaW(AZkApUmj z>q6dG>}wefn~HgWI44QOTM5NuiP2(hFEhMODO$rz(SWR9gI2F?DU2f3T+)wNPl6eV z**>oZ$1Nhcjtwm?3$kL*WD&=h=N>|WnH#mgCd8Cq!66bx$7*8I#^s4m1T{?m7UN;t zk1#ou11-hCrasWN5S&7tAUtVc$_(*AXgSQZ?K_464NOM@-C)YDNl133B??O+;fc_C%>i^5xziZ9TlVmy{+N!k5q5cHWd zZ_Q_d!{XwujBi^jlQDU|>9JE+z~QyiuJPS@h1>SpGuJ0sZ8KX8cnmOIgh_3yW&Y?> zzPMAi#Kw_bQ-NCs2BHFujy2@a5X;k7lmm8M91fycjf0cXduYK#376z=ureo87Orz` z+Md?jElb9YOlHK@CM%j0UFh>d_IuupT-feB5$ALxXvZez)@}afORJjDNQ?t>XS$Fs zB)3imb?S1bCR5)h>4c}(VCj{IoxeV(C$1@;e)w{TOKSCk3Y)mVqP2v}-U|FJ zVD`X{dBtq|eu$f;0plzCPrdBT8`qmsGU@rG&$oUzZeKyi&0Q4^k;Gm284j-t!UP@) zuIWopWVb!POKe`>gjbxNR$b=42zb|b@^T&HwM{%goib}0Vs{LyfAWYKXfc&%+{M?5 zda142KVm@5%SB>mxgVL_pdw1tQ&?4#5UQPWu$VVPU`^M0wkWqy!@t3^8D}Cxyi-4* zfI2=N{&7C=J=asHyW9$z-PN3o1S@oDlV<~m#P`8Dm;WvS)JJu%xy?cy!E)wS@ag$? zW9HiP_28qv@6%pl=KAZ4IetB7*m|CXn@c1T%CZ20(5TaIJc-t-k|sXqYT4*&(2Dm> z@TMLiLP>}k6UFY81-{JL(9}{Sv$cj3UwQ?mH*E2!h1rI*tk*#-1Cl6|xq=CoAodCG zU!WQ`2QKzGI58==T#GRzUl1X&&@FYeJHuF{tBVD1?etH&+V9_OlBIogK@9eEH*}c3 zF}i&bultdJ#Bq$!+V-FqXstw3!1MXCVcQCY9~!9_ToA^3D#)HqK#0rZpk%|PlB}1X zGR;+9?_Ag9`^FF0Rh$Mo-t~mXInKeAnx{PGNFX(=T{wQeXv+ZGad^Ob?U6}dO;T~-@bLN$>Ow{+asOE17ZkIJ^ zIv6(~EQLy59@E9_tG@WQgsoioL1R>T%|7GPJ-tA@yez!718%kmtSF>Idi#Wh<`hgO zF~V35M(#qns+q{=F&Pzea^30xBTjA+c2mIQ6Bpza`JX1A*`Q?6%p02TAUUS7FJ2WZ ztUg$p`P<#i7CewKu%Lc3`4B7_$wa$8j-b-V+x)yZ-6I-*R_OjZFA4t4n*(nZU-tJ1 zW$^6?g_3F1A;mst%a-e-CYvnr1K2CFIh^<`E+zpNKC?XEC_FMfmH8IzTo^;`(1TE? zLM*vO-nPt-FqLT*0<0Qo*m7U(*x+*)S886hN%O**ya|TyUe87Xf)5@7<~Nq94-dKu?u8LKg)h$0Hxb^KI7iBPw!_QjQkF)FGYioasIRRfU z3FD8iM`LzqhZ5Kja_(883q%Xnw{>FU$-inVgB}6C-tOr17rKQvUk`E$xd9DmE?E?` zYn(x5RY`e^zLmw6Bh%JORTOQRMDi+&geHdRs9^j8FtZ6j{pt_p7UFXnIv(RZhtiaI z)fkLjXCV5fW?DN_rac6si191BU!>7~x^IHOZ%2U5U&=p7#AQq*_lJSJc1~9~IaOBI zYZ-*Q*S7p#L}H;y?_2T>ZG{Bwmn=UPjj8_1d_v^o+1^htpjqLaHTkvg#m|BbqDT3ElfaT;*v|!`KckDOf z8-%a@4Z?Sl+{lM(6~qpt^{EcdopX{Ej4_;ZJ6hJ=;;5Q{Z_?!GZW!YBPQhb&RbPB-VhzV4SV2* zZW{)1x|UtIdmi78F7*a<01@fk;YSh-MHIZhkVvP69j5053WUiDS~S_$SRpF``8>5wiZ-ZLN2eacbAbP z@TY5ItCcIZSzfZPWO5jI8aW2IS8WdqEz>Ob-cH~we#SdCIzL^!?B?@WIeXyu2&);4 z_h7Z-^MG}ehlBVatlCk2gd92~K_atd*_GAWQx(17VBfNxaeg6i3yoUt*tbzc3u9Xp?q0^OVO{eWm+Vf2 zQoqwhwLEU`T-pnt!m(HENo^$rJUY=H?DX?0wjJep4zL*uF#uxMc4Ih=c}>fSkC&O| zk2QDC^bFQYk7V2H7C%e(I^R^~`S6F=1`r~6(~f^u6>1=lP4oX!mH!iS_umaUZ)BLJ zYk&;Hhk(s78=H3Zxpj4kuw@MaYaI*$}kC@K1VE zWF*%B8Ro9;X}1vRRN&?D!CbvnqQYGEp_fc!MGcH58)4(u=Yho<&_PY*PsZKlvEyn7 zx5IZit`+i|vXri+JNgIq_A_oRmd$UNJK8z`b9Z#Ohw)uIX@h#Li)IO?$-3SVZIV~H z<+ECk0(#6tf7%>zL;VqFuhn=Es)9rEa)9hd-BC^R?mG<0-?aHe)wJE15_Jj|?3;Ht z4`J~wRb|t`&A1=OY@ZbpyR>q(nd~NLa`9ddPfuUZGa47PszjWu_rS*$e{uz^=gw}>UYMvkg7LsE;gx1h38ltjXiySFR%@1p>Scgj zO9)@35^Jh0uv6S9uhPs;ZL7Mm$FL9jS!w5N4(l!+(AL875W*SW|FqICGFf?l)W0Q& zvJp&s1iJO|#27B#13#o@w5k_S4yvPc`ac+Z=l3xGE?v86*tm^tCyi~}Mq}G(Y`d|O z#d#!7oXR`uS-B;QH_tUOyP@ON^1<#n< z!8U}2)T0-jPUzOcVFjQjSLL=&jl*)QN!yS`2KU4di*!^SL@{N`nnD>gS26sxKSYw; zRqO|6;Tq99kf1-*WP86@nb2Do(4i!ua+NC_CzGp&ZurJ}WI31g$YyKGhYmVN&@L9Ti3;3TnT?nHAe@?ApNYY|Jsvt3GXJz2I9lr$K_ zP!8Rf+G@)q1z@W1tN#-U-7jx>!r#|C$rD&M?R$`B z;q5>R(F+*}aqEAFIQFf*t^zoi*Tug>#kI676}_Xr_9A=O>C*;;dL$O>RjTA1%8=l%7{os@v;dp*P zp0Y6{Fu%m6x5GoFamf=xbaT$(52GxfGs>5viJ^FPHGO9wG^ln8{ITC7FM>@{Pqq+HSPh8(x z5T1A0QH~G1d$4F&HsvS1lFC&?mAJk62HpD+Cs@74Q#Y~x#EUEtFDVO+6&zd=(mW~j8_~|TMa7`v z3;`u&vMp$Dj# z6)0|SP2$J&4^ECImNh_pP3rCj@kY9Lqm?(jn@03QEJr>LGW0dLHwR;3)J9&pe?&jc z8pkBq5qYLdu41`PEOH_n{iRiDaczWv$Z{e@F2x7UfueHPoZmOH#KJDS7PPx!z@8Wan?@rDE&A+Dx_u-n7odKfV>Epz7Wx;aDw-)JSoIx$W{ed=o${q-@U zb&rWZBTNcKbPg5ZT^G*%)~(!Eyu0UY!}F6@3Z%EFx>PNa0Z zJR`+DrHS{6hvgnm#Cf?uF+U(_s%ZLK+*nF|TN5|RW23irM%bqf-Y!D_nZ>a4-#y;w zPqc4u6gq;k;5RbN+e_r1-zc|$?3(`Hy;1&0h~2+?s{9LLN5TFVV&}XL0oIh;9S5>1 z3r-@BiWN2|HWKCgd~t^>K3oHw!KG5I1mT@MhRf3aR^|0_b$NWek^OF0t~GA|#80ev zWYnYV2br#1ib3EuibG`73pm13t}6;QNgl%onxigxzgDZ0c24VfXP><-LZOF|6wH4# zy)P@xN^H}(`jDwlqeF_--T1Z$Z9z$}NJQBTiBs%Mi4O{Q+70ThN<+#CK$23>WEf5| zahTDxeu@GCh`b0(%4>-tj(?siy*DVuj%MOOg9whSWjBa@i8=|a3hPVk%CCjZ=l$o& zGj*48a0-%IXCA`mp$MXkX^Y+!m7;o91eYa@#zJcBc2{!LSen+ zelEFj5q9seJs@q zk@#c|Q_jQ<)!sA_tz{)Pj9moAn81e&`ID}%_mhT+l2}{Ctb?B?lVPd*5Q)GF2A&B zg0-s%UqYV?^g|w?cP>(4 zvRVQ>Vjdm{@`yxhuu*|!c90dcaZ&dnWOHuLK!0iXihxsl_=e*XZg$%!H!RJyr-0fS zlc642Gbs9(#Sg^+{a@AL)?yg@cc6f`N)UfSj7&`&tA>CFP5i65ie4;C-7FJoGi%{Y*Z`DA|9 zI((`&NS0>V`OvnUnLP%qKQjwc-YF;hH6VPYI`>DyMsCAhBp=oGLpxY*F4EoCwx%9? z7K2ElC7TPUobjC(XYh{=G|zVT8}n4CGlZ*!WATW6sPdFXEl`!IdqOQy-D6;PbDnEs zk`o9M0A4HMNssSaz0}|nXpTGZMXocGbvg@95;_h>NsF-Eq@uOs6J}W_x)_;CJ~d1_ z(z)R-7MBM5!ScM&QR^sn`@V?YR|Udz9lA{wa?9P^fO2?gMQnTQ-d%t{_!U_f3b%Wf z<;rf<<#^tVo4ugqt3Omh<`t%KS-zS+&GA@YPD})UKGP9Qy2D}TL&r0oY-ZQ|(O_VX z?*Qp3$}|}ZT=Ow^%!i=y#&A{tO7xXll_bmFmczzusMoJxePliI$=S9otYY_16tcj; zz~Qk`1hYIJrdT%C*%#QT61@humFQ9U$z&2{xDy0k>#VPh8)X~ z&lCjfHLJ{tDE!UeNCpYFLo`M=0NY#F@}BSBcqgvf<;R98VxB>6qz(f*>-1J>{LjH0 zSl9J6<*%i;&Sxr(aAZ6nfvb^>DNK_bF~n;sZN^(%3g-|!?cE)05qb)7Z2?JEH#zrU zWtU?%)E^Vsr2P;+)QQUZn)fI%&q|!y;#6r7S@w0Wx?)CtiiW#m#0x*2&m1LRguLft zjllssfMvwpvf$JX`zng=_~JAU7jUP|*_-czJZ(PUr>EeDdB_Ln{vuX#Qckq+VX9^e zAOE74m6V;!lPJT{d6fja+$2V2P#^fDZtbel-tx=syom5En&>fn#q!%sAQ`{4_IvC?h_u5A{ zp5y8}TzJU9HYC~D&gFVt8ln-=;jE1F^WXH7jFZ<-$VHv(X(Nog?*+l6_EY&A*ry*s zc}LkvPRjL0pzqi%(s9BYlAH+V`(4=}u0G%xLvmSh3pFN;E0qa4u2Mf|!HHr%hdT9k1p2FVq zIK#i3lq;V4jgdj`4Y{t#uKY7zbg&4E)!yUJm1EX|< zh|>A25`#At5iLfZ*)lx!?*?Zbx%^?NEpHE^Gt<5}$7U9q*u^&p*mS5%3sUaVjs%k>teh@`I3s zu~Y@8nMTDDR}vo)pF&yc*Vb#rzJ+gHfk9c)JjRZDsNQ{A8V_suImy1c{d=BZ*PT`y zr|sqUJ;|`NIx#2xON^iLm3UX_J2bY@I2?hUI4qHwbc*qDV$-n*o(~U^YssmXcadsR zep$cL_OJO8nSsslxzG0+hPL+=y-7%!^+~e8V7e#Gi^qJfr3^{43_S=GWKIl) z>_7i(HbYyt6cQqd&;_5Tpt?775yBi#$e@qmDc&Qo!&of-RR6ICQ_RE5LyRHCoFP6e zIX(U?s)JYmrW#o+FVb8Al#`J}vei?Lt~^-CdBaL}RDJlc@jMzC*#5SlI}On$GkjOE zuTWDDGqOOhL;D?sWLDIZaEAFE`E1PEu z!7{b2HR9H-PUDz7!XQ!q;yfTBuO%g8n5Xb^&S(6zT^%Qj7de<$Ibh)X8hJaotHag( zp|p$3$V?nsMT>!_pq<(`T0|+E9LNzt`aM`<$TJ28TxT3ItW4u)D5unr+%OWBy z+gQF|G{Ubp|5|2!^GV49xTnCVUw~RLaT!Gst*Pq#HAujST16th5X%RZpMOk|BH=*p z98RIAq?Zz47%K<+tYTp;KOcE<%JhU?R5nQimoakXQ#Bwa*4wfLVY+9D8Y5*&U8YV2 z=u69T@w@fuBT9Vcz$M*2!$4JupZgnPpmGG`1a(Xa52fEv?L!OJ80Oa0mxSv5tmwo*Sifs~PcDdGc5Ao} z)U%wWEF?b~$GfZn&yy4WwuAL1X5NXlnIH-+urJMgz`5v6T!ZW(r|c1@^zn&8tL*8* z-0wWYAMx<;Zr|#>&|@mZq^kXMI&5tU=Ft4(`ER(<#~SL?cw08iSt)1sM~pE)$oVQy zp$ix&I~ajM_D8kSXXb`KkJpz*s+O{>VnWTX`)}E5CW{#2f{QE)eJ`^Am548IgMuYL z;TQ#%IcQzzLdM6O@R7tDE`MYcz04AwXf+5z>%DynzZQ0LcLPt?XS^V*4-U2Ey8^dz z&K@o-m3!jxKV{Tu^_m=A{35vMp*xr|Fs)l+HHVEEg5d{%n+LlTYK6a`er}r5 zbH`a#W=JWMzp4;i(!ptY$5ZW~;H8b7)a&;}Te&=`L!;tH#F;#1;1MU4#NwUJ(z3kw zy7tMY^W6%>X2bh4z7qy;`7ohvsnz%&+wL0#Ybp5{HpjTu~ zQEi-x9~iPhH6I^{!+4kZ=XzuICHy2TA$BGbWxp zwl+fy*Yz|dmsr?B=>!xHtO#r=^=$Uu)ciug&i(rWuyZ$d_5iZDV5YkoW1Ysom^%pH z9#Ruv+5DDb|D12iz`}s|-{qU_e``JckHPl;ww~%K705tf=R)Mk_}rnJKGo|}heC^& zxAVyg`{J%T_`c^x;l5r_oZT0H!ptC`C|}rcYR6&~t9eSnn;2uwBiQAX&BSZFzrClR zkWwanOSicBS-Y;I|4g?qAl>|cbYnA>mcfGvkL*bfx@0X+j`X+rH9C0Brvk^QuW$*Z z8%rBRMQ@=&rZkXl#wd7@jNOx%f77i1-Nb|RE!~okwWMHXXySuxBal=aST9o?GGMIvxBv=(=>3b3?&KIM3CZc8R ziGJTnX1_KTdi4OcCrTCN+)NGH2Fnq_!c8c}OGEN_ZBz)Vc*;t(E9jS41u0}jF=OH0 zi=Ckl%OGy#HOMy<6v&f(%)TfC9VuA*onMZY{d-;zYjBb!CUIOG(l~18Pr8(m?HLcAY*d zc^lf#`3@2F#>tQN>_2Ny`V@a^PsMb?oFBSZPJr4Ir5D$OQ#yMZf%wv#qV9SqQ4%xf zg^;mB9DVPv05hLszQ466D`tFSvG`gAp!S5sNLXWsZ=#i8DYMD}>T2?@RKo;P4V8Ez zK-?mt?4$%0qjEVSk&AV1=m42QWS+4ZxLzT16S1A8hmJmA1MUcR7_b@nkfad z#H|-uh#nLaxlhLsKQohaQGK6;Uei9s$3H7rP1lc@mLFWT5_@eo#FwC}I?5>)#h>8j z!;bK07M72TCiwNnU)7%vQRFjNnP?r%+dslOwB$t+sjuinY{Y=WAllzIfq>6NoAdW5 zY49baN+;(+A7SkU1yKHMw4B-PcAbbU!7XHLtNUiTuuj5G*{>hMzbs7f0_Gi2+ZEHdmO2Il)ANv zlhWEZJJ{OsHeas?(XGjHoFRx+no3mv$nM~=F&-1W&tWQ&j#QE}M1ZIr9avvd4WGVw zY4N4!4kcL~V*n|r!sOsMbMNl%+VzSsQBT*U;>6m8>+5MPucbR^N5{6NEka320?kX% z=O7Dj@nQL(a4TXO3S9tmeB5?z{WXnJNfS%{0!^-=EwOuKplBJDd}TF5faeDJtm5la6<flMO0A;r~;Y!g8=DP$O5mT5N>h=1;QeSEgz z?RY(k4%hK&y5BDhZ}jePe|&7!@eb-|Gq0GhmC3R$h0Y?X^ThYLH(G0qa@P9|*546s zU>{O$3+`)7KI#tP*U;&q+t10oUiv}Um0utyli6Len;^0~oHfqh1F>ml2zM8ZUnbW! zM7Rci`wQhg%yKHsn17m>Ws)`Zf5x@`{oJ@4x24h1ef8ML4v7G z>6-b%^~z0svZ{`KL-T;Gc06tn757HX_G_!uF-NO2%F;) zCAT=-Sa#!YbJon52ayOH&xE633_Kz49)6v#GCm7Hfkaf z)22UweGO}q((rxSyjcAUOtT|jgXOS+HyD*=e=S_KqatqE*pcwt`6$rAtw`wz5+=ie zPa)Nw029iclNf?gFz-kf{sn%;A&#mWADSdVLp6b^x1%*LZawA#qY{4j)wx0=uajT_}tje^5)YXB^^sjZ>H&M|iN;951kY?2lcHwmJthfRA$m$$u)};ch+s$AL z;;Hv*Dc>EGwc`EMMfS(|wxWoIfcw#=^##7E2s6|&hP7eJzOWE|)MAuHl-7cBYWyLX z@z2dsHB7#LTDWi8?TrAp|I}_bV|wdDWxP}VJq1Px zhiSjQ;2@Zoh`B)rr%m1U4(np2_31{c+nWy} z|2yul6qQg8PS*Z_@3W$~WnDz1o{} z`^aG0OmG}IoWRt!1|33CC^hUyn-WUjJoSTm^?R7KB!J0NMKY8g7_yH^RBbHK@@YQ! zvrtIjg9JU;G(K#1(QIZZbWczRJ{uh~x4nN$_M}+$nHTVlWn$kSk%UNxF5H1PqwB4E z#2koT{(ct#+!g!*+;QK%!nAUV`D{c3_oF|PoX6HE4@<#-`%zZY72c#X?zA)JESIrg z1cjUtqx;JPWY}C6Tu0b+gzY)hgSY`f3him!2p4H)fB1GAxY5RGx9b=cde=@vr@B(I zJ44R3Qa%(?0^yMDN^f{OSgxZ%*Tiiw_vPg!U0s7aNSG_0knZglKMi>>cDfbH0#Nm# zPaLE}E1bfT0Mt%D9__o!?4wf7n{S(!?+3Jo2o9Dqv1-y6RQ zH?q1eJxtq{Z&;qgXF1_)lveb*i!Y!*MAyt};Tr#uZENvOe%!(^B2zGYcENP(2^{(W z{rN!X4Qa=O87G+6@C`uPRa)R|;jEC6<_nnkSWxL5uRy}LpL1`F)phN({LJo9{nd3$ zYEa4)EGTyTl3UgkRO&nAFMpIZO^=|BKST-6XuleXnxi>A?dY*a*nAVSv{ry2Cz(m><)2ct$ha>^{XsT!o? zXA39`NEI8l<2#d?Hl)pVRCy_4ADkbXHH)IF#P>(l7E0<@0Z$*|Jh?s&(*_Ub5AqW= zP*%oX--#kbYqxh7V?Eg+LSZgJR2bwlX>n|YA?`n)U&J>lE=iice~p)U$3#yAP6zX7 zL+V}l0TUd`XPMRZ>dvKv$6Z>oR-nTL z_ZbWsZ}Z6_-F^Gz4+)3@kAOHGh{U(x`{zi!2f~u(-$mj-^6LJ#Sp3VYTmQqWGnbHQ zasEPP_G<R07B(BdwpHJ&faj#KfJn(zq~rYb@;7e4pE6o$jrQ^h!w>Pr<|8*z%kkDWSKDhr6+512WHv1 zuj>C0fPOr_@yECS@W<)CZUX%A?7Khwad3b?om5?tOgQ4lj*D-b>S~UJ zZ)xU0dMcM^njpMD^dKFll${l2L17^yKIo`5#6nT`Qcg&-J9;egMjxj&6wlJ30_fwG zEYD^v2DhCD;mgNa?`#GCpno2&EKv!B-B8VH_mo%xSNFCe;Oc(lkD$^ode6$!86fyf z)3d7czK~63tC9uL5gcMxJ}*8sr66lC`^4@Z*Bq?_s=)nZ1BQQynSeG;W#T(30Sxr=(M2!n`$ z1Pk1pXyvWwN^}0JB7Aw@oi>3%D?1!Cj1KjJxEhD_0|gRQ$@Ai`93#TB=%@^x29RU$ z**|Y1+Lyxi$&B+^I6Z{S>B7CCf0%PKhPmHgx!OO4rWYtyS~V!OJh z30cYr=j;@wMC?PVs2>F5W>7g~Iimz~B&qFj^|L6k;%W4HP)d~%1Hzi+;v4%X!oKSd`=^{O(DVn0UE%nm80XmYCaI3z zYp1b`A7ID0(e-M*5{3Lp7p-#BlZq)|Gk$Pi#^a`)#Z((Ta^mES0AOH$YN~SF?;7zm z>480j80kGCVN2ZUX*}zm$>lxth=JeS>DR3;Tn>w9R(4o5k&)NFx6=(a8{k7B%zlPx zFaa9E+U4cc79XN!Y8m;vC$Md()1G}JzTnChnHXh*mSz}25HU{kL4r3wem51z%*9&0 z20!e*{YEWP{He)u%^Ff-M{E63{+S5$U5dcu@eiGY_ng%A+&z=_-FP~y!C@K zd9r(bs-gF>8bwd;M4UK3AD(oC@wChaK`hi49xz74-`k-Dxiq>pfb{9@ZCGCc8&RIK zq?}3jNESpD)!N;)^dH5iA?QPE{QLA;Fr(!f2HTg@o>q3f*>x;x=g~+_1r2r>>&npp znyz6#h(DZ=yw0^Azd$w3Wi2Qstj9%9vxOWlw84(#l&`iIWF>z#dD1kus3;z^#}MU+ zU#IKp@=VSuE9|x#j4S62>FBbN?xRZ=G`0|ST-m@RS%oLg#NHDs`JmZMq|Jfo z`;&OVJ1Yx3zB>0fpDJ=QQ|a~Y0>klUgy^T4hLsciKWw_+1%zSnmO+qMmU*a`bC=6k zaHq}y^JnPBACYNSl?XkZhVuOV4kyaS3G5k#p&|^)1smv8M;qoRx-ozEpM|QjDOp^h zg+{Ka0io~%BxX-B)fkPRRzL23ZZdYjh2qHSuXX*o^gAST>7ri|psD7=n<)wiuF?3eft;cOMNs*7v&AnM48$h;;xG@6Xu6u`|afH+(9Cse=HfI zVXcDIysvI<b3`Q) z1NHg%-QPrtvrWap&DK`@VGQ=&L}25is{9wqHzS7B&T1`^(y&6F2BjfpSOgbqSSZT- z1re1Zl^Q3k&a4+Zi5A9Tx#7?SNTNaDV&(9g7R5|M;;cpu85QOuBf2r$IIG8h(r50#uF*D#5_@%M@+W;V^=P54IjCyqu~DC%Fz zNojUjmz$53#k256!+3ZVFULoJTy7Qqh+BSz*QQQ-1@m(ttRsRtg5;%5`l#^DB$kCW z{V)i?rn>*4Kv(l%8=#<9^1aH;>dJjVJ^v{agFN`*X&yqLyib?I+_6T#;2<2mZasQa z(Q3C*^cB@adLfbcv=3Sh&1|REBo?)%g&&0;3{6Pz*90OVB7mY>*A~Hb)plSjjIt7Dsfe7@X>LrLAAdK{w#Ar!^ySgi5aDD+{x;wJk;Cqx@llUmD)Hmk=VBN4<=maOCGMFL>gZd0;vDh&SaT06^0h74U=ZcZfRw1KpefvnM!!P_<}k6(I@ub&Q&%)&Y!duHQp&-FSA;iYJD+D<>_V%J!8>z zbq_Xi=fyr)&Zm&mydK@BpXcVAPvdJ;pI$4PydivD2g2j2QHGojccsmL^ZfRAtJZW1#C z+^iTXnh$!Rc%$-$N=}Q7<|Ad!IwuHQMQ)CbBg`y)D$!ZnQ{QdZ2|m{n*pnkuhT1fU zmn&O0OD4WQ^$WNA`Fy?vVw6B3i`w%6V^fa?590eF7bPqrtmP>Yajs}SM;$GM4~P}| zcUoVxx%Uot2yhei%szcqv{j59xVvi9fx-D$JR6|Wgh9(?Hys`} z>q&=6N7DE+f>S~JbmaN>?r;UQm$&~Y=3K}1eIedm_QRjzsOs>^I06tuZ(;M#F%$%R zGLike52OD^ocmuh=)Vx>vW2CG#TP293|+pgfPkPfscGmw0uXO2`W&IRN#U2*yY<+) z-q84dGhkAPcenL?nnN_3wc*Y6bbU7rsj#FlAwuzjI9&3BX-7E#CjCe4M*_298Y1=X zx@~7nW@mmK;b##&E9u{hB4q{BI@ed6UyDXk)#;PC2vbU^D}9cB^?uuz1!8!nud zI1kq_}1_l|3+h7^|5V+K{XdVn$zi5K_z^8~mifw-2cq%KZ==wzBahw5*X z;S?js30SZbJ^?V`Tz}OHHef8qxcmFIjLK&fp}kqL@}|V&FcxKakW35bZYL&5q$N>? zxuNq5y$IcDrtSb5PNjAXgSXL{BXWjKuO;@o8!X4V`2H)mk>cfc7qlT9!y z&CY6QR=mwTyVZ{kI|Z~c{9V5uOg=dn=s*HT~RW0YB)9&U*mg4H5Ki(5lQ+ z1vZF@SPT(pV-Qu0@*R%B*0juHx41X!ePXnV#)010*g~et1n?#PCl@pUgHR+>Xq;iZ~{T{06oc_mH zE%dT*w^BG}MQXq7?qPj&v5&WG<}D;keG9*;SxapWgYmS#XW zTCD}1&3SLQI?Sujbx;W`Cjw^Jwetd3cV+&(v~fa^ggaaEm&Vf#-J85tkk(*&oKT|G ziMO>CG$!Y-9P^6uE!{0~)`8k(CkyRGOmW|8X~2jmNcywzS?`Rc`inH<|lY zZ(H!ybxHNGZW#J)R;cw=3YZmYz~N<20JFlGZbQy;!N0RYo`&8*rmBQj@QR8l8%R!| zm62ghcXI*E3Q1aQd7R#6g}z0fgN57M%5xDq%&bNaS7xrs-e!e&!mN!hOZU^ZDIFUd zC#Ut#>qiZp?!pV`EwaF@@OVN&v9<)o0Uk%xr%;l7Ez3#AY!3>JfQ*#wJBl33474c& zCA{=Xjef(l#}^X>>rIa85`|yTwq?iz6`mVYkexe`QZUrz7N-Xsfv6+S40YlTY(jw< zcyqLLrcJDDyHRzJ2mM-=pnjIfSnO4Jw7yo_9C8DDGAq$njPJ;%PN@O!QBc;6?7bYK zw$>2GOJ3orO8?Q6+xgAII?25wYi1u(;e_ZtRHcUY3i-`hP~WdI??Zi) z8%Zr#`dl_8T9?5?#Ssq?5A!x;fVVMZt z?}j&y*ykKw;1e~5!7)ucL9unZ5)O>;8u7D_-THZS1vyW`RK~koj1SiY+%d|%5y{`U z@QcgfDt(X6r;|+-fgDutAMBPouN9$W#OFpzp%}o(3jLxKd zE_LfE1=xKH=fFosE&e5Iyq??+iSvG(N(xw_`%*X`>ijJZYey!O0#h;qwN{+YJdOTn z(atbN6Gq|>Xjma{HEM?wmiF9z;IATzI;6N?09AXI8%wEOZ+Q>*>M2H1` zFQPPV+)UHt-MLgXV}&1alrG+|9Fc0`j9*_0ompgT{g-*dUFNjuxcwkZ_6&XNR5wtJ z?IORuldrjHce_L5K=POU=m{W*?N>T*$U&NQu2Y!@HK)0Bv+al-oop31A~+2 z4%s#Q4NQ)Nlb}5sLCpp?uBY# zVN&CPR$?~LN^~uA2t+SSF0!&aa@HF}Fr^*Rbi31gis z^AB+K+dN}I2H2TD$j|kduaDfCmBV?p*AY~n9l9FZr?1X#lh3a$>$rWb8d0cC2mUK!Ia&YX^G$Uj+`_sTackC~y?~*8+!L zy_K0qI8fkN^PHYP!C~>5)5)i8cq?#t-)S#yu9E=;4zmAR;23->aCB(zcro0|5Jh)F z-FRK<9rV2wIO>1`hsxgqhs{Eq!dro30hVaT)+V9CpsOJhR+g0*dkw_inprTrn)$7| z(Rb?tR5yP2l39#*i^87ga*Xe(w_A$Fx4m38s`7eV9VX%Fc)v2I|H|6zd_HQ;dVM*J z=Jodc{ZN=>H>Xu>o*}WWg3=*s`Y7;jdbH^b`=sZRAj}i3e-Dv!8@gvqF3|;E$kO}w zSeT1>iwjcNmY<^lx5cfN;dws9*_s$s9RHle)mKX-FxJo>0*GM_Ll=rI8+{Aw&vz9L z4t9hUNd|U%X9~9Ru>qDt=C9*z&Gj#aDfDy4Tue42VynhS9!Jnb~yd5!W;!*%T20 zsi2DNL^%Af-+g3-=)~vUC?+*cl_#ZXXw8z?cL@a<*yF*o zsPBf$b}ejgb@|;5+I4!*>sw$w-#NJ%JHq0`B7PA(C-r&%W70=lTNOhjftespk;^c% z-V?4vOK~0HwD6IY#7o)?wedWl1+DWd)Lg^3KlkUy;e;5Tl zXyojL?9%QRz7;s~XZlpq#hj*p%wserP>St(OO#`}{61Q?F)8C#_1j}+H0IE4H(H5P zDa|*QCfb`(uQiawb!RWDVxGL6E@&0n1_)Ge7Q8?rg$Ejcg$s@X4@o1HwiuU5Kf2KeqZPH7(5H2&JtQ`91Y!xZMEI;pj6dv^DJz zalQNNRl1?1a+ zuQv&96h@ zhAUx6m$sp=v=MwZwqw=oIXU)t1#>RgJEQ}9Q#eMi%1hvKw z0$SltW;#x3Olj!~{P6jfK>e4D#`HOYT*v#Q>EUj9hfTf<3TXKq#ak?fcbwj8xB25| z9RwnCLCKoD-%kdWDbJUzX>g+wl+jdrT}uHfJGm$gC5)uF?=QW9OXC%mZQVKeZf{p6DPbw~(LCWSuVtQQ3`s_;}cAVhLSV7!VI1{diDQ;YT>`o20F6cVmgLpRk*D9B$#|H$_ zNAgARXh@RH3U7ti>0=c*W&;Swec`y?8*sw!8xg%I_97m+)1(bp_3l=QM&OsaJ z^9pjx+~t7TcOgs)W1xU;ovK_07gw;AA(3E{H!n@76a6ldfUGDU=9i#o zv7IVq_UpDFUO^Xu};px$@lBZIy(4l>Fz#m*Amr=QVXig*|IPY zAh-s1cXxLU?(XjH?oM!bcL?smgUiONTs7*q_xljm!VZEYe`7m#T2vOez#Ql74qYWRS zsmw*Wpf@4AbsR;`?;maG6638dvD8<)jI|6e&tx~9wt$;#;(s^Un0h^(ig6CP5m!5m zWZ(;yh&K3NuXsPNn!#+ezI0H}a1!}<#GHWqGL_#OR_04B(Iq_;40+eyc8mI)=t^y_ zMx`T7zT4OY6oT5>Y?+Q7t-NTN?to_uRDkU^rTM1rxUn1Lvr_GZz)VQ6)^`*Tr z3Yr{o7Wq=JEo@*v5e0UB($EU0;yY*b{%iSm31>ypI+_gP8pX!fVsr|vekQ;GTRcuz zgZ=X^qrLI2998(_HUBp|2f341?8`&hC~s=)c=hs+PtKwQC62GGEbF{+vKTimSJxL+ z7~wqLW%h9oZhBXHkYiQdR+D%{y{rE357$qvWv?S6;UhGT3^i>m^Q~p!(|Ns|9?e=y zn{RkTA9kNl)O&7#v)xKtf@Qy7$DqTCZ9W%6RaXm#!?C_2E;oAJ?``cGpFi6*{A1~v zn%oJZv+YMnR1w`^7o-MTxWRlz5_@QDZAnf#yY*j z0jt^M8&|9B$q(7Z3j^3Pj@OURXjFD1m{~eL+m7On$-|L@e=0C+erPVp^ z39VpV${WpA%BUshf2i8l8&si(%LMpfVP{6C)c{og-& z{olrW{hw~idOuIffDIkrRBxygXbvhnC}jk6R}eVBouz%h4xn%szco0U_!x9BL5OxW zJ654hv}PqXA#eG>{30LuMIio>$%UF`-7C%8^i!beQo{N@7`xN|1m*_zY=yubc&?(mlzJW3f?+<#3dl7YI=GD)Ke`&BCBc1UvQ#4#>0?8XTf zjy{zVA86UbWf`3CY89F+(;-j3kJqm8W@KdXLj)DA+go3mD?T?Qe!%t<3B4L_i|Q8o z*Jv~YaKO$fyub=e>X6~;js>pnjmB~fjLrYRaq8vb2M*X-`rFKqYy|4-OX#nYxBhUp%Zmm<@@p5-F2e(=Q_ue5Nrvszm?BIis46rGzTBj#f#y;AT`O} zntC~HzMyfxhD&S;jLhX&E%zK;PQ00!nTK@_T<3HLZ;bTvu1iFY&Dqh+3s90h*YC}) z15lF(H_(L*#nFTmg+q!f_fo6^1g=j*MJvDnM`SpzUHaP;JRWK05Q^1#N{C{->a1UD zH~qqgMOL@RrNntQBW4?eU>6Aaj2oo6neZASjBe{gQO3d|E6Fba=tf-1F~u6qc{wnc}5ekw}=|yBJoQe!0$#1ZcF!9gG zm&68_b*{sbh~pYve1LX%kiSRk#->-@hS^JR4bR0x9bO;PXbF+St+s$oD<7%F>P<0r znF@I_we{JWRiA+XH5)#P7=+D54Zh462XwB!qht@kFZ~KaBoesVB56pG(!`%v!OiM> ztt#VB&8POexIYreZ=!vms%seQ+ZSM7dGU+VDT7``g$+1JJwOUR(-)M4k=QIDNmJ&3 zN3B3LwC&v>qfue)F~<`@8wpL7Uw0USoMp<82;*8xqmnL$_*HzHo~$-unjD2HbIGsY z9VnR6XQL;yrcGJuPIxqRWPm$wME<3WlPO3FLWE+vm}XI4Ukrg zn&YU)LCQjJod48bH~wP@uNXvVC=&jWko^JJE`o~WsecdLB*zD&iz+iRhh{8GN zMO#%az{aDM+I7|LaLZ*VF|pT=j_`>~c7NoENu$kN_x%!KO6uqtM#~f*PPh+D5Ob;b zESHoLMa>mnckTL`J=g&}C(&~SW0;@ONl#KflaPs=nuWp+ZyP}fagTL|v;cX6bWeR3 zQHG@UcD*j|e4dPj=e|@`v=dvnPQ1gb)}D8*j%}+h{l;}ly+{6%URble zUfI2K0g_Dv{TGSva9{1b{^TaXv3nhgX>nUXNB5dXX6x&moo==#4~BnTg9D|^_A$uL ziX``d0~-M&W9GiYaR@+1DAeeijw2_Y^@UZ=A)k`v^2`Y{zjTDmozz5osh7^_8(V>B z22JYhh=Mq-mhoYtw!?u(*30VQSI(CLylMhFhwJd2wkaX=gZ{S{1(8a(xjQM)uN2}aEj1lGI4bB z%UBY-f|~oia8r9s#g9`qKmhvK%WA(U-58T?yPRxSj<9VmtNS<}w=y-9B?nu1;6bW$ zQrvk$V_Z`YZP1>&q^AFa1n8)KW#!Wmh;uc*Ho4k9Df;@A$D2YP;n5BMY7b^CqdUe- z}=nx(mGaDYym$XSDXK*(ABJyHqIH2@Z0mpY*w~5LtRvrW#g|V z(0+GDgtwtJdOg3KMGV{X%>3J>lZ&+l-xmqs_l0$UvHK6^zDXy}SkQh-x^ml2yYYIW zdt&LioV`%yQgcO&U>ashd9@7MKqf}*$Ut_v(hPPtG&N=Q!3*`d>s4B&omqRIFNx}7 ze`8O&s+O~nZ#%@K%Wd_v=V@{`6F4M~i$G&qbSdUWxlmQL-9}T}{k<0q6gyDFj4Uqg z(jsZ}b#|)h=L}jhv7gp9LK=0h?M&zh9&u9j^ydmWW7f26gj{=KL4K@d*&NDWtG}GP z0MNNd;5uU8Hg;{c7JA?O*&DSN_?%wyf4j`Gr`PjwyE(nW$n$l*8NH(L_vU)ul~1Y@ zxV-50d+uD)|G2#u=*jWj}QEI0;hQt(peYI3l&lP3<+Bglt04!As@FKN3)057`h~?eNq_$)~m@o zQ<`;XLi^7(^ktzZEy{3gwa8E#Nk)_Pv82L6Ys3=$7}EEp`X? zS?!Jivyx`v*A-|f;**XN#6L!51UTMw-p!Fdhq{^YLeTVrQa zFnSLshO3x&ucr8Acht-%4yKhG(28IfS>K%mxK4Fbhia!CEyGW*$R55#JzG5gqvfV6 zHWYXR6a?fiVfgn{q6zrI@t>*)=B6&H4kke9K+4X{{y!uVKySGXt#`U?yHfCnn2cpM z>)M4lOX!lDR*{s=vJ@Z}E^ZKusZ=zyco@HluPLpY){EL}nO5s=&bTuiKMLKVM<(ZD ziy{>$|p)-m1o`eBf7{p`6L_ByWv?V`&*KbVDv8}N~v(Z zklk#npu`wSv3tVuJ4}CUR@96|veG&lc06!_5eA@w@cVn=O2l6UVWtTLs33sKQZx;z z|HwuNqAEHn`O(q*S3$rjb{YGpf3y^A81~#H`Tb zUkXBOs3>=lh46heGg&77H{-wn0aPmN?+I%w12^f7L6=~i-?Eh>QRI?WGaIjvD-@}Q zL=$<DM1G;WKVhP%{Lk1zM4mbfbvZW z56@weza=;+VT3aOR1eapDiwk1LCjXo=`M%1KfzJD%w%FcE%~oi;FT2hZV%EqEU-^h zUSgP_4l*JTsN0b#H5lRYZZny-LN&Fq(uk5^L79quldvk{P;f~yt}M@EArNW=b~NK}Tm z9`wM?Po`2<2VhSU?hT&UnGW^w!;WVa(i))Ui+(^)=ZnjOhyUo$BVvy{^xin#gKS2}0#1^6#>~hPy zS6Unt=pucZldhs}+tv*gYD=a*;Y0F1v z?Q2_9tHeL?Ypa457lMV8RnVbDX^MG$0unBn90HeZ=bO4x1r~%d?&OG>`($n^ozhi( zbJ^K4B?&c)Iir2%O9SA^T6nZ_hPG_FAi|>w{UDRR&9Q6J_TtYMxc7PZMMMtH%K?W& zirmCG>vmy%0vILV@LTdVzBy)35T$a)*35P) zuTitM9zn%74?F0HJXFp7L13XMKZ@;bzQ1WNLB zUQv`LkmsiUomeXx#7WEnK+_${&>@RD?LO(BgX;Z+1n9>!bO zLx!8fgE>kFXFIl(I(yl3OK3XXXWt%GSTSAxsUZk20W}05eURn325JZgjTC=11O}jn zkbAXElJnqz@|}H?J{k zGWuxhx8i}eV1opPxS>_`ON1+Iiz?Cl{~xwlCqpPr2zAWAC-bzKu6#RpPhi zbe6WQXXEuTn)Pa&sVl)SKxWI7QHV1mUqu^7s ztDwoY1!iAHVjEYd22SPC-8B_r4N4nxL zSDkj7y?ldsW~=}6QtPLW_wzkRn*GQ7<>c1Z`%czp*ZXbf)*D@%bO61f{BJt8EShlL zr<^PW)!eLyj-T-MP#?)J?BQgrYh#x@XYhzJ3P1BpSu?tEjHqhS1k{&7RR(DUB!y;TL4MG`>3NX2C}clP-f$1)s2(I?z%}`o z4FG8{XTHz)Z=d;BSKJKWAf^1#D5|3cs0^o&!g^h{8P(=;daWL1PcieWB*c?*E@T2V zw7uVt*n15~tIfUW00jfU8~1IT-noirxLx>rz5R}k*Mp4lq}18aB@L<)vn9XJ5A}Vc z=g#l~q1+giyHi)O16nVnO~lrBk@QAlpAs38tx+6$n9G+{#;dPkMU|3V-H|bH|47w-QHjv!=X z^Z!T_UX>kG2_=z~u_-3qI%j2ensXK{P;lJlnka%v6iJ2?%YV!-1Fxi@d+XgP+$9d7 zci*k@-6=E)-kP4;2#9Z?R$xt9kmGm{!zaSs|9Mml zBf_E)_l?KEN8ybAsvQ!-#StS)rJR}7qn;7scQ{F|WGp?lrDC-H=qIIrImefgHW6Vs z%!e}Ce+|}#fcV0Te}k^y=d}4a9HgJDl(9Gmi=5R&aN7{USwqkwH8w=a20zPhi>e4k zq9N`&$h^6=LY{J1>1PzM$zbx8{*YU#kX0C+Zg68y1Z7+@NtD`1NltwI+-zl>*({6z zJ(84=IE6_ndEyL0LMkyb=qeDLtTBcL#Z>0(q9Vk%6pktdmn!wB5OX25W;x>3O0 zv#r3tdy3vvUsGZc(c1sZY)OqX`6eXb6AOujg#+qK`iN-+lw%0Z8DRr89F4Jw zqH=SDXWuaEUSxrIoOpVlnUe74vg+ox9Mk;49%KDGB;=v~n% z@>-JGq{t?VH&KqoS>Ep!ws`icn;brdgpDs4d~0SS#ES=R_+j@7zJIX3C@aFa z+Vh%3QCFw`5JNdF%(8kTjQYtuH65nkU&)Pm%H~4Jz}HVrLL@LAgQG!`G)U4gqhY)U z37=qTQll_#glUIQ#e#mLVus}DdsSh=v?xro_NYq-_rr7BDTpR!Av>~=-UzTAhRLi@ zL-)Jb^lBRDZKLy84GUp@CHfq0+ z(>dn5Ex)mr(d8A#bMmX(q@Mj?#%3JO?Oqa@E=wzmy_UqxJdzhnahCb(@a?-A%SS1f z!1&AX(@7D1DjHm^7pn#DywOR%gvU%l?dq1y4#D=>QaLrVlF-SfH6I)k{{td=3h#I2 z$$j8=NcT-SK?a4Ta7EtmHL`DKmw0P$hI@9RzibUpVi+InBsH+Pk} zD+a~)Pe*a%P)h_0P9RHY;PGhjzdL;f6m7gWrj5LIG9XxdIhfaL`O6Xz^}4vZpPyIy zMn`8ymDbzQa727v-R|~B0Ru>7kC0pVN7+^;J=_me-b zteZ_0XCd^PW$yT_7^egr7^l;}aR=_Elu62Xf)&!LEe5j((5CVBQt^BpP7J)@h0T^K zE6F-0EKCkm&A`Q8`yf137?r8`gYAo`5u73P!n*sCV3sCjTidQo4jnz1RBk)P<)W6f zm$BGqPL(IMP}IT)F{X1hqH#@lzXnfjuwqcud|Fp+V1d@+)fP|a`>ehWu%l?6B-C^^ zi$CJ_!ZIDj^(h@0Xybv2sN3{&z7J=p`*>Se5b*ol(Eq&O5ZKc7 zeZN>(^Y8V4eSGwPc@Vhz`19fJ4;$=M4`)u5Ui$~PbF<@8M1*p9{T|P%ACBMGV1t=+ z5FbYCM?rQ)ih*B;@(|9AY*DUJSiqISM-&&1F6I|ZlBdpN<~x{=Gatn^?|4Q&D&jxZ z%R#Xk{q*UK;NFCdBK825UF8>_C_4-A2Xo1w@Sm4@yJvcAA-@m3| z+U@}U5Q5;aLbBfp(k==hD zC10Mm1=9z@{9iEt_b?xU^M8!({qL@VrJd#fs0RH14G-ws?%xU*))hfwa1-$+rrIn;kS z32Z_@wZ5=pFNM3$-a9E$ly|OOq1pwQK3lQT_P26v3?hBt1HFg>a;zfbs z?7*a&U=nIZY)@!+evz*s3PT3W5zI+5fiJKk*sZ3B#06^z3OEQ0R9yt? z7H2!=6s{AtqCIDRpxh z>*jqSaly{=xmeq}cEuC+C9x{1Z+6LV-OgK5Y4au-->Fhbx|!|TRlV=m?LG4)k}R3c z?gAcRr8-q^&OaQ4x;Z2#WXL7Onjn6F<;rc}>g}j@t=J#4le$Ei-@odg#5TXqs$nkE zT7~iElQB~`biduKpgmVq1SA#w zRR_c`U||7+mW4^x7H|#Uk;8p}& z%#uY`&aVzxliCg(OO#EIh*2sx4#o#22VkI9i1Vk~D^|B?8Kf^BlmV#QmF(TSeSD6) zL`qhmo*E97ffA&V;YOu0lQGu7*3$n`ZZ)uAZ3*{_l43KRew#yo~jFRUy}$i?pw#MNANwn8VS|sh^)?d;ncq z&9o%I=)l3`Frd1@{NaH2;QsBUd$^y7HZ%!z(1Zj)9eDd35I9R34j{>%fuUwA+K%eJ zS+2JGS*jU7Ph(SkLd!25DLpAP-d^gbbNohDV3J{-I_s^#gR2$nG)%|o-WBT$#B^NW z5rkAAruPjv9Ft%E=-1?u(8sTozlS_}gyl?|&EZ8xuuSbj$<>T>0W|yUL|)2eUr;Vf55JAj!9EA}80+*8 zW1^XZbNWCA83UrpG#Pn1?qEng*a0>|oU{0ZLRvUgm1GX^QC}2ddPoSXq{V=Hnf!#9 zu$glPB`z7E)=y_Q)^`dc+!F`YTY9A?9K+Bd)>)Du#i6%Wd0kPltnt?!!ETJWlP&>uf5heU7EZ!wPCkHRCfA5K@JBB_zw+5U(Fo4#p-f6KOl7b z)%1w=D(e?+i7SKcdCP@n*Sd?S{^(M324CWKkEzmcGV9>!dBFr-@~UiVvnfAlOtcP* zo!%y1pN^y_%MoNxAPsF_*YWDUteLx(mE|aAaP(#2y&OGB!IrYAZK!7kAe}+?Z5T1! z3;jaa7`clrtQfvCoJp>z8An@2qu6^GUs=($Xg*;HPCHPfjk}F(7jwVc$&>g5R*Als z87jDF3qD=;_WIt8rZIfn-$$2i@qg|KNcg{uG=B2o``(4mwi0x`tt}NH@@FSu@;(1~ z))(-5xQmYEO${2F&f~>h3hg#=-(eV)7c^41I2BPFy@aljCG3f+d?f7BHQ%>s~Qx z3^Y5cbbC9Xi6}S3FVGM6!l919MQsbtA|Kd~?HV#5;tpyJvL8I8peGQg8g(A4Teo>9 zhntW#SgBv+GLHoyXZVN)Zpq-dXfZEpo^iXBxioEh<;10`-guc3!Rf@)$%M?bT(ICR zfn}9WC#;Q~AjGcybnU%prQyVRq5~-WT-7RgKLn@3l3jh>C*sPuxWvI$Y0HJd=clf~ zgKpN z%!^}0CNV%CvI0-N|EmhPm-xEY4~YDK@%`T;KMU|h>^~jwRWudE^yS1<)a8}F>x(HV z$t%$r+uJ$27~1`(gy3IY!5aU4A-!3&^VPD_92D6>Qrjs9#uyZXw5a zr*XHQe*pj&+AJI(xUl-nUhb?#HZLJE=bswEx^%$xZ*p(*ei@kMA9L;V#%XvK%uWur z6CD2qMJeTt12y!oD4`uNN+l8sL2%%Jx> z0Mzy*r8s}X;P>&kwB$zSOJWK4RjJEwpb;=mK1PMJ-+|oGD*NA2!plYSzfr<(9;A8?@?8k!dPOS1Pjj8e`3!)`T0ByQl0a1e02E5;rq zE)Wa{gEEcv4AQK3et>f9S24_2VK`1QG-X5LC`!fC@tAKh@f{R}snFexG)i7al2PH0 z+&Po-Ja}dwYh7z6Z^snbKa^IW^?IH)%TNiWJUJA+1}ny>7N&L(bs@fhWt#F5WlAsa z^L!0Use+r1^C)JF*(SKI&U{1dFUJNkNQtqh})+*Mf1_KA(JR(NZ4Mu$-r-S%s@tv z+vyNb0u~oA%)B6_)`Z_6k7Vz}?11MCWCS&xn}_Si*(YImVxD1iJbkL|TgSr*+Yf+q zyR{Im8FbC-S2%131T<7M;v`(TKEpgo+R10=cGB(SJCRAd`k$4}Teh+chN4}$9kP|KlY!Xn%(!Q;awW-8CFAc*)= zi;K4(u>?z_Hb5Ab@Qn=VJGo{9$+-iH1|oD(R% z*Q3{qb=4%XI;Y&FPVSvTiap<_|1|~LAZF?$opyv$;p-4|klP@pA?{*aTrs6!+sr3+ zCZg28I=TK07BV4M_qBxyJ55Dmot!c@$If$QYu?yq|1(&K2Q&rf{>v0V0R{`}XncUC zK=gnQ4yt+yE_;0Ijzh4soc_E6j=j?Qcg5DuU-zFy;=x8gsb(hjP91Hk7P|+`jHXX$3J9Y)=B7iue4X)D?t4uCkwmwhp6y;J~Atrt+Ae}Aa+-|Bj~ovZ`u@2_R8 zb^6_}&++cP?#;tK2Wk}Ncf zIjDBl48N~RJPH*1?#uXSObsR2TMT6&t=?;t7Red_4BM}@nKuw_F6~2e>Wz1FK zd#}5|yt-yMd7p!H@ep>wokeY zOzr;#)PE1PZNL|v{}gIXOr3!Ne$W5w@ZSIQ+zCrr<=8vdV$ERwr{^vji>X{FtYnPX z0-^P789+ZX0OoDsz5KnQ%uQZw7X2d4a`$1rZbl*@b2f%`Wtl~9;6Wk&s+(X-Aj$`| zrxlpoKR*H{_ZP4T9)xcLIY&pn#2@AoDWD*FLxo~3fQwN9lly_{r{MnklN3rdurm57 zHq6(4VR={Ex(R5ajmTyAQKGe$2ufdHzhK8(iqKPF;d!8nPs0+q2H$57apMiT^bT8hD0f9GYBHkuh}o!%F~298(h{iG z(v7CSxG82@%7xPeUQ>goW0^{cM=3vvWXF;wC=;rA7)WAjO!9#+apv#Al_ZjXnHH7y z#RZ2hSNYJ0U@9v%7>gH07nOb|B*NMQ^hHvdie6ntrEl^j?(Thk|5*Ho>)vwt_}c3L zM?tEN7F=ZSyL<&4y!o$_bN?}TH$UjA_YsocGv@*a?~un!P^5*mZw%9%q+5vF>Xwqj zP{C*AYJKS^O}Nhn7x(*g>Sj0rw@H!v+%h&u<4cDI;0T z6s_p4LTYqCwhUug$9~2O9Bs(OkI&IXc&${ z7Zv_y%qS@QrU`d?6Y8pa&}Arzt}|?~gVD1R)n(ZK*L2UiG!*=W^h1M;yDn-NsT0hR z`Uq8Baj8;NC*#be#Z0@>`igQ4RmXEgTl1;e024~jH*<#lV3L24=+X!dtRB?V8Jf80 z+e6Q21Q2Cwp|K;yNj3D6SH-jdu-lb$1-pGDjyrz`Z#1p{9=s>`ah5C~u_P7| zQ|OIQrbHkpkYypl*Ks`JAtEQ;EL>lE))2ms@Vcl9m5eUN)OW28o1MUG78~Xblgq{m zk;`^t^P%7>!TJYG2%0|mvHdpkLFD>)0irBPqI|?p>}*8r1;g;=m8(HBN&5J9)bqP% zo$`T=t;;_dcat66S`p6OcuSWY@~JLEr-z$16il^Y^I0Uiy_+0*Hym2GOSLba8%vw= z1WkR_W)Ta)hIoZxlCb>DWq9Z8Z)cise7BH`KVzDH)O%mC18wx)pT=v+?#_Q&v0+CB zz9As}$dCP51zvmf1yVc-H!jbilBRqFBTR z{tUF;nU`pbrVU6OE#Sw{L>w-BvYuBLfziE4yy`r=8f+Iew=SinP;BMyf#+MWIQu(7 z`4AB;a$sz4MEHuC&vzm@cYrkl2ecxRF25u)Ho*1SHc5`9RibPKZb_Z;55Xia=(97} zi2sWSN)Fc#RlwO73~>6Mnh?FhT0{~{NQ@ZtDP~V!LT^c?(S5?h5O~TZhbSAY22ovt z(rV`B&_?(cRl;Juc8w;aRUW)V65NX`O?QrRc{g-Qk8_z z2XXJ0{g%7qW9X_*bAxp_y?%M?)dI)q)e^^P{7lfV^EqXrvb6yPG}5|->^?l8pw5k` z8RpK}`4!7@skTz3W3D{KlxztON3)GM-nsC*)X|fyhLj;a$C9D_Q#q>-ECBvQTSoxy zukF4fj*J(D=zHNx~y%CR4?+_;L&YS$#j9;w0gOD0rMQEyiI%(gYVV>>;UZh z{6mX=^t}FH^t8p`cYiqD+w-=!#qjx1x77Q2cz^Zb`CL{<@Bey|RoCnF9?tOj7(e~- zzBJ9y`}8uI=Knm+(Hkg)`E7vymz;{KS%xKRRpmWwL3~B$v3kfe_nh}){JNQwYn;XIJkNpR6AXuxk5 zj6)x9IJFWIk1tPjc=ziU07^1Xx#yhlZvC)8O{{cKYkMwxHQ(RK1Tb%ADfz0+>KGMg zQ#HqCzSr~{v{kzsZh?#r@6C+J!fUD1Mu#vq*!<@7P0<@z82z@rSC2HDS(AJKnV+j( z1@EO0R9KT)ANyqO8kf&F*ftg=%`Nai$?r( z0czk3efHloH1tQ*+;lu*EpUcT`#VD~eR+5dI`!`O=Q*9U!V^LT;0*m2zW+V2ZxMlj zF#o5(Zei$bA!2W0`k!U!v}~Q%+K@kL^#hH~xw|8!R-~M}H>FP7;_7Z#BUxGiO?kXX z?cb1t!M_CjWCIXv>4NyoMmsmqaiETn25gvbwSzD}?@T_AF8K53{_Ib6V$YmmAopxe z7grEt1>wz##mq`J;Q9_*3%_hRzs&o=bxHwaeTLb?Zp0P)f#=U1C$FOEOmm1roLV_1 z9I9eoru-Y7F~7}r%^zZC%%t!JMNK9@;!+*Sxa)enNg~8%+YFM%SjKW zJyWkzyzDv%-0McMN?(rvAOG$7T46@uYaIgOCl0#KpRqOw!?$gQ@Ni@RVOc^04Rk3; zz24+iif}%L7SpCPEH>WDF5K72R!sXT@M2P|J$+-Qw>eDNuZuAl{pgdtLbe1FSLzpq z6tlfz8MkC~Qm0md#YLmb=JOWJ>MK#E>wi3^;KObML_(16Mkd)I_srYKkLCjQQXdP9$8`$8R5RZrZe_&%Z%1Y$ zv_4CQVBZxAHUBJa8WiZuYWS}3Tgd01%AIB4XSaO-F7=$=TJv; z9B9VK6!)y#aO=0EhQv#bXBSCHvZ^vz{vlTl%P~KqCCk7CTdpJSMHLJt`)_K!j0;+N zDz3)C=5*^j)JJ};tnR;RHWcao+!i- zOJnrg!z-QWIm z1wK#v7LY~YWxzgOUWIF71=o##a`W8%2+g~J=((BM?a>{(t67+&H?6e=C)whl zY-O^mutHFFN^q=f?V6-j(jb!ux5=*RS1;Bo(KFrATLrY@AlzUuGlG4b!Q&eP1xtWc z*QVE*Agn_pml?%prmIboG&_Q&;mhT*=?0lS>sO2)s0A*{nu`5sYCi(lF+KBP@$u|) zY8vPmRKmjit_X7R?Upz8_NZmLj$CJ)tlv%)VCzSe{3;vdgBz*UK`os<7zFK8_>kT1 zaZDr0OY|=I!ELm4EA*b%1T*4|}B+Q{>^1h$n?p*P9LlZvA3gERJ zwv}zb9LLU<4Omb*QZ$4%a=p0_ZsjO2LPYo(AWqP=#A{32#PH*lIwo}deZ)oUQc9E6 zdJ4ia2p5?KwOlA!Sk{1Sd$@^4h=MV3vn_}~^b?DtF^}sX*oFFWG z67XTy*{tQy?g94F>6DHAszZA|~hAL-$g2T(i(v1Fx1U2R))$Wmcvz2sW|S4#QJ% zx$bYd!!m-4vvP7^#sq`9CqIsI(R;wN+9<=vQz(MHlP$HYa_v4{QRU1OH{U@35OBf{ z%)h}hOOfwkGo7v67{E_CiI+vxf@y1Pqu;h5S@yBcQ?kA+w<%k5w}Y2DJ?>(~+4Rxv zdB#m267f`BRprMZ@U@{sIv1wtjs@5$L>~z1CdEj;!#TwvGb%XdM^x^QQ3-};YB;K& z!QjPYm+r4?_ZY2PZ#u2_1_dFwN+*Z#Ao84)gXOz)+-G8Oq04XzDN=4o=j|Tn!GUD` z0JembwCXB!>=5t(at@{oz{c9aYc@s^8>8$rAkpCsMYOrMGg|GhGJY~)3d~Wmf9(*c zME`*tKV>{2mcBPzans`5R+i_@d&Cy?#Ln&GP}tn{{)5f|&N?*uKBBB*?vfR5AQ&V|@-mxNHMpurp**X=MN=?FFa;Ej>y zP1-G;l!yX+uP1`X>L?^|pX~L< z1rASq+S!&u%m@fTZ+v*3%Fz5$$@39+-OyP{F=d#xU#+B*;DfCVOLd`Md1Zqyz#a*+ z*~umwj)&e&pJ0jIXD8|?mnI>v=SX_6@u?@yi5Ve{HA#o+>cNvhGo;0Z%wzD^tN=2ls8Nwur%3Zs<;%8|5eGqgVUQbGH)xNICw7SXRnFd zXU^U~Rv+V$@gRwrY zvOaZk6Z%t)xH0z_h|9C(iOETD4Op`fps>;=loHWZfd3bYwzp5M7Ho5**pr?+~$!S zBTh8SO%h^n={D&ZDV|bQ+D}A5)2s{MFC2s#|`k92VuUHEYReSba0)RwMY(@ zOqxi^gcYZ;OH@fInosXNY}z;CYFBHPTggIAY2ZlH!t35x!}+kZkKYp*80hZ)gbcE# zjwONG8xXj<5EEr#ij2{PF@qVde!P{a*{(;3#Udy-#ZJAO?!El2BiW55JbPHWrp;YQTiw&0l0xWOn_q(#w99&MY-y) zZc&rsu<{rt)g25vU~jSFAL(iyhxs|AECvu5%c$@ph=1!u%@6r!8|;EB7mJCV@c=bU z;3Tty;K0i*+~5cz@NU$mi_8+?p23qy&;do}A(#rI@7aJaZ{aqS1MhIhSk%;C#ucF> z%PY37Mm{{XLFjDl_T42o&X71Bk6TfGjDvPB0p*f|-YN~XY7yI5L!B_xNx9adLJqdv zF&b;3VfYlPy(k|ttOC-PzG^jWq4^xNTnCCX)1wrhSlGIXkcOs@cBY&+UUC?I5l}rF zmbo|odTF8v_cKBzsI*!EY}Xd0Tb*@a_sEn&iqen7BsWaP0Gp(#Sf^udA&gZtF4POx z*rHGbGgGmMPZg}6>LX=4m}*btQNip66#8!R3bR_iLPueb3>=OdYlmQO+uy*NEp!afQFgl_rZF*^>5r`R-c`j1|nfFN8(r zlHRquN{O|l=crwN2)J!d0tJ0v<6h0s>d{w__dbDhe7pM5@DbDWC&8-igT<%I%EJkK z*qe%=No=09c9=}|aDCBPfn>fNx941(P9*@A4>H;0c4}d4B!=Q*_}cfNu%iJ&ECP3o z^8GDsQbNC4!^Y_kaX@GOe#6NIn)e;7)GB z^k8C4?pbrLAGe$8TXVW_P;K%>*|vXtE*B|UX2E0gU*eA}gLm43u&QDKwE7h;ChoUXteY|fjH(qb!-+SB+^(FUur)qm3 zF0Eb~+N`p`YatjvsNy6>AEY=g1*G?gco5*HCyVYrgq%}9z5~D5YNnk>?a6<1^*q=Oo1OR}k9gOJ?14h!^09%A&>RMNIweQ=AzmlZR#f?m1mpsnq z3L}|Plnm98cq~^?WOgirWqP+u&w|0en7+ae^h5MB8&yJw?PNU zd+&@aa#nZrjL&!L?C8nb!-(s^hr~OtVaX2{!O-3`VvSSL;%77j(Q|G`*EmpvW0g6C zWav%w1XSMq?#AqgZ-{zgBX#&45-%)QJ^?8mMaJ(9;lLgPsnB0@qWI(D)apP=bXm`s}7Q!7J#S$W90GkTc%2Y zz50oM5Znw)$rYCG%Sn%z;(TDn>>n;@jeOswODD-Ed43^(de2SeQCZ}$LczUD2EY3J!^{#3rS^j@&ION!4Rd_pf=yOcoB4eIbcAxyp&r&CHxJyj2fJ3NxhYdU z!OR?D8|=d`;rNk$q(TCTpB7)JZw`Gs0`)7j7JoK)v->pM`*Exuw0v3;G1RhWR?rH` zhm3b%{aIQIvHs3d9>t#c+S%0iI$dC%LX2_vJ1fRJkXu2kd|6G?Q2F`c#1HtfHM6k(}NO|Ad* zrp(`&z39$$Ld~JMpkGPQQ~QG7+8_~j+Ju0I75DrL+ucX@Yd~Hn;dsl~!`#%Ut`}lE z#F6=rExo1@{Q5EcoZKcn{K!MbiSXnfbjqV zhJyTE5W!FggV5k5_23vEpgyPOD2?Xs?0LrELGXi7=JBq3#K|i#?ul|C5>j}_M5P+X zE>lzp2^}Ate_Q52d+@(sIvPf7($0TgXqY*Cnr29i5%>Tlx^gRDx9_|2J)LZdIEOJ$ zN!@V82^G#MSEt7?yU=H-h3QqcN9=kxX3*yS>xXz40fvs%kHtpx29#xiJZkRTt^>6a zI&_cHF>f&~(Aua)@aNxxr)a0y{@QpO@|DmX2*We>p=_FaA><+4(TYhcY*N=&Gbrr1{zTe!)Do)>p9WG zdMp$KHq?nTZOU-QxA*{6LjETcR`O2}RYI93&Mdbwm*ihmiQlJrAgTl}u>-AP<%y&& zI$=eI5kQql`hzMVR{GBBdo~M*D$#GUPWe0Gg(@+eH%9_wLWze^ESopV2JSUz;ap6- zE{A_~J0fc)IB~)~05uO0pJ4JYjcm9mzF*3Lng=#e^C-UdMK#V_{oWa1b5cOCl1U<5YAc+9V6{Y=5l>DR%rYBK^QFEx)E z+m$T{)Q>6-9WaVrChhPHxtSt{IJxuqIJr9ExTkPnux&vXeA_qan41i(q1fJ!q57A| z6g@&3@WXG)7Apl04x9~`h|#-~-f8WfivZvVY9Pw%>1vOhv}cz6qro9Z8lYr9LSn7HEd}#kq*TzQk~V9Q1*yJ zN&4OS%|ZIHe*6|o;A^oQ;MZoo^gKc|Z4X@lYYIe_sKT+twYI$rTFdPNs1hii4u#0d z?&?>i0o7PI@83EDJgKr*kEtb|`J|EGl;EX8>rtbU>mh3Bt57SIy%zE(F1p9er#pvG z&(=+uWceOaJLWQ;;)He(jFv98f0Foe9xDKS54Iq657((J{XODF3ZU-+qDsK)!}g=;CU)=MZ|37bpN+ltH^M|xQ*BlU{XqpmN4r&Ahc?FX5t0iW{0P z(7}@(r)uhTS zb)V&Gwn38-c6*Aw?P?kQ*Y}V!+~P~UhF^*w+dg#GCYSzjjkSVK&UBwiI_?;?Qup41 z`aR7F5y>8TD?E0fHJ8zPcka#mI8cZ8WOp|+lCSH@{CI!-=1m3fedm6~^X(npid5Up z!o|6F5dYiYJWT|F1k7)ro`&lxc+#KtN}fH=`!3Gu*1RO1uPYD>@VvP_FN;W$Op3<7 z8{|6yKizn?PgTxEMCQT6)MTt{)8xn9n% zHdSuc7Ka0$v4DFw9B<`4w8PNbc-Fs%m5z%WH=K0Iyp+`vtZ-vVg@Nb=W6i-Dsb?n9b zN^&aD{k=bknwOCV2Qt6Vb87@IgHZ0bx;!c#ULX<@Z)6Lq0PhR*dGOaC4zhqNCi-{1 zub2F&kgTeVlq|oHuCkmEzmo9(*90lX|45KJ{%3-;tc7m{|5``kV%7oXy>K-C;lO4= zgtPjHgJgPri zB!@tY7d26hGOK<5G^;UfN-Fe$INLUKGoXqt9$%pUF)H zx(G{gM6GnfN$Q?DyZ(1+cHDQJVvDT9GQtF=A?RL8!qgu#D)L2zrEU*TfQCFlihoo&nWL@()SgnsO{b zaDsr8Apnrl(abbdEF6ZyEyf6Qz#X-XWKVvjT#9MPe8+&93lU1BQ9UMl9l{IQR9k%W zRRAh^{d=hC2N--z`bxVH1@YJ)rdPm!c0ULy$~H2g$bZ&KS|!AKZZbW|B{0VpQV8?w zuJc@M>!vgwOQ#IB+om|nre&==2>O&++WS;_ZECrQDQw&&5ZRR}^5z>o=9KC2Gj)21 zvWo)3TU!j(8h)K@1`D1&zIu9{kt~c+n4t?-@k5VqORIxFC|YmHz}$$X&v1a zQArgjiq1>Sq5_{$LhlwyU^<%h+rgpF6~hx?42n3&2(-rfRR-^ZyRBp|0HlP^09RmK zFbPM__wud8vCrWVbWM439DW6x0LU3l&8r4;Kv|7#8-Q`a=v^K!~o zIPirEIB09ZcckKc!A41rsK3oi&G?BA4B!yNX1&q;T|KOeN`CDJ7=-~LQr_#KtW8H0 zP>6IER4V~Oq+C<-D$L2VB*9D^AL>IIiln;Yn})Y1cjNYwfe@)5l~Z$Qb=x$;ORc0$ znrK@s#j5j=W%s9fTzDMND`AJf*CwoD-XY(N^_dulpW^H|%bv9EW#JA|S5{MUuvJZU z502B|%STK7^o=N{OOQcvdo%o{STZ1L9Qy6&`JcrSsD(2I!l`@qe+^aeGL-TVx@M4D zwA+pTLRsh<_AX!*vOgV6TbCLZm0;R^V&4)xOvwY{Eji0SEbgR7Ldw5wEn=mU2Y!NX zK_0(6_u5PH&S_{BNDwq29 zfmg}kY$w6*hX*Kb*X6j2+1Pn$S7}9^&xF`>#ZMJ{T2b9%_u6R{-5@5AXd!daWL`_d zQA1jy*$fa5aZ#ojPiQS>{%XTy1UjS8Hm~nkzRKYIYF_L1g#|laEAmN?qD25AE*0Sv zsp6;Wd{_AfetrC55R&xeYm^*YT>+o%zI_jw1pO$Ty4t`_oimC14dDkx<6AKrgxUbf zeE*UrSPw(p^OqEz>W-(Mi9e|?R6QxUkEM`5nIw;PKt@vGgd8hs;{8-u=+4DY-E(3-`dq1EU-_>gS zJ+9kjyemDON|->wDK?{s)>{j)l7X0cYZd#U$~Bbq!Isorh4HG;r&&tkFQ)Q>>I5zw^P>LCk7M#a ze93!{^moy3z2Dyqkqe(2w8@~T5~e6BG&(26#IV>kP{V<%Zo<4Hs3~g-6V3RU|J(jI zt8uf?`l9Z+rdNqy^;*3F<;UrH3A5){esN(Us4i!5sj_IR;cy6X zLyiw&TThC{l>O5>ri&+~->)l?wwwpJwl6-iDrClBeSGX#%&aK%^r&=DM&;zmGKOZU zb<=FFc=EWy1LaAfRd#%~fjlWlVE=WSd7z=HIWK;`F`0Jc7ySf_z7SB_Fp+t~)IXL7mU; zwldJ5AF8T2c-tJlDvUw|g&I6&bolNAB{Aw2hy~fRvnoId-frLRGR?O*dzcmV21Qs4 zA61bU75Nic2ui}(J+Wve!8Sn%gsfz%v6UZKdu#yAdt#yf+OK{zQKAj2;QZrp#{T0~ zkeG5a)Zz^Bqemzh%~HI!cjj?153ioG0xltuiSQH5^a74CTWEYn$ul>Qy8T3OL;)1! z=sBSrU`Ouw2gIa`v#l1Pi`{Mn=Tc)jUbzy0xf#X=UG$W%;w@X(%`98gB|X_3sx&=X zaO!6meNWZfvj9+#IK*b-cDWx&lzQSQ4fhwy{o1{h2I^(sqgK|kx$(u>C~yr_iIwlS z>)KWtyatM#BrUHM?Z%wj=R^Ba)I&Ef$5)6kqqEZ2x9467X||f$muy|TvI`K%LtK9i z_-Sos`%2)MqTx#b{-@!uVua>JR7Qeb9TA;DO2kG1q0|Ay(2yM29ea1UCzs5iqun%t z-#}^?UE;JfR|0K349-q~=nERl^twn8OJRg@mT1@WxIr2Pm*nSE(-6<9@acZ$dq?K?qMgg zE^;qD2>mcVEmz7ypfzd;AlMatO;83{kY@sO01FbsBtA=SxZTt10AGO|VJ?YGsT~_v z7y%|}@{*-=l$jAB3{gT`=uL|MSpWp{_S-J)-iBWBLfEXa!^R&-fM0CEJdTPSFKUy&=XzF=ti-!64zP zYF9#}qb%XbRDdq0MHb`{2nLy3F@3ltP`W=r%zRP5{U${PU?++l6J@ zxJR2_&kTp|El(>qqVYwC%+iqx)+ACAIN}B7n*{}L26ykwl@^KjzUyGWuS_<~r;i+( z9MjL7XrFWp*W@rd$6j|-M}N-y+3oT3r&&yU);k#o4%85N+wLQyQdQLo^J$_fKy^Px zMj8+rdZJX97vZ9R^cE(UHwwwSAc#W_oz6^kfThK@d8eE5@Je)r&3~#B9^r`|dy2!X zEH$SBfhF@3kvQ&_t!+*V^*Wk)f(Hd3o?UI<8M8 z>mjx#Y*u0PujpGSrQ}6^V-Hi`Qc}9~T!-SbLQZtBimSdZx@kqRZLG1K+JLb+fNf>J zSoro$v0sLz8OEO~75uKo2i7HiJt5>{8f5-6@30xM;?!$tMAb;cB@C|FdDn;4<>8*` z_MD}%@Sufyzwah=$qwSb5P#tDEYID~wO=hS4=)QW7GWj^-reZ!94)!Gya9@wCx8O) zEVu)A`;ZQrYOD$W9Ms85`>ex`O_R&1qlRuxm6hMHPQi?g%Jm+e^7S6#Xxz`uenrCG zeQn)s;*v@14)_t=4YW9Q?rP2kNOSdtd`i^$u0o|e;cSfQ@3!2yMnb55)4S4g{Jx2M zC6yB`n!B!w2Z0y0LQAKScLr`_z}-Foy4y$YQpudEW}xu(0RNSVU$u+8^`apvDyqd zvwXPhZ7HkXY2&*b9O!v08^9WOkV2h8%u_ffrM zx?vfQeNp}S7DdLsOR(XI!pXmJTd141qc{m_Q`AsCId`!Q4LiCw?!*fC#dEUSai5T- zzpGKu^;G`(F;D-v_KAcm7V+beqtd=@`eVNxjvqMYN^@v1w(;vbRK4U}fz4q0FP~%c z6J`x6KcfCDnM@l~wkux{#)Du8AdsG>^x-U9xk=ZdorQuLa{a6@5k>pymqSYJ8=4X` z<-Ka05fYq^>y>;#Go@y2t4r>M>I^t4q>Xpqf)BG86xZof_XA1T*vH5kZU z;L`u^=AT`q%pLx2K~&ae;TLM#zT)6_z9@WL1)1bSC&8kV zc^M1lukf7a^RWzsLF-+_K}neXXpQb>vfS^vX+}HIXxu2=EFy(rKl6q=UmIR<56fi} zQ(|e_!!LYjO}h3vfBLk|@UXk;@;p@`gCPFt%yJg?)ZeHS1CdL|MQoKC_X_&0gEhui zg?wf<@CwGak6kIUxjk`lZ6#estB*0Q%Q^RqbVLefp5?IZu#{BvKjnJJ{HxvPqC~Ncpkrm8aY< z)cSAxVqeFh)oYNhWg^6=iKJ1Ag2g#79UM}LlgMvc=_hssu)qWqFk^-Knsvqp{o(#W zf=WvY1AiewQGrNMGe62^zuh~jf=Ey^L}QLf^i2H#32Ns=l#xL}O4?Tq+>cUUPx$&3 zq%U6&q&TW96z-jb_Xmi#!IMvF{dPU-6g7B#T){O@;vM$U(r-+^DR`y$0|pA|(MZcgc+A{6y_$+c@#>yK%UZ z9jeq}k2#I&8l?Yd@S&rL1i0@XKp-f)e}bS$g}T6HW$OE9;{Xs;5debfiwCt={tW~b zM)?mA6zLxzsNQegCK>`q00`wQ@m#ko*m!)sZsN0E|5rcr9C0||Db84ZzTjiJWaPSPdO425gHd#)&Vy-EtArK|67 z8A>AmEx-zE8%zXVn{1GoEr3y|3tw;kJYM5H41?FULK zyvD75(B$6nEKpvFVd|YVKj%;kYG_;8WIAeMac@C3b>p-ij07Bl&IiCDpy3Br{P ztiX86#&S-%KS=%7J^l-m0gNeh@Tki26kJ`k@2foZ*QRppbMac3?d|W$su_-~TMLXs znK>;F_efbKl4MTBwxuSxoIZF9k}IQ%Y(AhWp#)85FOEXiMbssgS$X+n>CU!quR&eE z!jM_&f>rrQqq>_S$lrQwJhzV`WBX7jmJ4dIK<=83GYcCd0MtlGqawE4#p!2c`5fT)iDZj96**@M?Cp zeY)G!JDwu2%1oWtw)he7aCS14vN4g7ftQ|+o8h!hTRQvUcgp#O=}0gbo&TN9HC*0#iGj<7f=bnNs^XT?g`nxX?P`A_FUO=+rA&%}yd)_Ue@ ze~JiLwYVGptm~|e>!y-(&zMyrJU*2^_9|NdCu{$b;xJe_Aw6pugfEX?)l9wpL=m*& z`M7nd>ix7m;O%jKzv6KZz#s3AD=MBZM)oV7fUg2xt>^u^nYQ~4XYWUMjJQtPC>dhy zEe_Up$EAe8Z($7<{F4D3PItfDOkDyF0eIzNMof-?CVC1=8s!N@4g(N8cu`@%>DYhFH;jDvmNadvblj zLHQT7&~?1JhL`X&p~_D~h4)kThw$QT=xdA_n?##Y)|&WoeCRQdlJ z1&{?=Eg+TGn@f^nWDw&p|FHny9RajdWn*Uz$)w%S_=w2~N#8=fGPao4nU|F1b~Hgu zGcTxXxmecZmCj$V8M}u5Q{uUQK=Q1%;4SOEj$A_*EeNvla&VGjRNNfH??Q~Jwr4zZ z*(30+CjNkgg0@JHVk%{BEuv$ka2H?q?N?Y4`LkT;-miNWPj@~&IPe3$PiAl$BToh8CVj~%QLx~~xxq6pLDm|_^X zHS>;~OfK2}`ueUg&cgQXOchEz^7jLL+|;xvp`PSi1>{&e#5J2?@eTD_ZLG^JZ4$#SDLxpV*;nZt7;LvcP>6 zwV&F4MqVk>t>tF|3)J)8AjY-Gk+_GuIotZ{jWxN|ww8j$krqOcET@?5sUuS6r~sW*>zrN6J{E6h0(McX`8EHocFlRv^HEsQ>;JrKF>tRU`pkIW!>AQo3Inzc~vN)XgyMEn&p|s`B(8Ur%d@UyFgH)CxXGC5;#si~yo8gyO^i42JxqO^lDL zr7GVd4E>8`pAi_V*M=eTSvK<<=yF=C`k>d~z^2r@eL|{_g1=F^zG_J=iY#i7j*DoM zIaoPKf40CGI*((WKE11M-GTv6V$0Z_p=C;_P}bSeR)cpeP@^`b9L`*p?ge&;<53vJ z1h_vdmLUqMPxai+o&W(O2!ZOrh^=r@H7nvxlXwSk3!`K=V&o4N7US6jjNxUFAJpLl zhlrGi4buCtv#mE<;;7px&5Z9`OZ;9liqhiMcd*lZBToTiMYIgY1Fuao@Bt(~QzsO6 z0NXFbOWZaS_O1r={aa6g#k(s&;tf?~l0Xvw(e)3B-xj0wbLgG5IEPe>Z1A4lbU3S+AxWa=Zo+j!jeUEeG(tYTvY3rVFLvzA(WIDQ3&33Z7@KQF&7@o6d z1K!c`$@=#bbel_fu^|!a`@_!RiQ@UXAHP3tol`&f_jkC``#XROnUd{%2yB|;^BFG< zI44crq%03x)eEV<#c-~hohTNb$8oy)jD=+^W$FUwkZ+FX9^OV0S1d^c^8{5KEVwUc zz30c-yRbOT%KLM);y~}-)}M(N&eVDxwInsc;^Ht1e+KdF!3wf~)k`6NoS-bm8Ele* z682l(L^}eX#`=fR{w|rHcLzTtbJiTk#Cz7Rz>IIt8%XfIXjdmk+VoH3!RMG;xNW;v z^PA8{sU{Eg-_xz?R0UQ`EaU!4m!k)WP=1x*YfuqU780d$bwNcbV%nYRBrBqjbX&qW zrXV5|?H&()cr!f=0uTW3TwKSxkI==wu^K#}*s8%<1~pztp5;0Zo22bTNpj>Pe?Lbu zeV~$d=j&X%vJ2yGAIO<-uFy@##nx`+=KSd5Af-uO;IxtqOiS^2ogZC1BqsLm>=f*@ z)Jsx11>PNr7fUunDI(gir zgEb?=)#<^cl1%4y zb;?v7l9;~+=XCo$B8zJEYSDAoiZh}Yfy8r5&yU7gb2%#tBG@d2+?;|-xK;bO4C~mFmZj6dhl31Lj}7sMp5?WpN4m%> z`EuChh2Wt#>$%vU!8M>n_{8TI_{eDsNy+=ZDk(YpYna|R(PRFqEvNU?s@7+_0pp!* zZ^|wVHu01Jj|*0qKq*DIYGTG2P0$vHnTHPy<0%T5q?sb4o^oZ&6HJh^)Mb^InZut6 zA8oNBRAB@;^aQC+b*%Dbg*7%1qfL3={3VMdh)bB?8N=G`?7qq)lqY|OvX=@t^m{w^ zy#<^AXwOFB=yNS;(!p9P^htUBh%50-+x0EHx#yq3eM>SZkw9JCe*E@>qV#r!#T zT*_fy6DA;$;7`C)$3Fm1>+J&Tzg(AJA^C&z3X3G zl4lDQAu<7Lk-yVHYmq&`T4Xp8#d6!!o@MLO9{u^s_K?gDRfVm9gfY;GK3|d{1NI)Q zGcSS_;}wgSKIuB6!9knl+a;P&>bu)uW2oqCxj1!!_8y*nWQS1TCgsbrUr)F$A?nwv zRy%8i9t=(D8Ye|($-gbJf0d7Aw|QnkbQJnIKq33>(L2cYr8A^g0k>5-wSM%U_KgCl zK6&O@2CL1(cST9ah}6?6iUlaekSRg6u>0BNm>>~EgaLr3x&W`TTJkcbs<;HBV2&Z? zX#;wCj#5!nqlgI@H=B3>@Pq^ao<4#APvqi!Vn*5*s2|Kq&4dAO9tQRW@N|8%_)oyo zJ6^;g`9A?qjUd1i?CVhDd;s~#ZIFS#yk)e?c(l!kys+h#;gI7{j^*@z3-iYTgyg$6 zhA^V`!-Bc_A1xfc+k=k?{vWYb&*n4p3&xcRu@A+!jen&{U2&QBgGpc19+-z+t8a0U> zIP8pZ*GbRV!=3R?DOrsMn(B~%6~Q`~0KR~kmH!i(ksq_!=(~1;$`j6CT!mmOHHg9? zbTvS4$gz_5 zsN%;u+o6zgni;{`!Ln7$Q2E1n*RZ5cI7Fn(vYKir)eWDy7Qgj(pBh11 zk#cs-UaZwAgXRg*CV^!f+JT_0NF~Gcvvm>oxpSGnzhcgLar>o(A0-kjK1Uw1< z1Mt)kNNI14%rrg)T8?yJuU_A0ZgKPI&3aFYg(T<-_|}X3)9=^vk`S8ofO{T$+)bB@C?!5oHm1pKgZRTe>Z*!Ykg|*;A-N&$jN; zMU>bz{bU7OXQPkkxV;CKl(JY=tqxMMs?mR!9d3&}>Nw=IhUdfeB;o>_k(UO*W~7}1 zlyh^w5iX5d#Moi2wLs5uT}e;a9fY|S8Vf+4_^_7EMgFy%B(3&d#U*PY-fk=`Qg4hazuygaew{Z z6n*9K?kuH(&g)@oeeW2Zm+O9K#OB%csdr!{z3paifxXzR!cQBj;&(QExPh@|U8O6< zrK%&w zFF@=kbf35Qu;@GpZbsR-!up)-W8b4}>^s@I6PTlyUDHTo98TT(&_!FzP)!BQX3Uc! zxO}BEwg!)TKPz_8c~cz(;K1&z+jU;prq+eeKDvTaBuRZd+(hQcu&TkrOeOL}<#y9j zB%Fz@7rzA9vxfj^;l_xbr_n z*nY+F4-t+8MA*Lq4?|^n^S_C3;-4bCV)XAK%xL*A=8Fhd{*?$L{6mC$|0TkQagk*eKsf+ew#D6gm(51zbNj(|`wcOJlHjg% z6m7<_#mEiS(CvWfBk?iT-FeEn*)WUc^pH-qC`~NKL)Uw**^HY+%`Tvgv_XpOWU{D^_(g)!M-$>XDcwlC}D?Z3>}a08L4uaT2cvOy*lXzk9NrLk#*I#aP0Er`Z;cY%YlPNo7MOqMG*U?TyoVK zS;FOM@#F?Rw~=i-$Dr&7k3oRC{C4vBf+;4|HOjcN1Y8y3sMX;$H<31u$T*la21sY8 ze6`|%e4L;ZgoSN+R#>WL7rg~WmOO*n zT19u;t=}5{wL}3SrME;4pe#ycOxhy;NmNZl$OzNH5n4K`+|T%Uzag2g?H4-p=-BXYM$}CnR+@+`IQDo z7g}Q1`O^t(-2#MK`~sjBV{K>L)@1GiM!Y^sM@ZBo@!7HXEZ-N!xEEA-` z<{aEB#n&T%_&z>8wzYX(-_@a4WIR9q-Z8E4y4&A6$J1%OIlsiC(|J4-#8z%$%c2of zc9j1{TJ_yZbGA0_PO=eIYJ_OTscD9jUOEWuM|R zOjkHEV^S$18*9y}eoME*FMiF?c)n*?*Jl1Sd-y+^qBph z0lEJwwLn0w9@%?Ewq4N|Kj_=|NAvQTP$$@o!y1v;*~-{_&ljRGH9#~jYcabYzot6c zN99;$M*6*yIs075bF-m>AmPm?+F{{Y{v%0O0%FydrtWOsA>Ryxg2r#SbE;Co2 z(+t`5zm#KQd+w9{r&&GZv7!t;`^5xPHfarp^qSW#bT?nk`txcX?yg1{2tL63JcJu9c#}62~r%Ae7@-3 zsCoQhRu{aO)dcueGBraX!%>Y8c9aWWOA0mng)~z3KhqA;7FjpvxF(Fwb1vKWu%W!H z7G2j+1(TFe?Kq*bXH9R?Pz?)uri6XVhM^)diU_#d$^Wntnq3;UpxH_1Q-a`=92Bwn zMO4k0c+)7!4xH;xtD5-_tNKg>y%XtNEU7BEfYIL!%SDzrwCYTKsr8sr*QY};@r{q5V zLol2cjUkZ=`HEa_95c+3RB3Glam6r1_D|T9pm*%@ddL~Ts;&U6>YR*ukX60o4zj8h zRX$QB0#y2m|sBXuQb!q^EWJ&+#IJlr<|1 zV7%yT26eF>G+xArQA+=>@uEeph^lAjM(3Nex!BIMmI-uGcg~S(bMUP}oolIg#D_e_BZrWNy8W4_e@E?4Dx9ry4@hLX* zW<$l9eXVA3n-!b#abBzPalBX#-#M!S5t+K6EL!!kLJt3dG|rwObbF%@!?b+l+ZqbB zw2AM+6Po+OGIu%Z-$%llP(WUmG>>=m zSIVnon6i#n@?h|I-qkzUf835%I$eZ!K=lvznRj>Y@v#ZApg32}IQm%SDx`8Ceq3H# z)N(cw=8H30x#k$`tXw=|5e&;Jf@1b&CoWKpZb_R;?vAzyjboTUof}Xkfq%^E) zp_n5Rh?urT%dN!+uNsKX`bbbXrA|E(%39vPmQwM2x?OEU_k7Vi(DuA`c0RHUEF&+p zd7eM&K3h`QJfBt6JwF_8sjg^y-DVuOJszE{=mzj}XhGJaD66_ggu7|i4HIM-96hMM zn|I8;E?WtFGYi&Fu=mM($TIMDE(X1UPOFiOTc!MtVQYClfeBhBB^fmC;-wANQ7sTJDGyfyoW@8ONnk_Aj?f>(0 z!R)Uq@U`kziVN&WPs0^*OGz@E!cIP|8=HY(EsQg0Q2m!jiXv58YQjIX#AW&xm%Q7i zLf^$=XvD-(gxAb3i8jqIiAg@J?p~anubB3d&p_f?c7u-ah_*X&P$pE*OCr|{eq%~T zj`~#~DN1bTeVPfTDG4_O6!73ZenLsJF9a?Myo1jnaL5;j&W)Q|<^Z=fOMq_IoEQqn zQaS++Fn>(atrnB5w>6v2C*8yR*?mUJ;bXl!@69yLDuN}xh8+FJh}1h8K1RLF4VbMM zlgFQ_#cuC}F$qrIZ>j7s||Q!dkSbeAI#uEA!%a^e|1VLR4A|kGnBL2L$bAFZM)8Ey@1j)_G4`#cH z8GdzrdO5y5*3f^!DfwO>WQv{Ao;?ha1ul{0rXp=IyWrI*bir5Et%MFmdC)u1&F-By z$OScdgT4tW9GjMcom;Tjj@Xz)8%;yb^;BfSfNz3ru@bV!o{6VK(kHhfUfHK@=(8Q| z7!hvl*>ipe8Jg%XIK<@}rQm)83>m%}LrT;`Lt}k4wN*9LFwjidqQj)6nnv!Oar??(8;thuf=0ZY ztIKL&ze5EAw^Nd!nNJ&CXdEmZS&}?-(@}pBrwbzL&9`^cDrIXS^+rFz9JQn7d$v*f z30=>X8{eZl#x#B3)}MWThpt;VE%>+aHB0d>wTx!AH%gK51y3uP?UHg(c$ zjWVw&-?pNERncY_t-v-z!=%OLBpqt&^7(FSB51-tXKib4tbNCD@s(?AlMAcg{oc)a z;>0;`;ES!DR>;QA8gOgua(A>86f3*r^kbUM?|SF-R@*v_&RJ;UV9W;Z{1iMar}BO% z#O``vwmGTFCV;jz%-JcW;B&ZKYGZ2TS3dhxaS#MPq*GvHt7xYx z>NZUZBU;PRru=zxRl<4^Q)THf=eM_|(HDdZYFp zbLp^eXy!4#8%fj+dl*;UA27~{6%Wea`WzV;v0B_j?hSB4R=nBp5OZ$hlIdx7ei4)Xv=O)JajMtlle^ITkeK!$Rggdoy?s43eY zYPz=)Gx)2kGC-LFYOICb-nAAzQs|>F#TZ0nuwSONIrOWJhuJv|e&||P#tzilMg>-W z>cck%0wiRLT8R|Ie3X6MFKYVdhTwluQ)dupO(qAhn2;Svgnm;Wi^mo4P;P{sVh686$f3v zO4+mTkrDx2Z&PBUNT1kIS(YbLV`YoBwq%}HiSS?p{-Wyye7VzLXW!SAz$1Tsf0ZYd zq{w153dbmudZ~iWppTXr5*x7XC)joA@4&C%@ap4|{x0IrU(kpiv~uPKHUE#YbBeBn z-?DvD727r|wkx)6+qP}ntW<2+gCJ}J z+ivts!l&Z{otn8L$9y#+CtD?OktCX?7Y=YVVK#&q&F z+QB>LJo@Nnshm%S>i66ke?2!%JnHelJj*ivb*B1Dp!<=9I=O}zdv&a)?6?Z=N@;o0 zFvny2kN{zt;3!bt=C>*asH&E<=*iPVOO1Q6`o6`CoZY|9$$FbC zlZM4N%|RA}#iE*SgWt`eSwA=He2FPxsF?R-u(eQZlo$G}=kVCVKPpwz&7oL|-UCn4 zprF{?RDerz$|x7`v*58|QSp(~2?wAl201RIQ;o53AG|GFfT|K@8AfpQoOBR#$U zLPt z|6segy{zz?Pw1zIEh4djVrJ6fjgx7zeLi}1Q+%^CGkQKbI68AjVUyPZz!-1|ygPZk zxw}0bou3>WT-71F0;=Ila&1HLd9rf7Pn!TKaN>b(8M^L+^{3mmmW)P7D`Wy6e|waw zO=tTD<5jKtT3at#-6D9n%(Yv(N$Y1C4TLmpH);nT`Y>hTF_B5!^~;O|_ckRdtSDVFwfkTIl2iV!G2g^beqY2*52_ zH_2R_%R5kbP}}=P-IfYx!FcS1jMKr6lxiltU$C6jQ*N7+mM4;_IR%IAf)xRJRI%5A;5? z6#6K(PYRIK(oh3=GY!ARlTkl1!_^roF&Xg9pqX|Bv5j<(VWezWBu;&X!Mkz1v2WO> zZHTMQ+yhWWm^*5NL36$Dcx5Qbci6zU{DdjnNM#125|ctR{NKOx3WtZGN(2jW{t%0l zq)}%O$;$`_`Khpf*F!JOL3NC1Ch-XeIut7HOh06Z$4XX+A{})!?4{R;XSh4pV4lko ziM+oS4AD1AD(0ZD-A1=(O%RgdSL^So>+iw(?Qd;}XSH4+HS4sU?k#^AKmeLJh7Zkf zn3N>-R67!=R;sI*z{G>A6(KQndk`;nJnl%b*?IBs;B)$r{$zWp-2G9VX(tY)ENl0t zGxx0S){Z{hUc?@El+(&6i}Zs>E#Y3a7WW0N&MIIs$%9Kov2R+AH4}@ zxd@M2dwN%Pqr?{Vn`Q<@dK$&2W8DaFtTO?QHHl&p!Y3RE;vfd}6Ar|!K@k>vk(Fd8 zY^eze*iT`;|Gl3^fb{Xi@5e~cL4Czwn}Z=5h)-7s4|mpAGN*~qC{q)FX6(%>0x!pf;^*#VTUtIEDZnU- z85q3va=3k6kOWXvwok{}k2vo-&LR^vTl6>5K)Mz9B13ahc#F%@iWZhO<3`PoZ?g82 zG0kb0ldtp$9q-IstIABF%H;!(oW|(LUuy;ZmN%``?l{eW5P^*s<~kAqE!T<)mDLdN*J5#CHi?$n zWF-p`|A?EFdUfsgB4Gf7&tXw}m7v7pTwD>3!On=1gE|*4uN- zvVBvcElS>M$ueTH)G1EbEBeT@bnfV^q`o9;X`Z z8AU$U2TbrKG-7ODL)*u{4#S;4VKRq{?OJ+U^L4388Ucp20y9R1-P=dYk9Yw#bmp5+ zQLWmVyatGB{m#zyedT zf90fjq042+HRy3^bg+5EIut*mT-`IT>Z9Kj1N_|~JyLaPrl@bIs=rlD^b(&r_?AwZ z@C|K}V!|RDi(@TTKslj+!4djrcKeVsJQx#cMl!F+Xk&qeBrP!(w)-GUe+b*Ruwl@d z70CFQ>?`P-v@_t@w-S#ZL-f4yM$_vSQHr8YP0GS@UjmbLT2e1VUe@htfb z-4|c(i@liJ?S>B~0?*g;C&99QM1-tCe%qB8fg5E>`b$g5(pT65wpeonb>!Ib8hSgL za(YyOHQF(+5lAbKZ_P1}Pa&biZd;cxZ&<&E45w~QD;jmoKIr|EqSmT7o&+w?GY>_; zLI=e_b-PrQWCB&+{ks9JFj=VY=*De5i#p7;H5;wXs!nHZ+qq zb~3Xy`k#vFU+kWXPj-(@LOA~@fZaouq_K40m_b%M?2>Vx2u{S0$N)(X^i7lL?Ro>0 zFT%tAS5uNnLKuk41Mq$Hvhbg|lc&);U)o<{`sEH@aog||=~>Z4w8S{u)Y$k42}sAMQcQrxJQVkBO_5PC2XAq#P-CT7YYYOZ2(pBV;}n($~J$#Pe~F!LE2d=r)VWM z7!BdLtQSjZDp<12Rg?u~aa6Ke4Heo z%Yx|~1CNM8#Mw(iP2R`{-7{Q*1>y(+D$M6A_AAiHWRzLNqMsyxQOeVbsFux8_&OIb zzMl$|yV{2K_w&Mqe)-_?V#0Z6L(pO{$Kl7|eVwzzK%5+xH~L+$U$njc91T#^FVr)% zd&Koxf%3Z2dedIASI<&>5qrR|ENEKvKl3N7g&9?o*&p9Sw$0C zQke9(#lU#V;1Wv5&`1nZW+<4pXSpE}`L^-d)-bN}c%*+x^k-K{O@xn##Ai5a*MV9a zfnDU9y9_%s%Yf0x8ihgl1SS0ve?=>bZj@+~CuXEw$x8X&JYTi~L%c+55r!^{8tt2+ zsMswF_Pzlr_tRCHVAe10v?v3Mv3~w4!@R}-40~G7H{RdP<5Kx3iA`oXVhn`(m1hV9 zCHe-5prz~jA_oS;3WOccKwCukGCl+dk|-5f7O@#IeBPREWIb&IVZ&nhim_ORYo;m9 z);+J`%g;U*;w%XpVl&!DH zj$cFti%)roDr%v2>u6g+v67DvM}vB^G8)aoq!hb7$s_YKg$rrb$Dox1hNBDMBaG8N zI)1amJ=ywA>>)sF{fJeO5=-siEC$=EjZ389B)5UcX0n)3R1OfF(S_hii|De4R~FGt z8CZ4ln*uKpAAGF-MnLsGKI+k86A z#(O)EM*D--H?OSsE=6oA_D|>V6MXdT(ZDm~s^%cNEt`FZ9R1vyy=6AuIG963C>9pu z>kaD*`0KvLMxlzi*b;eX^PM!WdT}Ok?A+z04VsKUXck5fn_gL=`$>I)n&~&MJFYC#cg2fk|OVovRB-EC*sPIN0$9KzeQ~K0?3?m z+w3ZDFTVosj^Di-+lBD4k@VN`3;LfWD%$F>qT@hIT^Cn_K8K-SyN4!n6@IM^9fkN>=3Uqbeve9+F&kg}z&B+k zvj)6p8s2!r;PPiHKGNm!X6NPUeDbpQ@bVVXEU7uSX7&UusxEH_uYYpcOjA>jQZ?;W zzukvC9~{0mZ}CX+SZ`U{`pAZTaJIkZIHbU^rlS_bKo0Lj6FU_hM&rRQH zRsW3DX&$`IT{C!At?Qd!;DT#q$09E>sY7*yKG0?#syrej!FDA@U<_GIN<=FtNLFO| ziHhP39(*muxMtQBbU|zZ=ZF-k$G$*AQZ9s5qcZNt1J9~BvUrEvA$C#Zu}(2(gkw?{nI7}ibIvcapO=~MT^B)ff4}iz%?$fK9|eKC0QJ8$9KX! zBBAp*cH zR2DAk&~wapYK{?y!%nNO+i8)y)c?*!()Y!>j8cur<&i&lyGZEZLfV`GIU(7|JXvO& zWy18ksn}*gzL{DiO+(w)7Ls5j+t)Z`<()}C`%aGtB!So= zSn5iZj(a$c9KG(+FN&2O$P=z$iyf$2I!1C6-?nGJefYO_FJ??q-tQjSM%P^)EpYiw zLu*hGR^ofQ_gwb=khdrFQoYdDp%yGCUQWFX)ZwGau>Dpv9tEOEj5+WIBZ4;;Y5fIO zdJa4zs{4D<=&|s3T0!!_>3b=MpB0w_l_pfeweYUk6HTkk(1#omq1V&BPs}cU+&pyW z1lOtBfQEGUul-$hFL%%wIDr!kEP>TqSXJnOY}aRx-#P}8Fns3qyeCRh<9RVZqtXNZ;vy-;k~wyWaFynykccr$^L$DrSy((Z;@$t2uJDt3O-2 zSr)uXsPg!SPe-f(zV`d^5s!b}8ZxKYBj=5PwZLbP^Krl+=lP)1 z#3#HL7Xa^-_=NXz{Rh0aa|8Du@ZL@>>fS*m;RMu-@Q&aX*YE!U?=7J=C^(T%uuGW> zE#%81LS>LB9H9hbYlO%83~!^@7tH^X>IaU;LRE+&8D&g~rJPDJ67p^*n`AD2b7ptL z1)6}VCm|lhd=<=sC5=ZWP_fe!!B88-?V+d7+rt6Cd%356CqA=7Ajy@!#v>5Ri1#Mp zhf{|oJ?jfF4v}{%%8!L@uA(z^I#Ul0yS8s+!?$Uhysx#+oxjfl8q&3tVPd*&-fWfx z6aM5B-v%irE0k5%+O|W1aVgO45weT)9d2R)$#()eAfx{3H>HHl$I!RKU7*BZ$W9T& zujtI_IM5)qO?f994T^$|)ZHgWI1loltde0zxd!1!LHJGrCD8u!v){Bhg9i1lhIFkN ziN71tWupN7rU8I{Q|2(z*1XxzhIDM!KnQyy_Hsa^3`Vk2SVtZ;(p+XJZBEFLMua%A z*F%ACQ;oLTml(fnR|gO&lkneWW%d{UB0w^3RWdDRC=5-cj}D;s_Py6*%3M9zo!%#0G?2lMB0>Xf~TPWba|;b zA+=NPmAl@~Z@ERFX!LufW?$&}yWO;CXov;ygev|{;Ado--9Ot+|9EVE5 zZKS8~^G^MILNy67UQWac{rQB71uK()1uUK5&f-?g4ublXknwBs4%Y%fwfTy?_w zV)8W19#FLw==5f_<9t}z2!RO3;=86gc5&z@D^R8mJW0cl+0=!$F?3~Iy_{i-1mh}}Xa0IWj@o?M@=*f1a$U_ID#>6su&kZ0= z<2yJ21?g%3C`f1dXF+=XW05QS`0)L?>XlYjio6AMQJ{6=CLp|BtkHKp+q)2p-BDZp zv`cSmXdp`=dUvIbp|zJab40q{dj<%V&7W1$zqPafh}T*IXJ!I~%A{Sdes3S2`~VmA z1UHq9fxpMY-^ChB?~E{&9EpX)=jG;nI$7Bn9i18d43$;p^Kf&u0Ycr|GZvbfH<|*k zfbTN1)}*Q<%hlWSPQM0S>f=0)FKKr?^H|%gE;|dLU(U5RpF!WjpF-b>n#t(79F=}H zq?bS?Ed8?~eJof1e5#6HWVx}7GMbjjLR)>5rC$V%cI3xr)hSq4G$qBv!6D=CyUWxN zK&Xt=JMheNXHf1}^{SYGV`p%3I@qcl#08qCA;=e(W1mA?bZeF()xgD!jaGC2Oze9Y z#3-fh70Q%Vs7z92?3R*cT1?TaA{-nyDk&m&S}EDt+iSHd%a7_IyGpWh>rEr<0Oje< z%L!Ng*{}y06yHE4n(JuP^1iUT>#2TQVQdgSX>b(jV7n zy}f62J~z+hzMbz!Y;(Nc+}=;Q^xuG*?IHz67{4k`Zn@u`M4p)HzCUDc$?Cpi+LYe< ze!P1<@0Onw`!*Do8EcrU*KQ_9su-uF!?l-rY$Dt z8xC({EN`9gTSeWUMd|v0qI7#0Kv}DGz@%w?PZ6lgXHmND-$m&*pr(o)hO3q;n&b^z z*>MT-H;6&siBluD_+Vg>tV#k*rz9!KdvQOSy3g=F%UYR?GoAr|gwAyt9ejON9xwI( zMG5|S7%?j=1Ez{vdjqX7lz-?L{^q0L-S~G=dZgO<*A~G1@Hr*?=llR}^(qJSj~^X? zpZ{;#S_Pyh`nFBc~Dv zNW#25??EFce`n^>%2fMydQCxTCP&Uh`P3$i-+ljrIrHVpiow82#s7esriE4SNZ#<~ zvAyI&PEB+8sueNQ{dVi|DDhEAnWfo4SzrKwuM;cO=*ksr3IWdEN1gZ)?bohh&b9n$ zI7~1thoKleFq(jdIqR?jM;;xfbT3K^g>4yMtsrTg{{3)!Nte1KYQdqqbz2*rz(oERE1L6&m^5geDL zFrukqHgbgMKIX-nzHinnz9>;C`4=>}Ox$9E*HI_jfvZ~~T4o3KNgY~~nF^%F3!_K(83K3dJLy=Kt(m04I7>o|339IPj}-}H z%@q6bJybS~^{;S<5qbCzjSLtf{oEXMu0RIkiuW(KcY0_6* z*2Lj?8#3r5n?cHkl?gTrVK5|H1El)^fL&)1PSY9|)9_^knr{k~;s<@^qw6qVG7qzT zq6lQEOh z00)Vrc8{Oae^DD0mA&A9XP9{p(x`^{?PggY^*q%-#eh}*=ZiER9+Cpb*-1dCJ$_1V z*_IfV-oaW$OAO0`)C5s*GJ}`J8-dZr^0q1TL(4d5;2LuEy!U{cA?l&2cEBL_-^gHP zR?DC9`)LxC5_TQz!I}f73B__HNW`{y-g4i67#zC;2zDXJL^?rPK+?4u_JrDqX93uT zBL>Ma6k?+UPyi}>P8rfys`r$cz|!63i~O-&L$v$mZo_$=1Bd?TBLsSk{Se=%z&HPj zM3jOSm>_V5%W$}!x3xIe`D*BPMH0TtT+PRmNjh$(W&kso7=$H6hwkKH<$dAi4SwSB z=*TPgt`a%IH5ST{AQKAr!Di;!l5aV5O)fYoZQu=f`s0U z!s>nW-+|D{`HH{Z`uSgU4JwsYRSdl$i<+vd!>W~3r8V5R0_JySnGj97CDREPQGTye zMib~Z#8yKHQeA*u>Mp~8k*q4S=HdhG#zJyhtT3EXf3aWX!Ha2zM=vH{8jtkddad*N z$jz)jc!?#)m!0zIe7fF!e%^gOd8wwOePFY7Tai0i5zRZR&^lv&A&Vg&^$A75x8X10 z2=BkU)`xa*TE8dwF!PMNT!!O!rDq=%g~p0x?+Fz^)Ksg1?yYf0c!Z_ z#iJR|21oVaeGZ~%4XYf~)C{-WR3WSyS>{VV$-9_9+CcuL>z!^P#F}>FZaI7P?!Epm z4N0c+%nmd#MLMR_ZWSoN4{)(MFDas0m+5WrI4e#_Ubb8;O=gpnGwTQ0fn!;s-` zUDNF0`K9cYuTYe*Rml+!_fm=f1W%r?gr6L#)$2QnY&%&DLs9)O09uZ!&~8Y{b|ySc z`B)`vnb4gpH}_fR*cacCjp) zL_asl1A3<&(~{}E%+9a3Wb1;fapy(SSl|w6a4{_tX0_-suHUWlRAPcEu{%ulll^%T z>F_*4ggh^&vFRk8kG}RCxRck+d45MqA%bH?v5Z4YZ~zAW1n*K~Sl^i8nFf0x?J8M9 zH&<6_gHSP}>0>Y@DHHz2sw2CjCYTbYnhjgRd~_2 zyTx-qTM1skb#yN~ISeN`r-T}v6pj67D9EB^zCCzjub%yWa@?R*F|2e%zlgpKM?1FVU4u;$+~@&S{gqs-}?_FV^9 zGtydQ&e(-&h3}7mC_ju7d&E=)dmE7&-%_HJ754$XWzVMy0Cx{r{NQtcHt?xy;>bNwAe> z$}lI+=PaLV^STotp&$kVLHi}JIP$)`0LK+ran^1Wrn8gzd-vDVsoB(3`|$9#Kkx0b zlv>fCCBpb3@*jBMF<|a|`7vl9Ag013DXt@Lot7@V51d=bk|~P)t0{Wcg|F=(xbhHm?J8^V!dQZGXes#| z?QJc|Zj`2&h?N7?%7>Y>Qh&8mewrusG^Z^fUF&AZffO7|SDRWq-$78~XLu!sJnYTpRxwb=x^BU`u z4AM=?@k+f&MCogCC7|9iTFX_fet1ML&`d5hC#aoo>Zii8e9)9gTAOha^$vLX)f46! zDRvHt70DXVBG@(wS_|ej6Wx*;j%+{*4&!UNdZh-_?uNZ9P;okD)30MRih6tLQfkb2$R00brjtl007sL& ziBAM?VpVJ9s`8iOPXsR(0Kv;Uq&^FqKoYI>^^8Q)J4CuJnbM^&FJ*|zf}jH&iAc`h zciqO4ASQ&F6g7lH9drvpXM(s?6@&ZmQ@h{XRb_jZ|5zct1z+&yi;s_kN zuTkvbNsWHX;0o~yImyb0ChHeO;i}At;U25iDM3D9Yk%J#h;Zq_=zuAd3q0kf(Ez@) ztuNqQRO28_M42D1S$GN*UG} zVU)fjfLY9&PbK?pM|2ZE>YY9gaL)^SNqzBt-~u~yq-2|Sg9Hxb_jw#<&*H7Q%Mc)m z>|u|1$}tDIkQLl?^i}@{fwvbx;5`X{qABP~`6Tdq0tmd1Q#m)jhKsz!mk;S%?)e^1 zd8~a#nt?|;w49-^7!TL14TPeE*Y9Y{A5W5DuYr;+cO*{c(=R&5!*IZ+P$g{As1U{NSm2shdvsF6VYb@WEcIzg^3uVmQzE31V>;u7a_P`F+9~*eU z0K-D~ahef_KLRZ1%fvppFhj%yo1C47T@pm7eA$9jiuPvg@0H)~+86M`$>2;y9r_~2 zcuc;Su&Q!7{^l<*sV8f23B*>UK=h5X12Y6>**Ae?2##rjfESW;Z0o2@php7~pDZ@Nr90{TCWlzh`j#>b`<1ctDttB)^;JJopJqK$ z(4%l#V|*bjHaJ{LuU%W>U9#8Fz%kUh4Ir3ao*73LnLnd3R^8oijFT zc8@`!*^#-yw2wUmg3q-4R}+Q&3n*I{M*Y2nqIt_329~I+^x7I{&1s?T??Cr`n8ZM) zES!OcddwI?_!U_mNUzg^F;ioRc?42Bi(qQENq+tQ8dX}GyunNvJzGr%@T`rp_hqvv z$rzak$(fD*aCzn;4``+ao7dolUF*m9$TB}hS+KTMkx1F$rMY=Mq=ko~U$-=oOZLN%Q6<;;P}?no zm0*N^VFP~er+Wmtk!O@Nk;%42AY-??nk7rm9YOwa^JbRjlh^D@-roWS*~)kl%BxxA zdLr(Sg%g}wc*yvqXE%RxKm!LFJ8AgBAzo);Ot|c5qy+Snk3BKukWKdB{rv4uDYefB z8~|V|XvC}R@{xP<*XzCHoMaJnz>xAeiu~&#We(-vmec>+A?05_IQZ`d6pS^SHP&11 z&v2xUg@jC-i#EBtSUn8OG&O&s%b6mdWYS;|k#d5AfgXN$f20*h${I;0M)>4->z3Qd z?PzYXC_4UBjJ&Z0&x+(Z{I1YMeOSZ@t(=0?J%WU#1;iLt0W*vGd0NtcjGo;UTi|LH2omMY-E}GH$)2-Wg8JcPqKZq_JC8Z+97%h4;=WZqLR2)k)KK< zN+_i&7%Fp-#)9%cj0BU_3lv6I&%1b@&MGIuN&f&3`1Y3&QC6pXI}$pZi5SZj!i?lm zEv!mU<2q|Hk};%9)eo5)C7^o+B?F=_AJ1S;y^3Ye>@6B}pytnJz8-k+i!~lhZxKl@ zFh*1NJy8``2)O6Wk>of^VwM_itw_{5YDgvT<-9ED~5J^lAchV6FdAvcgWDB zTV!fz@8e4k2jVJl(A`Y+o_!F?fqLO&f}*y(MMvL5a)7@nCxc8_K2+AL6IA50W6U$!PcEz87*60x$;@b0dRg{h-ud1Y_dG%u>YHO4sk&NR3!)?6h9q*XvFC{tnxqnf z;8m0v#5G&eqgF=h)BoyVy7e@^&t9>sUrWHOfllagGGTz8^8y{I@URMy3hkQsrDE9rb zN>i*!*u@4ys17y1FHo;jPz15IohMn>WE3m(m|uHs4K?Em#7F%>l~Z}v=Ysr*{A!_{ zvr#(<0k(=*6&s#_jjDh_u`@v@v{|IQDV4N)cy?t$uf#Or&+z?=CC=7Z%d=H5iz_BS z0o<~s8Wp&bfJjVvwUuYcR+4;)kjh`!Qp}Z*o2<8Jd0JxZ7~d0{5s50}<9@;xgXtNm zii7r#5Vo2YF4-X|PToiGRlik9=u;7v<%$thmZJVcVg#nlYGBzH zL}gr#5GuwfS6d6KTpkCzP_maJ3AYohOTabF;&TY*><=&Jcj?0*mWy0Vu&M~bdTbnq zznkaFr)dvWJMnclZ*ocO>*0IdsOs|8(r=kKJrCZC30qU26MxKKKa^Q&i$bO~9X-5$ z`QB7~_`83UOz0l@9EF}f$@qjtG=Xh#=Q`1z5mpgb(FxmxZ{La6yn7`}`xtzY;Q`*z zkPDM9c{DArZJf}^%L(t`)nd1zaaCZF=T`&*M(6Ic7Z-LiUdz~SxA9m~-HJ1u>h?bo z>Akq=3{C8c*Uh7;G6I(2xDMoh!~ankem4q4_hcWI_eI0YC;JV2`6eu8UYcqh|) zYp&^$i%`=4F=u;?F*#n=?sJA|>(dLjK{a0SBlMA)UfIMg_~l0!)3#&R(aFut*^!p> z?){|i@j7*od2-#}?<#7`qtnIH*}~4<%KJKavch^5aJ86{V+~#LOtr-QQ$SEa0g;$8%v^K%P*E5D4cyF?9sXp z#_hIp8|hzFehyh=(jP)=NM@-xZIzauo=X=zu=?`T(;ThA(xYWx@$nK%&q2;)I`r5e z`~#(hQO=j0V&RuXX!h$5>J8yNN&>ze%xx-(K-7=XHe-jcmuqhj zJ5AdyWv%J%V&%ljz21-nsz%N?LJ``*1}%yb%VlYl$M@B}5H3T-wU`if%{}WMZpku( zLUZs{QUlx;BLe1zr%QU0)-#xF#C+c5em`6m!3$r%xYktgpJ#^q3far1{f$pCuy~Nd z0E7)cb?9F!lm+tt-v9sq!~37|^zZzCHBH5JRurEt-TW4&Y?pxFq~^2CjT?kPQfZLE zzzM9fQC5~qU(_8)-1SYL_dK1hSD_`p?DzFlQD>jI((({_-#*(t-0scbl}Y#Ch+A|c zkQ?L(D+##-CQ#-QB(csTC@l(^Thx^>F})ID!C4q;Nbx#b#S4GzK5)6IveGbAY%>e| z1PIjj>ejd!OEEDIKURh?v$~HaH!3%xpg``Q#Ios!AngI|dz|(Tc zKJ%u|U{2{|Pog|-UAHdYU<0V986{#irLT8o9eoI1_^OPK_h2|9m&{m>{%=cuNChU{d<-NLb z@F2oWmSUb@zG3xW;8JT&8vK#XcMoLvf*1PITlg9a>Z$AGXXz4+z%=80KQiJ&u8m!YxRhsy+v^HqW0Sm|tT;EGtvQYF4bM)To^=V>2?e+UYP#*5#RYr5-};X4F@Ml7MNR%~0t#j@~8NfFgF8ZB=Z)x&a_u7S41gMOR^% zO`fPNMeE(>BHtKC5wsK%n?W2ka`RnF%LKGKje-b_0O$h3T2a8-tna&SUQ7sh=f~8? z;#^1B#8)v!)CzbLMtUIxDlA9gAg-KL44I|LSRPL)dXg~EF6T5Pw&TK5UP1spaWbJt zeB`LvZL%V;;8ynSLmj2N|FJDPp(Ttf*Z7$_om;orEZ1#}(QV zaT1h|O)l~Z0W8gTWYcrS0C`#)a-A^2Ug<&Ig?5_u$nc*&4b5r(7S=cBB3VKR$<2Us zC$Cp0zzH)HI0#SeggOG=nr` zBs3)9+*5@wNlGhHbzE>lMbgv`zbk<#vnpcu1zGBs&xgP;PUqH2%b&$b&y+0bNWhr~ z=MuM1!}^?}NeAcV@oo7U)^w2=@HeCaJb&d7-Q8_pJxy~cj)|{(A`{?6uy($fe^4JD zf;TXc@*d9cd|vjOFVt7QYd9l9vlMRTo$NHePnN%dFTQwF`IJ2IfZWwN@M%uR4-gRndvh4Vm?G>K}Ib}=aY5(ocs;2M;#>I(KiivjW# z>5X=*4wmmVt+0NN(DBG+ z)%L}0ai}O;IC_w4)7`p|9*b&gFNJrIJN9hi~H1sC0D`(q|m!5jZ&Y@CRL91q378( zgX}2}emgHrN;kMIkcrRL&q5^jl3G$ga}4CAZ9v2k2+ckxhIT~2Ad~3wgXg1m?5hzn zFzGeB&T$j<@f_*ILi0ra)For62cqlvFf(K#Lsa(cqrNpaAJUrqIZ;m|k18lg^Pc&4 z=Tom+G8dTJS+dfPEr{7NoT}6PEG_Ns(lzdHl>+2PxtwJwqjQhq9k_VAA>of&YvskM zsnyV%PP{tO)%L(ksxtUQKfu1V1~b`+yW8ttJPf})7+)VPwNU5XD_q(>UGQ4|ttVTI zH(;ZnKtP|W@vrqH6%7c8`+sT6{_70;f3GRF>#S%#xw^e&eDMTD%rdOz8Dor)2Yz-)-7$e#%F{&S*JD{)y%ez#OQ?e%Y}Q{h>qsHapEE(osD1kKb-l3 zP*iF%GO`xD?A`b{`x{>j^1KNbV4XqPTG1*|C1jYpIJ6T44nmS7kTvaz7KUl7Hyt%g z1DN0CEf!iv@wYx+We#ABU%?i;QMH(|RW%cqCei}=M`WcmXDu2RE6f2mWjn5>!&rl2(esuHH+kNQh{{fdXdGrAff}hSD zLlA}U#hWWCbmM`D*DnmZr|ZGA$u!Q=@;HhFHkk|A#e>W|X#b^q=t~j@ z=y40nsK#=c=3vcg=(T5=_p8}+u6>GCAc;NIQV%C!`7x|_`WZn(k!I{P2m|scBmhEr zH9YA8_QhO6v2N9lyc_|WC_=c9Rcpygl1rVB5hX+00oU04%Z*qFR;x=At=KD)3gE>V zAjb|xyArb4(J)_jhjp`Tqd9^ni)y?znryCH9RA_*Md@4+IgHtC#CfR#MqSgwZJgPy z)(_O|s{0!N%JHc#bxG%ZWB_%+7?)29sg}GHimPnn|gkPZerxMA^Tx4&rlTag9X-%(~rUfu9L<}0fT5OvPGB2oc z6Q-ifkI*l83XU|@_pYVr0w+U5iVCWpQW90vL)A4@0#fXsmTXY3hvx079Mj+~6jl~> z2tRs!lL<$)66|$z*d~RFp8Rdy9y`h)NP2x7rk3FVtCX1PSO{SEsgtXw2%)5f5M()R zJSq#hDxibtN(ktmGazv zw;Tb#09=%r02k#g&&TU=_zkB1GqVyh2$rDDl9L^dkHPwP{E3%PqxZCzPVBOy<}zX} z7uc2y_eD>uK6bG6`7oT|X?tP}-*+^UEhtFr+#nU$=iC%aDt46DxgA`8OxO&9{f(W1 zogq8h#yHel5Cq$qudgXe6H3bqAWL_-OWJp!ET=LWGgnL_BY94Yb>$CmGS31&*ZN>G z*ZQXSRUd@qji)~rIP7QjG7+p~&DbRXr&qY#d+iZ; zZ}dM2zv*E#1Lw4GO-jwve-CQ$k;0UEaF@hWW4k~b!Qgf!qP;GSo42h(EhCbK#u(6~ zpWmuox-x&}!P`T>Q8i8LMtnbB-M}sSz8sv;c|VEwGnFb^+5_AQwa3h?%tBx9scK9r z7#5_oCei3a_<2~M?ye!E1XYzaGbEX;seaRU_3~wFC@VDhsqBops1V7uL5rEECoVP zEyt1F1kFC9LC+==Hy_FdVt}q!F+U{Er>Dy&^^0VMfF^4R;boLEtok*SOuGd9A+@Ah zsH8x{A~+TuTv!bsbSI5k#1fewi4YYaVxeHChM2HmrQ5yt-U!iP>$+V0{u?7&3p@`Rk9HvSJ?EdeZwdST`%S z5kMo_IcEeJ z5@(Gj-I1qn6#V>_V@MmY<^qq~%N=_CJ%`J=D`WC1YX9e?f^WQ7)UV+e>ickQ?e1TF z4BrT-61|?+?K`D&24(m9uMpV;hH_yxr`+6EsnjT_2#Rgjt8!X<$otpNAo#r7NaY1!k^7X_{}f)Z{}SZ7K?MS$__x9< z>tgI+rSDGXA#P)2?Dn4z#k2s6n-Spm^Yi}+ZZ)b&0z?*2*sV%WIV~w=em-xWVWC_o z1BFq7_(R6;9>tFIBBEA^lBDq-t@92Tg?nG;Hg41NH^s*=>@yvwphElV9q09`&Gxd_ zgjc`2#mMciz2cXtE-nuN2~E`%l?Y$4!F?kPd%zXcRJci4Ov78R8x3dAC!uGVtoX>Ym>NTiwhIjY^Z`Zf~sAj<&0Xsk?ih| zA72$p*5hht2U4=Ud_#b;c3T@?)tE28>TEzJ z?6Ujg8xk%%Ko#vRk|67kyPyO%E$uxhojqP3U+&@5QzQ&TX91n5WIVpENQjoD#RsU1 zh)(cb-6Ieo_ZM3ot~+M4_w+BbaHJxehqTW(RgHM$e8*$c*g-KVlaO(%C zED$L3qb>@N>{JK9VysJ|NtereIG4E&w9?_S5b;Ym|Zsk8n8;{l!Nt@ZH~*a%`olA_q6W{f4I9+#@-nHCJhkP1v_=FZ;nmW{+I@0`gEbZtKzmT0i z-f49w2)DUB&Pjf2Mi(|-i=CgZXInBS`gqdNHd#3<=knlLuZ&u4Q@?o?7}Ab+O5ybr zULAS5-wN{?swpFpy$%+ZyhlMwfC)2;ihcRgjAy8yI>wGWxVTRb9j5`N9vfp?)X?vY z2gh=n(-Bf#AP|(or?Eyt!bHLfDlo{#qny!+s6;V3l&$d|L`&1$j)Yv^U00I`x;3V@I41^Qy2N@}kPN?^Kp8L%Q|qHrjbYX1J6a zv1|SK-KKj}wZbxVf-8~uXz(Gr#Fn<~F>BYVYfbO!(hhf1U)Ar$mx6IfaP0>#^68mti9)6 z59wFC`S^JvvBU_rPc0$1r&tC%_U?|M>iuX`H zg!LC(jNJgCGgZrn4gEK0;2#A_m8=L4A@x&9ZTLwC3_Vv3MH+CmY-5{##1_Z+H>eHf zN;E8Yj!3BfSW`jb7d@}DK`Uu_Z<-_O`I99lts=%ouVhEbFY9{BF z-ws8xE&uDT&KIoq_AX!O-gt^vjGZ*+znQVRY#~zwKoO+UZ;Z7Y#Q4T4x8cjxh^QgP6yO1ydmw<-lsWiw%d#*h#-u1-;w>Hy0r5 z*sxg8oS`x0*2quzr0EDXccOO zMU72%uKMQ&)6X4Z+Yt|)F-pXz7h)3^Q>0WhWL3>N?@+}L5OR@wFm>!c z;8N7!O1M34_+fI@mrVOL!mIRJIFusjgiau0*X!p_)c&}>b$WGf2m5dzwiBh!eH`eq z*@xP>c-DkvdYrm&!D=9gNRi^RL-PCTCxvY3Vb$&k#gnc=$y@fCQ7Hk#z3L7#FY~}^ zjKeS`=s{7Ti3;95}Gh8%c@N}tsS%t)Mq)mM`6wIa#O`LLh6lY@f~ z>fgQd@{rNi)_7u|Z`c`pfU@y;hz}0-!HEd&X-b7u2W!w-`%;Ute=8g6wCvf5($>@| z@yObTye1-{%GUilOR|1}p$RiOI@_gmOf77dE>5IOkWDeuE~a{cNH>66D>gachGlE~ zQTsrzAO6I-X%h>KXEP!L_F-?W4$G5S>x->P=OuNIU!Y#({?C{iB`B{}MmGd<)ls9n zw75tSMvq(=2}a!+uKd{a+N?Ld?1es)xw7SRG5MBrI*vX{0~g_@hRH;G)r>c9Yu=9c zh(eQX=aqhqE7dg3+t%RGTkXZF6^i}uTD_%>rBchJ4G)N6be2YF5v z%Xly4CKoOBbwxySOBZ~ds!cR*k$VCaE{%rU%)MGco&!@H(uqwha)Wks*_C^j^KX`2 zoe!NGxSDZrG(Nees`itgY$bD1$(*%Ph+`|nF7T=8P&I?M)05sQZi1iE29sHe^$Z2L zGWzrrG0G)ry?utTDM%I6N%!Pm8+rZa$n?1ugDrSTrEw zXCaH-A%~mP@JC%oy;m?KbH2WU+0dsBKIH8mK)Q>bPs!;VkNX`e$BwP z3Qk@!KOAwo@0RfKmirH%;A^(3@-2@t5n9D*VvCs}L+(z;=Tw@f8_y6KLpbD(q_U~F zm5XQli}9_PW%sW+tXwu&+LU|rC;#FNyHVxu{Q8X6ek9TlcZKnFUb$}_Uf|VzKV2eG z(031~1vTzr!`KkNwZrqZ6~|Bm8-HiEQK|rbiB|d|ztePfgI5x}E}wajvD7xpFI?p? zD`8@I0M^-Y{M=gp0Q|!XJx>cUwY?a21->}LdOft$7ZJ;sd&3ql&pFJm@Y@}ZRu52U zM>cTC`P#&t2c69?_a)AX4|OBO8Ds?>JhJ5t}eXE)&*LgMbYat@XlF~SYMM^+ymDlY4P zGMm%)7`uUe$m@_QqmQ>+vYx4I>@Le+`slcYD-j%*E$a!pbzp97{x)Y0D|&nar|gGo z1MOgm`T^vP7<@&&2F;0Db^GJ7iSe5?nnSYaTzPuay85q#nOW#?+!aQ&`u2WQoxgP? z1bW14Fb}*=#D`smd74r?Q4*SktY+FYM=tbR;yZP8KVZ>o`WU)g<0Kkfs(OD+-dUQ! zbsNGVC~z<0P}yqKQHSG^#4(mP38}nhXSWZ4$&=!TeM?cc8FpUPWAvC4w`me!WdC+u zOyy_{IyW~&kFKa4XThWzZb4IEfa&VPk{FgTnUj_s*Sx;&{IUASRA+RmBK4zB-x(XX zoW+J9Q>{!DJs%TXY73}DYo*^&aG%pAoZ)7%<$dAqU*K1L!$$EKmrB=u#dtOKF>JlE6_K%tgiI zlogpt3JMQspTOpC@NXeQS)|8oQQulQ@+tNrhuLt(>VJ0Hk(h7ly<}8Iz`nSA?pBG| zM?uE5p}J=CSvIm_sF-u*LJebt#uIwC9s9l|8^Tp#3};ASE`G6JH8XA7rYJF1dya*$ z8aGswT^eVwXyO<;hz*%GgI1JYV5f}@h2clPiuC?uq_6k;SR3+Q&3I49adm5^b8J7o zgxl75qR>lJ&e~#YPl9N;G!?FP+tssO`-EVPfxH2n>UJW1n`N&nRk75c-RWT3_w?9H zrxO0$%ldf97Qd6q&Pv-A!)cUm7|_YC79w@+OT#X{@s) z`ddj4C%N5Wbn#z4`fCdrBXO_CrnlF9P%g5s6SGPM~#X78F zRX_fK4BO_Agb-`52|d;iq{WH3q~!%{!}Qs+ap%Yr74oV}Jx6v!PDA@^=S2LyUyCdY zcJMmiN70xhLY7@KNGY2y1jtP$(Pa}DJ&KudzhAlRQXcX;b{^GZPlygWw=is$;7>xQ zZ`@JrAcTYtybw`1iQ^K^)mC5}+Fw!!4ZiW-`_m4kfV> zZ4jZlWf$^w0g39lBF>vwBUdX;zD#0`0q9A1pT+pl`4s3SceKi&{0 z6k=DecJ`}vg58gXI8A>_j{YT9UmcBx=f0N&K3B@3^cMx)glMHR zf{osf3VaHi%2+5TzIm>B*-CL;Tv3@~c?7u#Xs2CywaOCgX3m|YE4^N^z_nC!uXL?H z^hNg<(c<>OP!o?~1%5~Hn6pec5nPt-rc!o4a|?47VUjFWFeKyoA6h@}?nZ_8I@ArX zU_T=Ht&useixeyTgwNxDupU!@4|~%uTmpQ<@NGp93vO4OVb}=6_l=Gbn!uV=`&^tV~2ds=lu!}PWh6y z?q9ftaQpe)IVarJ${2RZSmE;LEi%ZrVw~&zTfpY@H>E}K2x4HSDvyk_Uo9WnLDSrzIck8fNlG@XvrV- zm^YL&j>3kcIemXt`wXkLX{1w@!?Rp0`wIgR^3wig@jS2GAtC*dQw`i?_rA*2hl)c9 z`~`H+t)CdN@|r?WFnAW65KnwpYsSMmU6=T)Hr|FdXCFhf-mL$a%Z|D9mM|gE&`_2) z6O7}hFPRKVg8$u}k%`w@h& zwk0dzkqS&bR9I-?M%o6jF-_Sp!)wU4j~ev)?C3P=jqLjgfQU@8fXNqe{#g~j10&7p zmo&mjnlL4!{0%>&qz17Y`(jj^{Wm0*0N^>JM}LeynKy2%aQrvEI&;?+nK!l_t*R@E zAr0d@H{jma-0FWV-1^nF&uq3_>` zF$f6_2UvV=*HgcBSzvs&72{=u6GR3)WVtZnBFj*+KHD?fZoor+_@T(yAnD3EaFmyY z#gm3^$vfny>4L6)#L;y8$3rGlh51(x*}}~4nDoCq($%YR8> z%=-AkkQvoVMoTFLx?QZ%c_pnAinx~TK79*?Cf=nVis>H)_!21G5(w_CZ7`-rzgY_t zR%^Rq-c5_fjt!y|kVtlz`O@BTczGjsYc)1_a@p~D*Sh!OTRWD!)K6f?S)f7aDZ3WIaQfvUKxjH^5{LJ72}|=A1e}jA15q zGuc=rfq*{2G5?qX@4TdX$KDZ5)G~oivA2D0ve?uIU28+Pg?&p^gS6aZouRz<5~fmG ziRiU(6c+U2p^yN!rv zM7IXu!$t$|RXH5mNE37s2BeY=U!2H#_T7y4r{u0qYSP2)BE0aTJsy@nx_@Gby4lmrqjxA1a{Fk$?Z8k_IdenE&I4ik+eT-zqs_V_i#2L-YT+DEQyL zR8&+!ivo`|?al(wHonF&iA4q&wM2tMoAwl-XMkQCbLvfaZy2Sv#QWmv?;pmS;yh;= zVelQ;3vjX;JZwMrZ^`{ga~Fs${LUuGOU|yb(h=!U-{6;uJ{% z8`EQc#1zfgr(%tz4X1ezxl`cC%<{F$5wbny<-tY*lcK(0UF5fS+BNTIXjVyjj6ySV ztkE1g)$w_vKE`enkN7t&o^Pe9U9_Ti!Cy#5zXcVjtJvGFubXV5QoOM|=R}V$P_R!E zon?NIi5eD^BVfqUu$IKl+Y*|U$h;o2Q(*Q;P90Llyt=QXJ-B2hTWd*?MfOOLO?*CG z@3nuBBj%t0>0KUYTmR6z?1l=1JPhDa zlv!yCiKT`QmUTY7LrAXPt@D&VSN#0ansBgdk#yGx5wYw~jzSe7Ur?83Qp2b+L-){qYeCi-)WewKtrOc)=HQ~(LD zxdV|ZAT-{*V!a{&u>zJg1*0YkUym->BRZ$Xa7@47hSD|Aa8wve-Y~nGT)LrZ#-CXv)RQa3 zLPgEjTtzJPO2`(L>Y+mp zQMce@v|zfemjOOf+P^u$z~$X;jXpW<#ybvwBfO67PQn$kim3VF!SCY7ZyR=+yd#|E zv|FaN`#atFY;dT>t}nn**j)D!3t#d+tjXPozeudsHxeHH;@r5d?C{xw9oJ*(=VPW; z_w8d03mEUPa^|USaavF0u`vg9+2^&^Va?)HD;miL20}^7a`KGqQpcLz;Ei5)Tyz zROYM;BSfJ-sc`C{Uv}B+cB?d7`P^c>i=U4;UMw6wynH#Y#N#UpO8tr8GSk&cZoF8U zMZ1)BRQLM8x5)bI06iqyxf;1=2~TFpYxC@F#i}tOp+oAfoM!$#ZYkqcDX-YyoH<5SC3JjY&pfEwQH#5>{;(eDz z)iXBaa9vREP}J3ylc=RoKcnijf3UzfUT@BSZ@z^dqIZ5eU){FioafS1iiuclv~Lw* zOr5tC9E%uJiq@9;luWMt5g&att{g9ajMX3-5s=C##x)aXa}64@S8eiL9n!f|{TsAL z^CcP#yD(*Of1Il#{s=s--TT;Jc^!tPVUI1hRfxW4r>9r0NN5rDa4V9d#Khwe$*}$H zId`Z`aC^l5Vy7tgknKAvQLjI+B9QLUu5oWVcfO}StGms8A;%t5`z&_I; zBOElO*~tIuQAHEHroB}KT^p|V5h@!CXegH*@EY zRCK%cJrtj0@+Z6|g2kwr-?!@c7UumuqgfEeG`s{MtS?}imAaw>Zk3)t8N6sT3Xn?A_a5Pr^H zrn`EqZYq(mLjo-1#P^4$_3`Inl-{^xdqLBz=ypbral3stvF-s#R<7R^Pe6@b7a1T5q36QAVgRkN= z*|WDM%N5;=NgY7qEXD%)3QGcxdeeVghnrc~oYho+2Kge4b4e;oQEx`56!HKO}3Ad4sl zK*j=S${>(|{Q=nX0Zg6#Q+IwVq#cN`gK(+~)sze9=IFo8fO zOX5k2F;X$p_!9)OUOz4H*kA~8Z=;KkLOHBx3e_9aZ$fE@U@@haz%}eAOAO45={{Mj z^oXhX;L6&nNgxTbhkC^3R2YtfK;{jAOo&U~u)78T*~3gft53Kmc$kG705UfKWE!>s zR8MFika^-wL#>K?wmtR$JMI9e31G*q6NBXu0PMI+<1xS!VESs=h!SQK9xbD9mtV^l zRs_8co*S6kQ}1&Tr;^0o;Xp?;c%&BT`^agB$SFr_i6_EcPRiw42F2R<>nZP4_o7jc zgN~LRc{wm{5Ha0&xbR~3vM0>dFGKxqD>wQQI*Y)X%l-7%xl36{cl>sNht@k>O=eNY)XTqp~ z??H(D$&1-L7v7gc;D;EJvcnckhycmhB5)e~_I;leGUdQ8=Ir&yrmsD6>_N6Qnd3Gs zOYmY(@g4q_cRvpu&i1Z=Mv3?g!}_4SDb}E}r{CNLb9Z^+z-7(#GeO_)=1)u7n`ayq zi=rpTP8Qq0%R=3JFZ;tu@+kaiJR*qpBno7xQP@fU3Qbv(OxM>1i;9UDOR zG+5&D#;AM1Jq_ZT_DWzMOyw<0%z5I5@WKG%4kYS~qUQp>Mwu2nd#z{pu}!@BSZzrJCi znfNkci?qQ{`#y(~LlwX4E?H?xQM!MxL?CQ`j3OLai>Rv0{mEhe*k4&!8a+-K)*X*A z?~;aKp`N7@*YhF6uCDKpPbG4MKc;8vtswi3W_<1jmrM8c@s4|$72)Q|$Db=wQVsH5 z7BaX$`c-8y1CJ5+q+kPget)ul*5V1IkWC4O4_?eX&UqO@HHk$YQ{QH8)No&^GD8_+ zPIY@(RB(vJ?|D4eO6XxlKR2>SH{;Q&d)sm%Q`mmhTdj;S&S>fR*^{b~)o3~5X((?w z-Gh5IruVemTGe~epYiqMu2#w4-M0mcew{J^HW0r4J=j`+ztH{1T=p+uGq$%dS5icL z1M`1vzg5%$pka87mFuwT7=Qlq=M5@}?l?z*pHPT#So3M%l38?Y7==+W(IvlstZj(C zYnH`zRb8KN!S~pcCH&}qwYzfu*gm?NwaCK5|LIR616_q8$t&!@z~&;dLdLRwPD-LZ z90qR>=?h#;z?zaHP&b@NzXNV?RsQAZM#bTREqf+Pb{1}OoK}s=Wk%AFJm+i4M+fBz zOd2Z3RGcCz_1Qe4t5zI6FB~zBS+Wfl?vzZ~FFP)f4Msv9y=7TViY2VlL2&)rqq6eA z(G3>p=;rG8fz_$9qK&P7V9jSu6CKk`gRR|g&Iy;$LBzM0qSeNqT)|!gs)bM;nDHvs zPz>dZw-qAuboCC*S0l+nTWkDqWG~f8JG7a5)f+l9^dW+B17UdHm?MlOHi*<_1=Cig zO_fI(fC1}5g+a3X978U8!{`{b*A`;LE%t@RBSndH!l58O-Y*w3m-lWr-EN~tb4Lqq zFaHQ+jC_waeBlvUJi#@M8=!le@@@BAoeVdIJ}M?f&*tM6iz%mU@HUAn}bf8;SrF8v(q>?9?{2+Uo3-HOPe z+z}JIDIxOjz_pDQMw5FgdE4n5&@re8JV#8C8GL9QwAmsWlvarV7}SdqX2+J96_-&9 z51ARcKJlG{d3_$GwzZDnj4v{9ZIc08(qM6rfEi5=!dQQx=6c^>j3NDinq3n9($+Cb zI6;TA${>Y4uu|@@V_&<{Kl`222%OBEapaSvqH1?uJvDG{V;LX8h{o2-IFp!$?~d)b`b>Dv;9auDL9XwJzh@ZnuBtdjH+V%=e*>gfDQUPq@cDxNB;DJPW)9VetJ z)-%0?VLdnCYUwsh9c}XX@GG&=0{1pc<$fG~)=U+G`gq~WBzWPU$690X^N4@3 zhFO!~i82M&UiBh?dmGUjaagv598W9Y8dQbN8Xjz@yQ`Fq=-r=0##i$4W8?%9NMy&W zPj!3#j?(&si0Xcd3S&GYTLJDmQ(%aRHpLv9zHUQ4y0Cxbt^R!={|yy-VQzy0XTRl4bU-8 zi6dK0DYmfVaprE2i8?#Xijb8Rz_O1LAJ-Z`I42flws@6*SjIY0O9uzxvF0v-RD|xw zdc}KW?m1v!ARc~tY}~*zT?NjN{?NC&S`qKfWGQTARYS%~q10h}{OYx>#9bDM5)+sI=DE5qay837!eJen|5;YQf@YLi*hbT9G*K| z>zysBnmU~dFMVwyAc_U<>(XatbVhgEKTlW3+`ACyfOYW>XF|)}ILq`SdPj-LQ^Li2 zCCG;EDKiWxzHwy`P;cOqEr*Yl3*uC7?#zQ$qBp{wwhd$x#f5bf^w%Wv@1`8&FGpRf zLKg;?a;>ku?G%z+rD-8x(*Ul*MP@BJNb;VS5+yU3BeH)J@!!`e0WzPlxT${?$%Dg>v8e$=B@sMr#Z2F zTQ4bJN#uxpOwSa)P`%-|^!|-3m!aO1UUzy&!p$W-C`T*$jUu>P4wI*2Bi=&NI;ZrZ z_44ar$+IC{p76b}RJ%mc;|U~%*TsMu>VALvi%1QtHoFBT*cu@UB7O(O71FWI>^nw# z(8*6W@Ma1jgEq|SO%sa-%vKgUW=xE$&a{rC=3RR5k~l<(fWq5h8y`(|rp@&7-O{r8Jc0uz5%r?JSf*8N{s6Uk2Er>|V@QXtuww3kSMsWC-V zLyV(SHBtsv!pst9Kq?QhzPg|m;ei@gD`u80=7(jkDb}+D|C3O-;tC_pE@n8;xU_>- z6Sg+$T)F*$cfgb{SlLUPMRF-}-DOoJF8Hy5;4Ar78#FeLViuP7@ z8_i0ZsIS8bty)`%Q*kV6bgac@B=KPbadh90=5#=&v8PlySl4um)^y1|?CU48-J}DW z1pBj!VU}|N^bV1E$zOH~rfmtL`!JVW5?B>9=nS!H%KxPrr(*%C@ywBQE!W;ym||yo zs_FGZuYJ?)vpw}$d+XlRLA&63h{P6T*V8KUl!*vS`M1c*ubAv)d$U$2b;T$h&h;Va z-x{I!c)9%~E?L({*gHWvY)%EXHU->aImv*^d|?!LoMPpwb(+mx<6(~Fow@IOn-B3B zToUN%ywUb$K{N`CL;EQ>uq&uSkmP6Ku1mN9NtMH1N`BlWLL~u|-y$y}h169A65b_g zT7xcnPCvh;vppu&jJTs4RyT{auNK1q+Eq&Lx)h4zq=w~PX9TpI3n^V`_wqQU(fJ+U z6kTM(3E|QLi_bkjS~}JiUECIx4(PwGF$1qdSPQM8Sqz-YoneSC`5+c%!umrtKrr13 z)bR!hhhISx9}q!7>>X&L_-Ta?VxG|*u>>&pO$7;vCd9ruZJK0J-v-m;o9VJ1#(KdB zzAcjA{RMK3>y_;Q*Ek5|8khNgB^djMYmAnYQl0uXwRq^iTw{Z2Jyeiu94TsqNcV*{ zK<9tD#;RA%dQh`$AlJB#tl(c<;~5x+o&aB5DJEDOVZb#u`r{hAOPqC1Up2ZGAh-y4 zx!p?XUUNp%eB%*X*TH!F^Dag0szSgdHKpZ_oBX2CZ9Ua#?W^|UiV*nqOJg>XxQA)~ za%onZEb$DAi+66b(WUp^C4|vc7$>iRL%;3)`=zHaZ)PonRAjNLxssjvpmF(fr{zhf zyPdzPu|v36_6WghTGhlB`}bzNLnyZ#&)J`ZV!y}h*NfiS=y9V_{G=k!jP?mD-B^T2 zdP=<+Ye>+Ab6Pr+#5VWrrtjV-gnR)K89V=c(Ch@60o*gD!QF8eHB};2CB<8;rVa1K z@zR>C-P6obDCX?M)DP>UvbXnd3Hi^FZ_gwtQ8h7-+V-6K)NNfgAX#qR_-Wfav!f&i zioqN$9tg399TAeJZYy+VI?7x<#(|}0$%s_@td0TCbw*tYS2b?i=JU5F>;3`??j(YL zsK%#F{V*$fM(ZD5m%BE|j%t$0su$u$EFa5HlQgwc__A06%jYo+9NJzPz?7*hR&Xy?fwr0y?f&R3gqxI)04+NpZ)cPQ~ z+Pi+yNzb)sG`TYk~XD?``(pJG1j9|SzNG3<>pM^Hml^Zt0Vk(y-Tz_iLFsCaNG zr1`6}9+BQ_ykE-olS@)^X@I(}jQX52j=}QvTM_e4;pP)^XyF}C3Oeq-Y;i>0<6npD zNT-jiCaaxJw@Mi3aK_?Kc&pbFY;Z3wn@t9@JY=tLs#GEO zHyqCB)XM4R733eyVB+=rr)ali`RAE2inQsU`PK)w|^8(jdU32-%GVU1g-)77eCIqdZBx1Bd z_x`?Yk?4hERjIdqZCps`ylZrAz0vjj6~G=0EMu;iNH~B&5bXXv25SMq`9H7NjQ-CR z+y6SD{QYM_c>>5lKQloS%DFN#GSGw)`p<;&5n~*Ut}+u)fl>^@U)}rtX%}o3=LdpV zHnvWjTJpoB(_3DhpAN>RkPFxl$0!P)y*W^ous)+MKuHd|dC4!z3(J2-&n+Ct8l^q^ zZ9HEPYQofdH2*R9r6YZ9Lw}*Br-Cydl{yDBpga;58wv`$gETS5qQhx5&Heacl14d+ zi{>B-6Qg+mtca@Ebc*3&0qk#}g8~8_k3eeP;0WxeF`pK)vYaM)P@s$Kamr^_92Cm- zRs1!Lp){Q$|7GZ+fm}#F43}LPfecUlY-pgIC?3do-te+Dd@7Y~6oVPc1Cl_D%d#au z{v@jZ1H1ce{=Fvn8J&Sj5__;;&E6T24ck|dm5!`v2pBo^a1Jo*U?9-}4GN${H(>=N zI+w$SsH)AF8tHyt^C+R;>F;uMpUAnRQ>pha^;IYL@+I58bEXnLF{XZe{QZv=+n>SY zzpU803(Khfxng_xJD9w@e~WcJ_mkbpD+g#$5XXaU0|zzyNc2jtjOdR$@_WeDhOQAl zo24LB)c{AX)H3IbP6_5OKoo~gW9%?d4h zphTzrdx)u-PO-kxTh5aZUWSZ$84Wfp7WL) zmnVJ>^?hn&L?m54wDGncYG#y)y7-V*Qf!FD1SA|%@cf%#`5_5GvjLLXs(p3|N%b2Z zpg^H29w<;S08?V)0sq~?LS4cm&~|6@Un{oNf3Da{sr^BLj@ab& z$>Zwnk8S)l_91_s(-F<~VRruW_1Jj8mq9(ItMolqx2D|TKDiDD-ts!4MnjF}1AkhOry< z=8N+{&2hYUobJsVh!E-Vp@7|%zi#PFC75G2;)1%@D!s1VJs4UD ze#!5?aNKaAGzZb+FGHgFJCS4~Ust>gk?Ps}v7hGkSqa$RauEq;+Lb^urQ)`knkiuV z^6EDCwCR;fX}qF^aUQoqtbCswn7T48yD;+PPvFD1TV69y(QuN{C!(!!6?!uj%fb?2 zsVkqwcdB!57LU_H80TDzq$kLLI$Bk2xS3VM1lti)Bfw5n@HR;OD7Ent(Co^Es~RXcoQ^w zZR_gDzBQOxZ$Uj*yaw18RjUH-#NlH4*n-%EpX;IrjYQ{b!OGwW;^@WUPJ6(eV5c zPh&RYrt}v-VWarsU;GfDkWIe;%?lvN{CoWH1An3Xk0}hmkHo(`6!?D*5tl3ht;2n- zTt_kE6UrAgZkZ(VsGw;HFbGz?X}EDd9F0I4KtD~)nRR4%UEL6k*DOabKZXt)85+hJ z-FW*~?C1u>4mW{X6K6iDW1^nG0+84Nj1hO4eJ1??u_Fm2b~tr3=lg?_C@3({Ju>DO$;ehGo!W|?rV!poL?^mFO{$KWGE;2&2NWVpSCgsP3C8env=fs78RNk)&< z)InLm=*R?&4s?*wF?Q>bFqZgSd#lIyN&%aKmYFJmz4qS&#N9uIJ&T%OJAWQ~;Pm&% zL*d;%!9s&@W8{_l7dO@55DwG(IeK{~SWM2Y{O%03GHdkDW=T?2Rqp}Z$fxE8j-{wJ zMeMMGa3jd#a|}rWj((G#e9Y1_toTjh4{m7w8#m_)ky3wfvl^rttjH+=)b#s`f^ee< z!cA8SJt7DLwa=hP0TBrFIrsS5g9vNK^Vrcy+5 zB_?${wk1x$9W;A~ebkcW}&Es`q4`trI;c;4rtdYmzfgIv?RzWABB+{MpBhnGHs;}UDdV?Sq zcGPr}-IpDaulf107W%_frg*L4cH!qUM52`Q6@qNSV`E3$*BkpkN{1C+QE;m#v&%$h zEt&HoXpXpfRHrT6dsMV}1=k1EE!=f46-%i*ZCaxr)l7-<=D# z5OLXbi#&-gy@LslFNd&l#lk6LJyizAzE z+qvr}xYc+d0tFo&BrnY?fHWYU{Cm>40+T@c|45pD+hh8F@#bH9OmYAAn40WQV!>8q zbWVaVeG&X;kLji^sK=Cc;PWEK0C@lI&N9O`r*wMjqw~eV>E$gb;2ure7xE2&D!;z5+3TSS_%8@9iRIOUtTf5DVuBM#U} zVnqEsNFuBSB*M+RnoKP zW8%R&_%@7EAN3D#XpF|fN{o-ln1-#B#uWPNe|1e(72-~Mc>d^FP(U@@z(+^nl;LTF z$S@DIBQKLLHI5aXr2rH{#f;3buL@-xWOP$DB*{7B5A{JTAy!og3x!^M{E=kt9%b9f z@xi?ta=}p5+Wrh!!9O56p#Bt?cBcc26{^ANPsxb+O?lJKn5Q&Q5WjErQc#64IWF$0 zXb-JWS6ARtfNp_sHWWuF=&8@y(U{B*^&x^w{u{0ZoNhD^^^7!Cb;LF_%0FEq$oZm? zCUa@o3rPLe$tFAt;S1MWw0!^zf-Om6BvzO0=vn=;D9W zm&T?3sV|kJ{)KC&hGV{MYFIrZAOfl{y&&pUsBg~;Oy>rVdK`x&hQf!RVU-G1{=2cF z6$EXp$RhgLSM5igze|#XHdZp`$f=a&92FUd!GAYaI?KLX2EE1s!d{S3-F>|wK5miLi@v3+ zo6bJ1aGwllVKxAKmF>7`vSpORrFr*qlMgP)gDk^>M9KmBOW~85%iCI z(^s{REFtMS`+d;{f3&IR{T|6fVb$ja6!K-8T15Q-EC>pQx(#E@stxSxWdJxn0B~Rc z;4EiQoio9oJu^TbAiSRyafR=M&Za#R#=k-~24oPe?*b{c_di+mPfnBFf}dZLR^ZU2 zPy1W%kB1qK6MK0U)35;_$ps?cfA2cl=mvf7#=FY(*Xio)^^n`G7EFB0u&Z2%j@3D> zd7@YMeQUlR|9tXvK^db$CzadBq~pWyKe|Kx)@oO~3$(g(-NhCKc!%?H0Edt+0Agv% z`Yo*}q+()cV~E%DXuUqoFmYEmh8DBM&{l?F0&myP*OaiRQMqr0*SmUIel7?XPae9l zK%rcn*jxOEgXjzFTqPamMugjtpD^46F1~7U>*vh;&OTqw+yCf;UaLV#Qy=B+w)!V7 z;M1l>U#RYH&R|&oes84M3{;zbgGiJAn%jc)Wo7Y+u4bFA0vra_pS1WKA*?vHY|g7>U|ehs6i|s_QS7tSrB-!6>i)oA8|yI@{O$;v#F|G*WFk%G z)xgJMTF6nA&*?}oTridxzfljv3z&vNr8bK~X$iO~Z+tg$mLo}4qYUiF`FS!}%m*gS z?IQkobI5m`OkvahRxWy6UZ|ct^wcKLhNkk^y3ETg@A%XBJ*8F;LjS1vmFIC9Pp$Vf zKi2!wpbgewji}_6e%fYeqd5hNcx~D%%Q$zVadub7MGTJRi zB5=8z5XS#pOEoOMd%R4~f6TgjCZIKwe>~YC>RSHtw|hHv(tnK_7{`HF^zSLP4e;wf zw+j5fU8esRqW+!fP6jgF5vBuBDFhxd>LXj1M|%@>b)j0M!h0>%pCC2X>`UMnFoP1UhOPF zp0;b9tXKQlUj3a)4Z#Ghnek8CPS%}{T9@?ktSn|eS+yicGcg8klIxJGD9k2V_@-~1 zy^gj&O$UqAkb^B9e_|UYMM4*+u&{9Q2()HRj>3MDYiJ-T%b<=gnUX$B1T;Y!#Q=>= zg-BdJSph zLnF05hwPz64?$`Y4JoP3t~e88n!lnc*V(b#4Rmbhp)KFKK?NVGcPw#hDPW78WwSu4 z18SgRae-dbNi|AMD^Yv)Vy{)$3*Bf`38KXOIlRg{o9zoDRHLj0F{lYhBN4%~Q50|# z-Is+GEkT`O6Uj+R(@OX{v64^V8}FfRTYd^KkT&Lg{ImsogP0ikDL1!9a8vP@ODR-+ zaS&!qG^?d?VI`K5p{=5}Qv^;J^`{@(iH9DcAK2^PWZ3{t1sdsgl@+rubtvX>03-ue z#!txCYVh^*Smsn#E!=3tXeN$3C1XjMh&aT6jEi7|TaNb`e>&z2d(8vfy_|oU=o2+i zK~>I7dCLs3cR;&RF2>9+ewdd%_T&o_(SOAy8eNbUOloLB_C$i0!#fel& zDuVg`KBMlwv~x1Vsr4pp`U<|Fq?rzJv`6XZr*bF*ojG|#mMmHbMMlFz1Ex>RQI%9d z#GQJm=<;BPxKUGTEGX&{XZggw6O+3BnG9Buy0Y%mUre$p$wHPsvidQI1p09W%V6XB z0u967R~jrRTz8lsA!at;IgVr9!G3?(VDOvT^C=IsgnAF~a0C?QAV(ox~%|9{Bn%{R$I+1VQ?7#?c-1&=D z+ZqRCYdSST=En5|gVyLuvXTlGYkal37~K_ds`ipQ^%he{h0M}Xrl+qsowEt?GIs1FR^rY+%?hL9sNdJQzWJ*J(vH%rFM zoRk?1+O7(!{K^LkhR2_dF|Uo~DlhNYXF?m~0IM39z#)ORjhFK-Yq#WeQ%gn>44yo& z-i*{Sg{AA@`?5dsw={RMlv3QxJsv|}o*C~m{=nfHo-_8=HHRzNeqan$62E(62gVy- zPH2aW8)bil_BOgbR+aR$9W478ZzN-C1B0tK2z_Pfz^sl$Mqz#{kLK+p;^*Y_HqPKi zl?*&_b)HZL=0v{a12(pdX~H)`diFQY1WZV0{&G%5dRmGdZWmc7@otluQv8e2G$IkU z1Ti@TuwW4ALkyBRW_c06M!}duvMuvlQiYV(>ULE{7X0C@H3Z$4OyA|{Pm7O!KNzf8 zKPFyYf_$=PNmZEy^KfqJBu^tgL42We9l!fBAmQzn%%Sppz}z5=$A<#`i(L`#176~| z*k_J#0ef`~WVm%JulnT_t(BeKZQ_$SU7PJwTkFqgi<%5JcjSXjhYb|ij5JY}M z)+W7;&Ke29!NTf2CrU_EiE_xFfR0p)cA`Yq0)oV#(e@ifEpdjf?6YyXuDJ6vjYNR7 z@s{AHF10wP>bkR+;A*uXVPdc^f%)i@MhcR#JX67UQ(G&!8<|^vP=3<8 zBvc~-$OPigzb6w6utNIJlRA5=|Npkc0Z8|I1-3&H1@vWW+3kR znJAkeWoaP^WqH8l^lYzx6;3T#@g>VYp=8as8ORnK#hAob6(GNAG9jYT9mCu z`Q87DTbM;tI{3SRHT`(Mi-^XsU`Fw|fhB?$4-TwL3In*Pb1Cn{ee-Gi5s@gF$xVWJ&2;g04DMQIi8i$(Z*jPG4_7cIqNlr++=LZVBs1ypF z2?%nf+;|^m8LIX;@yVAr4)GMd_!vnFNg458r>s$q;l_7kaf<=EgW@`6c5fE~nCDZW z;e`p)`XkwT%=!=M2h)1rFWnSK%Sb_YM-u=6H0s`sSf-?mvvBEE(b_#K?Bscjy%4PO zW{YWPO-U#DLAqX9C#1);HO%fBE5837H*ac?-i4bgsEFIaLvO}0pLDugNmHTpja(40YftiX4l5DGE!eYWlDwH4JwYP!>yeh%VfH8B>%66A;GF; zk9>Lanj$#B!w?AU=fjYno7WbgjtW4m2Sx!ZwG1?kepn6jgDL0!UA+?Y+adcut5;z- zEKNwPg#<1x;QGDS%=)-^8P}vPZbFvsYe=77?FA0IKZYlAdQj_Mh)Rg>_=J^o_}evT z0HmJ^#}Fda9krD+2IEu%+2iCSOrArG3zHim9g&a*G2sK24BX_<9)kebOcTr3Y?gA& z6#+j7`?*&0NQpLBW8{t4XH^DW6L%pG~WE%G}VX^Y2wTrmCHrn-K@< z2mVNB%-X-K`Rqz&HL-3NeHf!H9Es6pR|2O_%e87v*HxK|-RW_gWy38L;Ca!#s+by$) z`VQe5oGr5bKF|YakmD3=aPFAAN#Ya$yFTTd9f%(?4woRdY)J+RY`R?G{bEJ-W>Fm! zv1HJ`KinaGly^#In28!J2)W`WzzrHW;90RMgh1c3(38^cu|XMXU%thC6`@Y%87|PeX%^I_RGVUJFW$CxyZ9BXg$S7 z>I>zd+Wm#`I%~x2g~{G?KRd)+JSO6f9emtWb>uWZ z@TGdarsu6qq{x87WuuH-ws?pp#D*L(NPY39QgZP+(bkr1W4aFywE{%3N`Gkq#3&M2 zV%vWFMz#&!4?{jGo3x^f%6*{`qb zoVzn~nx9Y1+suT4$Ifs8(o)i9y8*c2iKe~x$AhgVKtB?6D%fnt@RKOV!|B`Ko5Ztc z1o9+65`O00zfVGX3?Lx7|L0BOzxRXxr#TJaP5~@*y`KX*k^bU?4JY%B0DREd&)=D5 z{_El=KB)c=K8Sa}<0`5^=d#KoQ%4jnbbZc#z3wzv_~7I1eSdzzN+)id$&vZeQlK$?~y3EkeEJLdFinF7@*;{ zkWs4@>B|vJX;m0i%W$I^pm3V#>VQ@9|A; zkeeOgD(ac8?3pB0%N7#=vQpJQekij4$Vx3tyPS)dNXy||)q)oh<*AAGxPx8lfI{h* zS~ovsrSt#DO0yFmi7Pn%4?qZ4>26-Ce8N0Xw$_A52#}SYj{=n7h2i*|K+2vAfSN{R zhc#wEO=AkyIs=>v^(GM3DIK(5ajK59jJx`XixQdMPAYv-);B6k#O^zYi*xgyO+ZZ} z`#e1*Sv33xjA0(G`4}P7xh(Jp_{^TW;QVATtw&hyhj)XuR zP0wu(Y|?zarWJPW`;yNo(tfKow<&PT89-N*FS{zKI5|i%`5+73I+4EmeFrH3o=kpI z*PP8)51RzcxAMyle|D@C#O#}MG6G2 zpOX{o>u2S?HP}0lj-_ff?8#m;^k=N!SYkL!@ewF_0EVzHh_Y%Azz{xrGPdoQ4A88e zc46z+u)r6?7HEFE%-ti|f88X|sHP>P`qoVFr}{tzK;8tC8pKT^TquQ{7ox%WLJZS} zrT@V>17>CU9cxeib2-0C8|k;dZX3FX;HE-P;m+N2F0~;Lz)r32 z`}`HT0;}<4{bClsSe*xQiDvvsZIHSLyk9*8oz`AZh^4?KgD`~9j^%@4-?K@pY67Fh?#j_uk=AG9b((P^ zGlw#V&*>+jX&&MW;TfIzd;oOe#&Ll!ncQM@Djb=!A!^V)Mfqk`!Tvj~U0DGDT{urx zfI_oK@M=lcuksXal~v|o&^#+OfH1th13nVkJ7EzZ3_s)_7sr$N!#q2;dNf18ce#;2 zDv%4^Gz6~!P8ZWfeCwW1yK9y(fA)rBu^$;B*%KDzx0{;BV3+ak0HMW|grZ3VtM5J@ zy(OGQMq|}HHZBLs3i_I=XIkC;vs(F=7P%}^x!f~2{mr=ATpU{UqR2OHD?Rm|an_1+ zw)2VBuXHk>#_%=hQ@HA8KG)4$p=6uFyf;*UF`Q`-=n;PYuQB{5A=BxnG2E|(DU^ul z#jtKARf8&<%x0Y!w`P=oC#}l-(&bOf3uOdkzNI}%!LPExb(DHi7d^N|vxR6q@0yBz zZZF?RQTk**I^uWJc^?aAP1e)yH`(kuI+ig<#Qf$4WdRM|2Rra~!iAC+#AeRsXoLZ^ zv~TxYk$LEHk^8EsjD1XB3+ft7wMdN@5mgG#*E_hxy$1la8Jgan%yb z6Nj+k=8Y%L+l^~owZmInY_enD+i!NCx+5=Qa}%cLm75Z`0SG@kwy2f}pHlh7ikULjrH=IWYUrijHVB z33w779v+h55x8_pX{+I3EsQo^^9GBSCK!gfG8b}Pd~Q#kgWm=)pAi3A&OX%4S16ND zTR5ZXXv&z|sqLpN+{K@$yMWn4ZP4`OKQKf;b>YUq`8sAU1I|f5p|XgvBzBkee-m6$ zN@)NRSng97o~7btQL0>zX;P}q6o-vRHNumOGUJs_=5v8jG7?HgU>+BD(v*Y2P(OPa zV*a^H{aMQ4$Iboli7YBK8885&^TyUL3N1B&AZc}8Z{?7|q5?;ZilwU4t4+rd`0rio zVY`f?7RpR?SwVGlRn&)W%_VVo3ZXl+5{scI|LQ#KBgCCA%%OfnoXq<%E6G)KgIu=Y z)dOhdcp#8PRcf}IRo55-6eTC78FBPvGZI zjF1w<5dB&431zT+L3~85w2XDf$lrM{B%7|j6stU@4&zY=0Aw-Dr?Zg%gKu6E+Fk>! zCz?eU+4}p#p!B-pC$fkR*g-oPe{H$Rqp5F>c$V=0Y$TNU?ZdO-A+q5hW1BrU+ID`b zwLUT5xwjefqJ9tzd=BQ$-bBJQdrFi14BDBa(hP`T%8PEj=Bk~!Xcje}S%-xk4{-cr z;(5?>{pJyXF#K2^XE`MVMGp|c1+e32IH#_w)mIFoR9doIh&=qG9rL;?e!MvF$m6yw z4kv#A2tW7N-N(6q5PmvX;$K~O zEmp@)JA+TF@oXYZKl~1UIrdF%#KGFNit;IF+qSI+hF(AsZc@}BcGB8y`9-F-Y1Vo^ zQ#c)qpOa%~csn^9%DYGCujY-$G+if}eZe|`$p=swhhM2bi}dRZ9igRVABNRnBRIB= z0!4t2dW_~XnOkZNl|Lc=D=~Q79Vv#D!P@v*1J}#vKk3Aqwv&F$2iRBqg>S;O~AMf{Tw!R%NcW0fx zZ%JfuuyE4%YF{>=bqIjp^I4y zn=T=30qI?yFXhdjn(+2hIan4kXn-ah)1%Z=riUC@2yDH}svy9-0R`4Ip|7`uB(>io z6;+?B%_z&mF4=yhzC~mHr#Qx?o`=Hx1Wx%?@i!Tq;_mbE9ez1qI=p^j@^R4vcp1i= z6`5oFld!3$Yvu5ElY^633CKVX2KwO>R+@##U7a@ki(qLj7|c$VM~Uqx@v*lple7W-ih{$)dGEj8p*-iwq4!p z{-CQZ&+Gj=xk{@@m8s-&KZ)v!G6-cp+~%Igz+xTnpt`)HVRvQ1xbl(fu$vs`LJ{DN zxK;Vu^7+d7S%j6w)qt2#KUf7G)j<2TA;19!g{vQ1jg%93p_0W0#DhjcwOV2^97Lfr ztsbkd$>q&NZ7f}`2Z~lv(+;Yx^@4Zj$07dU|FREiWNtGLTK0%^ z@q$s0>xUxO_m<-2md1Esm7cr2M|n3^u!3a;JzdIM9OXjHBD5x=3;u1;=x>o6r+fO~ zu9Kg_vSQJm+@+~sFTm=qf7VI04*5%0`*YW?s+m*(q@FZI`e_w-IJYM)r3 zR4sJ`#D{|qEox*FzAEICdt@uP&42`iWPv;g5BhZn2=MHuZ4lNo?;zV;AsO|Q9sHB; zw-Kn)5aaurTgNtu`AxFD2y(@j;sZ4$CG6DhX94@&eIgucO`JOA#LgyG0K`@|Q0^l8aK3(Cv zZkHGi&DY=WMnoc-$76=>Q)&syXEn*#$M5hA(=CsD6M2inl*&Zf4rPOSv1X$DR#BN% z8rMQHXXUv2vZmDTw&iV|^Owhkt2tWuzg>7BB--3c_qZJ}nHW-a6Gl~)1ts?=fYEr` z^s)bR2*=@~k?BsZQMm@OprIdEfl?2q)XB>>uHD`XYKy@H3L&cB5_n2r4q_0A>V?iy z5K9n1O%R`GpG5Bc_LedgYCWC$UO+M9_;u@LgF-^ru5pJ&E{rA3NZ?Vb;2p_&6V*^f zq%V;LKVBy7;1RMLx9js=*9YL1GHxBAER_w*=Vt3oQ3ls+g+zz98Cx)Cx!od$YuQN_@>OB3(-?Of2 z#Veh|Q+%;`WGr4F*RndCz)u8}Ds*`|k&-)3BRIrx)1{m7%th`|F^j-|*6hh(H|(~) z-#jIs|MKbyMYuPXzwk+|R3V>zFS8etW&}?VY}~lbEfx%`@tt}U@vwdDFWz)UocvNl(a*YD z#eN~ZH^PS?ADByZ7Mw)QSv%=8?>)Eche-nN5#t`cIWN^EgPH+iJ<)N58~;6u#oA9i z?xrcQ{j%AGW4UUVH$tBJDRno;kc0XfDO(=mc&qg0p?dAkoUTm@(_6}G<(}@Zn!isp z^w6#Hg!88c=R3QPNWrC4eUKo>wZ?FFl!G_!w-$DLue0Q_2cv7!+zNITMApALFG?ph zE=48LK;ga@E7Hzat{@o-Po(4Hd9rBAfw>@Hh&m~tJiDSFx5fijoEjdZuWwp%IL z%CXFN{u$?jB5O0)Ug=5aV0wmo%`}M`3klrowY4Mr~oYV&|3-^-MKlcHn-vb|$ zka|j`+e7Rt8+e0=9^;O1e)Pqe{YSbrvVq+!axaXfh;6KfYh6^#J(g(aJ&^v)cu-GL zAtaX=-2}S!se7JHVeWLrF>GmY$jda;&X;4mZI zKML#`yiMFz28LIn$`e>b_a7U2-c5Jp7n^zy;8YMXX71LkLlI9lQ8fVSZ|BQa*?s>l zf(I`$95AfYZ+&?sXu>>Lc6@h9wUoCsx$T*#BjR6+IW#<5n(q9|<<*&bvk0rf$87RW zBltkdBv3(=wj{x(u6qj{L}o~$WM-MqZOFz@Fn;a*i6eAv)l$T`ah zDQcLXkXEeI_hNsE?v1SBL9iZr-p(5uu*7POzUlRx;hQMJr!Jnw)n7QAdA!A3)f4Vqi>HfAIKLbSM412WRJhlJ)cLE zy*A6eA#R2@6S^GVUtWz}aY9L4$=`}g3xDCrsKVOzBNy#4>N;~6470dA7r(V)zl0Jb!w4n7TjiJA z!3%a0=k(gsWgFzaTA|P8WGhU~a=ck>hHVV5?&T2J+aj4NyF7vYa45-o?((lBX$FwI;Vanm#xThxZ? zpTCQ%jEW}P8nuSQ2Uzi|#7dzBDSw7nV#?FZ%=V0WNc**_kd`)BtTunNz3hd++?W5@ z8_PE?M4V0A>v~3+OKH%sX12znZHAwYu~FZSu3d$0N|#5RkPNwNE5%y&3BV_Es{$y% zf6ROdF)dAP0onriN!%qZ#>$+7;^|Y(HT-kQmM9z1qMBAof-RU_)MLOCl+WPw7$4ky+x; zOWa{O;+dFf(r{P8iwfoGN-P})ao1YC;gSb`nBN9}-0@?|9urSEUU#hxh& zcA#u{2Ds%0*BGH7fOboS2_#pA&{{_pF|H>US*zG6{T~sy3{z6I57g>qK`+t3*$xKH z90suTUk>m;zpSc^@u!GIc#nm?O;&aUcQJ$t6d7 zcW?bvujO-(FlAm9H+VPCccsWZMhkpyI=0UxQip?u8D+F~5#fUaJn!z|E519(_jFJ* zXs~pf5qq%D_n}*u@)&1nU0d-k{vFM$*rUd9nw*6Sx3_VH%*@Q=B!rZ2C+2MLzlqkw zN3laD_!o@!)Yedlt`@o;(!UIK-XPSk^YpToS5<}#AmW_pc5;O&XuArZRl<)HNlpaC zxAlckaoH2;9IXetiG4I2PHC+B!D$<+{fNf1g&;bvQf6v zL#XGqiJDd6lRlO7zYgM};kv}Uydwn0Vq4bPZnH_BU#wrfy7>hP;=tP$?{qJ@^Wwjj z=OXwJh{6hDyJno!OPgp=deS#f4hbOTfFhT&2%3s^d^h3LCvRUyT+0-$`> z#e-ztg>sCKWcHe&V^S1IsJIU|6klROjK-V#o0oVNGKWKAURW_;6Js{Pxm+s^DJ=;u zGoL+hTa(qg#lIpTD{3&&7b#G3?QIU{arsfS9mc1lugcZ|bl&it-)XdnyjY=zzu$d_ zz#_SpOYen^az_E$_|p?R=oR+6gJw=ArlmO(n=QXpWAFZZ)^#GabvN=yqY+y0W_;G1 zo!=L)D?Qm@0(IcbiGA;POeNz|Px>Hi1GFo85*63U7D@r*UvdgKmrIUI8JS&yy1f=a zq|}!C=LoPNs_Zm@+80}C#rYhNBS#l7eAVXa-Q{2MzcZ?!&BU!2xY~(1`x8mfmOzjZ z9_C+9+iAf5$QV~MpoXAx1P4cU%@za;#5Ipgq_(lJ=-wgSny=qIod&qJ!4hD|{UD); zXor>apcdrEX1L&iMd4`7ia7auR}Q0AuFz^IzCj zAfLuuERsHvmRx?%z&r11JKeBXI6?Oe)j~Yz)5XW)lf2pHzcOV+;^Cch-%rY!i2qGz zs_6MO$}j@Rsp;HW6PcN|1>2w9(v~SXWMy!Yjg#5B!P#K0zlM$ECJG^v7@s!AVR;GG zX2|e9k{67}S$(gZfy816`BH-r=GWFqKNuxLm!+1Ucg5P6*gGPiW)fydgHK(6TlVJcHk>x--FL1_Si#C-iEJ?dyEM z_UbWO0LM_;66 zs*?~hx?A5}E<$JPNbPpc{=!zpj}7=P7XSV(cIkrMe97aQ=2=r-GBSq%HJj2i_dhGmBONgih^G{1r>{ZihD79CD#fLjhCy7+iIcT#%q z%|s~1|6uo(#9A16;*aqSGqO-8(IRc>R%hlVAhG>rSZI}2yNV`$Vew44gvT`QoaB4d zUncfmlq+*sYQwqTCvY8h?X1*g*xbVY4TK+2e8~YtX zXyKN@Qj0z#7cO#s5Q>z7Cc|)Kf#9^J%`3{6v*79GS>@Ff5hocl=4m$v9}!Az4FyX< zt={mXWE7f@mUFhFsPh(kO9kw;=NaDhk0*JtcbWPT#iRsv&lY{3-YCJUpZeBRv(pfb zrjj|}j#+jI6XeR1=1Vo5W+y4mxm&#P2Ks6I2Gvke6ZHf)Kz#+^6tigNu+@>E^@h5p z>Tn&)PNjDW4)ai%DZj@gEPbohsdj(2Otw=z)hlXWnI4FA`p{?MzH?eU$_jmI^5jY5Bomi3?0>$u2G#M!oV+Ag*e(%=)!H4*%I>8?F;IN+-j;tC#SNFO0D;l6 zfGX_ur6%q69;t)fdkeN9Uu1Hq{>7eg z&}3+V=m-{Vb?A4}F5>5OBkwA@&Sqn~7NdR(PRHJHEi(4RqOP=ZKMm#fivqs4TY-Kd zbFHYuuyD(+$__(ppLoV)9T>%mO(lUMcfdoW-fXNL*YBsay^yaz-6HSSvNr8D8V-Yg z6{UBji}%Ssxn1=!9~w!RJDGMY-LB6i=Kbw9GD)%fe6+4uGwknC_?2cFor22FMG$IA zyilypT1$0DoK1S(UcyS;KauudAaO1@3?B1LT3!`}Xp|U_f9=2y2-=_~_91`(Wn8&J zw)hZI9fE8n!po8q8%5}u$5Z2~0{tql3IT~?4d*1gNJU6*3k(ZYcFXB+1%h2(4!&|i zZ_e1Z^FULq=M)#ojh$BKxH$&-fnawDHw}M%c^0asXu~UBBk5BAAq?`6r%q$#^7Qk- zB%50{cBbGlu1Vl$>euQ;{&g?a%UM^yv9=uA%?#QnMI$CeiSR8cP8A*Ql$RM@(^zAu z15YgsxmP!&4wFZ^&=26x(YG0{H2D><|M?j)|2}-SkpI^=@&EUF&3{auf3&3!pW4#J zNx4sLDTlaVD!}^o6)ppyErpi&K|=PaEk*hAa>dy;lz__`Im04m6~VP|q2-izJ5}yl zjQ`H=8?7;OYd3)L?cRAQuy@H|sxirb|wb*Qp(V%{n8 zQt1~t$TB0LZE1N4E!qiOqCwHs-Vu)8Uu~6hz>@-P@rF9 zGFn;k>1ubb?ZVreo&K7llEaU?sgMgadGI?4mI$Zpy=FJ~!u;CiK0uE|2NmuG zI?Ri(s%zl~D8SDxfYcZwT?{HEgFm3{56rGGAIK_YattBER zpCi0n!9GXxbD-5tmkJ|~H{&V=ql_Rfc0x}P&=>VUV)lt_HTpMD(esH$%V3!-=ZAH# zgaTS5ykF;UTiGn@>PYPAu=KPG!>bF0HHIvr|B;q5<%oyz1;5!B2Zo%c&CCL%rAEqD z!D`9E4glwZC07`zVNDj6mozo+qbI=>X7Rs#vjZOkQnC1`>@pe>6wVrK7{ABkF4q; z|27%Bfl)yh4loV?imptYH&fXj@fTS#1O~3VTF?OtHUL-);VIys#A+*jU;nJD9@+ zbYP8707LG+CPYsdo? z*cNXN+K1w}Js;vNn_GoyVe`E;en)%qVbT5v{3=L%tAm!a50hPcM(JnB9g>c>q*BJAPWUW>2V}N`={^H$76c(<;5+{AnIL z<;w<+L%L7MOFPTck85~@Sh;D>S$v_-E3Tq+ry)aser;#eA`WQq-Jw_xgzrja^HJ{w zOEV{ll#IhD7VlKe{aD-ut_$}|aKod!{Yi~6LmJhli-DB8W-4?`beK zan{9;q)BmB+0W8*7YY(@aMbN+_UVx3G-&@Pjlu^VRG~8aTKX{QucdZ|74C190_3T= z5M}ejiH{^a@Cf#ULSCh3xRax!&0rU;B{txrEq)SB z&0+3g{$o!2xX91H2Q-n+99+A4Nw2~$MLw?(W>OEGqMnC@!dB2{q(K4C)dt4 zcF%{-=4!DsEOlxJFT~+lmt?!-O(0X{TEL{zVpv#_Ub_l-x3xa3H_9r>wxsx&4PT>t zO6>3zpKzLCAfHblFPt5*2h%#JR%u(lhRQX7(8M_wnN;>R zLcmE&{gO({Z_VPG<(DgnGWNe6iP%ko2@T4cdfL0{LnXo;^K&^$f9QXkeBI=VkMo0m zy{gX!dzCV0km9XH<- ztt@FV;G}#SkS}i5{G$P}s7dNiNztKdxzaIIe|ZLGhM5N?1kRLHWI3N=h1=L>4E{r{ z8w9pbSBW4;=dx$J$0vSPHg%*XSMs$5Mlg;{N$zxglw0Kp?4&b9(<5l*sq$g2DJ z4*FGWDkZp9PCbfW-cofLOIRxj7%A^JYnJG5W8Ls(Di-RzWNsrjl&AVT;#7H zfv<^|7+qp2us?Az4a?7d_8;CkWXNy;XC`mgEZL$tW@DD$`iu1H%WMtgpw8iG@XCv5 zhcbJQ1i}%eH`-nibZTT8)K%`#!ixxY5(fwGy*$&Su^SwG7W{5VniCSFt{NAg?&#= z?ocok)3ALZZQxX8Rt-V|D;=utHU`RgPlIR2bsgkJN~x*awOcQr=CbTwZDJEdTSe}o z>)uHR7TfS)?U05el_`MYMAdScKMJXEhbxx02B#Wl)$5qxW@6ZkR3#T;%L}$af$dv? zwj=OMI*k69w(~-a5N8-LLVSeZr|QrbTelRP(u*vQ?f`LihthPsdg)tM9WYBY_2ClB zfEu?7vRYtro6vt7`yvcgdvg25@Xzrea7;hD%Oo7=F{0#m-k^m`9WP%B!P*?4Jo$Ii z{r45DChNt(3ts2t_C@9i{@|q<6_~xA#a^)6`_;T1gKNB10&WZxgYCsox*xh-G$9*y zf8@}izKSILoOu@JQAK;X#*FpPWoLPF%QRF(v~PXRGQA>zC?+}US=z2qF^?dR9K~qr zHROYxF#j!;s-ykQ0EVj()I5?)YX!-2ZzEF#|3I|7XppxQ&Ues=1Aktt%a%G~!>s{>ATV z0Q!b?0iVxrXEzuiV9OOb|)t!=OqT5OCs(_82hx_BMWd%IvG zO7Wte`R@Yk6s9P#DLHs~B;ogn&@g3?5sXA6$|%(;6h6DoDCr7lMHdzLT4DOdJ`%z1oImv_*WMMHZwAIstI{AGmfiU+L1y2xB%%w z-W{(LMFsk!!8S+(icU%K?(6>Dqy?g)2Y7dZi)_gE$8I;SXAdruXG14nuJ<{ltONxt z5LTXN6R!KXyr;fIi+II!`Lc?#6NzrV50NOtA0>X3ovww^4k(v)1NPT%Kt4Y~M5F1` zVkj~Hq>UVxA}rf9uPan)R10^S8%ykG^i_{wQm?^$!S?jrN+O3zLKMDC60>{73xJ@$ zjZLp4eU!^3BmGqfPNnbImk>U9ptNh`f5PBTAP)K~uP3qxXrDQKUo1GENyb1qZC>JP zI!YpCGU1QCjAAfa?wFHTxiFZ#acSFOxdUZ6xxU^DxZlA%v%eTnsM>75(vS3>1Qnq! zTCzMpzc*8;t{q8B4#T!@B$8xbM2k~9WE6Fh_PYWi7*Edi`S_63?ANAgDLtf5LHhVz zP%^t{gb7*7INE-uQ^iFqlZ+`^RcveHpN)-t-~9D7@3{;yIeZ2!T3^ctOHq7S5+24V z7IH&@q;|*z-Q7#5{=0PGwW7jeuSs=EGLL~r&+IZu*CT8;LQqYGU74?UW>yd?k>iRC zj&%(4gc=41_Un|+em*5R{g@j(JnNOuF3A+sq`^yvq@TYI&M&zlVt@NGeOZjku91qL4`O*=_!fe+MFxfV(9$C6*`$O(-Odv$CfsAwPN8}?H+(e0Y> z6G!On+l?P(mn&iB#^8p!3<`sm(JVS5p!>fqUKLtfiZ5TT$ZVuJ0wV$5gp*FeUFeCa zoa8N#q&>;MKQW1~`(5SID>t;#W2^;tZyRR_2=Do6UxcI?8G}2M6jn4A5DkU>ae6v& zV_I7=COTHA4d@8iJ$t+rVR2f~ZbPe*!IbS%j$i)cYZ~8pB1H?*vaXD zdBhO!Cj8(!BI7TP@E+Ui-JW|^vwc$zS9$cS(c?g^G}Z)>9ICL;KN1A^*#ismzpnk7 zhnz{}*QK7c7;x>0EDiIR%cFfK(B(_dVuTt=KRgL+1Z^VfD~cV<-xj`rGrw)0lobyk zi}sL&{GHZcNd2pW`vlu`XOYT`)Bf~q2v;Y>AxNwDc`zfv1)>bynv^E(s>bzOHK7w1 z$%c%BE278L*fnWeh-aThK%?jhyaL?#o2)qN9+$3dap+x;`i;K25bm?9_E$T32kFT} zR>3e$d-x7r7kW(^(f+|spO1^?PTu#Yi$ULa$UsUg0atNTAi9$ulM_zUTv`5!q_b;j zfA|K!bK2>+7TWrPksunTsnDd^8lyD$+peS4%BbrZMEj1dCh)kz&cDp}#*d`kN+U-9 znbj-0QR1`)&rZD+0r$MwqV?!JC>mD_AZuEhR~wshJ~&V0UgV?UGJ`(WuC>h^h#%ki zcKMS2RXepa)9OM;pvs-ytz~@FKlt(1K49!iuIDJE;&^hq4&8xv%-!De>e>6X^y1ld z2k-r0NVYvt^m5)=@O?VAIFf61*)Gj59G+rw=cdM&aVN<@0z8$ zP&7IXux-Z__1?CZ#m?!wPS{bfQt6hC&uHNjtlDqS#Rbx-i%;E@)^cy}7WhVEyyEW= zpI4f^E}s0efKdI6&VL`O_<*?mpJhS+icvaqYkkxIwhZ&1!c=VxundFP@j`)tc1Ze9 zD=sM-AWH$RAbD~zPr!IeO8?gtq?7mXBNU|lLHn77U$>wa-~8tt$DK!ZSM3ucZ&tdk zh~NN%P6vbv!Y7B54j?T^t&H;!@)&l|CS}*I zi!$J37Xk zPwp@#KfTKQHzAg7B2;-~k(t;F-g`j?4M}{+tc73iKzyPzkU{ir#ubc`xCV)Tc!%sT22fF2(m&l_&MTNr&m@kk7HH?f2w;$>z8bE zHnZ%Ep-alKW|V|M2nRJKJmhYUgO<>}kUmM^ zUB(z%qKy#}Mdda~0gbLZu1YJ9V^h3?>Ty2_p)_>>?`b%{a5%!yiFEU`%mUDbfc->~ zLF7KoK{CL0159A0XpMCaO+wVNAhm^cWK^qHI9)lC4&ugf14yUX326K&{|C)V6RH zs|ynAuz;2H-8C8Kg3!H=d;@LGokUIiHn%%Y`0_imKaOMi$Zon9sy}3eM12tvLwQ~R z4Z4tlIpF^j;Rk)t?4irJ?y@|nFhiAB2iy#>G*p2IanKMztYlc^AqgYpWl<>7+~{OZ zMM;~3!l`_vkAs%eOpH?b0q#WFEgP^~)W^Q0e<-PCl%^Q#NePFC-P1y&^u-UD9IK3m zg^vjwlK{N^UTPKy?-exN-{O*()6Bsuip%>0z4wT*Csl|YY8`_3wUzMx-m{56QPkoL zv-#O;tf7DH23SLE&A{=?u|$G zQhRmz;898}htQt=GK8U!kF>tYZhw~J)U2}NmtgAVZB7zoU(WhqXI-HLTcG3o>5(!xKIQHGz5`792a0- ze$9f+kKS&iw)d4DxWB^-Tm>ANgpCax`%tP>M}lxr&@E3iMVu0kyMf`7%vNh2NGKsG zrw=Sx9u+@SinwUihjjRBoHIwOxP)Bu90tS4kvjODmtvoy6FXvS6c^>5k=GS^*bGo^`b9SaGpI}ArzEYjP(Ddf?3bgaBZJlNN%)9hRt=1QN@l-N4=4IfvwS(R} zf(%v=L7!Pw)VxBY$CDmi&-8;{9Zq;juCQRB$L{H6byF38L`QCBE`vX{kHRUP)QggX z{cT-(Rs#BE)hU^O*>I4uJ-mBWeDc=IaC!=@C{Kkouje-Tn?Nerey{KVqtN@~Q8ajZ zD&}Qj8xYQADXH}c5K$^Taqj#3!3M9-$L&I{{j85lw{(Qk0@FUb@Dc=kn5K+(y(M~4 zS-Bzl|Hs)ozW4ceY1@r$Cyi~}Z0w}5&Bkop*tTukM&rh|&4$l6?KN}H-1l#0ySC@` z`3D^5XRUSYdzYh4>H|2ibU4iga`3OK+x*yji>D!cD?KnQz1!951EOubjGuYFgkVbq zR%N~*l`%kUp}mZ6Q!>TpTNhPP>{?BktNX2cBCB+O`h@PMEoajDwm9h+vg(!?E!Qr& zDunfyyl?0eVQTaLY) z>OJSOTqR#3!M`qC zD>&X&6^x0|Dv;J}6I_*9dx!_0gy*WMMB@}KS%`XCALj6|A ze^e9KjxafPqHu!h67hv5$gG9k^m$%+EQN!&mVNtihjK4RaD1^UGO%g(*g4YB!eHNU zyRxP{#UMQWlpT@Bu{z2Nm_TNv64UHsXF10xoa3~W71^j|+73x717nW=GcP zELc=*!~~v1hA;Z}lubkD04Ubz$NgK(J*L^>Xy}yK+$Qoa+%O?86QZP~D^lh?s1n)^ zw$c$;c{EAY$lG9)3Jfgy{dulfa~0)$z97K5t%T^DLz$FYh#DxDXUn1>s9I{|=|9BL-6X5K1zdpimVKqTnh;M+aUkQ|Af@w0nkoCVw( zfAFG2^=c(=V^BT1g*3#H5oEr?Zrj1mk|*Ie>nMN&F3CdD`{~1n8?|E1(mxYjNT8(@ zlu*ZM@S7yop_HR#Fk+a{++LKfBy`3O7~ubv%pX1to4YjC2!gY zSNV(%1myK7xuFrxU_zN|H~{4C=%NAkh1U8Ln&zrZjVhQV02Fv0oe(QI7A*3omQWLkOpEr!;Iq((fc_AhYK0J+YM!b)8D~F+m+z^-*T-(S z($5!p0vm4t^MqJ``XBRzIMN^U#JmJ_&rgsY$+QP)>Yv}6M!3)MEuCGW_1yVw#%)c# z%*Rm=6u!!q1HgCg5(sinU*w+gV;|Fsys};@evcg-g{pq~e8*$`%1ofkC1}D;{2BV~ zX_OBu9g*r`TCdTU6~pwQ{urdkzr;VfQWbvdqFytr_5>%|cOcjY55v7Tm8uW$>Z`|D ziE}i6WcbcZiDtyMt1n-xyVxIIUMo}f#c?O1`!C3!3^WM|NAs0!g1ijAO2j$HKB_0AP}gW?HFahy_7K%(g9N4^dEP63 z8BfCtneWhnOJqLG7Lhlf4hGYFu$HpMBk&h;gfdyxk18@`<@(~KW}#zENVVG5-~lM; zLgSQ5ADln9guEGp>1BwS^80s71XiA~j&Ip32-Uou>7|ZSq|1ef#}M_C>E`nD#yg1h z#FrTcK7BS=G@4(+b{q2sL?F$pe%)hp$$PQdG?S~~YCjm}^}2bJg9~-mcR;y!Ol*u2g>AGw(>nje-G?Puvu)( zASrJ3e*<$=&9i#AH@J6e;$00LC_%MdYrc1Fcz|s?tnNk5Zgst9_rRO}R&ki-MK5!XGHrj8 zodF!24$#+pYQLT$q}l->(kq7V(=wttw1iu!-}@SF2fkMp06e5MMh!{BKHr(~NONveWV zSr`G3mM(rsXfYyrPv1+7?i7S|m#vStj#=?oi%c8|Ge|O!HtmO7#%h<3y&gsFIH|w9 zAt$jGe?Psc@;?9Z=Kb+}^P;o}iv|SaNBsSBFhb(~Z$$F{5{&hLqsmgtT#C@$PnJ+%l{E6fKAQTxhoOF*yhNA3oaW=6j`MP*H%4H2_q5!a_< zgxEF`t3oh3dJpiz8wo*EyW*yWFI2av)lT?0Ge@qnE3O$P`H$3pP=tD~?w+X=%YIf1 znVV4Sp|Q{5B!E~pSO~5VQv>=J^HH|%cBC+OY0)iQ08GXp4MclZb7O###X5^n;zTAc zJ>gZXn!e@YdJ$e0QCL}9p_%J5lD8VIbE+ka4!Aa$93oMMPQDP1xcJZNZMt5qIzZ!T%&S2 zjFT#R`km;@^;HFX2H-t4Zc5fC5VR5yDqBx$VFdKyA#@s5KPoibvuc zM5h_+pDM%Mns7ge->WjpW7O11I`WTsggcd5JS2H?ismD;ZiDF(eO65}0o~;)t4=+0 z(HcrUCfE<_wZLd}4}$@8FI<21(h6}laVNVL*$@wMmocEMVAJ##=LW0M!KzHOABd$J zQpFATOmCyAAz4~x3Km#|*T~$;4LFoKWjeoj#O?hqGz5l($yYFIqemr;I ze-s(%)^PU92-G#ioM%D`ukzw~_a^YAbWYnOVbK1?gsH9USRFlm63=j?D4Ks$|1Gh} zS0;HJi>KEeBp8HyBOcg#h?Fh6=LmQz_acaKgjw=xF4a`h{HN8=zU=enOBMjmm`g!! zHX=)WqJ83KV+xHQdIh$#rS6FZeaJ=BmsW)U*MwZ+9uK3oR~1=mG0%bYOo{Uw*5t;4 zaUQq1CK2bH3cP>Eu-XdzM(z#WEg5$DN{>I*a(p zh^&#CAIj_&bzSvBxth2Y;uR#^ZXJV z_4e%Rl8J-Ro>Es}b{g)GX52@#kc_KmVk_V-T;_~2G;5!N)}HlzO=ss+_2fu_JZ6yP z5@aW%22%pCzv(I>gcfKo6D*w)@cN3fV>!!ZQAUld6@4Q2Cj=)H@v96zFy_yh7e1bb zL1-1&(EBvfqH}gH?7AXos(-StYaO6(@c|T1>MD~CDhFHC89N@vZMY4h7L5PdDus(S!~{6&qMS18 zh@bLg&gS83h&u{te0h|tt2Ir$#cgrVg$y*q+10cb??4QdgTRg+X4kvr4(2RPKrC zYD@vpxI?bb*Uq@SGmhYfg>0c`K6u*3Aq$LvT4`uYu{{eonitmRvn!X(tQ&MuH+(cc zf@#HdXF#nquvSQ~V^e+q>1XVG)*KPvlNc^zb+zj4e6jM^gPsxDjm=rSZu-<8(aE8x z9(DEhp3@zX5Ef#~5(A;Kaf)V*lNnQV$@`OSaqS#TP-aFY>04UaSXApAbr1p=y|hNS zKXQ*8dezx@Zt0qTn%fygKDhD3xWNBNz+Eq?vF}bUzBq67SMx}k3SVg8a;<7(!NY{N zr^o13Ozz19hOL!U{FMg;q5K8wL~!FaB}gJC-N>#qE5YAV6QdD2L6n&W>)K-K6#JU) zh9sLpgiOGsQXG-?K_i9!@OSKQ7_tOM)vz=^1WK{05)T*Vz)H*oZMl7u*>VxdwF&+o zL7sj?Nz?R>cd~hWr@;D(mRIe@ddY?rJOXDk5$+&i{D$$yU#hOZNv`qV;Bg&GFRzZxh$jmep1tsinj2L#W2W@lb@Oq9whAzM@$+QiOrVohulREEgNBM zDU%68BS~LSJiecYf(jgY0`K?vXE7gzvB4RmW%Zh%r-sfN7~4FAc2ckBs0sM$%!s>qsw0uyda9a9LGdx zDh`ZIiesf@mlQligM&3RK6i~aSyxe4r?l=-;htJE6A7; zwcdioj#xIgLaV!auPSQv(?I$h0b9cfd!NNb0J7}2lx06DwaiI%)1F7PFXvJP7d6y9 z=wcriQ`?W%<7m`Q`sxL64y+7oep~PuW2C~T8cF3$tyiY}?Qg#&Ri4;$Bs&cMfG+w0 zpo?-=cSF}%$c8KMvq$h+f>0FMUJE}@E>R4Zg%8pN?i&N;d|(={jXNF1EfK=4iFj(U zR1RPDvOt6MF!jA?=GWr9aW)NGl1tUa@+lb|wdajccA@hm_Eu&v9*+Vk*ZaXkjLFG~ z{dX>Ilv_(LH|Kj((B`dCcb{hd_lG6*Uf5w{gEbw$3Lveis~knhdT;tc%k%DR>MZT8 z!q?ARZR9aZiF=P5T(Ip#qO-nrzr_IOQl`acNm~%bl%B}14#{X6$l~**aJducZo>sj z1{Gtx)Ga$lshY66NIyW;r}zP|3)oD?f59#^$wrNHoBjp6IF#yh(TklU8gc+8j@0AH zM~KbtZFTt5?tlulRf0;8%2>Ce&|T{spn;MfInJ`MUb(<wnaKr3&L^#02ZuJYIZCQuYD6xB$Q|>_1=^Me+#hjPBBg zej>3!{z}8R#`?!95x0@D=P{=h27;<3O_EG8`@Ew>3p4Merjd*#lDLFo-b56M$@`zi zWE2c#Rw`R0;8cWvVnwjh5>%yT}@{H6nlRJuH<}qokRe ztOfkkC{ZO2_snjiYC&0&(r3>j?^vb0$lb(3|G`~s0&o|h{}=A!DeeEpUHDtiNWD+R zAAyBkzHXov&^IsJ<4}m;gfkKH6e_$2vwaI?q$b|ZA4d>J*?+T)Ls;~#TIwK}zTIkJ z=db9U4@sek%dvMH`{p5gGtrI`2l$}m}FBo#tz{*F# zW|PbDjJ2VfMcuDx_bM@tS~9VxymZPDuO#!;5C@Vv4w_0hpIdInicAc-_C!EzYcjvc z=4HeQ|7M)VfkqEJKe@c*z@L7eCS=_?wj*KRtQ-}e;^&V{pN07Sa--CydX!dK?9WP^ zbv3V4=kPR$)&2~T(0kpFX;9>V_eIGY!~j$KAxiG!zXsRy^pch0*y9(;hLYRy!j#i< zru&sj>i*K}JY&YWOo^q;PXDHjt-IGWd(rz*+U&(5Qt#9k*NMB|7W$f%?o9adlgW`T zw?xHrQyPdmo?SQnxx^k!GUOTEd=fx_m0~*umqYVeBqnw@vnVgAv!ce>@ZqDuXW}Uj zsI*w?`#XaswlW2FiE(1+aO*}?bk+w-u0qyN0g?7C(yy|m+GiVjL)9b(qX{#&?lM*R zdw8NqqP8jKy|0$2Na4|a_@T)7kQ?DzO!cdq5rI8C0Y{g>Vs>H|XaZWggEI?>E@Q_1ZpmvXzQ&73;CqRP=*bk)dc z98$sXnNGJEf~W^oIAP zbytK4OL=zyW^@%jhIWKytmt(G=`t*Yz!6OIVh~n$m5}_@2`-Zi0ony0U?zUyUF1s} z>_elvCRUf?t8^#~`T0wt;Kk`*Gi@jl!9Ya1)n$+<)_quD>;z})nX6W<;AWVj)s6ER zG%3KS@N+Eg?842#pMMr`QRX$|8ViAnc6JGnZmC*rfjx89LYmZfv=Cpn>&})5buCfv zW^jnUnQUY?gj4WIym|KaVYs+udK6+PWxwru(oDjF{(wxKnCq}|C`7>VLS-dA)9gz? zJ9n4|+(#`7&c`Sx_3b16MB(}w>DbH@YEI8wniDxq|2}is5>*c#WT>f4ZD47RTjY_j)9NUor+I1EVT^oCxs<$-=m0needUz-b>EybB@A{ zK@t>scy+fQ96y~;81N(2!RCqA%NXOCc{dma+K^ zDpF6V2y7Y3k#zO3FoYt5_ouPB5{j)Ccyz4zPTYVfs5k$$zrCQN#$6B&z^}{456VCP zy4V927ys6;i@AfKk8RFM{E6W|NS=Ye;UU8PwRAWi~eGid|oiE5Dmse5rBF} zCtGex%Hy<#VoJy3l<;ijms=#@_`7m`U8X~a9J2i-B_-;njBtlrE(^c?@$C_dQbxOg zoAE6=lr@fIQ^p4-eeVdK&~6-#SbZdZpA3piX)3740I;Vhc(Eogl(@wG{yQ0OxYbxJ zoEk4$nk|sM+v$;J>vsUcBev=dNiww8yreOBz9|vAaqLaWFh@h2wxT^FrA*hMNt*~u zFQlqMMolQWM_c}^))E%TZGOzxP5Vk_QVn7wW&ux6PjUMcb477c>5-7BsGFArhCLL0 zi}_g9kwj`{;vcaM1+MnDclt`hUvo$Hutul~@6OX-DV4z8$U^5D%*f`;anmlRaEBq4 zt{iD0wMlVRhn#>Mt700F4F^zTHE84sBGZ52ei8_mWGTv5ZWjl>jrKwn1v@P33yF^l zty4W@h;xcJe^u$RP#BLzSt<$N;Em?&@+jZUd(N9aH_eOb=5Kot%fsjCfwHV8y*z2l ziV_1-XqN=GHbGk;Js321UsHm-6!i`#HfaWKTIUTAeI@Kka^d-~^626~_J#u}lhf0n zr>hadQ}-q>krrtDc(20gU};1Wi)<)*Yazr*U%9W;_L*au`wo-MA&-3nJ`r4ItpU8) zQ_+Qb3Hz$5bcG_j5(GtBDpq1`WI>?AXxuwgA7Y*uSfrNPcsB8L=$#47r9~B5`}Jzd z3RnH&m^i5Y%9Ms^M!<5N-+Hk1l__#{6*@WrMutGqC%U8(&ytBz`6iL_(f}Ts;<9U4 zkcZc$ux?Pwu+fMK($Ndg01A307Z|cqr|nx5F*rbt%{4Eo3LE%~JQ$;8aZzMd5nZvY zG^wfHLDa|=ZM@7+qYTtCuER8(Sba&?@hBSqWFF1=LY*KeR*C*FWmK}*ah6d@SwAA+ zG)5lkRn^vex<2FTjrHYou@#~kHdo>SkUqeTon$=#a3JJDiqo;E&b5CLHVP$0MJ%TY z)JKnQG{B-a217~$-4IVS1ahqHo5JXZOi{{$(b5l}mu6{n9rwpJ7!pt^#7r+n1UH?^ zGp+UW$wh#Kca*tU63m$WzJ2tp3tcp+#%#PSamj|c8-Sx&)n%GS{QIzi2e6=^PX=73 zz02?&yfvFNL0lEO?5w|VI7s2_JEHwOfk*{75PThPXu9rr-YHVNcC>VjJZ$f-y;`^9 z5Z+p{?rpH5b$utQvvNA?Z7cW4A2V1>$HJB6^AN!6#;|RThWD17U|S;|nHe6DEP2DT zXhF34+#Qgm8e1sA79&}w^4yDH;L&+Aqpoa zDL%$CudcPDutn+kW=v%apX0F$zVaK=RwnG%ZQYrOY%}N24gv0U+4PvOo24u3w#FE8 zZB;Hy_w=n9Kn%JWpgMkXNLY33!z4;0M#zH-!*ke(KX|=tL_1^DxoN`H3Ty9trILt6 zqpEshzUZaG9nQW18Tfo4P#p20W7A?t%^41uY0BQh6Px_7gdRJye8RV>%4Y+ zLye?Khxv)yj>&1xUE@JaqG23nN_`)gq3hMq%Su6Oh}+?|V#gYG{^NNoGb^CMtd|`- zOFzBcQT?*CDfjnxy3Z~$I#+4K6g}~1smxaD&aIRWW3~wF#&*w1%~RQr-FrIir!Y5v zb_ubcOxlD2yM&Ld`sWn01#B5;|D6Z8iM_40%)gyp|50t-WXTqv{!?wmR@Y1eR9nH| z64BQ(0g4`)KZ+g{!xQg~El~_^SqyUX>G}3_m`N8pE~BTuG?$@^cRr6WDy18%*kyoA zTkR(i6;YdjM2rlgq@@MqD0MCiYh5ubsTUF)P68ubp{_<_x~TUSLe*tWIgY_%`Yhz0 zA|{p3$?jP=ItUm7E0r8!(Iuzw$tvp34BdSnI(i5c_g3WTHtwNjEyQ2&8 z+<5#Hie1uC&T029Q+MGHOAn0bacam9kUCNr>}Nwv6OM5B&S%*S4#l->T8|D zQfWFLXCl~l`@-EZ)7hgpxmn7(_cQ(s*>^b50}-y!UPgY%WR3(^(f~ACKOzq~Hn1xRAu!s<9-S3*BDwIdrAMkiRGlPA*{-&? zf`VWX=3|du3ox8YnXoGEQD{fIqU=}vF`PnE4I?{fU|a1P=->P*#~y~4Lo<%**JA%- zzI`C;v&+ZgEAAVp)o`bk_oFA3O~e-ihC#shT^(rqDj{gXH>tn~4vPkQtPC<{ zUVOMWPzi*kmWEiF!TQ8_+Pp5chBguaaUxnadyXo-P7 zzP$Q#0d`q2X#=wJaRK)Ab2Yq0ua$NW?bM0H=cRLbrtV0{L(ZHU%VMT*;9S$!#Y|I< zfehNo0_EuW=zyM8{VlKP+U5H!okE-qrF1V9RQw*as+1Cs4Xg5Xxq)MCbs>5*k)S2j zn2e#6;_RS+C#MrF394M`l_zl8wcDJzVpUAl*$4SC|HA3fi5$bFvn>C58rPvgt5f+lp7Gss)^|x} zP?Zuo2(i&TqSgS69Xk;sZ=S!~5YOX6Fbz}serBv?RP3N}obnThbvu6}HHaZ6ukVGL zKhJ4mPl8OntPMg41Vc6nJp3XZ`|8wjX61X00H+UL)YQeZ+c6Kw5);A74g^uVQe6dI znyE3)4`G)V3Gv{^?M2*=w<1R4%xyMufi5ZL3 zQgHfb-N$f2uW!re)4P_bi+SBGTh$9w$7P_k#=xXk9BI=sthv-=TTEVkdw0LB z>8f=4&q`HN15Q|0RSK@y+waO_7uPT7{OA|x4SP%>u2?d;ocIpN?#~YkWE9^8LhDC^ zTzIZiw5<7dmRQAoT4edW%}X>$<#zfW38c4ELmulIFBElj8tGhDcGSK1A`U7jI6A_@ zp|f|alDfKUGPOxK0O+VFTgKD?tRrFMPK8Pg&ukJpMmpjgb4u8C9AOGQGs0JiPe?e&ShK=soM0hl zRmCbXx37-k5-rF;5&#%hf&b%B8uIFBuH0O?p(l5zr#gebZ(YZBg zlaaa;ZiMShnPCp`b0Q_LzBimP%a`%7EO0vo4Q5{?v0LlR3N2G@Vx!oh0_Q}PSn|I^ zyeo{O$BGME=x;9C?Sh{BS`l}eyuhl&qD$z#qH-^#dbCT6H_HG%hCgrOArsZmG)tHKeZ_$aR0|!>0Z91-Skm{ z2;xO{Bk+$~Y5)F`>ce{U)k>;FCE3L0!XJYg@dYDl9TtRgpH-s0#xY7?`97X=hz)?} zT&z#@NToW3vPHR>6p1S%1Q^L<)*b<#F2}6;P61;|GAwY0PC(%$sJQ|NXu^e7^AHk{ zsLu}9ypw8p;Nr(~ZhcW~l?0|nWo|6(R10ZIQ*^qud!DMNkmtf}Tm093)zyCT9BL_J z(F3`>P=xt>zK98$a>JgVIE@T%Ksu8A-HWQN)8LA%M-@QxtUQ002u|NG>LXqRW@MMQ<<&jVHsJCk`kz?_k(`*Sxz;oM`rC;M}DCYx1q|6!wu}*77gUQ!xAV6 z`5DMyBQ=jWipYpf#lS{rj><%cb$ggnOc;JiYy@7~gK(NXaz%K3`>G3DGzqDTyhq{+ zm`?Y=)huk(!HM&kSWY%i?^_na?Z0`)0f2||r}qTww>GP38$VZP5>vDwgy$GOyaB{( zd`%ZTZC&DC8)SV8oa;F4?#VWfgZ`Fyg&kkScE8Fq&o=7mjx~L~q`uLgs~xM4mXD7T zs~a1&G44A$C2L$2ec|++iIOD(+u6UOaon|Z*qM#{WXa6-%BOCD(z>{uG zBvEl7#evHagCW=|7)sll&wjm(uJv%nd220q?W7m!)CHKoJ z`<@DayQQc{xXZ0D!~;Q821OM;kxA=5^P= z;j&nrvUImTpxIGoNLaqPQkf-0=J&U^ha&#Br-L2aEWS6aFK4ENmHvv_v&j$`##sX0 z37mH_)!NB^UxOwJj#gRj;2zU4)z>LDoBEE_Nze43*omx&;9`3>wd&ZfCJ!@4c^EO- zx`BFd5^#I*QkuUgaKOtsYEL~ZZB->NXpP{l?Mm*8tkS#!Zl#g8z{%>{nxy^Z^c*ZX zZ}^gR7~7v9wrJATIWUqu_QiJd&j!v35h+tDbW4Uk?CpNXjFt=Ps}~=>21Sml+!FA> zBD|1TVIpi$-yCo67AOJSa)E(iTFr;9IzyC{KnHoDv82y_w$p7P&>z>Lj+|9RKXowAD zJNpCzgH1!*`W@OVBz93eUs6#v-1`0d5XMODj-y>Vx_NI>+ktBp7n9fRdEdxT*Tj0B zB)bz=$bX9`a>xO=IZ$J?n9yUALq}g-@RJD16ZF|CTuri`tjAd#PomUBv&Ld`AEq9F z0G!o3YpOk;m`@fv6;w*BN`vq&_%?K}RnorI2y4KZ=|i;o(c?)Y8cZ?CAEY8?m5D4Y zR#INZ0y=`iUHZq>8BLMJ`R?q<)n^`X2aijfYyT{_)!s zhrKw;C)Q@xouuN}dU4<#s5`1q=qafm1&GEn5@X8AA!MWRPYnccWnV{H4voaJGK16k zc;mL`ZkDW`WU!w?5)s^qtgSwJ+|0@+@; zO6X(uM9m;tVS&#oROH4Um1+iLpS?cf&e3@}+}hfq8<~suCMI=r0Va+7ajt~dXrm!y zu7aqb7m$RXkoEzSM$~}uFdXCs{NB~!FCUjvCa~!vMgm6&rjDFG6yWHr00nsO50B4C@}L|xhT5hB zW`7jmcY}Q2aMXhs%`#9NsCAT~nBp_tok7N^5{b-#XT;#_Y!*u@ zqB>}c1$#k~#KL32Ovqwuud*hV9qXbFa@G!TsuLS2e~fJ|f&5uurs|3kaBKxspwSd2 zC#H)6tdT`j(P+JzV5s6x4Xh((q!z&yB#+wBtMTkXfMja_NG1ijf{;N#GL8L0>_jBR zKBi&QH$!F8$Gn|kRuDei#2AKE_Rm@pjN38XJ$n9l!y$E&j1mHpDR<*4iIx%;px-h>G=|ij-wMWo3;q(bKdH|rv^Ld}x0pX*_g9~ncQVMZvJw^CU zqkPhI2=IoZn`kSypTD&qltQ4D4RfH~Dg#`D6?zOJF6&-%q)JZ{pQl~t;Pchzc7($` zHTX+KEi~zhO4JJPX?F$6t~k$L5r^kpn#=~fxD*uX4!p_ewNdkOov+O3J~iHwF6&`( zK~lGHNq(eLpO#-HA1J%Ai`^`Wo$o@M6{=AV8GpaLqo!-hlgXW03;O~jNMQt9VZZDv(aAp%Mhkkoi z8$P<>=2xzkJ;^3X?%-9T6TI* zdqZ2ieM?$@N{eW1x>n$TF;z{!dGBAP{=7`$9AzRtV)fc7+!=jxc7R(4uHGs?om7RJ zP;7|X^D8Z# zq5KWbIWQo4J_6>Sqo)fHN{s)`2=O1;tpD5n4(5u@3fnC&z-!vA zgDolB>a0y}F5U(YS)JW8le?lMC>7ryK%^3DZ=i?Y)fZ+(snE(H3o^97r{!A76LeI! z!QcM;IQiS-S90P3M9HgQdN5bmAJ4b3myi6iqOkllVnNAB?z-}$Q~jD*_z}bFa-9nL zYXpDBrc3Qvu)dTmv9h>+@u%|H2P|4ku3nV<0`+=>+t#?zaDggy^VITuYE}7DvY_Ie za+{ykho(V)n>iQ(v!{oMcd1nD#NE6o*YItz$3is|43uJ@X8m(-K9M!f37 zGNDH1h7lK|RtCDlyG(rSk*h7bgX-|cr8a+ZGQso4zJ}w)yhiW-Z3tz^XecMO+0jajg z-?U=+EsIfFw7D=+bwo8dL7n6)V2n7}LD6$1C0bb$dJPyO!kBO>?h$0fxgsTY{23!k zQVl~pXkb|xX|E)+ZpN$c=H$M7srj{51sEen`s}W=0*M0!3EiD3<}K^VaOZZ1l0s&8 zzmqZCgBZAba*U;P*B6Yre1O*?y?^K6yONTj7Ry9-s!tr`dwcJo}rWFebR8=-| zpNGLt2CxoN@U-@ z)dxFOK{}l-5EcTwDSyhk)X7kYBCiQHqt7N~U(JC6_bWbn0Pi!kgs`Kb)K<4~ zG9PQ2!VF|O*~4pOWqZ_vkjJlKWUYsv2={d{XR(brSSHUg_oqhBKZQG4|wj$(r$yhl=xu#iqIW5uYP!)<)A@d z!MKcbOpGgJ z9!CcI{zMz*)FM04gzD+t%e(H~4&<{fTh~)?(F;a3Z0i|6*RJkvJZsUHSBHX5Fo(mC zsw!;S*^LhE?W|5Pi;s$AYmqjcvXb-PH^RQbViiJjI{4(h>?#?JaryGwRHRK#@MJzQV+GbF{$j&MH1|tD;J*+I~@)?t1OCEMTnz85i*42a~@Vk_(>SYLvH2an9w?l{HhvKE^aDVD2Y7c zBBIcXy5=mr($BomS~~hSg-$=r(1gdW?^!EPga0pn4x)rzJ9)LoK5&w~&j=6~6wIhrGSbhze$B=ohzD7R$in)q= zz>ng8cen>qX)TFUw|dJ?y|hP?$4ds2yfzAyUzL}US4Ao*)&b3+yFAfbEv~m=>^NSu zM|z3qY9AQNH4iZ{mjQ`~s-%Rdj6;A)O>*oVk`Tt|iJd-C73U@FFlnho{}=v1;6LyO z0{?+OXyxD$$jF_UfE3sLW+$a3t3sw;ma>TwVmm1-Psj8FnlPr4VrE-QYETNaJYiUY zP}GopJ>$)-7v?JAN=qxRoJrl8`?@#PB9>n_K+pOj!+DVLrZI`bUacu5<}M z^h~vT0|y3RsCQ!+GkajF*zU%eh5y2o#e8$JIpFzLMb1I~G1T+AJn_T>4E02_Z%YeH zbCtQlEe-)_|ej z#{U`Wp?{$ZGqI!k^K#-Kg%)!4L-c{XnLKxfHZYV_iq=pFOQ<6?_)YYmFQ-+&%c%r5 z_P@QHW@IgU&Pok9_l!a;HO$II)l;SC%FwU-6u?F%c~s6W>~{Cj1%A;1mS27W(#|ra z@+CF7v@x3lpHZVXy%RxrI_*AAGz@A@K9*l7seULVqHsjTFZ;c`k&qO?pIvGq)fur2 zvIy|(R~Nx-Xg_9pI~8ZEey0_=X4-m|33|*!9#0&|4X>6woW{%p=DXLKpj^c?vkw#rS8i z$BgPgZ(dvLKyiW6QK=_*nAzIn#mD55%gFj_#XlT-9JdOxeC72`BOCxg7;^p#K(KV@ zoGlnaU+{JVPk3^+E5a0Nlgj)T{($ekZ%DO1=_*3U>D%+w(|ws)&0_9#qpon5HO}!P z)S!ZEn{EFJj?!$c!MjNHQZgRiUB;2^che{A3PxC&fCMdEvKkAh3w=64xvWSfe(YGI zLu%N#u32@Givhg6Ba88D;cZl|pU9oa8K3!`EN4i5@Y=MF5U8UxylJP`Cc{9rI@K@D zK5`|D)P>jx??|2j5m149BP?L%}r2` zM`k=V`MjR*_x>_Gf`>RS-1nQk0;J@u*Ad3HcSVz%;5Lr}kOUiw*1=XrLO7yZEWp#+ zc5CE5U4rX&JMKIj^^;|04jI9{*dTX3G36MZdc2itZg zbUg6Z=xs^7`9^Gf{4p^0b-$mC=Chsisal(li?u}Qd-E=*J&v~jKh89i3Ct9f>|+}&asG9t0rj6}8ptKl@o{>8&NQ0(kG45zms67* zwti2D28DaOd)q%=UCbgBPpPCx8{GIy_9orI-&G?Cn-tm|@M(TpS zisd*(9EtX+-fYsp9MSTjs>rZt#KX%?n}Nd!@`tSrf^{Q)bsS2s4p{jQ@o zt9w9F5q~5V->WejOmzMpkNi_>erdKc_sKaRsgj$9ILJO`d^f~u$^g&PUsTT<6i$|c0#)V2U2Jw9e}PGomV74hZOD7LlxgvTg8C0u56fRx z4+S~3){K@RZK70M-cxJf&u_|twS5?+e8I%*O~4{YLLaOiabqP~R1LuXNd~Zg0s#T+ zpNs+fC(c6}R|#pcXu<5+vZ?q~f)Ocs!95I&f3bSP8YV+~5T8M>h@K;4`Xg!)HI+Kr zrzdD*XsJRIIU9>X^FVDwcEscF7n<#c4J~3#ulPWTC@56qM2$2A&NOI)`)8DShf#nU z#%&wKnRVEgJ^rA2&Kv)tda!8;Ku%%-s2(@G>~KmY@;cQIRFA?RR1XkZb}I=btq4>N zE5aKh3G?3g2)wZFI#FNxV{y@ph@mKElW{4GZZI;O6M7m03wR0xtj1Xh1)<}m6kz?- z`|K=l?26#_bdS+@q}2Nr!0N&C7rgz;>XD6$nw?>;9B4Py0C{*9UblN!TRaow0c@Xo zZB1;<`%Y>7D-|(|0k{Jhgvo<1lZW`RvpB|1Sqro?17Swv5V)S#MCRIz1YHGmtlCib zKRg`9GLx%{6J<(&1VDRoB(K%m6JHM2J^M6AJW4%!fy@I)JrQWDARUqYvDWaUAg7Q) zvMAWCsgmOq1n$cb<8Dt%Jd4-LkWdnEl!xPI7>)k%Duox0OlPiAcE{F<-@(7O8@3*M zIv6@}qb-oT!E483oS9mRHUcJmJ|7dl4hK@IU@E|buc3Z+NR=3;QeE_8!j}q8jT3au z_IJWpgJX37nD8Ad%}zF=wB$cg+yI}sa@#dZd)RfBxoa)h+s)_y5S~53qT_AkqMfJ@ zsPZxeY@jfO%^b%2%$P)@nr%lVxIL|eHF0$hMM0AAY;D^@_itFqs-CM(>aE#v0ptVJ zbsOxfr^;WqWs6-Ld1cU{?(~rYb2_yTNTL;)w4y07^x=wN2$<# zTNie!;V$~r*%p%H+3ee>?qh%LGqWGSiup^jeH}emE|T97b?J675&HsV-l6W(xUF!O(Bmne=*~vA zseN|LT@ne_;a(>nclc3_&Na=#-*-!RSL%RbwRL4Hzz`pJC2`Ta&p*ePJ0-c9`aMP; zAg;APC}k*L_D~|R6^Y%KsaGX5sTNz5j`Dz0KJ$RYBq?l^ul&%FsX6GDjr=)~=XY7p zIMoCCycR-YJ>i>iJ{kM3uvV||BDq44qr4z;EV zxbZYCbXi$wy_X5#k3e7`1v#^ZjJ38k;05&uo>TWcJwm4c2`#i)>G`Xr_`7=h%kF!` z@YV3MMnZbf^XvfY)x2{fHteZY+_nbt!V1~A$4oe_7k9H$k1A`;kw&@Hh$i5Yc`t%u zuEA0VW=zG-(Oztps^3wq?BslC!0%%do)uWz(;n(C zKl*AnolqU?bJvBo`3)^49t)&TlqNH8?$K`~nW$^@t;lUA zE#DxW&#vPi3hqU>p3jwSBFvlWRZ0`REgvqKUr{P12=|IpW3sy3JsVOgHgY>K*$^e?m5XP#|ALj-*eHhM{n>*(=lW@ zq&PP~DnGTOU8O0cB$hzE>Sd6KLANkoDiv9ds!~d(m5>gFKV}((7v7gR7f-W!Ipo8< z9h51JXV4^)Y11Zxc%^fy(!3*pohLCy5R7EHw`d3pUb~`Vwp26~u{L(L%K3) zF$^=YUQc3?j&=ZRYeL5Wd`f(M!W%o7{Ovhnb=?xH&plSw1LsA14|2C&+f<7PVp~d9 zK913(+^J}X!l-WFzYQM*U_$Le^MesxWU8OS3696*8`Nzglpt{sg(&7aY0O*5aH#Sw zpr>fs;2N5O9E%1ZH#x=8h`yjPr`L%$tA2r@S&W!#t(_@8MPrydQy=^ch&yTzg_~v; z1mkl6DSlvs;F0ZCnXm=w6R_6k;kBrAK(StEVY~|x*Br)NRDUA?ut8(A`c#~9N^=Ch z$B5i3)Bat;-rM%2fQ#B%rlL_mY&1Ba&QU*SESWZNOEvre9YYt*@5b>aG~;d=jB<5u z*(?R6DuoDaej+|-#gYuj4C%_U^G?|LMg1XAsyV;Te&(&6@z!1YiPS&rIi6=4xsqP}LU_%My@4*<|! z(DcTHkd6Hd7D-X%Ch%QwboyBk@^IoSNDziI661>SK7t*D4|-Tny={!(9+DscEc-8y zv7HFa$PaD;_`7(|8|X3txu7L3hOs5!YGu-MhZMKXdxw#82-x)VJs^~SB`>mPhYRlr zD)lk(HG4R%yLrCTVtS_H;McUWxZEEnJ-CJm!kR6R&-$;Bgt!o}G zo03f!C(S8I<@y~En3KA2MRS3EA?G!^L_ivb0KNjK7zTggSc?O(7$9cMnK-G_Q19x> zwhnZjF`n6);~0;hidv2e)@|ADT?JGOPsF(L-8#Oc{g6ZP@}|`KgHE7#WBK&VVhCNP z=#7x0I=HsYuQc(U|5J-?IWZ~&s#7vXS7Rpkmq6;r&1gEo zh(ykCQYzOGFZs2biu<-nt$xV2BEMMK1#2D&rIKXo@mH)Tt9gY2ZP}FGc{dUE^)$U@ z@t(S_*}a<^+x2wMb?1WhXwZPHXq%XlX(}e_SgsMa6F}N=Hj1y>;($7eF6|OW?ZO~( z+My10f?NzCeGjc2B^{5)84{T(kSSQxFb>s?)j5cBko|>K`p1O>ztOEa;A%88d+JTx z0>AIngvES!=bdJTbQc83y0SE1k$MjQnZnqL<0v7enN)Jz?||7`-o<5eEd^HX;F6sl z&@Y4FLp{MQ0iJ0bZdhPYgq&$(-|~HFt5wH0c0UXHa|gO4*|yc5LezDmRH31yX1lWiCslLcb|+e+MM^A3n=H&wTfO%W>P2X}%> zb?z??uyE;f;y>gIbcFtWuCi*YFe!pgD;-qH3k!)Wi&!z(>5h~w7;lxku>@sM^isF!Nm}>ckyG)Gu`A_+&pi(choHxbAIG$0C2f+-n?JaMNSY3 z5|4$>wbb>*k4}AivkaI8R~Wezacs6V@Z1`NTIYasb!Ek$l0)wdOUP z-~pFqeAL`Hmquq*j5(u*=&GN@Fr+@aB;51Gk4o4ip=67)9o!&D-E2Z>l;uXS9U`uMM|VRGzOe=vXMUoUibO&m28GAG7SP67L-n;GW}$ z>i)AHGXtjF|5NGUhm4Vty`jVZF|M*|wIYbpJ}xgA-Ydm$M@o{1vRo(?iV|G-$yBki z*yyy1E1YY4ER01p7&`-~aTC=A*a~UO7KRhT*z@Gp%1MGbRmqf|XW!j;tYTc!{d_TW zJ8?aeOC;Xv$bpvGOIFGy87vOc$R~z#Rp6^tA?eqWAO!_7z5>{nuPPP_Y7I&4#|u=@ z?L8G48~T&Af;InX!|p?mO0aKj=Vpn0)4!=k{T?Ywt6E+{T)>bZXF>K{m|a@x04U5o z2ifLh7FGQgm5TNAm?5V)4fDS74>jMiE2bY(1I)H!?siVTf2UU_Uxehms{uZ1-uLkj zAJ#b|!_x!c!=?ay*ld6gdx~f=9#qSjM=aIjVmi7Q9TRXykaC!kKi_%DuAq|sVZ*Wj zY*-75V8&b}2prZ3oFzOU?32GSw3k7yIDo2L!GFWhdME-gwAX(ywD*xh(&w3Cmk%cN zi|-cnx_k3)enUHuf9F@;uZM_vW9Gzu-L(F3Vd1S^VIb=N<-+zq16){cu-4|kUD%2L zaAB>meCrzk7~10x3~jG!RPtXKS^$fjb1AfdC^H9up)C;PLyANKLHdKCGABOeTnaH04Auc!q%iqwSw)r7Arp7<(Ix z)DZMkHpC}|cH2!n5ik_s2&vLgKnI~p1_=?+l!LG$|6{{apMGfaUpDN9TFgD1EwS12 ze52in@zHeW9v8HMtXc{Sg`(T4stCaJ*x4UYEQr zD#4T~@Q;N#1<>%XAwav5$;HX{Q(*=c;>4nrD!u-S|B6-$svx_65w(Iz?*YuV2Y}i3 zX`x`M*FXTHq0bCTF9;Q05j|Ch5hhs&&h-!wt@OSS_@B|r%ul;Wt?(O8oi%7Oi9hL@V3=L@Py`J(SjeXnDnrtg$zsFRrS$u#3;TFLlw1 zn4U*`dSr@DK9sMd-CQ=m4}Q!rTQpP?E$kb}SuD<1$F%w3^jY8x#0y&cN`A_f&a<9s z17Z$alxp!V-#~|>JL~>N+W224ELuTh-Ci;hGBWnmL`jRv!f0+Oon~QA?KbY_Of07t ze7VbS2ZjeDLr0cR+(Vo<7n&NNi*9L`Fi)a|IxJ)Hg+#^lrxl4)GUsYxCyhq%9?-KZ z5?EyxxW8KjX*GUQL<@YFuvXmk4cS6wPm5MjB(r2qkhR;Z8?`EF;}PdebsA{^mQm^9 zZdl@(S{mBET6dzC?2uGL7-4POe`G6#{$wjLtq)od%6YWbJyA)9u;S+dnryi&H*o(g zqWd`fi`IH_N(Sn)vhVB|AX{k-=*+55iRbW#cr!NY8WGfxS)A$Qiy9cskhqYTtx?;MyS<(%o_OkufreRlmb*xBDZvFMQ zCKUl7T6V#JLmD}Mn(+0&<1pi(R**yC_z@0x6?rXQstZHSr8w%RqQ?%e*SGr$uh#d+ z#Cx8%n{jKeez|8pw$z=Xa?_FLkZM}IjqbFkv3VM*%wOyd<&rXzWb57)!ChAgz=^mt z_$pIclJ9u_QvQ7O7;M;gY35IfU#}x{f`D;1=89Rt*y!aVvTbm}Oyq;^n>MUtv8}Wb zt?i!ekXR(@S+DN-8ZDqt%fAlukySSR(r_83T_^p>SQ4kH*wPT+kL(U)0Wy~9h~&xC z8QFvCc6Cq4hI7BdBo%M&G(~nfU6JqtAU%h}h7mpT}ULb}8Fhzc7(|@WK*nc@ivJI$$ z|9b~k)KJ#}V7$`)Pv)K~fVrm$`1$z#|35*3`3l$--Z{Ucra|CX6_RiqIyNj@;JdB{ zKs09e<$<1gQkWbL=?VOGf0*ZO?Mo5j0H7+THAzf#+urf;Q2VgAe{aqGcHTo-*IgKB)DYUB*+nuOnkq9`ewXRiQ?XYS? zHiwLyV7|*sI5$fx@s;^ow|r}WVKu7FvIziD(~xa5TkTyoNO&7cUczfZF>e_#8wX92 zwn1OVmRQ-ER6XZ=Ng1({D2`uA*|{go_yi!6l(z5PO=ILU2R4LkNInB!0v9*z->U1CHYz?dYJ^?Jg6#6eBH`FILH&6= zW}g2nVZND(t(8Db%l+Hafb#X@jrDcYFYW2X>&Np?8!42>z*}!O=hr{F|IlfqeanC} zCeEt>bQ(9ZehvVg23A`GK&Qdle6}Vkpi15JI{vnCg(3wxHpbkoc*-tdnHhlpD`GSD zK)Z+PF@d*Q*b>RHI_W1)3e{ZmLX|H^MtM^o5T2YU0J(Q5b%!S!WH6@?*Kea zCIC-kgoDZ#7AOm7%5mk>@evJe_L1)dph&i5L@!i&@RrsDf~)4Q;SK59Ib(z-C%n=A zuniM6H0=!45@e;KxCI)N($WS0L#LVL9zh95rD;F1pjMb}K9GQPhT6qF)19hom%y-2 z@5iwqX7!&mOs?ctDNYa?2xl!&z>4-O=p)ZXo)gUw$RiP+r+;kN1CMXyB65xYBS`+6fi$UF1hov>z(m1|A>6uPg#XUmcq~AxSpo4NKfjZKQssb zK<;ha+=OwvNoTT^$c!Ho)^G?YS18>_+TRS6DDDS*IspbqW(;G(>F2tq1O!>*r4>`Z zzWY%VN9~~jb<3Lv$b2_{el7ryMvlYh$mVC8_Ki1?!j-_gWH%fUr<5|gcTU3116+wN zqzcpt)t5S}N4SvY%_bX7_TE{BgJ?m^LliWBVg znAYj>iPQ6A8$oxG??iMQA zXK&hewo)0>4Fjp=U0ca=tf<59x1PBc`wZvfUUSTUd+NABy^g#vhr37n+&#tLi;gS<^Ylk4ZaX&iQ-(g$P;`=%;D-MwP|Xe zCcrm2Zg2U53Ufbh9D(HE=Zhhug3m6m&>S!1P@&B1S_2A|>O_Q+kNp9ku zG#kZN?MSbnylEd>Tj#Cb+;BPNPaqa^wr#hgWW6iYl&UeypBx4V^j zi0s`!yFPy_2&$FR!Y~GMt7f=dpf(8f&yiV_0UqmakF%`!(cfDTKCdT9UJOn>#=k9< zO!sNzinB|NCB434g>F-eW*W{wv%X+%QLcjd=HbTrn)Mi=o$3>#_p8X2UDa?!|aOzIK*)-(| znJb?{u`1Yb66u{ihQ7#|>gJTil`_#wA)89oErMwz#qG|qk@>j#Dg#*?h5kL-eTAON;G*>pl?zDm^2>`k$--olwkdDM)%)Olz+?8`*@*z983Ghm&$*k z13M3jt1XY-9!*=>j;>|_=)kPc-T;`M*h~nW(2=Owzv#etEeW4Hu!!qL$DaE(iJ$lO z5znpOt}oHQFAH0sVZIUh{yt^bqwj_n9v=0LD%DMh$bN!K^zsm4M+3S4B|ak+&2pnN^z3-?Td}U7Vzr zXvIlT?_y@C-F6eyrL-;%sL$NM|HL`3fUh%M1!P+@^I088lbE`(m88ySmYv@#X_&E$ zmm}69ehEfc-71Ek$y9e_opQ;>Rzks z6A{ETo%s}XgJUAuuhZ*~I4*a{8_7t>84|JSE}AU5>QRkJ^lmX{RE!$d{tPda%vZrq zkoU&vG2R_XT?z^~`&#k#FRdCPW&^dq0vlsV{N0KUGY(B+^K2q?2BS^?@PVV8=O_-H z;AxX{TU084_bXX8Bo*CF@O!!xnp_(vr``=v-I|N=LgS|Z<@yL@wUDwHnCthb!F(DO zm*w?){{g+T&GA9U2Uu*9{d^ZKV6f7)MPQXWPqB#iRC&LkbU6Lljrw*N{_uezWe8dF zbxv;Jdizh^dR^TxNQ)O1zoZPE;gLwh+jLBZ%S)C@iUf7V0>Q-RVd@sqm=)@`q#dc~ zgZo>^$?kW{SzFUAk3o2;IYG*f9U_p9&1wpo7^Cj!QYL|8C@Ov;Z|X`>y<3U04+BSL zWmQAzp&%;z1zr;G4F&iQ{9fD3zHdqg zyF7ZBj)3r^PI=~42cklKVeOXaaRTmu2({9PtM0#zjE{iOcn^1o`naF+( z=oC6wQ2+hgHn>(-L4T5&?k$L`QuxfueaVt`@o{-!+nmpk!?EHIRYyxE4G%wh&qqPp zShDK$r<_%X`m2Aa5+4f68<@LyOD{=tOLZAfMeE2Tl`8H^DsHo7wT zhyJ@01fme|b4uTr4=?T5^a?T4#4PfE{gf346CSvqKmo?KqbFP5TDHhM9?cE!E{6sS zc>8Vxn$nV%HiZS`PFbflU`3`>?-W^2P8EV7PmbFD^%7MHj~7MjCLx(@r2{`o#~a5} zH?EQQ!D=feYu;eY1ZhYh41pFgELG=XwDi$73PfwZA#Z7T^6Ydk->CN|&5C3X4$06I z8u4WTNy%5%$eq%F0r~~>eKG~87*rb;3+|mvAH{^`pM)z&B|-OuK1vYP4MYkFuq1uJ z9b5@zP0*|^SWbR&-StLRlKK;Ezilyho`7V`;1~I#q~{mRyI zL*&GoZGQ&#h2J|!!VXo(*Ya!Eh7oT|1KI3yxh|_0pNf2mbeteP62i=kSqD&~_sJ*; z2cd7Buc12_czZ{ccqK=>e&Wu2XLsu4%^t$wuxEI>-3KKvjaB6BX~MgXkrt2Gi+OwV zT0X-#;_wltkb^Dtca08?0GOolu~t2a+;%`}`-qrZP7&jZ=Ma{0L3VhxbZ#>SbD&Pf zq^@mlPoJD5M=~G$k1)?m#hwD1Vt1tgUU)eWHA=y*c`y`aIJey`h^OLRkg+=^`+yoZ zro!;<#+`$rMigo@iUtcGRdeWGvcYWP9noE~GGJ#J!c!DtOyk|Ccx7(^$;9VqlR*k2 zoUJx2Kep*>_$XK~chj6DbqKH(1{-<>@YYkR7wl1aoYo13c>8+ylyXy>Z1a^cCSjhR z4fV?yux1`-=Ru>WWANWnHH$DPIMWd8&`0nG@BQ{MXdN02quxM`PY}+Kpt*aF=y2V= zjzjjHc>=zI+%mQlY)t4NoqQ8bk;DeRl69NBC)5qP?VQ+u9)R=U3?5)&SHUY8$27Y^u8cMj?JBo#4wAC=8#EVloD{7T+M#2k`kz z3bG%rKT|P&9sB)yvGO`U^H*rCbjhO)3Gg2Icy;{qd&Ka6ZKeMG9x=AlH83@_`Y$&B z|Mn314>F$0e;k^tqnIL=g8w))$NO<;?(d_myw+{EQ+TjDm?`$OqszI6`VIlPo^vhI zt@YTf%w9(An=fXA53wRL_}tHj2Xy3;ilhKA9wAA|{h&k>Q3`H&G~Z0- z@5!GIiv}g>Mj!Zd)0T#4$QzT;^VJ<{G>Ob~!6=KQRfh@yWW3oAGTz~|T6yqrqjbDU zSk$fPmR}BN%#cE?28AAs^j?S|NWEx|K~KDDjKmF7H53&p*C21P-$zj7MU6>1b+-p~Pl2e260^Ap ze{MZ8@>(A}10rlz>}e8gv~1@72=b~zMRVHwrO3N>u2kyrSL%p{{nohTKi1pJ5*v@u;-86 z`(H%7nmG*BWkqUwtr~FZA6A9Y*KB)5s?2}R&2g6)H$PGU5DFlJQ$Ir+hW zSro1V07N{9KSVsBjEoPTpM*}GF4@~J^QVfHFEK42m@@4LLID(jP#~Hkq!bo7`rIpk zfW6!aPcB-PfoGwj1$umv^&?r{JW_|Ni6eqFChs*=3x`2Z73-lD-3K8=oC%3O9!<6j zjUm6VdkHd`D69LiY-}#uN^RT2^Z`>=HBcRkJ=Pdlw=6o!PihFj!{bC0C1q3^E{zR{ zAx{tn)KoD76nIl&@>-)v1m_taw7Pw=df86C-H_1m@AVFFDPu&Uey*cd@Bk7>!zipr z0sVy9%?rnVSVTqWa-iu8syVp~NU%9%x;&lH{+uo-)%te&;qqUe2h0FmepfN>?-CyX z1<+{-d#{xpu6w|n#0|;XmE~+ClA)p2@GXH)oATpL;+I=ud=tKZ18;nL_k+v8$@pMP z+V0IB;jJ;&!3txt99pu9Hmlvjx@flG0hp;+DqKO<9Y4ZoKfbkfR=6iJ=?od>7Jy8U zI0Y;0F*|r|g#?2niF~5NGh*$Yb?8H^oJS6vuT(>)!LuwpQx=Ycm-u-&)iqx36G&#( z;$RaSZjw$Zq{*8Jp}1vdi-{_UzM$?3y?P^TSXj@Ty*2(z$teVmQe9*}9u(OM{pSb) z7UJp#mR6TUf0UW06Flb^NJfr!x##(-Mk&~WI&^xiW;s=1JZy07b}dYn)u~|vi7I_B z{XE_BdhXKzmSR1!4e*t`tiyBp)v}mF2fyl6&)c&6Q<80&ui@Rd3BgupLzU_|Z(8o{ zWXsFvDb=(s`6qa)x(6NEN_JI=z0JCgkoF*!{L1Z#+r>eGLkH6#VQ=iy%d^i_J;h5? zP$tM`2vT#cM)`^*+DWKGAw8bqQnMoNm%W*X?hO|PdA`fnTEwu}uGRUgNv;mygH2p) zy(r9v#6$%cbg$H%41!vZJN)(=H4u&b=>}J|T6F@kFVB0Y&mHTn@4Ms99qpd?Pp3Qp zU;nIuXRGk>mwzbnVSVuh9slw^@P&K7M~Ml#k|Fvt4M+^Ag$Ly~NC7JA&o(!2M{=m= zy$&*DD4?Iy0_#|i z{Tem$`=dLAyKsfD<`*l3({mT*GhLo5m^VMLcgWJEtmrWuF2*({0PG#w7qz^eV|cfr zu`!;t4Xl}8$q`!ZW=(3s4Lz?m<1*diGn*3O6`v4jRl(P845qXlyH(YVNjhMJf%B;* z(+C-b$(HSS-ZypB(HguWVBtf~InOo+xQqX~fC@6ZFHZpQ@;~I~pM?n-@Co_9O@#d| zOdq=BX#bzv=MP!>cTWC4$Px*vX-xJXVC%0BU@PU{z}ABL0w51xP67M#tRL84Ji^AJ z;*?sn$h4N>aZ-60)@?kQ3|%s1lYgSV`fSN?&Z7=9FpqNth3S*NWb|t6?l&D?DgKd^tG@ zJY<+ZBuSwsE{!rQR3KJjFdPq9(#F)SKAc@VHWPCG>%91TD7m`Fe_(QHj^wemaVgp?5nDp~?}zjO`hDk!ICmFo`o&i}`cDt$_h$xI z0IrWwcs&4~a9=V+Oc0_h_G>hIt9fUI^|ag-2ACPJd>({T-e~85tSsb#Xl?&%`Mkti zX^0{@5FP=e`}<@0JP%ktr#@UB;BTi@vBmgX$^#us<21c21{ct4N2Os37f1?RL;#l0 zJ|A2kLW_Pz1|?IgDmywdA{h|2{bD`XB_=j7*YX8&Wj-vC%1DE+(UgC*l*Ei0D|C&rdI?#r3y~e=z0j~0AT<+K#5f}HF}J>+Kw1JLKvwkq;%;9ypn%&>n5>q~-d$1by_|Dk>Km5@G)Z)2hB_g$m~g0!V~4#5ufLwBNe7?}n{07bL2#rZ%-EmU|6$Vc$=!L4R3- z-J(AcE~H&hKe}P_WDh^0|AHE~3fMh2hbT8Jnmj=FX!2$G0K(Ko=|GMuptza$-W$Jm zCcpLfP(|8sXioZk^#a5 z%K0VH#L2zn&U(i-F<#o7)}Ym)q&kd~8K&LMkKU>|FL5YAZ{V$8yhp>*V-C?;u}`a0 zqLELag(tUJokXmfZ&9ivfO*;}=F&J$c(X46AWVam$~kY$t!vSzr}xy0^Bxj+-lgB* z)@3Q1RwVRStMdcdd`Pos*Fz0w`C=SybcL9`!ZAya+7`adY8rwuLcs?@l$azP&K%tv z3YBkFuImV(=7N+|#=BrLF>f23I_NLSU2|_M(F=kxD**K9;5^Ik9xj^4-L;7Q0R=cf zfvkzsQt8%Y+H1Y-{bIZYvE$wGZSVAP`5xc%`T1p>W&iv=DCaJRpXPIZOLM<7n5FgI zMswP;^f*mv2@?_!hWP~@K#|ZcX5WrXQP2BstnpC3z|sTlYE(mVUyf6`C=2uR zLKKD{!TU&ks}@6v0FBZ>oAY>iPMs!U34c~@GGz@aAyL73Y(dnZ%C$XxFsl>`8GQ(D zcrx2RnO%n^+w2XouWIxQZx>h&Ud2Y6q)_K>s8l|&c&!7U|K%X*cyr`9FiX^oeHQ5E zi9DALt!?VgZR2uCagomwvFV8{-9lRN;0U)2>#r zP*dlvGErE5icVoBDg!Gpo6FFY(RW)(z9glz%@IX~f+mhaibp~xrXgVU`MNdFIJ&;k zmRvQTYO!R2l}(%xc~5t4zn0q7q<(L;_HJ;@JR})CU=I2cl@=eX+c^w`&ML9Z#18?^ z5=M*(7?yNpQ|a2UMp)?eDSqS6>#@Ue=ObE8q*fOueacCLB#zG8B+;>4!Mk$k=5QgQ zeE60G)2=RN$o{K^h-vZLu6(qO85viME!~i0&4CdYk+?3{aFMjiSl}_&cXNO&0pIJA zM^;KSNyin2MHvQehnK;}{1%L@Qs^~E%Z2+!K|)zR5*8Lub#nEbitj#{yl8+bW|!|+ zA=KCx$LAlcCq(!=SkYjVl+!`vTlWs97O_O+gkPQ<9gWH@(wiuaa0t17&CF($-{7Pw zXpATm`Yyr{3O*uet#3P;kbaa{;Ae6&HskmSU82yhlTU4Ql!DyYR>Nu}FWpkfSFq~h zS}iN*_iJbO;BUv8NB2CpK+B~wXq^@JYlrus*)H60waEZQO~WQz7Ly_5T_2@mPTqu( zbk+q$yDfpjU%N~L;O4X~J13E0inoPDKI>MyqWIPp^f=27UtAtkbmP>J`}!-g0ngO& z?dTa>ev3IAas7--2OqJVg#-lqQq@uiQE=EDrdr;V7av0Y>F`^We7PNSj$^WKY(dDW z9cr&1)ZHgIHakPYvRKwn!gX}jwIyn~tp@Tb*Hu}<(xe!fMoN4Ntc3*J+7S+p9!O11 zBn0;R00-AwAp1x!cc@o(lrq0Fg!}`jKm>l}FkUo9L5o)j9uLj>pcQ0F8Z^LGxp9(32d^qUx56!JDvPWS6PnS}aW*S|(T z6`I+!u@y{3-9=zE7==zk}TRc74a zq#Pz+$vT<}cAX1kSb!y0l%Av)IEfw*(-9E(egUKZ{un}^xXr&LQW9jrIE9$_5WopT$#kQB1O;Ph|Dgn4D2S*5^4 zNQ7!R(N@=6Vz;x2nEJ}8Ml-p4i=kvTbKe!zRle^- z#DtMpug_O4>)M{T>WJKsC>a#=+j1g)?Kf*Z*L7K3(cu#wyCfcEHQX<>BXyR z>#-JTggCUx%@K(-FE^UZyU=SqBhw}PeG%P1fFwezMcjJQmw(#WEvK2!#seP?r;wb( zE>Jk>q}1nmG1*`I)#@DyjRGYzd8H-RWB3*EL+XCA-h?;-r0zq|{#ojN0&>CsKK=Xm z>;*XL{jWd&yWsu1{iN!$6*dc!$G!45bplZ&TV3ak5|?m! zW+z~0h;8c4eS^L{|_;jB#s2xdAvnqvMGe7 zHLoCfm=4=4^zfsL8?V`D{3+cAH_a}a6Zw2Fa{Q<26I*w?Mw#!)CiL+kNnx?)2<`7a z4ECKA#8bkv!9GPrF+bDShm+@E6`X#hXQE8|Dq3$w?&xJFv18XR$RyL}ez(h4kqfdj zvec@5o!2)+Q78G4mu5F#@Ge3rHro=v{M7sxmA!?KrcsFgaM#;$iDTdWzGsE zb2$fzWogxbF-(!oFHb#Zuy1+JglL)}hQ8;(-_+&~j~|HYVqk0ztF=Ie!LVr$jS|(K zXv&sgUt{+qY|aqICz`^kTM;ReC`p8VXD~jmR(eYzX{LX0D#9%KDrVGltRMi3Emc=C zwFZW0NDln+)GoVZAZPHF+IuA393&b9A-Fg+n3O?)sUpc&Qxb5{`em+6QUZ-zK!`P|_z#Y`-6Ow2tJYXt9L_%DYDg~YYNl@qNT50uwqoR*E zdQDz;2SpQfVYK))rs=i6?4+Wfvwm>cid2^0mz@23ehgg9ntL~jViFCZ4l%J1&uo%L zoTBAR0+uI?g3~%ReEQ(@hvGr?0Tj<<#{mnVc#@TW6mKNIvrCWerqo-3O~QrL-lp32 zg1;JN`XdFLc}Apx<95Ffvs$f_UHe#kt8ar23Z0V8lg)n+$=Aab&GvxgAzGOQ>$=Vy z5_g6qv+gb*#jU&hXAql!1)T>BVjZQsJGjjEu*yrV>b2b~%BiiIukR_VFk4dROW}`I z`vG%s+ngry5Ghz172CBxbk<#b zND1+njD?@N(5h%CT67(yv~bR&*BmJ=iU(p+fsQAdQAJf2wvj!nw9LVA_zP^kxI*2e_Z#{9A$5|XZ za(E0txm!iWMvDk{ZO&0_HJhJOtHzpoCDLVnOJvh#8pT$q@bQ9eF#meGT?|Nh-Z28WOq9t*iq0X7F*o3ydMTwFuEq}Z za<&y9-M*0gn1E5xM0OZL4Zn!QMiHsbBcwn8$*VH%vH?b03`GWe77eJAbD#n{A5(t!tL{j(Lu0t$%ptof?ax7 zY%wpjcz+=C?d5b``~B%=fG6|q%>za8lHMwjDzVa06XhW(|MVJ-xH#^aBLerJ(U4;- z|B`!c9!7R}sd^TAPrVDpdLz}DC!`4NB;o;m#PRn^6)*mh2EQb!Lr@j7jnw{r`}V7O zqWASfR{sV5IX~kUi6}&WcH{WF2?7_hsIMpcj&_r#lWEj%eVe}6Pd&#g6S%#zf#`LS z#&4rQG&@s`<|lgDi72#H1D@k()@h#B^*y?*wI?U_gl2yAOm^e_f+e|bRR-q^hgW_i z5k81A4mW2WqqC|GJS)%*9%NL4nC(4rXl$)6pIl}cbloZt$sCjS+&_oGNhas830wqj zJ1TcP+Ip>$Sb3VFVxg=vuj&`P7WDjq?-5Qdv`+!V^g}ZLSxkcfrB{mo=iK-|j(7ZT zP9}yqAd`FnxSCl2EaV#yGhM!#Fu0a;S`T!pR7zQ?ivc*^LCuU@6!RAq0vA8#q|rRh zh|eN+!0jS~lm7kWkXFX?d3%@P`(l2EjNJ<%Q*4Q9x1lf4*zZUGsMgJd=xn_u8x9Hf zmRxO;oVH!oM%qz-o4=bW+Rwqnq7@Ip=(np@3(qLmC>KwIcf1S6zr0D5N#jWsh-ga|fOJIQNf*3> z`729e1tM*TXiFDBPqt=|^lQzoD5R-ZtVlT%c5c~X(#SXY3FnWl7g zR3VvxgHPLHi!a{mxNOv3pFfc;z}H} zJ6)Ds0!LQ}BhUw|8WY5xV-m+Z(RzB0?EU28RoZ47$)B@@WH5MOjD@75-UAMDe5-1- zN%>fm0PE7X87(0@{ig*7_KV3Qi4L1F2TrqWBD8M0Vw9KVDD_6+E$#A75lYKmI(~OL()bE>uCZ$C5D>-nCI>Lf=Aa*3g$TBf)2{Fr>NhXPiZ1bb}fQG zhb1@C>9_jY5sM*Qi zvpJ7kFJfW^|F4xJ*ja%F6)W<*;X1DrUV6hvwxDyxP{q=TZm{ZSr5qa4TCkpIM6&P`mpz zplW0`0y&QKXdZ^7ttR6Ejn!X#!HudKMu5gDb37k^+FB9Zsu(5K8#c=C!a<-#4t8tY zsCEKg#`X(8nG5kkx~j1LfQ`AAQmn?N%XC1-M_E(uN10y~-GQ{B>g{hc);m|j7Y7;I zSgyW^*YNm&$E7C;oVB75xlZgxZh?mNg66=OMT@}dmi8y+X{MM*<2a+kThHJ#tHDae zoK1?>)hJw^Al$|IsxQwW7DzWDg|QmAb^N`6L)Jop`CwM)A_Mx-Sv`&vqz2!HyL0U9d?j;r{Lmi9*?bmwEwaCXCsCGrz zmqJiK%4LJkxGZ9j`n-KuIF+f^jVX*=TJL@Vb`b11svXt_P1kU_zjYSZJUhEN9NVY+ z9=?Lg<&8@?5<;%mH$wBDmz|Iwj;@^TG{%-4ra)-Rgt?7-2T}hxu*TIvQsBA}PR-P< zSmRaU(7z4oaqS=*{qp?KDL@z9c{2D8YVJ`h<%@UebJ$szSjt80Iq8)~piXcpjNOtCi(zKr2 zd9}go%N=O2H^L+Pb|U?t>u!@ItclaL3Gt=G1{*R^1o&tFq zlx1arrD@X@jiuz|2in<+O_t)EHYf{aRJIE=C!%e~4}Dl>F6n~9nc(YNQ(tt+am$$J zM0q_2I?n5=h7-Hzctl-UDl}5J=ko0*3b!O~(a0WROMl6AEcg1Wm%Y?5=eDxj`z?pb zq3XScO*tQOb4FvBDu;I3+hgtVJCe&|bp;byccdFy|FhLs?TD_g8W6b75tlOYcKjc;d5SiER~Ig z*4S&mK>m8$^TpjZkMX&fehV{?=w)E7YW?p`O}J=1>UrN##kW zoT~bQmtg`W)f<-An}Bvj&GAx|dQPIBF$of#>_0LutM@*04zXtlQFc|h=ADAwh{x3r ziMJzz7g*VeV$mG+M}&GhiTa}`RVJkP)^T#M6Z>s0jbhjUw6*V#wl?q&K@YGPljSP> zB#fWxWllTbQ=7buJkE&KD#5F1FXqmmap6s*xQ8A5)w3LtKJx1VwI?vrlIzeya!FUhH!xliPvC$h+&PEQ1NFb z&5M2a2_P+xFIFFO)!pKE6w@84Ks^?085^7Z1^aeVM)6p~P^Q(PLWSU^K?UZC%dJiI z1`o6^i3N!?hv=n7MU?#`Rj9vQ-3n{0O!>0?J5=S{*M9OE4Zkm$>7Ch+SevOFKJqwZ z7j$Ud<-Y)V6{+vA%W%UOwH_Glfhj#AlN|x7Rj9tbZKc4s1XAv#xVaLF#D*4z)a$PjW`lYPPG@Ot=QngxY3KeU5Pj&?jFo>~@y;nh7o` zs36Vb9ZH1bG^$Z8e;5`iI)*Qr5far53J5(S+L=CSPxX%D0?$58fDypsz;HQ82$)I0 zpC?1mCj9b-cn?J$oHqZ+&~h4bkbWk3a10Y7`(1*jV)MEf=$7(L7VO&@|Ef`+fvA8l zSj=*`$DpNr6gwAa)#(+rUJe(WHRaLCr_sIppg7WE$Bu(Ra+vpi;ii?T9!}!J5 z;4~2$hZufjXyHI9i9Cj3)(X+|s6yWqN_*AzO#!F~M`)sb!l$PG!V>^0Lc_8fBfF1( zHxDDC5Gg>P(T-LDmQYX|87C=%+u5%?cYwGvvI8ZTHc5kSn;Z;Vvbqz|6hOMMWc}%4 z3A$A}+91lX_f|i|vhZH9m`>1j5~~N8&}?&EE$hu$aH1+=mY5>gIQmGT2}MIJf#Si8(~mJr3gs?l!#LhBx)H1aZgEz!+ z1lMLpj6XLjzqeI78-1{YKbLI}ZnElB=00r{wCa;;{X z;BZ*8>BQSLnn(4GkYx?Wz3MPj6HJqC|*aRBfzbT%Bf@1 z*ofHa47Pxe7de#ch(}j*8Z-}QPE8h^RFO1_ML}KC^yX zO;rB^7WA}2aF>~U*K+QTb~kdt2FuCRyiRq@2-)UPPNfIS;BV#nbeD6b*dBrvl^J~i z-frt|30>-|ODc}FvQOmNU1it#3UpSg3Z)o25p=5K_y57wQW|?1UU2u!jJUy0bhKF8 zN?kg}n2Zn!=YuLYnvY}SmW_DV3ck41F@|k)eGi1{3nqDU{Jn1a2L2vLLZAA5KLBy` z9y?( zJW9>~V$~kTyAeeRyf{4)&J}Gv&^7p?P#PtQsffCMkE6*ZPT-hDQJELDu&gU#m3ijD z<+S{wCEMj{ohjzKGhufbYprFZ(QOeRO^tx@)8$zpe=bb^9>T&Lvl6Gnx{&3=w2WFR zPx(PwB6`~p{#-((sABQErg55;*e;~JgaN|}G2V#e^7N3o z%(!$4&@@_xMewnPg<^osYpI!+8t-uU2tMq5mL7$*P#g-KzxuvQpa|6|m(b8xYhW3e4;3S#NN{Q;{)%{f(U{==hO z9Gws&L3M$SgS1xBjuMAd>5ZMtG?Pze=8$~i^+RmM!Id)kM!OE(o*+Hu=xZ7fO0S3z zW`8Y>`+|&^s7eWDu^bB-M`=ns4QR}GY}^G}ge|A=y(Aqy0ASC~y{=pS-uR2A>bcS|EcNLbMrs7OHoER7)CwkP16 zMIT)~plTc*pfv1|Bx&K`iY($^l^bASG5bL2R(nMF~u- z^oXHEv(#QZq8}4oN!^qZss1+HvNE+PtS1)YEG`Vyn1P!UJ7N+*Q)H7_;bEc1(kO;X z#zkiYP9scDNnS}Fyf~cKMOIpoM93Q@@>Pb;i7+pV1}_rP@K<6fu@|v4!mOrs&m@g; z57SX$avUJ|P#;8c_SbI~Qr;3lKX?~>=%dwAERzCJl(&KGFezAr7$=+oNE&DMNN13o zd^dgr06;4Mu5REVcsBM9SD!f9ol>B#C?&oYm%954|C1O$^#0*7db~b*Gvf86jI{2a zdMBSUxsIZ~>;n-T*HJ7lxENimsB2N+_sf$l)u!CtEnO~XgL#zz9aj>6DQlToAsFW1 zA*aEzlqJG1uDEBB(3J1ji*p0fMouAtz)#D`CshQV;cxSwiM~;3E3wQ_ilp#^Ok|ZD z$9I2r&AX{G&I=+$wCr8mW+@G=veCyOyPlCq%;hoE5D^qAJi)+Gzl|FAgf3u&L5ZaF zxd5qNJnjS59Je5Rq!MhLJ}OV}U*{7W7IjyJ}Ul#S7v&4asOzrdP>?tT3-N znXJ+K*%Ev$`ee5{lZF)KR5OpeeyVxx((5B?CeN3(qYpc* z-{#{e3*4kbetsd77%y`7a@$}1q5Ji@1H&Sm)UP5vuw$|)ojuv@meFd-afE!QB4TSm zf2i=?_r$iG*tDMwUd__hWY@0g0+}TC)4cUF4~V79rl*4-jAB4bvX6YsQP!Nu$Vt+FPNT!&XAhL`W&2(bzi&uYQ7CF%3-M7Tb%D)UoGLF2n7pERtAXxzlP!ss6>!&XE|)d$&6UI%qH}u7J%!GxP?3UzTPD znfi$EGiN4i2+c1@fShX*gTLONrWm?+#;proKD*YVuRea08N06oPsy&!?3n!lhMs>% zd=$C}(f$qlPuA00;2L4C$az1(yUSjC&j#n39V|C!5|3?-Kc0v$nTRXBX?UMFpEn|$ z^6-X{t9e^$`Ky7br-*tGBFs&qhm1er7UxU}2dk1$2S4Fh)ryPLw^T_GS8UW$zZhg1-+V)}*k9#o9F?nn@3fVXN%L z56{7#4-L8$%|qfAe+&FpP>|cM{}lM;JrLKfg_%p$$F@QOtGG}wJ z`h_%eL0a~jNLHnWUYZ>}A9&U^b%o2dUA5Cp z>e?GFJ<#m6$``NC0k?qAzIYdekYA z^ULB@6_Ka-JoY1U$(+tfajmV!S}1ogQn#55QB-sG?S{(l3w12oe%|U23Jry*ljyVf zX=Ns3vgP-!eNw?sm@onbY`vSWXQ{Fm;O7?LU3m8(o-fgi_X-FgacWJE*x%6+F>ri(p`4vlnj4Z(W`_iLvA6Y__XJ4&VY4;%cG3bHVg zItg!)9Rju#-^h3XxUBR)aM?BfKgcDHxkkYOCwx3!J^{Kx1nnP-P+IRaL-1ZsOkl82 z&-4}t=(C7qN^@R%>(msp!&9WZZzO8m3&beRTBiuZRzx{ib`;^w$_yY*a_c;95LCFL}=>PpJXJ>Et z#lrdP|17xt`+)(_=tS?@uTH@Ym2o?fla`^@%a6lEeaG98bE*EgJ@LR@`3G+Y?uRFA zUpY&=ElytLb=?JP^Z6ORos;#}BVI0DPB@X`>T>;j?CCl^w0h06=H=qJ4hYuB2^!N^i--{p`cs{1g3R+%OfO;*x= zNMuPG+8)}?Be*tn-WJfG(K&JATWT&O%Fe$fQxkBQDSCZS&+Mi!Y`4P#QAC9m_5gm>RD<zm! zn?QFuUfh=LJ)XK`!Y&10bd$5wGLRq?RBB{GT~^v)(o@9eT+H+fosTE?`t z3Lk_wDdPSx>Vh9&nc88|P^U!U5y%A&r8~eZ>%9Zq zw+HgOBAoy_JKFplx(4U=pvj~-U(!;B@hB6IDekYPV8AuTC6;(#9B?v2?&JS^&?$g9NsB+ zF@b|qj0hKh7o3uz^XmCvUJ2c>EuSrWLyv#P@u3$^zlgSz|G|(V~3}6Qyar2PC z(10@jo3Zeh!cndFp@HV#p}{A}0tSs?C(TdRk$#M1BQ>4x^S2v%VE!fn%-)s0|V3*XR_n=_>0s!v7{OzOj0X;B(o5pihFm(=hf4u!We@kP2pTBub{WE{#krI%H zpJ<*2Aa@vhK21ZsXK()rxdXl@+FFdA(EC*>278{z2Ngm!dov?HtAH0h3D{m=PnvyzaBZf%^rr8^Ii^LU*-j{6EFq_xIY zmXx0e)Pz>{`9E?|wJbzlGKG`s$f`d-deA$#!0Z zxMgem_(bzcTCqftcqp-LF9)1m+5JTg57^UdX_Jy7mb~A{xhjoebZYZauhWUcERGvg_ZKe1&4+1v6jouU zPk6M5P7OCgyzNRD+Mv-}xQGP4$w#({5#qE7x;N!kY&Ntw`uS{dpWS4gU1WmBaBtMN znQ`%e7L#573tX@SkHa7f5;NtNp%GPaUsVkEB;w zLKpuOuHax^TZF+HsrCAk4pt5Sme#s7r)~r)je+r+4$69HXz0Ujs3-q(fc7B@=Av3` z2!7s7o4`7-eEa@eHt|9ctfCZ&<*Nq$u@Ysqe!JJrUAX$jo9lDW)y_U+v@ZZuXcBz8 zIw{@}^m)0fCfay@IJpVeA7pCBkhswf%p%v}GzmS2UtYiO&c?ZW$=1~nknh}mPCGFW z)b`uKG5X5-{jD+SbG18dkvBpvwrvb1)qVv3e(^0L)cKSo!U0H=QXj)MY!F}QFCXK$ zAKM*r2)@NUJ4lYld~PVv4xOXnq`tI%w83muiuzHXq-x~^FOu}nN;@9Yx0vv?92f*R zFW@#OIgIXpiPcMEeP%v^<>h%m^S4q^?&tCNQ@>?NxCYboOHL40MltX+n*cpmyD^UY z+>?Zx6YPLoBE~ZbHg`(hC#RszSAUllBJY+T4B;z+-N2Vc3B0?oFB=m7JnI&a`f)gb zw0h5^f1OrFzzK};|N5-^*KqXz?d#%yHA%`r#lnN);;VEQhL=fCYd}VDE9h&yY0N|G z{_zJRoD7^t6%fj=a>&E#e&bY?xeermD`Q$sk9s_{UIb`0!=<4AB7@ZRUqvQNH z7#$S=qci4R=F~M7K08s)hacEIZee*;q$O$AR(ut8B&SdQ=JLn1I~*f>Q)>P~tRC|( z82!^b7+tJ;0RW@ZBLQIavbvWdeS-f6qvI34gVEIxni&gP`~MS+4m+R^JneEFMWhQu zE4gBibd%MK{|k(McCj$C;j=%QRhRUeopsOPljm4Hd8HcdSep1?BCFYe8sDv-hM`r~ zDT#cwVqm3-GDpP=jBf#^%-A&)2LUn)mmFUM4vP44L(G1`bi0n|0qPZtl=S38FKwY3 zyICcZLsc3X=U#Cfd)_+Tda3;W^H43#eLQgL5=fsw?#!NmeC2iL$$rBFS!cGu|FkH0 zZzvEQvUfwm;;QVV>|omw#F;4k?bMT5K6Mv&_5L>m$JhdlKL1~Rqy87-gMYB-v;Y7wl-UtZuQr5cRFh+Z-$g3aRBRt&o^j2GI_OXE>oqu^Ti9rysWCQ-*gOSvdnOWZ#o4q4}4~#v>aXg-)ZPRT7 zQXf>?C?6fd!ul-mSntsca+}#mnP$F1HduEUr&(6`#W2EI>T(^?GZ?QdZ7Pm1f)2N= zbx#(yM!+0b_{myZ*@B8Enux*~*4Se5bN-gCl>~#92sbnkE2z{Qr&Se+pwAOTr>&X& zy6k{2t?M_a8RApLOoK;JK&vi-EmE&h(uUpxOtbAHJkDCmhyxCs{1}UJKd;FsPm-c- zK2bs*I#Dc)y2Eut#nW9>vmFpkLdg^B9e;cOz&H(jU|jhPe)}J|7~k`ETug%*=E9T$ z^FO$lmHnFzvs?cCTbnx1(ew4$xgRG-W(0hH=#B}PzjySr3=jqe{pl#y+t>=8Jz{8* z7C{xrs;Daa>eMEu*Jap_N5%GytA@YfLk?2>B(!k(oTCjSH2Fl38@eg_mTT*FFqe5~ zwObADwO`;j23CdRWVf6Wtt9vrN>Poq?}XB`H?Uh+yZ|l+z0S`E@u+tU_`sM_S~KvD zi|KgB#pG?B=W5-CMeuq`>{tH9#fa;FJd3m8vW+OkRCCKQo0A;t*eHJ~HeqI3Ix{_s zO;$ax2(sJAiO@d-o_3TgrSDHWeeI3g>bo+diA~bcxyfhb(lfUqqgs(A-M65i8JGA& zaOwDaj~P)nH?vw9{o*>m2WkKQzHr-Q9_DYu zy+plnqUcdOyHt?+YaKQqh~Wn&)T~=5H#rB$eUPPeLMtoHZ>`OKR8nmYmSLM)M7 zFMsP~&caB;085I77N_qw^wIor1qJ5v!eRr(5N5;)>4ytyu@wAv;}Ub-X3(c+H2gsJ zfa}QCkn~wSSr*!9HqkB&vB$A-K>IuZ{1>DuHvb=mx#cC5i(UHC|X1uIg zHUj9G;A~zK{mS&@pTc(LfH4|%6u<@)Bg~N}Awr#T1Vfm|H?N@GBF;<>n>642XWVNqXc}d?%i-)P4qt=amF!LPHv9zi0NNj^+Na34|f{kk|%92;#H{ z{kg8Q`PFtd9CXN`=UP|tU}FwAl5xjyL@2#F8E=ET`i=V@3}tTVoUV|M?o!`8PN=O&L32?$G%J%pG!) zL)z+Q3M^WeNnECdKSf}>fRPn{Ti&(AIgi7OqtzC&^9B(^Zo%R&xFhr&esl1D4M!qs z(;9L#DlIdV@f!8&!5K&3cJ|uo-sz#7h$hMtRyV1`N@r9-6Ci*Dfal-h=$1sNssP|Q zJpeq9_7mT~x2;K`s;^@9o~v1+au3R09|+DX3pI_8gQCLFQAX0)2_{XGvxtt44~z1{ z$v10=X_fHkXVHyd;rT+{*U0(_(qu-s$-j#8uXi$3Ra%;7nJ7nG(ZUm=AiBAkj3J*U zv0`5KBCGdl;7dZNO0JG%0eqNV^jGl-MS3y0!mNCquwi*G@9VK9B{n`03#kNLXME(4 z*&rVpDOF~Hh9v93gdkhQw8J=x@@97o6mbewz1T;{=iE3sve=-}Up*{4gP^CNMc?Uh z1jPai9;ld}a?ZpQk+e$fX?p7m3QTEa#V`t`y%XcZ60fF0&5fn)2*V=Q`I5HRPl1=< zlKtT5z~;RDeFr5MF`)7i6u9@|LI6}=R0BU~hD(u?isU$9k( z!1OXNPEruOTPGt}Axjvfq~R6)^dtQw{ER7nygvj}=~+fY@7!r3Db)fT((`y0 zAd#nH3~L>P@?#vja}u+{&{m-~go<)$yhb?65Qsj0-thUN;Vpe1K?N+%C$GE~dV$6H zywo27Esy>N4t=Id=J(#F1JK)Sg1;FSgRY$_oB2A8ZZ#fo58~gf)kWtv zcEZpXUa)5mxAq^dmc#>(t&#T_wh2dF8lk@=wlMJ0t*jH4VTR!ZUz*#vd48hb;y{p! z|5HEq`6c)CyN&mZ7({(jum`>9O~|wQZ{7Yt&K4$}pJ{&(AtB5mk} z^Hxnf?J}`i8RoEVE8}=NZavsS=~AZ>;oLW&ZNmJv>1`@CeZE5a>} zraf#qVa43U#d}%rYnC!C4*stMSt?;O(>7>$qT^wg3B0fTakT8Lc2Ne(U(-TaJ1dkj zb)K(#p1RgM-%ba@n*{aSzdlV6oinU=gy!SI9r3hGuu^N>zAgy9y}n@a-hvKWZxL*vmU|o^VYQIZ2vs9W8nz2f<*eX+BbysOPr9dT7Ozi_Gvvdaz)4)n_GRf zJLmyR?MlHE1{5b}zHH$uKZ|X2Ud?&t0Zq1@e~(~>&gG>2J`XY?(zeGGmc;8J>3HB| z6|VlR=yy4KpQFl79WKwCyY~gdc1HeLD$m9{Sp5N)I+bBvYe>ei^KsU)|6{eR%Jm;r zkzKx448nk?&JSu4!HkJtd7a&d0I)jr_}N#Ij8CTi+B2BgkSTTb7$S1hGjc82KAh_b zePh-3IR0tsns>5RZx5G@@6DDbgf_bpARXT`@L#9nHZX7a_v82fNJk4BLo<{AKf`g% zc9jDNN9zAZgpp&E#$!Sm^_G12$PKVq;;>~3gq5u9COua;sV46Z3O{X73|cwglUBO^ zkZ(WYkhG3VdkA99z;UFw#EQ<&U9{W0B!FQ%VdaBJ>O?~j! zGsk=`A+Q2yWi}U(yMO~DnMEdqG^14+jda7zX=9s#!MP8fnW!?Xgxfwk=3MbN&MtSU z_XA^L_Y}+DR3x8K1y5G6wu1q*%PrmpZ>?5i z`^RrdO$o0vBm9Mac)GV(uMq_UxG#2XJI(oEN!Z$gik|8KeoM(g=4=}VDwS`NXmzJU=8dHrm17OK-s8r~AFDU@^hEUOD|$A5sey-*uZ-Cv z(1~%i6TM8az}@l^^_w!56Ua{EOwtnTd$7M)x55(qEN5?4pV`{mGb2K`Wg!^t=;lvJ zmxca;x?lU;$AwXb@i!D-oOyDRF3^KAq`uA<7hg_08)z>hpn~okDx3$HXH7#^@~<*& zz%2!1?qKl!+M;Pzg$tv}qfzF(HajbRLMP^}(iF+=aXBcAP`jlz?@pjr=s*!%DgNeG zoX)k+AioTFLb>(x zmBQ?cWY{pAE0bYi>8f$NGupP-e^#_?b4?$4LNDzLOuDEiXz!MDi$JYUpLM8D(avtB zoc-a`{29{odEwdyx}kmHhrXCpo!Fd>U=Yi6QrIOHw#3!|2I{(=W2zCt6UTz-kc;!` zg3iV*`vQ1=dY}uB``8!Su0@Z!UhPrNmGZ;YPY%=ayGQ}_Q zyD59UB*ucpk9^mJq3XVs!sc=7TyXvEcHv3z?cw67+F{lQ?VbX(%nEk~N2O66dOuNF zziTPbC3dcsx9NIzHXjk6&H-`sR3S#4y$^xa=V~)p=$~65WnANA!n+Os|4s6}=2_K{u znFu=-i^vZyrd>8|yhn1+QO1eQx;@Ro#373+Z0INBP5_-VmSFbT@OG!&d*qpxA9pUl zP2FR?N8W*jPlgW=dGEpYuOqLG=zlv9{zv5fYnRBsTfpPIM6Wd704|XVCd;ymh767L~0H#dg32RwLr3}DI(}CYcfp87obj9ENxJIKOhoGTcu+QG#UMf z@Co(xA=oHs-BK&S5T#R|_7g2xAxes=HiV%3ia26UYOq3OBca_y(zMGG969*WHJ+MQ zs6u9i{&6V*mbzk7)tW`G`;X#Y|qU@DOU>!nv(x6-y6XVJiLi z#MJ~&8t8fRxo?fUYUZkKpWi&L&fm=EhBHhsI8B#(ye1k7U#!NCwFVnzOhy)B+!-or zFe(VYL?J6~OKV}V+X-wVmy4FQ6xl?9)U~F3Rr$~>9YRZdu34I^A#MzRb!x4aV@#n* z+fen5^A}lanOQ3H8=X6S+1elZ1|EN`-obD;E$=5wf$Ucs0jz7QM@NA-dh6z$>1ISj z@5j3bJ|o;R6XTOAFl8_e#&xF_l#-jMNX}J1aq!OOKCvtE-e7&OLbB8?-!D^Zb=a!V z^P}^>l5Em)>i4^!bO$y=Zy1Fzy+pL*#H&!9>rx(I(&&^D&o##Bqm^wZy(O?o$b{Zj z7v^&|BJR-JSvKu=je0~oBW9tT``nm4;9EVa9x$EjwMH*^ZAim%*5voe^aAP|)TEj$ zMUmp{w&CFLv>Wu46P9)TYq#9Q$^}Pe**54+ea=uyhTAA?rzMGJY%*~h8*9G@S=Adw zftlBL4WfEKZ>sJmG-+M%C&C&(6XzO#s0@RX`u2LT=FPlA1tZJ{$s^iljvWjFOBIY< zoO4Xd{5sYeL5UF9zrYnqy72@J7bM?)&*Jp%ST zd}S?BI3z5};4ls4O9W}vT;R2ojXpu$^>tMW?axZYH}&pgp?J=D9m(V(k2^8O+7yc~ zjv{Cwt4v2FW@W+)pO%-5^}X z%;-fI9&gdjdoPtP8r3%lyb`chA0KoREG^+AjmRB~iwbnMW0o&wSDg_p_^@lzw3hDC zltwu$S}kO`kxaAIP$Y(~Qea){QBhKY+}sP9>FYHw^r}%Ur;$V%=jyW%U0ZT)%TG&h zDAJan_WF}&?{QCT+4DeV%WTZ9-ek1j=tt~}%bS<}T;UhV!)%RvSZ0+k) zci@vDtjpKYtHg9a7(yE3=K#|sZ@?ph zuD4*P$%bXpQAhAVG<9AzLf34aJ?Iix$26a}F@bD^N2^)WlCjn9(Eo7ePy*T|V_98O z7Q=HoKiVV@KZ2 zMWSB}-L@Ht0}W|j0wm-5DumL;j&976eRd;kQ*?4PG`^I#(~GIGAR@9va&Vkc#M?G} zEBz(M_bZgX#iX6e-a1R!TySCwhrM41-d}g*r;{pV8C1(gL@(P=K<{|&rujpxIVosD zg=>^U>%p&zniVW#9tX5I#U`(T=H%ucckXTo_Gfm-pP6C=>a(T9>a9QGQn}D&xu9Zk z)*Ldoj`R^gv}4=>b~lkHrSpjIsj92CPMphcJ8-SG6%bR5wX$e7>{b6^_|2AueS^?e z_5;d9MLI|i))=cnSP47gJ-(r>gQd4x&YIxQ{QPF*e@@2n+CStawXdVl+dJzArr!jZ zrB0s(K`by9A)Y(MlvVyQ(4n-dF=^^%Obd;{_V{h*Y54mfPm=&KA&e|O z45O0byMjr!c5dc}(=OQvBf|l*9KS+GX(uF8D$SiyThK9R2$ap$Ut?O3D1!i0_ewAhtkwj8m} z9s+DPQ@eO`(Z^{VHu{Jj_6ZhIToL4$E86Pj#`>p1QkG}C_5w8g_6x@tomJ)2#&^M# z&@3EVCeQa%u$mNFQ1WqqZcl9LF5dGfKFu6lF5S+?nl85%Ezs?(CmT&`H`_SFKLzW2 zJ(Y==JJn-BlweXrTX-@fdDQt9A8gdiZy|MnRDAHR(LKPgNASNAFh z+G}T*-yCQ#rlyon%e6<9D>DBbB%m-U(am{4R{+@IvaxVdryk)?mz*L>TBlm_C#QNS zD3Rf36c(tm<5c%mK`aE_sKt9T= z)w)$!iAAn`<=1D+M9IEWzI+?+!$zs&I8quSCj_aTF(GA^;z|m)ilxMFq|TyjzOGgE zJ7fnCt4Nl@iO>LNX&goRnb}_kwI4s}mdB}Rv7fE^u0KDAt7Xzj5tlGueLs*W17zJ= z7RzipRT<2@twy0(J&v@Cj$k|jy#cB1rMSyJ--t-ut4h~@73_fgGA$iQ1EnK@XE>Lt z)NBZ`=Nwf{Q_D%0Qj@NP$fxI&%1x_h+S|aeX`%nd7aj(#y^qdvkE@ zzg&3!b8^yU*iE0IP%@(uFU$&MF1id9cp(J-Zl<{|CE5w(Pv&uNz`HMKI)+oqwYir;t?O@qNFB+_mLI1|!G~<(9=yL*+a8U&t&Sp>L zyzo1y!rEFxraM;?7S4RpR}akVc~fpbqG|LXYlsWxHO8PdG$|1TQ`Yz5EUOS59W<<1 z(oK=sBSPdG#Nb+Z@=rumY+iQod8Q|rvZf%zys%96ywJ%rsX7(dJ1kBI*-%Z3Xr>cV zy1@GBlX)fG*_fVr?z!6j6X@E!j{||~9Sto2;lOpK4q9WkakVnk=>`RLSrbxm5zf>w zvaBp5Vb!3M&eL{~yZ<)~K0c;cahN2ndAB9`&o0cV>aZjLO63|CK$c8$$>J_Ba}bNT zJ6%}T9oVf*_j?6f7ZpQT9k@#eqHPLXHbD@{e$a0XE{b53)Yy276ngXn5C;<-4-UVJ^{~51aO)reCXn60;eCq0 zSCwqGs_2jtUF$p7Dt$)eD5u59g%O_*;xa_cbQgMP!SydJnXf_n#dEr#O2TIygpo)t zUX4SppY>T*m}Bs`3hyS}K0IAa)XdfN(tD>`dLu_1fgu3DGyj&O2p15GERKS9g`7Y^z3}3j&6Z~Gs$>5EYK#3@_%^rC1X10Q3n?qnZ#pdv zw>-pWqUR!k&Y6%9s3K^wd0 zo=cy=!VA3R+kpG0~5jzeVZJ1--9yV2t`Y3|;ot!rvcX_pm@hG68A ze&u3glcEOR3;}YPa@)$FOe1@@l@4nX&6S)i5?nl%kN)ZfezdrTapt zX&ylZ*^5+=_#nfg)1kCssYEM>Z;!8R$14&mGcNx@i_@ZqX$ftDRckoP-IvY37R z=x}OJvq>=sm0|3vt_+Vm0o#;CW~Q#!i-dP!%iA5Y`EfgJHGsXFBO%9$_2=2C)J>Tc z_N}@@WvMEqG|84n@S1rg2df5FNJon?rD%;>O~hT!&pS>v*xR2ACt=U{8t$xV>#N`0 z*Q0B3&nP_uS1IJXH*E20lJ@%IFZMt1dN~YUtul9{XdSI*MDM0DM=^jE{cvGi$tYP1 zIIfbH@(gzSN`)%$CGtvS%C#=4pcS72+AM3*u(7yjH|z7eKBeWe&x2S`@p!qH3X}w* z9-vPl>&^lt<8b!eeTF)ly~1fUJ^1O60Rv*ruNB&rU>Po0SV{6PiZ zf-?iNGhK3iIk9{u8y`BcXf5hS=IHkp4s}QuW*w6|`D5X|6&gvpuXh=Ah~9e@O2d!y`>!q4M%G^I&{yYf)c&ax@jrf# z)?RV?;c%z|ldCIzq|m9pGjOaINg|{!yDfZC1Ka87Y@VW~Llei?j9{T@`&2Ks`|kc7 z`n&JNoivCYn`F>#L66rk5xBC{I(9{ceJ?VlzHg^{g=DWUpa9`XFz~_d%URpiKN1yY z_RlwQzz?GLpFRKj2N4`_H~IIw-~a3m*xA|0nz))+|G&PFP-z)cS7uVkDOZNgO2LCO z8_mMTWPnwPR{rOSL{>F>hy|Jfh-{N5jsugUn^9{|pAWbR?vt37}F12g~GACN$%U`wAO zB%;K~gm4m{up)MezRoadO)+*JR|>N+3xFFo4YY;UwF|&DON&J-Pe^dC6BLfjo4$pS z%(i!s(h*ms(X33}@tPJO^$!;kK|f+&7JmJCQ_M-G6-)n@?566rEH;8=3rT5e!)=ZZ4` z980v_cVM9A+P*EAwHGi&Y^qz>H>3L>mZ(id9Ok74<(x9Tn^ZRFUUW0KQ}NE#;9ic?lbL_n9EyB1Lg>+i9obxKB|k{zAi$+{BN8s;>KJWAA}YmDNSTTbnW`B4`_ zSdwNgE^e^?8v;i*T4>>rHwrZvOGdV(&6xX|c~^3p9!TPvy^MeHHp!=gDKMiN2H;o{ zyAL{?!m`9-_4iov?otVHC2~V;0h)P66g~P;=c6xTzEMU#$@|J zb^qrkC2k!(N0d1_OB8nfw6db#)#l0|n@XVFvUuVa`0v9NJB0Gju-PBpk0ljUHPv|MWzUG&!_93GPx`9`gPS>+Q#+jWYVQJly24EV~I2_;S_K5VW#-aw`M(Y zSF8PPwK~_79@|yvWx0b`J+zcGZP;5WPu@%cw&LO>xw623QP0KW%42t%czW$~))kaN zC$4<;$z<^Ii-j6h38SG#R(x<7R3ta)u7(J|7x~sk%@IdPe`ly`;lW}(xeYv9ph92` zdA4NVT>4-Q-s2MF-{RQZ7HqQ8lWUoq;(#4J?-~ql3AWPL;kP}$4lSe@q+(zx@iPD2nr>JO;zC7U^p@nc zk_TxUI-A)rdZk{-`Ki*+^89t~Lmut@*4#rx%S~b9n3X8qFU|U?!uKh&rw->HZ^Q|` zXrqm87MD145~rYFR(RhpC3G%?jW;@)cLD5 z*Gs&ZnR-_wy~bQZnh^0%YIG%5d1q2}Mo-#2^1!dQaFopq_NU}}Vm3#%&R@TK|IsT2 z+5`Bjzh>pBg!fHn+Kkp%MSWg|5^+-(B$$f%MtZsRRSV_UUmr%&7koQjUiN)`o^N)# z-tND{-t67j+4(%a#&eZzQ18(=l$Fw4*_WIs6IvUJduy6Ot6?eNH&@C=$);*`>wR#O zsPnHegf2f$tjCxUa5CC4M1c_>$8f4)9%)j&5->Ff#h>J`TzueSk&goE0^tWV$aW&# zT?smub@op@jPO8RpcYf&weoLW;91Xw=eyjc_a0)G7WI2wz=5lAJ456Q=sCXE1y0}V z0@)fv@Q$^wzks?xIN)L5HWAq+X~p@kxEiKa~StT;;Nd9^t{bug371jBcfZ3j_Iv`Ppt$e7IlkCWSG z%@v#0l^?uR!HFch#JQgsP|>)>x%U!8z^HtK=%SThh0BO;-Gek2Q)SiKSYJvW%gS5J zTFW{49JYpUZ?x4J^JFo;)}tOVCd50kU6>ypf=b7kgXh-dgynFN3M;W+SSD`&Sa&8- zF8g(DJJt_=PSNQ=Xm^!I5{Bq>l$(+qmh`j1$>CEx>gh#dK@Pax=z(5e;8Dz3t*D8A zK$NCz?cue8_!5=!SkCDU3T>(p*#HX#H-Yu70(~hHKiD)hxvz+hunC<;AvPl~+Jyd^ z5NtHLbjv52d`VcP;V>Aj{tqg!dWyLeR2c0{GugVY&+y&HEJ6x01J6|=haWE}}%2qCd9XZfN%~?nxlJKE0ZNX#M-N%P@6JXPj z_&O;6=%5tjcWXZDzpcLD@=5AJTk-Ccvb zTX1)W5Zr?Mek)&p>vXTteb(Az?7vn2Yu5ctxp>zb3t0xjg_sQidEB^ln!dO~4uW(HV9NcP;-Z?*A!7mE+RFHdn~<64NP7A>mxYQ0}WRKq@B^*Hi8 zWlLd{6#(x&*0=)Bv}PAEdu%o#EHwVF_uLO#f)aHmP(n?gb6Y4VPy6 z$j-E|n6@uvy#ep?C=*|kIn1GI z410NY(@jaDZ18%S)V-p*UDHu+r%Z`pjT4 znp1g`4|?0$!C2W>%Q6|Qvzk@v7<3v-_!K`EZoQx@$^;p-MCcbsCK-%K>jJfV(wl&|S@k9Oc$pzE!FUw`Z zD%#8^j7Sv+l}L*+@JNm~WO^8j$^up*AKjgb-P5s>_LF}hRh}>eSPF$F;H-{riEygI z!!whx=t#4=pSB#K6CWy8`{@QNO-UR?lq*dpOX&1+6IV9Mg55fEixr&EW*n)?*vO-q z@cOPgFR`oM(&(V;eNb`OURn2sCFh4?IdRhT5Sf#8=t{mx?XF;IWKm4CN*_b6QZgE< znzJ+B%4j;B35iTf6_xMe?&j#{Q4JF|=Pe1kUPe0x}G!Dz8PU`$OnO-ttB+D^$WLzLz1iPe($ zIC~xnQhSZ>QlLS0vxLmA2@x4=r^?CHB|g2nLMNW3O$?_>?05+BKznm#G?nnB$MpzD z!OtDDyKz|LZR|@cuzX>H3!A1}%&qS;hWQGN;Wi0dqJ+SfXIeKfPos!!HATb@3-rjl zD-Afd+;_``R2=W_s**OmAAb*JF%WuPK5TY}iwV5vzpuaD-t$kA>$G?@_4!3P2@~>D z<&#@5vKKe6>&@ZILNL$*dyJ--Kqk0(_F5KBJHLP09Q4jy^M1aXD%Et!p3_?J zibtxUhkxd$8Ve`p6c^H2Gle#;A8shm6X9t=qVI|eY4=SLJP)kUAcb8HF(Xi}zR`na zq1y}LYTaY8X?|dmb?|}h(k?c^6BCC)gMX^*%*)FyhU2&;a_EB?NZH}lR}b0gcff9< zNMPL6UZVD%FW{PId#Pl3wG=#^4c57R{FHuujri=PKgBNes2!CbQgqh*6KN^Sdwk9? zrX+~D$)T~(04@D@OTJfDo$D0sd9K*(%~CI+P-TGoB0M%uGBXF8xajuU zmu4G}=33hDjI5n$=sAYY8>+>p+TB09hip{FlAzr~kc$3$ebofM`OoF$f9R{Njf0t^ znT_@T^4`<~%F8I;6Ge--p-ILkQb2i`KMxH)Y_=HHs^F$%xpraC%Cf4pwSx=;nfF}I zPlymj2t%BgsQcY{faX*fLmcaNiJtG0z|B2<61&TLm9*nZ6R%np9+p-X#ECW+tDS+9 z6BVD&F2#`IACF`3!3@T3fErNuKg~ zkB6Jf(K9k+)d*xi*Ejq6-LKKG1qZ=?=ukAl1Bq-niW{dwObIjloXnX)0SSWNF!Ng= zUggK3{a|H`A-hz2yM!v#b=!whGvx8>`WhT)Xdn{OtpdvZN+&abd2hHfG5XfT?zBDx)whxC6at0H?$Ix~4m zv4!i|Jby{2!ZAbZqz>+CL4#)ZQ|$qhyHOBA?}i}h_T+&j2$}RAUC{K~a5Phll`{X1 z#x6vA;O-$JDtp5OXsa8^4|J7n}#thDm zC~*oS5Y#)n=U#GENCkp=r|K@q5TKx*MEOqf{@ZE<6d0}-M&!T6bNxY}H|mjUA12@=+X}yf|~WLekVS@vb8RSu(acI{90gXWi`3_rJF`oSJHhw5Q`bTS0Hw!Xz2D*OfcwV z`0Ln%)hVv`b9!_t%YF<&9F_&@;+NxlWj7hU49VH*ZSd*SPbTaY+a+}D1ntA-;U7B1#g0E)! zw6=4uetfmu?vcfWsg<*bF{TLjuND$Wqf5kLK$`2T62{YO2nVMIvoR1)tBXi`JEx=h zeo>j*N~FuxuJ|z>OYI;8(ASKKzx1_jV2hnoDi!q?D4PRiw9~0>P8pY>UZ=7!kg+imdM_p4e2^H&? zv>A=tjBG7NBO~I!;F-*fjG$}$K5|OeaHXhht&>);Z*T^ER&wV=zUj2$=ASW+Lu$%j zvSvEf$X_j2Y%yk=0?&Tuvfqvy=2m1<8}{&wQ#$@Ig&9|<`F2A8{oP$>@HWw@zdjwcn~(2^#4Pk|acBab{RD?`cisc2bf?)aq!ON+Cpg{n&! zqN>7Pm>`b4B4u6>xk7!i$B~RUCVEFwizPGi9O5_>x}^L(=Mu%m!EZeL6|QrDOuWxwr<%sE1!jZ!RDvQEId-Ff+c2DVT5PDq{U8h+z ztT|lm$L($Kad|w9b;mIv6L>#uACO8x9>Giyyyts7IS&?yBJgs)+v(jC@O;@mP=kr? zY?$cv=J&L{dyMlp@h0?qw7^zoSUZ%^N_0}#N6KgA6SNHuXn~)im8Skyq170|?$od4 zvk?-NI>5hQ$}%C!@q1k5gO>36NL+yttmi zP=*Cht{g49E!H)71iO|uNDvDGa7yC|bO#jp$%ZO^rnG#+ z`2@zv#oLD2^`k4knTnel?QC?!^RjpBtH$vy6}^@G+Is!7?xg_LD>%sDCOO2~+XLhk zB%=RbUZ;U?nExk(+u@6&%oj&f8zW)U&(_xe{aN=vp0HNHbU(_=sb05v*Z16(lR8vtBFAdgo7Bq9dWx%R#>;t` z`Ba^H%K`2vNi(o7yvhAF>z>CG6lnf*j`p=&nI4cRB8qB zVI2%rQN5em++OwK_}r&1$YQ~eh%fFivB@t@JA44190pAZB}g$-;qlv$d%aUCQ^h2!N@jxL+XEuXW_76+stZEn8K1P+_p0^6F&ehx zTF(LeXoU2U##k!C9ceFv5u9dTG z+vTVq##J(Y4m`0N))!mXILsZU3vjDKc{>))T~h2^bWiM5cSZXT?pz4?Zl+7@!1mmA zGwj%juvXRlSWF8`i*-2S_`0D2%js*4Q#5Li7<|7E2|cy|JmmW2bINWms57>w`yDp1 z4QVgdWDI;?S-az#`{1Shu)t|z=}Truy4S@m`R+_6&#^QNPmytCKOTp17fc9}lk6IvMK6=8Tcg#iR~OeF8+jBSWz$8qCg5y zzvQRtVGQ68xZKLy&AQ}xRaoy8WMwW%WIQ&&iiguapqRzP95rO(GB?hi2bpp9gR^IE zJ&A&yUoDr7Q`yAUU?jk)10%z}6se=sDBahA9Jj2WzoTw8g*zQ!_DPo+$lZ>xRL7oPw!83g7inW^vZN&n)}jL3+mhPa_tTg$Dpf!?wx;8>JafMf z9NK$K;ma^_rRwygQgEq}T#hgd>`Pwf_rb|YM3-cDZx&3`*xmuj?)BtuW7h)Oeql?qr_A&?KJX+4JyAFxJU1G4>n8SXwHJ|bJT=j+$2=&u%E zlFvXpd28(gQ0y}2#+Yokjnmm^K7qOd1~mmj4*5BKHz|o$_uKVn_bP&pvS^0(HYMkK zqZ;Sd-fz4qjucEp?c{8OFbIeW9<7njJ_{vtR@MnY@*ceV6*gDvZdwf;1+6+j>U~;Q zP!FlRXG2(xFO+me)()JtpNyAdi)+CaXkkBRTw7@aZ@D}tIFnKZ0s&S*>!;LLZwS>k z`A?BJ`X|PDJWN~|UyYFUJ8F57i!TIEsTYVmR@ROiF^J8cm1gys(MV%WMk`RGC@{NVe6&m8IQIE zUAMM-7H*b<`?L;YWxL6FLSwh$_;Rn8H%S4v&E<42j9qVzXPBn(0&mW~#9&L;muNHEbYqoIT=Dv^8@>VD==W) zn1?Ml&4FQb*t9sTVox_%Oy~EtMUn>}Db3qw_azB>WC|*6w;KQE07s&LRGC7*{J0mm z$kCjLEtFm=XLTnn4X`1fpE1&76J^zSSFnJ?{BaQ4t=ebDY`8QbPaig3Sxzu zOK~iWzlQQxAyhygflAuiS9N%_6$!rJB;c`IxBH|Xc5a$CyRaELbzk#wl)w7u`hhXZ z_p7YT?*oUCYnk7iKyzA{qB0O@PSd)&wSiuHOD**TLyJ%xw*(s@KEaiiYctP$f3nv) zz4gujmbCU3n&flTC2#7#+!Ch$Wq(fR^w(4YatRW}e=nB?z&HPSbMhb8r~#-z{ohF4 z|4}6MY=C!O&@I}csP|(T_)ApKQARXLjfScKfySG|=YH1KcayqyO)ltZAytxE%B!pb zCEi9TuRNlJ!6}1;}JOiQa$0){PEOHH0C%fW#f2sJi;aDJVQ!tp>l1tEdni} zAfrJ3RfuZn(JJ~^rfxRbDJ?O&u`((;xrlh_vTljnT{_3Icsw;@yHbtdN~>>`UY7+g zO^Cr-yc^|qb1s){g`V|HlN_E0*O2K79%GA=Z4Pce53Q;MPay=Rg5`%1%AE47V)Lo- zMAQ-BrMI7%gvzRlHcwIUvoU0Tql1@-w)7V=^&IR8JTwN&%DiMTwCkpi)H%f?BfN>l zC~et7Cpnp$DN9XF7ehrtHo27Kiu4QblYmFw4hHeW>NXo%jadHc6C89UsuSt$ZHbTS z2gdCY=#86%k{W6#IYV!G-?O}>okY_&UyR>fp+v1)xVhr{aVaGDnfvQ&vQ@XFg9m+9x*UuI~DA_}FwUgD%4Zv&pWY8UGv-~+t!mWlp(<$aJQ|FQsM zwFkWN&fHy3ZS*aXLda}meI-;+>goD4p}4qvK@b*7(j-OJWDU^`f%*`=L`Uu_6IUpv zD1oRt3LVmK6^&dhK12X*1I7^zwUpCy6aaQ?!A$oJUf3+XuXK_wVY^u)fwqtfXEXi= zUA1jv0k!l7J_JE(*J*vEwdRiU?eXfH^VyaUC~z?-q0C2;vuf(oey~mb*yt#>ue8vv zZ5A>n5eslb$wS!hJr)*12ac{3Q3U(xj!r*+{D`{A8RdkI5lQR}woN34SKBp*8WNd` zRHn-ZuA(74T^Ah5);82sx!>zk^sBL>`$L-SCyb<4fownR*vKCtA!t7|{pnHF_dQ^k zdWg%KD~5+@865KTjnqR!^)Gdr|q+YHgPm`}R zS(Y!x3)R?d@{Qof+bni}+JUkkQ)-<|>HH-3KH}kgQ`;Y{HfdnCG3Pu zGEBECGP({xm6`*_uCQ@u_{q&U$v9$lwyZXQ9jH=^Pd`<+otx^K@=oARTQm)Hi~c+haa04{qO}A^wGpz6Nx&^?Yu5|hqL-js^u2#8mq5DHG4;SI zmZ>h|BZ`Z@GqV8p$d$vALCVFGJXDf2PlRw;;Uxq$Sk-6oRMzOyr&;Y(!o^t*C*T_O zDsD|TQQP+^M5@e`3oI83--T=I-O{qnMMozS`OxB6e7Y)wMI{v9Y=F}ay&+6dP+cP~ z2=T!w;V__Si3Dm@$Hs%~#ORkchmD(mF2@$r&jv)E|` z$BqNog0&J>pTb`b-#rGjXd+^j=m&a-uT$luySS;A6|ZIH9@Y^$5u2I!pW{bByqZb` z6fJ1C;PzH7uxU6{l&gv^1glIrAw@FHo*9vHX&eNcPmRzdTTw!kCe5zz^W{izM-J8+ zJ6MG+7oQ^0< zonbe_+jWahjq~x}M}vnl71Q(9spSdkqMG4S(Uzw_8S-g^1kYeSf@?G;ym($Xh4!o!{f>am(Mm_j#|ELhfbh)!=SF zdI9FKSBwFv^WN?5E=jGEuU@OyT@R6P6=t~CUr+D(oaAj72f<_0&It2}BZXq>IuWOs zv`)P#<^YDIYDJvmywi1>FBa9qO1UDrxI1bf4YcRQz})%53$ zYjhE6JF?Fhox6<@oJS{8EnoGg5`|XYi7ATYLDM(OI8!_}x*^7@s6jWL#Va2}6+NqX z_scv*?7mo);KgEAu^{nQSZLnzKGCnf=k5R1CEgWZLM053W;HSF`CNOgp>g~InZ#af zeZ9P1bx)Y!4F)<*p(WieZvd?YDeAx1+AW~3_CIQ^=@&B-Q^$XO_x+Drdu9zBq_3Gp z`fU1oxRSCh&N>uk`_tC2lOWj5Ns(V7Wq71WDcNpcKY`KNcZwCQ<2$)TouWuK264-m z=12T9SC^km2mV-96YFiA9--!I?Dq=h9rD6=0DU`p^bPqJuK@XFMHzX8cO}K+xw>k1 zW_6jx^{0%_v$bC^0lsb44$G9YNbOf)Qf1gmDwxX4Bpf;{$G$-csan&aeHn^;f^X~J z6&ExllFG9eoud?FmU8DmPhLl%?ntvt>#M{B8B+`vt0^xNfF0mq>4nggP?H_8zVjfv zxZmZX7R`|-C!1!w-j=5j6)Vuqkqn!ceR8{4Ia9o96A=}T=O*CPMKL?TimjvDL9iIg zq%}RB&rY#6?T8F-1p92Xu1a^n-$iJ?s10O_XnAQ_WZqAr>f(1anO* zK|Lwik3fuxNRF>$N4%Ubf0z_jSFZ6zEjJ0u)AfVo!?|LZNwi7r4xurNF@F@{n6bB; zA5BjJ0AL*y7&k_Zts5dKP(xHfN0R zu69M2K6j}~jeg7N9+N3g*bY*~wWwB4hMg-z+U`*hy}$LSY{{DG1Nf_^=>UHf5-#v~rCA6e65}K! zK!;Wk4DNA4(r2&{#9#d?$u2#hztvbR!K$Fk2F#KmkFU)HfM!Xsj<~5m{h1}Hq`2|L z`!h>2&-ehP{5>dFCa{7n_oNBw%8Uf}(aPC&)HqgQ^YrK0=YW5R|3Wh9^c%nRwrQSN6@?}cygwlOpEiCQ^q?FZ2-BNp!(ny;Tei~uQ zXJwNDNEC$=E`8G4R{D9+%Mmn(6~GW`54#RcI^iO7e0^)_Pj;3UX|if|$p&H!025#! z#y~5IjoSj!FAhGAI+LI5Q!(Tbz@zSbY~kSV?!5c#i#8jPDnoAUX0LRcjIHk&(U;#L zNT(U{F@E9tc~-8=<(!S?lzh=MB_`g=jC5OpUtiHZns2mZhx!d2^$YRpy6eLepCwz2 zdd>5{jFODx0HY+j-DDYH?U=ta)MjoA(kC?b^f+-^)oUoXGczld)7v1#ZM0F5+NW6Jo*n zN5>gQg@qiHZWanc)~&XY2VP&oHV~!*YuB$q^=r0dE5hk*gwly#AXEec3Kf;Xf$G=D zgg~fB%~OE~s9*CsiYu5mIYL zK{ln+yRT2rYN?KT{jCUU*H#v~Pzjzz{*lxrRjbEch4~M&R_b2X)Ki$w@l9zl_yHMQ zYud^Ag3_*CeFM>5YmwS$v98B<`}6`xNN0q?r>?xN z_F01vFm|0GlJ8#Azo`nDs(rR;N$e`@=(q{mpbct&ptzvT)UX@BjFLV%os3evC5w!w zoj)u3N!q;T#m{CKL-ULJ{;s6RK7lt(Zs*-bsMf$v^l%#t_aA;i-tPHNlnG+3ZW*9< zjaX=Di81+Y+fDDZ(L4QYWcycRQ-t7{RGGV5{p;jkwQFP*$U_T2;6O6=?*+~gkUpya z>FxEiwV|nvy~e*P+dKwr$i?sI1MadN;QEo|*1nBM@DBEgrB%aqTQB>emtf-9vWDfY!uCOQ zsa|tw*|1K+d5P3QgI;U3JIesz@I*OiA)3-Odg|#ZOJS7)}z3VRW2E?e(d2(4@?Yx>cdHjir+n$o5n3rXB<{|bM~B}I$d)%&iGb<!V9!flOqWY0 zPR2&q$tne65JoyiluAH-`&`nte_&5phSl3Oj`(Jx0#Ly>aMi`(IU=Nip+fxAt!W_^ zJ`u5-bC)|`Ln<30N?fAjS-4Vww|<6&$V}7o4A9}vh}L9x@%spUke@t_ifR(mJRnT+ zeUb|~H$d3fK`SytLt}0@BQF=`;}@ir$xUK`bCeQ{;JY&WQlFrrl3=tCPKnaEW}3|N zRH$Uww7F|T!YZ-`sTc2gEjD$w$fkzI3?4hAtbL86(kGO1JgbSyStUxHbk9+tG%zhF zX5q~!u5b^SCc5p;9mJ81d?(Tbzira}+)vYcYeN`kFP$%H%f5ftfp1XMX=p*t#W04y zBa|kWf|>j{^ueatTdy_^3v^NrfKJN9h_zLV%ReWj^7P?U+l{NPg$M)w%uKO$dAd%> zFa8}{Osw2ru-y3+efvUvjgXN7;FL+Pz+DPtC{#{M#5a?H!rF^}g?nSxpL zqdi&Os&t{mTI0YD2~?3(HIL?}Zm-r8_0EwiMAhk~hjBbv84j(rfN>0yP3v+bj@gM1 zw8utHjP7{AJz2wzO>>n1x+f3iG5*|>7KLTNJ&9%TBNcErApv(2e-WJv{xmxrdCt>>chB{YKWFvIvc|^?VE7CV^lMRn9UN++g>`i09 z-aPqZZ(fcZ{jUkPe$uFdCabsAX+f1*pDPPG> z7-JwpBPi=!nMz40(FVzVet$<{LDJT=KfR0Xj97J_YvE8<((*E^tizCv6LgbnNoJC! z080pp5BYP0;zQhx?_}ONSx=-+)KhDgwFp~ghjFXD4fBZ=LS>^4E$u&6vHA2p`@7y@ z?oc?IZd#vJK;}SpxHao*kj}PjLZ%`qewz@MEak_?htU;DkhST%ubkjGf?7^>gVv!p zeyAuqc>CgVcfPh0toPpgHY=}HkMH4DP3-k~>n`h+^X2YLVB_)b&Spc}>;475)$!_j zFBp0K;ot=(7`el<@a%Rb)9b0)qG!DZHr@>=c3YW>vj$SPYPazOlId*m$BPsVv>bDw6tja7bSBe9nK zSH_6mdm#+lW7W0}P5*T-`QE67z@antiE>=GAP zCCS?3B=n@(o8><~1mv?dM*Jk730l#ZU54^R2aTWL4GT0Hu!XPBxX2xpl;Ropw{4>i zB>>p+g{4azhD47(3XL(7DarHjPi8zM?I?kCCQy2z=^$)5Io8OuGk{hV0ijjHQqxsD zoIOM|d+XDfV))|@Q~$O;#n7@k_(=nY5j7}ffGKpLvIlYtSlh%>TcyUA!4ZMi>CyzK zAsXXRg^BYBGb!AP#MHU^7^$KkiF99&8}$P#TpPfoI4<b)3Q}%tV-BmNTz@#sFACOyRR(M`1b& zK(F_=5Wp?Zqm|j@i3M@X3mnkA1HM`Sz23PHKdFXX3_W%8Is4EHvnt#WcsYzOjk~L? zav-v*PiY$?0DPv+ogUOp76Oxz{zWauH&08I;p<2zyTpsoXo2<_*&> zCM@IJOsYlXA4CbW5co4+;kYc=Oj6B9ol!{P?KSUa%`|=#)^~>`>VYS))aT_mIN_kq zYeG#eD6fJ?0?b-PSpWO#{rnuGuptxxXBRY%{;kk}i$Mj-i!EH2QdQsJa?$QRnwH=)Yv7M$JRD4$^gCSuG3vbu5>G$E_uGVbeTPIQg zvMQ<{(x=R`VAgbj@7J+@(W<_7W#ce~bcZj%^vUU~+KKgF(fjGx`a~+bwEG%b z;_>fO(@+GNY3-oNBgRU5OFtAw!^8*mfbBC^hoGtWTx-T2MH@?nwL=-}&y|@e%S#Uq z)dj|fZ^JjfZ9ZvV5k1w_gFAgI-O$7u(zYQ@!z5e?1S-_cY7`pT1N@AW}nABcR$ha`rHq_=;sa$)(qMMOQpd03AgmeqryiB zO~mNWKT@=R>A2xCoFE^ErSX&Kw+YN*6&zxD^q0L^m}nGo&LKB~o3L$yw~qIVjZHzL z2_FCT*-ad^B|&xeiB3CMaM*M=2FSDNhvEhVED=L_aN(_e^Qv*ET;XWHcSo>akrG(k zsOphf)VW^Eb2^h(gh<9CRNRrWo@hZBh(vySn($SVnd*^qMVmigykx!Z>%o?P)5SEg zXv#^^pU=wH)e+@Z*72Sk2eFA;CGf=%)*nU%a&(<~g$cg*zWxwslphOra4s`qU$LLH z5_k}rP6#`o11(&OiZmu^t4B;t?l03eN6EFM9xYV4wmSy)Xv)w4df)E|W-(SIH<>3q$)&r75 zy#{qdFr?l8K;GJE!*4Ek@v4Z0MFjadS7ziqRb#Q|+txURYsq9EH13 z1sP4}TCBg;LsZOrAvrSs9k;5xBE=gi$iMg2OD@&rT<0~>fXH_l^%ZZ!%_a@fea)_b z)Z#SO`;7+e5Bw!n49KVN;vp`z6pSxnIa@_WT0@R7&6(02g>cs3&Tm)R3XAv!P^3}F zLI>@nI}-3)SkbtpH}-$N$2(Qx06-ex(79bRq+h~;!#^o;7aU!c~pD{vO;1ABY z9`@avrs)g!<;f^+>{5K%6IM#~G)PM0Gt-7x$VvkirxTCLetLPJ5e7?WBj9*5FB)CD zE^(hX$l7iUhVJQeyXu|#D)>>;sA;j$3Tz}iu5FkA7SkD?cCoyr-lJE;qd@LozG(VkCi-z)3^a0LI4F(Z@zcQK=&{}wZn&zDq`1;va8vDz2ymKU%6`hJb9IkfGp zeH+Y2)@|qWy1h7NE0rF*lrZlExUt_r+*qGj<}9N4d4Lo`~` zrIvCb-c>t9A0$hJZ8<`ZnX{{prcA;SYD^~FS1D}?ryO;|WOUL{h6!1DDul>iio{9^ zb=kk-Qza9DH9bFji#J7%{4*~x6rkB8>CsCpK46aL(rHXCR`oOX znt5UI>%s(m)8MO;Z~*fTsZAj{goe(*R(DQy?Sj+Savkp@FGbHV`L>4j%q#ILyC4cn zk)D$ramJ4LD1Y*yk*fr!b7=fa8T`Y(dg9eoO6)|IbPkY7q^Mt}B+ z^;4$#yG|V-WVB~wCb9jA*2gLK1App=1L;JLVzQu3oT<%W(g0YIMM91h^Ycumv2l_p6jKx#BKmMw}~#aRrlNlfsxJ^$#=$ZjQwt z{XL(`o6U%1c~#H+`%tp7`dQ4EphlXH5k*BgW+9O!_j?TvYVIeYbp)l1wG>m$ zcQw#8 z>l7L-pMBQBRNg^kAWafKyMe0t%qfgrhZ*@sM7O)9(+gO~h$@F;EK1*f(T$7Cuw~?Sb4ulG( z?Z_|?SlpQ{ZeUatq~<5Mp2ui!Tnhr8b{i3XV!U6b+3)S52A+23;y7zgKu^0OT~6;R z9S~K56uxh0Y&2NlsD6(d_tBNOCN9QtYfYPk@X+>sY~ooR^>Uut;%W82r*VICnX%Tb zZpAQ5FjDUlY@TmC{~26!VGVzhvWY_YcYf~v?^#z<7kxFjYgDk4wVV!djm{jYVF>Mw z4cMhX%y$^8lUveFYVeZOxinhJj_w34kLWp?pVehHx|^}{BR&D^nnQIJCjK##z`7;_ zMPBc;OT)NRYaxfXwV?Io;F1euGhMWt#7xG0$1Q#i84TmXdQtz@9sdCm_QE>L-SC=z zOs#YEMwU47#7ge(bHPW(^-4cEEu#Bw$7;=blvd@ocb54bS|#n zRxn=OexYdQ9#!JJ5`l4m+x;lcmImG(`|BBFnK{_xZ7{ZTb#JMbH8whgpAb_$N?)CM z(@}-E3i_`Ay7ZQ-25P%&FV0_e1)MDo1#v*WC}o&1O8HcZ{cs*4YP$8KUe}5zTuTIv zKijpV*1}DSTx&4LcN+=etzBqnnKDwFou@v`Z)}#}7fDzgu*STH5_qCKcc-FgD^@UP zb$2eK6_}hy4R;5`4|wP8k>5&^qZkgEy2FP$%?!3a(|z~R!rXsG*ANqx;Ju-6OiFS- zeV@sD>Pq73mPG-MYzJ)f#+{pf8!uq(h|;~r4zOo7gUFNo%P>d$dykAnk$@Cp}=6m*t=)`1l5-)mhH z(f?v1K}hD)UumI#ec1g^_oSwt&Cdo@@7p4M*q^f-vFr8}d7ZxTidQEb8h2~9w_%30duJDYf zL03dzo3Nt~E7v;In5zhtS|ra5qKv*%W71w!>4J3a~{v`P(?$Mm9wHtH;uR(x+mfE-Pj+k8qrT|-*D>{ z%gIVC=F7_mcxrO1<5XD2%o@@JItJ0sfbES$I7@1o_p5M3c(&uI7RnMW+9JPZXTJi} zbQo$~xaw_S1gk%=I8LZ!gF#~KZf!eq-$*b^FC>=Vo38(U?yi(i4%~umg=suWWZHGA_EK>|g+%rh-5xEBrn7`Ax(g2%D~g`?j_# z8{}ykv>g7%cIL5a&s(lv4|%Chkg8!Pvs)?GKafb})Z>wGP*~52HT84I?V1#WMg7j` zeQa6O!W8-+<&V$P;NZJd3i7$WyPz${v)IwyR74caeW+c8! zc|M|sp==UhYHH$m&%4mMe#;B1(c@?~?-YNx(D=rWX9ki4?mhg{T(b~OB!*RJfD-Lz z2(FOw5&v0+j+_*-*unZI7IFAfAF!gt$~3HK+!z(js219r{6dZ ztV#z+*kXcpPs%|#)fS%A3CPOW_zq__7j!o_MWP(kz2UIrn)^taI0Bm>ozkTVZ5_nI zu7J*|PHRvOBBw)DK*B(1iEO|trheS}zOx9^(nmYqcA#V?UGt&5y1KOSGb09~FAkm- zD;{$LHq>e0roO-(ixF<=0E1;7{RPhNt1S-b1BB^vz}D1-A;q$lIlethx=wGaw(qnp z8V?rbnSE{=ew=&NtJe~2JJjJR1`Q?n(gWJ3jjiH;fS6v$b3L{8P#ncKRu8j>R9dNP ztfj{N{>KPydT)qhxZ!7J>|==A&uI^H;>;l(Sb6Irk%$$1bhWH&yA1ec%rfkM<3rol7I+x$HrotztWpyKK zn^4D(Ebzr2Ne3F#4<+EoTFF6~2O13U@~ZC32F{?N>BC0XQ3;XZBFhBU@5@Bi~1lrBW%i zxnXv=@ZM$7i>YNFy~iFZgk~)Er%@2Pa@)mKvKm5fsS?Mtwp&O$<}~oBIoUCD6TSY@ z#BTXmJSiKBg<+PuUe*vCJ@_5frX|;YGjqvx-!)?PGy||WqjNBA>H?(e8^IR%eo#z) z<{e!Bd}_C?m~$p{>6(VHZ*%a7MD5r)$QXthj=!?{FohM+uqh?b%^B*lz=nNRnJKLk z_&iv7a(Hk>8!y+1usgG7YA9F*Inu#Brr0!_`o>`_f;;%VJ?TA5z>@I?%lSt+6wFyd zL!UC9N*tpr#K17qIh3^_VkZQ@i2Jls>@|}I+V-I@?9^YRcfl`^&3VVsEr)}OnB?U) zhjA<)7Ynf!ZfeQLUWmqAWF;Oetca2&-}*biUX~1c5Woes`8%TwCS3C;RL8UY#2cr- ziJvuwQMj=Sm7H2?wL}i}Xt;n3)y{Ph`6l%14l>2V&r>AlA^v$tQ3qeAw2VSxt|%mW zs2{gINj@+A63(Dm@h4LX5s@}5u@p2@fY)wW5}(oNVEzo`+k!qpl2h_k`Fvi%HaiV_ zk?@sr=VQOiF${7YG*|$O?Fxe+yK_G?I#W0-XK24Cblwhmb`-}) z7OcgI@=`<9I>f|(eGt?cOW2e%hJZ^3`@035V=U%m~f3LYC#D@ZQ^;o)l5 z`+))c8Se?^*F!sREvLXOmcTTIQgwTUiSzKy8tLxj?O9x}Pbb-Fq;}+|hkZ_5hbdE5 z6p}7e(__~?*tX#@-z`#;*}WggIB7!by5rxNg7j8XvPkCyB_C)fTQ_Qb=Q;SFNn|4C zKlW!YxWlYal>9I%p$r}TO6Eq%gVKs-9$EYUEFLtD=B&SR!&?SY2(USy7AjKMzx{VTl@r< zq3}Ce{_Bh;W0|LMZI{sA5q4jfcKRDRa66=5y$9$K@XA9cYORUr3&E8yTN6pa^mdn8 zWf4MSamDVW^{;YUfBrM%Ik`l&0x!^@e+K{lKg0ip6|DZh`^TW60a(E(UK@H-*l@ng zRuk5+MT4;HKB|)O7+`{#xdg3zr{yQkz<@+6svK;nZK&`T!13~dZ0kZm3m`o=ajre@ z15DuWgDk+nUl6e*ucxx-ZfPa8i%QSqxZbkI#qdq-pNebX1I%vzdqiGMH#gr{GEHGh z+F}yQ@sJp0#5T=>J0_c&Z&WIu-P(Uz8ibAI2Qv?UN-@VgDGyd3LMP=)WEwiqZx8;f;>u6? z&lOh>H+KYb-bBh>@RA4;#Q_|ws%**gF!=gt#cqV!%hCS5OsqEgcj$W}!@48(nLx)? z4AgNI8;EDaQP}7RFrY4)V$$agho$Kyp%Zt)c*#jeghEXn-Runy@)gyDkdI8OwTJoQ zR|p}O72rVvt2in3KsqkQMUD~YH5yKo_`4(?opysz`xh`Dks^~h$+F@nU{?v4z^i{u z;FDWDC&;9Kn83^bFoEl{lu{H*%bkln5un*^bazM;l)El6mi$D&GHfp4|D)r|`Hzlk zAJB32oOI>_IUURi*LALoAR=MixAQ#&2ctMPt&G&O+i@P)T#a|pKV2xsA z!{G3Niff7mFBwpAy(E(4G-7X@TTDq%saWNrZh=w$^&JtB;5Q%gH%+^cPU<3fQ`b~C z%Fl`>L;2qd$qh5m1pT^6mNR&jcgYHICc0~(*P&$5GFE9D&RTzBn*RE6&x^5)h0r4z zm#?`8MW_(-rP^7jBF0&$>Kno3`}Z&cexQnLIZ$z3{|HoE`_FHfs0RP4xSsu2#dR8} zxYpkXm_;?euKlC~rJ*iK#;=@Lll3N!r~Rta+<`d}07j7}uF0ROMleAWxgTighBgwdu;{wg@lom_LnT*15qI?TB9jToE?zp<7v~??T^K96eH<)>8ywmidQLp>iV@fOsWunAct*c7c9XCfyqclb3n%Lke&|NGAx}P zc%SB-MH~-DaFlj{Ss33FV$bOxep|VH&h&T3l@HW$E&HqE+5t-_LQzm#BMIQSok~Ed zVrr<>#X}GB6QeEdMoTyUVU8WRpAF&8-`n&K!0$*(Qlr~5o`dDL-!Zc27W9iLTd@&h zv*u4)I@xYU12uF(EmrQ_~(1^HB%y^oAYPdjX=nR<=~_HSE*7A&Xg zJEoL%qB&F+3{Asw+9`pOs~dWcSe2!|b2gHxwc=yONK|1cccaPJo+d_x${I1dyl4gu zwCG2PoDkdukvW5hQVw!;`9%h&sh^^7RWjS`LUIO^q8zE7z4UfPl5!>AkaTkpDA2QY zJbzggoMM9)eRRx~Y}tjKN9Tdtpeu4J$<5Q+AXxo+yFY#_*6HQudO6sd_2hbYeDmGoW$RSvi1C+``C&zXTK?>Ap62ca!`Btrh-;J(HLFajudQMq>wp5~$B@aw-Zh5(*z`h$yh+QF0N%gRVOk6L- zEETm?w9i#QxYjm&sXcI>LlR1OI63>lf1{~GK|2V`jXjJ52h$^muZzj8&g;y0c?m|x zXOP!@SAYcldqKo}R#HK7nl&P6J_4W0Y#%c_rP8bgI*emVpUeUi(Trged5$(tWWDSE zQ1(_)d4<`wEeY-f*Wm61*Wm8%65QP(xVt+9cX!v|9v}pFx1d4q`ct)copWyOQ}@zZ z8V|hWZLBfBIeX6=3W59{FP#1^udfoPM^0Ep|KnxVPpV5f8zGgJOEHB0eX3CAm#O+jhxLadlT5_hra1+4?nW1#Lq{W z8RZd5XRI9;G}u4e^}kaCy}X%^-(T>SesdDoHAWx>c8#;>hC#c=DlED#nlQiQcHC4} z9wz5{hT4dvg;AS3Ar>|9+gj6y(y43}1X=rV6gL}5gTO@62zgeh?bDej|GJ(6=s(aV ze5Na_97P1Ste_dm+VWW>c3}4Z<$4<7u7YeSh`>lnB(FaDhwG`h+k%(`Up4M^! z)(Opjtr}Cf{`aaeaP-;|l7IVN+X});a1CuZzVxhRxtlq5R4`}gf&fJj)j~~0WFKR< z+(e8lg<@RL8)n4Bx4eaE$EM^3$BZXviOzxRm4+T#n$%YPs*dU#y@>oDO#>=n5ZmgSEVgwYhBSzmOj%4Ak~u$ zpn5_CR8Ir{i|T0=Z!2O^sSF45DI3wIA!PxM;t1g|IgYR^qnl$b2x)U3ceUimKK;+B zaKB4&U|UBE05Cio`dcV`49Cw8EiLv_#t{@=Ek`JDKhE( zKj5#reBd5DS-6RH%?@-p*t*)BfCu0*E17#*<=;68%>sx2@E`gw-|^GiPFo|N*DQKL z0?WqLe_c;VAlK7@t{%ws#QRUz(*Vfz)Rtmj2U<3E1G4q6>*?>ZaYuI>$n^yOSQN;; zezF{!Pqv(Y+#LHYtTEW=8El8DQx|#b3^J8^sP^mnFS=GhaU5}y+P&==vxprcU7xH& zP|S?)*%{gvgxgz^LA*KP&Apn582UA%mdW?T)33OKEznA!M1egy>rk$m!QCpKESSqy zs*vdHWiUdk2N8hDg-0(gv3X(Zo3Qw>&RJ3ol_n!~GoAicNW+_dN{(fG!y7BDwwMsk zu9r76=nnws;7FA>;`7r=ajA}QLe0U%?WpxFTy13Jn%^7mltVHP>%Ac z$b{c|z$TZGb!)fxPIEa~CWv4+?T$D&aRKH{zWpi6Ap^(B%dCLPs^U+94tc{1qVt1G zhuvJU4H!k6*f1W^ zk21RLy7#tU!rU8E`#*35**$7B%@EuqFg4CIv)AiXC!LOLlXWbQgGaBE27bb{Sz?exoXcL z?NMVYwOY)2x2)aVd}28ADsrrkc@~2ih_lw z4~mxiXFHl)jFK-nuL^yp0bvzuYNL20=;e_5FiI(vTG%@r#)85f)Phh2xloUEd*f6YfhNYSo8F2FN}q6wJEN4Szh);UV5rZ3 zS`SO&=i0{cain<|FG(CdpH76GC+vVu92JP!ic*(mR|}6?e18K=!kWB89t95^5Izu@;t+ci9nS_%P&1s6Q)B~e%^rUEm zoQqO=5_NImy-3UUh}fnY@6IyDSQv@B7+LFAWMVLk$6;O@vR1`hGdVcmUiEuQn8~~! zV;R*529%w@!YD*r9*M*@OpXxJWfbE1XPMfT6h^FomJ!T{ojxU2Pdg zKaN2bTajLgyfXsq7Bf~_y-x%~EHfWV7l8+Mi^KhtCk(*fPvx3`#WGeMMO`JN=>Uqu zVEqtoO~}zsFboxM081zi!Tuh#CEQhU77v6atoN#g1Cf)g=M9^F;3=%*CSW>QSAJN< zJN!r#<8Ih}8-M5E9D*0>FbvNU=QSo57RDMn*qZghKUl5|MF=0Y#A_GXU)7~xm6+BO zR_8k!0&>pPI9R-x1I$!=9-RAw_s6^_$?Tv{HL_OUxpxAf04!k*VE&bma?lZ^+H(l!sn~ zF@y`!;lH^@zL4g zkpY%qrU(d}#4URg`uIK2r(o+f7rYzZ!|wLkg2nw{V3}9;IsQfidQ4gO!60>6ePyFy zeT;~Y@Yd7{w+4@|*N^tSE2hiO7vrDMJxfx$GS#LGPF>8a4UR zbqj8ABV1UytNW|gx(%9F*H#7xCjpZ;CCIQmnpk5ge~`xH7K4q7sw?OdaBARHoJJeH zIOzm*vE*P&X|vSKI`2gNW!t3nu9Nod9fOZ;()V>c27zyw=A%fSkLN@$Yryz z?aQv`w{VKseV7W_oupQImVu?x(k85(Pd0jARop;G@W>};O?|VD%+bOX` ztd)J`=}rqTTsk>igsLZD^@mKXRZVPsOrsAxbK@4V&hfK2*=!H8on#7vS>h0S#2hMQ z?Rar8U%E)8*MBNn>&JhKxrQ(!F{@K-7%ir|W&6g8^z))u@X!<+9`3GQ2p*%#x$ zE-*WUo(1*(_ONSKrrOs8mi1%l2(qwYQ8&481oV`H79H2HjyKx`J}^j8myB}LEb#gWQSVttgauejP-jkM>fy* zFW39R-2GB}J@R9MvVIp*`!d$jQ^CJxcPfr=LHIrtoKafrd37JA5REXR-`7&8g`79{ zzCwYK9<3^ zREcfISb6gxqMkc<%=RWu9q4e84LoH|oK3Yu#896VY$ZHzlhmlEc_z6vsT-2629I4c zZ^4q=LO{Zg*kNOGWHK?t?aL_CS5JO@7``eex%=~33Qt9UV8zShny}#?+1%cBTZIi2 zPEZ2>`)rN?_L1rTQ#L!g*g9L-n5cNz{~x;H|LLVz)5Zz3d7Pt9yqfMyT+jGT0j`;c zbwCw;{@ihf9pyq(aFp($+N! zM9zn+h*DwY;u5RMpPPb_kZ)}zWhkLZtelm(^dD4DJ)pu$7YdG(NJSq_u~M7A&kV^I ziwKeG5)4LfT6@{qp6)3$_lT*FpmJGl=%P@Z4Wdrrp=HG*wIzd z&|DOi&6vJKR<))MXEj!X!sm>^|MdY3?=%89bCuE}^KbibOA-M$BOgpltcF332zZ8% z0nhM#z>msbWa|0JI6mGKj*kyY5m@qAkvsaB@PKDnK$GtE3PSy_XE^q&E*;<*PKJ=O zqbZjH(D|3&N(>C10KzPQ&R=?Xz{gy;_j7ami_Wi^+jPc(npdpK$Cx+iKoDH<06fDH z8~86?S&*6lI)97SfG>g+OI-X)X%`RV8BUJT87$klC&*FnBxra`4>7rr3ygjs}4DijpC{|&S*p~j187Uh044a$0!uIF0$17 z9-pZVrpUDfya=PREH6q2tKriALV;~b3w)1yp1TKn5k9KCnoElU4tzFSzDaTkYN-Hc zuG3R%J7J(RSHcr^8YtmY@Ihf)jyquY7)6_nPp!ujy1XGIU)8^gEnsx>JZ)P-<*ude zJ8{jZEUDVp#LsYLMeB2@>B(`Ui_#=@tXwGhqMwVewX?f$?6l4QikkE|pfH z!Wy+c(p;*~<5Hg|#`l{G%XX@E>KjkiJi{|h; zm>EDusLef>^1JI0veugo-LbdxNTbQhIt|sJOHXLscy=frk_qksu7CXD(bW*)4NUu%EX7)2fVmcZ>$3d@M2xtoC(LZH zmS>VS`^*^pe7JDa@Q1<~ELY4vcYlC>a+-m4)tEoc>zfx7M>_I%%j+Ol4Od>m@(+JK z!)wm`fM=L9WCHLElb3DHc^hay+yI{8KMET`r5kf>RlGU^xk0BwkyofWdzXUl3UCop z`BKV~&Ti)=q3FybJ$hq@qt2XyR>d-Zj)NaSTgNn5%`WP!FUru z?L^U!D}LJSSO&nrb&$XzsFt_rt;fB8-41vl&zGF!plkjq*HmQcgvbhZT7ph24jt}7 zDz>V%^WVgxmJUVay!Kvp_VavSAkHXVu<7?JofT6ETE9Xo*Jl#J_ zOdjlG8&OF_fNygXk!A2{k2_<|g33%`2kS=;xOdq-Y7OIM+qHbDYi>kwFf0dgjg!N` za68)(Etv&){$@a!3F=VoHw*YNTUojuFh^|h$xB18gU|Qb!c8tVS_xz9uzmE7$C08P zO#GT2$E&1#97A?%1k)>sI-AawVTIXg)xiZascK<7R$-WX|g)AwD3;OV__Ma<8#11amg_TDJjb z9r0@Qm2C%Z?Zg|Ep+6YofcJ5P6&?SV;;H9>#HjVkI=TMHnXTJWrQo?%`Qi9d%9!j8 z884#zGg&1Lau3yfwX^#XwtIQWuY19Ma$|Y-^vPbTzNF+TDcl6zi}9DOi)$av)mNlc z=28oYj;Y$0+|+;M;P!{J>}a5)g3|8a=ioKaUTOYQ4m#T@J3Cs~n*Hyy*Z(;L|Erh& z3q4r>&)F+0fF7iw3a?L-0PO@Toep0-P>jZ`dR$5*pLRr8d}A7LqJWR(;g_ zdbbU6%zy~YygvjG*Y|(zF#vQBu*Wok_JP$#1CH9Kzs$ID{L>!em4%^+o6x!gZ@?#k zhQ$YM!7!$+f+}k-hu(S)LHz#1{_xZt+_RCCa=e&gq-s66(H<|VG!33(BoKj<(vsC> zQT4z+@V_GPx1LqsS*a2Eo^d#ymPO@|ks*o7hARqI49%GDe%rBLVfcwQ*evJY2!va1 z`G1ohI6&i9O(`|d_>}`hdQbzA9)Jk^OL_p#Z=_DN5SU34wuTnO4LxS zO#%HCGq4hcH*gH!pDMxyVHX&F(Lr(d=+!Kka6k9`lWpUlk;cAN0ro$=AT~b3VCH&L z;2+s(L>rtAS=L?HFP8RQigV|)o%inRRw8zI^Iue;Ntfj7o0RdJw&g-|ylI?WFF2ywBYcShuK? zMv!82fwTZS6gA-9II~8eAl-^AJXhEW^T&d_k*BuGJ|xWV?p#4X*nDG#+=h2`W&;KX z$Ut1%ZF|gBT1av>#U|>H{W(wP{GuZ{R*Q4@_8&c|6XSj0v{+1zRTu~F@2EFVj&|dm zv#Xres*fhKwc}Q%biTOtuirEP; zX&oIB)&GIC9+`=B26(V5*B&qVMMI<)Hxa*){Gt(?aaAgrHInn$u2!%U29|-Lo~LgB z^HtZOit-ht(r{2@wnixEfQQHc+>l0h6xI>opHuT556``p|}qDvRw4n0HEutU6n z(JP?|HNGcruZ|$jrt+lo8-gUePBvoV*Wy|U-~0DsD;ybpd%4O~Iha|8dNFRD7#0cr z_#DAXNmXH5T_|#zGF8#%bZ48XH{7Yq1L3y9vSMfNdr3pOKGHZhyz{+U7E_%7Cry*r zOWw|i<#t}?>2M5&QL3(tYXm1YFfjTf8tgoYj{1k3=)1+7O;U?u>G8^9CmPL@BQ&16 zlK$wjzXQ%~-Ad=_50xStlyjT+PtLs68gpQTIV^Qol=fbMZ_!+(!DYLJg59ogYHxd6 zk*v(#L=bTorR?tPEY;Bo?#KRz+P(zudj(>=cbK=1d_JP#55ADl$v$6;X~BNe9qKxE ze4pw0G=}Hf#CZqBA7OSi5#jXeZeZyV>KfNBZdqu|++CU=?bz^|2e@P0c4^w4=afA% zd1GRCNdE#Lq)qf-2=toaI*)Li+yla#M)d4I{d!jbrOe(;b131^M1LRZRiDHP z$HTah* zYD$XA^o7UUX$TwW5j)i@)z|;X1=(a1Y_bz8jkV;x?owrN=BV1#D$7N>nk}uDGlp&7 ziKQhlisd=uAySQ7s@Cn3K2sKH&=gnuo7WloTWl*(fQ6+Ml`=|vd$9bt1$$^FSs(Cn z=uW@azFYZ$d&)T3SnI9UD4D9};KHPW<@Hi!|9OjtJeMzhvUp>{^u0haz&h&T9q>}K z8s9vcw=-)9qtcrqwW*e_hM$UFS+-Fp{=Brtvd%Psfxj~FiRifIon5TEq(fG3F1vv- z4&;JEL1Gh=Xh)P`OX#GVPRIVvTo1d`5c>!!$1QHL+}z-wNiyBB=ZxJ6rgmf8DE7}` zpCMiw3aX$IVLj9;f2hNJr%R$7KvpEllPdu7+=D|F)L6->~Ck&y)u}7!c08O{ph0&ptwca zCJy!Y+4Mv%bj|!&QL^rL-1yC-Enf|9cBG7FpEbVd<@*l&fdRsA<>%#hXb|z1n?^LW zL~1rEGK#^9NYBDTbl1Y!A);%I-*fY})O$^0mw(R`bw}mO?le)%q}kzd4$wBsT2eqMN#s|I2NNMd+pribj`}QqNa`s?^=H zh8r}uWAC&^;kCEw-@bPMZMOrZ#&Zco+ZF#cZ#7;Ti&ARI)Fn8#;_=2EX z2-==MfJXq|Has_5x^-&HfZ_hmpxTKut&~a9RioL5Q-!qYbKsS^?!Eoz0wTnau+fuB zcsb%Ddjsvcn~(3#2EM(<)q75Ibl%wee5Eu#(8^~ZdKVhGsYXmioyJgWdN{S}7E3ME z)bs)44J`FrDyl*ZwK*v(W-;JSBT()oH0wh=;`SPD7aqv$Xd!Cua)=%{gOk>4h3$w0 zAV-0;qwglndWPp8GBO*^1M1F519?nxFe|IQ1Xd^rm5u2)S~RydyISL%WfVQ{&znbw z(Jgkp3W(~?ssPH-&4>EjAAec948fi&Y_V;9NN=P7YnR~SepzwUyZcK;2md3<9A?B3 z0dRS0$|vH6rK1s{_}1B^YoE<~OjCW)5plx9k}*R$s^;iWFR?XO!IK7G`p&!bs0(Kp z%V$06)AM{#@Rj(|I~5xXh{6}P(0U8qPxCbVDO~si3KM?hQr>Rw(5Qmh3!+eVW?~=2 z@*&ox3j$A_?&XqoDOVG>Yr}A@m|=2izuD7i>~ziX$}^@~R-$By)inmZ>@>)j&8kr= z|5jaZ8JEw)pZ2mtysSRz`L1aP6C@97T=_QY)6op=Pw|wHxI*AJiL7<(@@{_Z9lh&E zEdKNWpVCMjy~P18wn(@HzXSyxwz^xb1~fa$Qril+4UQ%s2Z-_Uwi;o2Llk9R$1%Mu zLs?ya50=zL54Jw{9+Dy8+~y@YU)XPh1!_hww~)ZAHa>tX`(jDuC3M z>fLtgiW^S!JGeMV?3stCf{=kbJq#hf_fIn*qmaahlKEZ4v^r$<7Iz;UT2s>E@!*Kk z(t$EJC@@q+OC9Y+fD4T*d1Z6h-?98aJlrua$s1{=mIcp%=I!Qap7`S>OsH`z#O>={ zxUP-B6DeZEY62SNt6w&`ayaj;2F#M<5 zYHO$L^2Pig@cjQh!~e&%p%YMbeLL?7nD_f8Dm-ej#HXd{WxQr!uolq-z9e;ja9g9q`T}pbI%YK*AJ(roY;`T$iOIJ z*6PX!1vuf?4At!ut!A~p?FQ|*)ua?Ev=JB04XR~H+_sNbq^_!!6Ggw#G+D0h-ZOrE zmaLEikooD%SOevRY0ZTTmQ|YbFm0}Lr#~}>eF@cmW|)Q69`RE}Rc6#1p7A`8HfdNC zw=f-Q^t#Ru22O%ueX}C2ku36P3sWH6*Gx#V=SHhZ)>_JH>K|;gOju2`lUfY(>~OE* z&b}5`FW-#Sv$#Dy^7g&@5q_ey#qzKa`s<>AfIMAseO)LkSVLt!zDJ^RXIp)?MRm&hd=r>Z3pv z-7=Kqwpz8}5uI!&*5q6=O>?0^$}GkwgMPFi7>&)?%rgXysib1#CJ-_ok0e60kX>iV zS{gv+ufk8-w#I*(*%Nlot6~=?BPEYhf!rEz1SZ=o~-_{}5UdQ9r#q z);K*scn`oMx-0;A1XA01Ml!J#0FOwAq6fhv9zpO3ZANZN03N|Z0>C3yu)*b$lG$oE zAG1Nke0vm)tGc2Bb(suSP6G%+jnm0z}=im9W|= zn#+OaeN1x|O|e20s4u3oPQp{@;AHmp8VHj#BsPz6?8rIl(ea z1)MoWvoA9d>(=5%VOtLgO%$0&xf8K|FFnYqz(ol26|6PHeH>)V2;isi?*@YODQgt* z(?{YFgKh9`$$>uufD*oTk(-W}>e^xUox@wlNa(^_&CfNlfJ2`SECJw}HJ)EbT)6YI zV&GA9mfZbu!_%!M-xK=A$F2@6=Udj5j#)th`360Bv^gGpC-1Bol(tx&A0_U=T5Ef1 z7BD^PiR-V#7xWEvw|0&^0H~1RnBd020PFQ*J+1`)vO@qG5jDk@1?+T7iWM#A$i>3U z_pT@&&Z7xGJ?a;6PSe9|1|j52SLpMzBYWECQ@#N=Iq2)@Yp{KulE82%!WrP2RX)@* z`GYyryQ+&EBy+aTXkvTE^m}GYZfEY=aZjjNzq=!auQUtK6C9mL_QG#O#ur*bYL_&j zPn&wgRAp&pO!0>ST7fRn3ufKhX0vYVi?&n@=mgCqV@S<7bC^fTJ=Qn$wx_}#vyEPb|1J22UPKdprDBkL~iE-6TBlAuaVg zI=ZGHdPHbjhzh{V_Zb(dw|3{>=~rmBHx~@#lbc^q`;1D&MW$#qYF#qywvHq|X((sZ zk8U!Asbm=st=Cc0e}pU3IokI!`LU3LHd}U%d?LnRK2ChGzxPU4BQpRIg5M+~K#4;< zc(pXEZEWXUX_XCqU|)+99DB$ z==5|@4E-^GyZyvf^AdD6$Pr1dE@{+&AGKt$`~v0;ehtZplW@O^f_rB~TV?B~n=#-- z{bW+Vf~7^9O<}uAN}w<>)i@_*W>t-`g(>-(n ztqjD|rAHimnCLZ601gRBUz|jOJ8s*^@U|f#r?BA}X>cjyxpLTVl>5jD3sk8u7G+7d z3mI!vMO2HH)q%fU;b{f=Qm=S(cwG6tCu@;*XHCoALZO+t2`he|@^!2+j_qKJL?uhE ze?4qnr;y(szA`x+jE=kV3RE?XO+9;0NE3{_SK$u14$F89tWBYqoYjw}>@5vfzrM8W z)k!};uhXDYEnfHtZoG7y+JU0|L#*wtJ`nAo0RQ*VjseW7|09^u)xycb$ol_ymHi)6 zT@jS(zSA|EtOksTr(lUyncSXuRS<3 z`TSM2<0Wb>K8cP;4$n(3?kAbcJqSX)tve@wF2L>ixP1k#^s9aBPU)EhBeB6@&?E>x z3uE~svBe}ksmEyJmMeaftJH-^By>>|;$Dq5GokqOQG?fw!~$Z2k7E;Qm0S0TJ%eB0(kiSN5VwFjU$r`xN(db5YBU1wb*o4;8_;RUFEyE{@n3Y zX=%oF8ht;#r@K#YmJpb)tPalNQf{{X{-p<&)_SNxy4M-wgBrzcqv@nHNQ+}$96zx& zAT~cpdiIWLTTLhju;LtX_9rsAB^twdrn?vasQhm$jyIo4Qz^rDd6fz$-yI2z=kH&t z&ew6H?*s^=A$(6a@S}ZUAmr0nV~8p*zB1#AidVpfCr$*>uSg>NvIPK9i&r~~0)t#8P5>Z^3w*JQ z_3El2RZhi05Y7}Qn+bf1=WkJOEvb6ff-@(hY0^4CGnf@-gkQ$Bgwc_=Nxyj*Y-*+> zu9?y6L?#>#Wc&e{Ua;hU0ixJTFmi#6w+>;pWW)_a002?Bqv00aQfLBhVCBDo1z}vW z-S#TVkO?}rPD5O|IxtAqtR5<`oE#9b!h~9zCEYJNcR0;5-&)Hbrdr?AO&$#jaLlPz zMwVhDSir=AwYk^A>Ja+>D8s3JT##1CW<#hc{-H_Qj{cKCIHPpTXXgXbA11n#X> zggMEsyf560#7>ixGRn~ag;7M%6h4-l=dTr~VDA91;;hWhgmcFNR-AwbE07gOwghCw zq0{_p#YutzS#jL{%Zf9ND~^mo%hU!UR*cdM?$bT+E*(Y!RvhxOb&o!AI%CZUxiGkI zXkytnI;xwTH|%}>Wk<3crSP5-?|trN4ez-UolJR!YWsTcU*e!%z_l5v-7PS%mwtKo zHGW?uH@2P0kzW6f#4+5%6ibp%^}p)$g?eq zhvnelTx;ZgyPbCv^3Bj_YDGvW@l7piD(ZCVI?ux?UKuxPp_aLb41r)Qqc|3g z<)XZ}-N3k4{$`$cb}`U)k^;+|OE#J7dB5pZ-?g0$A~)aD()r12%y*r>oC*XbX!*5W zG0^kx+_if3wO+;abuq_EQJ4^#Rg8C_Q!ga4GxB+(aOnIhqH56VSlH8zXgm&Iux~r- z>XYY)`cR+#!?1BvJNFNuIJa$;hU9rpeRhGz@R@1QCf~WjRbBGADJrDJoR_DP-5zKA zpsVj}$R#E`VAXWU&3Rg0&Dc?Xf~0A5$T%kF=n+?RIhRN(ipp9C|#ha?Zx3lhu zCY&$yPiP-K9~Giie15sszxet#O7HvmP_cch~HiD%O%+B?&v-eeU*O_N0}T zi>G3go<%Jw4(0(v92O^SJz$6n0Ss{w76WIj$JUa$Vim~AP4s)Y+;wSU7l$hcH!^JW z4Mu9$|BS)sy(BCr{_Vudt$B0e2ib~7g822Yezo}kMiC$e@e?B=JxrcN1$ZbxF(@lL zWy#OSMUnkC26Lruga2|87vabOPNIGeC~M1HqCBuMDek50@QP%AH*%0=VeIKg+pbF z!-u)vONdkjcTyzp@3HnPGfgKHLS)PEs$1$gEyAH4luJ5(@uk)zJ>I*Ka^XHeo>u82 z)U&)jy)t%u9xw(hZC3@OyVIZThd?#=~%kYj!&Un$=r} zA9Dus|KMKkrxJl`t`!}pmRz6nYKAd`^}?jljH`gJd{Z=G%PZSd0(~5r?H)b|$3Hx! z$gMn-fIh*({RImDFOL6tr`r`O%Tz|W{+E5IY8d2)Ay&W)XVqK?MBr|)DaYRkbo*BX zYMT8QBQcMSk-o{2fB2zs95cUPS#rxotC&=N|n8h`*k~< zg-sCY4VxD_1%&J}5~+Dm!;o*aak|vpL^MH2*tY;9F>ro{5?~~Li(Sp5KBR`ddHDw; zkqKZVB8vF}jKo92pHPy0!Y9403;Td-5X5YP{>yA4?Yr?^&HT$qY^^FF7S97#h1C-7 zVs`_Fe+w3P47=-zI@|3WJ2X4^4@mM(J%VG$`x4U)W5FPXdvf@658%xoGqgwvH}m05 zvfp;Jw5b)?rCSq@;I*bM&8WklT;A6%eBK^${geeJ%?x`nY~L6V_`(nhBw$lu7m$Eb zM{b}5+yD~r1$Xu7Wy|!T0U1tUnQ)?~4?HdR6qy3oo5qWdW1X;ERV;4+qS3cqAaCIk zJtS+?WWA*1YVNg{VG`lPmLB+%kdIoq#}F3KaR=7bdjgFOWa2tk(8$npXw@ z^1IDNg!K5IFiGH40YH8sY&wO&I3}J#zv+Vlo;i8fDVL{Wj#4*T)z7vamw_)YaPS-O zi+Ac>xxfLc5-k%4f8o%m2_P^_Wqla_{)ZYP^nN= zU2S0A^%6>8jah8OR%v)PpoJgU16q2yjDx#-Abco6viy^0)+1FsPhW2P#GDjgts+CH zkTIyQCgSWh8a#xJXj46zaI)K2)8>0@Rb65nZRk$HGr9mUNQ)@F(yU6~Kc@b0Z0(C9 z!RyKfj_s(RGDApD{WGeY-@^eB=$9dF%G32aqm5R<<(;a*B&zw1JGD7`rUScnmEz4SjS@3R&%Cr&$n(FjUXWZlCx|e zqTr5}v%L%?vPq`4Myg8osH-qX>gnfk49X zscksByv1KJf)WmyYe>KbNH|cA{VU<1te+LY{`tdz@qe4=f);Sa48NE#ni|?zSbNAB z+WargPq&p&-xT-<`t9Nl5B3fso>UM8qCE$Ls!8L&Ph>25yIGU6oX^_jfTt~b6a&q` zBFN@{%yT0^^IZRz2T;|cl*22rm|gU4!&+Z+Dj~fl)a&8#c)R$6H`l5*h3xoDoKR*G zZ=byR-fZF7FRpVhCcfVAyQ4Z;SH)4JaRac!qWIc|RYCG6)Yn~9-g$+Y5;K9a@W+?~ zq)v$)oF4t3Ao;o!tWl}U3OPIu;x5!=tB8mik6yoi(z{gV6}-uH*0t!>4Q{WL>s&v&^K)e!e)pZY;W3a-dcr3 zyYPa0w@w)2@ExB6WrVV%*1U)8VPEb?QZdeR6Ow_tl0AVNyEfd?O(c4y5BAr*Uqi9t zZ>VOIY7z;qmavu39+)ggMEZx8vNZeHx=ip)IT8||Az!aLx*$(wEG#ML@9SymNb+e= zySByZ+0IlU<7yB(wkgsNa85~aEO);vd&WVaVRkub{ZXZ*ss0%urN?u8;~2ht4E9wN zwKU<6yrp5s#&5cbE--p@QEyBjs3X$V)f(zxa9OFf&1Lo*S(h4;f2*2@r|TjP@Cnb&T@_=vkwW^bUdIbg68& zA0=H)9(ohav>x@Nc9SsRek%l9wU{_q}mVn*}2exMSGC>#~i|D)Le{18ZTB+wYxtqzDdpf|1tI%KhbFS#EOdM{rH?tS|CY3?EyiWNNa^ z|2##rB_?+fU)iI7F4#DPBeKVY+CU|=zMt0M804Mkrrz`b zt(Z81H{0C#lz~?46_RmU;fCux;ebiA(qZ_}Du#s1-@k|Xcwv50D-~fB+O`3{e&xs< z@YFvo`E-UIx`$WfUGJFcqOIRHQ@AgnkWtj)#oXSpJis3Jef)mX^y1L{@XnW@y$j1Y z((swnYjSdyw}n7CFirYUAf%?xvqOz^+57j9*rK~Wt}fOWHVG@QBZwQq2;sM8m5E!^ zr_83J75ks+8UxG{#KfI*K-}z6@*r^)y^fpHu@4{X2uA`9%W7_6$rQO+q4WMtutoR4_MPun&-@%QMBBd0ab{OY5LgIj zLfYMku(Ea3JyBB|=XnKx#EoCiR&4nYSK*>%&qFI5b?%S&Q)m6Lr9i-OXjp3Sxx9vk;*6L|J% zXO#Zg(-(|1RFZM&x}z`t1`SFUv53r{>ySWp0QvFnlSKp{42;tBS@&ik!j@N)u@~#!4;N3l8he&)8FYupi8?kZu%$s1epnT-Um|hw z%{+#pAzNg$)QdOB2O`JXD1xVfTATP**wZbyaoD~kS4mDrw>0K2RGyieqF`+xQsRy{ zZcJ;iWWFON?Urx9Q14eYLVO!YUGdqPW=S?=HVKwIYm=pkE48*Wqkb{qiZo^}Rf;g2 zws&8Q6^NFEhsPI0T4!6$GDIhg+K83oXa+wvF%E;(oMf@3*9C#~*Js0x-f3Rw6lvSD z#*)W)JaKfqffKFL=zG&~jyOoZEPGV7;m-Ll#hfkG;~5-;SD})1?5i_EjPDn8C*C)} z{w7~kD&d}XiXV+nQ^l8dE?338YX zaiWPsT3B9c_QUgREihXjLLo$F1m2pP!m_S15~SgC)QOvA(8opW`XsvLwN;5$;RoCd z5*Ca?E-Y{)A$HV3*|Jy#WQ!&(oPu|z6qWArjj3?@G0N9*vPvnnuPRn6&$Vg6b!K@c zeiRHWRKy%MUCq`zO7Msr*hB9TnXtbq5{|SkJ60pkqM4 z7JuQJK0tl-1@|o0xT`Qs6$e)S(VK{S>wLr2L;mHdeT^1XmoSItex6DuJH3zPr~~qoZv|t{(t+7s+)8#ug?dE+AA#_1%LP%R#s>)_xid*ztNXT)7yo8OvtO$g zf#eU9<~K7FpLjWZU+LfY`bvGn^z4;rWxwoGENrcXsT(%KV2B!sdO`(!4({fDae zu6qtrXw%01A>%+7F-W`)P*$qEDaB$k}^N~RLK?7pfJ4oZY+ z1U4S^bI!x09bT1Yx3wLU=u;c`R=bz91^rluEMJ8& z@lUauZnfjVm@Zec8B_H;a&&xa$BJla-%0NW)Gm(OPi|iqZ#_5azyo}(?h-007W&zB zT&&M)pAKCEUs~5^^B2r}DEi&yaCxzW_nOwgTo?)nj@>nrG+X9iPZiM(Vp|kfoA&L^ zcxGn6y46*V5|b4eEM04nbMo>N-|^I&(S31Fq3Sy^ko*kc(}-~ta85blIlfgun2xj>MK=L>AQainG-OXkAKEUx!B4uOr&JNw$cS8sJ#-Z^Y@ z1&gS<+f=F`FN5}*z+U@pnsaPMY42uvE3BN9?@^Bqwn0M_7BgC7R7?4=&uMnPLsR9H+wUF_cH)N$L0I;9QdsKTbtW2Sr5%U#Q}Qk9b}RTi}s&*9?Stj z++e)J5V=URrP`6^@oEihGfhRmHv6DFZWN6^%IApN^)mXzfxmE%T*s4myM@6hhzLLe zae+ z8S#la`3Me4v{@`2N8iuH)(M?|eiSM2?cJL8tMw+FICCrB@j0(Mn{0NGRX<+TcP!cM za9`V^MB?Z?=5EBR$PCQKZTWIaQ;mEt4xXKM4*yw77sb_|-$%Y@Adv`LbOHMl^h(?- z=^!$5qj|Z1;`f~Oje-5?QrRyJ)~m90!=8=R>5=!5v8%&APf1U$z1tRR+eVmnFjz&4 z3_4l_cY@qSv=trLDFaVM=GUt1)BAcl<_Q$e1emR|m|GRd4HSg@vX}DDuUo0G83X5T zHfF#|lfhj>>avR~2DB!<%H8Oks@G-_n5^+j4)tepwE$i|Dgg6yoi4K&mSsw_9l*o z&UTLaCJru!*8hv>{QuU2abAEI&^xy`j4UKh>r!&AQJ0o+YeLumhp~5T&#Ym$bSt)< zR4TS@I~ChWRcza~ZQHh0v2Ckjd*68$`qZ|NB%*^yv7{!JU5_0TXe!nKrXx} zO-@FB|BS_!SYfE)``9F+P?yPIm8r|K6u$BFzP>j6n3%fUT7SFjr>k&^)RH;8^OvYv z3#9P-m7&McqBi+dM1*GliZ%v`39`z-2yPw1MF9?Mjd5Le4h z1PN4A?WWGr>W7rQ21g$e?P*#VisWz3bGXk7h$P3q52q*>s4!o$4qEunrxmc|8us+M zNxy5VsC5j__z?Fac4H^Mxrc#6r-T;BRs{zmaXL=TKpRP$3t=9NpxE>spO$E0)>@5X~T1kT~+ z8>zrLoiijIFM4+eXDb#j%_~yV-gDtAf1@F7CKB(z*?PY`u2BC1-zTiKBI{lJMr-n< zMgh9og|Ub0tT!E5U1c-p6?(N1|A%7C?#&z*Tst=Jq-Vv0Mr)&zasI*d3Fs7)H}r#K zJj@!B*n9z7p6r%;f5xC|_8=;8{n}xW2K+ii(2x2!n(rK-gTXA?o%JhL4ueBEAe_OW zkGq_eNyNM=+|i^TvCG=y@I?}%|1k?8A@^&6qd0M^F%NW*tu$b?P^Nk*p&WkCIu^9V z;90e??mYUIyMhOZM#zLPMgTtWBrVajwkEQ@s$Vd?X7XagQIYG=Fh*0#B;lOoZa zEh6NXP6+W;cb0uFN6bdQsd@<_s>%Wq`xG{)-K_>V3JF8MbJNK9Cf2Crk(kji455#7 zv(S~!gRQEg|J0WGGlu!DM^1@Dn?R>3gsI=aUeQhwNJJsLlXABXL&Fd-dx_<_Oxk&c zC!LyA54rUzCI8}A4%h4}*w9N3(`Sr*A8i6sj9JY{_@nXp$4N+Qx77{M>l8~n25}m% z$KzqK@-inwxFMqwEF(+MX4c%??aLt3>!AHB)Jo^n<>uo3*+FMGuIG*0O8ak6k7z>y zZAomHr_!`{fC$XE4VYw*^UbKCt^5e82*=xd!Y5kJ?Ax_ou^G7>NtF!(7wugricgpq zW|u@-C#>u|TLbxL@98?kea-cECI!!yqWLJL;CuPJ&ijC}TKPUuPXqRSmSz@5=h&a! z9_pk;iZaYL^-D$#_IBdjJkWx)zacwd@TRU2SY9t()?T?QvJPxI$&R{p7a=5dokeg_ zqqT-K>Bh!S%#E)uu;!u0P_!px4!E4$bp2=6E?=jTmFteKkaU}ty~MN;up8V@Kd^Ri zx6p-bbYC4iT(Z#iT0DyrqMd%sUTi19@SMJ-Gf&jNR;symEalVEN77xkcW$n@ZvB1F zw|?-_gMjSc_{*_mJl1O2dOG4U^gxt$8dVKx#-X(ofUzZ+rRJa@TXa%@vg}OW(`8xN zayI@^$Ej!XZ3-35sv&EUk&&}wX$W%us9wKLx+~LK)rjMCvII-Wx7ISTFYj=(US9)* z|9BcbeEzavb>V}BJ%|KJu_~eHD)&gcRY+cVM)Qz;=R;i(lxY9T|93w`pEFT1EDg0w z{;v-BP&RH8a;v=FWU&cZChWVmXRXu9)wNFT&G{Y=PUvPFQRWqHYxy`E4Z*<~R|_zf zuD+Qr=F}a9I#=Jv&71dAl)AJduV1M(h;(v%pgMnhHX#I}IO7WzcLb4Iq$ zklU{L;C)lKtA5Y|Z{6I}+|YBP&znQ=h^e;BMO=uo_4uZQh6#Jw=>%Tjj5=r5=l_dQ z6#JAvQsYy+?4&|}5o+EJj2!>Ao}CtmZqQeTwY9WWD6&|p#i!114F9*-9N(o3Ga-0L zhk+^*>1q%Yv=#qqCr_)oGu*UZu%2ZlmpUUD`S&u@J10LIB#xAyjtZjYB4YuNVIJOr zl6{rSJtXcp>Yz-ko9jrftJS6N7i{i<9VpSU-J2{XG(=$#BiXpuSI^p6##txN407If ztVzbeeuALVN2fYX6mzd|e2W~U=aD<3(2peM85?MpbZ6pa;lJ!54~aOX;2m1nLrm$I z%5vdn=(^0F*2R?njAE8BNXnT@li%_8_KE(g_FUH+W6#`PX#%%qZ(i_UC617d$_kU6 z$vZTILmAZ=rstJMucQ|%qaTQD(Tp-JW*7lY5K_@0fUn=69M{lS@x2duG=n{mnqm`_ zfxKGLcCp4zuz@)?q=s?W;CO3pmaT;vEvYxAwe$yBNk4Ey?nA zhla-m&qwz^SZP7gL%7HABtj0>M}Up*@*bzBh;h*>W}4b_G1oCY?;AL{I$WZd(Bu`n z#e)~iOP#7yXTAL^C`+HKE|bHW8my~DZyxq;k?FnL>@0TH5X{k1_guWiMc@8L$Tc;& zOK2W2%B!A+2H`d))He*i+7C&o=~$L+vi)WK9LY1;6%>3m%T-%LU)#^>!gHnWSGF8Q)-H-n9;MdC@u- zdlKJ_C&T;U{t>0rlyoZ*#wT27lq%8@YU5k~o0ovNvel5dI)!!J=xb(8xoYvx%=&zQ zGW;Vqdvh8^xp_P+a35(zS>F{ztN4;phx$3B`WMSoUgEZD<*bvi8ws?g;eQDFQsctH z4ZmJIrz6imQl%7-8pj!nDb8Y5ZAAD!RLFCkLR;CwU{ zj4SDFt4@j84jNc7&W64O=~H8^JZUrmY~n&t9}N<7)!wQ2?ceUHB?tC3iF^Xuy-Wb^Z}~YKZZV) z4MK49OTYl@;d*bTdr-X&EpEWF{vSghcUl3Aa)m@Mbv}&Iw*ew3q>>&!t7fKenGDh+ z1v@e-1S-O)>IEuVKbwlQ6~Ar6OjNZ*9hw5aiU(o0IwimpZw81MSDLMtA%R(c_40uI zm0f6SSj;$~EZT&(6?)M-jr7|(l-#TkN(i&bA4gR>Sal6EmoaAH+HWAt1G=dASvu}Z z97hw1O$UrX5ZzI=`@**he$Z8X?k&YoAVNNStc%hr5kbtv;)ty)?858h5T#7a;y9I; zA!j_lTc}HK#T&?a-IJK*XWxJ04`--libfE`@k16CZptxcs>+S1zyK!J*pMrEIkSP4 zn_GFNTsXU-j6`@2VnP_FoP-ti&^I-S06ib&SO{vL-U79oWl8GqP*6A-bRjj7g2e4$ zNeO;6^!HLV-@wVSs6Dx3WP>b-zxI(S6{#j#wb=ZyYPE8X6n;o>g7l)D4_Xr65IrSq z^vqty;ZFU2#Pe@`DzJM_rlB$E2wwG)L%hX+zk;mgP~<3s4|Vcx(VyEsK5FyYe5y6K z`-3jM+Fp8PJQsr4tBDGA@~eW}v8G*QFGOc8MQ5!%{yCR+dhDvw8F%JALyX6`B>Ml@mZdJxEyBaZZnwtdCV*BAe+b1)gE4>jW4^ynXq{b;TpTy?ok!69GPKB#6$<$-%0`^hi1P2bUy>J~ zmUmcElfR9|F&CwR5Ze79_xaJS0LH&Pj_?Ce%im9_tqreF{Xn&8L^>LZ#_<=`c5pp_ zL(mxds^!aI%6Hb7Quc}=g3`X1Ie!P#@`qGw!Crt`{sEh}zY{&}QqR0wvd$v9l@EAx z$B4n_wQoY=-6o>{CQ^Y{qjjRKvO42ZevT}G^xBF_^zqSc8En?(vTNlG7x!^uv)Z%% zG0cJicFU-^l{2ll$WWT@5P3EF!@Op*tW2B*&$A|$X+05qDp2me?^H$uXhW<&*Iko! z+{x`VzOhile%V@X<CazTiWFgL3eoObJ52Y*#-17I3_r|MFWFsQy1;%iLHeOA~124e*P;*{&m9OWBfZ|&wnS( z{~>_=xB233JCG1ig$yiDw)U`{GjaF>tUz)pzs=8qEFgyM+DZzSYk9J%oC`po z!E^oV1hdhEueUeC&E4&4@b|8_yjkq>gTpgYQt{d%VHIy6G)0z>lJI9v!5>k`LNpf8 z0}}bPG>Q2XEH9*cI!S#qscvQqhR~0pOYeTMy0Xw;iZVnAKYx{cE8SZ{(HKABmx&3J z$pg#BXjC%laqERvl!0#3;~2E6^_LtyEHn-EYV=Rh3qp!=lwr^Odyylmc%TAWAsf)~ zyDEoMwSrYD%y)20CR(1rKGFzarBh&5tm7nL0Ul96w>mlQ&hBt+t~kMoQ%tbWyO$xm z2_yG6BRL9FLPN2KFcdmuen_Vuw@Is{7*b^cw$zxQRPgo#2<)w zG&(av?Ug7w(}h`)U+^W2wv(fd6ec-HSmtbL%ZZm>lCerLb!8?E^6g&k#L@3gO5-4= zhW0YEhxCm;*H-YNKVe{vg-wPLkGc4whmjN#WC<;kGEUq+v^TBVdkzK3E-HD6Zc%@LfouG*y zOQEEosrSoDi?Ao)78^*R^VEDmpm(RB<)Z0$9N;^sNvL8NmY)nQG^GU$9({8YwLWIo+H|mN3Lb@ezTXI7# z1v1p%kQUQ&Wm(ZB9RZt-Dae6|=WcRj$Znc03xpHG8!3nqLUg`kfos>>r5zE7rV#J5t(h8F3BYBp^l(j|}!-x0}4g4ff8y~P!l9}XRdZB490(Iy2K z6%Ffa38h+C7YgYNLVbC|EwMF%EwDu^@3rj2ao@hLKxprHKFXoFAb@>5VDw+u6QT>d z!vXmVJiLm1e?$14Sr}8y4QVydfwB7S@sZ%Nz?=H76%mlz=X#&DYF2~c{Y}XkD!Q3? z=jQDB+4CmV%ci;8SlPu{+hD6llJ;|o5OiB^ZVQ;Rf_1S{Z>pOGVNTkxV zdo*~tBVMzQ<?sdj_ z6V3MioHcB+uKG?(yvwDL#Xd6j!M;DZ9+sshj4Rt0(c+gjS;uj&qpFir#s5$tPBDYnrd*wX2X+!Vd5_L78vQrNoTlA*}>Gj7qCQO%^ix zkCAe)l`0SZw8=ImLKzbklY^Eh%d@Q0r?7zrx?0kPn4)Sot_p3)$_qo9f`IrQN~I^# zrAPj$euybbvFxPkJsk=}A9rH7layZ$sL>53r%JLB)N{2lyMN_Ks6B#gi0VDIbz@Lo z(c5xb2GP@_epqu_VVa*~c!Huo?vH}at;kn)YL{5|2kLA==rQWt8Blce*oX!j1-div z@nXYM#K0mC`LP1eC%5CDW(ix{dFflBa1_{q=xJfz4i$hmF+p&uSH)(wUZTRLY*=mB z&`$0fL1TiMj+@J-bm2N(r|%A0f?tWNmbrJ;wHBXO`SNfIxh4p_T=`+X>A1oQeeL$w zNLhhT;M32DRVZ4dpM$wJDye#f^E9<=AbkDRlsC2I)QyO!(BqPFyx2vM1-7~@(2k!?s&r-BYmz&gZl$K@jQ@Yq?Nh4kz7?(jJS`0|uiw}$=XJaa8 z)@|3PlV#TpNMN8(=$w*1ahmLVY5PZOk^rZjizd>im-HyGS@p?VXJ$LXC*Ic)re|I} zRR$PGeFfpajz|dfZ{O(t@6GVPq!s?Vn8efuw8B?BUmv@6{^vMq_J56|zOJy)P~rc+ z!bbn=3XAQyq}yb8-#HJCkN(W+CW<^?eZwEbn`KltMoLDqvQasN2q?g9jzEP2NYbgX zEktxh&isc~vu^18)eL6%?&fgZ^4hZ08LVA}p-E_xeH>qC_Y5b;}bmypk+38W0pX==_b-Gg~;JvdZ zKtG(HJXl}pzG=~$e&=82doyGW4>`0%$7;7|HDzzs8Ge-{==sRUG#T{Z9yUpGPOUkl?57v@s*5SBz)Xw!8#K*cbh2RFMS z^%3+vS*(%5fKzH1%rGshMHd_*FLBv1X=sgk*YlU9=>{S{a)A&!Iwd8vsDZYtwQdE& zR8~f!2<$yok6Mpm8dQM#{+%W$7cI66Oq01RkbEqU4~?pJ-F4OW`>3|xAJ-7?Dh66E z(gG^Aa{eHfS~*V&aAL{;AgsuBm<2(^nPgBtDY5MK=&FKY;-2Vk)B?H`E&4qQP#me7 z9`D&4Z+=Z%XrwjpflO9iqI3GkX6dfJk1iu;KhU|?%bB;98%_5^TbxQW@HA{e>xq+{ z)c5_?_x+XkoHrfgCzJC-kuJwpe^s6Rd?wN!O(~eaDkkK+ucr@0o5d;!fy&rs*CPgw znsYo6Z0{dQP?x#$&;!2b<+yvhTUtU-b=t`#a)v8&4=!;e$ zVx+A5o|<*WADi$H;Fu)gi(F#COY}?m>Pnxo{fdxAxwZP*rAvQ0Kvfp_c{a|wR_jkbJ@&*Sx z%u@pl!4OLSv z;vai_9d7zZL@(cpF=fy3?-85_j(@*b4bZMkoEwv@`-icxjT|KVo*CY7e;saw7XcA; za9!~(ZqKAU+R+^4J5*T+br#P;Cd_)H=o46v6)me6uX9_)uX#_mnrbF;9=@Y9%*WLD>5^Q|P7GFCjX1$5${r32mrcAp3 zR^7}SAQMmhl8O7qQDze)umWV_i~q>PnPA=+vDwV@HKe+oED}XNw`HrZYb`W>tM!@& zNdAXRoHc(TPUZ>J)C9c}v(uuG5oPwLN-Aghaaba1`v_1Oh2~?Adc_7qqpO7HPtX6d~$Gsk2S z?@nqfj^~(2ba}F;0NU`W)c4En6^{>He0DNHF25SDt22)u1R}2JruGx1RTM0n9cx*B zzDs~!5LpNf^y&nP`qUa~a~&#em)#d&#ax$!t;!cA`)PDq71F!fe(heS{q}IYwW}4A zND``93lO)YJ;A0G23Azbi@^4R&3xMm4S-Zy2K0h+J`ofXet^TRBCHazyiUBTWOpCi zIS;r*HB3tZ4UkE%N#kY(qw<_FE+}D>m=x<}MrddTfgIYH7W;Ol_4D68>i#H-JWu6K zpI@5p9?AIZ|48F6;1?=wE1EVjttq0BM;wHPl|%Ga@pbVy&_2pYE;g7jgoXD)Tl&s&6#1OTBUNF7FI`oVuk3v`PDAt6j-Tj3* zcKv;oTxP{W9=lZ#)fe7Ok_j1Ec~P!g1x#LTWfUTnFt-cP3oc1DWJ1+4-$9pX_29zM z?kfj~8x!yAjgk}$VO+TTH&83R$zhv_z zRm=(k&pcV?$(2r!Sf`84oHtkwSWzq%AnE_q1Jj-&Cptf7JnNZXpEwWnug@l--j1Af81vuiM^ zuizj%i}_B8`1F+Gt&{OK_41Ke;@R`HtM(j_Pe$Ugf(vFj8=eEY!J?lC-lHhSS-f-!=DId3mRk#}c&D|Cf0w*tJZP z(2W6O+8tC?+SXL!W=GR9weS6p1T@mAAu}!;EGN7`uD&MpZ%!7k(!~Y}X!kx9OPr+8 zviqskghAFPlQWb0;SM@%8+zL}J71{@=D0zO7|ddccEv53!Zvg4SN`0Mcp%WKyj)KQm_3G5 zBD{{bfu=s`YVIe{T?ghYwHY0c&oDolEd1<>H=KvL&TbS%ioi0cX5GeUX2IaK^*e*7Z6<)(q9s0=Uq$)C#UGKREY^o1{NPY~I|& zeth@9oZ4$uJi2DD$AF}>OnSj!EKug)J&2*(H@hVnt`Zm|cept)7hCwM5W^7qiLFvX zx=mi0cMcBD{G2FBC9O8FnhQFXlV9h8<2}{iKERV5OFZwctNAZH z@Bc}nLEH#oL_iXK<;}lNqGUiu{m;OF|85ZfHkH!!3rppW0$n)Z z^b=&k!mcoNeMs0J899Z+FS$21K<-U0Esfr2Y z<0u51ZjYTS2rUF=gWEM>(po^oD`1u;LM1wdQ#u}UmyuXBD%tiMY|x5c1kG@4)FIxB zSwxDyA9A=2Kf|b9ao((K9RS#r`eS}7Sq3wR-Cuxd>fz}TBB^fD5CfeWMo1Jb?(b6_ zN1{Ql-oC;YwdvVnam=M4r(~0N-(c(_lpqip_fzCFEwm7%j^royD-EU*`^3_~?%9o= zl@6WRtjAY<*h+YcOq%JiY>?){fr4mSXh%9JS9nYqUV(8}POR=D&8Z{Vx}U%-H5^zG zFL<_vUSRab$Q4^jc{~TAK3hC2+2zKYE)BShQr@j!EC81gVg_O^u0Trm2V=U3xO|q# zs+L_Dm1Jb|c~iTdk8^V*(eD!AB_5stiFcY_RaL(t0Kc}H710C?{J3OhBrdfqb6D?u zbheXOnvU1r@&lyq-ceAy?9zV$r~^Fcm^|sRac=eacS6|Do%0 z{N2S>auHv@<~n>iDV1E;MowUX4DZ5Jum^FwCDidx*bEsw6tXZp%vuP}0lrfZxM}{g z`7Wn0^8w6X#Lz{Bb|M*+k&SA{os{9lydLB?2w^$NQ{S+XJioNYG?c)^N~ahiWHSx5 zQ#qqNQ|YU`TnzpLt#gwrEgj*I22sHWmJIBi*l>{m$s$WnYA#C^rlvteW_I-faK!*@ z_(jz?AuYq1?6`!c8dpFJL2CkH2=Q8JMZ5wErAqid7Y6BfPS%^*_+i&3)asU{%Qe&sP-0I) z5$&3fLazmH%T+Zuo{+iQVK1PIQkJwqG=H;vd*?Z}`lTeh`=_Zf##chP=evUn zoN|yn{awpvQ#;m!jhMTq&<%#tK5fQp=xdJ&Rez}TDSjiKHR@{aurQbO5sbTdHC?&xO!X7f`u-|{{x)5<>MY4oA%)kBSl3od*60(!!!rZHVa zy{UH{4{39UbOz!v6ermKNQVJ_PF3>R#u2Z zNa)U01;jbZwkrE?ZpS$xh_h{A>*J}c=0|Dw!w!ag+E~Q9^psX+Qzz;_&rMM6|%y6Wu*Bf&PO;A8! zy`$Z~Dx=e(@J(_5Zm@}LvP^OY-|Uec!<5|Q`gQ&Fuqs@^<3!{03X~dj;Fgk&)jdv+ zW@*b6vE6uEdLLP0u1yCU>&Y;8dAR?!;^!0RlF@uzWHy}`X%pJHGyAy9n#@bL>*Pow z-N%A@;WGP_KH~=a)8bOZxOeR=Ic0lc!v%dRgA;EL#r^1JmbBDcTv!9Gza4{v1Vc5u z^Y3@1z*ZRUrMp*&{u>CewnYR00#st!WJ@?kYJYKY%md?yqP#P{$Nm=(fN;Sy zS#|gy`ki-z2Fu0O)ZU|Uc~ZAA2bt?c#0t*UCZnZ9`GVjV7GUS^N-bD)C-E2lZmneQ z%;1;xW&)f!Uq4>ypcYf7pY$-OundZ<6>vhV3(Y=9DKnih(#t@HOdK*Z^R-~9$b>qT zR7N@JNaS;+L1c+)z2et0gG&j_+bIvQ%$PgboSG}`@phjop8Evup@<&>3V83-Et(54 z(U~IDS7l*CJ6bGv(WC%X>&DniQLpNaodSTfJi@OQ;{OwW*GF5d_l3VhY&tz;FmY$| zKxl-+6Zu3p8cBjgZngs|iD$k}WtKQ9Q;YRe7d;y1$BZTy?g92*H#Nq08lopDhjVU# zt|iV(5iuKaoKR_q2Mh4XT>)E?Pa?I6()$x@4sqf)P)>hYp*(wzEpIcD)Noi>s6vCD zQi;B6jqX}P?oNGFRBxes^eU6K9J zm_pMpMj$`kAvFhp?bH`+DckdFnj!LSk96KqB|^tkJci%Svjzq*6ICcS$zfgX7OiRy z*>RM}6v?y1+T1GuZ~;(wI7A158$+==plalF(^%-|T*2-wIE>TGDgt5{pii~gPc3N; z)>gI^$LN4YIW~KzTiYTa&no=1EX)Bc;zUDX=wCHX=saxuQnhlx5MtrKOhgJQd(jii z2u6)&bi>fp&biOo;TLEH_NfQ>mN1jyP-f982x16ysONRUfI^{v@r&|2YAqlN-;wlU z%uOF%6jB@mL0!Ga``vNG|1{zb)bp4B@uZ4x*fq439U#^sx4MmcHOX0g*lV;|P;-#uYap~$#~RVT zqw-*F%BMBLI?pdTQ{d(BKFaf0tPe-1;ma^IgDm{&Of<3PA)q==#22y#6oZ3Ofp9w8 zvvhb#p%(>caD1BPOsgv##1}uncrge-J*+mV#%p)@j4UthyW5ic7t%7^z18p{!WFjb zR;0O!naX7!iTUYCNuCZbqFn#Vo9`Fg>|km@8`=?M`4DeFcj+RWy@3=U{5bS)nq5MHbr(;G*Ds z^T=i;mE6EWvn#bbtm0vnmp2vYH}G{@Wn}c#PXD`7J7v))?^c_9Gme7O%u8h0xC)p z(R1W9D&L2<$)#2-089-Nho8N}40un#2U)o-(T_t;TqVAd58Th#M&~Myz-0vO$GYdcCW-VUR(yQ@;(++*9sVMUg8&?)k5&y_R!c<)+~7kk9+X zv+hAoLM)kW#$Q^`lP@Ae8Wni=uUu9dg$MDtzBMX7Ow_r;QQw6%Ns6C6X369n?P9}W zAUp4!UXE~Li3WMTkS>Fb=RLFZ!?MKc$rDR(S84ATg)Jvf(ob#Ce|B|Dyq!s`SFsjL zr2P4{uDpm4n(inm{~ZZn(Plkr-OhSJ zuH}38Y@iC`>-Gx-A1oL0PCm9e`;X5@^O&pZ&j3OD6{r6?Xk7tk=l{dIH-N?SzYfj+ zh2Z(h+28*&nE)_R`RMBI+b0$t{3mE7<4{!j%Y<|D@HadKHwW4o9RKQZt*Nx(dG956 z{O3YN-(82BX)0n^2Cwtk8GF) zMOMp3%TvHaq5}ph^32s3+11!DQK+au&Llq@u_N)5;x>U6oe&nOVfAlSV|8Oz+&3f$2YK|h2#hpF9Tu0F5S@p1=&=`fpS!$@YQn? zzR*jc>t#nJE6{R~z|GkboE1#JRD+dbb&pOOltTjsDoI}hmEbAk`jg9gtol#s>sxtQ0zDjbSt3pByB@x%Oo;H$t>{7db_K&XS5vW!w z^>NU3eHpZ{tahypt!Cf;IWXU9Q_c>R)1GQk@LPjP5h>s~+ zPMir{lqFYT#jc)7qM0PnOSM^HyGL^nj>Cop(@2H^WbxdVc@P?T5wJ!J7BXlmO)vso z;`z3kdDo24A{K(YARXXDnD+c$dsi%iS!}4(Wg9aeQCf5)%G4&u`o9h86U*ol)7u6} zFcpw2-&xfp;4#PY9sw8T{MUsksr^-SdX-UAngfbXRh|eS8t_xvCL2J}$u64tAZX`< z2q-#(tFD%1!L8GuZXb8_MOzMcBM-Rc?q_v?&vyyxzAsu7aPI?^T= z9avIAZ~EDr>vL(gV*NnPQbrS@Bo`blnlH`eY_sw7Y7E~ID9;m0w6-7!PKpF%KW)pR zgeBTLJ@>J8VYK|!bkdAMluY8504~gynZ;nH^i=^fzD>%8+aD-s%#txV%>hCRNZKnG zv?eD(2<5_!eKl!bKPs>${=$Z~=l2{D@^24#e>I&ed<4=M_Iz!CrV}6V_RRt|fZIHL z6z4}nMDY)m)L3KD-j%uZyJNp^j&0&9JFZ-EigKjB`#w8nRw z*2&jybV;J2e>?>kLat6JZXnKtas)pRwV3r||4e)wZajc-CLyB+Ek#jmUZ+3i0uAi4 zqzExxuu-d|P(ob{pjmGZb{d;GaccDoKKfb$7$Fqhx?Y1u=Sm-0b*WFmF-O}s2 zgJGpU8z2})Cm$xxG32>2W()<3H)P1ld&m9Y6y)1w{k z#?ScmCZw**YM&EI-3EMP)!01q_Gwk7VpYUonGiUl)l{^AFPqW|DbtG``jNw=k1!1rDwz&Ko17!mMo@`3 zlAuOT-u5vU;-Ke&{H3=oCoYMnf|T zSMkFz+O9X&)w=RXuaC`J*QsSQz3c4tXI7phzIRH!9+5On4(vzls3(v0CQK|Oj>D$PEgJ2 z>xgC*;JdQZ%Q&srNF%6nJGeYCTLal?`HuY)^g>~z4r1i>W`9H<==b4>MdY`lv3kPR z0&prroPk-_9yXjB40&;s!~XFThP5UY4d_U8*H-LpK6Pe*RygYKTRcA*^8+H z(R8ctDU{csCxZ^4(eV;~s(WIKHCcaivC>9K0W}d9)}|)WprSSv0sZ?M8V0fElN!v$ zLtolBqB#WM{*Ze0F7cPHQ9H=-3&U6h=qq~!`FB}o9+Vu?mT?gwR^Yz_FLC%UQ_tr* z9&_1j62=`;Sx_Ux$~GTG6J@1uxnZ>b<|KEeXb$cHLn<^`2@z)u(McykQaf&eI0_JQ zuov2#t*9_Na8j7T*=Ag`bh(P#0u7lD>xZhaEAt7iRsoVsosVU_Uu`g|=qEIxR}HbpnGGl%^6dSIDy&hlAx9_P{%gCD zj2mL97msiw2F%L@TO>?2cJHy9VVsxXAm|^5^tIR8fYrN9#mxR2v$LPO2=gca$ol=a%?Tbr>2MAjy^31J{BON&nV$;XlF4GPb5D({_A^U*2}r+dTl$YBjZ zG`bfa=Q!63vL{6^tr=ch#iJvza-Iw-2BOClXXg$fLXBqg``BVT-4zS*U*iHhXsv1l zFNkm!>Y#JETZS48iXF2P)>QeLU6HxPdebADDHbx0pH+9Q&Qz8!`mj()$PddzX_M^i zwD_a^QYH*IqnO(XLI&d5O;Pj6Lp^E7d&Op4`P=&#+@(0&Yd8>35R&CT-#ur2SQBh} zrkI{GSxcI@z!g5(i5Bet@WD3fY<&qi+bVD`q2pkpiCw3tPr_k^#PzsS;Z9a}au!!6lfnvJ5W10xr3Vtr9wY zH51$$fsg)noo@wI$&fox>UNxU=qZU-zCnHdUi6vIdPm9~R!zGXf|duzpa;ki7;M90 znM4|hXFP)I?piVnwthc`TW8RfP2WiZh5xb6IGPpgi9Y^fdYHH zbRJe=@1np>`X|j%6!}YfJMZpWaA@`MTJ68G6G**VHQqD&s zw)2r4%So;=arN1bg?S>`@`n9n$2fH`nP17wm5i<4fkHP8l4#vZeu-zKmTMQjs@M)C zn->S7-i#=kflsq+#o7f+SAJb(5*HxR#Q?F`l%02^c?Q)7TXM_KIkCZ~cCCf#)~5^0 zv(tq<3oH&Vggx^0%B0=*12yfE!3z!xwJ08r`}^f+Po4*&c@&dTV^Mpjx)4JVNd$Ya z?1Qd~I!n5hG{c$FQd5Surqh)KIKwsubO{uRqJs ztv~Lgn?F6@ANW2!ZeO;nyWHPz5%@ZvPukhb(8cJVTBN{?Pu8rx-?kpNFn77;H;Z%@ zMRK<=3tjL1J*7*_fp7%91y@Qpwgy|POfj~<3F~vD_ljmc9MP4i?%@g7I&rbvXiU-Q z*ZjIbQt8e&73Bvn=^Qif_+i>CCck_yFX;`MPvVR~ru<3H(^xOy8WXWv&mB<(;&Vl6R|%^iy4p1G83T&^ zK?mtEjx8$F{ciM@csm%%5o$9MCDkv>TnpL-$6Cv ze&9W^q$}@0nyvc{jVt>Zie~XbGNqC?=D#ne#POt7_uC9&O&q-8n6WqTHD=t4 z>11?14&P7`MhK(DV%>7SCx?fMNy;KY%IqNt$_o&SN(8my+wCscU3l+1;-)4f%5Kg( za9n$xdq2$c{SpZz$vhYkf}$d!5HNcg2`GTs{gc>&k76w`qCD8*pjK@{SuY`(#7xj- z^*t|QT7(oQ&lHzXLqWp!A{_L{z|JAWOrXW;*EBE1N>W=wNWh$=f(j>gc9yLCD6;Qi z1W_uIk}5^geu9L=>`?bQn(LR=4qqBj-Caor)WFQy_9O7613jw{AvEEZ`u^!Mt&yPGG@D& zSq{Y0XY@;n)aY5nqG-t@5m!K>5O{G8gH5Q$!>HT_aI^oSaJ89Si67p(-jN;BFZ06X z#g67{hQ(+>P3xUS;QJoUGa$ix9iVj}Y!D#MG_e-t*GI|R&khoAqc#nph#z(dviY|* z%@02SkD&J*8Ba>A01`vV=$_hVWm9_7<~&YS=#zJZLx(achY|yyGfc2PUvws-kP7rH z`W*{>dlKFcf^wd3Llfo-FWETCUVvFeGC8COC7K3m>Uy+#3{{Ko;3>?8E=urN)k2bJ zCryznG_|iHDK0UM(nM0SQ>Wm)@k1p#d$L~sYXd@r7UzmTF zbjC`Ry}D}yAHD8u8Det9zbmUm#Qs>*CQ<}+NBuw; z7$JR%CqW_ix9O^hVwxu!yMX^t-{>H>(g8aG)>!Wv>85>ds^w&{_g@6Qox5$TpgKen~2=UI4KJNnEuzBwgYVX^-Uw2Tn$!eIO z<{-v=DXLqOTVai96-S3EHpLTMxwwZPzv7!``Kng#`72H)-1WT{7z=nF?JpW@g;KG# zs^=UYae1G9;CUo(Ic7U^buzd-uy2mu*3d`q8S#8Sr0ERh?0RC&y5#D7R5nZOkRjef zOp?u5JT!Q$$$tIlSLvX-LMymo(ozR&YJ~TK32&rMv(&wnufd?*L4+3T2(yuZQoHW( zRLwsbvKi(ekG^=;|p} zGr;)+S4wwR9Fc@G4OfcLF#4Cp`cYu+FGwk$`x-mMC0B3SH?c9;u5`Wlbw=C(EKDWO zzv^((_G%;@v?Mek`ZmFg6=fu74KT?~EEQo}(wX`ZrhhYCFS0DgU4a=VQe98>G*6N9 z$MTvM#y-^{inm^UQuF6WM8Vf{;B$H=f@n=4k0-`kL@ulM9hiPvc~d_qGdMC8{lxy} zM&n*J6ZCCsyg>8rLo&;{u!rV_UXpco$7z_}j8$RJNz9vtZfS0x)ApOoW5QnCi_oVX zO=rc-i~r}S#65f=-<9=7#6et;bOa1xapcPV>-H7tQKmr)wZx{W1`$Geg8_zP92S^L z?oVu$)McK2>6;o!lJ=O4q;OWt^usJM?1pNcN1J@!)Y{fSmzfTDt`X6Gs+*!AR}>d) z$}}k_smEdVp_Mv*_mK8!OLvKRsypQ~XIkmoBG<|dk<_#OW1cMp|8q@6@5jc9wwim( z9gACyhvQ%Nbg#C6ACd-&N%c&_;r~b3TSdjeuG^Xc0t5>V!5xCTyE_DT_u%djJOP5c zySuwfaCdiiFQ7O@{K{=R5rxArdqKwU5F#QXcJ+ZiZ&L zx?VusQ*+^! zk(!c#;{-IZg75Uq0}kAao^VJEmG{*?54$}@)V@wTb>h%s_O1#m-vcFKtIF=NFspE4 zbh~8rnTsK4Z9aE+e+`*kcimX-2IT6rx*bTB#L&7S zcgifOEYTXEcfQ{6Z}@=XgWlV#ukXu=>jv;(t+Vs>Tz;eNdBHcg3Y=BtrA~%3_o$Ws zx?EUfVOzT*St!oYV5_}4QxPK(V{ z|Efwh^dz0FjY%_HMa~SS&g;VRpY6EV?A=j>m-u4QZy_CA4? z4Dlt`@C3GnXi)U1pXw*7S}=4$KhKNOr9L!21W|Ikv_X%>K$&_aY=xsS_uw=@@Met7 zdfUByL&V7Tyx<2sCKUj#KC+I^pmDSSg@iTnUk~^5Qa@jy9I#fG;UyYAZUe6l!@epP zggE>6FI`8l2@#_cD|~5+hF?P?NEP^gV#hvP&etTnHY~78rzoCXo+s)!kVko57J|87 zIz66$w|2)BuG5mMj~iakh3Y6)Vr4uj7X8!;L+Un-etTu<)vht2#Kjg*8=jjQdV9GGWNnMg7Mc%qIJ`_UwIdX|9Nj}a@Dy{#TU6#P zIF6}^>NT|!a?;oN<}ZMC>tI7F29gB4rOK_bA{Me}OeSaxI&j@3glEKS7h#-WNh@>79>(;erFQd4QEKItkS|a1 z8A2+B8>ZuVI+G*c!zQYuLL z;&0R}m^|#L{LODuj1#I@)ITUm6wle2Tz`R@3L=S&T0;XXjcCZbGb%JCtlxk?Zm1~c zwO$#q*F-OoOl+usn~DT%D2(rj?@dKUj`HNw?2H-F2An_VsSE&a921L-EY@fAhA`oJ z&@ragij{XO{^!w{aK>cnpns>U8Pk%lCzAo7@^vM4=mNJFhB6P-RJ;<%k>jJVqBJ-v|)srQ6LL|RI*^bF=$+f zZPZ@by_?=3<)n}v+fM8U7kTLE5}VZJ*cpN)6G7%70W}ptn|`pbnaSm(kFu#|a!is4 zsyzum$&@1Li~szARTBlT$oS+S7K9lDHfqUM9u3=Tk=AEppi0>fCmc_c4XLpmK8~*H zRXwRtqDs~mymy_0(=U^75#oo3^C3fH;UhU1wxPlv^DhioX-yQc!lW*!k7@kUAMi7^ zX0UcdiH?%OyL%?Q)2-UfGyGtw@HJf#A;59KevODMC`@_u(Fx%0dKh9hslpr9Dum4E z*mlifM6;wC86j5^tg-rjxg32tRz_hB^tlIZ)WSn*O-o&N_Celm@I%=(6Vgt;fchb${oC|P-u@hS)M#fH_uJ! z^;`XQ>}bwtdl+^n4dbHWxnTV&fccHAM7>+8{jiGl*wz8MwLY_R#bW`IFTmeBGfvJA z$GN*wzdE?T>g+oo)IBj|n`Vo!DO#D^D$mJW*@E2|?;uu~yz^>nI@=CWa9s!Jg&ZNK zj}dTxn4(bUlMqZk+4T@HlRnHx)RDvcu`U(rmf*qr#}ZsMeZM?4|FSvpl~(@tK@wv5 zTQC^E#1^~7w==s>dBBsXIK(U<$1H})*GnDZ8GHv>Y}i+&@lbpxS#0ofY7ep$j-n7@ z!m&ZC*n>@XYW4I@_2`}jBZ5)>f_D_@Gv5#gRftQ3s?!?a*K@*4zYmdW6-u*X ztM%JPYF5&_R5|W7`&17VOSyx`?{|2A+13Jt8tRCynMb|du%@}=gR910`bi^tqF0II z2@1AiH%J-@JW%gIc{jzhzEUkwAgbBVRwP+Zf0|4`UdsLrwqBWsbGs#VZXMT!0N{}F z*t2sq#AR)tZsKIr9t*HZK1C7#VcWS^C)u0rJ4H#4w`_N**C6E`#)SLGeik}M{#)w{ zrZV1~Df>ij?@EemQcO89b`d%XLh9V(R<5g1jPlp5<0 z?vCj!ox27-n_CLz>P94jg~%P7n)%Bpz6uFdij0&{kX?V}l}~qPbX=r@Pomn#w*E|p=liV&=UY;zF&b)@~`bPEf6 z6VxGlm*Xi@GHxsl6f0OqoG{I4{Z1QlclH&x@VqK%L89>(2QI2A^8BEN_3+tycEvHZ zaSky_sTTi|#9KTJ+^HZS#{!nauPd3fWmcl47iJIySNfL zmu?b$p95MKy`C0)^?06F$J<}_!!UhcsNjdq5g+M0fNj9@cDMVbQVMxJ9$x@p#8#L8 z>2`(x?Vx|AlCHz&`uJ%>&--bq{|)%GP2b6GXsdo=Vws?lae`mSq9cA;8rZ^ZE_`@S z+-@RI#Wn4E%*jDGr9S4@6_@mV}*l8`y zhwGQEX9SO^zJ{|J&>J%dFkuat%RbyO#JcRkLnIFC7jTx?yA8?k_`DTG>X41ET0lRX zM^5S&aYc46THRU5_4(h{fUm$ZDipVgRwyypg3&t8*O`>n_L~yQ!jZ?3DOv4 zEx+_)`THM|t#LGdqaRd)yhnup93D)G|G!AKf0rQdR}Lv#3!C>V`~R>2(Xw3~K=;|u zV>I|d>?i6#w$SYC8YUw5As>TAM9!9efQGXbH*9y3xfe7gm;TXJ9xWX}jIc~h52?MI zF9CO(FRA_5i57jzvqyhB8nn7~K0F^9ZXlh;eBfoaKiVAS$m4bn7+cfodiWW*MRO_*7u6jC^PH+dP=`K`5LkC5B;XLR&<$GKx|}ZTP;D^%RP{r2af{vCNP; zZ$~FAe4Rbpkexjau)Age*Rj87uB!$*8|)OU!5?~vB+iZr%i~zP&(eUyPbXA=c#(yy zDU0~0I)<3gi<3Wd%6Ldf*)DQ(&4{7H-jCXaio0hm{_}@oK(%xI##^}wM_=a zL+1sN+;ld@E)N+okw}WHt`j<%T$bhlUqWE7f$kDSjvMynb@&|GN1_*W6m9zJZYPmY zJ1G;z2#CeAyP`G_Gje`8yM*FjhhQ# zv14&3UgBi(=$D*Ih*kZiKlAqP{q~8A6upWSG#|kJkw3ud_bVXyXX282R`D$)B}0f( zxB&$2c;>)|i_9-G7CXP8nhcm=;rL;cx39!v(Ug&VR+^p(`>K$mIOLs>(Z_RbA^L>q z$l3fH4JQ|H>dilULsr!MBs}U{z_^+pbR%Q^q*3BqTI&>~lJb3c`R1eUAI2qrtedZX zWo$S`=Z^7+M5bSidAU_I()UFv&x)lSz_kH~tdabt6!<;)#z?~;pu2K;#`1rUY3;u$}cZt#`y^*q7D1?XFEiuk+Vo&n3% z%ZC6~-yuQo!V!Vqg_~e=r+w{B(V_24S?5vPS0fQ#W{6R$9LFA>-SmKyO^iGn&uzVV z?9dLRH*8~ab+E2e+}KjD_+2t%m!wuFb{yZ|=>vTH($72?!(5}wf5;&-=t zV778u(>3_5=fU0peNh4R1stPPgJq>)KUbeVtv9TY*I2466#A}KbIcGSan&(y`cOi& zbIpR+#z^8%tla>54t`yL5v~J*aWJH*tOW!v^B=^k-$5j_pRDzrKbItYhbrIf(*h9+ zJj~yrADM+hh41bZ1Losgx*Aa)@fM0q7oiki7yE;ToiXOJ>mWNKL~8=IqnCx$V3z%K z+cb3WHRtYP7VN(vtOy*-uW?Ou-)L4*bx-m5U66f>flCNr01GIIseToF<`$0e()JeaN+?r?9oNyxTx7vK=DP2Q+heV{6nI1A>K>%nHO^MhV( z8r{Q_j9pb~6Sf_POnT4GIR}STI^W(or#(e$jA@C~<-iVAu%&vnu*rTtC#Um)+Gzx%?g>Li>pGbW%#XY#`#-p&05=aQatGB2qBgY&%$j3 zOD+PhD6U0=UoGG0)L1UGOSasfzpsiWkL-3kb`U_7x)uNd(i+Y>Co85)*ZHUSa?aGx z-$DOizkixdG}m;j;l=(5et!Q9W`U^5?Ab!IbbT6>_pWnw~AT!|<= zN!jKmm~El`#!}}9e$(8d;XMG;s$%~%Z&z=4?3`Jsw04*3lJssPhA{SW6Qv z#|RzCS*r^+a2_ewQ8w2j(~jlktLdQo40(|5_!4v`&(n5fA>z94%TRmmLXs|e z%yvJXUe@0_nj2e^T-B2Y=QIz;dIt$!c1~}eQ!dd;)6IAlOp}k>Vb>5KFCu=mBQ69M z@W$fp?B()0cV-HH(GN12z`}JewD6ImVpVBfRO^P8E51!*Zrt_wT~L3_L8UMWxoOF+ zZ3dAy4F(Ir{(Z{5IZFz=VaG`>WIsR5$sE3~zh;`SjyJbEkkMlK%UF?N$9F^AB}a1? z+|&EU0H4W)W0|Hq<$%7dJE;9PNW$)1(HZQGZi*3JOVI!tZj7z;R`R~We{|+7RT0>_ClmAy|@!xV4|8y1;|8y3T zwI>|1sJ}y<(m$*$|H(NawWfy>-wr>F7fH@Dbq&Q2@3Ki{lW_RcEkSojD;l={jZij? z1!#8P%Xg=DxD(Q0>XM#5M{38jOR{kh9eEM3?RYu;yRp&s&E-Kh?hg$Dv>!l_a=efv zWH*8s2{!~H&_7%vJm;gM;O-yFy*}?b3n&yyxWrZJBdgt)0q+9@*Hjb81gA6=9$MSghYaOSy5r5;>*(2{re?`MIyGnASqv zLy2W=lck7M;rS&m(xHKrj+}VAE-G%1_LnV4SoL3VLn204!-4o)w}xO-S}u%PGCrWc zywOF2OWs26Tbv;g+xH5bB&psrmvF&OQgO1c#j16 zPNR%!sP&)JZ8mYLz&5GOH&?}BC}N{?$A#PWpHUanFAKtDmHgqT+J2h&koHYbaO56& z)eTDFN0+Y9kgK_JdY%F7ny#+xB|)j@g{WMI6MR&qO(he|qomVmhz! z^8JW@J8d&LWgGnoO&!|Lw#^*rUtt5!2#kDH$W9;-ARn0kPE*Kh=C1@gyU3XR93Tl9 z1Np93X>Y!a^6o$Wu%m$Y`l2=yC(?5#V@+xbx1%VPU|EvIICM2CJ0#K)BU?DEwAc3G zjiEN}Qi>0w|HRK0@E$f;3{aq9km+ly1(c3p74<(Ce(8ncNaF|nnaImhGBXSZv8sR- z6hz=bwaKwX3W*%J!MKnA_=OD|_n?|hcj|k~ydaG+a}})i2((VSLfCu`eYXlWGHH5~ zCdqh>uNto3gyL)Ic=cG3kW#PN1oFP1_E5^NBykv#>ZLD^iKUOw9X*7@OW9H@Ec8+q z@=AhS`+x3mT}MCT1xgQf!G*<1B=wS`LiZ~d{lrq6jx$yZ5|7HNu41BsMyHIB=uxby zjCPFOQWxb6ICEzkehTHROOS7>`2#z87ip$*nheeCaTS9q)u{CRbxY===0hjO^f7x})^Pozr z?oX9=3$MNkKcJC&$r9%9%nx7EoST;I>lVg_;heFdCcv_m|HI<~L0I5DBd}dV9QU;#ax+DvCeO5mESUh2-`6+Vr99I}&!`KtI05D)^l%c$L@oW}rKEdVLN1q++ zIVaG~rL)1_9)~GP)LH=mzR^XjAy6UVo$Whh-tj>v8X%x%ztO{nSwA9tJh99*F8C}{ zMb!n08n&c%F>nPC{9r*Ph}_iK#}#Uy=p7}Qrxo48YIGHtsmxL7tZmzgeL81ax{}6+ zlMk+k$Vr$C7>!f33Z@1dW|c%^MXf6nUu&V{8lQi}LwfDUoCU!*3Frj;aAC8God;`A z!b&`R4O&$njS1TY61yy8)yir@I8k`In4f&m8_kox1q#{F<#&+*JOXL*diOvsUJZ%g zBM`6stLFtnboL0BXIgTpvjl)OIgg`BKtSh$)E%vq@8(85vubMHdLJlk6e_mbRN}4g zww=9)4ID|lYmcCPtIBW`k}g=#w*Xq%wD*dF{!glbf^)3Ud6{huy^_UTrTJ{+H^6vc zAAS3*qSD%G0LJ2EznD zCLmFJ;UQr|daahgcuuL@63!?Lu_je(F6?xo1anDEAtc*JU?wJZi~$L9oI1(-k)|?3 zW&iBrD=Vc{dkLkO)>x5>=|oY_@UXI?8bM%|Qj-&y;=xfNNiyn}iMg;6)b%_e7bvY4 zHN__nJBIx=XKFsR_NX4e5-I6DDUT(!f-b|9`-3*oA~T=5y0iOJRRevY+nBDTStZ)* zDZlIR7B+n>uhRHSZQf#kiZtYn$R)vbm2b!yd{6tgvHTe?ds9cTg@u{C3~M_Ro&2wx z@)N+Dy{iYr$)iF&T;8WY@M%8JhmR9_kUq$te?07N=%w*IKKgEW&+l^q7ko3{cBZao zLM8}&J+BW(Xg`d}1D_rrQy-wk^?Z%-^CL369#4V7%m+`eh;l%{!%m1Ep11eg(#%9A zFYxlPwG+?xr32&IUniqc3lur1;$U@JKGuf+^6r}tJO{?oI*x8dc*IR~`Be9mAfgU% zA8+TOD9t(R?6D%z$E7(A#MM)lGO^``=hM-Z9%pTTRQTb&?_)_XHvBvKqP`s={h&9# zc7OkvPQ1P6u7#*s@oZhpyXS2_4hr7ZnEA(a| zfGf3%`-{u^VQut>gx#5l1{`u=0M|UpwjAG58uzT1BNC@pTd9@1XE%d%Hfu{-oM{Je z65Zk1`=#|svxb$6XQ=J!I;kGGJJ&Vh`@`w&D1%BA>xyMhe4noV8LC^B*SvsI$9uN; z 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%0AVk@82QcW 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�HHMq|3gkxK-&9fo*RrDA=NK_b}*N*NZ3E%qZm8 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

#pCatcG$)}#;Kza7ey-cTdgfV+|B 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�fQp%QxchDo1 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.1.0 <3.0.0" + +dependencies: + flutter: + sdk: flutter + flutter_bmfbase: ^1.0.0 + +dev_dependencies: + flutter_test: + sdk: flutter + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter. +flutter: + # This section identifies this Flutter project as a plugin project. + # The androidPackage and pluginClass identifiers should not ordinarily + # be modified. They are used by the tooling to maintain consistency when + # adding or updating assets for this project. + plugin: + androidPackage: com.baidu.flutter_bmfmap + pluginClass: FlutterBmfmapPlugin + + # To add assets to your plugin package, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + # + # For details regarding assets in packages, see + # https://flutter.dev/assets-and-images/#from-packages + # + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware. + + # To add custom fonts to your plugin package, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts in packages, see + # https://flutter.dev/custom-fonts/#from-packages diff --git a/lib/my_flutter_bmfmap-1.0.2/test/flutter_bmfmap_test.dart b/lib/my_flutter_bmfmap-1.0.2/test/flutter_bmfmap_test.dart new file mode 100644 index 0000000..aa708a3 --- /dev/null +++ b/lib/my_flutter_bmfmap-1.0.2/test/flutter_bmfmap_test.dart @@ -0,0 +1,22 @@ +import 'package:flutter/services.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + const MethodChannel channel = MethodChannel('flutter_bmfmap'); + + TestWidgetsFlutterBinding.ensureInitialized(); + + setUp(() { + channel.setMockMethodCallHandler((MethodCall methodCall) async { + return '42'; + }); + }); + + tearDown(() { + channel.setMockMethodCallHandler(null); + }); + + // test('getPlatformVersion', () async { + // expect(await FlutterBmfmap.platformVersion, '42'); + // }); +} diff --git a/lib/pages/Works/DWDT/widget_to_image.dart b/lib/pages/Works/DWDT/widget_to_image.dart new file mode 100644 index 0000000..a5a3035 --- /dev/null +++ b/lib/pages/Works/DWDT/widget_to_image.dart @@ -0,0 +1,146 @@ +import 'dart:io'; +import 'dart:typed_data'; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:path/path.dart' as mypath; +import 'dart:ui' as ui; + +Future getIconWidget(String name) async { + // print("name length = ${name.length}"); + double _widthBtn = name.length * 40.0; + double _text_height = 45; + double _icon_width = 40; + double _icon_height = 65; + double _edge = 16; + + return Container( + width: _widthBtn * 1.5 + _icon_width, + height: _text_height + _icon_height, + color: Colors.transparent, + child: Column( + children: [ + Row( + textDirection: TextDirection.ltr, + children: [ + SizedBox(width: _widthBtn * 0.5 + _icon_width), + Container( + // margin: EdgeInsets.only(left: _widthBtn * 0.5), + // padding: EdgeInsets.only(left: _widthBtn * 0.5), + width: _widthBtn, + height: _text_height, + color: Colors.yellow, + child: Directionality( + textDirection: TextDirection.ltr, + child: Text(name, + textAlign: TextAlign.center, + style: TextStyle( + color: Colors.black, fontWeight: FontWeight.bold, fontSize: 36.0))), + ), + ], + ), + Container( + width: _widthBtn, + height: _icon_height, + color: Colors.transparent, + child: Directionality( + textDirection: TextDirection.ltr, + child: RichText( + text: TextSpan(style: TextStyle(color: Colors.black, fontSize: 36.0), children: [ + WidgetSpan( + child: IconTheme( + data: IconThemeData(size: 64, color: Colors.red), + child: Icon( + new IconData(0xe60b, fontFamily: 'myfont', matchTextDirection: true), + ), + )), + // TextSpan(text: "\n白塔山公园", style: TextStyle(color: Colors.black, fontSize: 36.0)), + ]), + textAlign: TextAlign.center, + ), + ), + ), + ], + ), + ); +} + +Future createDir(String dirName) async { + final appDir = await getApplicationDocumentsDirectory(); + final myDir = Directory('${appDir.path}/$dirName'); + + // 查看目录是否存在 + bool isExist = await myDir.exists(); + if (!isExist) { + myDir.create(recursive: true); + } + return myDir.path; +} + +Future saveImage(String dirName, String fileName, ByteData image) async { + final appDir = await getApplicationDocumentsDirectory(); + final myDir = Directory('${appDir.path}/$dirName'); + + // 查看目录是否存在 + bool isExist = await myDir.exists(); + if (!isExist) { + myDir.create(recursive: true); + } + + // final myDir = await Directory('${appDir.path}/$dirName').create(recursive: true); + final localPath = mypath.join(myDir.path, fileName); + print('localPath = $localPath'); + // localPath = /data/user/0/com.example.hyzp_yibin_bmfmap/app_flutter/myIcons/myIcon1.png + File(localPath).writeAsBytesSync(image.buffer.asInt8List()); +} + +Future widgetToImage(Widget widget, + {Alignment alignment = Alignment.center, + Size size = const Size(double.maxFinite, double.maxFinite), + double devicePixelRatio = 1.0, + double pixelRatio = 1.0}) async { + RenderRepaintBoundary repaintBoundary = RenderRepaintBoundary(); + + RenderView renderView = RenderView( + child: RenderPositionedBox(alignment: alignment, child: repaintBoundary), + configuration: ViewConfiguration( + size: size, + devicePixelRatio: devicePixelRatio, + ), + window: ui.window, + ); + + PipelineOwner pipelineOwner = PipelineOwner(); + pipelineOwner.rootNode = renderView; + renderView.prepareInitialFrame(); + + BuildOwner buildOwner = BuildOwner(); + buildOwner.focusManager = FocusManager(); + RenderObjectToWidgetElement rootElement = RenderObjectToWidgetAdapter( + container: repaintBoundary, + child: widget, + ).attachToRenderTree(buildOwner); + buildOwner.buildScope(rootElement); + buildOwner.finalizeTree(); + + pipelineOwner.flushLayout(); + pipelineOwner.flushCompositingBits(); + pipelineOwner.flushPaint(); + + ui.Image image = await repaintBoundary.toImage(pixelRatio: pixelRatio); + // E/flutter (10823): [ERROR:flutter/flow/layers/transform_layer.cc(24)] TransformLayer is constructed with an invalid matrix. + // E/flutter (10823): [ERROR:flutter/flow/layers/transform_layer.cc(24)] TransformLayer is constructed with an invalid matrix. + ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png); + + return byteData; +} + +// read image file from path +Future getLocalFile(String filename) async { + String dir = (await getApplicationDocumentsDirectory()).path; + final directoryName = "myIcons"; + File file = new File('$dir/$directoryName/$filename'); + return file; +} diff --git a/pubspec.lock b/pubspec.lock index b112995..307c4de 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -282,9 +282,9 @@ packages: flutter_bmfmap: dependency: "direct main" description: - name: flutter_bmfmap - url: "https://pub.flutter-io.cn" - source: hosted + path: "lib/my_flutter_bmfmap-1.0.2" + relative: true + source: path version: "1.0.2" flutter_bmfutils: dependency: "direct main" diff --git a/pubspec.yaml b/pubspec.yaml index 2311518..a834061 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -134,7 +134,11 @@ dependencies: #git: https://github.com/LiuC520/flutter_drag_scale.git git: https://github.com/mjl0602/flutter_drag_scale.git - flutter_bmfmap: ^1.0.2 + # flutter_bmfmap: ^1.0.2 + # 准备使用自定义 flutter_bmfmap: ^1.0.2,以适应IOS版加载文本标识 + # 为 BMFMarker 类增加参数 BitmapDescriptor bitmapDescriptor + flutter_bmfmap: + path: ./lib/my_flutter_bmfmap-1.0.2/ flutter_bmfutils: ^1.0.2 http: ^0.12.2