From 3abaa2663af38c855c23be19f7f1b79903329b06 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Wed, 6 Aug 2025 15:35:58 +0800 Subject: [PATCH] =?UTF-8?q?[8.2.0]=E8=BF=90=E8=90=A5=E9=9D=A2=E6=9D=BFV2X?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/function/hmi/ui/MoGoHmiProvider.kt | 2 + .../hmi/ui/operate/OperatePanelLayout.kt | 132 ++++++++++++++---- .../main/res/drawable-xhdpi/bg_v2x_toast.png | Bin 0 -> 12763 bytes .../main/res/drawable-xhdpi/icon_v2x_tip.png | Bin 0 -> 18144 bytes .../layout/view_ipc_connect_status_toast.xml | 42 ++++++ .../src/main/res/values/strings.xml | 2 + .../routeoverlay/MogoRouteOverlayManager.java | 5 + .../api/hmi/view/IViewControlListener.kt | 6 + .../CallerHmiViewControlListenerManager.kt | 8 ++ 9 files changed, 170 insertions(+), 27 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_v2x_toast.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_v2x_tip.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_ipc_connect_status_toast.xml diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt index 5bee04ec58..f0e2f1a5db 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt @@ -494,11 +494,13 @@ class MoGoHmiProvider : IMoGoHmiProvider { if (target != null && target.visibility != View.VISIBLE) { TransitionManager.beginDelayedTransition(target.parent as ViewGroup, Slide(Gravity.START).also { it.duration = 150; it.addTarget(target) }) target.visibility = View.VISIBLE + CallerHmiViewControlListenerManager.invokeOperatePanelDisplayStatus(true) } } else { if (target != null && target.visibility == View.VISIBLE) { TransitionManager.beginDelayedTransition(target.parent as ViewGroup, Slide(Gravity.START).also { it.duration = 150; it.addTarget(target) }) target.visibility = View.GONE + CallerHmiViewControlListenerManager.invokeOperatePanelDisplayStatus(false) } } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt index 0c16e7412b..163e6bbb5d 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt @@ -5,10 +5,12 @@ import android.os.Bundle import android.os.SystemClock import android.util.AttributeSet import android.util.Log +import android.view.Gravity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.LinearLayout +import android.widget.Toast import androidx.annotation.CallSuper import androidx.core.content.ContextCompat import androidx.lifecycle.lifecycleScope @@ -26,6 +28,7 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig import com.mogo.eagle.core.data.multidisplay.TelematicConstant import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarConfigListener +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoGetParamResponseListener import com.mogo.eagle.core.function.api.devatools.IV2XListener import com.mogo.eagle.core.function.api.devatools.mofang.IMoGoMoFangProvider @@ -322,7 +325,8 @@ class OperatePanelLayout : LinearLayout { } } - class V2XPreferenceFragmentCompat : OperatePanelDetailBase(), IV2XListener { + class V2XPreferenceFragmentCompat : OperatePanelDetailBase(), IV2XListener, + IMoGoAutopilotStatusListener,IViewControlListener { companion object { private const val TAG = "V2XPreferenceFragmentCompat" @@ -352,14 +356,26 @@ class OperatePanelLayout : LinearLayout { //车辆图像上传行云大模型状态查询 CallerAutoPilotControlManager.sendImgUploadCloudStatusQuery() } + CallerAutoPilotStatusListenerManager.addListener(TAG, this) + CallerHmiViewControlListenerManager.addListener(TAG,this) return super.onCreateView(inflater, container, savedInstanceState) } override fun onDestroyView() { CallerV2XManager.removeListener(TAG) + CallerAutoPilotStatusListenerManager.removeListener(TAG) super.onDestroyView() } + override fun operatePanelDisplayStatus(isShow: Boolean) { + super.operatePanelDisplayStatus(isShow) + if(isShow){ + CallerAutoPilotStatusListenerManager.addListener(TAG, this) + }else{ + CallerAutoPilotStatusListenerManager.removeListener(TAG) + } + } + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.operate_panel_preference_details_v2x, rootKey) } @@ -418,6 +434,59 @@ class OperatePanelLayout : LinearLayout { return super.getDefaultVal(pref) } + override fun onAutopilotIpcConnectStatusChanged( + status: AdasConstants.IpcConnectionStatus, + reason: String? + ){ + ThreadUtils.runOnUiThread{ + Log.i("xuxinchao","status="+status) + if(status == AdasConstants.IpcConnectionStatus.CONNECTED){ + //域控连接成功,恢复正常状态 + Log.i("xuxinchao","域控连接成功") + setEnableStatus(true) + }else{ + Log.i("xuxinchao","请等待与域控恢复连接后操作") + //断连中,持续提示:请等待与域控恢复连接后操作;并且将所有开关置为不可用状态 + val customToastView = AppStateManager.currentActivity()?.layoutInflater?.inflate(R.layout.view_ipc_connect_status_toast,null) + val customToast = Toast(context?.applicationContext) + customToast.duration = Toast.LENGTH_LONG + customToast.view = customToastView + customToast.setGravity(Gravity.START,AutoSizeUtils.dp2px(context, 280f),0) + customToast.show() + + setEnableStatus(false) + } + } + } + + private fun setEnableStatus(isEnable: Boolean){ + //NDE(数据上车)上行 + preferenceScreen.findPreferenceReal(NDE_UPWARD_SWITCH)?.isEnabled = isEnable + //车辆图像上传行云大模型 + preferenceScreen.findPreferenceReal(IMAGE_UPLOAD_SWITCH)?.isEnabled = isEnable + //NDE(数据上车)下行 + preferenceScreen.findPreferenceReal(NDE_DOWNWARD_SWITCH)?.isEnabled = isEnable + //事件数据进PNC应用 + preferenceScreen.findPreferenceReal(NDE_EVENT_DATA_TO_PNC)?.isEnabled = isEnable + //感知数据进PNC应用 + preferenceScreen.findPreferenceReal(NDE_PERCEPTION_DATA_TO_PNC)?.isEnabled = isEnable + //云控基础平台上行 + preferenceScreen.findPreferenceReal(CLOUD_CONTROL_UPWARD)?.isEnabled = isEnable + //云控基础平台下行 + preferenceScreen.findPreferenceReal(CLOUD_CONTROL_DOWNWARD)?.isEnabled = isEnable + //OBU上报(V2I、V2V上行) + preferenceScreen.findPreferenceReal(OBU_UPWARD_SWITCH)?.isEnabled = isEnable + //V2I下行 + preferenceScreen.findPreferenceReal(V2I_DOWNWARD_SWITCH)?.isEnabled = isEnable + //弱势交通参与者 + preferenceScreen.findPreferenceReal(V2I_WEAK_TRAFFIC_PARTICIPANT)?.isEnabled = isEnable + //感知数据进PNC应用 + preferenceScreen.findPreferenceReal(V2I_PERCEPTION_DATA_TO_PNC)?.isEnabled = isEnable + //V2V下行 + preferenceScreen.findPreferenceReal(V2V_DOWNWARD_SWITCH)?.isEnabled = isEnable + } + + override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean { Log.d(TAG, "-- onPreferenceChange:($preference, $newValue)") when (preference.key) { @@ -480,15 +549,15 @@ class OperatePanelLayout : LinearLayout { //关闭事件数据进PNC应用 CallerAutoPilotControlManager.sendNdeDownEventToPnc(0) //查询事件数据进PNC应用 -// UiThreadHandler.postDelayed({ -// CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.V2N_TO_PNC) -// }, 500) + UiThreadHandler.postDelayed({ + CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.V2N_TO_PNC) + }, 500) //关闭感知数据进PNC应用 CallerAutoPilotControlManager.sendNdeDownPerceptionToPnc(0) //查询感知数据进PNC应用 -// UiThreadHandler.postDelayed({ -// CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.PERCEPTION_TO_PNC) -// }, 500) + UiThreadHandler.postDelayed({ + CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.PERCEPTION_TO_PNC) + }, 500) } return true } @@ -502,9 +571,9 @@ class OperatePanelLayout : LinearLayout { CallerAutoPilotControlManager.sendNdeDownEventToPnc(0) } //查询事件数据进PNC应用 -// UiThreadHandler.postDelayed({ -// CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.V2N_TO_PNC) -// }, 500) + UiThreadHandler.postDelayed({ + CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.V2N_TO_PNC) + }, 500) hmiAction("事件数据进PNC应用, ", isChecked) clickEventAnalytics("事件数据进PNC应用", isChecked) return true @@ -519,9 +588,9 @@ class OperatePanelLayout : LinearLayout { CallerAutoPilotControlManager.sendNdeDownPerceptionToPnc(0) } //查询感知数据进PNC应用 -// UiThreadHandler.postDelayed({ -// CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.PERCEPTION_TO_PNC) -// }, 500) + UiThreadHandler.postDelayed({ + CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.PERCEPTION_TO_PNC) + }, 500) hmiAction("感知数据进PNC应用, ", isChecked) clickEventAnalytics("感知数据进PNC应用", isChecked) return true @@ -583,9 +652,9 @@ class OperatePanelLayout : LinearLayout { FunctionBuildConfig.v2iPerceptionDataToPnc = false CallerAutoPilotControlManager.sendV2iDownPerceptionToPnc(0) //查询V2I下行感知进PNC开关状态 -// UiThreadHandler.postDelayed({ -// CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.V2I_TO_PNC) -// }, 500) + UiThreadHandler.postDelayed({ + CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.V2I_TO_PNC) + }, 500) } hmiAction("V2I下行, ", isChecked) clickEventAnalytics("V2I下行", isChecked) @@ -610,9 +679,9 @@ class OperatePanelLayout : LinearLayout { CallerAutoPilotControlManager.sendV2iDownPerceptionToPnc(0) } //查询V2I下行感知进PNC开关状态 -// UiThreadHandler.postDelayed({ -// CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.V2I_TO_PNC) -// }, 500) + UiThreadHandler.postDelayed({ + CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.V2I_TO_PNC) + }, 500) hmiAction("感知数据进PNC应用, ", isChecked) clickEventAnalytics("感知数据进PNC应用", isChecked) return true @@ -706,14 +775,23 @@ class OperatePanelLayout : LinearLayout { * @param adasParam 解析后的配置参数 */ override fun onGetParamResp(getParamResp: MessagePad.SetParamReq, adasParam: AdasParam) { -// ThreadUtils.runOnUiThread { -// //融合v2n开关 NDE下行事件数据进pnc -// preferenceScreen.findPreferenceReal(NDE_EVENT_DATA_TO_PNC)?.also { changeValue(it,adasParam.v2nToPnc==1) } -// //融合v2i开关 V2I下行感知数据进pnc -// preferenceScreen.findPreferenceReal(V2I_PERCEPTION_DATA_TO_PNC)?.also { changeValue(it,adasParam.v2iToPnc==1) } -// //NDE下行感知数据进pnc -// preferenceScreen.findPreferenceReal(NDE_PERCEPTION_DATA_TO_PNC)?.also { changeValue(it,adasParam.perceptionToPnc==1) } -// } + ThreadUtils.runOnUiThread { + Log.i("onGetParamResp","adasParam.v2nToPnc="+adasParam.v2nToPnc) + Log.i("onGetParamResp","adasParam.v2iToPnc="+adasParam.v2iToPnc) + Log.i("onGetParamResp","adasParam.perceptionToPnc="+adasParam.perceptionToPnc) + //融合v2n开关 NDE下行事件数据进pnc + if(adasParam.v2nToPnc != -1){ + preferenceScreen.findPreferenceReal(NDE_EVENT_DATA_TO_PNC)?.also { changeValue(it,adasParam.v2nToPnc==1) } + } + //融合v2i开关 V2I下行感知数据进pnc + if(adasParam.v2iToPnc != -1){ + preferenceScreen.findPreferenceReal(V2I_PERCEPTION_DATA_TO_PNC)?.also { changeValue(it,adasParam.v2iToPnc==1) } + } + //NDE下行感知数据进pnc + if(adasParam.perceptionToPnc != -1){ + preferenceScreen.findPreferenceReal(NDE_PERCEPTION_DATA_TO_PNC)?.also { changeValue(it,adasParam.perceptionToPnc==1) } + } + } } /** diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_v2x_toast.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_v2x_toast.png new file mode 100644 index 0000000000000000000000000000000000000000..81fc493bfc99f4fb14dcf7c12518faf8c941fa09 GIT binary patch literal 12763 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 aajnzO1~IXTp-VrkIC{j#v-FEI7yb`g^Qh1O literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_v2x_tip.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_v2x_tip.png new file mode 100644 index 0000000000000000000000000000000000000000..3e1e27d6bd4d834d43cdc89e991b1495a4cd0ba2 GIT binary patch literal 18144 zcmV)cK&ZcoP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91jGzMm1ONa40RR91i~s-t02pS0CjbCI07*naRCod9y??CjS$W>K_n9Gs zV}{BdT7H;-L~W1xr>2%IRd&W1_@gqBf+ea^!;hh7i09SJGEQQAxdvGy_C)Xc~|C_=*Ak?ob-o3krp8KmhM2}eiPtm2<=xJS&HgCWC z`5*qa-R|TShttC=H2WUz8ZORzuZvo5`uTPNd{BfFfMIZl92CvY?KZ~jqFOiS=++^rZ=)Tacn-$-rzHvz4&T4`F(nD^?Q;Re&uzClieGY=y$O}d*9!) zX}nmR`>a0I27%*1)S=KDSC3`(MrRYj@SYVVnc>m1!SFQ?cpiix3sYEi%fU?C=oo-| z>N1kPV*JW}e{%QkPhRi~PlxwB)bo^WhrjcKH|?JFjPKX7{-~Dv#cY}n$8vkt{JIk*ehjy^XxX!nZC?S4ZZ-SXK`*zR#>RtP{ zfAo(C`BZA;{gi2kpLydmcF*{;Z`GH-@6aya;zPlPD9dp`mTcFJ@t7TA18Ng(JKkWq z_0@|Z;b+Gfo4y=?z6;7CC{svR2v!_D7)S&9DS?suN?Q~SH` ze%Sg?fs1o}3gn@$cz)#NTCShgGykPtXz#p6>}O}mX7!z+ldcUh&I=vzdWSF++}P}p zL2hv6$2;tLYs32;&j()vwRxZnh|O2weMbpz9DF4($CIBtAjVIg#It>O_}u<<|Cas# z^x=C;`fJ*e)7P{ee(vqh+a0dFPlx5TYa;WGl4Zj;Y{wfXpU+JlieQ&TXMeo`dP&G` z%#AzJ!hM!6W8qBK#krj3!`(gv+4uLj z>*v3i48Jy4=kv7)efU4_xMBB)f9@@c{cbJjvwP8Ng|musZtNuLMONCq*zAQjV7@bIv{N16X&J&R1^d)px7i?!o=( z;hnpG@o#>5f6qNv!hUkEqg@Grl3g1YUWX zY(4Yk8}T_j``!H_y=MPEf8=+eJ(;cZc+z4Xe(tT`tB*WBs%PADd|14?2|o@=+p6zP z^lAf@y%*hMP1v+)D`IxC?C`LsUo|^!zl=D5aYiq?GseYy#i%fe2a?d(bI5#0tej&5 zkXU`dJTt!SVEV8+k1y$U>dyV&`uR@<@#I{oVmVlug{R_!}#W z((gGc#bv>4(R_1wx)PZ!B|i{AJ`5UR_lAX9n^1R};&G63hcGpG^A>(wlRw_i*p&Ff zkN`Q1xEeYB>XS1c4mK`*4$(1x(U*|kMZM?brZ2p6|E~Lbr@vIS6Y8EG%CIWu>$-$;yjeUmjx|2h68|)h?j=;e(33HJcBH7@jw;H)`SA zReVdG#ddy#%H0WVg&eW)Ol?mj<9aH$*od2ShYv^P;F_dq-%o647e6QI9WIl z!m%Iez3MT@lFwig>?|K*^SW<6Iff5@{McyZj1|!1 zxp`xeNw|D%v#b|y^(7!aA1Y197!4XaWzRJ8;nQFobYa7{cXOy6U*>uDl4a4(q3-wq zr&e>ZL0Nr7O3ayOKgrr|{(k@9?#ki&_J8|h_rZB0+Q}0kilz?Bt9OT!PwDpmY|phL zJ`k!b2SWoEMr|Av8G2EB1G&X#5wp0#i{nL&&x^%E>sdaYz1A&lZ$k4Ev^m)r&&=&R z#fZaJu}{(nDxT&KdtnA&Z_~(eayl1so^}og7~Lyj zvDZ+#ES`k;>qq%&OfJ^de8gP%=)fzovDTK+hXEbE!3EO?9nFp(z6B5&{KQNy$#2Qo zT83M*^LGvXQb*j%)BcK?Cr-48t?F+&>`w1F{K)Iyr0L_{9`^%t_|RK_Ov`ka7Bkwl zl3rYm$0D-;tO#vc4DW#b6yrzI?(M-y9~;;VTBz!OyeS zDO#@zF~g)_&*6jQfmHa*;gE?oVwfr`sBeSFnJ?H!H9(F%a$FN={o36SCm&O$)R!Xr@4c1SFCWWmyc zulPJW4U@0veJFf)Gk@kf_~Ti<`l7Ms2R=EHvp&tOPYY(=3xAVe@^tyKcm3o}o0{-l zW?i=RQ9QDtD))S}U{sNKhgHu)q5o$Q^{=z|SE`0as^cpyi7 zu#u*xZFu4ku6<}YzHl?vL}x(?yz4ue#$ne77) z&#}HL!1wOo|BLs5eJri@AGJn(&hn2{jNYNw3e!n>6xieT6D@^|1#`i+%TY2UH(#nK zK908gWeuDDVqW z&x4V~o1epBTphF`xf^z!dgoD^)NfzaHgLA;OYW2XU(lWAF?~+sb++E4xEy}=2lWZ= zjsHxm=?~?+m^^jWjt@^6muGf`t|GfwTUp#;HxmP*$7^;I{vt$ta;AyTIa~Ga-vSh?L0cB?7lNDhiKvqcCDl^?K#ja zkBnd3?{ECh{RbZXC&CxJ-yr1G8{Zq!Vd3Nc=jFL9JPTWYrp-%ZF&FE^vv4XP_70^f zg?6z%Aov>RjSCo6a03(b5q~`_#5BuDkF@ZEuVHI;eBTiqhfDFDOK*aVOADX8f=v$~ zIQ$+mt(P54G<PpL%RG3TeCRuHs!-`TcI*IEc{+tOV(BVH|u2bp&|E8Pf}t zL+7{~j_h?vHt~faPoT+n;S*-~r@eCyulYyu;i~Z+!qzA5N_)*exvepr zI^xo_*Rim6eP{Vy6NkV^bBy!c48BGz-l{cmW)}cP zAI!;Hu^yw$GDcK`ws!s%%iYX5xd>aiCjXvtYdrlL*(cP-?)h_c{lwu8{iy79wCg%B{0y$r zzb(t@pbjNlvUHauov2@1wJ@Nn=&^XhuC@rxMeGFt1Al$*;W>IkvliEy(QQ7EJ~W-v zIw$VPi3v@l$tQl@q3r5;c-9nttuZ$FRex)z-_D1R1BpWAzs7d{#H~Y%j}}ZVyW>k|Rs9%Tj!Fw+C zuMsYPhtWR;k^DF;iN#T=1XU#mXl$-BqzD(F-kwU6Cd>FFI%Iul>=#*f{-@Q}*^!%{tdY`X8C? z51)3Ssv^BuWG00yfW|azE>E~&%Agk$JgbpK?L{&fbG+5ty4+DVi|1I47a?JapFFc@ zade(pJW|CT-0A7zCr%!Dp?)@Y`FTPV z9EURJGWB;YX!e)o=V@U}J>+A=$d4I1W6f&5+5tG9E2pp6fB2L4+IN+UV_n6+){;YG z0o!48U1#&_1G)0S*8?uC*5xd}T;x|DW%QG|IbwfqcXG?OUF)CaUi&3U|JGSzFLi-h zrCBKXlChc+@xm+x7)Js8)uVa6(9KEF#V;*L6qZJmIiH0J#cf-S*p6RgG+`6hO#`dd zhl2P=d;o{TdoMaHxbZ2S_cHEw9CM9NthN5+(<{)qC1-rCg?8)A`fc@BoT)+l!HEwJ z^>{|D8V+nAo)25`SB}On-97vz_WG*rst3luMPYZtJ5X>^^sZ0|^@ch*r(#T!az-wq z=e+i2aV(YsWFl#66(tKDyL}+>@l8Z8N_5a|?e4SKp2@3*Hl2sQMx$beC+Gf#U)A;M z?W@9+MCWB~$EcX{lYehu@*$*FP4&l~6kznmr+$$KUrso!jjQi0i! zj9E8yZdB(K?O9ttzlMJ2h(X|9hvvtIOF*@*kJ^2gm3?5#Z>aqgUOBn`jJ*cN>ay}1 zdpO*(JNctG%X?wF@WAlPeEj=aM0K)cs^$Vl(wf(Xbh2QwIRe?3dGi|I$@`yTk$maH z_YfQWiq(r_n~akmZm_|(Muj()F`U*krsqAmMsI%AJMz-pX?Cuy5o2m0j&Q!Cj63Db zXXYLZ+R*7EPM4bL`2)M_S@|IrU#M=@(xBn~-~6P{ z9iEQ}2`0TMkOByqHb&rCR5jZukYbmoSSQ*XwE2u<#h>BJ&_$ci1^`m)*X$@%JnT5h zhxiOjVDL#Zse-&_Yn@dK5_8v}o)A79INY4T$R)V>CKd>MTGnXhZ=-XpS~X5AV&n~+ z=U~)o1(kz-Tr{TCS3Htyd!D#r6gPZb^$VPK58m|sO+W6>Juv>!1^t>Z4oWwVm%!M) z0bU__IV6?P`kurRxE6nS2;{-s4nB#?6Z6QgIV(8p4)dNV4y~VY>nOH09hNNIeDJKNXzh1RhZpZ&^bM~o z*rq%8z=-q4em0CGM00@_tg&qPdxM-T^1`f((Z3h&LVn#@;F0(lJ~8>b=(fJ&!!LjG zwS+m|EcrUm-09+HQ;a9)OSHr zmR-1&uM&f8KD`&sOQBh`eF$nXy)>fD7&g+P; zm!Dnp%S^EDmMZWf1JDds5A zw$Z1ksmr`$L{k{Wz(#8yn&G!S&%!M~@jFJ4SHFfIt&Y{2J}ja$&qHH!t99|3)Z82i z;1}F2HOxG53~dn0JazV&*;t^7zO4x zY@56ZL|%IIvq*ZHbE&o@gawJb>j$>oR5MBs%{=A;!8X5iR=&AIpk}2(I=yj&FPr&b z9B6XDTvw|&opZ-RqcIYGHhV;$D~iNWHw4SgDOKm2TE6SjAyU{>CI z#%DbdnL3WkouqWv7`->i%^qMDNFE+KpRV6|me%AeM`&uwzGCfOa(K;O`tz~ox;ZfX zM-K$6GwRb8fuh)#La^|%LO}nVNV0TdPNMwaTmjjXHigiLV?Hk1=EAn$RRk_<7Pb%1 zF&`~-l2bMcoo;Ka9{01UF<0%K{}KZcwe`@9_}H~ThESUyskuKVnbl8CaN*SYPJj0E^H(+e^p6<>& z-0)okaj~kedS`6nl;7Ao$Th|Zw%FDfYqDUhk2V`yXm57a8NTTbD5`pfzJ#%2?T?Qf zCSRi^uK2GOYPiRN*?s6o^qZm%w~$abP)3$+kB1##t5py_fgHH@vC#U{_Q5f~7Qiuj z@r*RSKYO9@SRrL&y0F&m1Kc?JUg%9s+jXg!8eOW5jS_mqth~stAC4>S8M7ut5e~as zaXLrtJYDCgL3b%Axl~-p$P9kX`$?wh;Nvo11GTm@#%>=I30lwJx@ep;yJdIBU)29a zl{OEI{`ayrw$e5s3D#jc-Wc+ki%Ef4NP&d52ZDs7+ez6lHlY0>3+rc8#G)0xEQ#qL zQ!D&vQpd_^Eo}IDqtLoc^OFH8>tKGz&0*&5f~M;$!5Ke!x1ahpFImEeZ)t0QS#x&Y z!gY@p9IqApdXSqj)nm7<_Kz`-i3fmMU-1_Q?8(V1K+wj4(dm9gf(LB6NoYqLf`c=V zEs2A#jWM1};Rt5;u9Rcb=*L?Ds>p(8Rz*e6i-_ze) z${j}kp{4@qe^gCjGm%Lm5nAObJr;mu!C;T4$I~aLu+2k*hQBcg*uU7~%i`f{KZW$8 zG0h*EE;c#&mfrcnH96ggkNLVA`FCFFkv}gdq}TepmUFRVEh>M46u)17x*z!$hq>1x zi8y9IQG0({3!L#7gts4_KXF!utET>!-Q9D)?mK|iOVX8BbTEuv9Pv?O-r`9>w)%0$ zo=?6>PQrXAvNQfdH3S4reZgXvW5P%>yPX?`^g7~ zEk|g^sX7WDQes&6$_+2a<^vvfgc(eDKpJj z# zRoY0qsLI7%#j?u>Itr6-7GXx6v0U!jys@DecpTN&IXXISwbVb?qBp9wETaqDUaw@o z@bOoy)`qv%$GGRlgzh|7Z2O$ObIg95&!rAz*C&Bnkvieu-N^sV>xqhRB)Kxjza94> zporO6fL?@f8W(;xxwV|B_#G?Q=FdJ!u$W0^;YY#=Ccloq9J-NzXBv{9rGr0fxM*Z{ zX;BCHb;H;3$uZb$@XT3OI7RFF&6GRgDi56Ki884qEt)$vAklqDw!<8ip@L z?u1>#z-oZ4f@E*7?Y^0_a^vo~|N2D={7n2=00QN-$&^;2?t1JKSaPy8KYd~n#gXA~ zXQ0QVRx;u7VPE-Mr(gqYyJO;64g*>gzSxLk{)jd6Be1oEpue8h`I{&0KIqsxzj3C^ zM#1q{RPz*d_$&XT`pK*FYyGJO|E#~`4E$03aE8zICqmmcd~><cHF1_?X`d242n2_6)_VKk{wu0Hf7$iZbFb zCvHDFe%tBYy5R2HewDrt2#`9G8tAZ)=Tc8<&1$Xr4{76TMm^~H(8t!fQ{#pYRu9{& zXW~fsGOBB|MqZgtU)MeI?k7<9MX36Sxw~O^EAL@$b-^0&l}{FUdxvpB9YDAw(RU02 zFs{NGLu!rMylW-fi&5HbcsUjDJJnJwhuSh#xW)jFQ&(-scT8j$;sGD zT-La)(=~Y`30e8Kzc&$F`1OnhphMDiGo_v7$L=-t`UPWMYpTX3N1)<>yL$ZqIwwaV z8EoouCbC}+z}@}I;ahK1|1I^Uk^`6sp#}tv=u7~cX8v2Sn%04k&wQT>l8T;bP3Xz! z=i*^Xe6C&8HXJhX8sZ#nvtHPh6bgA}0_dis2ET3B>MPei9Q{P=9HDn)kB{napZigF zg7z9WCR)q{^n#D0rx;}qwIH?Tg13J60nFTDPXZnj1)fb(cRcX&G7ePz{#$O8>A61D z4o=YAEy4*H(O~M?(eo1WhEz~uxW-&GNunL27sm7ED_G(VLvr-Ae4KE##7Z8$kQ+_s zKXnj_HXj3Y{>7J*bT8Y)%EF4!`8U6{5uEu%*-PRYSDzAdZWePMtoarTf7U;IK8RDR zbrP4_79EYPQfq8y4AAP3^g7sLym7@{_|Lsjr|RZ5bnnD8@gg7#(c}nwvGCV3$Plsw z=EMSTck|Ju4SuG&_C_|pGhl9pk>Lxg!_(uIn2S|D^Ss4^BsY31k1x43tGrw1s=Z{w zuNa<0zUw9w>*iRCzf;)omtdrUk9^Yi+(sOFNLh>8^(RjJGycl&1i;YHAVe^or)^_R zgE4TS`|h(p+p}Uk`(?Tx6u~u!}#Q{iSVk zbQu~g-nxH-kCFrRdca6?UYHwfjZE9*K2+)Kp2c^mZ*I=8^Nn39mr{yNa>PZTztkhq zUUJ*p?*!2ZuW^H~0r>SLt1<2Y5*~G9>p*DUe)Fv#oa1ZQ{_s0KeZXS_ovT=OpmFUs z*1{V|q>dVH->tyW>|OI;#`ws^c?Mp0I~j#TV)BDytsN7m+8p=X#?r(#_ixoS!1|Ry z=tw$d)~<|>RXLsd4pZNy1}seF;$&PnHVe(e(E&?RoPfH(1g=dss5Uy8;2v?hkZ`c) zFp+uZLcD03%2af;M4gn2;IiT$37p=8g!)ZeGkN!;!^ED-xUK}{VgNxuy2LsIx^q2&f*K3qq^@pTe)R`g{xNzX)yk)%TosceprOL7S> zL7gJQ;!n+#mN<4IAz))ksPjOj$H_x;`HNBm&ldiSg=g?I-aPxgD#<2`kXUdo)51(F z^PQ`hD#ST6uli%d6+He<*g6-~uT`?vSw3-+W!7Uoc!^rKT zFH_=I&Vo39CBRon52?S!xCTdM=n%|>%b%aehyZc=Ko!MZkE6+TIg~0O&8m}+S%N8y zL2zrKHCW4eB{$iFk_eDfxETfeb|^tzhc z{F)%8)|(&P)Ui*OmESS(C6~@-&i!L4PBU4UU$Hj)MT4RBPInLKC298%)PAs0{j9X4 zR7SF9a@Ni!KKa6LPW3FR69VhRtv6%)OLzPF;4lFjOfQc4SuWKaaaA(4Z6o$zQ7id zw{^&(>hA-ILihsp+Q??D&S$@Sh%c)j>UjzhO)rE2!iZ3kpy2WmK|UUINveX9n}Q~R zl@Ac;AQgGq=1X%g?h@01f*r+G^6uofy>iUh5tE)ko&V}{QkS@pH#}mQPZ>4N`o!+{ z5lj8f03cWqt)nr9XwLPrtUDA&%;1M3IRPj9#?o5so$MgEgukANd<=yXOU>4(FWwo7erQ6;ZG# z6OXY^+l=MMC&nee-sG&S;|k=%0H2K;^`nQ+D)J_8V}-*SK5JDC!obaZTB7qqIAfT{ z{N_0k+@lS?&dQB?lK&x*F|Mtj&9=+c$yI7g;$q2Yc7M9*Nz_)|q#1lxrIN!`hXJLI zW!)vOKGasOMM~slBjoIjz&GPZw^M`eIBl@#rSt$Fzb6gE3|g^7-{HbH2PyZ^I$}7{?gBND$a zIXOAjB`#}R=e6Y2hh*d=J<=PM8QW`Bb@`6bHC6)W;czXnIuF*@;}N8BYn;}db$hdi z=9**i1?YN;onj8V-@j466a4{KwMn!^)`e!HW^gI^Z&syna+5nS*HDu#u<2HjnB8S; z?HrIsS|y8OQZBL1SmfZ1B5qUN3t7JApy09m^bN;;t=8J<#e~cwVXU`_(*dfu_NA}L z?)u4)3?{Aw3Oel-SHW$Qzt@<2+SZ5Ks@TzK5ys1ub#g7(%4Y!M%3p&Ac+>lU(zVXS zQGnqF6Sy}diPhmLP$z3ly)iSr{Nxz^dUu$KZ1|2vY$;R@=GQHIP@N3uz8JkE#L(jn3n# zov(hRF1y##ZzBqC0+HeIXnT!M_c|~)>>k+rQ{RAkLo{Wn&xsrd1!2TKrzTGG=jm(K^p2b{}vbmMn{|TX%;!zZW*K^21np zrz)uGnR(CpvtA+*qvDKQORED-J~7Cv>j?s$8?LH<*yIr0xp@Gv;+dn##LmN${0d=B zPz%xft2rhfH$I{R^Ofg);qa_4{;>@HmjloVz6NH>;h-ppmeshEv>l>6e6l&`GBJ;* z?Ag$0r4YtlP-}Ob$)9TVdX;PQl>tKfOI!1|jX1J9 z&#}4TIHp+;Yal$>(cs%QH`hMfms&NCeX(JXxpM+Cw3+mL;bI&Z^MlKTpXt>=)%AsjXH&#@oD#*|oSRnw}}x+q#{kq6BO5j;;c3`h2u!e?xd4%gt< z7G}-MFI%l<#cMmgqQKXK*0}IxTk|UTj73_vyy*XeK_d9=1T+M zq%DSC9~6!KY>}U&^mnG;nDogFf#v|uVi2eG=V3~L_@6G z^TAP*VB}BlN%2L$Y)jnetTCN{MEnFnj2OPmnr(4X_zm!3q6VPdGIx^3bxb(x7}DUb z{NtCA5mSuXw~pU2J+H|&zKqS+8(tteFsHj;$37NQ4v1M;2AOM=3D+)w+LQ?MaDwfP zYYKBGQ-0-m+4MYLXc-hHe8Oaz2U&=mIhC^|j-Z=9q%J$q1oKMA3r>TCO z7XYr{lvw9Bb51V3Y4rBN(%AOudqdH>Y%|umr2gsTCG6-a*|KiGINqmZRGEqRs~?=T-2+-5Oqi$lTE$Z40?R+v(f9@A z`NA(s;%G7@77}(GwEbuH_ucmhqk2hV^Y;E8 zR=&66>%4m7dfw3$ev=z(Mh(UhuN7ol^*r`Vd-Ata7sCp>>TG`eAX3q0?4JUlZ$4_u zpz~mAO>9ikI!9}_-MG_FH)bx!+j3x-K)-gf#g|DSiCcW7+;!vFnl#k|c} zSj{gj=TY^e>hWo6+L(}6mE-KEG85k%b;#}k|4i`xOH$5M4btq}hGdUm~ccf%q7X(%s4 zyWQKReH%;Q2Cl}v4zY7B--<1BNQ!DcfaLGojVbQHYfv?XV@hOfhp$hZ9jkO(hn}|P zF~*Cd4(J)I4e*`Qmv{Hx`yUYj^SHxsQ_+9+{Ye)94zVR+>?}|(Qul3lUmE}ye>Y<- zcLCpt*8(2lya&>9Uj98ht5^~Z8HA-!bG!r?t-X-hbrxoQck09vBEGyBj`2pET+n0k4O^^}v3nm2W21eD(7A;1$Vy<8hR+ zdT_mgi7!8}F17=MZ@anKIB=cc-~-+88?o4>p(AEody_|I<~yc?jTo6Fm%O}IeCu_x zisQQG+^W_qTj!@`p7AH1!_;=HiKPKNC*h0dD{iQA~DvVv%wh0~l{5lP^!q%Bf`+Gf4NWgL8X32dyKXZbC*Bq%My zbzJgFtmI@TIq}RW&Bohce(HhOF*CNR$W;@3#;#uzJ}QS_^Py|aZT`ktf38#FM|;hG zYNBsc;+XGY^2D`?1-Nno%jT+gI}e8gzcDKoQ>}$Dg=3udTl;(O{ZD#AKVFjBsP9~V zjN~P&$C6Y7$g3Xf$t7?H4_Ev;rP$YopXR=_&gBD=|9t+oP(tt^=hp4shX|h@w6Va->f@y%x&bDI6uYK)D9 zmaiZ3>5t=aYsOx85WiBIA08MJyOVFmz*TW;@rDnx9&BIR})!i^o&l4h=XpQ_ajfV!Cyfv@-0j;@sm*COhj7LnZGx+v{EquY|DYso`VcX6e znEksx^m%Q}uTX%C0B=#v)n{Q+U}LmbZ>zt^yS-C^Vuq-aV-l)Mh7bZ?r zTGO!%;vyd$Jw`019GYVrInvy%=$JRx#tvh}VLpAoq7UmnKOi+Yb6{fM-|YejE&={{ zqZnyUI_L(2Z5Fig86Rxy#dm%gLvGE=$@8i0K#FNn4qGxXP9ZMfSMEvFj15*i5%oCB z$Da6skXIj`k?Y_`qYoK+t;wKuviZyzc{L)w=9esOKdwLgi?>eu_+?;O@5V=yLvnIsCa_5c9XeCXpo2zb<~*H6R`s3hYNX7&|`vrKsX`K`emt z)-wkU=GKrz`wY;0G-+T9p0WPIA9tT1C%@p_;jjNU|Gl#PAO&R6C8WO)Vhe?QlT`dz*P^|F0=TY4 zYXrujzi#e11Qr=_J0_TnJ7#d$-Ar6#Wjy%O^;iMN#&_)f?k9FH`cL1<4+*s#y+7&w zt>1XJHuJCbS|q_jRZQ2=T8qt`1ogTw9QArE(mA}u5PE1e2tH$cJw`}v#Ws9kW!Tt+ z=Wf!R?f3`wpZ@g!X3e9^`F9vV|NpZ-tYUw!lcG=_-B<`O2EFeL@z|!Jv7L+(o&4Ns znveb%iwDKnwE*kYvl~Ag#q46?k1=-`%{k;~>)vG_bLWIs!`0KozyG|$g3kx&CExZ= z4ey@{=2+MA9I>edty*erU&qHea&|7AP}u<-)lVhXArA1Re%Ib>ZMy}6XV^Z*Yg_Ge z{Cm5bZu;;FTgMk3nEeMn@YVh4;e9L;T4Pf)@$%azHEQdmGlUS+aH$aIR9bL*JUEabSC31&!-=Z!IsswE*vTr|&(!v&5OJeOGqxwXpec zq6;E>n}R!Ea&dS7aC#$``oTE91sIc;6d+a{=yME#d17XatvL)CgVBXY=h<`H3a8Eu zPPdbj_w9e_m%iH5iZ4~+UvUG24ih1OQeD8?yMeT-(NzK$>VDfhXnv)|9 zTlI7qW2X*!7ZA_FnS9~A`QWyEk!+h-1QlUuHb8wJ)ULh{N5?dj0M78syBlt}3)4mI zst0EOw?Fzv+N7U^?88CsBY_mbJex|=%OYip$&cP#dQ3D@^nAf)F=NjH7@8Qy^OJXJ zgOA0F1t31>q=}aSb1jhj!ZtsQOI!(aPW_IFuY)5+9-9XfnJN!YdTt!+h@l@ERG!8b zk2_^RwiYJX)YkUuJExA@eIJ|wBk=A$`+x8c{-{mo^;bPGCj7xoKcz%I=fkexEb{R} zds7sT=df$k#kP)EKAacw(Jc~%4}JtSm!)+4QpU!?;ZZ;3ZjSIPKZ{s;=9^}W^^nn;zu#Lpy@+ZMjs-lO8!^lt3nqbA~iR^>i1OUtb>4ka3{2UGBh8bAG!?j zA-uKi_n+H6_~84?dtrCY1GB&T?uT`kdCU6D8XMwbk`%VK=jEvqujJ!T9>%T36t@?; z51xyy)LY*hB76=|vHyvW z+^f(Z?@db5d7qLBQW$CV!JC3mvUrPQYm`ODdL#NTsRE5CvR5)b0w z_1YZeN4~BlQjrHU@JvXch#;KMGRL-U4+?*)z76ojt@->Jp)cJIKmK3;Rc-$N>U_QM zNiO-ZktH?yED#Gd4vY@d;CmpB1khmWX2I5un0*@d<{#sa=g|qCaq}HW^XMc-u$^?- zJgvMsAAlZrzs2?eoV^pa{J3y9$fgr!%9y^}h#^Cd@in%`^cZb#V{2D$OkIu-Pv$?Q zA7S`AE9`3HOT8owfzSV&pVp!9N9B2+!Gdxav;q=#b)j0=~{LQt-Ha;e+AX&M> zbL(6)%hhoKYuY$G>%8q?eK!v^aZ0-}xHuTJW83NJ{k!Kp=cnVm+_jW02L^R`>l?mt zcjM`2HGB?5uy}rx%Rkgo>y7Y)3q=V>AY&PI;zvHN!{givHn{S44h&;o^Di4FX*x&axKtyLjqb`n_BE&b_9L+JG#&LF`HJf9_>O{c z+P#B z%^K1(pH1d(ZMJ>pS$xE3ZDR?*!;tEW-~PO5t{51>*2S@o_^sFZHDTm$t`y)^&M{%r zsPx=3rwtq9nq#vagI1ummi#BLg@CeJ)mr!1wpZ1M!=2ZASWvz00|ROQ-j97sA>Y%f zvFLpu`hQl(=LfYc4{Uxm%GP{FgRdfOFMn^SXl}Wi1>;RBd-!5DU-s1>SRIU7$kpFD zO}?)+kM7L5hJ(?8{%t!#r66>mb^n-UCl#Lg^ zgVh||*+XV>sO@h&E6`*5ZU_%?8IOIz{jxf~nfj<&r~atOhj+a0g@=cC|4du_yyQla zRr;tSo8Hf`vEYj6XPSB^A%WJ&=9U1Ga*RY<_Z+Kzf=onj$d97kPo~6QftkvJGISe-Brhqb1v&T;NI`QsJqK| z>hAJ8=b$fTswyspJr{KN;n%)Q_5EWN`|P=BSw#+s7gdRm&5??2tp?O^z-828upT5A zY!*;fFXrHbUl(qjm)441#}#Svjn~B*cq7nx5N91vevQlvXXMnj-ZwW#P9jI_sGE*~aHBe?f|UnkAGITitkf0{+4)e%KH9*1!VJi z(CESCjT{@Hu@|K5U;-*moOvH1E#Q6=7<>3VMqCeC#qD{=j|-9J)Yx5Y&Qe1@K@NXY zQK&$1ALl}VwN;$f#5Hm*jn1)iGJWt$4D8xg|2hWa1sve7>chzId#r~Awa0v55ZS-~ z7w^-p?zJlVlx219y09p@y=GB+k??2vgUyqJmCwNn&Qs(yV9fm`&APoHrG=*XIu+)7 zIvBAT6aP3oj;TCKJNarxJd0XThr%Bk$&RqMz8K0GF|f9S4`%XZ8ixwpTo+>pA0piD zGmUoJs_*)NTr`f4x8bkd|HFTHAJfO$NcC}RhaY^+o3zY#S+t6#%Uof`LZs;7BLkUy z5IUQ|*W%V1d2x+xelPqoZ|sGd%4U*A4i}q3&u*0#jKDQET(nN!xn99A{aC}PRlNbWrM{(I1OI- zr8N$t@%YsSuWGWbd>cR5wx3h~_KpEl=`Wh+kNMJ>uZHe3{t37!gD18fe&7L#26p+5 zm+AMd{E`Aak4R&Yd#%*l##+<{vW`w{Y)t(;jpoqu5?2Dv7o)Yi?}N9_Ge&SL$;|)& z20lqdK~xCCO0#4F~4#03ct3l%K_W9_Qg*gD^uh3U>vzN(|joR zN*$KR^f}8$^PI`!`lk0B{oVe9_k4DL<;r);$4Am$Gw)R|k|y4Z<=O5HF<9_{i=p2S z*<6dB4Xlk6EH5ij8JoXiH;1Kjf-jD6YkW2_`V~K2k?2G~`v_+kzNIcJ8(X}9e6$Nii5*O>G^T?6*`xesr;<9l~kuISfD?B~zZ z=t$%cu#njZM`XG#lE>w*HE;iVhz6GdoE1yO`OzJm!)N}$L8O(xa~S>_(BWf4*MoaC zyk*bfHwS+=bdT-R_9gl5)IoVv-*xT~*W0svPkKAN`HpWqJp9Nf^bNW3gViLFP3Q3B z&9L{Pvg`K&wt3TaCy>ttcv1V%S!nFFKiVG$vV3(YQP}=`a4GiYkIm|wdIPH;esoKF zJv)2@U~|=EiL1EC-m0i%uVm z^7$Z4jPWIF{WJWINiW{gWm4BZJn)a(e*ba3v3;9ff-d#b{m1mjYyLGqFkQ&u4X=K= zzIVwFB)`;2^_pq%Sig~IFQ#m4CM|djvCW@{kq1n30EgnemWn;y@%y?*s+#>+EV z8^Qi|A^qk!IIhb^`5@%LV0aQp2y?wPJQ2x@D5=IcRWzT5qZF#H0-U(g#`{}(g1K1DB2ivzQ+-QkW` zebesb%ANX<`t@4qm#lY=d6%h8h1eTbdwTqmH90`*Wu|$>ar`hTdBl79mF>DZpO2WDMt z?a_YsU%v8X>Rzr5dxd=8qm8-Q814+UaqMFb61!ThUq%*_J;PoOcU+c3#PO&k z;J>~5j2@rXw?gjSedaTtg^BCw-2PM?nBxubd!GOB>%K!jlKyhN)BSe6A-z>w_07UP zGh3E@n=eo6A*em2>%%~R-fC>?7~gKke-y9(`+LW)L-}<*?$!8LpAPRyNd9`-pUMMs z-U9gd?SA&3zG(L+hi}#Q=yiY&-=dqvbM=kLo3+_DYy2#|eBG=C(Oh?@917hf4iD+8 zvWN6x;2+AS|47w$j(?@`zfhb9bocn@yW4O7!qt8Y=Xv=&U2Xpkd?nIXUCE;-00000 LNkvXXu0mjfkh3}K literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_ipc_connect_status_toast.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_ipc_connect_status_toast.xml new file mode 100644 index 0000000000..870a3fdad6 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_ipc_connect_status_toast.xml @@ -0,0 +1,42 @@ + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml index 15413fdf70..7e5b1b0db8 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml @@ -222,6 +222,8 @@ 红绿灯信号来源 已发起上报 + 请等待与域控恢复连接后操作 + Wifi连接状态图标 域控连接状态图标 SSM连接状态图标 diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java index 2908c58310..c2cf7d5664 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java @@ -34,6 +34,11 @@ public class MogoRouteOverlayManager implements private final IViewControlListener listener = new IViewControlListener() { + @Override + public void operatePanelDisplayStatus(boolean isShow) { + + } + @Override public void showColdStartProcessView() { diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/view/IViewControlListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/view/IViewControlListener.kt index 6622373275..403538bf6d 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/view/IViewControlListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/view/IViewControlListener.kt @@ -78,4 +78,10 @@ interface IViewControlListener { * 展示冷启动进度条 */ fun showColdStartProcessView(){} + + /** + * 运营面板展示状态 + * @param isShow true展示 false隐藏 + */ + fun operatePanelDisplayStatus(isShow: Boolean){} } diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiViewControlListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiViewControlListenerManager.kt index 60bee83c29..ef89d323c7 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiViewControlListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiViewControlListenerManager.kt @@ -121,4 +121,12 @@ object CallerHmiViewControlListenerManager : CallerBase() listener.showColdStartProcessView() } } + + fun invokeOperatePanelDisplayStatus(isShow: Boolean){ + M_LISTENERS.forEach { + val listener = it.value + listener.operatePanelDisplayStatus(isShow) + } + } + } \ No newline at end of file