From 24a65c8f08c577fc52a22b97a7a73dad5fa05c29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E5=AE=B6=E7=82=9C?= <2029049582@qq.com> Date: Wed, 21 May 2025 14:22:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=B2=E5=8F=8B=E5=9C=88=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Game/View/Family/FamilyAllNumbers.lua | 6 +- .../Game/View/Family/FamilyAuditNumber.lua | 55 ++++++++ .../Game/View/Family/FamilyJoinAndCreate.lua | 110 ++++++++++++++++ .../base_project/Game/View/FamilyView.lua | 121 ++---------------- .../ART/base/Family/ui/Family_fui.bytes | Bin 58205 -> 60494 bytes 5 files changed, 180 insertions(+), 112 deletions(-) create mode 100644 lua_probject/base_project/Game/View/Family/FamilyAuditNumber.lua create mode 100644 lua_probject/base_project/Game/View/Family/FamilyJoinAndCreate.lua diff --git a/lua_probject/base_project/Game/View/Family/FamilyAllNumbers.lua b/lua_probject/base_project/Game/View/Family/FamilyAllNumbers.lua index a286f112..4e0702c8 100644 --- a/lua_probject/base_project/Game/View/Family/FamilyAllNumbers.lua +++ b/lua_probject/base_project/Game/View/Family/FamilyAllNumbers.lua @@ -69,7 +69,7 @@ function M:FillList(numbers) print("lingmengtextBtn_detail") fgCtr:FG_FindMember(self._group.id, numbers[i].uid, function(res) local familyNumberDetail = FamilyNumberDetail.new(self._group.id, self._group.lev, res) - familyNumberDetail:SetTickCallback(self.TickNumberCallback) + familyNumberDetail:SetTickCallback(handler(self, self.TickNumberCallback)) familyNumberDetail:Show() end) end) @@ -77,9 +77,9 @@ function M:FillList(numbers) self._viewList_allNumbers.numItems = #numbers end -function M.TickNumberCallback(res) +function M:TickNumberCallback(res) if res.ReturnCode == 0 then - -- self:FillList(self._group.members) + self:FillList(self._group.members) else ViewUtil.ErrorTip(res.ReturnCode, "删除成员失败") end diff --git a/lua_probject/base_project/Game/View/Family/FamilyAuditNumber.lua b/lua_probject/base_project/Game/View/Family/FamilyAuditNumber.lua new file mode 100644 index 00000000..d88161b7 --- /dev/null +++ b/lua_probject/base_project/Game/View/Family/FamilyAuditNumber.lua @@ -0,0 +1,55 @@ +local FamilyAuditNumber = {} + +local M = FamilyAuditNumber + +function FamilyAuditNumber.new(root) + setmetatable(M, { __index = root }) + local self = setmetatable({}, { __index = M }) + + self:InitList() + + return self +end + +function M:InitList() + local fgCtr = ControllerManager.GetController(NewGroupController) + fgCtr:FG_GroupJoins(self._group.id, function(res) + pt(res) + if res.ReturnCode ~= 0 then + ViewUtil.ErrorTip(res.ReturnCode, "获取成员列表失败") + else + local data = res.Data.joins + self.familyType.selectedIndex = 6 + local list = self._view:GetChild('list_auditNumberList') + list:SetVirtual() + list.itemRenderer = function(index, obj) + local info = data[index + 1] + obj:GetChild('text_name').text = info.nick + obj:GetChild('text_id').text = info.id + obj:GetChild('text_time').text = os.date('%Y-%m-%d %H:%M', os.time()) + ImageLoad.Load(info.portrait, obj:GetChild('btn_head')._iconObject) + obj:GetChild('btn_allow').onClick:Set(function() + self:ClickBtn(1, info.id) + end) + obj:GetChild('btn_unAllow').onClick:Set(function() + self:ClickBtn(0, info.id) + end) + end + list.numItems = #data + end + end) +end + +function M:ClickBtn(isAllow, uid) + local fgCtr = ControllerManager.GetController(NewGroupController) + fgCtr:FG_GroupVerifyJoin(self._group.id, uid, isAllow == 1, function(res) + if res.ReturnCode ~= 0 then + ViewUtil.ErrorTip(res.ReturnCode, "获取成员列表失败") + else + ViewUtil.ShowOneChooose("审核成功") + self:InitList() + end + end) +end + +return M diff --git a/lua_probject/base_project/Game/View/Family/FamilyJoinAndCreate.lua b/lua_probject/base_project/Game/View/Family/FamilyJoinAndCreate.lua new file mode 100644 index 00000000..4a00f48b --- /dev/null +++ b/lua_probject/base_project/Game/View/Family/FamilyJoinAndCreate.lua @@ -0,0 +1,110 @@ +local FamilyJoinAndCreate = {} + +local M = FamilyJoinAndCreate + +function FamilyJoinAndCreate.new(root) + setmetatable(M, { __index = root }) + local self = setmetatable({}, { __index = M }) + local fgCtr = ControllerManager.GetController(NewGroupController) + local createOrJoin = self._view:GetController('createOrJoin') + + + self._currenIndex = 0 + self.tex_num = self._view:GetChild('text_inputNum') + + self._view:GetChild('btn_joinFamily').onClick:Add(function() + createOrJoin.selectedIndex = 1 + end) + self._view:GetChild('btn_createFamily').onClick:Add(function() + createOrJoin.selectedIndex = 0 + end) + self._view:GetChild('list_num').onClickItem:Set(handler(self, self.OnNumButtonAction)) + + local input_name = self._view:GetChild('input_name') + local input_wxId = self._view:GetChild('input_wxId') + input_name.onChanged:Set(function() + input_name.alpha = 1 + end) + input_name.onFocusOut:Set(function() + if #input_name.text > 0 then + input_name.alpha = 1 + else + input_name.alpha = 0.5 + end + end) + + input_wxId.onChanged:Set(function() + input_wxId.alpha = 1 + end) + input_wxId.onFocusOut:Set(function() + if #input_wxId.text > 0 then + input_wxId.alpha = 1 + else + input_wxId.alpha = 0.5 + end + end) + self._view:GetChild('btn_create').onClick:Add(function() + fgCtr:FG_GroupList(function(res) + fgCtr:FG_CreateGroup(input_name.text, 1, 2, function(res) + if res.ReturnCode == 0 then + self.familyType.selectedIndex = 1 + self:ConnetFamily(1, DataManager.groups.groupList, true) + else + ViewUtil.ErrorTip(res.ReturnCode, '创建大联盟失败!') + end + end) + end) + end) + return self +end + +function M:OnNumButtonAction(context) + local item = context.data + local index = self._view:GetChild('list_num'):GetChildIndex(item) + if index < 9 or index == 10 then + if (self._currenIndex < 6) then + self._currenIndex = self._currenIndex + 1 + self.tex_num.text = self.tex_num.text .. (index < 9 and index + 1 or index - 10) + if (self._currenIndex == 6) then + self:JoinRoom(self.tex_num.text) + end + end + elseif index == 9 then + self:ClearNumTex() + else + if (self._currenIndex > 0) then + self._currenIndex = self._currenIndex - 1 + self.tex_num.text = string.sub(self.tex_num.text, 0, self._currenIndex) + end + end +end + +function M:ClearNumTex() + self.tex_num.text = "" + self._currenIndex = 0 +end + +function M:JoinRoom(roomId) + local fgCtr = ControllerManager.GetController(NewGroupController) + --后端似乎还未调通 + self:ClearNumTex() + fgCtr:FG_JoinGroup(tonumber(roomId), function(res) + if res.ReturnCode ~= 0 then + ViewUtil.ShowOneChooose("加入失败" .. res.ReturnCode) + else + end + end) + --先换成邀请玩家 + -- fgCtr:FG_AddMember(self._group.id, tonumber(roomId), function(res) + -- if (res.ReturnCode == 0) then + -- ViewUtil.ShowBannerOnScreenCenter('添加成功!', 1) + -- else + -- ViewUtil.ErrorTip(res.ReturnCode, '邀请玩家失败!') + -- end + + -- self:ChangeNumber(fgCtr, self._group.id, 0, self._group.total_member_num1, false, + -- 1) + -- end) +end + +return M diff --git a/lua_probject/base_project/Game/View/FamilyView.lua b/lua_probject/base_project/Game/View/FamilyView.lua index 7ff56a8b..1f357b68 100644 --- a/lua_probject/base_project/Game/View/FamilyView.lua +++ b/lua_probject/base_project/Game/View/FamilyView.lua @@ -5,6 +5,8 @@ local GroupGameSettingView = import(".NewGroup.MngView.GroupGameSettingView_jain ---无窗口 local FamilyAllNumbers = import(".Family.FamilyAllNumbers") local FamilyNumberRecord = import(".Family.FamilyNumberRecord") +local FamilyAuditNumber = import(".Family.FamilyAuditNumber") +local FamilyJoinAndCreate = import(".Family.FamilyJoinAndCreate") --- FamilyView = {} @@ -29,7 +31,6 @@ function M:init(url) local view = self._view local fgCtr = ControllerManager.GetController(NewGroupController) - local createOrJoin = view:GetController('createOrJoin') self.familyType = view:GetController('familyType') self.btn_close = view:GetChild('btn_close') @@ -44,55 +45,6 @@ function M:init(url) self.familyType.selectedIndex = 3 end end) - --------初始化创建和加入亲友圈界面--------------- - self._currenIndex = 0 - self.tex_num = view:GetChild('text_inputNum') - - view:GetChild('btn_joinFamily').onClick:Add(function() - createOrJoin.selectedIndex = 1 - self.lastType = 3 - end) - view:GetChild('btn_createFamily').onClick:Add(function() - createOrJoin.selectedIndex = 0 - self.lastType = 3 - end) - view:GetChild('list_num').onClickItem:Set(handler(self, self.OnNumButtonAction)) - - local input_name = view:GetChild('input_name') - local input_wxId = view:GetChild('input_wxId') - input_name.onChanged:Set(function() - input_name.alpha = 1 - end) - input_name.onFocusOut:Set(function() - if #input_name.text > 0 then - input_name.alpha = 1 - else - input_name.alpha = 0.5 - end - end) - - input_wxId.onChanged:Set(function() - input_wxId.alpha = 1 - end) - input_wxId.onFocusOut:Set(function() - if #input_wxId.text > 0 then - input_wxId.alpha = 1 - else - input_wxId.alpha = 0.5 - end - end) - view:GetChild('btn_create').onClick:Add(function() - fgCtr:FG_GroupList(function(res) - fgCtr:FG_CreateGroup(input_name.text, 1, 2, function(res) - if res.ReturnCode == 0 then - self.familyType.selectedIndex = 1 - self:ConnetFamily(1, DataManager.groups.groupList, true) - else - ViewUtil.ErrorTip(res.ReturnCode, '创建大联盟失败!') - end - end) - end) - end) -------绑定成员战绩按钮 view:GetChild('btn_family_record').onClick:Set(function() self._child_familyNumberRecord = FamilyNumberRecord.New(self) @@ -109,7 +61,6 @@ function M:InitCloseClick() self.familyType.selectedIndex = self.lastType if self.lastType == 3 then self.lastType = 1 - createOrJoin.selectedIndex = (createOrJoin.selectedIndex + 1) % 2 end end end) @@ -124,6 +75,7 @@ function M:CreateFamily() self.familyType.selectedIndex = 3 self.lastType = 1 self._view:GetController('createOrJoin').selectedIndex = 0 + self._child_familyJoinAndCreate = FamilyJoinAndCreate.new(self) end function M:JoinFamily() @@ -142,6 +94,11 @@ function M:AllNumber() self._child_familyAllNumbers = FamilyAllNumbers.new(self) end +function M:AuditNumber() + self.lastType = 1 + self._child_familyAuditNumber = FamilyAuditNumber.new(self) +end + function M:ChangeNumber(fgCtr, group_id, limit, num, minus_only, sort_type) local list_familyNumber = self._view:GetChild('list_familyNumber') list_familyNumber:SetVirtual() @@ -334,56 +291,6 @@ function M:ConnetFamily(index, groups, isCreate) UpdateBeat:Add(self.OnUpdate, self) end -----------创建和加入--------------------- -function M:OnNumButtonAction(context) - local item = context.data - local index = self._view:GetChild('list_num'):GetChildIndex(item) - if index < 9 or index == 10 then - if (self._currenIndex < 6) then - self._currenIndex = self._currenIndex + 1 - self.tex_num.text = self.tex_num.text .. (index < 9 and index + 1 or index - 10) - if (self._currenIndex == 6) then - self:JoinRoom(self.tex_num.text) - end - end - elseif index == 9 then - self:ClearNumTex() - else - if (self._currenIndex > 0) then - self._currenIndex = self._currenIndex - 1 - self.tex_num.text = string.sub(self.tex_num.text, 0, self._currenIndex) - end - end -end - -function M:ClearNumTex() - self.tex_num.text = "" - self._currenIndex = 0 -end - -function M:JoinRoom(roomId) - local fgCtr = ControllerManager.GetController(NewGroupController) - --后端似乎还未调通 - self:ClearNumTex() - fgCtr:FG_JoinGroup(tonumber(roomId), function(res) - if res.ReturnCode ~= 0 then - ViewUtil.ShowOneChooose("加入失败" .. res.ReturnCode) - else - end - end) - --先换成邀请玩家 - -- fgCtr:FG_AddMember(self._group.id, tonumber(roomId), function(res) - -- if (res.ReturnCode == 0) then - -- ViewUtil.ShowBannerOnScreenCenter('添加成功!', 1) - -- else - -- ViewUtil.ErrorTip(res.ReturnCode, '邀请玩家失败!') - -- end - - -- self:ChangeNumber(fgCtr, self._group.id, 0, self._group.total_member_num1, false, - -- 1) - -- end) -end - function M:OnUpdate() -- --12001事件 -- if self._group.update_room then @@ -444,7 +351,7 @@ local IDENTITY_LIST = { }, { name = "申请消息", - Fct = M.ShareWx + Fct = M.AuditNumber }, { name = "查看成员", @@ -486,7 +393,7 @@ local IDENTITY_LIST = { }, { name = "申请消息", - Fct = M.ShareWx + Fct = M.AuditNumber }, { name = "查看成员", @@ -501,13 +408,9 @@ local IDENTITY_LIST = { Fct = M.CreateFamily }, { - name = "添加助理", + name = "亲友圈排行榜", Fct = M.CreateFamily - }, - { - name = "加入亲友圈", - Fct = M.JoinFamily - }, + } } }, diff --git a/wb_unity_pro/Assets/ART/base/Family/ui/Family_fui.bytes b/wb_unity_pro/Assets/ART/base/Family/ui/Family_fui.bytes index b91d1a153d81c757b85fe2bb685798cbd2634990..a25753261fd5ece6096c5f9fe0a52005e2c086c0 100644 GIT binary patch delta 7942 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 Iy0%XJA2$!A#Q*>R delta 6610 zcmZ`-34D#m7N0Y7lbg7agpiw6L?W?-qO>JM7DYs4YjP#_Jtz{C5Jc3zCOP&!YOOWY zQoHK%bWytM&U>#~s)SanTJrw$-5b3>uWo*mZ)W~yn={*)bN-V0=519H?RR9UFn%YR z8y~`dU5YC*PQ{ujUWsesI-l#D*W@Q5q;M5Cgq!$TlS+|jCgCmGh_>Q+v^$GLA#PSZ z6u0?_4@+_qbq6!#sJp046g@fYY$ zbQ>bY10K;MQmaT#O4p?2Nxh_a$PbgOQdF_EdvCrNYURtxK9EmD@(J?ONj);;h9VQW zfbh@c(d6nR-=v4Y{Zd+SU`iu0S1ak0(wi4_YvSsn$en8NwUlYvp5dw4WP!}arffwX zT$wsun>RKMR#x%bY1vd0U?a0yr^u7MI3>LgdGqe{B&x+bZ5gUI`EW{xjq32lAsEVC zKAn*c{ZyBIU$Bv{?sXGYViV@(Rj#llla;@EA)EXF_>q5EPJ5o8X|)81eL|>-aC;Ev z7d7DXnH#mNysUIL$8@yjGr1WYlHSDi7ezr7%*nPsP9{)K8`X0%0c?a>q%Zk{oD2&2 zCo>jhXH)%ZGcqipq9N4#p@i|poD^!nX^pHV3Zrm7mt&)b9NMeCil9jD)T>B)=&fGx z&|UWLUEtD)8dDR#-*>7WcvCLyXQL=%mMZ&sxMnG8M$LJBA8qbmeQe4b3Lf@p$~U9T zoHxkCmHk6`cVBbxQ`DmBq5h+mFhU4#YDG^wdRp_vzTqxy=$Xg$JnPWorJkdjgz!u`Zh-&=|{bmmB9>yI;rcs7N z|Mrm?>IF*Tha;y@Cf{xnN@j6(K?UUaRg zPc>EvtWx}qQD5puz1e$|zv_=~)F}Vx0W{EHr6`yknneSkCo_3-VF*FiXm9XhWoxyxrDZ|_W= zOJhK`Z;aLDMarXm?mya^J(k8%zA+4S7DK-7L{H=CB?l&s0=wjlO`wTS_kbVKu zCsSdygr1Pl+*!gDn(DylU0}&hn5d*_RP@NXVvjR6j;2!)$6^#WsTj51WBfyAIH*ND zB*i;ZPs5mtj4>C}%SO##&BXWpG5(&js<{flRlui4`&#K9sxzGg&|I1a^7?t!?D@2y z+Nl4dT1bnkvE7hR;w)h?Evd#lfemuP!~`mV^b$xfr7{PVDHl}ELng-BwY%g0)&MP~ zW!2I*gHJh0r{%PQipuh>E-Psj)CA@GN3Rx3?dv@R#Pywt*U;K0&eb}aiOrLj@2_Uz zyAX2LQ%}1by-|8O$q}Bk!GVz*mbIG`MjNRd{Fn2sY7@P}_w#$ya>Ncl2{+Q_i<*3T zo|W^)4xugl+1P%TbvOsNid8_oIIb*^dyNZG+h{va9XFbG@QrcrsaI(;A03~gc8Z3) zc0vSqcqv-#!hKQrQY!7{;?g>N`6ZKO4?H8pER+JSwb0706B^K7Zal$8`?z?5pQ@n! z;2!95fL_B9q$b*^FZY@_*Su99pmHrYFNk380xNVjDo9d?=rB(x$PGE79qvl6!}_D5 z1|5TV;im|JkVW{?aehz`?lr+a0t7O@8^O$Nvp*+J3Zt<+YSL2A6X5s=rH&4*u5#Lx zAZ|LjOVCNN!w8`|h&VA7$jf4zt8puBp;Nqg@<^Nm;ar{?N@uuUp&xDIXA38LO~#Bw zinm~I5m@|KYtq5i_k~s(&kqVasW<2>cbXDKZ*u;Wu%NdDKT&P&G(dR@rAmk> z?4YPWfOznQseVOG96oDA?+N(xefj|Z&%>)9(gnImAJND334N+v`K7@>;?JRia-MK+hk=)cN4i`os{l0Dp;EY3IQ3iDceamtA+Vq5 z2DdMcp`W?1I6>Vc1l7eUk}A105|Pqvy2H(8q?qUzEcDPp0qR$}%j;&?B>l!$IM_tL z(>=DnjP@V)_I>)3OLhA%J~_|dL=Wg8n`id1%!R5d2@BL8TwEN&7m7^0&BNCuNlM-| zGnJ>#Xu$PmWg+GbofDwUbe_v*Wtp?99!fXq&bMZ@GiRY*Lt41S>~`jjsC&qooIg8W zc}g!nG`nXlZ@eeGWi5MjrT_Dp(jZk^`f$vgEc0-1)RA?0&75}TT-1G~mA^)P6zYD` zpM&SNGsC|!Kn8N(xiKn82J?owsR%$zXZooSS)VQQQYjSYiJxj9!+7Gn0V-TJ-nW`$W7&jv&d>513UN&(u5;B9E8q;K@~ zB%23=w3U3C-518F*0K$ETbN4E*rh!ypW{Odb5vW|jxU!+aN9-ARkUo+BNp{7>L6pP zhYQytyp$bf>|;G~GXAli1lj4ap66xf$9lTRu8;L3%5IPKBzem2&RzW0qC{T5*s3yR z79UwWT-oRnhcD5AQqhtGOSZtN;8FwbIBl%XjY}+iYl&6m$X@JT5`{2mZ%Hf8EwNhq z$iCR>csbBHu2m9F{eUE@{`5KjS(0NJAld=xhmvK;IaX@nolAUN+Q5ecd39-m8blZ2 zs#bJ?^XG(_r=WkZ9Ks#S+8OIsAHGN5prZ1$EX+OD30T{G@1*! zJ&oZb+(qTde3nal;*iyga~yrl1xs7eN4#@sq#7?@;!l^hbR8|?aUe6L2TM7D^S9M8 zlueWc+<95Np=^?z%uAMaR)um3Us{$*Q@L-P)k99x=c}m%Vm~SdmI|b;~kO&PNOz2?;9^ns*IaAkv%;m?V)V z(%h*dhPY5J;vOrzn{|CL9thVyAFS?b zc8B7%c&7%f>0tIieVts-{nx~)4RRxIUSp$jJy!E3`3hK*nASDogtbj^BWn+Akz0BG zS{rUB-P#WP0a`nZ)~j+S=dH8RF5R;1mV3b81DkFJhpY`}uk}rFJ8Q0evVybL+i*L_ z9mDoJAYbEi>oajh8_h%VFt^)~8FWN+G5n`94$-(WyNE9C;ttGxT^{9~8#=3F@;Lvx zA(KvMJ`Z_Pp28?`UaKv9aeXqKwu?I>-{8+SW`>`AlDIdezFjrn9&WkCpL5F_s<-7k zTvDD%|1#`7C*Nh-WTW?VGbkSo|@ zbF#WDukd?YY(f8il7Ron|8mUM49jy6@IAFP7@KX0;5W90s;lw`zPiR?qq6mGH#)(Z~~9ao1+dEcH`%eAV9h%m2XYWi`UCB#T9Y%BIP zDN>T7_ogCcR2u2WoA+jrNnh0x7kI6G>Exmpipwl;yYke133Q#$>`O44m5!L|A><9< z(-T81i(vi_${l?}tNY3-Osa;m@REvH5BgPkXbdICNEJM&u$pU%u~=Zgz?xvT53-5! zR9-x4e>M(-clLLJY2NI4APV_{=mTMRrQ_9XR$nXSqw4UC13f&DyFq}Ze1)5`@*-Q1 zRK)iW9QOWM9EYZ9C`Lx`FNCcj*h5!d3v;BDu5-PE8R|zw;iZQnU0pQYX)Zq)M*hYX zsRC48zI-r8T@|~z{=rBde5i>E#11Mw6y+ccvJ(cYdLV4YPaSUI5~Av3-w!_A9U(`> z;YKbDpLp}Phr7c5$Ri0zf}P+|M>2y#pRjvX0~N;K9(mqF7^x3r_k_qp9wC%dUyp*R zI2qhjLluGU{ao{CB%gh~2{KLS)=4W>E7dne!CRrkLZMl}>KWIi88_tl1D+^F6d$8m$*_A`L&08Pw`Y zLY`Kw`O6cXsSSsov>^hyvdPDrkhW0I>ha0p@O*&r5YQ{&#K~Z9aSz~gNSzv>=wyIN z9WCs6D#%;>39v2lr9zGX=ln-t-&4U}CSdK5>NGI1*GZ~{51k4riq@e8G7dWS*2Vrl z6xaeC3?$|s5Zr6viTwuz2{0h>|9~VINGBlPC}h{uQUv=_sftFA}m@S(sj0-tZ-@QnUBQU#iSHgGyq zH*lTC={{uRJwo4rs27SaO#$8#_(F}lY;oZBM1jVa0v`Z;rN$K=FD4xt;61EP8~huA zm!7fu19csY9$b`^imxGEOapqxf#w34kCOZd%>{b6brOJim#{y8u~`vz?)jL z{+STS>4X*%5E_3Dc-k9=W{tXd+EIhTmlgvpwxhB)c)tgVxz`1}0YEG4C^d)WKIpAP zv0L35=oJTVeW2YPsHX50F+gjbwd?%^7Yz7~XYwYE(s-b8c2qTj-Zto6>?posCeVBb zS{uB2L)%k*TJkuc#PBwhq17o@cyeEp*;Y(|PU$k?Z51|JXj;xaAJ_wZFtQ(lC z^eS=uG@Y7>hA$PU4%`y>sA}Bg3JrLu8vDYR<^mr8JX^mos(+58j^-b(I&vv+R&muR zMsVlRO2|@ieCEx%{>xRu-?;m0sB6y%_56WbZ>HBcQ1#)08V6Q?SyuDFnI9La{{aeW B)0zMP