From d9624e10eed73f0544e2fab1b432bbbbf60df9db Mon Sep 17 00:00:00 2001 From: --git_token Date: Sat, 6 Jun 2026 08:10:01 +0800 Subject: [PATCH] auto backup 2026-06-06 08:10:01 --- data/last_wechat_sync_id | 2 +- memory/.dreams/events.jsonl | 1 + memory/.dreams/short-term-recall.json | 112 ++++++++++++++---- .../ai_descriptions_wechat_2026-06-04.json | 29 +++++ .../飞书反馈_2026-06-05.xlsx | Bin 0 -> 11592 bytes 5 files changed, 122 insertions(+), 22 deletions(-) create mode 100644 output/daily_feedback/ai_descriptions_wechat_2026-06-04.json create mode 100644 output/daily_feedback/飞书反馈_2026-06-05.xlsx diff --git a/data/last_wechat_sync_id b/data/last_wechat_sync_id index 4fa0673..1473f3a 100644 --- a/data/last_wechat_sync_id +++ b/data/last_wechat_sync_id @@ -1 +1 @@ -1939 +1948 diff --git a/memory/.dreams/events.jsonl b/memory/.dreams/events.jsonl index 3869001..f53cbe6 100644 --- a/memory/.dreams/events.jsonl +++ b/memory/.dreams/events.jsonl @@ -33,3 +33,4 @@ {"type":"memory.recall.recorded","timestamp":"2026-06-02T06:49:10.085Z","query":"小编 飞书 user_id 身份","resultCount":4,"results":[{"path":"memory/2026-05-25.md","startLine":21,"endLine":42,"score":1},{"path":"memory/2026-05-26.md","startLine":1,"endLine":24,"score":1},{"path":"memory/2026-05-25.md","startLine":38,"endLine":44,"score":1},{"path":"memory/2026-05-22.md","startLine":129,"endLine":158,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-06-02T06:49:17.685Z","query":"小编 群聊 身份 open_id","resultCount":1,"results":[{"path":"memory/2026-04-18.md","startLine":1,"endLine":5,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-06-03T02:09:30.724Z","query":"小葵小葵群 chat_id 用户反馈发送","resultCount":1,"results":[{"path":"memory/2026-04-18.md","startLine":1,"endLine":5,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-05T02:12:53.027Z","query":"今天用户反馈发送 飞书微信 小葵小葵群","resultCount":6,"results":[{"path":"memory/2026-05-07.md","startLine":142,"endLine":175,"score":1},{"path":"memory/2026-05-07.md","startLine":86,"endLine":116,"score":1},{"path":"memory/2026-05-07.md","startLine":73,"endLine":91,"score":1},{"path":"memory/2026-05-07.md","startLine":46,"endLine":78,"score":1},{"path":"memory/2026-05-07.md","startLine":23,"endLine":50,"score":1},{"path":"memory/2026-05-07.md","startLine":1,"endLine":28,"score":1}]} diff --git a/memory/.dreams/short-term-recall.json b/memory/.dreams/short-term-recall.json index d409f7b..95d6eea 100644 --- a/memory/.dreams/short-term-recall.json +++ b/memory/.dreams/short-term-recall.json @@ -1,6 +1,6 @@ { "version": 1, - "updatedAt": "2026-06-03T02:09:30.724Z", + "updatedAt": "2026-06-05T02:12:53.027Z", "entries": { "memory:memory/2026-04-18.md:1:5": { "key": "memory:memory/2026-04-18.md:1:5", @@ -429,20 +429,22 @@ "endLine": 116, "source": "memory", "snippet": "| 9 | 用户反馈问题 | 建议、反馈、体验、优化 | | 10 | 其他问题 | (默认兜底) | ### 脚本修改 - `priority_classifier.py` 新增 `proble m_category(keyword)` 函数和 `CATEGORY_KEYWORDS` 规则 - `sync_feishu_feedback.py` 中 `summarize_cluster()` 新增 `category` 字段 - `generate_summary()` 输出格式改为按优先级+分类分组 --- ## 新增步骤7:问题分发 [刘新玉] - 2026-05-07 11:09 ### 需求 将每日问题归纳同步到「小葵小葵」群,P0问题@相关负责人跟进。 ### 分发规则 1. 将\"今日问题归纳\"内容发送到指定群(格式:标题+归纳正文+文档链接) 2. P0问题 @相关负责人的 @列表(从 `summarize_cluster` 的 `operators` 字段提取发言人) ### Bot身份问题 - Bot应用名:**小研**(App ID: `cli_a931175d41799cc7`) - Bot发消息需要已经加入目标群 - 小葵Bot在「小葵小葵」群中发消息报 500 \"chat does not exist\" → 可能是不同应用 - **待解决**:需要确认\"小葵小葵\"群里加的是哪个应用,或者把小研Bot加进去 ### 脚本修改 - `sync_feishu_feedback.py` 新增 `dispatch_to_group()` 函数 -", - "recallCount": 2, + "recallCount": 3, "dailyCount": 0, "groundedCount": 0, - "totalScore": 2, + "totalScore": 3, "maxScore": 1, "firstRecalledAt": "2026-05-11T09:48:27.002Z", - "lastRecalledAt": "2026-05-14T13:09:32.054Z", + "lastRecalledAt": "2026-06-05T02:12:53.027Z", "queryHashes": [ "70caeba05281", - "9821fd380aab" + "9821fd380aab", + "bffc46025be9" ], "recallDays": [ "2026-05-11", - "2026-05-14" + "2026-05-14", + "2026-06-05" ], "conceptTags": [ "priority-classifier.py", @@ -462,18 +464,20 @@ "endLine": 91, "source": "memory", "snippet": "``` ### 问题分类规则(按匹配优先级从上到下) | 优先级 | 分类 | 匹配关键词 | |--------|------|-----------| | 1 | 启动/运行异常 | 闪退、崩溃、crash、进不去、卡死、黑屏、重启、服务器宕机、服务器挂了 | | 2 | 版本/更新类 | 更新、升级、新版、版本、安装失败、OTA、热更新、无法更新、下载更新 | | 3 | Loading/加载类 | 加载、loading、loading卡死、转星星、加载慢、加载超时、loading超时、一直加载 | | 4 | 数据/进度类 | 数据丢失、数据异常、进度丢失、数据错误、分数异常、进度不对、记录丢失、数据对不上 | | 5 | 声音/音频类 | 无声、声音、音频、没声音、音效 | | 6 | 语音识别/判分类 | 判分、识别、语音识别、发音、评分、打分、AI判分 | | 7 | 关卡/内容类 | 关卡、题目、答案、内容 | | 8 | UI显示类 | 显示、界面、UI、HUD、动画、层级、图层、渲染 | | 9 | 用户反馈问题 | 建议、反馈、体验、优化 | | 10 | 其他问题 | (默认兜底) | ### 脚本修改 - `priority_classifier.py` 新增 `proble m_category(keyword)` 函数和 `CATEGORY_KEYWORDS` 规则 - `sync_feishu_feedback.py` 中 `summarize_cluster()` 新增 `category` 字段", - "recallCount": 1, + "recallCount": 2, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 2, "maxScore": 1, "firstRecalledAt": "2026-05-11T09:48:27.002Z", - "lastRecalledAt": "2026-05-11T09:48:27.002Z", + "lastRecalledAt": "2026-06-05T02:12:53.027Z", "queryHashes": [ - "70caeba05281" + "70caeba05281", + "bffc46025be9" ], "recallDays": [ - "2026-05-11" + "2026-05-11", + "2026-06-05" ], "conceptTags": [ "启动/运行异常", @@ -651,18 +655,20 @@ "endLine": 50, "source": "memory", "snippet": "- 「小葵小葵」群 chat_id: `oc_4171a2188f2554522a4309f2d7c27753`,小葵Bot已在该群中 - 相关负责人需要往此群发消息时,直接用 Bot 身份向该 chat_id 发送 ### 知识空间信息 - space_id: 7612229802338045122 - 父节点 node_token: RaL6whoYMijyYHkSlWrc7OLLnBy - 父节点 obj_token: J8bKd4dbYoofZixxVsCc06bhnFc (docx) ## 用户反馈问题汇总文档结构调整 [刘新玉] - 2026-05-07 10:45 ### 变更内容 1. 「用户反馈问题汇总」文档改为按日期创建独立子文档,每天一个 2. 子文档标题格式:`YYYY-MM-DD 问题反馈` 3. 父文档(RaL6whoYMijyYHkSlWrc7OLLnBy)改为索引说明页 4. 子文档 obj_token: - 2026-05-06: ISpQdgf6QoIKIyxdZjPcTAa4nEe - 2026-04-28: UusFdRBEioSs4ox9JhPcXGfCnzf ### 脚本修改 - `sync_feishu_feedback.py` 中新增 `update_summary_doc_as_children()` 函数 - 逻辑:先 `list_child_nodes()` 查已有子文档 → 存在则更新、不存在才创建 - **核心规则:每天只新增一个对应日期的子文档,绝不重复创建** ### 同步清理 - 数据库中 s", - "recallCount": 1, + "recallCount": 2, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 2, "maxScore": 1, "firstRecalledAt": "2026-05-12T06:08:28.032Z", - "lastRecalledAt": "2026-05-12T06:08:28.032Z", + "lastRecalledAt": "2026-06-05T02:12:53.027Z", "queryHashes": [ - "5d17890944eb" + "5d17890944eb", + "bffc46025be9" ], "recallDays": [ - "2026-05-12" + "2026-05-12", + "2026-06-05" ], "conceptTags": [ "chat-id", @@ -682,18 +688,20 @@ "endLine": 28, "source": "memory", "snippet": "## 用户反馈问题汇总文档结构调整 [刘新玉] - 2026-05-07 10:45 ### 变更内容 1. 「用户反馈问题汇总」文档改为按日期创建独立子文档,每天一个 2. 子文档标题格式:`YYYY-MM-DD 问题反馈` 3. 父文档(RaL6whoYMijyYHkSlWrc7OLLnBy)改为索引说明页 4. 子文档 obj_token: - 2026-05-06: ISpQdgf6QoIKIyxdZjPcTAa4nEe - 2026-04-28: UusFdRBEioSs4ox9JhPcXGfCnzf ### 脚本修改 - `sync_feishu_feedback.py` 中新增 `update_summary_doc_as_children()` 函数 - 逻辑:先 `list_child_nodes()` 查已有子文档 → 存在则更新、不存在才创建 - **核心规则:每天只新增一个对应日期的子文档,绝不重复创建** ### 同步清理 - 数据库中 sender_name='未知' 的3条无效记录已删除 - 「内容测试问题反馈」电子表格中也清理了\"未知\"发送者的行 - 该电子表格已从\"飞书问题反馈-近3天\"重命名为\"内容测试问题反馈\" ### 飞书群信息 [李若松确认] - 2026-05-07 11:23 - 「小葵小葵」群 chat_id: `oc_4171a2188f2554522a4309f2d7c27753`,小葵Bot已在该群中 - 相关负责人需要往此群发消息时,直接用 Bot 身份向该 chat_id 发送 ### 知识空间信", - "recallCount": 1, + "recallCount": 2, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 2, "maxScore": 1, "firstRecalledAt": "2026-05-12T06:08:28.032Z", - "lastRecalledAt": "2026-05-12T06:08:28.032Z", + "lastRecalledAt": "2026-06-05T02:12:53.027Z", "queryHashes": [ - "5d17890944eb" + "5d17890944eb", + "bffc46025be9" ], "recallDays": [ - "2026-05-12" + "2026-05-12", + "2026-06-05" ], "conceptTags": [ "yyyy-mm-dd", @@ -1270,6 +1278,68 @@ "已确认并更新到脚本和skill.md", "loading/加载类" ] + }, + "memory:memory/2026-05-07.md:142:175": { + "key": "memory:memory/2026-05-07.md:142:175", + "path": "memory/2026-05-07.md", + "startLine": 142, + "endLine": 175, + "source": "memory", + "snippet": "📄 详细反馈文档:https://makee-interactive.feishu.cn/wiki/CQ0UwjRTZijvvEk6tSecEUTXnFg ``` - @逻辑:P0标题行后面直接@发言人,@列表从 `summarize_cluster` 的 `operators` 提取 - 非P0问题不@ ### H5链接 - 尝试生成公开H5链接失败,Bot无 `drive:permission` 权限 - 当前使用飞书wiki链接,飞书App内可直接打开 - 若需外部浏览器访问,需在知识空间设置\"互联网上可查看\" ### 小葵Bot身份确认 - xiaokui 凭证目录:`/root/.openclaw/credentials/xiaokui` - xiaoyan 凭证目录:`/root/.openclaw/credentials/xiaoyan` - 发「小葵小葵」群消息用 xiaokui 身份成功 --- ## 当前定时任务清单 [刘新玉] - 2026-05-07 14:59 | 时间 | 任务 | |------|------| | 每天 02:00 | vala_skill_auto_push.sh(技能推送) | | 每天 08:00-22:00 每2小时 | run_lark_group_sync.sh(反馈群消息同步到数据库) | | 每天 08:10 | backup.sh(工作区Git备份) | | 每分钟 | sync_wechat_feedback_minutely.py(微信用户反馈实时同步) | | 每天 09:30 | daily", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-06-05T02:12:53.027Z", + "lastRecalledAt": "2026-06-05T02:12:53.027Z", + "queryHashes": [ + "bffc46025be9" + ], + "recallDays": [ + "2026-06-05" + ], + "conceptTags": [ + "backup", + "备份", + "summarize-cluster", + "openclaw/credentials/xiaokui", + "openclaw/credentials/xiaoyan", + "vala-skill-auto-push.sh", + "00-22", + "run-lark-group-sync.sh" + ] + }, + "memory:memory/2026-05-07.md:46:78": { + "key": "memory:memory/2026-05-07.md:46:78", + "path": "memory/2026-05-07.md", + "startLine": 46, + "endLine": 78, + "source": "memory", + "snippet": "### 同步清理 - 数据库中 sender_name='未知' 的3条无效记录已删除 - 「内容测试问题反馈」电子表格中也清理了\"未知\"发送者的行 - 该电子表格已从\"飞书问题反馈-近3天\"重命名为\"内容测试问题反馈\" ### 飞书群信息 [李若松确认] - 2026-05-07 11:23 - 「小葵小葵」群 chat_id: `oc_4171a2188f2554522a4309f2d7c27753`,小葵Bot已在该群中 - 相关负责人需要往此群发消息时,直接用 Bot 身份向该 chat_id 发送 ### 知识空间信息 - space_id: 7612229802338045122 - 父节点 node_token: RaL6whoYMijyYHkSlWrc7OLLnBy - 父节点 obj_token: J8bKd4dbYoofZixxVsCc06bhnFc (docx) --- ## 今日问题归纳增加问题分类 [刘新玉] - 2026-05-07 10:55 ### 新增步骤6:问题分类 在优先级判定之后,对每个问题添加分类标签。输出格式: ``` **⚠️ P0级核心问题(需优先处理)** 1. **Loading/加载类** - 问题描述... **⚡ P1级重要问题** 1. **关卡/内容类** - 问题描述... ``` ### 问题分类规则(按匹配优先级从上到下) | 优先级 | 分类 | 匹配关键词 | |--------|------|-----------| | 1 | 启动/运行异常 | 闪退、崩溃、crash、进不去、", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-06-05T02:12:53.027Z", + "lastRecalledAt": "2026-06-05T02:12:53.027Z", + "queryHashes": [ + "bffc46025be9" + ], + "recallDays": [ + "2026-06-05" + ], + "conceptTags": [ + "sender-name", + "飞书问题反馈-近3天", + "chat-id", + "space-id", + "node-token", + "obj-token", + "loading/加载类", + "关卡/内容类" + ] } } } diff --git a/output/daily_feedback/ai_descriptions_wechat_2026-06-04.json b/output/daily_feedback/ai_descriptions_wechat_2026-06-04.json new file mode 100644 index 0000000..8d51de9 --- /dev/null +++ b/output/daily_feedback/ai_descriptions_wechat_2026-06-04.json @@ -0,0 +1,29 @@ +{ + "date": "2026-06-04", + "descriptions": [ + { + "index": 1, + "description": "苹果13端瓦拉家长小程序进入时持续相关人员转圈,重新搜索进入仍无法解决。" + }, + { + "index": 2, + "description": "无明确问题" + }, + { + "index": 3, + "description": "无明确问题" + }, + { + "index": 4, + "description": "无明确问题" + }, + { + "index": 5, + "description": "无明确问题" + }, + { + "index": 6, + "description": "无明确问题" + } + ] +} \ No newline at end of file diff --git a/output/daily_feedback/飞书反馈_2026-06-05.xlsx b/output/daily_feedback/飞书反馈_2026-06-05.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..83f44bc26d8be71d809d1b3cc4aa3dc3192b1f74 GIT binary patch literal 11592 zcmZ{K1yq~uvUTuc1%g9?;_mM5?(XjHPO&1z-QBGOcXy{ikwS6TLh=6T_nmXk`TF0R zth`xSEA!;t^UUm-$+MMYp`bAU0Kgl7anF#R#E8693i#6$_=O67nK_y&xi~txG8#KM zF?iYA$DZuO{mv}8mP7QYqakIL#?rnV1#yf}jvbnx~b#V=&|NJ7z^ zE`G(ZYtPCuf-JN|`Y13lUJzBV>s!mb5ggNihf+*L2sKb>zZ?|CjKnp$-BN$F$RJ_q zK9efq`I$$VVqjZ~ji-THIOX@xm6lXNBOrs^D2t^@ zY+l~WH@H5HJ8UbhLScaBCd)V-g>n$|9wKMv;9|^}He#DSKUUQnQx^6@B=QubR7}FB zWx)~E6#K znj_1}p$~YU^0q=y;249BI)Z$Nr@sg`xWcWFb5k@HhZ|Exe94~RUA$~w>z+Kp8YWLv zFb+sTDs$~c?obHO=jS`mOSh`D&{ul^J+<$h@z-Vk9J`I!lwa|&f4fhFZwMm}*Yg^7 z5BX2;Wawp+qQU|I*^~ePI@mj2c8qRT=Jw`)UzvaV=S)Y}b(ISv;G%BU%ks`1ahM~x z8HDa??Xd>R2t89E3PaP1wevPh2o3C!VG$f?P{Vd)ZeA)VWXwMqrd|53XaVyL z3o8<@ENNL@WZJ2d4*u$iRM$9y(t#J4X!9t z8@?-4!zQmXf=!^DkOcwes*O-!&&LaaGj+IAsW!wH;@8|NXMfdwNH2FFga1s)McWVl zg83FsQh&?7g=pPx5)Qh9Pqoae%WMo(rkXBOqa$i{Nz^OcdA+AERsy+KXOCaWLhCZM z=}EETWrG`q$y%SI$1iCH;SbGp$>Ar|7R))LfVm?04o9lDGAYY@b!}9we7d_wbp>t$ zbTbcph6kW2L{`xj7unBwCDGm#^qBw#)KPol+LNeo_gkl{=fZkH<96KBMawr!h&CJ>CPuANr!T0e2fa zj}A$^QgYeeLue3g;*g{%?_ja8S$37q6XRjgA*PbY#4aI2%u3${r9UEeT_d$oV@}ry za0iOheF#@Dm?sBfMAaj~5M#USTwEmCc*ZP0(goXxs2Dr_5{}!k*)5K z+1@3<7%*ova}@0=An>ifULe=^4}SW77Tp8!&jNzQLm%~s2LK%R0suIF7Z6WJ7h6{= zb8|OW#=qYFsv=GLx~}h9TmqKsjONrUcZEsLv6WT0yN^yK@H+o*#va@Pz^w00Mxz9zw!buV*#&k?5XthYO-jy#O9U!JhVZ zA36bb&#yZZ0|&?7N={KwJipGp_}zQm-aizKk5epcoMDoR>2H{G{!DW;$qC#@F^g1}$T6Ca-3 zzsOQMo>xANWDUFwi8ckgJ~;mPG9$8xn@Rb4Q~LObmkR7+^jwj?&LaB^OTWkQ2~;B zh$A=9Ji#cnyJ2T3ywPn+e&^1@D7CiFdVRar7E-&NqRcsKpu{cq{OKv>;xe}7Ii8@g zrH<&WAtT}OK~CqR?2gN~u1&pf>&v4zYgc_G-&*}fTC#`?3<+|wAD7kV_8%O0W^Nq0 zRCV;1^Cap|ieoO)#=KsUixQ6?InCAdDal@gq|MYuB|=zaI1-!ot%5aFq>x3vtlr{NAjMv9xooIi44IWn+pY{ICQBKz%&b={q^maJmTrlnV2tJ7({p4 z-J7;0+9g^R(UpsB1F@ArT-Hh>8W_F>k)3_dyj3u?v~yWoQ`0JP89iUBttm$ZF zYqwv%nDw@whU+wojF&+={}>H@DCTDx6^rM{jJ}*Cb{pIReD@R%>DvI2#g3;-Y;rP9 za(8wk5JkqAcIjTOYe_2|m#nbbdMDIY5H&uNId9FjzWO&aYDLMc$3aEgi27!0mu*Y< zVg~BHc&lo_ak3d5!#MvMufo+iEp5UH)mOTbSF&|v4qdLIUpC8 zxsDoz*V^KzyM(4Ie}i?8SI~`@%Ryq${$d^g?KI^hq?2_))2HM&*au=ysm4 za@{NvU9LJ}`)ghI0?PlKP;41%hIY!E>l<3G8+ z&q*su_$ls=_Y5!apYm(Db{z5G@Hzq+hr3s|VMyUSwbY9J#8;pVA_*DAAQ|04u}zRW z)3MrN4c=S$J;YdPPQGH;%((f{|uqpyg(!J%AHdc@ZHtH?6TH_6q?}#J5Vr%I7fFerEKG* z>vh-RbXHFAzPq=&a9r^XdtXo@A3yySA;_My#(dWR%g z>Er6Q76>A0#AXaK*pL_%-|sqFz2V|uRXL2tJ#@rJi{@x-He0(4Srjtj96_gos;}@i z?O6=0ZdeD@@qwTGi*6N@u4lx>+XEj$1CPH6-b%sYrak8v3<#Em)qc;5#5EKspG@^u zUh&`a2~5#!!!#GiELki^x>Q_5if9fPq5YV886F+&Ak%SoQ_wev)I<8(e!DXsY+dz?>lvOa~pc6eR zi3vb7P5V*bYmI=FiXp9k%1B|<_oLnjST97X#bn#t51M5+f?(d^(-N9WM@EeFA*NgD zqKTH-B}q!%7uU{M_m}Mx0Y?MfzfzRs$7-&!_$xa-@-4cP+Ukj^Mho-p$$$!w*XG93 zy{Kch0|Is1lBwOAi(G91w>9sp(eS8QO%Gh`hI|$O!qCV$``)%})S%w_9fJcp!!!wY zi*4&Y_#X7$F&B9_I~>n7Qw-wtrO=em_hU@=ZFFdqtzJql#w2~*Nwy`m39GGXrGE#D z*&ho^p;xocpmQH@+OZ(e!NxUpk6|Q4DV140bh8$D=bkGsm9lP7rQ}&Dl zvg54TkrO0*noTBRqz2xY%J@juJ}8nZ?k7;@@%=EXjgitHNMjbA&f*e9&Jc7Br^abz zUwEoy8^%z`T;*Mv6GKn+GmXRZzO?1ChN84bV;3YMj3avgOX8ZN%0h&V*#8M=snKyi zT$kHaXR%Zr=`6qYNyuN4_?9pHCJ3AQQ=jijK0%?{uEA_N-*>qh+2~|hMp`uz0Rp8T zR{dq-rweYFdAX_WQHrGD*+&cM#E5=)%BVk&P&hq_R0+;E%1fX|V3RnU=CS6Qob8;- zKXG>ZQgRkFA`0!^4)x5^KGsP~=3xE6fVx(`6)AENOKTft@)(mg(^4zXrkI!w7Sp_m zmmEcHJX9d`;W0~3ZAV~vAD)ffz7w9`z+0*n^k!N|ABf%6p{d*FdNiC}NGAqF+8##k z1<0+^&6@XJbCO`jAeT1!BlbBo_DYal-2?^>k(VjM zOCgf;pxOa%6Z$J<$;mqI94e`8ycHzg!Rv;RGGmL=P5Q~hMV{wE5!?)e<{~KSxK9}Z ziG$UA?FjTJ3GE1z`Gb54vJ%B?7Ii<*Q$*=oM6`$B&CZ%As!VJMZikZ{{XkwvEzkl8@>k5r zOhe+he6o7sz#K|sjQHuacZTXu8iwmm`F)#M zMH2!(Io5ND3Wn9JkII|_xfWHM_>MtlTz@YaW-e3XTvMjcvq<8t5TwO!pR}%+yq8@F z2lwYsI64S5q$FW{L#^iFc)VhOrMGkH zUjC7b>P9A*7DP6qkm>1DXRb`f$fQfVpi$76D-DA1j)kK!B*o7@X?!m0=yG^iXs_s` z@YE4<)&NP8pZr4b_$(EV%;MSK?B`wKJM$X+nkQZbL{kgfGhp1i-cKDw&{{=k@nDm_ zPkkSR7L72(WU>W6&x|XRm`)|7X^cRkqS^N*nbr$S!YG`sH}b1ppUAF*+Ih%F5w5fA zE|w@&hI!WnD7Q>q_!U&dx zSH@O_sj*xM$pW^WRQ{5{deXDF3Y8G8qN*23#+wh(f=LvschYX26q@z29YM}N^zV$o z)YcTn4?J%le-s;0z76@1OujCPgZsXlGzbZdG~U>VZytItVK`Z`9pL~C9AYf_)shae zRljJ^Sy;WTSqdZB^ziztDbACSr6@W>24b&Dt%7oJouAsUJ@s^7B6j%=$A6 z0MOb4^FIZ(BJ$;i$+FL<+@2Q@J|jglb^m+-y~nfWP@oh>F4ZNmkUW1oohA}0yBw^7 z^VFQMGxdC8I4ZH1e%`#Jp7IO(|h8m!()#+2F2B_j#Ys7Oqo0hR@^<}FRe-l|(s*4Qo zMKDRBNy<*pRw<=*XfUu~Vl|iep4Z^e-^)?E_XTh&#f`JO!YO7w? zRN*RKRaK@@X@#h0^+WBon_iP>zDfQd2wF%%(yS8~14Kd&WamFCI!jf5!bT zBTG)1oA}K|mJ2_>Aa@=9XY?>7hg&0amyGnC4}#2=&pI)t%kdYa%ys$u`Uqf+s?z6b zrO>HySPoj*dhMgb-4^wgYH()dLz_3|!jP8}-xQc}WHoJNV46#d_mwA*Re9THJW;}v zGbLdD9o+J$GD@p;zHvTjj-C-Yr?9?+r-X>uj_XPl;ec<1v*`i|g#sIG!q^999?%d0 zh0PCcj5oW?F&Ez-SBS%>!k{CE5rp~+MVO^djcDOoRnZCSmRxn?HY3<$f)k*++9j6^Ofy;;@|a;pFnXJ~O>RN-OrBs5khCk* zU2Me)y86SR{lGZkEjkWc@=+8rS$<2__EVaP`*8 za$>}IV*$-3j4ez=Yfi~vRQZNI_M|Me|WCw;K zMA}4SX`uU7BRQJC!b`%3_W)*PWW|u)LJ_on9{hChP$X8ujGj`{FD71G3kg}pq^vB8 z71V1-VKb(0xrr!>uzWCNfE|igG|u*>S5EC;rMXO!V8Oe>N4V?2r6+1m0{*PG5MOAp zWB&vqNKkC)e!y()0ZwrCzP26Zvr6BKJ9#&IdqadR`L8Ts56E_H%3Wsmhc=!Q@);_v zXyBJRF3SV$Y6rcM4E&<#G0&)ju z{SoQQLn)Ra&cs>Gsd7*BjHxKa(LPkhB}BwpJ0D;ackY|D747?BDYSf(!eBqGgwSsi zuSy2IxgrJ{9OUFR?5-F~7eMZaB0(#szK{Hz{(fA8I1&uWIUxDHPwGt(^xVU=U{*Ff zx8OUhUOVN#J*=Nl53ql3GwuWBm%Txh_<|S?bAy`-1~tnA2Bkt3g#=ZTL~fNsSL*&* z-74odD2NjGB@Boxe1@oO8U08b#SCIOZ0@h>Jsx-5{3#d?kJVG#Z`k4{Rou2nmO(>KHR)ioZ@5oP} z$=Dnm(Z`p;d1L6$a#*ZX_cYIPV#j#pA8=j12^+N%9|{|#n*>K(Oqe)E-Z=Hi)_CR0 z>YA~5qpp-Y!-0bTsz1uEE~p{9$iry0{$ZAKY=+0-UnoJRuXk1F=g1ZKp0yuU=p*JY zFqOkU8a015m2z9BSE#tqqSO@Qbd0#Gzx1H2waGx&Yie0`37pmBp!vCXMzXk_&_nZ zWgH*_w~UbhB>`fw-~0ClYHz`xfVBUx(6AYSh>cqc!#@Tsqu2GGMeYR1Q-MDse6 zaFh^yvZ!RCUGRo88jdrFQY(w@8&SWeG5GIQFqgPHKm_*N_F6V_5SvMb^bd+}p>qZ+ z>cI$nsE2=RU3#N(8)DddLOSI&T`C-12gY%0hZ_2wmSxpV&mdv_oCUUNL6vK4v ztQg$N`MujW?El^7SQF(DNy0!g3sLh zCdvg!ZO)M>Y%;m|%AeCE#xx6*!C5evLF=SqxdOLm%v{Y|nY34E*f zuA~pv!is2Pah2FHy9Wz6W$_T(3Xr4q#Yz~su;*loPL$e{IlEO(l;Gn39%?*?@8Dc% zJ^pK2gb4!ds1g_Li7B-!LnQemmW|`hWAZ*URWC^T-xRoct!0m_`VerOM}5vIPt*T$ z(#3z*vr%=H23zh&9AX~gHQ}|WE-`_*am04^xvw4~`RirdYcd}3vv$9lCod=8uPhd4 z7r>#D2lEwWRtsg0=hH;T^_r^JW0vZ+Yed-PfiDbPIL98fgj_w}ydyJlV)i>DnQ}we zhDng5k(ck z0B}VJIjhpcj>BgmTC;34B({qv5=e(cr2MOR(gJV!zkIET%rA?41QV2m|BZGfn4pwR zA^yd>?5ULH4Sc1;*XrdBf3fax?3HEpZDIJ9ZC4|8L&_N2%yFZtHv?!xH+3)k>n<^2 z(eHW4V&JdHII?o&xwv4kOWHxLbxo^F7uwLJ1pAZzK1xmcaPf8vO#~Pz zbHaHP7jFjUrbHw)o!tES>vWk3&4T&g8Iq{ZP&$I#mte+Wk0}D=Y7X)S{X3`{V01KH zO{0GYm2M0;sOa}u70OT{3fmwf>&um((FTQFG2t_5yn4k+>ZfgYj8> z7lWyB-hZI~NF}AQE0$b)G2cavfjLJ1R3t$t1flSI2n^_K6faf?r&D@t( zIjcYgKm#bc#EvU$r*c8@`=|wtUAhX3nBgyp5%Jq3mYnm%DD+w<-%nkQ4Owa|Z0YZ! z9H(&A;w+LLzkbe@qjUF_pu1^w=$|QM_VCfuEnYdYTOvi4vw|8IP_a`?^0#-H2d(D$s91C64CO+DmH;&@%&6dTAwLhp zk$m6+z9M)ISIPj-;pN~toU?ogSs1P<-Gn&(vgGMAbi@M zo_nXyM!gK<>z_W+igFz~`|2P*zz?;+Si++!)q0iO@wz==TGY|#E{Yf)ExVdyHbv~y z^FI>jxo5jV z8T7Dk0|YJ+KZ4&pVL-Q<7TZE-mQEjOt6BNG!)HOR2P-lF{agqy*wCsj$G}_$U>K)l z)X!K=Rm*rR&5t=n-Z3}74pF0P;cFu%;wl|m9t{Ii@8~;4N+NMN4 zD1h9`6!-4mZ92PhzduM5^W87t>RW`cdicPIyYf%+SFRJ7upUSC=WU|w zo;7J0#Va1&S#;R42P}0)lA0}gcu z0+vy0Du6#NSniRAX-Dx#6i0>+88NwQIf-7f2z17@-x5!_RXm@cFHm$rWgRJc@5+nC5d5tM~-oJXZ#t~c4ek6P4OvWRC@kr57$Q6!XAbUZ8_TuwO(N1rO0 zb27-Z3z9v-FnNcw2RHseTK%XlcfBkTVCdC++r2mIPPll^#>O2dDr-vF+hf+aj<|ZM z4>B0YEqPtd@Ec_MwIMA}gh8(*IQe7}71vN_c{i1~u_C>2xr03|qpX_sGzIaK*X8<# zreY=fBdmNN6Ktj5MF!2(TiFRB@l49qldDT;|EoKK2hU8$1?(7gJrfuHeUC z=!CX@pAO9lb}~OYYc%kcZC4s1bx~w^JLFzv-Ez}QjodCkQ@rxM3cD_SxdI(Sco^%k z$MpF~0{zd%q6QJtImLSAD%9A9Ox_ddO^(Qjl_KLne-CHjs^-2#rFN6(CHMcur58TIWkEgj6$mob_~q zNbMpWA$!EUkl323XuS@dfDi+&MN5|%R+($DW~AP7P6_`SqoS~5P#uq)vxv2nEbH6L zsrf*bpEpSC;(IcrDY|%G3wy5~Them{BwARR;$sVi1SNq4BX{u&M|GwoARpbs2WKla zgiq_HM8M*s3z*@;vS${-RqtBhLS9s z$*g13Fa{yyL_Cwu&RA4BN%i_gXGkBAU|NY-aJaCW7ByJn1Kx7{FbObt;_P@FSX*OU zK>@E_Vlrn9tNMO;7lpqe%H?@{bvA-;DX(wK9X@`>z)GkidsF!>sy8WLMF zQkvNWkRYO zE)J#wo2oL-xhSE0=>F7r8#3y5Z^>^qxbRYzxqe0JD#4*a#p(nF5R-9ITR z@LF~!t5mqoY-HNfE^s(LX?`I3r~kc{1tai3H)zA zFd>E20rvpxN)@6oa{5}d45%G8!`!7 z*m1Lo(+fbcE+~p&dWT8T2D^G&I~=xizRLzRk*ZyIh1D$gJfkq1?^V>zeZ$(1>*X`o zB??og{$Yi<8MO>1-mYA~RWnDQ%Jzg@YGFAGZWK+blg|6?vG?}Y8vgZ)3ZMgTY|fwJ zwNpFrwVOyzUT&{{)D`o1??hZMz!|8&g?zfAjt*|-4sM2O-cIJO`o9CMCP`iaEOZ2; zGuI_&pwr4P#WzCKcY-ig#H)HuvecPhV^vs{$p>PF$ya-Q>zv6=tNs>;R)3gtyOK&P2l{!%`p z*F>8ywtvz_2DgY^2Dm)bcS4kWELPs;I%{M}!l0!TRTZlDK;U%j%PS-!A=;4e(V)aM z<*-JGN2k|kb$c9FbPW%Nr@U(?70(p1q5Y2dlCW?1M2@)y@F%ruSXErzyH4m_D}0S1*d=80suh}1OILPZ~5t; z=6@