From c8d13b4e45c4172c50f48812041c9cf53479a81c Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 18 Sep 2024 12:05:17 +0800 Subject: [PATCH 1/4] =?UTF-8?q?[6.7.0][=E8=BD=A6=E9=80=9F]=20=E8=BD=A6?= =?UTF-8?q?=E9=80=9FUI=E6=94=B9=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/hmi/bone/BoneTopStatusLayout.kt | 15 ++++++- .../hmi/bone/status/speed/SpeedView.kt | 38 ++++++++++++++++++ .../src/main/res/layout/layout_speed_view.xml | 25 ++++++++++++ .../main/res/layout/view_bone_top_status.xml | 9 +++++ .../layout/view_start_autopilot_status.xml | 1 + .../icon_status_route_download_failed.png | Bin 832 -> 1806 bytes 6 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/status/speed/SpeedView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_speed_view.xml diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTopStatusLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTopStatusLayout.kt index e41748556a..a252cb2960 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTopStatusLayout.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTopStatusLayout.kt @@ -7,12 +7,16 @@ import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.bone.status.StartAutoPilotStatusView +import com.zhjt.mogo_core_function_devatools.status.StatusManager +import com.zhjt.mogo_core_function_devatools.status.entity.SpeedStatus +import com.zhjt.mogo_core_function_devatools.status.entity.Status +import kotlinx.android.synthetic.main.view_bone_top_status.view.speed_custom import kotlinx.android.synthetic.main.view_bone_top_status.view.topStatusContainer class BoneTopStatusLayout @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : ConstraintLayout(context, attrs, defStyleAttr), - StartAutoPilotStatusView.IStartAutoPilotStatusChanged { + StartAutoPilotStatusView.IStartAutoPilotStatusChanged, StatusManager.IStatusListener { companion object { const val TAG = "BoneTopStatusLayout" @@ -25,11 +29,20 @@ class BoneTopStatusLayout @JvmOverloads constructor( override fun onAttachedToWindow() { super.onAttachedToWindow() StartAutoPilotStatusView.addStatusChangedListener(TAG, this) + StatusManager.addListener(TAG, this) } override fun onDetachedFromWindow() { super.onDetachedFromWindow() StartAutoPilotStatusView.removeStatusChangedListener(TAG) + StatusManager.removeListener(TAG) + } + + override fun onStatusChanged(changed: List, all: List) { + changed.find { it is SpeedStatus }?.also { + val speed = it as SpeedStatus + speed_custom?.updateSpeed(speed.speed) + } } override fun onStatusError() { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/status/speed/SpeedView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/status/speed/SpeedView.kt new file mode 100644 index 0000000000..4fb37b98e6 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/status/speed/SpeedView.kt @@ -0,0 +1,38 @@ +package com.mogo.eagle.core.function.hmi.bone.status.speed + +import android.content.Context +import android.graphics.Color +import android.graphics.LinearGradient +import android.graphics.Shader +import android.graphics.Shader.TileMode.CLAMP +import android.util.AttributeSet +import android.util.Log +import android.view.LayoutInflater +import android.widget.LinearLayout +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.kotlin.scope +import kotlinx.android.synthetic.main.layout_speed_view.view.tv_speed +import kotlinx.coroutines.launch + +class SpeedView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : + LinearLayout(context, attrs, defStyleAttr) { + + companion object { + private const val TAG = "SpeedView" + } + + init { + LayoutInflater.from(context).inflate(R.layout.layout_speed_view, this, true) + } + + fun updateSpeed(speed: Int) { + tv_speed?.post { + tv_speed?.also { + Log.d(TAG, "--- (${it.width},${it.height})") + it.paint.shader = LinearGradient(it.width.toFloat() / 2.0f, 0f, it.width.toFloat() / 2.0f, it.height.toFloat(), Color.parseColor("#19FFCB"), Color.parseColor("#1970FF"), CLAMP) + it.text = "$speed" + } + } + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_speed_view.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_speed_view.xml new file mode 100644 index 0000000000..e631fa1cd7 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_speed_view.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_top_status.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_top_status.xml index c76c7340b7..96f62d0f35 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_top_status.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_top_status.xml @@ -6,6 +6,15 @@ android:layout_height="@dimen/dp_357" android:background="@drawable/bg_top_status_layout_normal"> + + diff --git a/core/mogo-core-res/src/main/res/drawable-xhdpi/icon_status_route_download_failed.png b/core/mogo-core-res/src/main/res/drawable-xhdpi/icon_status_route_download_failed.png index 2df85fe783a48b85e383d3bf6ef4e5e642083c6a..dcdbeeb94541b09e143aab45bd2c5906d6c9d324 100644 GIT binary patch delta 1698 zcmZXVdpOgJAIE1iX*QCfgE+r9J?ofTa!DN{_Y_Tqer|IOC1;ux@nuWuu$G)$VwtmY z$!$htF3p+4(Xh>JF_&C(Hbc22w~qgQ=l7iVKcDCIem;ME{`fraH(TzJ;^SmM?zW4) z?WNl?QYw#vbU=0n7(7@^<_;nj1eXnCRNVD`WjDM=(lAF+S9M@K(>{K z!kM-Zz2|IAy~t(Oe+q=5UfHBHyajJ};Ym`3251Uz*zZqx3Az*RiL=wp2HfjRHF0i zC$l_@TK#v5-2_rr=4?C**7lQeSftP?d)hC#+HKL=a|OZ?d~bfeNA$*;cEvkHR5%nq zBjyc7KU!dS^Qn#`kYv2L1GqP&IAlfkzDW&x!wT8w*jxHEA4n#~;mr_r^$fnnG`-xn zI982aDixRb#EsZ))rsb76wsf^Ed6_2}3aS^QOQ)RR$XvQhjUTxclzlj+8kb9D3c`%cl=%0^QI-ABS0vr0H{wGmr- z2lTuJ)>@rhUv!N|V}@ z`Dk*8!in~Wzy_nKT72&1Nbg+x$gGk3>lAk4qyQNOehx#|xJH!}#gW`G=sj9?ftx?h_p=n@(ch_uhU?NtdOGTo<( zf9XUF7?osl{vK3(}i;@gCi1rp3b4xI$6<|iej=v(A4(q7w~g;PF(CEAmAGM#c;vi z1swR^LjEZP*}o#@sMv%{FH3QZT}+x|#n-?{4U>#K*NTK#K|A%WsVp%4WyQ39ah&jN z=G`K>SM5u0z@6Ak-E*QrE%wM}?r~t<&?GcC?LrPnKjSx$3NH27h1{ltf#3>bDC}m# zhP+r>AF$apeCcy3yzwb&c`(`K&!&wLSIs7x@ l{~hZ8s{u`@eaa$iTgfd)wfaNDt7y=kTpZl&tIptve**~+JuLtL literal 832 zcmeAS@N?(olHy`uVBq!ia0vp^IUvlz1|<8_!p{OJ#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz1gS-^~7gB1R}eM^pkfoYYei(^Oy zO}xh>XtvEI4^cGrH!J-_5W z`=>|jb-iltjNO~BO(>muKdpMX?$_(V2DcYyzkR&rO5OE&#oNmcGJT#eKEu#7sk?8b z?U|_kKiwVgMm^s(>33xKx)qOtymaU2>Z1?J8*VboypWS(G zaoxLz6FoLMSBbVIoc9);w%K_Sm-B|_OSw+pRP=0Byzx1x_34`lOAZOVsa$!esLUfM zk>lH*kVH#sm6Zl8)p4sf%#ocGBGF{49~yCv&r^%%;JoQtI_d2yL)f^K?}uLfzj(gt zB7;+T>!o+CqLZf^X4+@#Yj1FNJ6E-uY18KUmzdtYUQx&S;vwJfKU?o_t-HG@dE(yh z3U5j$YRk%Ray|Zo@7t!RewX;DTeHthdY0X2J>^;V_Ug&c>Qo6Pr4Rm0_jiUf?K=Eq R&L2?f^>p=fS?83{1OR3CS_J?A From 17eed330541c80de50c83da8c1d725b6d82fde88 Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 18 Sep 2024 15:23:19 +0800 Subject: [PATCH 2/4] =?UTF-8?q?[6.7.0][=E5=9C=B0=E5=9B=BE=E5=B4=A9?= =?UTF-8?q?=E6=BA=83]=20=E4=BC=98=E5=8C=96=E9=AB=98=E7=B2=BE=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E7=8A=B6=E6=80=81=E4=B8=8D=E4=B8=80=E8=87=B4=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E7=9A=84native=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/autonavi/nge/map/MapEngine.kt | 1324 ++++++++--------- 1 file changed, 647 insertions(+), 677 deletions(-) diff --git a/libraries/mapmodule/src/main/java/com/autonavi/nge/map/MapEngine.kt b/libraries/mapmodule/src/main/java/com/autonavi/nge/map/MapEngine.kt index 177791d257..e752f063de 100644 --- a/libraries/mapmodule/src/main/java/com/autonavi/nge/map/MapEngine.kt +++ b/libraries/mapmodule/src/main/java/com/autonavi/nge/map/MapEngine.kt @@ -3,426 +3,467 @@ package com.autonavi.nge.map import android.content.res.AssetManager import android.util.Log import com.zhidaoauto.map.sdk.open.MapAutoApi +import java.util.concurrent.atomic.AtomicLong class MapEngine { private val TAG = javaClass.simpleName - private var mObj: Long = 0 + private val mObj by lazy { AtomicLong(0L) } fun MapEngine() { } - fun load(dataDir: String, mapView: MapView,assetManager: AssetManager): Boolean { - if (mObj == 0L) { - mObj = loadJni(dataDir, mapView, assetManager) - } - return mObj != 0L + fun load(dataDir: String, mapView: MapView, assetManager: AssetManager): Boolean { + return mObj.get() != 0L || mObj.compareAndSet(0L, loadJni(dataDir, mapView, assetManager)) } fun render() { - if (mObj != 0L) { - renderJni(mObj) + val obj = mObj.get() + if (obj != 0L) { + renderJni(obj) } } fun resize(newWidth: Int, newHeight: Int) { - if (mObj != 0L) { - resizeJni(mObj, newWidth, newHeight) + val obj = mObj.get() + if (obj != 0L) { + resizeJni(obj, newWidth, newHeight) } } fun scroll(dx: Float, dy: Float) { - if (mObj != 0L) { - scrollJni(mObj, dx, dy) + val obj = mObj.get() + if (obj != 0L) { + scrollJni(obj, dx, dy) } } fun scrollByAnim(dx: Float, dy: Float) { - if (mObj != 0L) { - scrollByAnimJni(mObj, dx, dy) + val obj = mObj.get() + if (obj != 0L) { + scrollByAnimJni(obj, dx, dy) } } fun setZoomIndex(zoomIndex: Int) { - if (mObj != 0L) { - setZoomIndexJni(mObj, zoomIndex) + val obj = mObj.get() + if (obj != 0L) { + setZoomIndexJni(obj, zoomIndex) } } fun getZoomIndex(): Int { - return if (mObj != 0L) { - getZoomIndexJni(mObj) + val obj = mObj.get() + return if (obj != 0L) { + getZoomIndexJni(obj) } else 0 } fun setZoomValue(zoomValue: Float) { - if (mObj != 0L) { - setZoomValueJni(mObj, zoomValue) + val obj = mObj.get() + if (obj != 0L) { + setZoomValueJni(obj, zoomValue) } } fun getZoomValue(): Float { - return if (mObj != 0L) { - getZoomValueJni(mObj) + val obj = mObj.get() + return if (obj != 0L) { + getZoomValueJni(obj) } else 0.0f } fun zoomIn() { - if (mObj != 0L) { - zoomInJni(mObj) + val obj = mObj.get() + if (obj != 0L) { + zoomInJni(obj) } } fun zoomOut() { - if (mObj != 0L) { - zoomOutJni(mObj) + val obj = mObj.get() + if (obj != 0L) { + zoomOutJni(obj) } } fun scale(scale: Float) { - if (mObj != 0L) { - scaleJni(mObj, scale) + val obj = mObj.get() + if (obj != 0L) { + scaleJni(obj, scale) } } fun scaleByCenter(centerX: Int, centerY: Int, scale: Float) { - if (mObj != 0L) { - scaleByCenterJni(mObj, centerX, centerY, scale) + val obj = mObj.get() + if (obj != 0L) { + scaleByCenterJni(obj, centerX, centerY, scale) } } fun rotate(angle: Float) { - if (mObj != 0L) { - rotateJni(mObj, angle) + val obj = mObj.get() + if (obj != 0L) { + rotateJni(obj, angle) } } fun lookUpDown(look: Float) { - if (mObj != 0L) { - lookUpDownJni(mObj, look) + val obj = mObj.get() + if (obj != 0L) { + lookUpDownJni(obj, look) } } fun setCenter(lon: Double, lat: Double) { - if (mObj != 0L) { - setCenterJni(mObj, lon, lat) + val obj = mObj.get() + if (obj != 0L) { + setCenterJni(obj, lon, lat) } } fun getCenter(point: DoubleArray) { - if (mObj != 0L) { - getCenterJni(mObj, point) + val obj = mObj.get() + if (obj != 0L) { + getCenterJni(obj, point) } } - fun animateTo( - lon: Double, - lat: Double, - alt: Float, - zoom: Float, - rotateAngle: Float, - overlookAngle: Float, - eyeHeight: Float, - duration: Int, - fov: Float - ) { - if (mObj != 0L) { - animateToJni( - mObj, lon, lat, alt, zoom, rotateAngle, overlookAngle, eyeHeight, duration,fov - ) + fun animateTo(lon: Double, lat: Double, alt: Float, zoom: Float, rotateAngle: Float, overlookAngle: Float, eyeHeight: Float, duration: Int, fov: Float) { + val obj = mObj.get() + if (obj != 0L) { + animateToJni(obj, lon, lat, alt, zoom, rotateAngle, overlookAngle, eyeHeight, duration, fov) } } fun setRouteProp(prop: Int, lon: Int, lat: Int) { - if (mObj != 0L) { - setRoutePropJni(mObj, prop, lon, lat) + val obj = mObj.get() + if (obj != 0L) { + setRoutePropJni(obj, prop, lon, lat) } } fun drawRoute() { - if (mObj != 0L) { - drawRouteJni(mObj) + val obj = mObj.get() + if (obj != 0L) { + drawRouteJni(obj) } } fun drawNavArrow() { - if (mObj != 0L) { - drawNavArrowJni(mObj) + val obj = mObj.get() + if (obj != 0L) { + drawNavArrowJni(obj) } } fun getRulerInfo(): Float { - return if (mObj != 0L) { - getRulerInfoJni(mObj) + val obj = mObj.get() + return if (obj != 0L) { + getRulerInfoJni(obj) } else 0.0f } fun showAllRouteLine() { - if (mObj != 0L) { - showAllRouteLineJni(mObj) + val obj = mObj.get() + if (obj != 0L) { + showAllRouteLineJni(obj) } } fun showRouteLine(pOneX: Float, pOneY: Float, pTwoX: Float, pTwoY: Float) { - if (mObj != 0L) { - showRouteLineJni(mObj, pOneX, pOneY, pTwoX, pTwoY) + val obj = mObj.get() + if (obj != 0L) { + showRouteLineJni(obj, pOneX, pOneY, pTwoX, pTwoY) } } fun addAntCoor(sessionId: Int, lon: Int, lat: Int, time: Int) { - if (mObj != 0L) { - addAntCoorJni(mObj, sessionId, lon, lat, time) + val obj = mObj.get() + if (obj != 0L) { + addAntCoorJni(obj, sessionId, lon, lat, time) } } fun drawMapMatchedPosition() { - if (mObj != 0L) { - drawMapMatchedPositionJni(mObj) + val obj = mObj.get() + if (obj != 0L) { + drawMapMatchedPositionJni(obj) } } - fun drawCar( - lon: Long, - lat: Long, - z: Short, - angle: Short, - scale: Int, - rate: Float, - data: ByteArray?, - len: Int - ) { - if (mObj != 0L) { - drawCarJni(mObj, lon, lat, z, angle, scale, rate, data, len) + fun drawCar(lon: Long, lat: Long, z: Short, angle: Short, scale: Int, rate: Float, data: ByteArray?, len: Int) { + val obj = mObj.get() + if (obj != 0L) { + drawCarJni(obj, lon, lat, z, angle, scale, rate, data, len) } } fun updateCar(lon: Long, lat: Long, z: Short, angle: Short) { - if (mObj != 0L) { - updateCarJni(mObj, lon, lat, z, angle) + val obj = mObj.get() + if (obj != 0L) { + updateCarJni(obj, lon, lat, z, angle) } } fun getCarPosition(position: IntArray?): Int { - return if (mObj != 0L) { - getCarPositionJni(mObj, position) + val obj = mObj.get() + return if (obj != 0L) { + getCarPositionJni(obj, position) } else 0 } fun setTrafIDStat(locCode: Int, dir: Int, evtCode: Int) { - if (mObj != 0L) { - setTrafIDStatJni(mObj, locCode, dir, evtCode) + val obj = mObj.get() + if (obj != 0L) { + setTrafIDStatJni(obj, locCode, dir, evtCode) } } fun getTrafIDStat(tileId: Int, linkId: Int): Int { - return if (mObj != 0L) { - getTrafIDStatJni(mObj, tileId, linkId) + val obj = mObj.get() + return if (obj != 0L) { + getTrafIDStatJni(obj, tileId, linkId) } else 0 } fun setTraffic(stat: Int) { - if (mObj != 0L) { - setTrafficJni(mObj, stat) + val obj = mObj.get() + if (obj != 0L) { + setTrafficJni(obj, stat) } } fun isTrafficOn(): Boolean { - return if (mObj != 0L) { - isTrafficOnJni(mObj) + val obj = mObj.get() + return if (obj != 0L) { + isTrafficOnJni(obj) } else false } fun commitTrafficStat(locTableCode: Int) { - if (mObj != 0L) { - commitTrafficStatJni(mObj, locTableCode) + val obj = mObj.get() + if (obj != 0L) { + commitTrafficStatJni(obj, locTableCode) } } fun routeSearching(showcnt: Int) { - if (mObj != 0L) { - routeSearchingJni(mObj, showcnt) + val obj = mObj.get() + if (obj != 0L) { + routeSearchingJni(obj, showcnt) } } fun getDAngle(): Float { - return if (mObj != 0L) { - getDAngleJni(mObj) + val obj = mObj.get() + return if (obj != 0L) { + getDAngleJni(obj) } else 45.0f } fun setDAngle(angle: Float) { - if (mObj != 0L) { - setDAngleJni(mObj, angle) + val obj = mObj.get() + if (obj != 0L) { + setDAngleJni(obj, angle) } } fun getRotateAngle(): Float { - return if (mObj != 0L) { - getRotateAngleJni(mObj) + val obj = mObj.get() + return if (obj != 0L) { + getRotateAngleJni(obj) } else 0.0f } fun setRotateAngle(angle: Float) { - if (mObj != 0L) { - setRotateAngleJni(mObj, angle) + val obj = mObj.get() + if (obj != 0L) { + setRotateAngleJni(obj, angle) } } fun setVerticalViewFieldAngle(angle: Float) { - if (mObj != 0L) { - setVerticalViewFieldAngleJni(mObj, angle) + val obj = mObj.get() + if (obj != 0L) { + setVerticalViewFieldAngleJni(obj, angle) } } fun getVerticalViewFieldAngle(): Float { - return if (mObj != 0L) { - getVerticalViewFieldAngleJni(mObj) + val obj = mObj.get() + return if (obj != 0L) { + getVerticalViewFieldAngleJni(obj) } else 45.0f } fun getEyeHeight(): Float { - return if (mObj != 0L) { - getEyeHeightJni(mObj) + val obj = mObj.get() + return if (obj != 0L) { + getEyeHeightJni(obj) } else 45.0f } fun setEyeHeight(eyeHeight: Float) { - if (mObj != 0L) { - setEyeHeightJni(mObj, eyeHeight) + val obj = mObj.get() + if (obj != 0L) { + setEyeHeightJni(obj, eyeHeight) } } fun clearRouteObjs() { - if (mObj != 0L) { - clearRouteObjsJni(mObj) + val obj = mObj.get() + if (obj != 0L) { + clearRouteObjsJni(obj) } } fun clearRouteSearchedObjs() { - if (mObj != 0L) { - clearRouteSearchedObjsJni(mObj) + val obj = mObj.get() + if (obj != 0L) { + clearRouteSearchedObjsJni(obj) } } fun drawSearchResult() { - if (mObj != 0L) { - drawSearchResultJni(mObj) + val obj = mObj.get() + if (obj != 0L) { + drawSearchResultJni(obj) } } fun clearSearchResult() { - if (mObj != 0L) { - clearSearchResultJni(mObj) + val obj = mObj.get() + if (obj != 0L) { + clearSearchResultJni(obj) } } fun setMapStyle(styleMode: Int) { - if (mObj != 0L) { - setMapStyleJni(mObj, styleMode) + val obj = mObj.get() + if (obj != 0L) { + setMapStyleJni(obj, styleMode) } } fun getMapStyle(): Int { - return if (mObj != 0L) { - getMapStyleJni(mObj) + val obj = mObj.get() + return if (obj != 0L) { + getMapStyleJni(obj) } else 1 } fun set3DBuildingVisible(isVisibel: Boolean) { - if (mObj != 0L) { - set3DBuildingVisibleJni(mObj, isVisibel) + val obj = mObj.get() + if (obj != 0L) { + set3DBuildingVisibleJni(obj, isVisibel) } } fun lonlatToPixels(lon: Double, lat: Double): Pixels? { - return if (mObj != 0L) { - lonlatToPixelsJni(mObj, lon, lat) + val obj = mObj.get() + return if (obj != 0L) { + lonlatToPixelsJni(obj, lon, lat) } else null } fun pixelsToLonlat(x: Float, y: Float): LonLat? { - return if (mObj != 0L) { - pixelsToLonlatJni(mObj, x, y) + val obj = mObj.get() + return if (obj != 0L) { + pixelsToLonlatJni(obj, x, y) } else null } fun shakeSceneManual() { - if (mObj != 0L) { - shakeSceneManualJni(mObj) + val obj = mObj.get() + if (obj != 0L) { + shakeSceneManualJni(obj) } } fun shakeMapManual() { - if (mObj != 0L) { - shakeMapManualJni(mObj) + val obj = mObj.get() + if (obj != 0L) { + shakeMapManualJni(obj) } } fun getResulation(): Float { - return if (mObj != 0L) { - getResulationJni(mObj) + val obj = mObj.get() + return if (obj != 0L) { + getResulationJni(obj) } else 0.0f } fun drawTraffic(trafficJson: String) { - if (mObj != 0L) { - drawTrafficJni(mObj, trafficJson) + val obj = mObj.get() + if (obj != 0L) { + drawTrafficJni(obj, trafficJson) } } fun addImage(imageKey: String, imageData: ByteArray?, width: Int, height: Int): Int { - return if (mObj != 0L) { - addImageJni(mObj, imageKey, imageData, width, height) + val obj = mObj.get() + return if (obj != 0L) { + addImageJni(obj, imageKey, imageData, width, height) } else 10001 } fun removeImage(imageKey: String) { - if (mObj != 0L) { - removeImageJni(mObj, imageKey) + val obj = mObj.get() + if (obj != 0L) { + removeImageJni(obj, imageKey) } } fun updateImage(imageKey: String, imageData: ByteArray?, width: Int, height: Int) { - if (mObj != 0L) { - updateImageJni(mObj, imageKey, imageData, width, height) + val obj = mObj.get() + if (obj != 0L) { + updateImageJni(obj, imageKey, imageData, width, height) } } fun getSuitableZoom(minLon: Double, minLat: Double, maxLon: Double, maxLat: Double): Int { - return if (mObj != 0L) { - getSuitableZoomJni(mObj, minLon, minLat, maxLon, maxLat) + val obj = mObj.get() + return if (obj != 0L) { + getSuitableZoomJni(obj, minLon, minLat, maxLon, maxLat) } else -1 } fun clearAllTmcLines() { - if (mObj != 0L) { - clearAllTmcLinesJni(mObj) + val obj = mObj.get() + if (obj != 0L) { + clearAllTmcLinesJni(obj) } } fun setTmcData(tmcData: ByteArray?) { - if (mObj != 0L) { - setTmcDataJni(mObj, tmcData) + val obj = mObj.get() + if (obj != 0L) { + setTmcDataJni(obj, tmcData) } } fun setEyeToOriginDis(eyeToOriginDis: Float) { - if (mObj != 0L) { - setEyeToOriginDisJni(mObj, eyeToOriginDis) + val obj = mObj.get() + if (obj != 0L) { + setEyeToOriginDisJni(obj, eyeToOriginDis) } } fun setScreenToOriginDis(screenToOriginDis: Float) { - if (mObj != 0L) { - setScreenToOriginDisJni(mObj, screenToOriginDis) + val obj = mObj.get() + if (obj != 0L) { + setScreenToOriginDisJni(obj, screenToOriginDis) } } fun setScaleMapCenter(lon: Double, lat: Double) { - if (mObj != 0L) { - setScaleMapCenterJni(mObj, lon, lat) + val obj = mObj.get() + if (obj != 0L) { + setScaleMapCenterJni(obj, lon, lat) } } @@ -431,754 +472,810 @@ class MapEngine { } fun setOffset(lon: Int, lat: Int) { - if (mObj != 0L) { - setOffsetJni(mObj, lon, lat) + val obj = mObj.get() + if (obj != 0L) { + setOffsetJni(obj, lon, lat) } } fun setOffsetByRate(rateX: Float, rateY: Float, angle: Float) { - if (mObj != 0L) { - setOffsetByRateJni(mObj, rateX, rateY, angle) + val obj = mObj.get() + if (obj != 0L) { + setOffsetByRateJni(obj, rateX, rateY, angle) } } fun setPointToCenter(xRate: Float, yRate: Float) { - if (mObj != 0L) { - setPointToCenterJni(mObj, xRate, yRate) + val obj = mObj.get() + if (obj != 0L) { + setPointToCenterJni(obj, xRate, yRate) } } fun setRenderFrequency(enable: Boolean, renderTimePer: Int) { - if (mObj != 0L) { - setRenderFrequencyJni(mObj, enable, renderTimePer) + val obj = mObj.get() + if (obj != 0L) { + setRenderFrequencyJni(obj, enable, renderTimePer) } } fun setLightPosition(position: FloatArray) { - if (mObj != 0L) { - setLightPositionJni(mObj, position) + val obj = mObj.get() + if (obj != 0L) { + setLightPositionJni(obj, position) } } fun setLightDiffuse(color: FloatArray) { - if (mObj != 0L) { - setLightDiffuseJni(mObj, color) + val obj = mObj.get() + if (obj != 0L) { + setLightDiffuseJni(obj, color) } } fun setLightSpecular(color: FloatArray) { - if (mObj != 0L) { - setLightSpecularJni(mObj, color) + val obj = mObj.get() + if (obj != 0L) { + setLightSpecularJni(obj, color) } } fun setFrontFaceShiness(frontFaceShiness: Float) { - if (mObj != 0L) { - setFrontFaceShinessJni(mObj, frontFaceShiness) + val obj = mObj.get() + if (obj != 0L) { + setFrontFaceShinessJni(obj, frontFaceShiness) } } - fun updatePointCloudDataByPb( - dataArray: ByteArray?, - isTrasformer: Boolean, - isResidual: Boolean, - isReset: Boolean - ): Boolean { - return if (mObj != 0L) { - updatePointCloudDataByPbJni(mObj, dataArray, isTrasformer, isResidual, isReset) + fun updatePointCloudDataByPb(dataArray: ByteArray?, isTrasformer: Boolean, isResidual: Boolean, isReset: Boolean): Boolean { + val obj = mObj.get() + return if (obj != 0L) { + updatePointCloudDataByPbJni(obj, dataArray, isTrasformer, isResidual, isReset) } else false } - fun updatePointCloudData( - dataStr: String, - isTrasformer: Boolean, - isResidual: Boolean, - isReset: Boolean - ): Boolean { - return if (mObj != 0L) { - updatePointCloudDataJni(mObj, dataStr, isTrasformer, isResidual, isReset) + fun updatePointCloudData(dataStr: String, isTrasformer: Boolean, isResidual: Boolean, isReset: Boolean): Boolean { + val obj = mObj.get() + return if (obj != 0L) { + updatePointCloudDataJni(obj, dataStr, isTrasformer, isResidual, isReset) } else false } fun setIsDrawPointCloud(isDrawPointCloud: Boolean) { - if (mObj != 0L) { - setIsDrawPointCloudJni(mObj, isDrawPointCloud) + val obj = mObj.get() + if (obj != 0L) { + setIsDrawPointCloudJni(obj, isDrawPointCloud) } } fun setPointCloudDisplayFllowAnim(isDisplayFllowAnim: Boolean, totalAnimTime: Int) { - if (mObj != 0L) { - setPointCloudDisplayFllowAnimJni(mObj, isDisplayFllowAnim, totalAnimTime) + val obj = mObj.get() + if (obj != 0L) { + setPointCloudDisplayFllowAnimJni(obj, isDisplayFllowAnim, totalAnimTime) } } fun setPointCloudSize(pointCloudSize: Float) { - if (mObj != 0L) { - setPointCloudSizeJni(mObj, pointCloudSize) + val obj = mObj.get() + if (obj != 0L) { + setPointCloudSizeJni(obj, pointCloudSize) } } fun setPointCloudColor(color: String) { - if (mObj != 0L) { - setPointCloudColorJni(mObj, color) + val obj = mObj.get() + if (obj != 0L) { + setPointCloudColorJni(obj, color) } } fun setIsEnableShadow(b: Boolean) { - if (mObj != 0L) { - setIsEnableShadowJni(mObj, b) + val obj = mObj.get() + if (obj != 0L) { + setIsEnableShadowJni(obj, b) } } fun setHDTypeVisible(type: IntArray?) { - if (mObj != 0L) { - setHDTypeVisibleJni(mObj, type) + val obj = mObj.get() + if (obj != 0L) { + setHDTypeVisibleJni(obj, type) } } fun switchData(x: Double, y: Double, isWgs84: Boolean): DoubleArray? { - return if (mObj != 0L) { - switchDataJni(mObj, x, y, isWgs84) + val obj = mObj.get() + return if (obj != 0L) { + switchDataJni(obj, x, y, isWgs84) } else null } - fun updateAnchorByJson( - anchorId: String, - json: String, - infobitmap: ByteArray?, - infoWidth: Int, - infoHeight: Int - ): Boolean { - return if (mObj != 0L) { - updateAnchorByJsonJni(mObj, anchorId, json, infobitmap, infoWidth, infoHeight) + fun updateAnchorByJson(anchorId: String, json: String, infobitmap: ByteArray?, infoWidth: Int, infoHeight: Int): Boolean { + val obj = mObj.get() + return if (obj != 0L) { + updateAnchorByJsonJni(obj, anchorId, json, infobitmap, infoWidth, infoHeight) } else false } fun setSomeAnchorZIndex(anchorId: String, zIndex: Int) { - if (mObj != 0L) { - setSomeAnchorZIndexJni(mObj, anchorId, zIndex) + val obj = mObj.get() + if (obj != 0L) { + setSomeAnchorZIndexJni(obj, anchorId, zIndex) } } fun drawAnchor(nameId: String, lon: Double, lat: Double, imagePath: String) { - if (mObj != 0L) { - drawAnchorJni(mObj, nameId, lon, lat, imagePath) + val obj = mObj.get() + if (obj != 0L) { + drawAnchorJni(obj, nameId, lon, lat, imagePath) } } fun removeAnchor(anchorId: String) { - if (mObj != 0L) { - removeAnchorJni(mObj, anchorId) + val obj = mObj.get() + if (obj != 0L) { + removeAnchorJni(obj, anchorId) } } fun findAnchorAtScreen(x: Int, y: Int): String { - return if (mObj != 0L) { - findAnchorAtScreenJni(mObj, x, y) + val obj = mObj.get() + return if (obj != 0L) { + findAnchorAtScreenJni(obj, x, y) } else "" } fun startAnimation(anchorId: String) { - if (mObj != 0L) { - startAnimationJni(mObj, anchorId) + val obj = mObj.get() + if (obj != 0L) { + startAnimationJni(obj, anchorId) } } fun endAnimation(anchorId: String) { - if (mObj != 0L) { - endAnimationJni(mObj, anchorId) + val obj = mObj.get() + if (obj != 0L) { + endAnimationJni(obj, anchorId) } } - fun addDynamicAnchorPostion( - anchorId: String, - points: DoubleArray, - angle: Float, - current: Long, - duration: Int - ) { - if (mObj != 0L) { - addDynamicAnchorPostionJni(mObj, anchorId, points, angle, current, duration) + fun addDynamicAnchorPostion(anchorId: String, points: DoubleArray, angle: Float, current: Long, duration: Int) { + val obj = mObj.get() + if (obj != 0L) { + addDynamicAnchorPostionJni(obj, anchorId, points, angle, current, duration) } } fun addTranslateAnimationToAnchor(anchorId: String, points: DoubleArray, duration: Int) { - if (mObj != 0L) { - addTranslateAnimationToAnchorJni(mObj, anchorId, points, duration) + val obj = mObj.get() + if (obj != 0L) { + addTranslateAnimationToAnchorJni(obj, anchorId, points, duration) } } fun addScaleAnimationToAnchor(anchorId: String, min: Float, max: Float, duration: Int) { - if (mObj != 0L) { - addScaleAnimationToAnchorJni(mObj, anchorId, min, max, duration) + val obj = mObj.get() + if (obj != 0L) { + addScaleAnimationToAnchorJni(obj, anchorId, min, max, duration) } } fun addFlashAnimationToAnchor(anchorId: String, imageJson: String, duration: Int) { - if (mObj != 0L) { - addFlashAnimationToAnchorJni(mObj, anchorId, imageJson, duration) + val obj = mObj.get() + if (obj != 0L) { + addFlashAnimationToAnchorJni(obj, anchorId, imageJson, duration) } } - fun addRotateAnimationToAnchor( - anchorId: String, - startAngle: Float, - endAngle: Float, - duration: Int - ) { - if (mObj != 0L) { - addRotateAnimationToAnchorJni(mObj, anchorId, startAngle, endAngle, duration) + fun addRotateAnimationToAnchor(anchorId: String, startAngle: Float, endAngle: Float, duration: Int) { + val obj = mObj.get() + if (obj != 0L) { + addRotateAnimationToAnchorJni(obj, anchorId, startAngle, endAngle, duration) } } fun setSomeAnchorCanClickable(anchorId: String, canClickable: Boolean) { - if (mObj != 0L) { - setSomeAnchorCanClickableJni(mObj, anchorId, canClickable) + val obj = mObj.get() + if (obj != 0L) { + setSomeAnchorCanClickableJni(obj, anchorId, canClickable) } } fun setSomeAnchorUnTop(anchorId: String) { - if (mObj != 0L) { - setSomeAnchorUnTopJni(mObj, anchorId) + val obj = mObj.get() + if (obj != 0L) { + setSomeAnchorUnTopJni(obj, anchorId) } } fun setSomeAnchorTop(anchorId: String) { - if (mObj != 0L) { - setSomeAnchorTopJni(mObj, anchorId) + val obj = mObj.get() + if (obj != 0L) { + setSomeAnchorTopJni(obj, anchorId) } } fun setSomeAnchorInfowindowOffset(anchorId: String, disx: Int, disy: Int) { - if (mObj != 0L) { - setSomeAnchorInfowindowOffsetJni(mObj, anchorId, disx, disy) + val obj = mObj.get() + if (obj != 0L) { + setSomeAnchorInfowindowOffsetJni(obj, anchorId, disx, disy) } } fun setSomeAnchorFlat(anchorId: String, isFlat: Boolean) { - if (mObj != 0L) { - setSomeAnchorFlatJni(mObj, anchorId, isFlat) + val obj = mObj.get() + if (obj != 0L) { + setSomeAnchorFlatJni(obj, anchorId, isFlat) } } fun setSomeAnchorDrawModel(anchorId: String, dragModel: Boolean) { - if (mObj != 0L) { - setSomeAnchorDrawModelJni(mObj, anchorId, dragModel) + val obj = mObj.get() + if (obj != 0L) { + setSomeAnchorDrawModelJni(obj, anchorId, dragModel) } } fun setSomeDrawModelPointScreenPosition(screenx: Int, screeny: Int): Boolean { - return if (mObj != 0L) { - setSomeDrawModelPointScreenPositionJni(mObj, screenx, screeny) + val obj = mObj.get() + return if (obj != 0L) { + setSomeDrawModelPointScreenPositionJni(obj, screenx, screeny) } else false } fun addManyAnchors(json: String, count: Int) { - if (mObj != 0L) { - addManyAnchorsJni(mObj, json, count) + val obj = mObj.get() + if (obj != 0L) { + addManyAnchorsJni(obj, json, count) } } fun addManyAnchorByJson(json: String, count: Int) { - if (mObj != 0L) { - addManyAnchorByJsonJni(mObj, json, count) + val obj = mObj.get() + if (obj != 0L) { + addManyAnchorByJsonJni(obj, json, count) } } fun removeClusterByClusterid(clusterId: String) { - if (mObj != 0L) { - removeClusterByClusteridJni(mObj, clusterId) + val obj = mObj.get() + if (obj != 0L) { + removeClusterByClusteridJni(obj, clusterId) } } fun removeManyAnchor(allAnchorJson: String, count: Int) { - if (mObj != 0L) { - removeManyAnchorJni(mObj, allAnchorJson, count) + val obj = mObj.get() + if (obj != 0L) { + removeManyAnchorJni(obj, allAnchorJson, count) } } fun clearAllCluster() { - if (mObj != 0L) { - clearAllClusterJni(mObj) + val obj = mObj.get() + if (obj != 0L) { + clearAllClusterJni(obj) } } - fun createConstAnchor( - attribute: String, - infoBitmap: ByteArray?, - infoWidth: Int, - infoHeight: Int - ): Boolean { - return if (mObj != 0L) { - createConstAnchorJni(mObj, attribute, infoBitmap, infoWidth, infoHeight) + fun createConstAnchor(attribute: String, infoBitmap: ByteArray?, infoWidth: Int, infoHeight: Int): Boolean { + val obj = mObj.get() + return if (obj != 0L) { + createConstAnchorJni(obj, attribute, infoBitmap, infoWidth, infoHeight) } else false } fun addAnchorAsync(json: String) { - if (mObj != 0L) { - addAnchorAsyncJni(mObj, json) + val obj = mObj.get() + if (obj != 0L) { + addAnchorAsyncJni(obj, json) } } fun executeAnchorAdd() { - if (mObj != 0L) { - executeAnchorAddJni(mObj) + val obj = mObj.get() + if (obj != 0L) { + executeAnchorAddJni(obj) } } fun setConstAnchorPositionFlag(isUpdate: Boolean) { - if (mObj != 0L) { - setConstAnchorPositionFlagJni(mObj, isUpdate) + val obj = mObj.get() + if (obj != 0L) { + setConstAnchorPositionFlagJni(obj, isUpdate) } } fun addAnchor(json: String, infoBitmap: ByteArray?, infoWidth: Int, infoHeight: Int): Boolean { - return if (mObj != 0L) { - addAnchorJni(mObj, json, infoBitmap, infoWidth, infoHeight) + val obj = mObj.get() + return if (obj != 0L) { + addAnchorJni(obj, json, infoBitmap, infoWidth, infoHeight) } else false } fun getAnchorProperty(id: String, propertyName: String): String { - return if (mObj != 0L) { - getAnchorPropertyJni(mObj, id, propertyName) + val obj = mObj.get() + return if (obj != 0L) { + getAnchorPropertyJni(obj, id, propertyName) } else "" } fun updateAnchorProperty(id: String, propertyName: String, propertyValue: String): Boolean { - return if (mObj != 0L) { - updateAnchorPropertyJni(mObj, id, propertyName, propertyValue) + val obj = mObj.get() + return if (obj != 0L) { + updateAnchorPropertyJni(obj, id, propertyName, propertyValue) } else false } - fun updateInfoWindowWithBitMap( - id: String, - imageData: ByteArray, - width: Int, - height: Int - ): Boolean { - return if (mObj != 0L) { - updateInfoWindowWithBitMapJni(mObj, id, imageData, width, height) + fun updateInfoWindowWithBitMap(id: String, imageData: ByteArray, width: Int, height: Int): Boolean { + val obj = mObj.get() + return if (obj != 0L) { + updateInfoWindowWithBitMapJni(obj, id, imageData, width, height) } else false } fun updateAnchorWithBitmap(id: String, imageKey: String): Boolean { - return if (mObj != 0L) { - updateAnchorWithBitmapJni(mObj, id, imageKey) + val obj = mObj.get() + return if (obj != 0L) { + updateAnchorWithBitmapJni(obj, id, imageKey) } else false } fun clearAllAnchors(): Boolean { - return if (mObj != 0L) { - clearAllAnchorsJni(mObj) + val obj = mObj.get() + return if (obj != 0L) { + clearAllAnchorsJni(obj) } else false } fun showInfoWindow(id: String) { - if (mObj != 0L) { - showInfoWindowJni(mObj, id) + val obj = mObj.get() + if (obj != 0L) { + showInfoWindowJni(obj, id) } } fun hideInfoWindow(id: String) { - if (mObj != 0L) { - hideInfoWindowJni(mObj, id) + val obj = mObj.get() + if (obj != 0L) { + hideInfoWindowJni(obj, id) } } fun setAnchorRate(rate: Float) { - if (mObj != 0L) { - setAnchorRateJni(mObj, rate) + val obj = mObj.get() + if (obj != 0L) { + setAnchorRateJni(obj, rate) } } fun setAnchorScale(wideLeft: Float, wideRight: Float, highUp: Float, hightDown: Float) { - if (mObj != 0L) { - setAnchorScaleJni(mObj, wideLeft, wideRight, highUp, hightDown) + val obj = mObj.get() + if (obj != 0L) { + setAnchorScaleJni(obj, wideLeft, wideRight, highUp, hightDown) } } fun setNameMode(mode: Int, recordCnt: Int) { - if (mObj != 0L) { - setNameModeJni(mObj, mode, recordCnt) + val obj = mObj.get() + if (obj != 0L) { + setNameModeJni(obj, mode, recordCnt) } } fun setSelfLocaionControl(mode: Int) { - if (mObj != 0L) { - setSelfLocaionControlJni(mObj, mode) + val obj = mObj.get() + if (obj != 0L) { + setSelfLocaionControlJni(obj, mode) } } fun setLockSelfCar(enable: Boolean) { - if (mObj != 0L) { - setLockSelfCarJni(mObj, enable) + val obj = mObj.get() + if (obj != 0L) { + setLockSelfCarJni(obj, enable) } } fun isAnchorDynamicMoving(anchorID: String): Boolean { - return if (mObj != 0L) { - isAnchorDynamicMovingJni(mObj, anchorID) + val obj = mObj.get() + return if (obj != 0L) { + isAnchorDynamicMovingJni(obj, anchorID) } else false } -// fun updateBatchAnchorPositon(dataStr: String): Boolean { -// return if (mObj != 0L) { -// updateBatchAnchorPositonJni(mObj, dataStr) -// } else false -// } + // fun updateBatchAnchorPositon(dataStr: String): Boolean { + // return if (mObj.get() != 0L) { + // updateBatchAnchorPositonJni(mObj.get(), dataStr) + // } else false + // } - fun updateBatchAnchorPositon(data: ByteArray?): Boolean{ - return if(mObj != 0L){ - updateBatchAnchorPositonJni(mObj,data); - }else false + fun updateBatchAnchorPositon(data: ByteArray?): Boolean { + val obj = mObj.get() + return if (obj != 0L) { + updateBatchAnchorPositonJni(obj, data); + } else false } fun setAnchorFlash(id: String, colorType: Int, color: String, time: Float, angle: Float) { - if (mObj != 0L) { - setAnchorFlashJni(mObj, id, colorType, color, time, angle) + val obj = mObj.get() + if (obj != 0L) { + setAnchorFlashJni(obj, id, colorType, color, time, angle) } } - fun setAnchorGradientColor( - startColor: String, - endColor: String, - startDistance: Float, - endDistance: Float - ) { - if (mObj != 0L) { - setAnchorGradientColorJni(mObj, startColor, endColor, startDistance, endDistance) + fun setAnchorGradientColor(startColor: String, endColor: String, startDistance: Float, endDistance: Float) { + val obj = mObj.get() + if (obj != 0L) { + setAnchorGradientColorJni(obj, startColor, endColor, startDistance, endDistance) } } fun setTailLightsType(type: Int, time: Int) { - if (mObj != 0L) { - setTailLightsTypeJni(mObj, type, time) + val obj = mObj.get() + if (obj != 0L) { + setTailLightsTypeJni(obj, type, time) } } - fun drawLine( - name: String, - points: DoubleArray, - lineWidth: Int, - r: Char, - g: Char, - b: Char, - a: Char, - isLoop: Boolean - ) { - if (mObj != 0L) { - drawLineJni(mObj, name, points, lineWidth, r, g, b, a, isLoop) + fun drawLine(name: String, points: DoubleArray, lineWidth: Int, r: Char, g: Char, b: Char, a: Char, isLoop: Boolean) { + val obj = mObj.get() + if (obj != 0L) { + drawLineJni(obj, name, points, lineWidth, r, g, b, a, isLoop) } } fun drawCircle(name: String, lonlats: DoubleArray, r: Char, g: Char, b: Char, a: Char) { - if (mObj != 0L) { - drawCircleJni(mObj, name, lonlats, r, g, b, a) + val obj = mObj.get() + if (obj != 0L) { + drawCircleJni(obj, name, lonlats, r, g, b, a) } } fun drawEllipse(name: String, lonlats: DoubleArray, r: Char, g: Char, b: Char, a: Char) { - if (mObj != 0L) { - drawEllipseJni(mObj, name, lonlats, r, g, b, a) + val obj = mObj.get() + if (obj != 0L) { + drawEllipseJni(obj, name, lonlats, r, g, b, a) } } fun drawPolygon(name: String, lonlats: DoubleArray, r: Char, g: Char, b: Char, a: Char) { - if (mObj != 0L) { - drawPolygonJni(mObj, name, lonlats, r, g, b, a) + val obj = mObj.get() + if (obj != 0L) { + drawPolygonJni(obj, name, lonlats, r, g, b, a) } } fun removePrimitiveByNameId(name: String) { - if (mObj != 0L) { - removePrimitiveByNameIdJni(mObj, name) + val obj = mObj.get() + if (obj != 0L) { + removePrimitiveByNameIdJni(obj, name) } } fun drawLine(jsonOption: String) { - if (mObj != 0L) { - drawLineJni(mObj, jsonOption) + val obj = mObj.get() + if (obj != 0L) { + drawLineJni(obj, jsonOption) } } fun drawThickLine(strJsonOption: String) { - if (mObj != 0L) { - drawThickLineJni(mObj, strJsonOption) + val obj = mObj.get() + if (obj != 0L) { + drawThickLineJni(obj, strJsonOption) } } fun setVisiable(id: String, bVisiable: Boolean) { - if (mObj != 0L) { - setVisiableJni(mObj, id, bVisiable) + val obj = mObj.get() + if (obj != 0L) { + setVisiableJni(obj, id, bVisiable) } } fun setWidth(id: String, width: Float) { - if (mObj != 0L) { - setWidthJni(mObj, id, width) + val obj = mObj.get() + if (obj != 0L) { + setWidthJni(obj, id, width) } } fun setGeodesic(id: String, bGeodesic: Boolean) { - if (mObj != 0L) { - setGeodesicJni(mObj, id, bGeodesic) + val obj = mObj.get() + if (obj != 0L) { + setGeodesicJni(obj, id, bGeodesic) } } fun setTransparency(id: String, transparency: Float) { - if (mObj != 0L) { - setTransparencyJni(mObj, id, transparency) + val obj = mObj.get() + if (obj != 0L) { + setTransparencyJni(obj, id, transparency) } } fun setColor(id: String, color: Int) { - if (mObj != 0L) { - setColorJni(mObj, id, color) + val obj = mObj.get() + if (obj != 0L) { + setColorJni(obj, id, color) } } fun setZIndex(id: String, zIndex: Float) { - if (mObj != 0L) { - setZIndexJni(mObj, id, zIndex) + val obj = mObj.get() + if (obj != 0L) { + setZIndexJni(obj, id, zIndex) } } fun useGradient(id: String, bUseGradient: Boolean) { - if (mObj != 0L) { - useGradientJni(mObj, id, bUseGradient) + val obj = mObj.get() + if (obj != 0L) { + useGradientJni(obj, id, bUseGradient) } } fun setDottedLineType(id: String, type: Int) { - if (mObj != 0L) { - setDottedLineTypeJni(mObj, id, type) + val obj = mObj.get() + if (obj != 0L) { + setDottedLineTypeJni(obj, id, type) } } fun setOption(id: String, strJsonOption: String) { - if (mObj != 0L) { - setOptionJni(mObj, id, strJsonOption) + val obj = mObj.get() + if (obj != 0L) { + setOptionJni(obj, id, strJsonOption) } } - fun draw3DPolygon( - id: String, - lonlatArr: DoubleArray, - height: Float, - width: Float, - count: Int, - color: FloatArray - ) { - if (mObj != 0L) { - draw3DPolygonJni(mObj, id, lonlatArr, height, width, count, color) + fun draw3DPolygon(id: String, lonlatArr: DoubleArray, height: Float, width: Float, count: Int, color: FloatArray) { + val obj = mObj.get() + if (obj != 0L) { + draw3DPolygonJni(obj, id, lonlatArr, height, width, count, color) } } fun clearAllPrimitives(): Boolean { - return if (mObj != 0L) { - clearAllPrimitivesJni(mObj) + val obj = mObj.get() + return if (obj != 0L) { + clearAllPrimitivesJni(obj) } else false } fun setDeadZoneVisiable(enable: Boolean) { - if (mObj != 0L) { - setDeadZoneVisiableJni(mObj,enable) + val obj = mObj.get() + if (obj != 0L) { + setDeadZoneVisiableJni(obj, enable) } } - fun drawDeadZone(strJsonOption:String?) { - if (mObj != 0L) { - drawDeadZoneJni(mObj,strJsonOption) + fun drawDeadZone(strJsonOption: String?) { + val obj = mObj.get() + if (obj != 0L) { + drawDeadZoneJni(obj, strJsonOption) } } fun setCfgKeyVal(key: String?, value: String?) { - if(mObj != 0L){ - setCfgKeyValJni(mObj,key,value) + val obj = mObj.get() + if (obj != 0L) { + setCfgKeyValJni(obj, key, value) } } fun unload() { Log.i(TAG, "MapEngine: unload") - if (mObj != 0L) { - unloadJni(mObj) - mObj = 0 - } - } - fun setLightWave(cmd:String){ - if (mObj != 0L) { - setPainterCmdJni(mObj,"lightwave",cmd) + val obj = mObj.get() + if (obj != 0L) { + if (mObj.compareAndSet(obj, 0L)) { + unloadJni(obj) + } } } - fun setGuideLine(cmd:String?){ - if (mObj != 0L) { - setPainterCmdJni(mObj,"guideline",cmd) + fun setLightWave(cmd: String) { + val obj = mObj.get() + if (obj != 0L) { + setPainterCmdJni(obj, "lightwave", cmd) } } - fun setTexture(name: String,ba:ByteArray?){ - if (mObj != 0L) { - setTextureJni(mObj,name,ba) + + fun setGuideLine(cmd: String?) { + val obj = mObj.get() + if (obj != 0L) { + setPainterCmdJni(obj, "guideline", cmd) } } - fun setStyleName(name:String){ - if (mObj != 0L) { - setPainterCmdJni(mObj,"style",name) + + fun setTexture(name: String, ba: ByteArray?) { + val obj = mObj.get() + if (obj != 0L) { + setTextureJni(obj, name, ba) } } - fun onChangeStyle(styleMode:Int){ - if(styleMode== MapAutoApi.MAP_STYLE_NIGHT_VR) - setStyleName("night") - else if(styleMode== MapAutoApi.MAP_STYLE_DAY_VR) - setStyleName("day") - else if(styleMode== MapAutoApi.MAP_STYLE_DAY_VR_BUS) - setStyleName("bus_day") - else if(styleMode== MapAutoApi.MAP_STYLE_DAY_VR_TAXI) - setStyleName("taxi_day") + + fun setStyleName(name: String) { + val obj = mObj.get() + if (obj != 0L) { + setPainterCmdJni(obj, "style", name) + } } - private external fun loadJni(projectDir: String, mapView: MapView?,assetManager: AssetManager?): Long - private external fun resizeJni(obj:Long,newWidth: Int, newHeight: Int) + fun onChangeStyle(styleMode: Int) { + if (styleMode == MapAutoApi.MAP_STYLE_NIGHT_VR) setStyleName("night") + else if (styleMode == MapAutoApi.MAP_STYLE_DAY_VR) setStyleName("day") + else if (styleMode == MapAutoApi.MAP_STYLE_DAY_VR_BUS) setStyleName("bus_day") + else if (styleMode == MapAutoApi.MAP_STYLE_DAY_VR_TAXI) setStyleName("taxi_day") + } - private external fun renderJni(obj:Long) + private external fun loadJni(projectDir: String, mapView: MapView?, assetManager: AssetManager?): Long - private external fun scrollJni(obj:Long,dx: Float, dy: Float) + private external fun resizeJni(obj: Long, newWidth: Int, newHeight: Int) - private external fun scrollByAnimJni(obj:Long,dx: Float, dy: Float) + private external fun renderJni(obj: Long) - private external fun setZoomIndexJni(obj:Long,zoomIndex: Int) + private external fun scrollJni(obj: Long, dx: Float, dy: Float) - private external fun getZoomIndexJni(obj:Long): Int + private external fun scrollByAnimJni(obj: Long, dx: Float, dy: Float) - private external fun setZoomValueJni(obj:Long,zoomValue: Float) + private external fun setZoomIndexJni(obj: Long, zoomIndex: Int) - private external fun getZoomValueJni(obj:Long): Float + private external fun getZoomIndexJni(obj: Long): Int - private external fun zoomInJni(obj:Long) + private external fun setZoomValueJni(obj: Long, zoomValue: Float) - private external fun zoomOutJni(obj:Long) + private external fun getZoomValueJni(obj: Long): Float - private external fun scaleJni(obj:Long,scale: Float) + private external fun zoomInJni(obj: Long) - private external fun scaleByCenterJni(obj:Long,centerX: Int, centerY: Int, scale: Float) + private external fun zoomOutJni(obj: Long) - private external fun rotateJni(obj:Long,angle: Float) + private external fun scaleJni(obj: Long, scale: Float) - private external fun lookUpDownJni(obj:Long,look: Float) + private external fun scaleByCenterJni(obj: Long, centerX: Int, centerY: Int, scale: Float) - private external fun setCenterJni(obj:Long,lon: Double, lat: Double) + private external fun rotateJni(obj: Long, angle: Float) - private external fun getCenterJni(obj:Long,point: DoubleArray) + private external fun lookUpDownJni(obj: Long, look: Float) + + private external fun setCenterJni(obj: Long, lon: Double, lat: Double) + + private external fun getCenterJni(obj: Long, point: DoubleArray) + + private external fun animateToJni(obj: Long, lon: Double, lat: Double, alt: Float, zoom: Float, rotateAngle: Float, overlookAngle: Float, eyeHeight: Float, duration: Int, fov: Float) - private external fun animateToJni(obj:Long,lon: Double, lat: Double, alt: Float, zoom: Float, rotateAngle: Float, overlookAngle: Float, eyeHeight: Float, duration: Int,fov: Float) /** * 导航 设置导航参数 */ - private external fun setRoutePropJni(obj:Long,prop: Int, lon: Int, lat: Int) + private external fun setRoutePropJni(obj: Long, prop: Int, lon: Int, lat: Int) + /** * 导航 绘制导航 */ - private external fun drawRouteJni(obj:Long) + private external fun drawRouteJni(obj: Long) + /** * 导航 绘制导航指向标 */ - private external fun drawNavArrowJni(obj:Long) + private external fun drawNavArrowJni(obj: Long) + /** * 导航 获取导航路线 */ - private external fun getRulerInfoJni(obj:Long): Float + private external fun getRulerInfoJni(obj: Long): Float + /** * 导航 显示所有导航路线 */ - private external fun showAllRouteLineJni(obj:Long) + private external fun showAllRouteLineJni(obj: Long) + /** * 导航 显示导航路线 */ - private external fun showRouteLineJni(obj:Long,pOneX: Float, pOneY: Float, pTwoX: Float, pTwoY: Float) + private external fun showRouteLineJni(obj: Long, pOneX: Float, pOneY: Float, pTwoX: Float, pTwoY: Float) - private external fun addAntCoorJni(obj:Long,sessionId: Int, lon: Int, lat: Int, time: Int) + private external fun addAntCoorJni(obj: Long, sessionId: Int, lon: Int, lat: Int, time: Int) + + private external fun drawMapMatchedPositionJni(obj: Long) - private external fun drawMapMatchedPositionJni(obj:Long) /** * 导航 添加车标 */ - private external fun drawCarJni(obj:Long,lon: Long, lat: Long, z: Short, angle: Short, scale: Int, rate: Float, data: ByteArray?, len: Int) + private external fun drawCarJni(obj: Long, lon: Long, lat: Long, z: Short, angle: Short, scale: Int, rate: Float, data: ByteArray?, len: Int) + /** * 导航 更新车标 */ - private external fun updateCarJni(obj:Long,lon: Long, lat: Long, z: Short, angle: Short) + private external fun updateCarJni(obj: Long, lon: Long, lat: Long, z: Short, angle: Short) + /** * 导航 获取车的位置 */ - private external fun getCarPositionJni(obj:Long,position: IntArray?): Int + private external fun getCarPositionJni(obj: Long, position: IntArray?): Int + /** * TMC */ - private external fun setTrafIDStatJni(obj:Long,locCode: Int, dir: Int, evtCode: Int) + private external fun setTrafIDStatJni(obj: Long, locCode: Int, dir: Int, evtCode: Int) + /** * TMC */ - private external fun getTrafIDStatJni(obj:Long,tileId: Int, linkId: Int): Int + private external fun getTrafIDStatJni(obj: Long, tileId: Int, linkId: Int): Int + /** * TMC 开关 */ - private external fun setTrafficJni(obj:Long,stat: Int) + private external fun setTrafficJni(obj: Long, stat: Int) + /** * TMC 是否开启 */ - private external fun isTrafficOnJni(obj:Long): Boolean + private external fun isTrafficOnJni(obj: Long): Boolean + /** * TMC */ - private external fun commitTrafficStatJni(obj:Long,locTableCode: Int) + private external fun commitTrafficStatJni(obj: Long, locTableCode: Int) + /** * 导航 */ - private external fun routeSearchingJni(obj:Long,showcnt: Int) + private external fun routeSearchingJni(obj: Long, showcnt: Int) + /** * 地图 获取3D角 */ - private external fun getDAngleJni(obj:Long): Float + private external fun getDAngleJni(obj: Long): Float + /** * 地图 设置3D角 */ - private external fun setDAngleJni(obj:Long,angle: Float) + private external fun setDAngleJni(obj: Long, angle: Float) + /** * 地图 获取偏转角 */ - private external fun getRotateAngleJni(obj:Long): Float + private external fun getRotateAngleJni(obj: Long): Float + /** * 地图 设置偏转角 */ - private external fun setRotateAngleJni(obj:Long,angle: Float) + private external fun setRotateAngleJni(obj: Long, angle: Float) //视域调整 - private external fun setVerticalViewFieldAngleJni(obj:Long,angle: Float) + private external fun setVerticalViewFieldAngleJni(obj: Long, angle: Float) //获取视域角 - private external fun getVerticalViewFieldAngleJni(obj:Long): Float + private external fun getVerticalViewFieldAngleJni(obj: Long): Float //获取眼睛高度 - private external fun getEyeHeightJni(obj:Long): Float + private external fun getEyeHeightJni(obj: Long): Float //设置眼睛高度 - private external fun setEyeHeightJni(obj:Long,eyeHeight: Float) + private external fun setEyeHeightJni(obj: Long, eyeHeight: Float) + /** * 导航 清理路由信息 */ - private external fun clearRouteObjsJni(obj:Long) + private external fun clearRouteObjsJni(obj: Long) + /** * 导航 清理路由信息 */ - private external fun clearRouteSearchedObjsJni(obj:Long) + private external fun clearRouteSearchedObjsJni(obj: Long) + /** * 搜索 绘制poi结果 */ - private external fun drawSearchResultJni(obj:Long) + private external fun drawSearchResultJni(obj: Long) + /** * 搜索 清理poi结果 */ - private external fun clearSearchResultJni(obj:Long) + private external fun clearSearchResultJni(obj: Long) // 视图模式 // 0: 日间模式 @@ -1187,73 +1284,84 @@ class MapEngine { // 3:日间导航模式 // 4:夜间导航模式 // 5.VR模式 - private external fun setMapStyleJni(obj:Long,styleMode: Int) + private external fun setMapStyleJni(obj: Long, styleMode: Int) - private external fun getMapStyleJni(obj:Long): Int + private external fun getMapStyleJni(obj: Long): Int + + private external fun set3DBuildingVisibleJni(obj: Long, isVisibel: Boolean) - private external fun set3DBuildingVisibleJni(obj:Long,isVisibel: Boolean) /** * 地图 经纬度转屏幕坐标 */ - private external fun lonlatToPixelsJni(obj:Long,lon: Double, lat: Double): Pixels? + private external fun lonlatToPixelsJni(obj: Long, lon: Double, lat: Double): Pixels? + /** * 地图 屏幕坐标转经纬度 */ - private external fun pixelsToLonlatJni(obj:Long,x: Float, y: Float): LonLat? + private external fun pixelsToLonlatJni(obj: Long, x: Float, y: Float): LonLat? //场景刷新 - private external fun shakeSceneManualJni(obj:Long) + private external fun shakeSceneManualJni(obj: Long) //地图刷新 - private external fun shakeMapManualJni(obj:Long) + private external fun shakeMapManualJni(obj: Long) + //获取屏幕分辨率 - private external fun getResulationJni(obj:Long): Float + private external fun getResulationJni(obj: Long): Float - private external fun drawTrafficJni(obj:Long,trafficJson: String) + private external fun drawTrafficJni(obj: Long, trafficJson: String) - private external fun addImageJni(obj:Long,imageKey: String, imageData: ByteArray?, width: Int, height: Int): Int + private external fun addImageJni(obj: Long, imageKey: String, imageData: ByteArray?, width: Int, height: Int): Int - private external fun removeImageJni(obj:Long,imageKey: String) + private external fun removeImageJni(obj: Long, imageKey: String) - private external fun updateImageJni(obj:Long,imageKey: String, imageData: ByteArray?, width: Int, height: Int) + private external fun updateImageJni(obj: Long, imageKey: String, imageData: ByteArray?, width: Int, height: Int) + + private external fun getSuitableZoomJni(obj: Long, minLon: Double, minLat: Double, maxLon: Double, maxLat: Double): Int - private external fun getSuitableZoomJni(obj:Long,minLon: Double, minLat: Double, maxLon: Double, maxLat: Double): Int /** * TMC 清理TMC已绘制数据 */ - private external fun clearAllTmcLinesJni(obj:Long) + private external fun clearAllTmcLinesJni(obj: Long) + /** * TMC 设置TMC数据 */ - private external fun setTmcDataJni(obj:Long,tmcData: ByteArray?) + private external fun setTmcDataJni(obj: Long, tmcData: ByteArray?) - private external fun setEyeToOriginDisJni(obj:Long,eyeToOriginDis: Float) + private external fun setEyeToOriginDisJni(obj: Long, eyeToOriginDis: Float) + + private external fun setScreenToOriginDisJni(obj: Long, screenToOriginDis: Float) - private external fun setScreenToOriginDisJni(obj:Long,screenToOriginDis: Float) // 设置缩放中心点 - private external fun setScaleMapCenterJni(obj:Long,lon: Double, lat: Double) + private external fun setScaleMapCenterJni(obj: Long, lon: Double, lat: Double) + //自定义路径 private external fun setStyleDirJni(dir: String) + /** * 地图 设置屏幕中心偏移 */ - private external fun setOffsetJni(obj:Long,lon: Int, lat: Int) + private external fun setOffsetJni(obj: Long, lon: Int, lat: Int) + + private external fun setOffsetByRateJni(obj: Long, rateX: Float, rateY: Float, angle: Float) - private external fun setOffsetByRateJni(obj:Long,rateX: Float, rateY: Float, angle: Float) //设置屏幕上的某个像素点为地图中心点。 - private external fun setPointToCenterJni(obj:Long,xRate: Float, yRate: Float) + private external fun setPointToCenterJni(obj: Long, xRate: Float, yRate: Float) + //设置同频渲染相关参数 - private external fun setRenderFrequencyJni(obj:Long,enable: Boolean, renderTimePer: Int) + private external fun setRenderFrequencyJni(obj: Long, enable: Boolean, renderTimePer: Int) + //设置灯光位置 - private external fun setLightPositionJni(obj:Long,position: FloatArray) + private external fun setLightPositionJni(obj: Long, position: FloatArray) //漫反射 - private external fun setLightDiffuseJni(obj:Long,color: FloatArray) + private external fun setLightDiffuseJni(obj: Long, color: FloatArray) //镜面反射 - private external fun setLightSpecularJni(obj:Long,color: FloatArray) + private external fun setLightSpecularJni(obj: Long, color: FloatArray) - private external fun setFrontFaceShinessJni(obj:Long,frontFaceShiness: Float) + private external fun setFrontFaceShinessJni(obj: Long, frontFaceShiness: Float) /** * 更新点云数据 @@ -1263,7 +1371,7 @@ class MapEngine { * @param isReset 是否重置数据 * @return 是否执行 */ - private external fun updatePointCloudDataByPbJni(obj:Long,dataArray: ByteArray?, isTrasformer: Boolean, isResidual: Boolean, isReset: Boolean): Boolean + private external fun updatePointCloudDataByPbJni(obj: Long, dataArray: ByteArray?, isTrasformer: Boolean, isResidual: Boolean, isReset: Boolean): Boolean /** * 更新点云数据 @@ -1273,59 +1381,46 @@ class MapEngine { * @param isReset 是否重置数据 * @return 是否执行 */ - private external fun updatePointCloudDataJni(obj:Long,dataStr: String, isTrasformer: Boolean, isResidual: Boolean, isReset: Boolean): Boolean + private external fun updatePointCloudDataJni(obj: Long, dataStr: String, isTrasformer: Boolean, isResidual: Boolean, isReset: Boolean): Boolean /** * 设置是否绘制点云 * @param isDrawPointCloud 是否绘制 默认false 不绘制 */ - private external fun setIsDrawPointCloudJni(obj:Long,isDrawPointCloud: Boolean) + private external fun setIsDrawPointCloudJni(obj: Long, isDrawPointCloud: Boolean) /** * 绘制点云是否有动画 * @param isDisplayFllowAnim 是否有动画 * @param totalAnimTime 动画时间(100-10000) */ - private external fun setPointCloudDisplayFllowAnimJni(obj:Long,isDisplayFllowAnim: Boolean, totalAnimTime: Int) + private external fun setPointCloudDisplayFllowAnimJni(obj: Long, isDisplayFllowAnim: Boolean, totalAnimTime: Int) // 点云大小设置(0.1-20) - private external fun setPointCloudSizeJni(obj:Long,pointCloudSize: Float) + private external fun setPointCloudSizeJni(obj: Long, pointCloudSize: Float) // 点云颜色 - private external fun setPointCloudColorJni(obj:Long,color: String) + private external fun setPointCloudColorJni(obj: Long, color: String) //更新高精地图显示元素 - private external fun setHDTypeVisibleJni(obj:Long,type: IntArray?) + private external fun setHDTypeVisibleJni(obj: Long, type: IntArray?) - private external fun unloadJni(obj:Long) + private external fun unloadJni(obj: Long) //是否启用阴影 - private external fun setIsEnableShadowJni(obj:Long,b: Boolean) + private external fun setIsEnableShadowJni(obj: Long, b: Boolean) external fun isCollision(data: String): String //转换数据 - private external fun switchDataJni(obj:Long,x: Double, y: Double, isWgs84: Boolean): DoubleArray + private external fun switchDataJni(obj: Long, x: Double, y: Double, isWgs84: Boolean): DoubleArray - private external fun setStyleNameJni(obj:Long,name: String) + private external fun setStyleNameJni(obj: Long, name: String) - private external fun updateAnchorByJsonJni( - obj: Long, - anchorId: String, - json: String, - infobitmap: ByteArray?, - infoWidth: Int, - infoHeight: Int - ): Boolean + private external fun updateAnchorByJsonJni(obj: Long, anchorId: String, json: String, infobitmap: ByteArray?, infoWidth: Int, infoHeight: Int): Boolean private external fun setSomeAnchorZIndexJni(obj: Long, anchorId: String, zIndex: Int) - private external fun drawAnchorJni( - obj: Long, - nameId: String, - lon: Double, - lat: Double, - imagePath: String - ) + private external fun drawAnchorJni(obj: Long, nameId: String, lon: Double, lat: Double, imagePath: String) private external fun removeAnchorJni(obj: Long, anchorId: String) private external fun findAnchorAtScreenJni(obj: Long, x: Int, y: Int): String @@ -1335,65 +1430,27 @@ class MapEngine { private external fun endAnimationJni(obj: Long, anchorId: String) //动态平移 - private external fun addDynamicAnchorPostionJni( - obj: Long, - anchorId: String, - points: DoubleArray, - angle: Float, - current: Long, - duration: Int - ) + private external fun addDynamicAnchorPostionJni(obj: Long, anchorId: String, points: DoubleArray, angle: Float, current: Long, duration: Int) //平移 - private external fun addTranslateAnimationToAnchorJni( - obj: Long, - anchorId: String, - points: DoubleArray, - duration: Int - ) + private external fun addTranslateAnimationToAnchorJni(obj: Long, anchorId: String, points: DoubleArray, duration: Int) //缩放 - private external fun addScaleAnimationToAnchorJni( - obj: Long, - anchorId: String, - min: Float, - max: Float, - duration: Int - ) + private external fun addScaleAnimationToAnchorJni(obj: Long, anchorId: String, min: Float, max: Float, duration: Int) - private external fun addFlashAnimationToAnchorJni( - obj: Long, - anchorId: String, - imageJson: String, - duration: Int - ) + private external fun addFlashAnimationToAnchorJni(obj: Long, anchorId: String, imageJson: String, duration: Int) //旋转 - private external fun addRotateAnimationToAnchorJni( - obj: Long, - anchorId: String, - startAngle: Float, - endAngle: Float, - duration: Int - ) + private external fun addRotateAnimationToAnchorJni(obj: Long, anchorId: String, startAngle: Float, endAngle: Float, duration: Int) - private external fun setSomeAnchorCanClickableJni( - obj: Long, - anchorId: String, - canClickable: Boolean - ) + private external fun setSomeAnchorCanClickableJni(obj: Long, anchorId: String, canClickable: Boolean) // 非置顶 private external fun setSomeAnchorUnTopJni(obj: Long, anchorId: String) private external fun setSomeAnchorTopJni(obj: Long, anchorId: String) - private external fun setSomeAnchorInfowindowOffsetJni( - obj: Long, - anchorId: String, - disx: Int, - disy: Int - ) + private external fun setSomeAnchorInfowindowOffsetJni(obj: Long, anchorId: String, disx: Int, disy: Int) // 设置是否是平贴 private external fun setSomeAnchorFlatJni(obj: Long, anchorId: String, isFlat: Boolean) @@ -1402,11 +1459,7 @@ class MapEngine { private external fun setSomeAnchorDrawModelJni(obj: Long, anchorId: String, dragModel: Boolean) // 设置拖拽位置 - private external fun setSomeDrawModelPointScreenPositionJni( - obj: Long, - screenx: Int, - screeny: Int - ): Boolean + private external fun setSomeDrawModelPointScreenPositionJni(obj: Long, screenx: Int, screeny: Int): Boolean private external fun addManyAnchorsJni(obj: Long, json: String, count: Int) @@ -1420,13 +1473,7 @@ class MapEngine { private external fun clearAllClusterJni(obj: Long) - private external fun createConstAnchorJni( - obj: Long, - attribute: String, - infoBitmap: ByteArray?, - infoWidth: Int, - infoHeight: Int - ): Boolean + private external fun createConstAnchorJni(obj: Long, attribute: String, infoBitmap: ByteArray?, infoWidth: Int, infoHeight: Int): Boolean private external fun addAnchorAsyncJni(obj: Long, json: String) @@ -1434,13 +1481,7 @@ class MapEngine { private external fun setConstAnchorPositionFlagJni(obj: Long, isUpdate: Boolean) - private external fun addAnchorJni( - obj: Long, - json: String, - infoBitmap: ByteArray?, - infoWidth: Int, - infoHeight: Int - ): Boolean + private external fun addAnchorJni(obj: Long, json: String, infoBitmap: ByteArray?, infoWidth: Int, infoHeight: Int): Boolean /** * 返回anchor的对象属性值 @@ -1459,12 +1500,7 @@ class MapEngine { * @param propertyValue 要更新的属性值 * @return */ - private external fun updateAnchorPropertyJni( - obj: Long, - id: String, - propertyName: String, - propertyValue: String - ): Boolean + private external fun updateAnchorPropertyJni(obj: Long, id: String, propertyName: String, propertyValue: String): Boolean /** * 更新infowindow内容 @@ -1475,13 +1511,7 @@ class MapEngine { * @param height 图片高度 * @return true 更新成功 false 更新失败 */ - private external fun updateInfoWindowWithBitMapJni( - obj: Long, - id: String, - imageData: ByteArray, - width: Int, - height: Int - ): Boolean + private external fun updateInfoWindowWithBitMapJni(obj: Long, id: String, imageData: ByteArray, width: Int, height: Int): Boolean /** * 更新anchor @@ -1515,13 +1545,7 @@ class MapEngine { private external fun setAnchorRateJni(obj: Long, rate: Float) //For Test 四个顶点设置锚点变形 左宽 右宽 上高 下高 - private external fun setAnchorScaleJni( - obj: Long, - wideLeft: Float, - wideRight: Float, - highUp: Float, - hightDown: Float - ) + private external fun setAnchorScaleJni(obj: Long, wideLeft: Float, wideRight: Float, highUp: Float, hightDown: Float) //nMode 1:按Tile存储 2:按文件存储 nRecordCnt 单个文件存储的记录个数 private external fun setNameModeJni(obj: Long, mode: Int, recordCnt: Int) @@ -1540,71 +1564,25 @@ class MapEngine { private external fun isAnchorDynamicMovingJni(obj: Long, anchorID: String): Boolean //批量更新 -// private external fun updateBatchAnchorPositonJni(obj: Long, dataStr: String): Boolean + // private external fun updateBatchAnchorPositonJni(obj: Long, dataStr: String): Boolean private external fun updateBatchAnchorPositonJni(obj: Long, data: ByteArray?): Boolean - private external fun setAnchorFlashJni( - obj: Long, - id: String, - colorType: Int, - color: String, - time: Float, - angle: Float - ) + private external fun setAnchorFlashJni(obj: Long, id: String, colorType: Int, color: String, time: Float, angle: Float) - private external fun setAnchorGradientColorJni( - obj: Long, - startColor: String, - endColor: String, - startDistance: Float, - endDistance: Float - ) + private external fun setAnchorGradientColorJni(obj: Long, startColor: String, endColor: String, startDistance: Float, endDistance: Float) private external fun setTailLightsTypeJni(obj: Long, type: Int, time: Int) /*图元接口*/ - private external fun drawLineJni( - obj: Long, name: String, - points: DoubleArray, - lineWidth: Int, - r: Char, - g: Char, - b: Char, - a: Char, - isLoop: Boolean - ) + private external fun drawLineJni(obj: Long, name: String, points: DoubleArray, lineWidth: Int, r: Char, g: Char, b: Char, a: Char, isLoop: Boolean) - private external fun drawCircleJni( - obj: Long, - name: String, - lonlats: DoubleArray, - r: Char, - g: Char, - b: Char, - a: Char - ) + private external fun drawCircleJni(obj: Long, name: String, lonlats: DoubleArray, r: Char, g: Char, b: Char, a: Char) - private external fun drawEllipseJni( - obj: Long, - name: String, - lonlats: DoubleArray, - r: Char, - g: Char, - b: Char, - a: Char - ) + private external fun drawEllipseJni(obj: Long, name: String, lonlats: DoubleArray, r: Char, g: Char, b: Char, a: Char) - private external fun drawPolygonJni( - obj: Long, - name: String, - lonlats: DoubleArray, - r: Char, - g: Char, - b: Char, - a: Char - ) + private external fun drawPolygonJni(obj: Long, name: String, lonlats: DoubleArray, r: Char, g: Char, b: Char, a: Char) private external fun removePrimitiveByNameIdJni(obj: Long, name: String) @@ -1630,23 +1608,15 @@ class MapEngine { private external fun setOptionJni(obj: Long, id: String, strJsonOption: String) - private external fun draw3DPolygonJni( - obj: Long, - id: String, - lonlatArr: DoubleArray, - height: Float, - width: Float, - count: Int, - color: FloatArray - ) + private external fun draw3DPolygonJni(obj: Long, id: String, lonlatArr: DoubleArray, height: Float, width: Float, count: Int, color: FloatArray) - private external fun setCfgKeyValJni(obj: Long,key: String?,value: String?) + private external fun setCfgKeyValJni(obj: Long, key: String?, value: String?) private external fun clearAllPrimitivesJni(obj: Long): Boolean - private external fun drawDeadZoneJni(obj: Long,strJsonOption: String?) + private external fun drawDeadZoneJni(obj: Long, strJsonOption: String?) - private external fun setDeadZoneVisiableJni(obj:Long,b: Boolean) - private external fun setTextureJni(obj: Long,name:String,ba:ByteArray?) //设置一些元素的纹理,比如路面("road"),地面("plane")啥的 - private external fun setPainterCmdJni(obj: Long,name:String?,cmd:String?) + private external fun setDeadZoneVisiableJni(obj: Long, b: Boolean) + private external fun setTextureJni(obj: Long, name: String, ba: ByteArray?) //设置一些元素的纹理,比如路面("road"),地面("plane")啥的 + private external fun setPainterCmdJni(obj: Long, name: String?, cmd: String?) } \ No newline at end of file From d67fa35dc2e7a08aebbcdf9282724daa360892b5 Mon Sep 17 00:00:00 2001 From: renwj Date: Thu, 19 Sep 2024 11:48:17 +0800 Subject: [PATCH 3/4] =?UTF-8?q?[6.7.0][=E8=A7=86=E8=A7=92=E5=88=87?= =?UTF-8?q?=E6=8D=A2/=E8=98=91=E6=96=B9=E7=8A=B6=E6=80=81=E5=B1=95?= =?UTF-8?q?=E7=A4=BA]=20=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/layout/taxi_seekbar_visualangle.xml | 4 +- .../main/res/layout/taxi_base_fragment.xml | 25 +- .../layout/layout_status_bar_over_item.xml | 4 +- .../hmi/ui/mofang/MoFangStatusView.kt | 255 +++++++++--------- .../hmi/ui/viewport/VisualAngleToggleView.kt | 179 ++++++++++++ .../icon_mofang_key_clicked.png | Bin 0 -> 6952 bytes .../icon_mofang_key_default.png | Bin 0 -> 1554 bytes .../icon_mofang_key_long_clicked.png | Bin 0 -> 16850 bytes .../drawable-xhdpi/icon_mofang_status_bg.png | Bin 0 -> 18810 bytes ...icon_visual_angle_toggle_block_default.png | Bin 0 -> 18399 bytes ...icon_visual_angle_toggle_block_pressed.png | Bin 0 -> 60032 bytes .../icon_visual_angle_toggle_disable.png | Bin 0 -> 37697 bytes .../icon_visual_angle_toggle_enable.png | Bin 0 -> 53823 bytes .../src/main/res/drawable/bg_mf_status.xml | 6 - .../res/drawable/bg_visual_angle_toggle.xml | 5 + .../drawable/bg_visual_angle_toggle_block.xml | 5 + .../main/res/layout/layout_mofang_status.xml | 245 ++++------------- .../res/layout/layout_visual_angle_toggle.xml | 19 ++ .../main/res/layout/view_bone_container.xml | 2 + .../src/main/res/values/dimens.xml | 2 + .../eagle/core/utilcode/kotlin/Extensions.kt | 2 +- 21 files changed, 409 insertions(+), 344 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/viewport/VisualAngleToggleView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_mofang_key_clicked.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_mofang_key_default.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_mofang_key_long_clicked.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_mofang_status_bg.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_visual_angle_toggle_block_default.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_visual_angle_toggle_block_pressed.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_visual_angle_toggle_disable.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_visual_angle_toggle_enable.png delete mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_status.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_visual_angle_toggle.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_visual_angle_toggle_block.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_visual_angle_toggle.xml diff --git a/OCH/common/common/src/main/res/layout/taxi_seekbar_visualangle.xml b/OCH/common/common/src/main/res/layout/taxi_seekbar_visualangle.xml index 456da864d2..de3b7368ad 100644 --- a/OCH/common/common/src/main/res/layout/taxi_seekbar_visualangle.xml +++ b/OCH/common/common/src/main/res/layout/taxi_seekbar_visualangle.xml @@ -2,8 +2,8 @@ - - + + + + diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_status_bar_over_item.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_status_bar_over_item.xml index 7faa8a0dfa..08b00f9d2f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_status_bar_over_item.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_status_bar_over_item.xml @@ -1,5 +1,5 @@ \ No newline at end of file + android:layout_width="@dimen/dp_51_5" + android:layout_height="@dimen/dp_40_5" /> \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/mofang/MoFangStatusView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/mofang/MoFangStatusView.kt index 3cda1fea21..2114c61714 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/mofang/MoFangStatusView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/mofang/MoFangStatusView.kt @@ -12,24 +12,17 @@ import com.mogo.eagle.core.function.api.devatools.mofang.IMoGoMoFangProvider.OnM import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.kotlin.scope import com.mogo.eagle.core.utilcode.util.ToastUtils -import com.mogo.eagle.core.utilcode.util.UiThreadHandler -import kotlinx.android.synthetic.main.layout_mofang_status.view.tv_icon_1 -import kotlinx.android.synthetic.main.layout_mofang_status.view.tv_icon_2 -import kotlinx.android.synthetic.main.layout_mofang_status.view.tv_icon_3 -import kotlinx.android.synthetic.main.layout_mofang_status.view.tv_icon_4 -import kotlinx.android.synthetic.main.layout_mofang_status.view.tv_icon_5 -import kotlinx.android.synthetic.main.layout_mofang_status.view.v_lp_1 -import kotlinx.android.synthetic.main.layout_mofang_status.view.v_lp_2 -import kotlinx.android.synthetic.main.layout_mofang_status.view.v_lp_3 -import kotlinx.android.synthetic.main.layout_mofang_status.view.v_lp_4 -import kotlinx.android.synthetic.main.layout_mofang_status.view.v_lp_5 -import kotlinx.android.synthetic.main.layout_mofang_status.view.v_sp_1 -import kotlinx.android.synthetic.main.layout_mofang_status.view.v_sp_2 -import kotlinx.android.synthetic.main.layout_mofang_status.view.v_sp_3 -import kotlinx.android.synthetic.main.layout_mofang_status.view.v_sp_4 -import kotlinx.android.synthetic.main.layout_mofang_status.view.v_sp_5 -import me.jessyan.autosize.utils.AutoSizeUtils +import kotlinx.android.synthetic.main.layout_mofang_status.view.iv_key_1 +import kotlinx.android.synthetic.main.layout_mofang_status.view.iv_key_2 +import kotlinx.android.synthetic.main.layout_mofang_status.view.iv_key_3 +import kotlinx.android.synthetic.main.layout_mofang_status.view.iv_key_4 +import kotlinx.android.synthetic.main.layout_mofang_status.view.iv_key_5 +import kotlinx.coroutines.Job +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.atomic.AtomicInteger /** @@ -43,6 +36,8 @@ class MoFangStatusView : LinearLayout, OnMoFangStatusListener, IMoGoAutopilotSta private val autoPilotState by lazy { AtomicInteger(CallerAutoPilotStatusListenerManager.getState()) } + private val pendingJobs by lazy { ConcurrentHashMap() } + constructor(context: Context) : super(context) constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) @@ -50,10 +45,7 @@ class MoFangStatusView : LinearLayout, OnMoFangStatusListener, IMoGoAutopilotSta init { View.inflate(context, R.layout.layout_mofang_status, this) orientation = VERTICAL - background = ContextCompat.getDrawable(context, R.drawable.bg_mf_status) - val lr = AutoSizeUtils.dp2px(context, 30f) - val tb = AutoSizeUtils.dp2px(context, 33f) - setPadding(lr, tb, lr, tb) + background = ContextCompat.getDrawable(context, R.drawable.icon_mofang_status_bg) } override fun onAttachedToWindow() { @@ -82,7 +74,7 @@ class MoFangStatusView : LinearLayout, OnMoFangStatusListener, IMoGoAutopilotSta if (last != state) { if (last == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { Log.d(TAG, "自驾改成非自驾,重置状态") - UiThreadHandler.post { + scope.launch { reset() } } @@ -103,71 +95,70 @@ class MoFangStatusView : LinearLayout, OnMoFangStatusListener, IMoGoAutopilotSta return } if (keyCode == KeyEvent.KEYCODE_A) { - if (tv_icon_2?.tag != 2 && tv_icon_2?.isSelected == true) { - tv_icon_2?.isSelected = false - v_lp_2?.visibility = View.VISIBLE - v_lp_2?.isSelected = false - v_sp_2?.visibility = View.INVISIBLE + if (iv_key_2?.tag != "0") { + iv_key_2?.tag = "0" + iv_key_2?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_default)) + } + if (iv_key_1?.tag == "0") { + iv_key_1?.tag = "1" + iv_key_1?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_clicked)) } - tv_icon_1?.isSelected = true - v_lp_1?.visibility = View.INVISIBLE - v_sp_1?.visibility = View.VISIBLE } if (keyCode == KeyEvent.KEYCODE_B) { - if (tv_icon_1?.isSelected == true) { - tv_icon_1?.isSelected = false - v_lp_1?.visibility = View.VISIBLE - v_lp_1?.isSelected = false - v_sp_1?.visibility = View.INVISIBLE + if (iv_key_1?.tag != "0") { + iv_key_1?.tag = "0" + iv_key_1?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_default)) + } + if (iv_key_2?.tag == "0") { + iv_key_2?.tag = "1" + iv_key_2?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_clicked)) + pendingJobs[keyCode]?.cancel() + scope.launch { + delay(1000) + iv_key_2?.tag = "0" + iv_key_2?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_default)) + }.also { pendingJobs[keyCode] = it } } - tv_icon_2?.isSelected = true - tv_icon_2?.tag = 1 - v_lp_2?.visibility = View.INVISIBLE - v_sp_2?.visibility = View.VISIBLE - UiThreadHandler.postDelayed({ - tv_icon_2?.tag = null - tv_icon_2?.isSelected = false - v_lp_2?.visibility = View.VISIBLE - v_lp_2?.isSelected = false - v_sp_2?.visibility = View.INVISIBLE - }, 1000) } if (keyCode == KeyEvent.KEYCODE_C) { - tv_icon_3?.isSelected = true - v_lp_3?.visibility = View.INVISIBLE - v_sp_3?.visibility = View.VISIBLE - UiThreadHandler.postDelayed({ - tv_icon_3?.isSelected = false - v_lp_3?.visibility = View.VISIBLE - v_lp_3?.isSelected = false - v_sp_3?.visibility = View.INVISIBLE - }, 1000) + if (iv_key_3?.tag == "0") { + iv_key_3?.tag = "1" + iv_key_3?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_clicked)) + pendingJobs[keyCode]?.cancel() + scope.launch { + delay(1000) + iv_key_3?.tag = "0" + iv_key_3?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_default)) + }.also { pendingJobs[keyCode] = it } + } } if (keyCode == KeyEvent.KEYCODE_D) { - tv_icon_4?.isSelected = true - v_lp_4?.visibility = View.INVISIBLE - v_sp_4?.visibility = View.VISIBLE - UiThreadHandler.postDelayed({ - tv_icon_4?.isSelected = false - v_lp_4?.visibility = View.VISIBLE - v_lp_4?.isSelected = false - v_sp_4?.visibility = View.INVISIBLE - }, 1000) + if (iv_key_4?.tag == "0") { + iv_key_4?.tag = "1" + iv_key_4?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_clicked)) + pendingJobs[keyCode]?.cancel() + scope.launch { + delay(1000) + iv_key_4?.tag = "0" + iv_key_4?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_default)) + }.also { pendingJobs[keyCode] = it } + } } if (keyCode == KeyEvent.KEYCODE_E) { - tv_icon_5?.isSelected = true - v_lp_5?.visibility = View.INVISIBLE - v_sp_5?.visibility = View.VISIBLE - UiThreadHandler.postDelayed({ - tv_icon_5?.isSelected = false - v_lp_5?.visibility = View.VISIBLE - v_lp_5?.isSelected = false - v_sp_5?.visibility = View.INVISIBLE - }, 1000) + if (iv_key_5?.tag == "0") { + iv_key_5?.tag = "1" + iv_key_5?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_clicked)) + pendingJobs[keyCode]?.cancel() + scope.launch { + delay(1000) + iv_key_5?.tag = "0" + iv_key_5?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_default)) + }.also { pendingJobs[keyCode] = it } + } } } @@ -182,44 +173,41 @@ class MoFangStatusView : LinearLayout, OnMoFangStatusListener, IMoGoAutopilotSta return } if (keyCode == KeyEvent.KEYCODE_A) { - if (tv_icon_2?.tag != 2 && tv_icon_2?.isSelected == true) { - tv_icon_2?.isSelected = false - v_lp_2?.visibility = View.VISIBLE - v_lp_2?.isSelected = false - v_sp_2?.visibility = View.INVISIBLE + if (iv_key_2?.tag != "0") { + iv_key_2?.tag = "0" + pendingJobs[KeyEvent.KEYCODE_B]?.cancel() + iv_key_2?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_default)) + } + if (iv_key_1?.tag != "2") { + iv_key_1?.tag = "2" + iv_key_1?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_long_clicked)) } - tv_icon_1?.isSelected = true - v_lp_1?.visibility = View.VISIBLE - v_lp_1?.isSelected = true - v_sp_1?.visibility = View.INVISIBLE } if (keyCode == KeyEvent.KEYCODE_B) { - tv_icon_2?.isSelected = true - tv_icon_2?.tag = 2 - v_lp_2?.visibility = View.VISIBLE - v_lp_2?.isSelected = true - v_sp_2?.visibility = View.INVISIBLE - UiThreadHandler.postDelayed({ - tv_icon_2?.tag = null - tv_icon_2?.isSelected = false - v_lp_2?.visibility = View.VISIBLE - v_lp_2?.isSelected = false - v_sp_2?.visibility = View.INVISIBLE - }, 1000) + if (iv_key_2?.tag != "2") { + iv_key_2?.tag = "2" + iv_key_2?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_long_clicked)) + pendingJobs[keyCode]?.cancel() + scope.launch { + delay(1000) + iv_key_2?.tag = "0" + iv_key_2?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_default)) + } + } } if (keyCode == KeyEvent.KEYCODE_E) { - tv_icon_5?.isSelected = true - v_lp_5?.visibility = View.VISIBLE - v_lp_5?.isSelected = true - v_sp_5?.visibility = View.INVISIBLE - UiThreadHandler.postDelayed({ - tv_icon_5?.isSelected = false - v_lp_5?.visibility = View.VISIBLE - v_lp_5?.isSelected = false - v_sp_5?.visibility = View.INVISIBLE - }, 1000) + if (iv_key_5?.tag != "2") { + iv_key_5?.tag = "2" + iv_key_5?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_long_clicked)) + pendingJobs[keyCode]?.cancel() + scope.launch { + delay(1000) + iv_key_5?.tag = "0" + iv_key_5?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_default)) + } + } } } @@ -239,12 +227,14 @@ class MoFangStatusView : LinearLayout, OnMoFangStatusListener, IMoGoAutopilotSta val key1 = keyCodes[0] val key2 = keyCodes[1] if (key1 == KeyEvent.KEYCODE_A && key2 == KeyEvent.KEYCODE_B || (key1 == KeyEvent.KEYCODE_B && key2 == KeyEvent.KEYCODE_A)) { - tv_icon_1?.isSelected = true - v_lp_1?.visibility = View.INVISIBLE - v_sp_1?.visibility = View.VISIBLE - tv_icon_2?.isSelected = true - v_lp_2.visibility = View.INVISIBLE - v_sp_2.visibility = View.VISIBLE + if (iv_key_1?.tag != "1") { + iv_key_1?.tag = "1" + iv_key_1?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_clicked)) + } + if (iv_key_2?.tag != "1") { + iv_key_2?.tag = "1" + iv_key_2?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_clicked)) + } } } @@ -257,30 +247,25 @@ class MoFangStatusView : LinearLayout, OnMoFangStatusListener, IMoGoAutopilotSta } private fun reset() { - tv_icon_1?.isSelected = false - v_lp_1?.visibility = View.VISIBLE - v_lp_1?.isSelected = false - v_sp_1?.visibility = View.INVISIBLE - - tv_icon_2?.isSelected = false - v_lp_2?.visibility = View.VISIBLE - v_lp_2?.isSelected = false - v_sp_2?.visibility = View.INVISIBLE - - - tv_icon_3?.isSelected = false - v_lp_3?.visibility = View.VISIBLE - v_lp_3?.isSelected = false - v_sp_3?.visibility = View.INVISIBLE - - tv_icon_4?.isSelected = false - v_lp_4?.visibility = View.VISIBLE - v_lp_4?.isSelected = false - v_sp_4?.visibility = View.INVISIBLE - - tv_icon_5?.isSelected = false - v_lp_5?.visibility = View.VISIBLE - v_lp_5?.isSelected = false - v_sp_5?.visibility = View.INVISIBLE + if (iv_key_1?.tag != "0") { + iv_key_1?.tag = "0" + iv_key_1?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_default)) + } + if (iv_key_2?.tag != "0") { + iv_key_2?.tag = "0" + iv_key_2?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_default)) + } + if (iv_key_3?.tag != "0") { + iv_key_3?.tag = "0" + iv_key_3?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_default)) + } + if (iv_key_4?.tag != "0") { + iv_key_4?.tag = "0" + iv_key_4?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_default)) + } + if (iv_key_5?.tag != "0") { + iv_key_5?.tag = "0" + iv_key_5?.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.icon_mofang_key_default)) + } } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/viewport/VisualAngleToggleView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/viewport/VisualAngleToggleView.kt new file mode 100644 index 0000000000..f4c63f507b --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/viewport/VisualAngleToggleView.kt @@ -0,0 +1,179 @@ +package com.mogo.eagle.core.function.hmi.ui.viewport + +import android.animation.Animator +import android.animation.AnimatorListenerAdapter +import android.animation.ValueAnimator +import android.content.Context +import android.util.AttributeSet +import android.view.GestureDetector +import android.view.LayoutInflater +import android.view.MotionEvent +import android.view.ViewConfiguration +import android.view.animation.AccelerateDecelerateInterpolator +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import com.mogo.eagle.core.function.angle.scenes.Default +import com.mogo.eagle.core.function.angle.scenes.LongSight +import com.mogo.eagle.core.function.api.map.angle.IMoGoVisualAngleChangeProvider +import com.mogo.eagle.core.function.api.map.angle.Scene +import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.kotlin.scope +import kotlinx.android.synthetic.main.layout_visual_angle_toggle.view.iv_toggle_block +import kotlinx.coroutines.launch +import me.jessyan.autosize.utils.AutoSizeUtils +import kotlin.math.abs +import kotlin.math.max + +class VisualAngleToggleView : LinearLayout, IMoGoVisualAngleChangeProvider.OnMoGoVisualAngleSceneChangeListener { + + companion object { + private const val TAG = "VisualAngleToggleView" + } + + constructor(context: Context?) : this(context, null) + constructor(context: Context?, attrs: AttributeSet?) : this(context, attrs, 0) + constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { + orientation = VERTICAL + isClickable = true + LayoutInflater.from(context).inflate(R.layout.layout_visual_angle_toggle, this, true) + val defaultSlop = AutoSizeUtils.dp2px(context, 12.0f) + val scrollSlop = max(context?.let { ViewConfiguration.get(it).scaledTouchSlop } ?: defaultSlop, defaultSlop) + val gestureDetector = GestureDetector(context, object : GestureDetector.SimpleOnGestureListener() { + + override fun onDown(e: MotionEvent): Boolean { + return true + } + + override fun onScroll(e1: MotionEvent, e2: MotionEvent, distanceX: Float, distanceY: Float): Boolean { + val absX = abs(e2.x - e1.x) + val absY = abs(e2.y - e1.y) + if (absY <= absX) { + return false + } + if (e2.y - e1.y >= scrollSlop) { + moveToBottom() + return true + } + if (e1.y - e2.y >= scrollSlop) { + moveToTop() + return true + } + return super.onScroll(e1, e2, distanceX, distanceY) + } + }) + iv_toggle_block?.setOnTouchListener { _, event -> gestureDetector.onTouchEvent(event) } + if (context != null) { + background = ContextCompat.getDrawable(context, R.drawable.bg_visual_angle_toggle) + } + } + + private fun moveToBottom() { + if (iv_toggle_block?.tag == "0") { + return + } + val start = if (iv_toggle_block?.tag == 1) AutoSizeUtils.dp2px(context, 185.0f) else AutoSizeUtils.dp2px(context, 109.0f) + iv_toggle_block?.tag = "0" + iv_toggle_block?.isEnabled = false + val end = AutoSizeUtils.dp2px(context, 276.0f) + val animator = ValueAnimator.ofInt(start, end) + animator.addUpdateListener { l -> + val current = l.animatedValue as? Int ?: 0 + (iv_toggle_block?.layoutParams as? LayoutParams)?.also { it.topMargin = current }?.also { iv_toggle_block?.layoutParams = it } + } + animator.addListener(object : AnimatorListenerAdapter() { + override fun onAnimationStart(animation: Animator, isReverse: Boolean) { + CallerVisualAngleManager.changeScene(Default()) + } + override fun onAnimationEnd(animation: Animator, isReverse: Boolean) { + super.onAnimationEnd(animation, isReverse) + iv_toggle_block?.isEnabled = true + } + }) + animator.interpolator = AccelerateDecelerateInterpolator() + animator.setDuration(200) + animator.start() + } + + private fun moveToTop() { + if (iv_toggle_block?.tag == "2") { + return + } + val start = if (iv_toggle_block?.tag == 1) AutoSizeUtils.dp2px(context, 185.0f) else AutoSizeUtils.dp2px(context, 276.0f) + iv_toggle_block?.tag = "2" + iv_toggle_block?.isEnabled = false + val end = AutoSizeUtils.dp2px(context, 109.0f) + val animator = ValueAnimator.ofInt(start, end) + animator.addUpdateListener { l -> + val current = l.animatedValue as? Int ?: 0 + (iv_toggle_block?.layoutParams as? LayoutParams)?.also { it.topMargin = current }?.also { iv_toggle_block?.layoutParams = it } + } + animator.addListener(object : AnimatorListenerAdapter() { + override fun onAnimationStart(animation: Animator, isReverse: Boolean) { + CallerVisualAngleManager.changeScene(LongSight()) + + } + override fun onAnimationEnd(animation: Animator, isReverse: Boolean) { + iv_toggle_block?.isEnabled = true + } + }) + animator.interpolator = AccelerateDecelerateInterpolator() + animator.setDuration(200) + animator.start() + } + + private fun moveToMiddle() { + if (iv_toggle_block?.tag == "1") { + return + } + val start = if (iv_toggle_block?.tag == 2) AutoSizeUtils.dp2px(context, 109.0f) else AutoSizeUtils.dp2px(context, 276.0f) + iv_toggle_block?.tag = "1" + iv_toggle_block?.isEnabled = false + val end = AutoSizeUtils.dp2px(context, 185.0f) + val animator = ValueAnimator.ofInt(start, end) + animator.addUpdateListener { l -> + val current = l.animatedValue as? Int ?: 0 + (iv_toggle_block?.layoutParams as? LayoutParams)?.also { it.topMargin = current }?.also { iv_toggle_block?.layoutParams = it } + } + animator.interpolator = AccelerateDecelerateInterpolator() + animator.setDuration(200) + animator.start() + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + CallerVisualAngleManager.addListener(TAG, this) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerVisualAngleManager.removeListener(TAG) + } + + override fun onSceneChanged(scene: Scene) { + val isCanSwitch = scene.isCanSwitch() + scope.launch { + if (isCanSwitch != isEnabled) { + isEnabled = isCanSwitch + } + if (iv_toggle_block?.isEnabled != isCanSwitch) { + iv_toggle_block?.isEnabled = isCanSwitch + } + } + if (!isCanSwitch) { + scope.launch { + moveToMiddle() + } + } else { + if (scene is Default) { + scope.launch { + moveToBottom() + } + } else if (scene is LongSight) { + scope.launch { + moveToTop() + } + } + } + } +} diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_mofang_key_clicked.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_mofang_key_clicked.png new file mode 100644 index 0000000000000000000000000000000000000000..7c8974d75b11b868f324eecadb81fdc0699d3238 GIT binary patch literal 6952 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 Ef|a7K*8l(j literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_mofang_key_long_clicked.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_mofang_key_long_clicked.png new file mode 100644 index 0000000000000000000000000000000000000000..390e0158fd552ac1d482018a261b836311717ec7 GIT binary patch literal 16850 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 NV0+f)we{sY{|kgj7;FFl literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_visual_angle_toggle_block_default.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_visual_angle_toggle_block_default.png new file mode 100644 index 0000000000000000000000000000000000000000..dff6f032480583c56d1518f9c6352ad0d646e628 GIT binary patch literal 18399 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 R&iQkly?Y{d^LHNk=^r4Ge`^2$ literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_visual_angle_toggle_block_pressed.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_visual_angle_toggle_block_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..fd960cb67908d8f3aaccf1765c4503e4f3511290 GIT binary patch literal 60032 zcmV)ZK&!urP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR92HlPCl1ONa40RR91tN;K20Eefi^Z)=r07*naRCoc*-QBNmTb|eT{di7Q zHC+uhv^+F{Hm#tL#y~_a2!Rko)EKTh-kA6oXuL7u4=~YN{Tob-ns|qIBzR?Ff>9Do zhyoqDX)pzC($aL**-yS-pE2iJ>+IU6s=E6Cj^F;RIp=uzK7PL6G3JMX%{TAgy?puN z#mna}Uc4Z7eV;vl{^Hr2FTQwoDyn(@{Mq{t?|1$D#j9r@p1pt8kM*nTv-fY_K6~+6 zebw)3L*wO(XYbV4zv0h5ynlaajLnOOx;l*R+xPEA^FvfV`|PvzjmonRZ=><*)wB2S z-md)`m;}!omt1{5eE9I})$7-j9q+e|dHMX6;ghMs&z_}pKN2=N1gi1ntC#U z6&t;M_Y5Dld6{kA#p7i(KV)C!MQ!Z=?#&yT9kCgf9K^2Mi&rmF>GVHF%NFX=`&naO z#Fywt|N6a;4qY2FKaLh+&nClcc#*qN@HYPRVEbg#!+H~vw^`p)|gZ-3#7x6l6OkALIC|NdA1 z>RJSR{{Z88NE6gA0)YOXH6G{Z z(R*LQ5oj-8yq+ZQ-$(!D>(MqI`05s2i8Vf#jO!ptX~##P4pi@+y%N9%NoMMeQx}8| zP|5Y|QNJT-?PL_luM6Za4qyC|><;QiHa1z(<6TT%zASlm9H;~9`;sP`(*L17{m70E z`mY=F7Qo4@@>+IpM*@l z*9+W(0Ta)$%iH9y(`7R(oBU=MbuSi-E0-f4$f;B{Y%Ftm7u8g!fB_`hHthOOPqr4%PS71TeZ(G z84g6E*Y%BpVe+%rZ{NRt_t&4lc>6!T`{Ikg{MY{4UqkGlOJR9DC6zfk={NI~2!P;SV;CFyPI7s4 z1`nLo+a3IXV-`Gp(GxVBCJ3LG6pZ-LOznfu0CUlP)od&%1p9z@gB6HM8cT3Xsz3rb zH;w3bK0u_;S+wzq!JWt#FPBZD zFj4WCNEEyAFB*pHv8w&}&ealOZM5!A;vcumS@O6lb>fA z_@~Q?SsuQB>QDcoL^&?VV|N^LY@y;-}EN(-6$SxQax4&`@Kcermq??V@4I}zSn60gJ@5DG> ztu7{GlaWLpkzJ2YGFsUhJliCUL>Pn97t#7p5e{ZAI#$2QAlvYnV5ZaR;`1PHZJT5p z!-BI(M#&Y@XVqv%1!7%K0vxQzYk;d>kO8J-XP*g(B_HCS$>8YWd^%k^9^JsX_C>_e z8;B*kJMjpJT~~kPJS)i{e(XUy0wxtQR+9D(RZf@uqGSJ7_qY<%*KN8c1LxXfk7iw_=+dhVkRD zoh+00#crQDwV1;kEoeDmur$^k7|fU=Q@;nGM^6{C4~0|ISbU!9VbgU;f3v`@bA6`$>W$(38rq>om)J zt>u%#{`}AX{OfQ2*zfo+-oAVL7qbly49sSVOfiE2g?VzpcdVWf2gT~lD79y>tTuxS z;OCrL{p)L_mBx*F+33vsaJrSTg zjFLklY>%X!-srbK_O=xl8Q624c^qrZf>Cm~XaHi8)?kHF;P-KR@!X2kt!6e+1Q7f1 zffa$IG$2=ZRs)TT?n_B3iVK9xb}!IQsO=9nmj9;TY&PPviB1hskwXM{wwT@$Omfs; z+Y)X1@q?NLpJV#ZHqn3g_RZRkFBl>mMAKN`1!T2bA=!pV=OyOxs3F4Wl0)DQmnAi; z+O10KGCX#Knc0QR#t^C_u3K$&^0K{Idb9DcQLFYY>Qv%5im%qWM7qQ%(S#ZHoGZ|d zfxDFPX@opF{F-RtyB_SY@#%9W=z|*lPAp8w@I$sE7lJ05?yN8w4R&!h+^mw^#)_YQ z?lgZ!Ltl3h+mrtA4l@4O@Bita`Ptw8+yCVM^quegA6FVhBodF`ReT*kzOKY}3->9R zp8xLO`!oM}`v8CL7}88uu--Xbqx%vhD>_Wq{0-26C-N{p6q#K(qsYQ!&_mgITmeknqvun?13F4B4jmf#X zc;fUhp-h(NTYWesEMCgv#8J|(!8M;88>WxdO#wrPvjUGxJlSxpmpG44rdx8qzE<$; zdM2y%%IExc+X;Vd6DCS0>1VI{v9Fc3l^c2ZaSs(@Guv0kzE+ZG-g@k=BwAZVswAK; ztTFqXi48B987?1mHF5OBGre#e9@2f2N)t*XM(>V=%>s?x0)af5kzT1Kl5Wh_V#Cf z=@88Oi(47+UP$!tuH;;+w|o8w)F`*JXf+Ox{|o0-vC;cTCc&B4^Mq4909y{x%A8RH{!<=uG-sDCN{Fj^wQ^op+ZIjpV zkPcB;GJj)2jP^q^7B_LTH+M?@iq7E|J?hi1Zg_1Kx-n;RGlu212VPRVw|2HNt)9-) zBOFMAk;uO3m%iktYZX89hyU=u_Km;uxBpMKrO17%d{zCY`hK$Rit10c{jf^RKPA9J z{U871|K^{3^X}bWDk$?U1yA5G0An-qI`@Miygp&}uoB1)OArmZmhdMqwqc&-Eq7Ue z`y5>_NZsZ|c0h^xNr2koQ@y}oXf)4$iP<#gFS!M#OY%8d9S>i!lKE9Ls6+!88x!5_ z(bZPY8bAOAFX{~>w5%Vfn&r28n&v=Rvi~fa_^zB_76?nq9RY=z@gGRgO@1{7o;{E& zxazA-U*Jxn^g9n221YdlDrWdUCIGbN6T3q|*U}7693T5s2OrY__y686{=GB8sP8N4K2`sH9Y0m^n@wz=V)!LNe)ebo?bn}u^Lzhg zK>LY-A>#oIFfZX`1=k)+vj+q3iKf})nhi!UQ0)l}D>lYQpm4si=Vj9q__t7;tQ^Qk zuCc(j_KpK^eUQX_ptuKbWMgam;03mL+I*d(+-fWUuEd51`SigJ*mC&oRK)M|xbFN0 z)NIlCy(8E70X7*Njgtt7B;aKEtzrWGd6-a8#7hx$_R?m*WZs92S3;Y`jGs-93=N)M zlQ$bKkT({+Rz88(XSU5=dw*+kkqnKJRkEB_LbQyHK08}!-u5OR+uG>np_AxLAjV2w z*F%zqd4)v)FT^@w1>EX9-R?v*jF?5VUHxaLYG%WHWQAw^o}MN*o3URf*F=zt)!nv{ z9Jg;*on$y4Ch_P+$BK}Ah*A+I4u-?WUiLtkJd9zFlW!rXR`rZgzfx;KUy$1!5QWB96x?PJ~>#cGFiyf zaa6L9^XN*SY}R3ZI{uD*_=7#K)<}G(r_r5V7$pzd{M(CeiDeh~+0XshH~;AW@GHOa ze`!>z+IJUEeyINqm)}fc`xK+^tNTNL=%@d~0QTnv6fnAlGK&ll$>5Y`2(6Q}%yb1Xcg1&rHZ*wyIJ;4o5etEgPfrA z$8EFK9lN1Af5k%rF;@S*7v+d2d#t{uKJ+-NyW^h)VD^X!Vkj z<}bFjSHy-q=DqXAMs!$|ToY2T&2NHK^B!*SOEw$t+Ru|-;vT`+ z0KZLa7fmbV?Q0P%y1;pGo6h#kE*{g1u2K_5Rc zwh53OF58?{AO6DS!fbT5KWTfUa$+dYR9~dbmhcZN2S3??=i-eHTP_}IhqWq(U2-iU zGHU0&W}iGYTYRL`#%hYE$#S>k&z^t#_2>WOi+}LTzx2ONn8zRW{J!$3y6@}swBl&^ zwB`q&e~Q8P)&1hlh_S&rtUZYt8hQNw;r}WeBfV=i?l?PTfx$H9wGFu$1BqnQm z?7>Yst2jPCHW9>xIdv!A@pmo$&va2}6@aflPhNgSH=3-{NhI^J3DRZseec2+^rnOT z*<%YV+cvm<6-wVbNZ;+ve)6Mb^1Bm@bNbWi@Jx*P3qQ%0PZN*$DH6qwyUkariX4~R zj_i1E)*l*Y!ks>nNMqR51Wq3Psm8Y2$Yb0|o`*-(XEj$s(|@=1>q}F`e76W8fPs+qCBB5&)`Q>WkRFYl38<1`)b3YC8g&}`xwKo~ zbx+kfKDo$tAbJwb0%p22I^y@Ox}-dQ{X79HNdgS;0*%%_PC5qL+V*d4&JLe=KFrdB z?eyD~=QCOEmd;vv&QXFrVz< z%w*2}Y{w5VqKnrVCVV(~2*ld?dF}DS|7r3j3!5F;PBI{vB(yO!i2iv}mrW$D#@N$4 zD+pG)?dU;9GVk`8=I|t#+d~T*UVk_f)=6|**)}$jW*&qdajRe#K|l~k+j>bbLV><=IXOaRV-J3Cw;Fe?IrqWAHMYy-~OHd z_b>k9-~O8@d{j^!Wp3}gNh-=KFKk}Y zFF-l1f51dgs|0}JFokr2hAaZoH5t5*hVC?|(hcLS%i3yLnF_aj2ZSioNqM=wkoHdk ziA0ORkqdxuQ^j7AM?A6*1(pDlk(~tUZf!cJ=MqavU8Y$=>j=;{FjvP2R?dPp`eYZd zXC}rkor!~8I!Iz}Q^|OMeS9|aC8lwAqND#Lrwe4)3GMT8Es!U#RZ21$W5uymn$YeV z{mpqB*B;{ax(lLoOR|ln^K@;Da%{m@UH4u3>Zt#`)A*BK&=H(Q)xJdJwzJh@Os4a- zI^6q&b({y|P0u9{a#nvgs79cWcne&r)o7^pnV~PQ_9!BOBdt z<=kD>u`sEfMWas?&dRzNUP7<0R`!|AcMhZZzE4YtAN%EB`n!L5MEdcGg7eez@%7WT zhjUrshn0^BeSCe7SKse}{*iC?mhyjEu;mYdmRSo9vy|Uk+iZ}bwi+{&W$0{hKn5(8 z0jqOCDq*}1a5hL4;Mg&GR!co_-7Kj7Hr{~RSbzfMlYHE!*mOM!W$vh*6Bh)HKj#OK z0{vDLtOeg3x!E@=#-$sl`*yniX3TB6<6WJ^fxg5%psI9z*@lfcToL>Li8g?tqiu5Q z6G?gk>aha}qgNUI&H+Y%qOr-KBe~Cvy{_1YZS+s_L-+L`(S2oven z011w5McgK^0(UFOYs?vcY=;;*_5{9j8XQiCFCLG+ueIyx+Zg^K_({SBPO!;_=Jxn5 z+FB$zI^O%W#&4?wM>1Z?jLiDaPZUb3zwN*I&Ue0ZmWd7dL_z6k`S|*2+si zlKj!B`@U#7C*N$F%!+fr)c)p+@13>?6BYap01xOUSD-y_pC8-DHgb~h89^+oO~JcA z=Y+nXs6Iw@KJu`S&w!FVIF4U>-jmjnQ&^adld-`^5wfAzwa-|yYs&5RFdA-D=gah$ zFve#bFPq^eK>LoyCdxDMqRgg2@Yp71f<4D*X-r9i&h)Gv4R#-P6GrhaI~d zT|8Ob7_uq5>q)-5#J)O{YKgRo{NVY<#KHF&OCytIJPjsVe9j+f7{lTC&}Y|vwQh@w zMAxx@>~L)zz53R-fAZ%p84h8@e|Y(UeMs>eDPKkGu20<8|1wP%s2z7(*zdHNu{qNb zuy|w}ySQhVw{Ol0XaP77aoROIF#>yR^Y+Z36FP%Q5cz74n`h)2-WIeRh>sQDc%R6) z0LHM%z^T`u13+>${z*MPlegnZy4|kS2k;m0&IJhpFHr17PuKMC=ShGC)`BJA)dmDh zFa_nq3zO-q&P>|hq#L-syF@<)K(><0KEj_4Qv;t)mh1xUUcm)BJy8~ zcTjUXP@rv9So>B^(QrGtiH2R6C?3?q-@AP#qI;jv?=PCI{f#z>nS3|_xv_T=S8Dx14_e9pU&kOY~e z>Zzy6fGpD&p^Z0+T&K7buu9a2AC4SH$F16yG!H#vP73!Yv94cnyW}MxUJ?i!=zIJt z$-zkbd4#+SU?M-~*+1NG>tfW?lMN%_XcCrycjuCgF;P!fV{X6UrOXC9>qq*+23x|5 zu`DwGh1I>%kq_pFx*yB9J35mUC6=VKCtsh5I=yVURKx(juthBooLYI8GcHn($Mt{m z;}CdK@q2*57Iay!Y~AGw=a< z!Igo@&5hd8r_c*CO%3|{s~1xipsNG!6?!HcAkkq1qJuX%p1&d63D(i9hubqWBtx?q z0PLw_cH(RW?CEce}6HHO~93?U z8OTZh>~LtAjFKrD4K#`w)0pi8&NjLu}prw2#)98NT#-|;Dbwom!~1pMg} zh5nu1)uhwCQa|>$MZ#CD3h}M5p+D@v?)o1fjZ9)itg2Zgo8mv)#AH~kVq3%Nvm4%b z^5Lt+QCRA9GD%?gSSs+z%jlnp+*rLgXucuKR`NZ;Pp~Zj&>=(2kB;hn`6di*CI8~Z zAGp}*d9%LH9q+WdE06x80B_mZq6eKvpv#Yq}KE}_i*P!mnb2*}AOI8uJW zV3q085g**{mBs+wa58Pb>i$E7*~jYPtOzCB2mn_J+iH@0bYL@y`U273FGAn-n2wtn z{`vlhAwFa{E7wOHxhY|9JntEp-4bJ9KQKQN7+PB~UbetXa`dJ9o-Q_)J=kgTC2P&| z#pvS2cNiq&9e^f+*G+`G^{VBRSI{0I-*Rv6Do5xom9jc1#CB{h5H!zHi! zqq7M;hIAnpny73wM(F($CvKOcfTm+Aj4s{!G$bt1=bRH~akyicik8Jj1da{!4ZojB z>eQKtCG9=+ZVTbqat=J_Xpk=&!xE;I=}{cvO`ooRY7Mh8;Z_{)^Q-Ei{^|86&mrbh zQo_It|oOXuwc{0r--Ha#Q`1-Q~-l2S(PJ%gU})9+P(9TW&S^*mJ&fCUmFGsNkK zE+bnRaMVdSC!x-9)jdt91J`H>!ZXWDRuewDjPH*NdSW;r0SPozX8dM;`(suEd$O9t z1l(>TB%`{brQGr?IHThl`0iv6eMno4o!d}}BA^!FHPL+fOHjrw%Gitn1H@!xlVlip zTag?`CP96K)~nZ_FR7tf*R@NU>@Y{fW4=K?{heDOd(UkkY|K`93ktj?h;F|ExIo$J zF+PV@cDN>m$<8;eDrz0@-74zunk~*MqpRfSSz~4&{wP?ij#Vx=(dvTS`q9&|U)5Vc z@esYpH{Ig1RovC{&_|)*+GKeW%-PRtaP|B$JarBmU7nKf@FKH5c%j7aH+KE%R4k89 zweyJtv0JzLBDGt>$(Jtq=OnIZrl-W99Un5CN$m7F6AWy|H9H);m8drPot4y)4|cAk zhhO}+N7p&|X7?GcJEQC?c`LR<(6UF0j(9tX>Lf)vJS5>d(0SdWc>ngpnQX@4=na3v z;F-X-@TfnT-2I&7cP4ZGS6;k$EoVGf{VUFO{ZzTfeW~rl!N3~kWaEY z=aVr#hEWN%B3AB6gYV(!$P=w(V7s#|(JHskCaxv~=j2)c2c5!Jbm!mdj=cJz!xQ=+ zjJb;SbUuE&?|e?ucROsw#O%!c04`wAe*v^}1ozCAB`I}G&etb-0Kq*w zSyG?PX$EG@Gb8QES|brXNye?!3A8zglQSG3oI)He4A?E;mD~g}Txq*OW%J+pR#ar! z$BY<_{^2+0H}+0)H*Kq>?e$Il9Qo>V#J5VA!=txb9zjvz)-QVcc>kW=fY?~c*9s6& z##Gkme78~L16Hyf;RE2=zp=lur>>)3=v+3~ZxnPc3yuHAN?s>{t$XMG>0>p^29ljU z9o4=(rri5{fGRN1JSzpQ0N&4RWxwyNj89VAs!5m1eY*_{)1yIxA0sr+X?{t!={vh8 zfqk(8Vi>yI%S*c@jPAj~NjCc6Lrw@7ZNBZ)s^Zo4a7m31K7_yRs{iPb?Y7CrpT0~g zfl3%>#e|6!@n^eTqc2>in1*QE&m#-Vr(4JA65mbs@mXC*^!9+H<5uA#;Gv0!D0du4 zOrl__9U7gp2RWt_`$c2@s($+x-tuWY(3y@M^_8Ga-s(_*f$e`sLvanGWJ8kJ)4yAun?qS04i4%j&fAm{Yz$v7J(gO0aC+9eX#3#`WM ze`JazxplVTJsk>gI^(U7%{T$PSuuSC)9Y>#(K@$060_Tnj`8u=4<0td-S!z@@{_y= z)N9;yz`F#n5??X^B_8+6VSyF@?Hf(U z)u7A=FhOotvu%1!wpJM)0*r=!5#b-UPsEk3E??0B7q}G6F!GoT=AY?x`tZ}X0Z!hS zJ=t(%Q|!EV7O{0d@@r%px6zW$9$=AAr+C`bzkNu4LXxk}v&#~OJD2GDT*TW#_}=JF zxB5n9{=oW`-3)(awWuM zSTDEqObNlrFbs8OEud*dlX9mpa*p!yVL{1pn;DH6NFo9$Il^9)pgjgEsJmVu zHBi)lKxyb%VVqzepNu=BGwb@*GXQUO7_jbT^8o>cj#`|cE@>yH{}*6*n-Uy^ZqDLp zdcIlGqk~bq&e|YLg=R1kIKAcYbk?VT= zUlK%qAYHe^h;IC(o__S)t!ob-2#u2VC4&p>CK}cNaJMH4IVB}UqFln4^y&x9_r#O| z<}WM4GqSNTu|%e3RvT^gOOn(1@`e>ae$-1b!7cbZH+r{1$>byWXM_9#TQDY}>|u++ z+4SrcIfbq4T{WBDNllWqNzP8_)6)@G!R)mhvgp6bDgx|c6|3J#xCcKC8c#kyW3o@< zfMAIQ^I8t|j?rGixNN-17zr3^oWBgL|5pC-69?>t)+26CvVwobZ8BZ_V=MY$`=%`b z@Lg&Au%52^E*=bt_H+xcbR*}Hx3g%mEjyct#QPF+Sg9e}_>#{ARC~16uj}kiI3%Bb zyIeV}zW@Ac{`7%lUsawGy!(92`02It7jNEu(dzPSh>}x6njzyfa{j zqk&*Ec7}C(H05z_tXqoRzGM)^6CFm)d~?1dvvBGR7r6F*70~o$P;yvR-LrdL2XcZd z0O!HL&IetTM)_JYpB5eW0%P(E40-{zm4TU>{^|&%eoOcG-ofQ*)5i333A3Q~B$eZ- zcR)$cY67rdyL#=Gs^YZ;`mob}<)yI$o5sL&%X_%@b0CcO_CU_D#b3S=9Ll zgk-vB*t3$;#;*COl}d_SRvGz?=PR<}zf~T25_tirt@_c5wm@_)JQg(dvx?CdAAi+k zE5>x*r#ilt4B3+I%51fkSVb3azNN$3yEg8#ezAVeJ=O6^$8?}0S?%?0b!r@EA?Y(#4RwEoVwb}_3_1j zt@_0eW|sh~gh3@W#&7>0Lw)EsjCYPUpC4OBHy-3kXM|~_%hPX{-*>IdEok zSU*;LRmV@&e^P)F!wW%UCZz^zzwf=BV_ZRc_KMbqFOUX|vyx)x1CA-|{MroOEk!z7 zRqZKhq%CLxWJ~(^m=(4foMhf1J1e5I7f|qcfbrra4@rj6t2{}vb07TPzOBAO27%(Z zC#KZ_qs5h5k!R7OhdP17bzY9VjiuhX6N(LW|V zzhc;BHrr%Sy}hj1jwXfWw5`1J-`J8ln|K@Twh8}7JhCv=_=^3n;g0S4vf~%6=C-1) z?`*;56>{T$W9v*7(c#-{*w76mLVCzdbb_j#wgcD&2o=f1v= zU#dUa+)Y3Dcr$ZU?(6&fffmU^{JL27&p;e=6~P1CyIm;>9&;TKZkrvv19PmRM2W^5;T1SCu%Dp8!3;<>%3X=8~_ zud@%+xI6_Y2sLs*y!Tvy*~(&Io4gUhN+Ec~$R&ja?>06aObB!aGJyziHnhpZ`x4hZ z+ZvDm=peWNIk!euJZwZRNqzQ>gpF#X%+BK-K#%O_Hh4311g$_uzn{A;GpO%^6t7BG zv#X}9O3U_VOxFv5^t&*?MoTmsc~(h#n9}v}K~fl8*(yk2EO?fJ8e0O@7Oy>->zssJ zadq74IhzY)`rLBRJGalSyhImuum_h`g%a%ceX>1_oChHhnTv0y9sgE4Kidmc?uRK` z-4L$sONgX^r;0zrbP#g~*{ z^MLUziyL);b{n2%w1>|Db_mK+7t{Y&`;nUXpF@A6AhTDv{lt4J4x%TjFUg6TiInVWx*6L!FLCi zq;2M1QmFPk-9@|GQprxTMyGR|`~u@7sagHljB38qFW+oclijxOQ%hseV4r(6=~jn* zb_-fP`s9$n;RV>OR7if3H41QZZdJBo!7uyq6Fb~1T)J8H+>?qif_N|RCX2FLxcF_t z>zclZz#6+B-p5<|Y$7o*btXw{$El4bJTGUK!OIwDuk_iq2K zUag2*crWw<4b+RUmlJR@7ta4Z5h zP?sd!^7OGWi}GN98e3qhi!wI zH$n|x`{cq=>1TAvu)?qWEm2*o1$K}Cx35#XTT&zzB$8aZkxYCnF+}S;Y{*yXqpY1_ z;%l6qQ2e2)?umWG0OcXWx9;_vO_MOdZ-ft+x zhk?iE(j%i?cBw6)?VGb7{a|Z!J3qc2c`WYl+OKQpcl~|5+n*k_t=uBq*FVbf9(*(S z()EHQ12L!%ZMXNcvs{pZfUN*BC4u37O7=xF*3257Eqx^w{caa9oH5E{ay-}SH_IIJ z9&k%a)gSOCPv^Tm=7rARL>xb3H=}jJq4%uK*$coqJU;c47|Bc5tx5vIy&Ale3UC<9 z4rf(%z|SI^wW=Ra9w18n0rnxt<3Z=Gnhcs6Cpb(3`f5M7ug;ahYHeg@eqpb6;0tI= z&ZC_oN`%gXm}3`JCwPH657rLcR@j?eH>Q9rfbg?#lA;A%b;(53GoFA)9@h%rGvIJh zN2{Yl8y@h}dL}ydw>p~)v>>O^iGAv@&Hm|fr&tDcepXTSBU9J+dshO@1VJh?EkRmA zH4eXFWL%Ow-p4Muo{}`Rc744#p2V0esYpz)F)4M)pIe#Qvx_!f^vB05KlaJkR38Zt zo+PJj5yWo$nH|ydV1=FV*4KnRG2#Iq)1N4vnNV1HO74jFd5A%8SYNU#`JHRHJV}j> ztxVO!F-+3Scy-g)v3?KxWpR__#3}ubl&s!}bXD%8zl-^=GXyIQnSM^M@2Wp>t^P+Y zv%yEbA3gcyhNt!S`7O-jF-Zx_f$Mbjq%bEk00-^K;AR9@rxV9IqjT7qQJqUf%4V?w zcCTA>eO7D7pr<|O#@iTy#{sj~l49K9nS=-pCt-TfTSAxq6cQVQ*?Zum7+( z+Q2Ayrb%=F;S@lNQ>zXuvU`Pew?W`^QZBy>HRsP#v5D2I zm96AjPvN-~{uT0O6Tt|jXaG!yQCa>*+Ij!^X+X{D%s zGe|rXc2x(2I&T>sJ$;;?Vnx|)Z@d);vI84=H`CYkUS0zdx@+TNuPs=53-~l4zaZW3 zoJJ3r=pz8nZJOJyb33=+5v)zwOQMZ+1z@vT=er$?-&TT`$Yf`i`}LKrWNRZkd^<7^ z0Ipo)Bu{ld2eiqu+qH8oIOwiOB0_1r(CfpWZtu>f`DtS%y5@c5C zND}--ljMZYR>UYz;EvhtoF7aqSfiz{kJ@3#`4YMQ$DjO6aucOD-s%6k<8HlgpZoiM zox_ta+|oyxRk~&>{-Za4-ID~}1uJP*I^0P}(qk{}d$F4Seb_|VBob&~V5{x8NS` zj_psvwwi7bJF#gA&4)&+&nr3pqw4dJrs~Np#*UmFqw66DU+y8>F&ZMi%6)zxPwkiM z@4D|h()u@2K4xOn^+WZ@cM{-MN}Suc z?NM0SGyvd%Zvc#px2u;Zk)&oaTd^8LhQqhSFImwgUh5iPvpPLDQ`Vd90RFa>@%L)U zADe_A_8eV-=T?htE3*NbteFijHVX!9CBY=^dp=~L^9jx~!`~b5e0gpI5AEapMsx!7 z#y-ye1yTGw?8#hvrD7{~0bzyEN5FZNM4)UESRFaDRf1~wD#liGwV70SeDXAI<6U1k zx)HEm>#KL4WD{V11?U7+c30O&@psO4&QFY-K3X5oYv|t+hyH!p_hDsSU*~YL1YBSK zA+KW!U3M`NzvFA?(?1MYRqh&&xf;gV4+bw^R(bjuN50xk7-vF0bpnokaDpNJ7mIuC zsWI?JMPEGDzW+1`)~l-?5)?kTV-m)O@!FuUJ<|{E_=yfTvo9Z02vASS-~o3l8Q{tI1I?wpWU(dc>W@}t zc4Kz?)=Q-eT88Xnc0Cvsu*YBw?wlj+TX525k!r}XS;o6?4Ft3$9!9SmDeEVh_Lci! zFOn;R`srG@pV{7fKnKXl63u%R;&xS-YmtZ>**4I2)a(b4Zt-e@l!UV(S^YN}@HzRd}Q)IBCc%m;`;MdyL*7ClKp9QYj;*mjAbnM@z)2x zP+X@oNhUo$^GBlPi`mC-%*?1gD9fL7eSG(B}j1SN7pg z<1vRXyf)0rXgcBlxKC}oac4p}tIx#G>?PQ5^mpLA5zzHr5^H80n#fuO-Pqkna(w;S zXRT;I+pj)(vgv)fO=24?Nmd6ly`MTirTDANXmXitw+9)c7y5Ky&zCdQ#4tH8+2dQy zXP^5|l4c&te*AqLsMn8Jo~ZoE5yz^BnGPQ_z3ZMF&kAD+M6Hr&f_|qdx>==}L;#;a zsV$>z4+#jaEN>iJ?iaipZ1$N03k0{8oVwf647a406$uFJo8bZgr*izb3yjJVhI+)W z0z^};oG};Y&;j_ekn?+%HiSzyn~@{_=f&YOPZ+;Mdd<8D(}C<(Z#W2^1robV4zpJs z`!`wZ1+sU=S%sM>&MfDaMpAFkCVFU|yZ?FTge7M7qUKiP~uiNao*qVFQ0@p@Q+-7__d3G5AO z@ct&*JqZ{b3F<5u({X!wRo-^cWr>kYefYqbV?+M20=$yabSj7(>n{Kn3|C?~dr4mU zbxWNuS_zT$etL?&$zVrGxYe{6p)K0+?MSRV`isZQhl^F$tdCzX zH^zRf2Q_yB9QN0n1o@y?TWlV~tVPn{v)$gW7jCEE!`FL-q;tG(|43*6SwN=0!+c%o z2Fm1RlgXcNw)dXAOPn2VxnS?QL&?GsK3`0apw1r4UH9=(k1y3B_8Tcr2Y=_0)>!}m zKmbWZK~(BIT8|`W^pwDJLDYzQ_GV}R85ptz&@a)fw-KpcA9i0bUdd{P$nii83}$NQ z47Zg)b!aUq-U%$446fe+<>eUleFokDK0pMD`-uJ|F{8&vL5E7l4WRk{(4a$3jmK`M zr#CrH02vFwKuZR}Y0qSUOU@;V8%H7_c1tw%n~kE&7I;;$WOY`NSKSd$(`YZ5B_{x} zjd8}i?b!;W>*-OYdQ<>$Gj-RJI?ovgv|BCHWp*lwOA1}n2T!)W{XIF^qIOi!uwt50 zdJPhMd%v%Cl7w;SFDVpYo8%fLX$m3(-L_Z(Odqmk!=uNMi41qb;n&E`FY7aTB3R)o zw{+UA7*B$2GVQ}R_@Tvq+=A4>+J^7PFkK(GBM*ONh^=1G8FsX#*j9|gJRs-$&Xr?( z_P(x@3ttoae2`D{cdO2)OFZ~gtfuruy%E0v;jH@#*D{Gk3Y=RC3hoz>YvqvbQRF0`+O1j2GByMFueH1^ z9Qa_$;{@%%DL^y{wk&&m+w}>693w$xQ2Sw$&VJ8xl=X>!!#sUDdr6(dpDde&bGRpz zN2mJbM4#PC42&l+02csq*mULius( zUIIq+*lznm?AS+}Z2`8U?E0Zz=hbz-Ph;`AR|h94G`J#tqV-rx9wlcoD8}I{xFj+D zfUSE3J?_AqKJoUui*=i{%nVZFIdVlfVZZG!< zTp5?ro1Jpl1L!iq-s=G*p0B)Vc5vTbw~8^5=Z9`deSmp0?VNU!8i$(|jt>P#BPVIR z%=+8AK=ACR00UWGwmBMt0&Fwj5~ajy-{q1eIh1pCW^O>_$R)oTZUX?DTLibn%9&+L z@CD`_yzG&vbFOy4Wj6t&UfH`*6gmG+LQTdcxC!D`^E?FuV9D+zj-&Ij!^J0}L1_HY zwmR7#7wDWUtBc05Uv@e%((=DyWJ&g$XjBY801#$+eHgRe88MAt-vZm0OKP5*WT_Kh!)rqijgAisfvYbb!)Nwq2j}>((R|Q~ZZQ}I$0cC$RA7KEo>1>j z!^06aX}ogmo|LoOv4=^<>mq!5ubTIeWwITto&SOU^d}Q69*#5rkT3?ipYm08SM#S2 zztN|nH#5}k^PBOxZpYIq;4Tu!z1ov3}-{_O4ZYlh7^oG-@j zSz};mjN{qcIf1a3IqP_wY17t9BM+tJRv_aPsK|#cA9XrVb;`M%BAMQ^x4u!=e zP#>mekKF=9AFZR~#YqCGKgn(Mj+S6BF$B&7SnVg#)S)6Fdt%rp_RsSPojo;mEr>q* z#^(pz?RGEvqQ$b})Z1rBH@X#ii?q6LyjprwscGpv1G380| z>;5ONEjW_RM7)O!e9sG!e*2=BBR?$kU4lzCawrF#U1d}Kza-P?q@(W<{u~Xx>zx14 z@`DoF&EQi+v?=%TTy&Je5r#1jy0#aQNFyy-=xdFWYK}u2sg7`1s`Ev%2QVxDwf2%Hry=U8dJhk%axfO_p z+4kOB09@t1%?(}yGo8@=;1PI*eDoEBX3mF)1GNn#>7zeg0H{5W7r*VNe#h(nOwe;L z^a@Uo#ou@x0ndUCd?JczDLIsXwxxz^L^vUNhb28abM0px{?viVT3K~VpYMe$5VAQ>?-7B>(|kI z=k=E^>2vfmu~Ze&|L0e}^F=M?tf=%am9$(Z*(07T<92y}z@UWuBK;-Cb0>0ETmHPXXRIWCuthew6uV1m2pw_$~m;9`8Wj{zu?Bw|4XT9c$sHgp$J~jI*?s%&wPP zF%n@5ObIX3Tj6BAO$41vKy1%`oI1@8va(eT3|-q2i`l;bp40N6C$L*ZNJ85PtrxZ@vE4 z|J0xR$@WhYAfVSEn4IgsMAO+_?v`DjF7>J(eQKQPo^*Psy9l8Dkl+BUzNbzH1Qo%2 zU9Af3W1l16>2?29w+Uj*j|@i#=SQw32NNB_l~aGoG9f0)6A3Q<>wL+m^%k-EB{@9R zJ<<7)JGMLA@cXC_x>q?OktM8LdOi|-pfF6K{k>oR^|$})|NK|};fFV04BW$GXJ<0K zaMh$>l?4wbUVfC+zOM|sClnw3;4Y@sq0b4Q`NPWH2hP~6wn+`1j01!n z{GO_$2rug+2}*FeR`UN4#ywFLFE_S#SJW!>PM~+wJu>~ zQ3=bY=$#Z~c4W@1SDVet5|oeG0te2!S1O~OBNV`N+px#WUGKpGuT{*Liq(_ZZs$P7 zWGiR0-|4v32PiZHXFVsQCq5D~Ijjz2dSnHjYOU_3OL8M_Nq*R%WIs_dZU)TpZbARW z-}?u@DXAS!agL00fw(|x)XFN(DNd)HAbPmcr?D$XoM@culTe*Z2j>xmbSG>*HwK&3IZHQX-ai~spk;Ixr^Ou#200VbY!>$iP5u!ha6 zNLH`Bs9Za2dXDM(WDQ$ zONu2jI^!Rc$>N&qUw8QkEx#%9qcjaLxH#o|Uwrp$gfeLT=5+Zdxm=UuzBM$1@xc;cbnjcv zON6r$tN-d7OAb#J&o6Z+AP4o$?GLh&dnSn$exqIGE#v;=i&Y?bDyPa# zV~vNN25l?HkE^{-d3Tjdk;DNoMYHvHmkG2lB{CEe=Jua8YB zKc0TO{LPoIx)uFVC{CL1?`S4)pPf?4{;+9T#{~n2H(PLrRoeD6I+t{;vbLvC>ojDz zJ`%$m8=|(_Dj?46A2F88KxV>w7TW`ZK;(B5yLVhLJ?~dKb_*P>y!zmD8>lb3UA%uo z0q4lCcrE1f&%TjNXO`kz|H!m+z2Z+cVB|lJRVVSeDPbt zSN`D}cN3bAs7@NA1S0+)E-#t zh))kJQt67RFdg2owx`VJ!Kz|pbkmO<_oU4~^JQcvNBz$>Om`b$eiP0W1F+4967Kd^ zBW#<=YT&*lmDut0;BV^pV=)n5vA(#BS6Vl$vDrnOoP5w(tI4k@)8Z@Ieqi;Fn%JH) zczXUZ@#hkb0N+eDfTrB6e2jcHm`|{IErd~w(Z`$8S7eUvhj$2N5hj_D&PF?cD)$QP zRmNLTT+VoG%Sl%o$9O1lf)W638UgGT8RKC?HlW^Zl9N4=$scI8nHurC9jy=cJkYvk zSg;o0$ALY?>jOvwNB!6a=Yb0{A)(4&{9AwX*8#RzJE|`&Nj_&kn{eAs6hk zb?`lX;X7Mgx}gPN%R!zV8PO2c&@r$-r zmY&qw*Sq}U>1tAs4*y>d+-{+tiguqrZF8O!Ke+J5U7im9s=AN+xW2y|LwH42cYp20 z%G2c-eoAMU8!Uo!MyjsIfiobn_w<414;|R>bF^*wvsNm|?wX6&kwZj;*4YjO`q^~sI&^daDzw_iNShVfeBckB<#;fL+kriaNV{UUnfbK>W( zTLl<9`*Qlz@g$7J*9JxRvJpL(#Jd)UtDiEGH=`Zi_VvVzzV~0@n16~DW5{R^osY?Q zmva|ok=a&_Bv+C6{F>diU+Qo1Ko0Urcn5Pgg&jfQ{yuFu(0Hu*_*%a6=JqZH_rhY1TLLVTuQdA!;DLmwX41ybPdeOQ?UbPh5Jm>Dj&q=d zRX_Vm-}46)GiaUH_XI1USi($ny<{r58sq;c;JkAST#r@{3s#Ve9v)_L%k}|xVh5JS zEP+N?{mKIEoZkT3s-#Bx*{@TKrRvko;{iuyG`3Ht{YseIkYyL&>b8GIysoVtCNoO_ zCmI#E)=Sdt*B3`Jkd6&iKiJu$j2g2}E9vjnj}Ov2-SwT`Oy1|{j8<}}%g;xT#{e{D z1rw!?`py=2ojx`1AhmYBIHe)wF=*w1aAz_$5V0U(&o@dja3~Z&$XN{Ba>F;`icd^@b zzC^F?ll_c}?oQVK#^2Cd$A{$TT*r?49p>Uqa@$0l4e72}NZj~9i%x9zb(f>@k4E)J z<6bY0m*5y0zz6b~|C!Q|0BrWAp_qkW~Z~Z@NYBqT)89xga_M zI1`Poq_YGYEr43^Tr?7+cc_5u&>RqILl0Oaz4O>QxU?#gi~#`%wn~csoJ1d}=m-QK z+Fv-cRCVb#x*ZSLRy8_|$dS8sxoiR)=r1UeK~Oqh(4kN5xZPkv-2mvtp2=%<@~(Um-Vx$m8?H| z!*)QuB+wW-oWC;cqM^|q4Fr#Z<8|nnpzuk<#_6kmwhKG_zL#qoddoz1WZ=L)7Tqb0 z&d8?+TWzxHxTk`%AOVss*(Lt%0J<#*))<<@z6z*z@?~h&Sar#bPmhB|~G>DP)b>(YI@H@FM;B z({BN>v%3ixN8?8iwiW1mV_oxy^6RldAnOe6Tq<<9S(jnR&>cC;MjAM4Gbj<+H{}J$+{J= zu?a!%$*yBQ9F3XRD@xIQf(ffoZk7hE2pu=zsBkbJ(P6iaY|T%Pw$?HIql*t>r!5(( zSpSYU?uI8U`l$2H*&J*rN_0rKZHsix5u1>jxHhRb4*uBM3URBjM$%iMJ4)!^6M!bN zvGKjYfkSv@LpJeSA&WyqzPb?cH(XNpYbyjO*0aEuN{-_^Af$f=*wS7C3V;U;XMpBo z3=y-=5qzX)CBR7>nRgag=$&#lDa{5e#tjtF>WHpY%#qOlCBsy)6FrD-#=mGR`IC6#o&w0w~I-vRFa0Ni{Mnb2#Z21IX&D_!{K#abf6#KolqgS; zP|i75E~(a&D&w2|$-BuC=5KFn7r%mV!wMyGbNg@e(k1KCWv!#lUkcKR6EcmIwo zRcyc>_C<@0rf1DZhNJ2FZRBBpUH_I2PbBy)(RmoWnS&J+fkpYtWHL4*owySGIX+;j zKb0wJY+s?c;~jJ(*9_Xnto>S$XG8|(?9O)E;CC~PJN7ez$G$O}0JlT5!dd%=%w5ykDgmKm^7Ww0Dq9&-j|rV8X1% z7F>O1MD&bHhdc0Vqcp%vidKCMt(+uC2fU}ts*^E$?0*qLs{YLD2OjzjkjcD#9F5MS zy-A>Jpm*E1z)d)b?yO=kP>uxre$K2)>48y2U>PSN^;xi`E4#DT9&$WPhO|HBezk+l zdsCjD*dqB%J@ncJez%G>luWMBO$d|Wo-9Y->IA+#aa|ej`t~s9tZ3-mn9GNf2>V)% z!HFb%ul|^a+#8Un=b^^g1~`Fz0u~<0PxgBflK|L<{`1deo;d{J%KlG~#=xt;HAt4j zkB0HS4ScN}6LjN7<7yiQtK|=RZ($JqFU2KV^kB;?nIk0m-X54gFT2e5v){2XUq-=@ z?Tv2|g-JN!?{wf@ILUaOi!(SPNBT3Y9@*mPe{)^+*Yaa-`dTPGAwu!<)N$6EgDH_( z2P~Go?Nele08l->>Uvy%2$@k=&nX#;N%@~)oZqwG&2~Y3qoAXwvQ{)(VZ?)xw-1%k zml!hg*)zLri&@A4@Po4>)B%57F5BC40W-IhXfH{U=%{**(U?=CsgG4Gz}eKU>j4>( z2hRmjw(uS8(+*f`zxA-U0w~7qM|yN52Ycu&XqKR~0HO|!pJfBqNpOcLd3?5_YV5>c zVyt`D0`l$tXrXI-j_hb{@=!UY*|yVkUhvf2Y>X~x-)B?7Gte(QtE}9~<7qGv*VE;# zbZ>)JCn0*RX1df#QaikB9DTR;w5g=GJtX+J6EsU1^Ju>_36giXF|OizJ{a#3&9zcP z*xw?<;jCQQwr~BWBU~H9Vf=8&k$N)dv)>>fTRvQJ>$v@;uxT4aorFdQiNtEvf7LeM z_H(PYSlFjj(AkRJMdQai8EzfPM(^3AACG%;2P=kcK@n}fnB2)QI!=E-(`^)S8IL(E-P5ifh{S|9yZ9wxSP`E~rf?%RGtq%LXF>MP2b z^;lDvlT^+M!(|{y5sUiWZZKvkZXQ?=UPN=^nc)M2gwr*k0n1yz!QS!Ak~LHSbNfSn5q$*f_x{6m%W(x3 zJ&AJPs%>m_C$Jkw(c~JKoirJN;l=Ft26<@o3wx_3a zet3Y>^*OQ&@>wXm-RIuj!cp<3oLmU_@!Lh%O84oVo#)*e(Nbg=-^cL5R&!8G|JxfL1I>l?qVHl~xnzqRNVczV>Y@pK`jU{LldN=^6e z^;VK>Qopj{m4rJMVEYr%!vwpXU`UwJAwvt=E~C#VbdAp5v9o_ju5muy{oG3Ix}?jJ zcCxU+_(ub+4W;As1lu}QX|nN=w8iHwyQH@6)mg3W8++r(w-uEwggWJgB%n{SW|IZW zR(-Wg_?21e((7y!aA^T&QlfJ|_R2!t_b29!F&WGb5>2|rOWgxK2_l*%zEkM1kVJe1 zmN!WVWG0QqnUG`Te3kr=f6{Z?E{)y$TCws%y5LsGxW5+LHBu2u9?q1MM{YDEEoHK3 z&o0OQt3E%Nziw7}lFo-ERh5ma$K8K4Or-0Fs|5E*bMmhayKzeX3Je?3q*# zpN+Wo=oTv~l<4hFhTfg?sjnB@@wSRzywl6Lia=)6cBH4uGZzDr1&p45@Jmq4OQDe)}_E6!z)dQgSO9D05 z?_H13(FS(=K>%=OXHGxlH)i!$0ux*T>D)S;fLq`6XDecPrQy+*bct8Clz?_F5Tkj| zv{tS7O7L_XZT3hjeU5HN9^>}Kh`P12z3P=#x#zV78};oo>CTrR zk|ZA-BcBOpLZsJy>qRbh_jJ>wIo~DFwlySq`gHUP(O5^0EtkY8r0|c`V&k{+r$hW> zzqWg#n@t*f0#}j`m+9`Q?Gpc#Y|Qw^x>NqA!p>S<&s+(D&vd(V-|HLcK}g-%o(=er zPuPz9Gsmc0_KfHJ*HHG~{wzHX%k(^c*^0GVeU6PLQ3Nl-WLILs7VZ?tYBfDyh)?vB zX|I-u$@qB4#y;myXwg>eN|p`I4rEs=DNYYA>ASz!tcAXm(y#s|-mkmdw)k4M948)tYoC2)oI4CI2h?}30dT%VXal^d0hxibv2e2AVbiBK z@y!yK#V3RD21o=zy1#^Awv9!#Iv-;vx3Zb$s^79Y=gw`$178mEyLj82j-Iv?&5`Nq zUWp3yLuNe~V#{*fw|a?|{hhNnapbs@I@oWIw?0+?D*SKnL9e;lO6bl&D|Q$hKyN10lvg)^}whRU2t^N#g7BdbzG3!Fh9knJsazHYL>i> zi5`ASESmGvCcQekP2mOds~1q4ur69ip?RJ{AGxcVcuTOIZ&e@t(Ij@_ooxhrf9;Q6 z^3cUg;gU06cy7f^=Gtb9WN~@+$ExdmPY7!tU3fDIqM3{~{5LT$UJoaZK321m{ISiB z`A(VNvp=648yrlKMRMD!hYZoaZM)6>jBrox!xet@VNsa317B{&mDXTw29Ma%39Q_+0< z%_I$9U%~flEkHEkqq;q@K(l#(fu}DcF*1jClGX!y$J+n`Ro#Fgvm1~B0dRjcqyPY{ zZAfo5as`x1bR5>+k#-^E%zlFB08~(Jb;Dtm?Ykx502Vu-Q^u!rGt^`q2-h^?fFODC z6Gs8*j%Lkf>y4vAat%QC#}KXf6HK5J0v1SCl)G(_Y@%bVU_sCKb-$25rhc+rbO3w_ zCLN8HV9!KyY=lpPqjk-S$QD4rFAqt<)Mt&J(m3eS9a&nP`lkf7x@6 z8RyAHzLjL!zGFPmwnyc`koUK&&Lq^Pk-DCVgWmRr&)tAmdGtf+CU`J?Ph@*R`O=kH z=Qnik?(rvfj4#{rxrsWW2_#`ilH1#=kIvX_zj!)b$!|o&&>4r*CIct&(rmAJ6WA=S z{?I)u+%wT^1!zqC*&$0V=@`fU^R;nd{VZH2{J~*%l6ZI9nizDy^<_b^M;6KO#*EeU zv0*;fmh z`OJ_4YXj?az;JFAQU|~}nKLl(5J1T(RXB-8<9AlK0#HJc$kyc$esCnf9A`APe}F>P z0c=z1Ny3M8JoJh73_I2VqkvHEm4j7+VkUf1;`096o{(K2S|S<26Lb?ye>Pn-3B2qS zvnAj$GkqLeNT~jT$ZR?LHRGd~@MqSJuAnjNN-EV)mPyVgM?Siqm7K&_P*3XQ$j1V1 zp{7%$FO6r$7hCSn}nk8fO~~`H6_zD{`zE9X_F#6Msz?O}H?`Q|9xh z#|zx9^?eX>G*2C0?Y42fE}h5(U$vcbFlJR}sB(~VUtRRIru+ThOrDifj4yj^kC9%7 z!~)-~9bduGCO(rA{(5x>LD&0_DI9DZd(B_b)mJP@ko<5ShQy;fEAKm*QXXF2axWpq z0p0sfW6+7lR;U@<#KFceK})i^-M?2+vzay+YOokw|6voIYlX@rCwmXa5*ECP>vQ|h zG0bh^&gS)XzFZM~$o;yD)cUm+PJ}Ru3J*yx{Q_VBQuq1<5vKmqrp#T~Y>Znvfj;aM zc=84;+DzRlA%8E90s?1%hQ9zJ5O>=YLQWl|z=HtbN&V5vNt|HXyllB;Ht_5^*?Prc z38JxzzN2$|b3hnPt0@lOew^{u?Y5@TWbwPQWVPyCpzEPqeD-1_xm+gdR!apK+bzLr zYkW=910hN1eSd~^i46_5?D)R6Ll^MrZJiPCOWtFf>moS?$XFXhXF_6A+w=W;TfR$v z`mqC@yy^ek1VLoM>4A`sq|ZJQA$@ZgIZyHa*tODf^oiwerS|7!@d)Jh8f#1Xt}k8c zxWH_W)UVu~6=TfdK;HsKva(;kU<9zr9vI~}353t~|2GtnZ1phl)$dJXY3+_dUbm8< zlX2vK70KlvG}_8GAP7Uga%C@J+rvQu*2Su;?_p{%Q?hwK|M? ze_fX^)YYz>f#*nwrg;o58|^_w zG9_|io#czpZNsN>Z5ybuFX}g1(O@57GiEF7qLF_-YZ34 z(zp7rq0sVcEyvKAKS0UY3$zTZm^ozWIWR+>zoE}D6$%eP7pNQhm|*JM^}rD+Gt^dt zX1>atnsau=(a{>f)_Q)tDq#-)=+h|D<;!+p{DyxU$n$)`qcT z`n!FKtKna=KmG69s*S17^ODov8H>*3ZH(dc(#MQWzx^qzQPd$p(~rN||=7f_bk`gkNG>_ z?xk=2DR+i;j92>O1gFC?f93D3ptI-hO!UjH+UWsT+y4TN{>|TH3Ipi7X6sEZ_@$$S z{r}N+Cq4IV+kMx4Ze^!XObQ$z!6-rqDH2k8Y4bM8J3#blAf=H8LUa%yQ6rF(*ohO{ zN$lk2-gE9bd_TXj*7H9Xn^I5ae)e8#%{k_%$C$-hdq4E}k?c^^e>fvLy_~(^-+-2X z-+*|7)Z^L_Dn|Hr$9qEI;skyCe3WpWz4LW^Z6bkIdJkyZEgg^a{VMiH-%mP;+UJ%T z6vq=H=Z}3470$s@Fa_M5xHj$=5Ca_(oM48dj480{&iAkL;&hwFIg}AtV!9x-M3Fea zapFrlb8c9tShJlBUBQ~ca>3KAMA>M9&)#SApz61gL@?nYr{@sl11~{yICy-4enyXf z0rSeb8N`colmnZW@GE`rdi<__dNU&SfN_cVc)leVeI}a2j??326rtg#@i1d{&N)4x zY&JaS59D<`BjlaqJ>1P+*n`V02-z(}o;iX?@(E>xPv5Cx`Vf%Vr5lAHy@J1o1x9V1#-OZCKMlgd3H<=0W8VA4_}jENvWfLyIWX4ROa{O4zIz1 zp3LYaB5E{{Z0|H^GMzpphcP#Llht*!?PXmOGaxkkqqq8PUltDjDCE!_io>N3*>6BS zek~c|bbyWC{fWp`RAp5z>E4ta@$vgcT2pF>bvM&UFw1joIASzyv% zXgHk0Q8q$Ur(w#DG{1Zu=?8ubUe*Zjl2rK-{okY48ET_)l3)Bgm!ZAT78a>`y&4v5cGUJ zl1bt8F94I zoi1@b_%Q$z{^u(NL5hyQx}Z;=>P9Zk*zS=LKbH{Mx8!Kn8E<@wtwuHlg4=7#3`h3) z*fJ2XRt4y!9|KuuAxTI4ih>>`!SmuG%VzH5F?y217$&fpuT?|5cFv#p3D&WIFKzab zr>_?me@jp^yi4x!IvfEIn=;|hYyQbs;mp_TJ3oZKqQ977)6ER)M<)I;T|CQe@@m35 z{g1c$>JQ)bH3>i?|KZyo_$Aky>5;>%moCkkm;CS=pZAk^=I4x&5(1i%Qm00PVy+MUP5M)1z(*eqYakR86R$#Gwb2h%&J z;mADZ5<83PrcK`xkJ(h$oX7Kjdu$~x8`qN)dUWX4{!z2g$AQN7bQ8kTD6XCV1Nt-Wh=NrY7aWf722*>mjjoCrR=&;3>{sJMs1lW!A zp?u^U=wmyS6wbcopGGBI^m~_2T{I;j1#bW9ZGl#Of45wIZ29z9puIN<;1BHz`!8_E zlO&iPl52O)<6YSXc?@i3gde&J|2DwquMCr(mZ<3QY|Kx=#hgy#nct?I$pp_k;PAcS zl_(y%gc*+T@c`}9fBnh){)@XW{+zV>^1EK}-1A|@UVgBo63#83DJq(qwQ0*gJp4Tx z9Yb>MuMCd*l09AwkaR0v!*nHj@NEXmX7#}d8MmCaY75eh1#vYDQ&0AL;{8SS8OIya zKLgW)!|de(_lLjo^KaX9PR8@ijFvcLcnwPUk84u*H4{N0a5ieBfZMmJjpB@)9Tg+! z86FNB&(+s&zEnarL*l5MVH>PTzaU)PWGTth$)iIrN8>@ zbF_}wP}J|rgYdl^`x|Q3d^80tj}G?fcY3<2F&gw>;0f&2>13{o{|qZ~mGhA!ipB|Z zZTg?g^_jr0Y&t)%&*}FAY^ zyz^vV!pfics=?;#Z~H0y244x`9QAaugav^aHoru&vaOKm>guMG$5%@;BVx58Y4c~v z*1q*zsQ&KUGM7hvCRN@a9Ot&)-65%Lta zN*`NqJ8ou^BJ2|wIk%QihZ4bzxa1bLaBuVx(AvS4#J*`NzeH0#$GRjNJcq~u)y=Wc z^3JHQ!=n$e#N&H(+V|U433ASOeI(blvS>3?MWAsg&M&DlCLYb~mX+wuJ7Ca=!%WT=fS@szI3#`=XCe_2|NAezw(=Z`ZxZ~ zfBV;3Umnuh@xGZg*4RCU_==lSRCCXF1!v|K|HPZzk6+&YbZy+Az?bm&k-?Qbs-eEw zvA%T4&+8+hPSMU!#}9!e)%A~#+0xqa8hoEql^-b$eWlHOiCRJqb_0D!d&j$p6yMmn z8KYF#D?Vj6ylQ>@*7IrV=JS(x0&m8L&SKUq`Km|#vpyaTd=|RHV~Mmoo|KsNB)j)9 z4uL+GWTb@VFgFSwE9$n{D=~%6CN_IXFdGG)Sr6MWG=;JVZUPnRl zuIab$6>`g_cWS?<(L-o}*(?wjIrwCFN83<+(?6c^43&Ws1EcK}GZ|~6wczVd!V9vd zXTCpBPX)U#zn#q|RVh>20CxG2rxBumz|IvCB7M*CtPiI=elVjh zo!-fT`h0MV)^WME!3O{G@iyJQYIMhP?L%?Ay7=Qs3pWEFPcL3IVDUK|^fX9(veorl z0>fi}??C%OgFG*S!?Nq|zOoekt$*=*zw_Jw(jZRX!;ThRKQbFI`AC*;@_GqyF7x=! zW?uE#va+M4q`S}tOsf&7zAg#6-ab`6WCbI3-t84)fV1y4zw8|P?QxHfOS<#bfEQ-L za7J~z;Y2TdKlnEe=-^f&YQGyD-VL7e}NPB&djiYIFenBC9|U2tx+Z8jM_Dkrb_ z^8D%*4e?s?{_Gm zmV|SZP;B{CoyUk~^bEPcYGkX5kloOuFslGd*gS4Z+_d>|M9#6Lg3%+xo|Bxi z@u~zeN5bF7$nwmTZhym+{gw@)w$T}NdjId^YM*rJ~6o?#i zPA^a`MJgXUua7%jV|gu9l`YaMTdXg^=!LGI{47ym4z1moh`sGal27tKk%sYRu)weK zX2`x&pD$FmKr*<&k*#L8C%`9Px+M1=I0X~!g^P$X=v5ch@o2e3$*+Dcu+nw1j6MSp zCmfRC9fOym+Eg{;8oEBVyhMo1lFRDM%(8hs_HZ*CT}_{Abq@D0zD_UcU8gsh`qqd< zM+>)Y^TqGTMAvQxX}`o2Tz0fy#;*8hiVT)1&W=CGu;R!o_i11F!SUKI-uc=O9vi~T z3~b_Yl_e)A>4z@U!){EWJ9<&JuU!k$0rk$e!?{TWTWmkC)@R8k@jfB8CF#0-;s;(n zwS3zi7e()xm>h(1`PMz3b0c7K&arrhhf?P_Rc$I;osCO@vvQhx0-+0;CS`)5Mk5%v znG?Jn^y$63j2#bCP%|!-r}SPD!@m9nJ_By~+=v4nPmJd0cL*Sm&M`9*9t&U&eol%o zS?{YXZvvbnXnG4gQ$~p*1|`pXcIfzzgO8-PF7f+1l|+UoGX(rCxI39Mah&*>BZFy# z{V`q!ck|kbNbdEa!~O!;Z-E838!eL8g1Uy zNv-5Fd5ffR+@WT7>fWRz06717IED`Lhx4_h5ZO-fu`Gh<4KqU2#&m{8hp;C{N=V;;DTrL>W}9oa>;?*?A1#` zpUr~=ehKWBZ}iJY&VTctaBM$r$iec#WSP%*o($u&%Kh3di~!I~vL7T1KN&sM62BLp z&Qa--tlxg^ga5_hj>#1tx2KoA!v@cuKka<8=ybC^wn-(~29>S9@jXv$Ouxw$+?8-{ z!a_a+WB9%E`6c9hl-=pfVDZ_744+yyVF@FJ-5wS66v#*db(g9(dJ}U0z2|XE!gECc z3mDEwX_Qy35r0lrJ;xBto5E8lm}pSeoQ(37Xuyf|`|u)%m=W+HSp>>I8e@V2SrVxK z{a?o}D;#YzO?2W3@0~{h_3xS;3$_JugtpAVlsY<0o^QL;DCtXR z@8c+wr?xH21{Zr~BoJ4?!)1m=E_`?_(%@E^j&yWGCusa{Vq{WZUCr0_z+hVJv82s>BO2z}k=O=!sHN93p zwEQ&xp6_hT%5DZ3m!r8IzC&>si!JBy_vue#N&SDwxAPGWb;)=L440Dy1-3xHe%C#Tv1WH!Fvg| zp40K{o?xn#DFA^xqE>@jfwOV%#-k!c-W@bo=xl5pv{u;O@H)p z54b<%LctFWO7p*1LeH%2X3JmTuqr;`y8ZI=dwXxc_|}bsj*F>FhELB=J3MOrG<+=) zEyqe|kFXrvsB@zbPc0Bw_VL=8EG1F|LA?cx0#d-8Clp+aRh`7Z80g&8`=FOh^11~{ zRRWdb8EH?R!76 z*>DLZ`0Z60%KO`li=*RL|9H``uhCVddVUoB*+_HvB{@3k(7Usa^rV@c_yUK0D~X0V|lrOJD}s1e*>vU~RCE*W$=<80GjXc)m&J`Q|NnK_$ATWS$@PPi;!#v+Jr7IJ%9R0a1rtiUml#kT!H@qceiY9t=)x)+J^KDp z3gGOzO#ii`I>*nhr`X$ghl_6UvB8nH(=q1QLYw!SEa~xVQ3rU@?#*k?{_)U@j2}to zmFt`PwddI>ItHnI4N4I9f+H?Qmu;3z6jf;ODICL; z+H%B{TMkTrQ?j7G{v|s>@|G+jVG15a^4UM$?cCl7e&%Rh&xJ?7q?*w!sdfi2gCD;n zVr=|y@N+3vzfnkS$&2Gw;D?)2NI=Z%i~F2oGIF@&7@o%>ZvtKarw^>$_X5wI%w}AX zer3|4b@SR>esqXvy zPPRu6bWGp)bk2VC^zsR}zRKA)yy;_#t8TuV-1{B4oDMv>_lQF@w*05jW;CbM@I3g; zl3pGiZ!mi3gp;oI*)nZPi4Uq>|8(EEtBx(31 z*gbMVcfowDOzKRhVs&4Qirj1$@v+h;-Oi`hZ75Vg zc`=?xzbLHUfKKV*k^F`~C32+wXD8lK!4H%I#MzNLWy5cFdB)0Ba+2HEa#!e*4+Ab~ zcKlVpYTFU5Tb@1= z{3ZTq#@{8Z>!W^pO3L>i>F#>Y++GPsZ&byDeJMIdd-_c``%!^v1(e`b|2pbrq}P4Y zXgdC;pxJD#4whNFtCk-a?deB(2M_WjRxtk4d_RgAkMCZQZ>_w0QEpa{{{kp^!iN{K zUb#fgQ6$b=B3=txZ(`YT@g73FEay6r6bv>uQ1HCV-{&CN|5C!?gpcjWj*k6FHb#&ACCMm_J-_Go#sS*!%qOudA?!#u{JViN*_lxF z;vpFH=Ns{;fo*X=dGqVptG+r)jQUR3Vj#S?a*1~XS=eTK>f^uc8V&qIKoPlPe0F)g89JdkF(vfiz(!w0lXZrepu28l z=5&xnpZpjo<4&k@+P3Nne6O>|)K73yBoO|sD`Ow6O#4d4+ zdXBCRJ&PcGjA8pxp`FYUC*3@-MnKLD0bNP}HkO@(m&66;4Isy77txe}r-eSlU%4a{ zFI|>)Mn|HW4or=mjaQD`U{kNx8|0xkBk^#iky|-jr^9>3v0zD-*H)7! zyj$XsBl*~@la@Eph?cim53li_rm?$>58>(xx$(O%S+OJVmM7yA0W z@{r-1?|dit_9MBMXX_Ml?q3I{ceYdb;+Fo8PSq|!b@bfeEk~o1anK;wWR8FGVAv;* zBe0bAF30VGovi|xf6~JZDAk0IzlPU^ey-bgS@M0_>5o1RqR*YuX)-pOHORpOZodym z*S!o<^Zz>dwHY@Vh>SknD-yF9-Abi8em9wj5=~!#w^I4he6~IqrSIOKU5=wq#R_Hb zZe!s}Itn-Ha2kf#?4>paxG(DF!4+^^jj<&)c=rc+fAGf6$>f=+&dIb}|1K(m z(@eq)?R^;ZM6Nv?9DsAv*(D;f)inHQq>CK%W2rc-$@V;UK;x2vw})BlmK*{C@4c#U zz5v%Z7;+Iopy;otyF_w&Ki#9V^h%4@Ou8I!X5iP5dv3mUY+<-(Ch;I)Rwo@rG}S4E(kt(t()> zO>L$ejPlO>1TOjXHN)9VkKWJ^Zg}Gt%V3vS>%pyO)6Ut1@5b)@jhNsiyq)*Cy)wLp z`|EVGb!LYFJK$( zUgH7pB_v?@k^Jb`7El^qzYQ4SMsv1}ANqQ40PW|L_+PQFuSZAdW`57U6L9Q(+Q;kD zpN8-p`$n{PrZMM8adUqw#1iyp|i#NPQBs*gkm_SHF9GH$jO zFXX__3LIoctTxLzkKU+r_ixFhwk2hbDT2WkYxZ&2NC2713J8P2t9!7V^Gyai8sUAT zWOo$np{}8&{-=L@P5x-SiPNlsoyI@ffIAB4(IZpU-!JZP?(T8@^e6EKy#Up3wiF&O zvv~c7W2ob4cIJot>h?kbT!O-@*)CQ#hZ=5!)A$VVO`O8>%K0gMZZ?yi3^jt^j2hnY z(8p#rb#i@o9VN6@IVBR$D!R$SXBH2kzl5Kj+3i^#s(S~<*}6Vomae#uUi`Ap5qkY6 zJnj%ge0*l;OT_V2a`Vg_xxK&s`A?@?e9n6DIDW$_7Xu>Kk{Td(t5~s#gAu`3vAGFC z6PxkM@6Z_Z=YD+pQdDpyS)X5yo>>0Y`XLbnl35#JETaUp(aq9QfDWcW@DiDG%z%v) z6hGrWHkvZS0p?VhLl#V^3%WV@xRIzhZWk!d8E!c$xb!}wo|7zmIA#HrN3M^D6gd+* zZ#$<^aZBM$rB6ndw13o5(vg%VYeCuX90i{2&0IKxX*pbTQp@B({5lC3j+0iZlKA7X zW!Yvd^w;Yn$(NwiZ`K;G^o|GR7d>JAP)z>l{viDY>s89>{G5F9pq4DOa>1JDwXZI` zW-a=?$88Igh%X3Qrlg;JQvk1$Mf~F9Mt?Ho{Na-zXIH$!pPep2U-IJ%n*ju`ZT3D_ zin?Twy~oeV$W7kOZ*mA6i4rgLJp)ze>r-%%fO^h1@K+r@DCvh!{p45uBOLHz^n8-9 z;!DzCquG{^hiv<1!ObS@GdbsMvkTd`L@bKYhL^GDFCCqe+x4~N#@S)Bujnt#eM=RLBITJ?gb(z+anuvCV|!un+q^Fy4W4x zjgU`(MrT1OP_z&48-y(}>bE<6Km5t`Mt|>8YI|v2(|6sLY#rf<&}4||;T`TRt&>Yz z;fgnM!ShwiQ$Ldq7k?c4L9v_j+3|ZkYnmLx z=j!vyrzbX3SooD?j!t}V59qSz0KtzA{yIhtQl26hZdGzbO znWIG9OR|~`s-L~1>op#}7c{F|;-03$2+wU&Luz@8N4nZfKKsYc!Nrey&rRI`WDiMF zFc72_Q;&`pXu&NY>m1Mc<1^w|yJeB{%^oDrjJ>2LsKY_G@1Q1uE4NCBR`}k;#jhlh zF&M9Ah70Clq5n(bn-LAi4b11Cmyqd_CtOm`%I@+g4*Zf5$(0`Ypn--h@vzxp3UV{& z+kBmG@Y@Y$y#F0SUaVM&L!acR!x^F>hyMT zD`{?d8J}il_?XSZ1q(ZfR|wsR8c8-~jQJ|NJn~2LvkLw{wV0VGGtFa&BamaKAkJcz zV?>nHzRqdy*DffcekpmgETi`n9;O=ZyM?E?yW?p}8y-PsWJ%#mR7Y&a&~XVSE^b#1#87y)Wrmh}5&bZ`umq}29 z(O125j>ESlCCT@EmrLnz7Tg-B8(?UXwsY0;_+WaIW9jD^R3q*{Ng-} zG|>|L9FCd(I+gErO`1*m4GK*l+;B{jjC= zcnYsOi2nDbfkQiAA_=;)r#-Y@8xX1^qa=Nar@`mpVfcyk=$GylK|H^Gt{lj~XTJYK z1%nJPzS!FP27q`X|H=~!^QDUgc6;{~#ROVrchtUb1!UjJ7GIWsHv>!t`Uubdm*=D+ zWwgk{#=+lg^=$t7<7R>UoHGXl_8j2lu$W7Z+0bfeFv;o_uVf;da`A<++T!KtcKyla zah=b@YPLgYLGT)Dzm=ZWZo`u>H%fyO{O{~zj!e^)YKMc!f*i~_dxq%+g03j@n+)UT zgFc+?HjWE|Mo-R}8z2?FdWC2Bf*r5xV|HlT9ZaLM02lbLx)<>Htm0O&0Y-bQR(CU# z0)TTy?|2UuZ{flRKGi#JZ>_rhW7!y6(8k*W)wKYa^yds_0DEeFx5>}p(ZruVI1zsL z1pK&~Kl5~l;Ehi6E_z8gWC3SLjG5H<+Oc#Dei+qJ{@afGD=))c(dCqpnI)B{&(O?D!9otu*U2yg3 zWw-BRcq1NTZTfFC|01ZsyxaT|l&sETC;Svs7I~fXO$M^Ny4MJt+S`nS!KA4gtUAahLd2_8@8e(IGxK*yxz*Pj&Tc8{nn0Wceh$A?Smw zidh_)_G=gQ#lQEKPx@51XYS%rGDOS6wWRPT(Vj#cGdq$U;+4~vYxu?onVxHB>OBr} zKfhGN+AlapU~I-=a3Roh$qO&aq%3$W)6GWSJ=O%9Y#xz74_*N$dD7WX)$%@OVZgb6 zv_r?yXr{x%2xIVhXPAz7k%T5sxb9I2SjkiOXm2J%e@}77uLqSspWOMQ1XY<|B?lkg z9vHmwFb4XJ{Z7e#^zntxDBv;s;Pdqdyn$KV1$BcS6!~w+E`bL?-}#l<)MoUdg_JG% zA)0Win+-bh!$lt&)2l6$v#$XLK6Lnzj?RZ;S2)f#k1yLUxx{?-`Q=$`pr24aeJMJg z#A?y`&Wt$E1S4?z`qrkJOy1)NL>3mCY2|2)t(@T6p5QR+F%ocS%CAtYqMozN5p5_( zgM#0s?PfqJ6_{n zd~M`H)!ttC$h$<$DZ*{(_rjSOa#}jO={ovmotIGQYYvCsU}-jI?_5K*Rk zC<{90@dBG!qd+iYHqx8TnrSQhc7dgF_}OxULA=?l))&_}r7MMfySf3dWiVYDyx382 z-gArSmbB@$y6IZKXv7>elgobM_QNJ*bQ*m$fBU2SFgbq^UrTm%EZ?)vd~$wJYwB1 z0H6M0F`@YE@~Slt8LIoaaaaony^TtQ?G_3D-u^xZG?mG7IeJG4ktn@R@mF zyXjIu+%q~4u4=~V;L!(aKU|L(u{XMX+9|D|6&6L^RoOP|>XOH)sa<1~Yea`PNxa@^k9?bB@ddxW6Q$t{^9TZ)=z);xBuS1yn!X2)6-@v9YeEOlT%A% zI@+FaY;n!gWysR~Xu`@iOR|qH^2?h|m2gT_a9gtR?UsqpnBIPhlw%vt6+PZ-Ds ziOK#Xy7Rk}2?Y7@|K2%0{g!zhFu?gj_>y40E#wQ(H;mnaa)` zh?_=FpKq7d8QETk6s&#UR|%G559PRvTwA6fw>_iY~#0 z@q$hNlR>&sZg!TVxf>RbHl>Yn3^lpJbxwE*3U6~T7{}w`{L8=j*Z%Zh`}hBYUq4qE z>W_~z`8gg&1;y(KOKg9FQ!L4a;dN$?`~C7Ezrd0(YQ8?d4EIZY3Z%hRxj^XiO+wHw z@xr%&i$V&2`6QQKZ&Cjz!<`1;e{K814%g_MGrabM6RwZ;&ZqM*z;iRg&d|h%jw^R^ zcvO7h@2XZg91QzT2;^vIw@N@IC@XMt%!!-xBHQ z=8ZxZ%5>GyGmE=%7gJtJ@EVuV|{@uAPlj7e%K7l#T zFvi12ELYdxlKiP-FrW4D=_rZ7KsOD(^Vh*hA{kKBjF~be5=!0cBiLUo*Wb)a5lDAe z(%ypokS73Sr~!l}%`uRDH!vG5tHaaV=lWT$p7Vz`qn}%Gs_}y-Biv(&8?Azme-5(X zslSo->!0o;3ZE>1G0!;2sNFA1Hj z-~${k?N{#j2KhTXdm4ApkNm^(bi3}44ukrT|FG}#eDh%bSdzd>0B_)&odxmB*Y$g^ z-{WS>Lk#ZT$Jt|-?=e1}mV~+N3-#iE0G~^+Al{@#X1YM)gZDw4`;U)&NSpWZ0w*kd z>?xfb?ykT4?yEohXa8IaQg*q0JpN+v+e|Yw?DZDst^~4VHG6hGUDV)OGQ^9RSOV+% z^;vykKx50r$LFmm=2HQT_vkF?qyx`5N<2$2_2;va;AF6#?0U~B#x+@Ac3)a}aju}N zpt1d6bzc0^d7YO~$*^VaBU^l;=e-An)77*}&vm3fe0_HLbd2|lt`zXh1}M#6f>6Y3 z^ivCiR%^3|-Ue!s# z@OS_BpT_Tbj!wh!T#j!2>-+tJZ!{Hcr{9MUdVbnY&oqy>D|ld^k3oAgcy_>yc&I>X0VZa+5 z|JyMR~06Zy$~ShC@JexRpsI>HB_aBX0GaI4yk zx|8#gDjv9x<8|9*rypf{dh9uzwcPh`N9F^5zV!(4+8>hBH+~{W#*V-E#m~R{C%^xX zf8M06W}!?k5?*KHc|FsSyRNlGe|H;)FZjgd^KN#$wyFE@gLnQusC>!t2H^KwHLxq# zv0^}bNu%oxoDyJ8M5U4?f14eGy%ogSn~jb>KI+o@%GuVQ*dDm8^4-&2J3Bn~#l`s| zKe~kV`l)5M_+~TM$tD+k#2l3tr}qt#qx@N)pPtx!Z_E3jW7rVAcz<3qv_guQTjHhAfs zt?~L6XIht#QurmKvxoe&8B8gMA7z;(N^%^H&NyRmuWg2TzV-NBGoa}RPzc{U@n-5v z6ycOql-D;X1dj%|4ItVco?pK_Jn!BsExx{`^U$qs`jkwmqk|>qyFq`t*Km4~TIp@_ zl}PyQVLnG(vaH4`W{)zp=QbP6mroDi6*%bhXyl6x^uxzj(5nTlwUe#8X+O4S-nlKA z+;liLSk}xJ#kFVnhCkkvCH(1lwX6HgkJHX4VkETNytJ^SmB32|9o-(MxKkm2=`6Ty zkd_eVX+8}&Dc9W?0lhW-GC%CcGCYiVPgN;n=Z*~qgxq11$X2^0ifgeg2X^3@s*Ombj*CS>r1 z_U$2#>dAV%#*=IrD*U`pxE~MoOE+&I4Nuqb>a%4#J&)Sm)PUy=9I`AJ<8OOK@xqxu zzStZ+e>G;0) zcP4c~Bq8xqjDN-N5b`8uZS8@*R&YbUlt{n+Io1yvb=dc<5@9#Bm6<;a9@E zpP)L9%skk4-)qh8bTe58tIzRbP?OyD%w)O)!~d^&iY_4HHGHRwS2l3gEeFYGKl&v5 zXQu4ZdXMniit(#83$I~|_{g9&inhtg4T~tNZ7g?R#PWo08g1Qj)u5 zMo;#X#UvO53Ex+?3{O|@R*d$~F1+Vc3*m^*X_h=v+U|l@du#erG@{z)Tqz-KrXcTg z9__F5-%O5j&Z)Fft;7NToE245@(h=r?n}Gj^WDSHpOalr=ZuEeyBSfwDv7yfDrGQF zu$X}=oQ+d}<2a)Wrawl^LqM(Xx%C?a>N~IRoTjTS3m@3=_Q;*uKFUVUhlhwkG2G_} z=e)x^o{tvi-3za8iLW#3*7eeyOwN2vWGw6 z>II4(9QTY>^k&D|^S*t6F9Rmo%*b}#r?SLG2T#H4$wLVzlO}bqjra~e`0gIEZq=Z; zi$DH?eC0s*U1`9#xXGS)f0K_s-u&U>tF4tL0B;%H*jdu3QcS3WYyGN2@B2Kiy=5bx zMArcICT4JKI6rt~AD;kw>-!zwca@CyvrCt-`55{yEwS#aU{(>#F!=`q*XNeh^SOob zHXDefSD35pp!nMPzmGgb6Nb1c0#_1kwQVfPJTgp{-Gh*1jC$8 zznH}5me%1sn;iakCJ5&eSx&C7^8#fu*158N$*^P+lX!DZ7X0j|hGqd0oLwFL?TLHx zC+i-X4rF=>@?)799NIokN zTMd@C^ZD8w{U+Sm@RoWf+4=PRB_wb-C&#xvDguVC*lq=`cV-x0_}exHo(*1R+SR3y z>4p8tV>{%f2M_#wYqENcLn{uKE> z`?4u`3L?thbC8@u0$dOrKZMo)-N#T%{u@0ye;f;~jWpVOy-uL>3$u~7Hn0l3dzw8* zvXQy3;4Da@7vCVZJP2?+F|4H~FV`0?=ka5M7*Cfl?S*h4_2CHj3|UaWiI^Vlfk#lm zakBn63Rn?22YmRzvp^$@&3$-(EC8Ef3KI3Wfk%Hj9el7S3q790gI|J)hj#$Fkv$yY zk%IP%w4Lh%*OEc>7YvU+UPmOeev<@nMM9yG70+OP*iv6FZI5hd zpB>h?`WG(@qrW~;2>1HaT{ygEtL!;Bg4Xx-$(mQ}HNShfY>|3{KfO)Y*?EcK;pzFM zg3;bx`w+3|SL=H-PkK=3lYHkFCm-3)hTZA+ZIAJN@Y?W&HG|DN%fye@ej$W@9)Fo_ zFkGPv^^4!=OO&sE;d-GqsB)N3E|18chZRD~!TE=90@27La4U=1DdUt2j#FpT52X*V z4~F2l9AM5HfqVAmp#w&82!`Rl_O+E9_apf5@)XX+APOVw2O=M%ypFgp4#$s#H)jmi z^!jFK)rSusJ38mI9XTtS0%5^`r^=fUmV6_<|Ap|}*dW{XrGmrHW>%Zl=YU4ca7AIX z@Zyi|wxpj!Rn-xmTCUxaV+xLTGB`I2#V;p&lio+Nr1yt!c0kur>~l9ZLmQs$ImY{D zPSM>DeS%d2o<8*+%ssKbpusD3%qQp{=H8F)S05iSvcy|sZM{uY1+sym7d~c(y53#J zY6^-4@hR#7=ByncJya)o?_6E2@CfwTqicx^R&kh&^a$ZR0z<$%r2< z3%m~nAMg0zKP}OduA;TsW*ydVIFDA?CKDN6eADmKhd-`9IC3ayOC zVT%_t*Isl_uIpV*x>e6#_RJ=j*=*g`hG%#eL)USBEE(%dA0J6%K65^c2ej;!y*eZN zW|Rgt?fTRCk{})7DW8nZ*N@omP3pKheLr@Pyz+PW>3Xm9G`M*F>=Ij_Tm)n?5cbE< z4+~Q2TXsH!Qe+AP9~Vm`-&2w$oh8Q%!J$*af->h+zCYq{F+R9l7u_camf(`f~mk*AP8W z3+VX52j_!ovq!k1f4xtyA)mes=_Y^t5M(g~lynUuCe4)!P#JxaK=_*~{z@yqV%V(HQOU&No2? z>zp;=(tcV$4>`Ni3%@yjGWPV${@%X(N{8hC?DFXtDSg2o>z-dD)SNJ-FuXcq`CjFm zDv7{Qjx&mOws%6)w}%8bnsT-UYDS{u_oXjMqRp0X|Itpd`|-sozLxuA*)3<>dZv7L zQ?nHo=Dd!|$E>V#OJ0t9LDYHlBp|$Vh^zmyKO}Lff1L+P=br6*6Z6RMzeoO~N460^ zISan+x5TSw*aQJRu0(%0Vt)VLte)GLuJ#^UZWNwR3!qE*?D0|j;)!Kk^v@1t4A*97 zr_VXRw*dcqo(~IM;`t2tqRpf1^k0>&kR_>bN-|{AM`D^^r_0fM1e!d_1n!+6Xy0C1 zgz+Ip;8fIah72ZIE;kUx;F_+^IS2chA4mN&F(xqQAvhyAPSep?5G1^CFeb%q#{&~u--jmD(n7zNNaS&c$);-ljn1w)U6Iz^LHjLsbClC8kc zHRcpCIR}16&&_P=_lO5gg=C2l&Fwu+U(GfhIa<7rjm~j|F8IkDdmh^4fUvxQ;K9rN z&Ke!GKRUfxYSvM|cUgb?Y-hvKf%k(3Tbz7VU7_#l-aR9*=q_NAb#&mEo`IeZUE)7U zr?d1k`NFsU7z>v>kdEFGy;?k|*@Ls4u^Aa|kL&DrKY8?J5E@@>4nweBzA|((EBsof z-`&ACNl*Ul@A{pwEcy2f2|P*BW~n-Lgnu*4r(PfLoFd*!sPTP%5XbYUWH8G=@h%b3 zXN8<#9*zTvX3F$z;$*Mo?43UqbklbYbU1W;q%xS<=j;X!PbL@iHuz|YDe}_8WQyLa zGc)nsMB88@p%n`eVYlH2dE`E>NBk2%E<=1G!a2;>KbsI6QK&=EMq^5!VIP7ihR{Z{ z%j%7IDPsvRX!=NNAKbk&fi15%n|Fv$vEdK&4S)sm6BJGJO!bDx7jZv~&*8&i^puP^ z%_YaU8qc>BJ$^dxpZ+?(J9zP4LXc>f)LZf2rOc)nSKxRz98n667s_A#f3V9iEv&x0OaQ*`jj9)f#zshMu@u@cKxJ)kKyXw9nvzMU*XbR;aPhM7Dp@=}0e(qDpI!zK_Mc6LN&S^O8YoU5(uc&; zVfbI$!^8fgF?;7vd&OTmU4TRRB!gX-^yc&N^$xT@;G=xO5ZU&M%g#&Hf4=_}qMAHb2OHrZWaR$ZDQY{iu2V zHROB+zsdOe{brc;{J=A6pZD>w@`(sD1PSLL32md4@M;JwaWDXf+k=2avmElOufW;V zn7VS(j}bdZG>YH;_%jQM(zl+Qd5Rkg6vvQvWULD3p7C>!Id+HzUUfS@{l|0Xx3T{? zVjwqbt2L(uW7HmO{BVSKSs}@&fA883tsihhC%Ovm_8nAbRHed!)AkbPlEZEwh*ARd zhTF+t;G&57Ho08kubWsLpIRBOSju|OytE#5UU@NLxDHt zV-W3pe&HE5w&JVMKS_(;r+fS>b>B>k&vw3>M)8N=4IGmzdB_y_;+Qoa{B$+_J^0Yn z*ZX*VR!_BWfA7Ilr%x};@~LGC5G*J9{eMgp9wpB4C^pLbR)5N#I<$ADzv=fmOPUIF zxT<2L1t9ALeY32)jjs1EnyokrE@g&%l-xxIIipkaelZddUvSwAof!fzPXL%HtSyIS z%-zv4@^|&lo?>f-!>v7}lO}`0z1h;_L??&NSzny!!7Lya00pjgkVZ)(rmv;kY*KJq zHYUqMGmt>_p{w{eGfEF|+-xnpbildlH+o?8t87o|Nsdd{cy^6OuW3Ib@cFlSSC>$d zFL^nynT`>;e(WPIzA6w{)eOU8tx5NB7N{p2l1gS zsFRZ(UhvTf+H%R3hmQKZ+Y7T_djIiHZb01Q6XbOL%)HodepdI*Mj?*^9&V7Fr8n5& zcXsNC-fRMVI;|rf@-1+)i8j@IBfF=aF}N7g)XdnqfrM`HzP_Ct{WBsvxK_5}z+bx9 zBPR5b&p>_qi~&8iH;eRb2z-IxAc;;dgMjUi`Aa%F0_Q{9PfI3kd&TEl$ZYUfJ$v`E zvf)qXBPTyUdHwO7IlnkQ<4Dz?T6PDL;--tjIE7L6W0e_d**g$-s+Np0_Lia)nlgmF z01%k)ZT~FgzIQv{+vzsRv)Ac-&ht9knR!k?x-P*vZq$q35~Ml}oTsd}o-*CXb#C~w3irm=dS)C#p>=Vs}uBd zQ~@A6>oJ|mFSQ3VwgUtw_yK~>>xYJ=?QrZug+ZWXD`}6XOF&Bu$?pZvCG^nd1K%(B(wE-cJaV*;vl8xa zBtM0ENF0BA;ZqIfMrUGY(^}Uy)$Vz*ceVqEHgDzpEv7q~ATh+7o2E0IER?bf0e3lEgcUE48?rJ#jLJmK- zzu7Fm>5t6X%#7*ov&%1g&?jIwV|hn!3NzzT2(i&!@K?W0Zh_=-hsQ}?2U?GMNi4Vw zj)LG3_~(3gqvD=u=ZxXV5jG0dMR3h%^#u>dl1p@VgqA~q%z${kdX7+C@AVrTTu(xP zcS+`EZCF~MgBzK1_M;iD;NN2O$G`IOBu1B1pQN>5$%*|&{sJL*&NXL#k`J2vN&ut% z!xE$JDEMF1~<0Sz}EB`=*cJd+cst zntqn<($N6c*S{hJd*22*-cAR%0gm)^9DXs04+Fynnl9*SI*$po@y0j&Z_@D+Jlo>@ z+UsAP>-9CD(NDtYt@zvkwX3X^jR-kg;Qi1=X8;}PM87`OJ&A1gjP{Zm=7XCq>8<~N^R@u%9KkXyCYTI8;F~72Rr#Q;u)6XC`5IVW-hTeGyOA_o zBm-UG${xnuIc zjGwQ&;pJj<$$2bgn@eI8TJ2NnT>D@<8l(-3{AHZxhu@^z!xgn>`K%q<+2TdzI=zfz zcBfBphy~2{Zm#`edZyP=SZ_=0^ZPr#akp5xmc`tMA3yq{gT0f}a`lishy3#O_c5zF zczPe@&JE5>!_(jKGujhwY%jh)8;zp(T$ zTgW9CPe5!_oQurJgvxk^iv;JO3NvwdoAP_uFb%6)V5ayvOmGbADeRA+Px&(>^RPNDV{^VZ-%Y=lnKU?WwVZI(9&l#IPwyX zCGUA4MGxg>>v9{wW<5i)dCDAGSS=NBn0~G0pD=O+bw~sAdBmD3}?am z?$LA=elu4ClJ~hKYroqM(@%W7!Im+ONC>}r^mw*msE9CorzcN*k%@iLS8AsncDXHx zJ6Bhy`NC$S98;+yUC)N;62D{>+~=Rc@#hEF1L#|hh3|=k;TS5;sPOsC?9jw?xT+hL z`1|(JgCw;C9ADf-A~m>3;4s1O+$?CxB2*Hgwk1)hd!G-!H-L~V?viOfA0Nu>9_@?E zFwoNzx0{todYBl(4z=M0{5xxfj|JJ2zSuyF@d5f(x1{KL{Ym|~1^rJgjUGRJznm*k zP^N^CX`&;{N+2oG)LNlfrVMP#nPVm9*Nx&7H0vDbIsDU)Qw)|0IZB`#!K&Tzkiw$l zxh{4+K^Y;u;5lXo!S;2}r;QF)l=_Bc_}$T2{{=AzBU9LdQTCsMO44(vAZPq1&>o`m zfj#qPge7QYBWg!W0aJT3Q;y)AnHS_SMR)cPm$V=LaEG3{4H!^T!K<&q4J!E}Paa2n zzXdH%rE@s#$w0Q@XrM9c`bflYpQpQIz8~~NbbQwkj~v){8tHdBt{>Wpw*3@#_G71v zxx~;}r)Mk4enA$~{9`@CtB&WuC5T^~8FRRYqc%69=1-l2RCdj0ytBDMAZ~ge9y5t0 z`|#uWew3izPf{VG@+P!bt|b5sC!Vv(!Kvs_41E2Kf86XmdP z=eJ@x;PcH#05tec@(qS7XzDH2hlflA;{#q40#|%#kB^^L^Qi^7Pc55X(LsC11<2THR?%-`0U#Z@S3P`n3|>JGE^w2-GdeK? z!v}*47K1_dK60Hb@z!sAJUVi~1!ppPdmC9fza_$wNWsOi`WPMfH={|W5s0=2a8H_Z z`UTx+2VMW^z3VL%1!g*35}@-2o+S^;Bz}keUR?N>EUOxAM{;!7V>scPAHbol&&@VD zy}?XvICnGTfv94EaeIxOqp8$Kp}+0fb$+^y9{%wRG@5nVdv#r+F4;!IbKfbhC79SxCzkPV+FA7`E z4{IA9xCYlYOfV-yUALUQA63AUw{Kx=AeT7NwzCoHyBZrZQmPqgi7*&Viyf|Y(QiL6B{;-j~~NS9z1wBgadKo&qT1(cFyTu&&MNk}CVxJp$L7Yy#oy2mfd+8)zouGeh7p z$vYXff9W1nJb(@sx5FI>`1{4(Y*~UhJJ%6fev>bF1vuW0zZBd}T{OJgg2!wT1eJJ|qw4X1ddL7s=qoPw+lJT2SMQ2>jy`!iOEji#j~4S2XCS zndMu2#}%E~kD7YJtvJ3jbLWGJmNGqrYYDPGqd$F~eFs!M-fj!w>@nX{Ss6~Tuq!-P zpX^(9#}g?0ZWfoUKg>_)X|u!J%d9%lK4JjwU;DK`^@l_Ei66(`Cn8LeKft&dh5+MS z8@U8`4z%ET9N*wa$}NBH^qeVJfnZjIK}KIQ=jpvAP1ZCT%?dfg5{6MNx6se1cE%YI zRveBcthr9taP)fd-F9&a4uoLGXPGHhw)R}`22FkBf82FN)BiJ zE-PtepV}v70YqlbH(ru=I@HLS(GWGntPRhAfb)(4yRho1TlC!>=$K@Jwc1?8SY>s$fm)3W+~F#DaoYME{6B7I3tuE|XH z`4}GxiCNtiN4y#}?JGP|-Jy+N}dPy^Z0$$X3r zA?`hUYNLmgAc-Cg;u~o4wBYrdPvZO0|LjOEsKR}IeDGDp%;8vKHRwlhHeDk*(YG~| z)h73$$N3zcUP!0e5v17PR9B#XztA}UD-Q4R44?QSsjX_v`{>{(+ zK;37ST#^F(=v9DLWho~EN)_OY&*^A$I6DIDe8;>NZSQk>dZ+n{LttigUfbg#Pe$6WU~J?X7u^*#jp!Z*?bU|p=j*g%@XHq?Wuv_~Q2EKY<((3ro#6Qu=yr8MiZd!20 z2e&1|oKIi|Yt~0LQnJ$pXB{hZ*mQj}<5jGWkL@+#sp`ooF$p9%qj!Lk=h2}XOME=e z!2`S*2~mUR8wQl8kYmf3j@ug0^mywVRAwpYt?-HG)CytWfT>;G`wJuyAH$NUO%=;v*~38xt(Eo{J>?jN10OIGFV*}sKs z*66q3$|4(#Ut58}+iafSv(I>&tr8qB{8*uflm@d$oxt%oefQP6z&1$5)b5Cr@##B1 zn$O(hOZuIzUt5K<_EDNWT9yZcx5W+rt{(OI0Kr!P_pW&Zi6yxNUYWJ3KRti-_g49d zACIei9>$;j^rydt>Fr14)RbY$ziH@%e4I)mp^)mn`T91ZDQ}}9Ej^sUb)#w(kQpf| zg57Vf=bl$z-97VG-vJIN^j+7-6n_cgajJnJ!$HHrA*bxRZHWO*zz&ImaJq6ej^sWy+MO|x+_~&GA zqCiV;4~c%%9rUZ2qpL1`OotmlQ2LT^B%ssEIraVXlite!gJw9{`!|Zg*JNZus)zg~+Jk(VspaW#ZHp-8UXx zEa{auU%RgT;mdcCxh=VzPv#K519HK!0ekz!lCKg?x^!1|d)p~zIB1LZal{wh!Eo&n|pgm*8C(2IB){DW1U}_B)eS?pN}rt0Z(4(e7w?i36?zDyP|VQF!H?T^v>z((a*lO z35+c8_C6ck;1Tp#x??Q}kR5D3<10?D!!Nmqd%9{{0r{*Ss~4cUqPIswqG#t}JZY#* z2k|X=?04GmTCrR|9Y>#^Ci9ve{kvdu1ZN)g;oLKm)q$s@hfMl=25Cs**Ecrs3V>>q z$IO%Uh_$55x6bF9;r-+%0iXRhLwk|0E_tIV!Om6?!u!0*JQ<$b`;v9q7;)$JLvP=C zmYA>3;R9JLwa+%?u>twQxANK!saFukX0WHf!0}Ms;-r3bP9J3ZuAo}-)4y0C>-0t$ z(OEM7>Z@;l_jmv9|2le~`0+^ac^Loj5C8Dz4N3nkg>B{$>J26+r38AJW4SY0cp&6B1og@{FCsDDHY1 z(a?04Yy4EN&YW&M)wYL%qrd047BJUedNE3y;R(czUW}Y@A4zOzzKn3M@`-z+uCRSe zl@G5Q;cMWmUgM1(l3lfgcK#92@hM3>XdHc|YPNdn$bh!jcu!7uW5I&E zWo1y=DZr0j>k%!(<#>-js?t#s-I6Ik*>y~t)#&r#AY@Yb$NE0_tG3jg-XQb`hG=sx z{gS!Q^U?DUb+bjZ$*jKtiQj75lAT}A9`TGv=kQO5E#u-5j`=r&itZKmfNQHGejl#! zT^oJ*?&?bZ`Tj3m1K|y(<94=&?~Reyb|~@T=}#;^B5eRdzlQlcz)(5RB?Mqt0YL})M6U@HAz4Hi$o5OJo zv%xcXeMUVbXmLEj!${2lS#e(v2^Z2U4PkSD@Z!PC^%87#;LIR6?UHW}X|tBo+Nfpk z51DpR-}(=a&X2t7iy+*+1uI?RcRCdW)oZ6aF!n3)1jj9(>6A?NOvt0}!!L@#-YoE8 zDkNsTOClqD_-#nTPcAnXj>-60FvL-9lJjimJl)YVnYZVs%fr|EwKG-UWWVVFEDd3j|qsuoQ1-)wQ`0yF;WOMDV>wII0@9@tbs^1JWx^zJ1 zz$agymHM`&u%`g3HcM=ey7Pjb&s-q9n|*7uEVH(`E29{GB2HlRuswZ_hs&=ufJB$6Pv|o*$t1`mOu^_5b;t z7SuWJ{AWM?=l|d@{)ON84-1w*B>)#p5c_dNR=AH8mf_-g<5tSs??ydF9ZFcgFB<(n zjy+|+R4FJ0o~rH>6jS{xC#%fNON>b56VgZTO%K z04E$w40twia_|qGrTimfdL)o7we1d952E`4 zc!M!Z#K*CoF4Ez{s#**kZg}aJ@4>@1!^d;j@Ue%cmxqVu$p*I`rrsJ20yxh{RYBtvx7t%e8}p5sJ2gL01tM_8l7mq$sRij-sW46 zQ_#0-u@a}F4d>m_c2X>S_w|4L5B~n&{U7U!>i?T}U>|Vrx#J%zpPAUm<~=R^;XnQT z-}?2x@Ed=#5#Y~J`p2(F;49&Yy2SGs=Cb)01#K1up>{`odT)QEn(VOp8JLx*g;E_; z+FCiWzxBQLIpzcR21%$Y@dGXg)Gf>1b-cr-yg?{Y!aH1AA98rbgL<%lIKh7DV|}_V zsSgiW5O`O{Q_fJg&7`7>1}tvVONdLh1Abuine*SB<2MQEH=Ys%E&5;L33dUnAc@a8 zayaNKeio2*#t|pnz*B#E+84f);rdGy23a`B8?TE5HjPGn&F1y{!FZ^D?E+doo{vAL zWT4w*>SNdXgq^LIP+lAz-@(ugjm=zw8?X+;Q^HHGcfdS46jGU9&OUp-5gYWcAA8q+ zHm+fE<)vn5Wa^q8j=yvTUdN8#hNGsgd{o;tIcZXWy)uDkqf5di%V(B%1Id^htbXYE za=%napG@89;Y!xwh_}urKN@ecneNu1<_iAtH@kF>4=*xorX38qw+B`oVrd|VogUqX zK12osHWvq5eW2y`Pa(KW4uBmB0VL{15-lfAqcC8i+xy!}Zkr`|mD4 zuHSRVKUVPn|EG-I|GSQV^hba6%^&`=-~U^QTRi3%0ekP46jFjIFZZQPZ;sSoLDoj6 z&DoU1k#3esnxLb4Gn5B*TpS#wZMMKL04w@#)Ci~Y{e&`l3$k!aI*RM)?0Fx-=c-W@ zO%87K+1;}0;Z=Md-g6jBl?8G2Fl_J2?1FH~xs7i@$*}}Y)g0uV>9}4}P*?we+H11! z7cXX-(@_D_vNKj!B+KdWk$aW%Bx;RTfxaZZ2EnD2G(0Z{A42%&u-j=iyu4;J-nthjHF*Pd`EZb zE`XxxyoBcl#AXG9Nep$-^9axq-eaGIaP{N$(e->t5Y~4(p1jemYIGPbT`p08+aBa8 zMV&sgQO8bvu1uC1EsrOEefPk$*1Ef~1V0P#83kX{U+pW7>5=d9$~^^8o$A?q z64soIDBEuwhE?5}j=kyVDf$gXD<-^*i|pc@Op818=`Xy>zUhHq*S-0Oe&lqV-8DVB zP}jxq?X*tQl6YqO4BM*iZ}q;7T|ocW9w{N;c1uaq}_@z)t|dt2Xkj1;=jDW~M5EM?hr`>9y6OvbKC;HMIePPpwd1?~ z*@3M*4X~u*JiTlpFh1);W;V`;LcavYUq+A}<_ldqhnp>XO+#=!^*e+I68h1Pj+czr z18kTB+yKrw4LYvX_gV~ezHKDrYWsKw5YGPaK7O6!2bg2=!=KS^$ofzIr~m%H{?Drp zYVR}lm+QCwJqGpx`<{RQ==_%oD=TC3PJiiIz4Eqy|Cr>fe~;SU^Y{4GKl+Ei{XhL1 z|JHB*MvcFTOHQ=qLyh%d?q^^K;1HPl3!3__8XO~VU~TXP zH`qt1`u`v8o!P5pM-|3R$DyMU97uu#f(Rmr@BX2_`y%37{)q?*3Swv?DhlF23?>~1 zXh_oW`+aMF=dN3~_8F4XZ7@}xeb&5c)vBtsYoFofFsWL!*kMmr>u%-w)}H0G!QDt3 zlMWU9VNuFAKK$oxSSS{wfKF|i!)zkNIZg4)&}cn+NMM;JTJbq9k5#n#;Ns-yM?Tz2 zm)@+aMTsZ!2a^TkK*gjel@wOx#(4&pPg>=X1+4E*(Km4`wkmMylgD1^5tHXdadjM_ zw-56sdrl=Re#gYZb^#(V$?2E7J^jj$5?h! zUJV&PW2bN3sQr6TVk2(WhHOa-@1xQ1i#~6IRB@%?a3du?hvWk4LQTGHfSu+6JKZ3B zC&aT1IA{=uG-R(FsWabjk^3owVyHuk?6oIfdF|C-{#YV{!RVYzY6rdG9fIF#jG9(i zxeYrHJT$8ed|PeCLw8wh?)~Rq4`2PlmtOd?^79Ri)Yc?~!V^f?LOCwn>7Vebti=u?67A=iqDeARs8qc*hr zl!^1DI5_q5DKEOryY&@|-(!`YB9%x&aLq5Aj1QjuI0z^;`gLN36RY|qR@P|cM||?5 zar#Yiq1=dwfr6Z|k_7t6<08X!_UKFDq$sntXjKI1QaKZg0$bU$p>6&2BjdySmN?=j z;6h$+Z8$%k8+Rj8y=F{O_b1B8i9!8jT+CPHA3izSim!E~E}qxlmYZ#69lK9=+xXdA z*wX>8+H#Zl?+x@o>?C2iD3^yqhc# z`7K=Ee12aiw_m;R($^nrqkV_ll?#!QT$8WVXhQhnASWdjSQQ~@p`!_Nf|VqnD%1f9 zBtLmOZp1%*3~CImk$3N}7>N*3^;PbQPTwCT8O-F!K?7PP#3k)z|q zE*&p;#fc9u1i!~rk7Q(8AR?BV)-C2$C>6B6UOLLZ*<51X~4ts}XgE+nKV@F}y` zqsD0?OlIobtm^>4&)dc7yC;7)T~pHJ3ts^GBIW{B4NkU;S|U^T|<=eBs-3 zB~8`^kJ-dQ|B6ums`>p-jWb2K3aR9pR~me;XW`5>j`={tc@xj$aa_U`XU#SKs9O|H z-b&)F2z?LXy?0)I@atdvWT&VxB!@jf+;o0u;L&z&VIvoN7g<0S*!4Q^-W#v~<@cX? z?*4<%efIfpDIcF_hO$|F64C~86G$OrQ)MbhILWU&+QzS)Rms+>phGgjB0!g;HjA#7 zxE87=AdgKf82CIw@_j2G$F(^8@i+^?Zty{Ysv_e_mkinqoXw_qSp+V~A{Y~!0DE*a z>z3san-~##BMK6qi!@_X|0(Qb1AFxR0S610&M?LvTK&^sEjDbce}B^)-;&kXWFlW& zoMha${VF~|-zf08#pVx8&{a(If~1Q;|~ku7!#$j;^#!EfBX_e0ZCTtpiXgH zOfqm$6s*Fd{)v4{uY#cJD01wDtN;2vC>-)%y5z_6O>_)!gXF!|YVqJJ10GAQCo#yc z#!QT!e|)02#Sc~EtNhcC^T<9R2AX112=Za7)(JchgxEMu>SuwbmG>=1w2}Gbt+B=< zYBl%TC(>aY)@843WAc-LY`FO_D|Lfo4JtE^u?{Cp_$Tk(`|De8zVU-U{O+}%OBH9B z07pE$V^C%pDd>K?Mqy(v`bC<#-~|T%#6RDD>+LuH@%m3+cxj`p>5ZAr_IIt#PMi5h3swPPIVNu*X&su{2rR=47*YfyoA(3HK>MS_GX5 z^@g{lc=DyC=H(&y;U9k2d4W-U@Le)Wx<3p)y(-%RIj zu6XMtAs;FT==+YSPU^2^lzweC1t2+N;e_fH!uaKvv9k$jbxOkmf0Y^M&@$;tpUAyq zh|B#}(L~=XQ>Os@`E*%5Img&h!0D0A=SLdN2PZZ@-F0tUeq3P5JO6I=F?4hsu? zrl2PY;$`iPj^J9JNr65&KU_{S&6dQc{ zA|BEB^13A|YY!Cb*D_?Q6||;EDOnt$;Ge6hm3^7XG1XwY-(B-oF|FnxI$s0aYxEspG8GM@ub+l z!qq~d(CR25y;>-CsD2-76V-yKqGMhB$yQNIRHqK~aZ7<>Du|QV!tQiV1$d9l2 zX-(y|a_>hM^hk>qI5ymH`1*zIMOU$dPkp^;d?9SN18gJ~=0LX`qD<7jEVd z9=Rg-$|t@&U+SNhn-4tea6(2THO9w#T>Jzp{owy#qkhrhgqBD7y3y#Z2;Y>X;5EQJ z)lHIGA*0GY9m$^g;6o#9Yy6~=n~36<4nK|K=R}N&hA+>*DIDg5v6}+Gyk~6_12F=< zW@W+8nEVwNeBeSk^3%b#PvCj4cn_!$YvB2sjOU&lbCTBFIUgugD2|(-e7&pR=N{I7 z)`q(BC_JBZu10K3sv0){_FdNQHvV^&qX+s6KR^4^AAj?z-h$%m98BbRRrQpcCWD7w z;AjI)=Yin;61fE@NTjq8!eec~j|@6I#tgqhWYApE4c_&-UHml{$-;mUvw>9B0MDW*B3ujYT8}u{poVbj??9^b!B$ikO_=Eq9EUxgr64 zN6$A_DCT-Alp@5TaZ*wq3$1mt&8hn+$u>_E&MH8*r(f2;a>>bEiLAKQ4|fU|blGRz zX6P=XIekz6Gix0?pLz87na7XB`L}c)YHr@rK7IW^4Nc){Q2QSp+7Aq9wbaI)bu zdXE=B!06zUHu{I&)3L#NSs7Rvc%m5?_aB{&dpC54UGEfs)C~=!VSjczr?BBL#U*f$ zm*5E?cwl&e@Po&1r-NHbFX*JjHuQok11kehCj;4gf%FQVYow#sVRTRNy073Jf=}By zg>7oMF%wvHdccu&9(tXhf(9=*$Id*ec75=@){EYr&f>2OtPGr&f$Y(l_9%nSqaymy z(Fs0-T{m)gY4H*IB6w+Gqq7vC5$_!*&_HAip7-4XM_Gy)e01n1m(WA9z{iHoDsE#| z7QHfXc?Q@^=d|qKKy1KMQQL86U1 zDO4lBv~TN=_R;AuemZaAD+4P7Pd5V;8(NCajE0v27Z_fr!y6&~dl7_2hl@7CJG@hc z4TBVv8H9K2iak0hfPtewbZPNd)a^lJK#`q->Eo2%lCKPW95ZmqenL0;GdLEk=tnn& zDtaUA`g=HY6n}x!dAsycv^&}BJRK4^g)@546tz7lksI<^aZ8bkf0Vti#-f~55@;_+RR6IrE%fwsS{fYOd#%q2cF_Z-eJe_lNLM!4}TA4 z@Ez{yF8<2E%D{dG`W^~C(?&*%PN!4I-~|VEd{5T>b)UU2@Uz;f!q%On=)emO9P#kN zKlbPuoxt87cm_D)qh9DeKanrEGO#kRpMk#LW?GR0M?5@WFJv8$4Bz2*yWq%!2g0L; z2JW`mqbLTm0@3-wfn2oUBV+&+x9~#)X?Z-Q&**{YLMMHI&teO&>!G{a%D~FN&*TQ`{DIH8clS*O8s5&W#BkOiWXB8Dw| zTKs}XKJuYy=&rUhurlyuGSK%Ic<2ttVimeW@bQYjKt>R}`-gva>xB&`Ir(%4aUNcZ zT67Zx^56tNesF+3d|HZHATlm!elr$2Ffl;)Hqu?T@Rfm;fe)8~?7MjBboP26I_&Sz zz|g>sM@Q@fKfFL>G-z7*fyKT38eRWcq1&ROP&igJM&|@gAp^z^JcVn75?K#F$hhJY zoYrH&Cl@?g`UqXz^|~^!GVmla(Dxa5=nhl3=pQ^ZI>Gl~bYctLFZg>6y*sU+*zO1i zMt3k48Ds=KD`4T_4!smEd_)F6^sy70)DA@roR%V2)OuYRSQ)rR2Ks)--;9Qr3!N0M z@InJSj(p^Gd+_+^IJ~pkSlBR}6^a=@okRus^vM-pp~X7Lz-c|c z*py_wt_-XUTr&gN&-fhi(7@S64WNw$4BZ(oKClT69NUbC&Mp2}*t!!Gdl4CpQ&hUc z6tu3J0j8+MCwAeX-wPZxdi{bow)h(PojymW>o0s|;Ny^izHj%&yQc%cU)YDveuoC{ zFnIW}3BS|ew9YHe&1-aSI2(4Xu#L(%Ns$=wu1nA){yS%YT{n0j_Tc>rZ!BEd|G+K_9yt1nKOn95U7VfQQ-uvj zy&%LfyvRC_ZlJ>>V02Ts;0K2v+3bBai7iKmHp1er*Oh^lfv1sy?CB0i96G$QSarJN z-G*^=I=(tDV~s5IEtq0)iz%Y>JC0sxV6N~fT3sF*UdLlMgYng6@Ond**75KbTp3sy z_;4BMg`?x~nqm_OKlm}&i(2s5j&%G)4opLq)^YRpio(dB(cu9*o&rV(@H-tmHXTNP z#zRI!Mhh&eUT3^6U--(v%E0Li+$j<=2`>;Y!GZmXtn-3XxFR2m*hpg&-QXMR(Dxoa zEf7)eg`(qK9zJly!@Csj`G=oAqBFu%@=<@$D+4P7HyIcU$c?11$U6*<2Ka}$x{ncu zP8<6S{{TjTV2{=7PV6BcmZt>v(tzt_-XUTsH&R+j#AG z=7Ji2# z4!zgnZ%@AXD+4P7H$~}GE_x9O9*AvlV8>^&$Ri8gZISgBo$y9Fe8Y1$|EM?8aT$htiEOcow+Y~2poNRRr5B6CMD zVT{FNq+=5P9z?IpIvyWgXT)c8w+kM>p%+{kSQ)sRfs;i-CZkTLJC66zz>XuMjl7XA zt((`#!x`!DZ^279|4e_zqm%IWU;;TNk1V}1{D6Ou;xMzB@#v)UgOBhK%#Qx(r|X}Rjk=3o8CV%OF9XMlNSE#5=_T?J zA`dURfiwP$7yUahMdps+1Y>45W+KXfjn>vViir}M%0Y(~9BuMDgVT%LhrMP*Oc`5oWueNShPzvt%`|5}CN zn4e>^TfvB!>CSkg-J(|pRtBDK24;n4#@mbPnC>yzp1)iCYZr}E{!Ynn1=olVYS&yW zbY);=;7S?zpoQm@-6{Fm;XkQ@agN_}bj}{gQd}8W8Td$M;GAN0j?P7cdm6>%l0Gic zy=b6Id1YW_;E8A8k^*&!?!|%sFAB*u`n-mZi<7ksRt7$%8MsCfx`vOl)BjN`5FfR8 x&Q9b~Tp3syxb^jpm5!Bxm4TIkm4Rz!;J+6yX<*Zs&-?%Y002ovPDHLkV1gh#WKsYC literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_visual_angle_toggle_disable.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_visual_angle_toggle_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..5ccedf346b330196fbe5a9ce4199c83a16edae83 GIT binary patch literal 37697 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

a13iJQsCW1(TT!_gA%L1Y?$^f}Ju{QsNlhKsXl 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 U5p{gqr(NI!ps^0ccK?a`A1jBCN&o-= literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_status.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_status.xml deleted file mode 100644 index d57d698808..0000000000 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_status.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_visual_angle_toggle.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_visual_angle_toggle.xml new file mode 100644 index 0000000000..5db95b931c --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_visual_angle_toggle.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_visual_angle_toggle_block.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_visual_angle_toggle_block.xml new file mode 100644 index 0000000000..ee8cd7c595 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_visual_angle_toggle_block.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_mofang_status.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_mofang_status.xml index c5dcdbabb8..79c783b90d 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_mofang_status.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_mofang_status.xml @@ -1,195 +1,64 @@ + tools:parentTag="android.widget.LinearLayout"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_visual_angle_toggle.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_visual_angle_toggle.xml new file mode 100644 index 0000000000..51091be7cc --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_visual_angle_toggle.xml @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_container.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_container.xml index ea8151d960..bd69fafeaf 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_container.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_container.xml @@ -33,4 +33,6 @@ android:elevation="20dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + \ No newline at end of file diff --git a/core/mogo-core-res/src/main/res/values/dimens.xml b/core/mogo-core-res/src/main/res/values/dimens.xml index fa65ef033e..89d49350f9 100644 --- a/core/mogo-core-res/src/main/res/values/dimens.xml +++ b/core/mogo-core-res/src/main/res/values/dimens.xml @@ -65,6 +65,7 @@ 38dp 39dp 40dp + 40.5dp 41dp 42dp 43dp @@ -76,6 +77,7 @@ 49dp 50dp 51dp + 51.5dp 52dp 53dp 54dp diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/kotlin/Extensions.kt b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/kotlin/Extensions.kt index a39239dd0d..e0ad842277 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/kotlin/Extensions.kt +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/kotlin/Extensions.kt @@ -98,7 +98,7 @@ val T.lifecycleOwner: LifecycleOwner } val T.scope - get() = lifecycleOwner.lifecycleScope + get() = lifecycleOwner.lifecycleScope + SupervisorJob() fun View.onClick(block: (View) -> Unit) { this.setOnClickListener { From 00a09de099b652442c3c380aa0275cd3ab2caa59 Mon Sep 17 00:00:00 2001 From: renwj Date: Thu, 19 Sep 2024 11:52:19 +0800 Subject: [PATCH 4/4] =?UTF-8?q?[6.7.0][=E8=A7=86=E8=A7=92=E5=88=87?= =?UTF-8?q?=E6=8D=A2/=E8=98=91=E6=96=B9=E7=8A=B6=E6=80=81=E5=B1=95?= =?UTF-8?q?=E7=A4=BA]=20=E4=BB=A3=E7=A0=81=E6=81=A2=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/src/main/res/layout/taxi_seekbar_visualangle.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OCH/common/common/src/main/res/layout/taxi_seekbar_visualangle.xml b/OCH/common/common/src/main/res/layout/taxi_seekbar_visualangle.xml index de3b7368ad..456da864d2 100644 --- a/OCH/common/common/src/main/res/layout/taxi_seekbar_visualangle.xml +++ b/OCH/common/common/src/main/res/layout/taxi_seekbar_visualangle.xml @@ -2,8 +2,8 @@