From a10945d74f04d7963962598cfba20d89bbc6d59a Mon Sep 17 00:00:00 2001 From: lili Date: Tue, 7 Jul 2026 04:25:46 -0700 Subject: [PATCH] =?UTF-8?q?feat(polaris):=20=E3=80=8A=E5=A4=9C=E5=B8=82?= =?UTF-8?q?=E4=B8=80=E6=9D=A1=E8=A1=97=E3=80=8BM3=E2=80=94=E2=80=94?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E4=B8=80=E6=9C=9F=E5=88=B0=E9=87=8F+economy?= =?UTF-8?q?=5Fcurve=20=E5=8D=83=E5=B1=80=E7=BD=91=E6=A0=BC=E5=AE=9A?= =?UTF-8?q?=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 内容四轴灌装到量表(菜谱 30/顾客 19/事件 12/任务 52+成就);千局网格揪修三真缺陷:破产死锁 (11/25 生涯中期现金归零永锁→relief.floor_coins 地板+autoRestock 均衡轮转,根因=旧表序贪婪把救济金砸单一食材)、 卡点张力缺席(判据 2 首测 n=0→地块 900/2200/4500+树尾 22 节点×1.6+设备×1.6+员工升级基价×3)、 离线封顶 2h→75min(判据 5 解析收敛 44.4%→33.3%)。 门证据:上界安全门 7 配置×7000 营业日全过(判据 1 零死锁窗/判据 2 基线卡点中位 15min∈[15,45], 主会话复跑逐值一致)+30 分钟真玩口径三 seed 零卡死零 uncaught+扰动翼安全边界探明(小费 0.03 塌/0.04 绿、 薪涨 1.15 塌/1.12 绿,域外塌方翼零死锁=relief 兜底最坏参数仍保能玩);数值定标报告归档 docs/m3-数值定标报告.md(26 锚逐项保留/调整/废弃+三缺陷修复史+M5 输入+driver 两课);消耗率@10h 95.7%(判据 3 归 M5 观测)。 回归:logic-smoke 95 断言(⑤解锁阈值按设计 §3 首小时消耗带 ≥6→≥4、机制不放水)+tree-check 15 查 +单测 30/30+M2 千局零死锁+富三门接线未动;主会话真跑复验。M4 闸=风格 A 暖夜霓虹已拍。 Co-Authored-By: Claude Opus 4.8 (1M context) --- tier2/games/night-market/README.md | 44 ++- .../night-market/docs/m3-数值定标报告.md | 56 +++ .../night-market/evidence/after-play.png | Bin 0 -> 169686 bytes .../night-market/evidence/first-paint.png | Bin 0 -> 93831 bytes .../games/night-market/evidence/verdict.json | 184 ++++++++++ .../night-market/scripts/logic-smoke.mjs | 11 +- .../night-market/scripts/scan-calibrate.mjs | 342 ++++++++++++++++++ tier2/games/night-market/scripts/sim-scan.mjs | 3 +- .../games/night-market/scripts/tree-check.mjs | 51 ++- .../games/night-market/src/core/game-core.js | 116 ++++-- .../night-market/src/data/customer-types.js | 30 +- .../night-market/src/data/economy-curve.js | 18 +- .../games/night-market/src/data/equipment.js | 10 +- tier2/games/night-market/src/data/events.js | 39 ++ .../games/night-market/src/data/milestones.js | 56 +-- tier2/games/night-market/src/data/plots.js | 6 +- tier2/games/night-market/src/data/quests.js | 68 +++- tier2/games/night-market/src/data/recipes.js | 10 + tier2/games/night-market/src/data/staff.js | 10 +- .../night-market/src/data/unlock-tree.js | 53 +-- .../night-market/src/scenes/main-scene.js | 2 + tier2/games/night-market/src/ui/dock.js | 12 +- tier2/games/night-market/src/ui/hud.js | 2 +- .../games/night-market/test/m1-core.test.mjs | 6 +- .../night-market/test/m2-systems.test.mjs | 36 +- 25 files changed, 1015 insertions(+), 150 deletions(-) create mode 100644 tier2/games/night-market/docs/m3-数值定标报告.md create mode 100644 tier2/games/night-market/evidence/after-play.png create mode 100644 tier2/games/night-market/evidence/first-paint.png create mode 100644 tier2/games/night-market/evidence/verdict.json create mode 100644 tier2/games/night-market/scripts/scan-calibrate.mjs diff --git a/tier2/games/night-market/README.md b/tier2/games/night-market/README.md index 6775875b..e98c448e 100644 --- a/tier2/games/night-market/README.md +++ b/tier2/games/night-market/README.md @@ -1,6 +1,6 @@ # 《夜市一条街》——北极星顶级线①(模拟经营) -创始人 2026-07-06 批产的三款顶级长线游戏之一。规格单源 = [开发设计书](../../../docs/agent-specs/2026-07-06-北极星顶级线-夜市一条街-开发设计书.md)(底稿 = 复杂游戏北极星件 §1);本目录是它的开发工程,当前进度 **M2(八系统机制齐)**。 +创始人 2026-07-06 批产的三款顶级长线游戏之一。规格单源 = [开发设计书](../../../docs/agent-specs/2026-07-06-北极星顶级线-夜市一条街-开发设计书.md)(底稿 = 复杂游戏北极星件 §1);本目录是它的开发工程,当前进度 **M3(内容一期+数值定标)**。 ## 跑起来 @@ -8,15 +8,19 @@ # 纯逻辑冒烟(node 直跑,无浏览器;M0 四段 + M1 四段 + M2 七段,95 断言) node scripts/logic-smoke.mjs -# 静态可达门(M1 八查 + M2 五查:树/菜谱/食材/定价 + 研发/地块设备/员工/事件/成就变现位) +# 静态可达门(M1 八查 + M2 五查 + M3 一查〔阶段任务链〕,15 查) node scripts/tree-check.mjs -# 单测(经济骨架 + 九门 driver 接线 + 富三门 serve 判定 + M2 八系统边界,29 用例) +# 单测(经济骨架 + 九门 driver 接线 + 富三门 serve 判定 + M2 八系统边界 + M3 注入缝,30 用例) node --test test/m1-core.test.mjs test/driver-wiring.test.mjs test/m2-systems.test.mjs # 仿真千局首扫(M2 门③:25 生涯 × 40 营业日;零死锁/零 uncaught/latch 全自然;报告落 dist/) node scripts/sim-scan.mjs +# M3 上界安全门(U8b:7 曲线配置网格判据 1/2;--grid 全扫 --m30 30分钟口径 --only/--part 分批) +node scripts/scan-calibrate.mjs # 门判(可 --from=dist/m3-scan.json 免重跑) +node scripts/scan-calibrate.mjs --m30 # 30 分钟真玩口径(headless;真人真玩归验收窗口) + # 构建(esbuild iife,Phaser 经垫片走宿主预载不进 bundle)+ 两本包体账实测 node scripts/build.mjs @@ -46,9 +50,11 @@ cd game-runtime && node ../tier2/harness/play-phaser.cdp.cjs night-market \ ①服务循环(M0)/ ②扩张 expansion(地块+设备槽位)/ ④员工 staff-system(帮工自动出招走同一 tapCustomer 链)/ ⑤事件 event-system(日初掷签,排程不入档靠 rng 游标重放)/ ⑦变现位 monetization-system(mock 槽状态机,五路径回调,失败静默绝不卡死)。 -- `src/data/` 表驱动零魔法数:economy_curve / 菜谱 26(含研发 2)/ 食材 12 / 解锁树 42 节点 - (4 系统门户 + 2 研发带食材组合)/ 里程碑 12 / 地块 4 / 设备 6 / 员工 4 / 事件 4(四类型各一)/ - 成就 12(quest 表 type='achievement',奖励只发金币 = 声望纯度)/ 变现位 3(ad-slot 契约 slotId 口径)。 +- `src/data/` 表驱动零魔法数(M3 内容一期到量):economy_curve(全锚经 M3 千局定标, + [定标报告](docs/m3-数值定标报告.md))/ 菜谱 30 / 食材 12 / 解锁树 46 节点(4 系统门户 + 2 研发 + 带食材组合)/ 里程碑 12(buildMilestones 随曲线派生)/ 地块 4 / 设备 6 / 员工 4 / 事件 12(潮汐 3/ + 评论家 2/天气 3/限时 4)/ 顾客 19(常 13/稀 4/特邀 2)/ 任务 52(成就 12 + 阶段链 40,奖励只发 + 金币 = 声望纯度)/ 变现位 3(ad-slot 契约 slotId 口径)。 - `src/scenes/`、`src/ui/` Phaser 表现层:只读 readState/页面视图、只发 core 命令; M2 增底部 dock 四页签(扩张/研发/员工/图鉴成就,全屏页深度 ≤2)+ 事件横幅与雨夜滤镜 + 广告加速钮 + 日结双倍位。仍程序化占位美术,风格换装归 M4。 @@ -68,7 +74,7 @@ cd game-runtime && node ../tier2/harness/play-phaser.cdp.cjs night-market \ | ③菜谱研发 | 攒食材→研发解锁(下单一刻 FIFO 耗料)→菜单扩容 | n_sys_rnd | | ④员工 | 雇佣→帮工代打/后厨加速/收银小费→日结扣薪→技能升级(×1.12/级) | n_sys_staff | | ⑤事件 | 日初掷签→潮汐/评论家/雨夜/夜市节窗口修饰→评论家好评+声望 | n_sys_event | -| ⑥经济与进度 | 三资源+解锁树+离线(M1)+ 成就 12 可领 + 双图鉴投影(M2) | 常开 | +| ⑥经济与进度 | 三资源+解锁树+离线(M1)+ 成就 12 + 双图鉴(M2)+ 阶段任务链 40 接力(M3) | 常开 | | ⑦变现位 | 结算双倍/烹饪加速(mock 五路径回调)+ 内购预留结构 | 常开(mock) | | ⑧社交外围 | 底稿远期档,不在 M2(结构占位不做) | —— | @@ -80,18 +86,20 @@ cd game-runtime && node ../tier2/harness/play-phaser.cdp.cjs night-market \ 信封 = `{schemaVersion:1, data}`;M2 新字段(plotsOwned/equipment/staff/collections*/achievementsClaimed/eventsSeen) 全部 additive 缺省兜底不升版,M1 旧档直接读入四系统态归零可玩。 -## M2 门状态(如实) +## M3 门状态(如实;M2 门史见 git) | 门 | 状态 | |---|---| -| M0/M1 全部既有门回归(冒烟 ①–⑧/tree-check 八查/单测 15) | ✅ 回归绿(断言不放水;数据面断言按 M2 现状更新:树 42 节点/system 节点 target 兑现) | -| M2 八系统冒烟(⑨–⑮,含 M2 存档往返与旧档兜底) | ✅ 全绿(scripts/logic-smoke.mjs 95 断言) | -| 静态门 M2 五查(研发/地块设备/员工/事件/成就变现位) | ✅ 全绿(scripts/tree-check.mjs 13 查) | -| 单测(含富三门 serve 判定函数 + 八系统边界) | ✅ 29/29 | -| **仿真千局首扫**(25×40=1000 营业日) | ✅ 零死锁/零 uncaught/latch 全自然;墙钟 48.1s(48.1ms/日);报告 dist/m2-sim-scan.json | -| 构建 + 两本包体账 | ✅ bundle 138KB(dist/m0-bytes.json;引擎 CDN 体积仍〔来源缺口〕待联网实测) | -| **九门+富三门 CDP 真跑(driven)** | ⏳ 排 mini-desktop 窗口(spec/driver/富三门 serve 分支全部就位;economy.idlePath 双 session) | -| 品类 rubric ≥70%(质量 SoT §7 tier2 线) | ⏳ 结构面机验证据齐(见 M2 收口报告);LLM 评分按 SoT 纪律须真 LLM 评审窗口,不冒称分数 | +| M0–M2 全部既有门回归(冒烟 95 断言/tree-check/单测/M2 千局首扫/富三门接线) | ✅ 回归绿(数据面断言按 M3 现状更新:树 46/顾客 19/地价定标;冒烟 ⑤ 解锁阈值按设计 §3 首小时消耗带重定,机制断言不放水) | +| 静态门 M3 一查(阶段任务链 40 条线性接力/轴阈值递增/零声望) | ✅ 全绿(scripts/tree-check.mjs 15 查) | +| 单测(+M3 econ 注入缝:覆盖键并入/里程碑随 tiers 重建/缺省零漂移) | ✅ 30/30 | +| **上界安全门**(U8b 网格 7 配置 × 25 生涯 × 40 日 = 7000 营业日) | ✅ 判据 1(45min 零进度窗)全配置零违例;判据 2(2–7h 差一点间隔)基线中位 15min ∈ [15,45];dist/m3-gate.json | +| **30 分钟真玩口径**(headless 快进 3 seed × 2 营业日) | ✅ 零卡死零 uncaught(真人真玩归验收窗口,如实标) | +| **数值定标报告** | ✅ [docs/m3-数值定标报告.md](docs/m3-数值定标报告.md)(逐锚保留/调整/废弃;三处真缺陷修复史:破产死锁/卡点缺席/driver 保真) | +| M2 千局首扫(保守 driver 口径,冻结回归) | ✅ 1000/1000 零死锁(relief 地板 + 均衡补货后;dist/m2-sim-scan.json) | +| 构建 + 两本包体账 | ✅ bundle 156KB(dist/m0-bytes.json;引擎 CDN 体积仍〔来源缺口〕待联网实测) | +| 九门+富三门 CDP 真跑 | ✅ M2 收口时 ACCEPT(decision=accept,evidence/verdict.json);M3 未动渲染契约面,回归窗口随 M4 换装一并排 | -仿真首扫顺带的 M3 输入:40 日勤快生涯把 42 节点树全消耗、四地块四员工全上、四类事件全见—— -机制面撑住了,**内容量是下一瓶颈**(菜谱 60/顾客 30/事件 24/任务池的灌装 + economy_curve 千局定标),归 M3(U9/U13)。 +M3 定标要点:破产死锁(11/25 生涯)→ relief 地板 + 均衡补货封口;卡点张力缺席 → 地块/树尾/设备/升级价按 +plot_price 工期公式抬阶梯(判据 2 样本 0→182);消耗率@10h 95.7% 超判据 3 上界 = **内容量仍是 M5 瓶颈** +(140 节点/12 地块灌装按已验证的工期公式排布),判据 3/4/5 与多档 driver 包络归 M5。 diff --git a/tier2/games/night-market/docs/m3-数值定标报告.md b/tier2/games/night-market/docs/m3-数值定标报告.md new file mode 100644 index 00000000..81a0266d --- /dev/null +++ b/tier2/games/night-market/docs/m3-数值定标报告.md @@ -0,0 +1,56 @@ +# 《夜市一条街》M3 数值定标报告 + +日期:2026-07-06 · owner:北极星顶级线①(W-POLARIS)M3 席 +上级:[开发设计书](../../../../docs/agent-specs/2026-07-06-北极星顶级线-夜市一条街-开发设计书.md) §4「仿真验证方案」/ §10 U8b·U9 / §12 M3 行 +数据:`dist/m3-scan.json`(7 配置 × 25 生涯 × 40 营业日 = 7000 营业日)、`dist/m3-gate.json`(上界安全门)、`dist/m3-scan-f3-outofband.json`(域外证据);dist 不入库,重跑 `node scripts/scan-calibrate.mjs --grid` 可复现(同 seed 确定性)。 + +## 一、这轮定标做了什么 + +economy_curve 自 M0 起所有锚值都标着〔草案·首轮仿真回填后锁〕。本轮是那个"首轮":用 U8b 扫描外层(`scripts/scan-calibrate.mjs`)把基线曲线加三组扰动(节拍 P1 / 成长成本 P2 / 收益 P3,各两翼)各跑一千营业日,以单档最优 driver(O-4 拍定口径:只证上界不崩,下沿归真玩)对着设计书 §4 的判据 1(45 分钟零进度窗)与判据 2(2–7h 段"差一点"间隔 30±15 分钟)判定,逐锚给出保留/调整/废弃。时间轴按 §3 时长模型取一营业日 = 一次 15 分钟 session;判据 1 的"进度"取内容架构三层的 meta 全集(解锁/盘地/购设备/雇佣/升级/任务领取),树单轴间隔另报观测值;判据 2 的"差一点"操作化为:日初存在一个只差钱的前沿目标(依赖、声望、食材都够),缺口在 0 与昨日净入之间。 + +终判:**上界安全门 PASS**——判据 1 在全部 7 个曲线组合下零违例(最大进度间隔 15–30 分钟),判据 2 基线中位 15 分钟落 [15,45] 带内(样本 n=182)。30 分钟真玩口径(3 seed × 2 营业日 headless 快进)零卡死零 uncaught;真人真玩归验收窗口,此处如实不冒称。 + +## 二、扫描揪出的三处真缺陷(都已修) + +**破产死锁。** 首扫 11/25 生涯在第 17–35 日现金归零后永久停摆:员工日薪加补货把现金抽干,零库存导致零出餐、零收入,数值上再也爬不起来。这坐实了品类 rubric 条 4"不陷破产死局"的结构缺口。修法两刀:其一,日结在薪资后设"摊主老本"地板(`relief.floor_coins=40`,只补差额、不入 dayNet,防刷且不污染离线速率);其二,自动补货从"表序补到耗尽"改为**均衡轮转**——旧策略在低资金时把救济金全砸给表首的面粉,没有任何一道菜能配齐,回血路形同虚设;均衡轮转保证低资金也留下"可做单"的食材组合。修后千局复扫零死锁,且 M2 门(保守 driver)与 M3 网格(最优 driver)两档驱动画像都零死锁。 + +**卡点张力缺席。** 内容一期加任务奖励入环后,收入曲线大幅跑赢 M2 期的成本阶梯:2–7h 窗里"差一点"时刻几乎为零(首测 n=0),中期玩家兜里永远有钱、什么都即到即买。按设计书 §4"plot_price 是卡点主控键"的口径把阶梯抬回收入曲线:地块 600/1100/2000 → 900/2200/4500(按 25–35 分钟工期 × 中期每分净入反推,公式方向得到验证),解锁树尾段 22 节点约 ×1.6,设备 6 件约 ×1.6,员工升级基价 ×3(员工养成是中期最持续的资金 sink)。调后判据 2 样本从 0 涨到 182、中位 15 分钟。 + +**扫描 driver 自身的两处保真缺口。** 一是策略不升级员工,升级价形同虚设、中期现金虚高(iter1/iter2 逐字节同结果暴露);二是"先补满库存"的购买序在客密节拍(p1_fast)下每天吃光预算,树和雇佣永远排不上队——员工恒为零把任务链卡死在 t23(首位伙计),造出 18 日零进度的"饥饿假死"(有钱、无死锁、但什么都没发生)。两处都改在 driver:升级入策略(效率 ×1.12/级 > 薪资 ×1.10/级,ROI 恒正,最优玩法必升)、**成长优先,剩钱补仓**(缺料自有日中按单兜底)。这两课要传给 M5 的多档 driver 包络设计。 + +## 三、逐锚判读(economy_curve 键清单 v1 全量) + +| 键 / 锚 | 判 | 定标值 | 依据 | +|---|---|---|---| +| day.length_s | 保留 | 600s | 全部扫描口径的基底,7000 营业日收钟正常 | +| patience(5–7s / rare×1.4 / peak×0.7) | 保留 | 原值 | P1 双翼(±0.5s)判据 1 零违例;首扫 p1_fast 假死系 driver 序问题,修序后同翼全绿 | +| spawn_interval(1.8–2.8 / 1.0–1.5 / 35%) | 保留 | 原值 | P1 双翼(±15%)全绿 | +| screen_cap(12/9/6) | 保留 | 原值 | 渲染闸性质,不入本轮扫描轴;帧率窗真验归 M4 | +| combo(窗 8s / 上限 10 / 每层小费 0.05) | 保留 | 原值 | 安全域探明:0.04 翼绿、0.03 塌方(域外证据);0.05 锚留 0.01 安全余量 | +| reputation(50 起 / +1 / −3) | 保留 | 原值 | 未入扰动轴;评论家 ±5/−8 在 M2 冒烟真验 | +| stove.slots | 保留 | 2 | 首小时节奏底座,未动 | +| recipe_profit(25/35/48/60%) | 保留 | 原值 | 30 道菜定价对账全过(tree-check ⑧);P3 双翼下经济稳 | +| upgrade_cost.early_mult | 保留 | 1.15 | P2 双翼(1.10/1.22)全绿,锚不敏感 | +| upgrade_cost.late_mult | 保留(消费面空置) | 1.22 | "第 6 地块起"的消费面 M3 只有 4 地块不存在;M5 灌装 12 地块时接线再验 | +| offline_yield.rate_of_online | 保留 | 0.10 | 解析定标(见下行) | +| offline_yield.cap_hours | **调整** | 2 → **1.25** | U9 首查收敛:下沿玩家模型(日在线 15min+领满封顶)离线占比 = cap×0.10/(cap×0.10+15);2h→44.4% 违判据 5(≤35%),75min→33.3% 收敛留余;判据 5 门本体归 M5 真验 | +| staff_efficiency.eff_mult_per_level | 保留 | 1.12 | P3 双翼绿 | +| staff_efficiency.wage_mult_per_level | 保留 | 1.10 | 安全域探明:1.12 翼绿、1.15 塌方(域外);1.10 锚留 2pt 余量 | +| plot_price(minutes 25–35) | 保留(公式已验证) | 原值 | 地块显式价按此公式反推后判据 2 密度成态;M5 灌装 12 地块沿用此公式排布 | +| prestige_threshold.tiers | 保留 | [22,55,100] | P2 双翼([15,40,70]/[30,75,140])全绿,里程碑随 tiers 重建(buildMilestones)已接线 | +| starting_coins / starting_stock | 保留 | 40 / 全额赠料 | 首 3 分钟零卡点(§4)不动 | +| restock | **调整** | 表序耗尽 → **均衡轮转** | 破产死锁根因之二(§二);均衡口径 = 低资金留"可做单"组合 | +| ad(×1.5 / 60s / 8s 兜底) | 保留 | 原值 | M2 冒烟真验;mock 期不入扫描轴 | +| critic(+1 声望 / +5 / −8) | 保留 | 原值 | 声望第二来源在扫描中真发声望(均值望 17–27) | +| relief.floor_coins | **新增** | 40 | 破产死锁封口(§二);千局复扫零死锁、域外塌方翼靠它撑住不死(救济 826/生涯仍零死锁) | +| 〔表侧〕地块价 | **调整** | 900/2200/4500 | 卡点主控(§二);判据 2 n 0→182 | +| 〔表侧〕树尾段 22 节点价 | **调整** | 约 ×1.6 | 同上;首小时段(<160)一律未动,冒烟 ⑤ 首小时 8–10% 消耗带保持 | +| 〔表侧〕设备 6 件价 | **调整** | 约 ×1.6 | 同上 | +| 〔表侧〕员工 upgrade_base | **调整** | ×3(300–480) | 员工养成 = 中期持续 sink,判据 2 密度的主要供给 | +| 废弃项 | 无 | —— | 键清单 v1 全数保留消费面,无孤儿键 | + +## 四、如实的观测与遗留(M5 的输入) + +**消耗率@10h = 95.7%**,高于判据 3(60–85%,M5 门)的上界:M3 内容一期(46 节点)在 40 日近乎清盘,长尾不足。这是内容量问题不是曲线问题——M5 灌装(140 节点/12 地块/40 设备)按本轮验证过的 plot_price 工期公式排布阶梯后,消耗率自然回落带内。**树单轴最大空窗 240–435 分钟**(树在生涯后段供给不足),判据 1 靠内容架构三层合力(任务链日供 + 员工养成 + 扩张)撑住,单轴数据同样指向 M5 灌装。**判据 2 中位压带下缘 15 分钟**:单档最优 driver 把现金永远压在紧张线上,几乎每天有卡点——这是上界画像;真人节奏更松、间隔更长,中位预计向 30 分钟回移,M5 真玩抽验校准。**P3 域外塌方翼(小费 0.03/薪涨 1.15)**留档:节奏塌但零死锁零崩溃,relief 兜底在最坏参数下也保住了"能玩"。 + +真人 30 分钟真玩、多档 driver 包络、判据 3/4/5 全量判定,均按设计书归 M5;本报告的门判仅覆盖 M3 上界安全门口径。 diff --git a/tier2/games/night-market/evidence/after-play.png b/tier2/games/night-market/evidence/after-play.png new file mode 100644 index 0000000000000000000000000000000000000000..5ec7adeebcac8c055b115200e28b5eb11cdb4e04 GIT binary patch literal 169686 zcmcedRa6^a*zTdY1$U@UW?{k&uw^RFvg)kdRPtk&w`TVZM6#B!7Hx z83~C1Nkv}vgXiyq$889+O2#JEKbK)RrKsCc+ehm+h5t%R3g-@Y1;0uk&XLb<&n5rj z6)*T&KLXZtbl0CySbMs*36PtU$ZkZicvw^FU6# z%BY%m5H27-7K2Yv{@Y_;SojU_V6cFRcjv})3^eK6GYpI?zD>ZySf8p*Zal*zqMTBiCuXaeRM=t!Sqghofp&ljCGrn zd@kz;`)RuHfJ|Qm{R73b&)MLF^AN_!jpF)h3Ju^c+^dLyqO|WJUQ2LswLIuz(MDzl2NzW%l-_w8W+gr@Pm+Z9mJ^qaN^h zc)Bvd%fH!IH7voQv2TEwUdf(snN((kD#D))GP!&`-8d+(F?@L_)BtIEKQVX;9{1^m zhj|k&a_1b#l2J0d9RUrb=9mKqkfqFZ>a;znO0g8ooC_mLz%b0MO+H3oHb zv)#pE0silLKuLOWWw}p}+D?;c!S}L}tYBG`(zi5-0CYy~Le13|`Uz7R&UU0xAfpypG=KZL`g&Bbq ztMcUoVWXyRGoiot_kh@a`mix=3^|Fpa-% z58gSENMbCfXw+D-q4HG=StGvz6}*G_2+*X>RU;inHMwviCS2$wgB~v|x6ML`3YctF zYRYdsm~Q0w_irv@^vL!0Ge5K^n)@^m$$4!uDSvkGy9kl~Dg-i*@)7V=AWVtw@4xZ= z%hVDLSR}^y`8WIW$Q5jIp4L6k>fp=!*QnM=6;FcY)qG>~RE2L{z{(USYwp)###Otf zy)r1jac6ngVLWkI>Hsr5k{HZTVh(-fgbJxG(=#wq^U)sC?_I+pmIb1%myia5!n z3Pmb38Z!nnd@Fst5~)bBttcd`edpI~!NKk@zCXj1NPM2@?>gRk=v4J_Xv-C!zSQqA zI$_|yNn?0ufJ_DCmt~t}E!8a9BuZ^CiMWH@7C=At#@qBRI9%rv($krktA76M`Hs(@ z0|uxbVDFL7%>L>~$NYuozU}<83Kd>YaQv@y;da)GF^aFy$o7_ww!hN{K%`v^gDHe3 zm(>JFD9CjW`~@=?(qLW+bMtYhFxoqhVlJ8rBHj%n`_9(MC@QKEvVLu)C%%3YvM_cH z6Nd>A=+7A1V>_CY-UBPrg(7M0*Bov(j;j~S%OE=ZvSl*{m$u$@N)e6z;Uc@BS&k$R zdMV&^nu*~_SbJgDo5t4z#>UD)roF2`Mh7es6V0IkoHw ze4DfOcrDt zWFtvSFAb7K62&K-}CUH(0 zA2uT#8Xorbfg`P4CUpYOUByFro1uUhomL;?qhE#xU=q`-6p8nM}&rUKG2x$ z^lQ{K!X9^G1A_e9g`Yfq&!*oyGYe?_u&($O(70IoLF3(@#eEnjZ2ripWlHR!@fRF& zufH`9+gNK9p%Gpr7eirn^^`dIwA5z7kn)X1aItd6PR|X#7_4M(9)P#5>OHmE|2i=- zQ2tfF&f&FMn(+`2naT-_<%WdC=*-V6$GnSDw8Z1XyaN}=eAsA8$%mufdDbZrsCdv@ z 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

&R^d_ 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ⅅ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ΝZ>Z7JlUiW;gzOqTL>1*s3SL#FPq*LLzUyc)*%ys2{@hdVXIWY~H!s>l_OW>o0G9@0GeA+@2Kb4{NNjcEF0lZ&o9n_IsIZa#hl z#SZmLYOm9DWly;1Uy{Zmeu41@7WnxQf{w3ee*o&YFj~40w?KV;)RVt!#;$n4@5#UB z7Lc2(FsSBn^Br_QxAc?=QI6cqJGi(Ld~BQcNrQ0|T4KnPk_i1K3<)-ri7izk8Id8Jp5GDyo;C##{PZ{c^oHAO=}@9~-&P|ouU@e* zYcl{U00I6ue$!%F*F}Dy@~qAUW13){&_8qMLMUE2?o1CK1MN3!?e|{VWvrXc{ts;1 zy8PF{)Erye&p*v|{iByceAhUO5 zH*+x`ai`-ww#DVgOI*u77@WQE=oR&-o+RmzG&(ucBLy&Q<84RN!Exm5spKU+Vs&8f zr~vCjF4mQtD4wt#ZXOS(v$>^$ImSkHt|k<=?`(yzZte&vncF=V_^Vto%)tc#wWEx!rp{! zxi^V1taH^!_J(*cmOr{^i2Hx8&LevWEei-B6^K;d6I3CIEnWzlRm_f-*h=Zw?k!tv z>%e@bGf4URkM6s13AKkROR?Ym>i4qg_m3`Pl+yhwR9~aI_2g+v@%S_}bCqZGHUwZ5 z(DlMr49+GQ9_VwuXiitpL*v3Ps^gvy5+GA(s+HVR>hiTK;OJI|J!ej2dBU+k7g#My zQnf~&8tRop)tp%V_6gJZ{g@s2NypK=z{*$HtLvlZ?6O)Y_WC*CgDqC*@!lG1_xAW@ zrhqEGUJ&myr;7_igv-(NS#y(oee}RWtSa4l|I=QS$FyXf?*qdSB|a`}%~Vqhv)QU1 zg?d{@i|Xsu_w(a&fhBuWbkZ!_=%*iyqktF$Xrgr_zjr5F+oMYt;}787(KnVf=DE+D zm(6}p`l&g)nGB^aDKdkH;TR-wvQrYi>=`j!45~ulD}7%%xY2qumF^wnhvE?Q$#?ltrKu6LwtaFRQDtHd0*t_)ZB`S-j|{z zW(0Z?v|zQ=HL>saYk0YoOQaRQe3wwo%60z*>CyBOxh&NiE7Y+ z{vFx#vUdbnS{st|12ZG5Oiv!1=&>QM_di}IxTfCJrNYu1mvD{I?UQits>DkphUF=I z6I8m{QJ>?xm!&2Jfw|tE7u)t zZ@jh>t;5}Uz&v|@Mk8d&`jwEn6g5n~Bi$eNNSHR8wrN=jRVzEX47nryE^++vW|(w# zrQRpx^*mH?-Ur(Lcs${n?B!)zUU%>x-(eC%+fILaG~VlbF{VJJIy@wnv`*a&$oA*W z9)i9Zebe1`Ed7oQMFkwZIK4z3VdyoY2e}}O*%TFfO*be6IDEPw5v^JY?VaQ1t>R-< zi=lM>`F=UDWG!HPl<{y87VtKQqszCbtZ|K^{4b-AVOiY>3v^UMf2)>AXz z0AVMWbhawW*SWa}d@tgBv6f6HK;HApqy@ZN+r{C#r4mn>U`IHyURIYez7_VxpUnT)jCkCHvHJ@zBeX=3-ZYO<>1V|8ZJ*(}V zXv>6@`1S;PMV_jM^|<8-4_Pg?n?dn(D$LRN9in=AcJH!{cO9D$rdI!yHV1o^==SFq zekK(~WcP0pw2-dR)|bqMx4NOE$zchZLFDSB(!cKAcj1J0Y8)~pvKs8Ozh8Ikau!9JL&YI9 z%@dtP{}n~hz1*JP{GXC=l-=>8#M~JeuyeX51D^b-h;H7L1D5WM*nF+3!VsH{HD4z> zu+!arkzcn&jXTZ>ut&mh|J+UOt~YkYHc9}l&OxockB(cG#8T&qVF10xGrJbVo11Wl zJ-zp_kLmXVBbc^nc5rH**}qDz;c(1ntq3eWPv~{E_kFx~vLInn z0M>I1e%9{k-y(uJ7vlgAduvHlIhv)jUI%cgys_wf+WDB;bl6)7nnm}PnGyh zrsc;s91drW9q8c64biX(L>(i=N@{KoW&anEHrRiB>Y5jVQA^F*zfR>Pw= z){h_bMe1_%VZmi~^v`f-@fd5jP8=jY1V=BbYqQragFWhaGU?2gE^MjN7&Qmw5FsxN z(S4p0Q7YX761xehSCos*ul}yW;C8f92y0+Y=I%P%2B6A41NmbGW(MoQkmHG7Ri&Qf zF693C&o^r}VVn98(x-FnROa5lG00zt*O4}}Ve31y(fdClh0z?~p~VoE57VN)(hoG( ze}NP5LTbX245Ag3%Dzf6Qf&&x*EL5*c_g-d)Z4$Ons7p4XC#grC6N+kmzjBWDhSVL{Mz>nvUYmq*;Zx76tXAzkJR< ztK-gM=V)dq(*eHs@slw_%0etbtOWleE<*%@$WjiI)_vMpcK`F{RM2r>@%xYYeY z`<5ka`9r>J8jmN5rMaWAhT&>XOFhx|m=wySru||abA5WJSzhw`srLkTgtUNiiQ7*X zw2xJ8E(b9Sw4_(LIxM-6t~uGRQM(8fC7tOdxD=@-Zk~1wK-mYZG3`5>Ki~ArfM0mY znYqPSjAR9O|L;^T%rjBAcR@xz!UGdfd6YRPI6;QhpZSqCt3 zR!5;$g2yh3^F!D_!*nYG`)4>g9YwY^XThQplJLf}%}_Au#gS1$i7*qys{ss7dO;AS zfi`_-PD%*%s|e2@+g~-d8WrLhmG;9xPG6b&=+Hog)KrJfwNyC!`sfMdJ~_lp=pJ>N z(HH@#zpoiE2<-8X;PHKz{*p&3cNk588In@_{VGeEJRY#St2t|&eVqG%NDpCGwc}IO(A8vNs^x7=QhuI_0q_0Vqf=G zh*c!BHx=*E>k)_F`|AAMbWe5l>mp|#D=qpplIL-+bGSx!gN*CpZkIuSUnWB~#YlTm zcZJ5-`|6g&W@d+G5;$IZgVY^TMJ`DtKy8>XdQiGB&^Wv4i}f{J>@leVIr3|dGRJ8a z0W!2g^;Z5bSaDL~ILdbl8Eg>vEtC&!rE2b+^oc4IhuOUs7u!xoju z1;1I15?EaSRg&myT)rOEzx_cvk*lfS6;sZD;uIhMwwWm&spk<^Y34DjjhRho(Dlk} zQ;Gk{#NGiAr16(x!4$m@uE*#zt3IikeR>UfEl$9KbP7N#9*U~?pkFtzEQ{c)zoW3p zVKrfgC+v$v+SXMYH*PNvDN>G?*Q&35?eda7$u*f9p=oSxom#@@`p_mVESMM<9NSk_ z6LE<&q^pVL40|_b4kxr}Z`Jmmq>4XM9;!sNDao)J z`qjM`OJ3c0{9JSKEnDUt$Qyn;r;lZ$gm}lyjdB9TDA=uQ#_F^LX&K$2Li!cH42WH+ z>u}26We&BCD*gI8rC*gHg(A3HX?0y>-gr3_7^L>>y)LC~R{EAaT&jmUaYGJsIds(S z%Zxj`3z%RcNKIH}QG%$x+8kqX0(^P)Wcz(C6DPUc>z)0el* zu1X+3IKVf-(t0dMM!D}xAImDl_I*WHcS)zWdj9m^2SHa$#Zr?1qHwM?tlJCtrj=Qq zs*~)+;Dt#Wa*ex>rxJ>`p-BpdzuneFN~(en)Z!mE0W3K+zk)?55Pn|fqejG`BGrS8 zq@QM&*uAnX{L>A?ZjkO&zii~JH(N6-9ZFGd383E(w9vK5DG4<9 z&5}-;dxe!nHlO`$K z3(2wf=XxH%uTB3H3y1C(y0=@mxYCm*b+jomC={2Ab;RiE+E8yLi*tiG8ush7DQ5)F zF)P6=uhfZD#g^Z$4;C^O4f=Wq&VQ(XfB7y~UEIgPKszzx%zSBzjL$iRyuRg`TX(T~ ztpXL~<+NTw8hkCJK1?@S1{UDt6-J>S#?d3uU*Kf2UB?@|RW>AkS_z*>_)TZmb@07V zFuL;m40!Nq{uG5;)aau+cXlt)Lpnx1TY zQ8GUQ=;}=zp`hK^ViErVQ?`g9X!f{GeE8Z3T>7Zhn-{puh6Z=t!HV_8{P>|LrDWFk z#IsJ`A2tKrE~@P7Qk$?A8Svt0_I)D_3@)StCyVQmIw?B*SCF0Y1UUBWLMIuo)ciwH z%653UDBJ8;AVMC9nR|n0P-V@Lu>;tx+ll18UITa+?A!>5DdAtjCo_-mL9=sw7p9-F1{i z!!Zum$a-zc+-^$#2Ede-QBUYdY`)Mb50krDeg$YI-D)8a=v!j!lx^Wsr)n&8v9D+W z-V47!NwsH0f=z~6`Eapc@wZv?Ut!of}B&Yb{=J722 zLXtTW%FCN&8uHU=o&3-!kFn-oJMCVqE|7VH?#A z+M`a68jop5Ke#089P&CqKQ5?@a9;fkKV03j5tzYBGFj8Qzw_7Wo`+a=qn7LyT2pD^drV?Upvb~D4m)lU+407np^^ z{FxkELpJ(fPkK-q<~VtH+BE8h$C8Spx*VW#2~c88Fq`&L)? z7oBYUnulJJL(56%x5DwEm>EbLX5SgC=Nn4LCvYsx4A?u%Z&niKQ0Ut!6)SSTA0(J&3A$O z%O;HOxF(==kC!p~L7M!>J+=1nI4_@j?Z$(7r@>|q*|F=AefiMA4hp_lud~}bnBfI_ z0R&q%uQ=jg(Y|tfP>I1L%hkcdG4gXVAD?+Rgi%Qa)68p0&>>SQ7HcvwV=`PJlLqK& z(<(%9Rbl`h-S5m_Ra@*X^W8kK3TaH1L^1PG5eTchRu@3(eap>-E>JezYX&&|= z)_=n6kaE@!@RT8QDLdRQKl?U~-h+5icOKR45nu{cRU|q@`yhXAr;sqUsjrHQWtc0Q z9V|ik)N8xe%hxRvV55?v#fN#fnehp}NOyH-PLe-fru7%Zz88+__{=>GF&8TFVFyA! zZuvjX*ztxwN0i(JU-vQJ>Sf$$QMZ{Xwnfmd$ZtC~*^`mNh@U2E9qw6OzE`4*&T7d1 zaY5${;&EO}F|pGw&=YFOiP*B;>22ad<2$LnS5{uJN(;kCHsRkDcCYxw*CzN=lLx(d3d_-VM$@XgN2Wk|7*` zoXvl@l<)W-7GS3VLkb;M86rH%v55}(fgFH2L_IGM+JW@a@&N|EKVGI}54CVWyK8vJ z@7?cnsMq;c@FvEdIsPx-+ZfMxcayl|x<9YN^(+?67ICvDBA8)K!vc@d>fJR+{z5Q+ zagut*kCI5#SBRAcnkAW%QhYsE@W$|u%YkH1vXb4y(0_<_V7skCK9}VAGLQN926?kE zZ7HhzL*9Z><$a%e=E$+8CpScl?Q6z4r!O3so|Xdfg}vgo&9TOgyaTJ5~7TgYy1Rm{};Nw$u16j1Pqj zE5_`+UQTvFtWXPas|S0C-tvpSP?KEM6BJGY7CHYp_waH19(Moj}%NTp_s&ZC%}g%dUXuo*SvgDi>NH7 z-EfbsRM4PW;DJW?{#_4BCYgkP74r@d0p-ScwTLI@1Kzx-$mtd#uZ=g7RaP-`P80+ah*9;6X71oONJHQ3l{F^v zF%%P96s{hAABs)EvF*8?G2suM(PbkO2@KV_9P8+SOaY2kb0z`uaMLXvlx}xLLiksM zTjKWlOl_xlo6#?f&P+VDZL5;zJK}sBB@BrvDb)swDwBv{5wj;!1C(44R?6{t z2qbuEa&RzhD5A5VmCvri2Pk_J*HZ7;&R!XCjSaJ}=_Hec`;pyeitT~@`=)QiS-M5d z^9ObEBo&+Tsm1>-u`xX4k8#w*Nl2p3-~!w(~^ zCZo$b7z0X0 z(-U~PG{gd~_Gt{aGnD>iEft7|9Co-MVv2#1)8!F+n(mGYICA4}-h=_GxGpIsMnb$4 zTz{0Cnn>lr+uf0v=av=0tqmJxIZ}7d2y-etq+Vgf+h2v{h`Ja6}X3jB)~QOj`QJ+_6;=as{b_|bjr)I40ktnw!E4wZHLFI$SC@gMyh&MBZB z)yQAX^hPJN0&VE_rTAT&r(B;6Jk1M@BuY4eid76!*-B!bCnvnbg=>nu2^BHescD&yFJV-bp6obuJp8Eq*P1 zj49{q^=S3m#XmWDsw-O3Q`Q{Yf@sSu&u+#{`dZxV&{xosuV9Br z{ASfHM#=eR;sV~ZU*9VeFu3Wwt1sMGtJbPmCFDM|@QE=rGn^ao>c zQ;_z-fXaVQ0R9oke}+W7N_OtGjU=I^VEJc2lu6!Ii}jc;jdfJ=6Ur0Vj`iDaNBlj{ zhYip_Or5@`!Xk$1-E*41mjG7Er8AX3RTg+25qOmY+YRX@}|b`j=JqyM5l(y-)p3=il_Wo zZVs{Xw;h!_-Mjxv{kq4!<(%?0)Q85%hw}uq|3lqdHpLY+?ZP1mA-F?=%is>dgS)%C zySpbyaCdjN1b2cv1RVxymB3sn(I zlM_L$D3ugzW>iS!zW4xDze|TGsgN22?)9_4oljhA-IvSdCjAN{&ol64g^m(OQ*%pz##kUcJnLKE_8(0sdbcuWA3^i1|mREin? z4uFz}$*_ke7V6Z>n-YR4uhM)wm^dW@J3}YBZ5I1zYE~)vqu8Aci)PKVt$e9HO}GR# zkG?r@da>oia z&7G)LUNAj_?khrS&G2I4_80QDHTIb z_Be0HQs?h!AulOexa7GuBEgvohmADjZo*yAKspcgfB?IVPAeJ^OQynVMLi#n1K=iw z-OcYe>3S*e+u2vTWhjzmi$|~Jw60)CuYnXAvI_bTx5=l=m)SGrsDxNm*#tD@S!Ax- zf5Fi$Zf=rOP^0ou8;!DjJqc!yz5=c~=0Gg5s6Fv7jv3&_p29-2oN$TZ{?PW0i`F!{ zKFFp7H@>%k?TLY&K1gfe-QVYWdLqO&iLaDOO;Z9f{4F7L)PEu{-)dkoIN(kKu)jo$ zi&b?)IQhO&u%Q9SH>6N$2^;ql=fY${ES z88P3-xsLy42ELWRX*d7A_@*qTml6bT{(rL`K0*FFUp@TiU+>r=f#_YJW7y24Zbiq> zv$x7-Zv<4xFJPYIsB?VJNwxWv&b~Q@CWIt0EiRnUZgNpEZrhecBvO4>`;RLI?a_@w z)DP{E#{Iu$TC-`f2g(Ym0yxXpdJ77DMxgQjzLM{xSTg{v=X$3YOJ8Cc8(~c`U}Kt) zA3Kc5oRS)`3B(DIn9ymO+tMY&(hDCUocxQqKql5-~hSec(FPPrxfuRim>FivV}7?SsL zbWUx8g08eMCEwTTw89<05>>e+?R{ezW=kj&*pbpp5%lC!vBT|sO{j2w&#N$#sL4S% z9X@QnmVxprwvD7;0bnPUh1&MzO$hQ0u?aIz^; zi@TZbV;e&!^-Bhk@7n=zU3HIL-+A_@#3`;fz133h83{5P>nAj*)n}$|?M-kd%AV?O z^-%6=1tJ5U6s3`2aKGSS&o4(%3NHL%;d1sVfnH!*DePPi3&!zV>5*(k0!3tpuO~s& zaOdlB$I(!~s|Xgp13BiXlb1B>%}`U?hBq z`GakzKd=V&IAU(hZGHZEm3CK9=#NX>pW>18jQ$YaD=5T~-R{af9QeQ!A#o>Oq_C4` zX9|1wTnv)nby~sFBXE8>55IIfiXUA{E$m2X7_mf~=W5nmS)|P$hR;ut#%&TEfhf`P zLaI#ZwWfB1bT&sWBI$iAsAK-Iev`(c3~(glv2S1c_AjbcX$(_1yUH||(*tdAUe}=) z8;${QI6(+f6}H{Wm5j8w|ND$gH6<6yT*G)%;+OJcngm)H6|G;4cqs@e;L9(`m4E{O zEgS=%^UzCbtjxd8zspn0V@cj%*m}~!pMF=u587q@&&(#WHqM6sVgb8#CeKnrUWNub zhu@elL)AV3!{YwmWa`howf}wHd{6L?Q{9SUILB-kD<-@uTTb>=wGB~R_gigyCg7HSw?oto}I;O=AX)E1*MqC8;f0@{O4AfC_>69rHp*Ca_(|hb8Bmk z7BttGkXG*T*YS^iYmxG9aYmseti9(Q#^nuc%JI0Z+`9!>G6PHIjmuF1#}2Ja8b2Ls z53~2u(G?)GLaoji4FYsvc<2;zUL3Pm%nTB?)C3I{LiofstxfY*;O>v|808Z`vLrfA z(z8)JEm|m^QCjAoDLRTZ>Qv~&$?aonwr2?PjtBVZlpD#qBK~R*uGh}WL4%FQ8Ecoz zGC;isb165uFpumIsfI*qnrr*bGGR_=%slGT-S#a1_B!*AgqQS0L-B_}4?bk}OhS{o~*p zi+^*AvPtK)Q0*BM{_I~}MMUe5@p^h>wz{A~s_%0z{&*i%s7)gOQ;+at{S3fHpN!BR zUuL=gmhAj_kFeCrF1k=putT-#d8zy<>HLfWXHDQjYY9#1QlC zdPlvxtc}S>Vd;|iXiH5V`@j1kqfL+}X8RUrFj}&drb4r69Z+p(uF#@PwSB;HhR1OP z^(>ZF`|_xz@k1n83ooa%4{JC0zv3m&Cp)YvV_Z<7aW+VoRqCXpy;YdibQ?2?8b#hy z8>F6p)={VdWNKCLtko(HJf$rvHgl-rvbNOiu3!D4y&qtQbJeuAl;R+UuUk6+M&2Ej ztD&Y6f2?=T2Gl?Rk1b^(4CP<>9HDv!->kjU_|mu}kj!wq7Q`yxc59xTeKtN_=HE~y zg0<`VA6o<@S6v9G+{r`1hM7sNH0Lym)_v`=mA5c@HP_MRN^*eBma-~iS=D-9gKp4! zFr?BW&sqJy|Bkw1ysNsZJw6ykhc;3A_Cu>pbJmI;|Jffc?8f{s@<^J6Q@PR+LQTEB zB`0l1=o0evsoIUu|8BMcuzj|E)nUic8xL{PnpTZ*YyKKNChgM>98lGhER5a(@py(fK>?dT6o-=6}@#9G47Cqz~J_ zESa%fV-Wck&xZJP0CCH$RMy;|q!nXMARi7xH!J<6oBo;}m5=i^KK>dBau*l1d*uf= z(#eC(6FG>!)$&CB%B@~gy)kDx>w;9U8D{^ebv!yXlJE-sU%7!*hH;e-W%CssllaOc ztx*uHjE$@6EBm;4I0B|D0+(YtCkWcBT#HjRcwCvF5&-*ts@oi zP;+y(#wudUz_3DgIARP0D^pwQH9};um=$UDhsgSc@+f$B)qr9ZFb8{$e)Fk&V~k#H z8`R&xkg$9H*JKWI#k^i6%I0Y3$=JM9nY)IYN9F8!o5>{_VI$2M$Nw1VKHj}8OJn?I z>PGKHA0-&5B!l}d+;%@=dF$BjLVqHsc|1Fxnt8KZ!8>2RLKoVu05z}KCTQ55{8ah? zmUnD7(um=!Tdn17G*OSdoGkpG)BGbkWM{c{KTAsjg8FYkRQQlNpZdxTY+Cjcg|POi z0g-F*P4ku*C*=TmG9 zp-bhPa`LMYIJmuEDOtusEHP{-nB^Y7phVSe4qM+2tg9{T*ol7tSS|$IYHlxQXk|`CV@NBMBcQFOA8(`RWPV z3K6dNWzY`kL?D&Xkt{1-;2_dX{Ox8Uzs}v7EUU(7>YaEOCjqL<)1;RYccE|mm}ulk zYwkt!SYzH;(jCq0;Ecr+zl2f}qL|ps!1Tkx4rm*`dDp{j&e=N;+qqnqRHuLAUIa!o z$RXC!5PwI8HXfo48GM5(d-I{KASNtG*_k03vb7zeNWaLo^w~~e5x&9*rms%JNGPw zX#bMBRLEqtyj>o)ZZ4|P(4><+JHfl5EM2+k3DBP}gzup568R>>X-p%+L#m@g7?z^X z#OQhUCHWH#a^=pU4T4}ri8IesmqE>G*-$BZyL|h1`TjLYh18=V1!RZ5+@O(OZoiI{ zSRo09($KIXStCDtmxp%PV04y7q0;6~PNIm@Fc3>b`O2QN^Wm;_13Bx<%TGT-?z+x+ zNZPt|js14)=eF5^a{zqhNKLq!QrCaBqHRw;{(Oel!C;SyR2{s0Ze_PWlL=AG?{D6z z7h6|PfpX#|hEe%LwB<2m+AgMt|E&67Xv2DVRXehhsw>)VQAqF2gpc=A74njeta2Nu z!d5Ug#`iRUK}%A#GEf}jN!YA&7Wj1Re3W)I+2UMZxeMoU!K{Omk4_h=v= zXHo4U(-Q=37Be5R^WThc8pqD!e>O$l3SwZGJmtcxz4K)>MhwM)X`e{8yAg1$C5BTG z>7RJNH#(pjZ;Afuz3T@XZE=~!#jA=Jx^sf6pEX~8JyC2YHGc^rx3=+m{08l_%b)DI zvD8_-Zf_6#u{-)}lY4vj=Llm0@_4)?qelJ?bXxEWI^563gd>y(ZbA^r(8^u%o(x(K zGQV&aiUi^E?C=-K*}`HYrwu1%S9sSn74(ddq=W4VU5$o6CqW!n<0Vzok(1mCGD>Sg zK){DPL=Wrop94@5DM_$I|7^4=ThvmK$|#Z8xI z1KSdsgou>mZ_xw$0FD@&2&Pesh=D+mwi6>+wY5%@_prD;wshqz{`zz7REmBz(a&Nv zq`Q$jqNZG*I)W&IIs13b-U4@_?R~coL7RE_i`-4ppKSQ#F!RwNRn=6dS2DLap}Ew< zU9wcEITw5Huc$(EU}Oeuy{Oz7FJF5YEBl8Lid&XiBLM(z}D1aPzD_G7Nx z)EwTwf(?ZEDzbQIjMAyxe_$*W&%_m{jBk}CcwFCNS?9^>2uu3$j(*Q~7y7Wbg@f@u zlynBvp54rm{7sLUmRD5JkP`mGgn-UqbT9>_b7*1WywWvCO)5Eu%9N5q6Qarfju`Eo|0qnTn9@xrcKs#r5SKa`^=e$Ntflr z_1kWgmXcQsywRO<+~PAyJ|Q~>&=ZB}Z{>}utDD2G@W~iqI}x_E#S3IGjJl2rN1ZmR z4*P;SBv^}?rEWXs=TYJbuNo`f6C4SBgA$FG=7bVSvZSsadt$T^&PPD}FEc67>-Y5} z-V*Dnp(k*#t-z17&B6Ce#QSg$iC-6)WKkG^B~LR-VkYurU%~mN8R5J4IM;vX$xC9Y z4te@W-@$c}vv|G=bc5`Gu&?x#f|d_6xvL%rdnt8{A593+{hgvdi`jMD^@2_49CtDJ~k2egRn)es$`uXz&wAZF`fmM7zesGUts!kHB<&o(j)o_1LfpAEplK(&xBcHul6AVP zmx{cr7TJT2?;~sKy>`3?dN>}*$2^aR{3zt3H1rRa-)(7`%KwHqznaEoWGrBB*M3^svf;flNbrHnI${w8VY@(29GPgBTS zA3{u3k|7uZFoEKGN13|BC)8&pob~sz`~-;NyuH&+AKR_NP7E!$-*iY*Gbh0xmD-e< z?DQC}i#FG0G@4ipl2+j4ROc})k}MHfd9F!kQ{@Wa{ndF676^w9cwiu&mcBvxP5Y)& z_$C;^p;(I@2)9IF|uuzLJ zvRl2vF_f*tb52Zv4TBIn{P?0e!x>9 zH9WWzdQ48lO0@r2B2*!^H1TI^%@~{xgb=j~{65x{=;ay48gc2>cb6!x5>&uK#S|wb zMnxg2sv^f7rJ(h=#l^%VMoAshH}*eEuRB@Q^ulXHfJW+_ry2 zPjn&Y$5=wH4zf?XH-cFo>6aicEWw)XS!Ya6$*IkIbuK56<8-ZcIIt&P8fbJ`KjIG+ zemEySLtQ;i{Z{yTKHGEqBSXup{g>)~AkPQtqH>3QF3CAkaM6NZW5yNVqHx8Wy z*IW#B|9mKUTvI_a+DqoMQM}6W=i?o1(J$fcZZ%t15a*v@gWM^LZ~y$L&L4`qINI*a za=YNcI5~CFO)jAok{>^ak&xC--DDM|%w;xVv~Qbl2gCOM%DLV@VL;%;C}81UvHVd8 z81C?SJ}jYOYTDdT&XXY9Lhvh1*Usmck7;z-sfh@%uM|=e-0nH=Rs9j;zjS`j5d^hT zW{x7a*lqr+lBK9t;_ z!OX&?%lomvy4Y^osOAJsAZz_>c})@%O*dQn*7S#AmLWkreU|>?ecVYDhwFz26Fc*u zK0zthSXUC_%!mp}9m{ihCffJA)6(z~HSr9b1JgWIdA5j>8A(k3pfP@pOWAVw_lei^ z5zSUAbv=JZTS`3RZAK5bjk8{zq;$<@!+`+UqXXdg7i0lghRDlA~M`10@3sYufN1C=VzQjm^2*ow+D-}=Q-`gvHOlL7B=MQ0|TR$wj*6>%u@8vQgyS~d; zh%qPoP4Cw`i~jR(R)JF=z$iFNlQfl`F~t%ej8F!a)UIqD?@6>Ar_l6`g2J4*%v8Ka zDo|h@DMzerE);`soT4Nu)UR1`FY5W0`+W*n8||81HyDhi(yMhT!wG020Q8)vq0jaO?!swTj?7)t)e?a-W>@E zZS9gdYZD!>=*y5|4kYfU7T*pMA>X92u8-A%!Fw2CsyyN23SXSLv96uw9b58HinN!k2%YTj6psnJdW@X3q8BRY`MtLYx*_$v{nCER{o0PkP}^Owwk6u(c+rwFOhrt!_C$w#@yK||HOtxd8~i_7=drq>3qUG={& z&80AXnF;(F=%f`B1a&$Qt6^fU+Fu_|?$6fS7+O1N!1rw4iCLhzuUY@2fi#?4U%Y*Rv52KXvDK^iFs_)F--q|VWv z1PKjd@wbdKvd;!~z#W6}KX(k#4uHg_{x!E^&T_CmF!7BK_k$y|z?zip7+rW-oY%|Y z*T8S<@IF$;5vyxeQIWtTGkQqE%8grkg*h!RXWE5vO>p;np>OFRG>%u-&xw$&>4<<-;d;%HaoMsgJ9DY{xPcTr5fJN{WB&$dxO5qVVQ z$VKb2&7qhDtimS?3EMEkxQmeCaaOB>w*nL=Jaz-!Sxj)Tp&!_PybBi>`TUc3E1Xq` z3ADzFlE9QKdOcxVMK{_r)=nDmn`^&c%mVcGPlc`2$|$2%U|7GEham58QlD*)6CHL0 z%0SBb9z9BOGuLtpPZoW~k9RohMtXa3cQvxn6r!|nhNf}&5%0+d{Ve$+JC50+_pYR7 z{3fWKPd}<_mDXyO2*vIF#gu}A&781z{{mnoo~{6~G9QmVH-bM~P^ZV+?&+OHpP-I9 zj`sVlNSa5+LDtN1b2%1Jm9{fQ@>+uM8+W3Y!9Y`(LWY^}h9ub}SW6dM6FNB)UX#^n z#V>OkLJ)n0?x)$mC);ASAPfcq#KxT8GI{$w2J1Ml>ONeGR}N}^l1)uU*5qv0*DK2o zdmMYspfYfX6lzt67FAA2`$uxUVVt6*f_*7v?t&sJ_p5Cset~D`*N2T=Too?2(-&jo z^AynfhBd(PpzP+YPnV)#wYuul`gw8V{UJNpT2yvJuJwL|+GkrPUJ)O$f3gWTr`E9q zMkV&mD-g(kUBljt3*)O{9sN#{7#788yL#*aXoMdF%^HhQ+;o`a5E}x zc@VboRJO&=nny~=E=;-mVnAi+9eP*Fza-`#vnMALM6<@ zp-P?{4Rec(RUcEUol{S;8n${C_I2TR_1X=;6U}BuL5Np#H7^b{ib(r(X59X`Z=Onw zTt`ugHOPTSh*$Fa1mB-D0B@O@#K3foPt*Mv6a9RkLaGV9=pour=dH4Wx5!~^R%}6zu2^E+e1LIL4f+rtG`!t<9&VHC|ZM zN;_4_qB$*(+Cv5`=p-@OIt8vCD!D7m!tz!h4)4x8`H|Ro9ELnIv5(t+@SchX0w7au zca~PJOvlR=l05F2M)M!Oo;c$5nJcD}ID;(uNh*BxW7b`Qb_rhY$e6B{_j6mM`1XCt zf#bqnj&JZ0b!3GO{8*=b1Q00A>0!VP3!Wt7D*fx)kn^t-YIXp{o7%?&ilCI_ zvA31u@2%C&#D?*#$P+-oT#UvF3OEWCQTSh8!;9Q+^?NE>%IP=F2IRh)f?*S_$6&g3 zv|bv}X|%X!xILRuLlOMZ^@ZH3r_g4`^0f<;)64tzT80~5>E-j@bXAsEe7mGJji3gJ zj-PB(JPA@Wj5oCuKJhF0=o3Z8lpGS+9)E@+{RraLC1>BZGbJmK`z!rhq92X$=cW6q zDGn~3P0NFBWwB}YYLlan0e;4tTO_Kni`&%`7K>jt^2Bfot~99;SCGa-xsi|rvDv3G z3LOtYXO9Xz;SSdHx1qGGWO!e{$PJC-_K{;(%t`T#m;JP8N_AF$Y|rk`H0$8CrAM4g zBiq&$N;w1$6Kg~NG-M%%F&-@IY1o{xk;0Y$dpJ@$C!`i{po%&;I!Y&6MmPa zi#yj;zE(p$S`L8t4XtY#e%%)lGk6#FPE@kKUyO}Sb?OD^Z5i!MKK{DhCPu*odL_r8 zABoahI+!lW*2p%e3xu#k2`q7G{@6Yw(7#_`q}!;&9LfCPfC+w^&qMPQtAbu;OLFGd z_&9)!4uBgy0^8sRosd-4$0uG|`r|higyD@UoM1=lY%o_vi!iP-OY#!h9UPd?n$kN8 zn$|v15ydqcE^{Nf_o5KLOxU3)_=+h>6>j?GzU;9RQEHXNs2|zYwR9p&QhD7=$QRN_rf9LJl68K)PL{W?)Plc8P4>{c=ca#dJd9PUA?XAk{JT^rg z<<-fI@^7mH`CNl19I?OHWN(CKt<+Vl0*~KMd~u5reUi-ydc#`$P1jgKM2Lt#M=MHp zML-g+LEfBKB531)HZ?<&O@&;r1g2oq_RTMyCrvqPQx{v&_9|mbv#yNlL{R-uAOlTB z&@o60K})HCT5m_G)aeX1>NGy$aFEmjyds8jiGvpgt=G{CM(LfFl*&bJNRCvt{9P~8 z3)TBE;AU$F(kWfO_)mBapwKP4-4*!N^&TAs@n?k_>7ydSxeNOk<(Z9`S-+4BS-8EP3(_o-(cL+t0s{FiAS!c+zI(@z@ zamZczYCP>H-@wM|TbnCD5k4e4EkUv9Egy}I+_5yB^$|bOH9E1}S5ipgyGuNeR5x!n zj}(q@O89-XD_P$F^z$)-n8-rAIQd4j$-5_U{3{)5!}dKEbP-ePBeZn7@7#rDqp(io zQo=_)kOM7H5J#-8@O!A)R zEbL{-9Baac$UdQ{C!}llyS+6^*NS)nq~sljW}Z>Va6g@nD+%HTUF~CXXtGR=RQQ&5m1wXnL}# zUQ$0sPLZomK-TQOHs%36_GrtxZ8$y6HrC%=HqS|fkw#T(zM$K&9jg#0%KPUMYQgWZ z!xv*uuX%Hk)@V`~*7TAw-LaI{kE-NA>I2Z!7sZg8hA=91q013%sYNST8VL6SJD~EQ)u8Vjt>LVeN$z2t=1Y3k)`etM%sEg0tkvVM^ht9)+q55 zu&fumIlD*u4^8E>s%uo~2=Y$O?fG-r1rC$`$V$=Er-OqYg_@YQG!%9Ar&ZEbK^qP11Ri95?Y<#jca^mHtvowFr{%P9~ zd{sc&9_&cx(&auc#Y%O|4fh!g7}kjKZ@Og;Qkwc?@~y%64TpNnKPT9mQ#0aAj8~zy z+Wz%jtsQbU9y34fl1Ja_QmXiLg6bD#r7j*0ilj7{Mn1GELv$5q?X9t~cfSBImFr&` z)9K;c?`UKr#m;mNoGCzx`z=TCA_k()RvKj7JkhIaDH=62^bC1p&{6Mp@mX3LckO84 zVJiutIpm4;n7{kU-0tuiZ!f*p<~ZEMU_ZC|97mrlNo#IS2hWT7n>WcKE|Qer{?e@s z{5zGICH9OFCj{hm%T!_`R3R-V*$UJwQP4Y9GAxnFkCgZ@gD0I@C=yw-@Dfmc1F8|&%f8#xh6$sk2Jst%3pOvEx|HgD>#kx7r}m!# z0?V&|8ZV9B->HXvKl-q;_f)?deb3PDNY9cwe~6rDrYsI=xE%^T{d+AZ3E%%f)jshE zG^LWer@(?=!h>+sieprHl%8zBqQ@tt9R9tR_4jM~*_op6`Ab+9uJ7|%%!SyZ{1$H* z$IF0fVd7#w!@_v;l$E9su7~)n%9$pWF9F`I5>w}Y{Y?^m!_C5Po3PVdYrQa z?KfF@Sd5%fdhT^ZZ}F(q!Hzyto)&iL+~Ko!=9anNq*SdfF=LE;$P-ylskM+xWP%+8 z|KUco0B-c7!nqhGUCDfb_tD*d6LNVp_aOjf^%(U%XruAT8#!`ufe^oCb(U{sns4cI z3@4rdOO3~aXJr!8XHgZtHw}cKpg3fZ!mPI!6`}<1URb2|Iz`?Dh=}p*|KjRlgb-W6@Gr&5OtH1i+M2 zk6ZEg%slh-shLA`^&WN`Y=PTDq`@{vdkW$gZBk3>ps+viX^ox~);MvEHgToLE;_(< z;hZTWVFjJh`&P2Fn(!!1TBfeefGnsI^?q@KVoNU*S8P4ZP5fid7OSlvq|4*2AHR+H zOgPXhhPpI-yu>)HJEiwdD`bv)k^jLF%}nH@tq-4xHSTUfHo7S?`sb><9$wK?N$#Ew zES_EjV`(#IPoX*;1PED*vVYXJwTo3|G$(G8tQ{y|-|_MM`TN=h`g zCwW_$yD7J?<#w7oma`uzO;zURzPV2l@xIEa>n}?(eKp9hp21H)okr0$t~(tKUnM*MHqx%8n%pDtdLJG)$0{MES zKl@YqU)ZcTi;cN6$BpkDQ4R9}Fc~P;iJcAmCV3WZUqCCm!d!Egu1IUXHNSb)Yui%o z(eVi6Fha@SdE$lr%&WnO)EU`La-%Y|4<8#w0A)|F;p@Hkez14lOzW{Sy{dIGKwdkP z$R*v_slU<*zu(!4RAa=VbU%=1ijeNtef6q}qeY-m(ae>R^eF_2r*^isM^x>{GZKycJt~t?W+dbM)W{+TT^`IysCvUV%BvDo^J z#RrEQq?H5`6FG!0HXl_CX%159_u^i^)d^yhoJ6=IHEa%wRBt(vlFYOGA%aG8P%c5DA1)7$-xCF z&9p%KV_1CXyQUH|#^l8C+iAsFSrV4}x({JhO!#)OUnaccX>NZhR*?sOtfVh@Vs`IA z_8-;PQNRlSmUNPP5Yvw;4XH^wih*5*+X}7(+4&M{8Sby6cj9%d>M$mAq!#INF?LSo z-%!%|aG}%&+{NC8o?U}Omn$Te-q%yF-RwDIz?!EPyTpWPU2<51bGEge#g@Fyplf+r ze1rXPvvnkTTqG`AgYBkbsTKJ2xsxvQ>gzS+j`!9)_|@Q_MCa`>{JF=|<3*VNh{E!i zS`~Z*ag8z)<4jfla%ywd3MS_O$pj(XJs6$mBWwqbUFR=%|A!?q^Xof54PqCM7?@o3 z)|F}YIlxS)PRX}Q*k)X7#t2xg#?-+iX$^C>_N22LadRd0g=N$2$sUe^%IqNMexhs%^%it!GKd zgReb1Byl5PFlm2hpQ~}{c)yXE?$t58x%vV@_Q~*fLE^gEqWsXDn^;amje#eyMAYPU zF^spbsTq)i-*x!6f= z-hYcI_&3|GAd7!NW;5&a){o60ZuA?Hpish6DUlS}9nWT$-xvKnv5s9gl}-u$M-*Tq zQjE-FOm@byY~0)RHLi%QPE1%`(R|He7T7Agu-U3QoeR*#HUYXQ5mB!RR~+80$&*xc zZCl-|BAXX9U6*mizd-kKE0~6x9h9*Ur<%kjET%kGmboK&KoBt&rSrId!mUqi`KgDC5y++e{=^;)6vt|V)%9N;;?-F+bByZ#?5LC))sMK z7E_vx>wL-3EC1u;s}0xfQ}vEn?Og@TpWmlu#N#y&bFxh*@R9ql=|@)7`0a{7M{{p(8p z1@JUoEin=HV%%~aINMG90d! zQE_Ee@WydC6i`>?}!0=E#7|r>3a@|)gCZX7H2x! zaZeo@!|kKCK6a`K)Iv9)Q?Pyn)ZpwfGdr8!ja~|Al8sw#+=%tFci`14dbRGh|8#u! zSsCnBeE;#?PEUwTk|02{WlS<;rk0-AuOxPEn>Tl6vLqUtY#Xkamk-3D?XuN4~y( z(c`!oZxaycXv=cC%|pI1Sx3#`TdR4cPW|AwK@e{3V)Q@73c!IG`k z$nb%pmb+Cxk1fb8gNYI?%ZKL8^A{-*&p=T(%0|oRaTy_vpj}5 zN`({EFPR5+NZwYFUOwj={G8KE~l?%MW5GJFfXUm4V6FN&-|iW0bjPzhQ=Aa4o>I9j!Gy3@7Mna1w)0 zP8>NX9ZcxF&yf9xBXTv1fanVUJZX>f$NspaaYVI!^&l0?skCLMj)xq(6@?eV?pZ4j z+vYt~v=CFChMWB{vF9s@Bqkk9f299|YLPRfJc`wKk6oW;{t)D&=+E{*t?~L-%|uU5 zuP7(%b(BcAnFqx0=F7gHdO!HE&xQb>xKBOtZw`iVe%vA!FoTEsrl!oTUXOF&(8y2B zeU3JOO)(|Eu5;I2{AU-AIR2Wxhl5#*pSpd~l5-J4{P&EcMTbK3=d7 zRpF%D+hc2fn8eCCLRL@BS&Yzf%$`LRA~-kW?Vd|t&Rz_2=3ZRQ&6dWvZdG)`;a2-) z?|)4w(+Y;}(IZ97&V}z<26Xw(-R?`;`s_vt>2w!6#h|J14K z;?0!`bw9SpQOKQ=5EWBK^yGalFDuNL+Cj36;-1qNP?&Z>TCwIxP)Wtkv z|D>W_jK@(kHKmeo>gXZi(DA_SJxVda`v@ws3A)**6I{K5RGYPOOBWNaXlnsCR$>4- zX4v#NQbka6U5b{DM)Mwx%C;pflS6+e1#nZK&pKK($u8;`V<%fyL1WigaA?W{(j zwNfGM40v&ZFI0z)))~vD@7v@X)ze(`(+N_u+d`ElE*Bh=WCm+qPUd&vq2&(GF*Y8-)?|IAIBc(i5P$SOa7U*!#_ zuMTX&?ny73<*@CnLB4`6T#=0o*b28#?i6puYxdcsT5N_!r4QhSBrRL2%{nr2McEQ7 zPDaF+M%v|DzGKq{L~?^=9pmtK(hC=L0D6aMK?7T|6Vi`KRTaZ zBQU0|(dF@#%}Rm@qK5D84}S5bSbX$tO2nX@+V?nz>Ey(hdc2yRc3gHU6YuKu;AAUj z!7ulQv#xqXP-bATdM)dEkPlgNFR6z<6+Yib%$)nWdnjo7;yQYiJRe`(7nM;R4y&5A z=;$yF^Nq~|EmYd;RF#|y%9)QPQu98y zI`d7`Cck#ctU_M8m%cX&5CfGT5+)uy%jKwT^IIF>4$L;**9EvG*R_5%Q;(8tImL>j z*KE$3YwYSPX4OW2Gk@S@(n<7PwKB4dRI9@JaJIRqQ9<7WpZ@IdHwt8 zNhK}Fk3SbU?J*A z7hj=M;NS-mXR(L&dAKX~c`4q&?k3sgNld^CT>xq#IO5GZK1FDQBJ}B%+G}~h@$i0c zs;kF@E&h7Hg4 zfq;~I+~C(dT-SWg;^{s^&zTC*rA(GRmvJOL`1k2?MWZgtMCCs`!sj<_*E=N#x4r=W zRVmT=+0nzpxY_;&?AAN!SHa5!Xfn}!YX6w0cF-|+-^JK%6FOT^*HbN!6)DuU*RiN;Lu#_nc?5%7%;ggU1*^xm$k1zSU zHh=Fsf@%qzlKu~SZyD9r*X@m_N})*cwpb|+Eflu`Em8>XZpDjxAXr=-1j-3&X*)(@13>hnrqIvru^1gGJp)tj6;S| zCevu!zP|SaOx8SJQ>Z4Jo{6s6V}?~anVg|s(*GVM*n-i$EGi9z`JZ*?Zi>Cpc$O0S z)!Vdz)0Bm%oI}NK_0<0nH0ms#o8rH%4E8*seQD~piIEuM{cskaysR;mL!$b-LBHj* zsV2skyQmF7Jf`0L?|(3@;oI;w`m?Pex(PCqXH(?b#tx-^FM(s2R?{{P4W z?{quki4wq4!lEe2oO$2>9$u}Qw~=~k$56W@_S)2iwYu-ai_PcV%8fZ=Q-%p^4NRj{)TMjcQ@iRbHCPB z@||zWGynX9CTThgQ|B*Yksp487>L;!s9jkT%d_3+Le~vupSjrH3dFztG4@oGVsxw9 zte~EJ$0PuK$#ls?p5W8$xGZ}0YIq%2qN+);iu{WrD8E}^!JDMWs!L5>WVW#U=wUMo zlHmyTv$ST+P^JIMP;);!+pZK<4S9f5+wt<(rr|n_m1( zi#dEshK4fP$UEG| zk&EiH#zuLoqOVo!I@Ln$zQj7uc{SX+3=AOV>Sd908BB6B3GZ!U9a+s!8**}bR>3pG zGWq$%*FPyIO$q7>X4h*$W|`2yZ-Kw}znFxv?FRlnl_HErBT?A{jyyvs8 z?k34{hzX$+sl(P%&V7hMZhYXM<+d-zhmFrj`>3Qs_nZz;YT+((GDrX#3!DO$N(P9l zyWr1tzOBB)lKWalTS|>bCvzEWEgwbjbdgt`hoxB$L=50~GL396W?O={zl zIDx#HP%4-yxeAtyZg3n;&@>VWE1djnW3f+cdhd3yPl`|Kb2q;)?o|lp>}R*t7;~Z^ zp1FZ7$nnbW4gDvR2Xi#7wGf|{>Z17--UxDz+Q!xw$F%z^nee4{XU0mHN!z?A z&B_KT1nZO+f9hDcXd=s5R#V$L`dc?*vfuiTHfQ6OQT)4q=K`>}b8+b1MzQkm8Wi%4 zihqHCB{w#$ysmae`?*Tp8*AdHF@*B7t_w$m(HQ7nkx!Ud)4AKB|H0O^?Fn1k8{F4b zT+ko3?PGLYAg@TE_+u9~s${Tp`7>n|iSxU@8r9Q|!6o4e(`TdGqen{5qyiI!)vhea z>l4gT!InGd06K|VSLSwSr?|B14YVOA>=7{&q3)Hx(86<4?nw`66NG5Z zW%siK4$li;z=TKUPr?C_N?&a(Z3b70*r(caQPWIY5z0w4sgH%4rO zjPBQy?kbl)d#2j<1J}j67j%V_S%%ng=VjIoO@_|`y9;o0{mr9SSr%rk*3}Dr+Fs$u z4rbptw7}Q+SpNwZ=7L#PdnWLPx|Z3Ff!{DGeE&0+-)kr>nsYXr z_6gBX7oYJzn7Tpw83MW}9Vt z9u2CoE>qv&hiX2fGYa=e4Br7&ClFO}Gfvje)}^$JUtLEi@gwRP$1f4Dc$Jn=X=zHz z1K)AwO8wuk7G}q~m~bby$-b zK)h*gKjOqA8j<1~!Jy|y(A0!s1rOdYAH2TM|5_}-}e#-8IrP3&QTwpL`ankK6%V~-V3S1n)%#8wXTj;hqQ@&B0k2|zWGYF z9(A#M-?Y;#)Uq_l=jkM7)mR|&&eMu&$P0=H?_;9H=gZ0?;9NVx0Rg^KP{bNZh@Cz& zM|pk=Se4DS@x`TuhgYRGr`ygaejEPT+JGu9*)k3p%9E^ub|4+K@>e_i?h{0)&z`KE zZI^WO^R&tLK8WuvOlt6!onINnT74`wu<`R)TP3+Ya~8%X<`-T^UNSb+ro^gyO2?z% zlpQo}Mf~Kk~D`S2i;QN(#79BPb5K|7slXUyVDk@Ru_1RJQO+xTo4^Ong`7 z!>fCU;@MYE~>l0?Oi-5t+|KLXJV1J#5 zt6Ar)cm(ev-*m>T=L^;|J=y+RQ`Ze;UjESw8>)1++F1&6R#+2TjA_EacjpXXTRcd3?Ub%gm{a}`^f)V-{ z()-Pa--l4{r_)nyGW_V%1=~e^f9u`nYmc^?f1gZyGVYztsWVSXK^;5~ZcL`fk(c=$ z{wYZb<*1A368}W*bwp^s*U2=B4u4=Cu2fwSba5~ruTIqc>SF5zFNZPNHR-_=Q)22g z#vR$0=xSbasO7QPok(xRtf4o*@B$>|H0LdA&EH|{<-dG;%p<@qh`)(ZJSi*z&{28pG>cgf;qW+pCa)a4a(4R z`XgUb6|D|Kt0HAqvA$kMj-@ZPS~b3Ctc>Dpsmghb+e(JYyPucP=WuvPN$rml)6{98CK z;ga}G?#<3I5B0sz_M+dd?mML#SH8>#L63xFboJ=cxfxa6NF~3I8oH8& z$1C9sfjD7rR=D3LGQ+f?oB`{s5`4W>iBu0A zO@@hJPvi>_!IqW6y4g~H&_O!7G-i)*+WiYiJTs>;9xX0j+oOm@@0RB$2DG zw5F-C@BW{ywo3=fn82&~i>)olUfaII%>}xr%r}yhYQv)u1S&)QW_oWeR;Tl`22!Zw zT6I>7>S_xm5vy!c#my>orbr|B=(L5kVFKqS$vC7CnMferl=Q|+>6lUH%bLra);uh4 z^t(K`u*x@pVnVA>-ni}%Jjji13dALaW-x3>)~eLc)|C`kQznjQd7fXThFWw^W~F0X|c8xnDka|%?9P|;D_#~EEji~tlQE4d>=}wjTBW6c3b5aXF4gQ zA@wrlI}7L?v$4_Xp(QeY(Da^`Mr;ZY2cU?&frK+U% zXHhTc{Gz+UWsaXte`+rvuh`SPQA{{^{9p`ED)16_mJ)o(FA=n}J9PEuEbE*J6|>+%i+W1j18Ds@m1k{>rdzRs*3dm!}(G zyLuYO`4HQaQC^QQ=zQ&E(x{>6%%@y!VA*YK3kl>q&4X$68r$Nsi5T%*WAA~#oik<) zCfly{Ro`FRtoy$3ZNdrJ%zk&ewrg^nr3fP&8a98?9aOTSJ&#duFLo}Myj;ZPuS$-` zope@Q9n7H5y#wOFjlUElRN6ZGFKS1RGDk5N1Ab={lcp~x`RDZm3wPU_b1p0v*CfOh zd!ipfrjnn}HI!UE^CG^xE+60oZAdinVFtPCkS4yzy+13H=0Eq~HRGJWSl~}lBQ{3c ztV4DoMgwbux+Ml&YCLHZFA_N>QcV5U3G^e?ky0G?j?bjf(}r5BV4bIwMTRlyu%FH9 zNIl_ml&b4@vbRrD6f>+X*DKhzsT=(@OhP!r5Z$hqt7-_(nU!3>oOEk7X%ur$<|9R~ z=P5lWgI>y-Gpf-}W*tnnykDm%h)riB@E0!S6mGI+8)Pt7y#|wEwz{3Vwaieevs-=k z^HOIAdeutx6i@1ebp!wG1PSStpwC=)XLhisTgzxCP9}tpmWjdTnalOrL=pqEZoXIL z#+P%q6gHuhgrlCl}odMeqS*HTFy;;GMT4`TItMpnRv<2 z(4?~XX5j1__ts|~mBy6LT0~1YFAfQB0v~zXqNqF1kmVf2k-Z6#P1oly!$)gRM6MJuYHHJz+a{Z&LQae%bLwKVeP_YjLZuiL|dWmz)@cFO~DXTnB5wnw&Z;Kb}pjE*-q zqq=wPdAzh6dEaDk4atai{q(9w9BHzvtVY@>f;$nN84L}6V^hxA@W#s&HndR6U~G0G zk%CR4bHNQKM_mCWW955abvV7Ar1MITc?4&}I>lkC;Su!-qI1vIcHWrq6h;+I#867q z1e#rbyZyy#=BT$o^Yz1Ghfx$U^sV+Ut-Mhj|LMnOsv*zhbjtYyqyp@hRklp7H=~&zJ(AiFY?Qy!)Vj}7Ty)yK*!K`F|e^ue{X3uI?$__dfqq9bI4So*PE>$i$ zT8%Wdx$;c;QFZF5D%UCiP<-&0V%x%-_Vvk1<4Z_}os(`eV9t1a>FIZwA{LIt%p%ah&v$BNN5b;*`kwSz?Bz-FDcS*YMS|K zF!mUK!u1+6r}5}0rWl}u-I1o^omx8EM~Ufj=G*b7pl?=8fF7xqxfJQ_c^MX3a%GSN zl%O`{?+E^k5*{a{?h3OhX&&(Nn)QLqYQ&X9kMGo&Y-*~=-B2iNbuQeiXoKcifF0L= z4pI>y94Ec*P(@Nsz_j)Gls+k6AZsds-B?Uae6VZsIrE?LraO&NrcYZ;>-{xcWW_Qj z&U3d517D$lqhqI3^bGlGEBB88laZXMUCgC2gbmeH)odDd2*iz}o>{g0x1!E&^YnLC*fa`6oo*%KP98&!A9^XL%YW zYXqI8uu^v22~wx#f9C=yhN*jR(52`K=^4e)74QaZG?t+*!1%~9`wdZT8@`#*(&`N8 z9tqDGC51$OCrzXxL9s_veWW+E=a$?T_#^-139c{H1D-@mSr> zjQbc58ww5UH+O2VjV%18lBrV_SUP^mjpO8az>7NDCkd)=JTR_&w|kZaC@`n2vupzF z(<1g(XQ2^8fbZq*Whe~}vpL}l!cZ{crx|-IuD32}SlU+4IwRt>ij^C`_l4Kj=FGRC z1>@k{C>s@$Dd!3D9@!bwK^rBd6TS-X4#J^nV~2^79xKD|uTA_o>983#s-3zr8I9?R zVi{U&$%?v)l-?(OI6)%zdrhQzn4Bi+(lKXP#Nd{WPC~!`Dh=1!$VE&uau(sC#W)&m zk8~;;HMo>#5ylxJXY|t3HNaR@V8DB&xWAsLxXW7=e1s`lTMMZf!zs|3{g@xD=2Mq2 zYX93|c5C8z73w9k1GTq#dv%8HG-BW+tW zp@upW1u1~>=Y+MKVb7P6?ZFI~^X)iWY8OQ6=JU9^K!@b`x=B-~XHpQRnso2MJ1Mb8 zee-`7w2lWTImZg&HJ)4!ci#_`0Wa9>2?mZ-8QVPUR;rh}_#GvcWzrN7VaBjP_5{$a zK5n;p&DHM%a>+cO(P{A4^U-i!>%4be%`KW@8qe9xkZBHuCnTxFXi8g{ac}>C#~h_? zot2IrOh#0h@(bW*8aH3=*EZ*DxRq=H8<*E^7WT^7?-fy(&o|%@Lc>g(MVs-QL;cjf zS_ms7dRUh$(m?SJ+M7T2?rZol@z&&Wmv<^--jtz0p~~vFS#E?!Gcl z)Kb2^Bhx-#P9<3mCU#O{yUv*(D{MaVIsPlmb_Pjj?(I|&wf&_eqZS!X2z}m9=D2vw0u@L}k z69=ec4IZDo5Dt%rSw5*~1`b*ExCc9BBnP9u^4}L;FGs@+8k~7NxVBP8guBH@<|v&M zRiOq#y4e+yK~`PPMSMc{N2l&814j$LXzWK)VI6(#byH~WP_v|UV81`J*A<$`dPnZC zHhM0;Oi>2JDZ0hTe(rRAkE7%`jxt)9}M`buHQ1M1wnZAuWg4hiz|EUPAGT?79U!w!2-g(?>I<$!(dX;r8HZ&Th1eM!p9KL*W@ zIwnRwi(dW}E<%3fB-UeY0WXJ1+RPHZmgH#>{bOp z4>z5ltNq$d+L(CH%r{QwMSFosgMri_kZU75BLa5cRX{q?tYWsrdG8mG8PEx1P5bTf zl{>!~nNJ1N%h=Sii_8jc0j=-=8s&S#{~kCHW$MzbSalb)un9y?{}&m9b-LFv96;K= zzvyx|pJ$sYyxu=p91jGtl~rhR%}r8Z@08V8$&0>xW0B@U918bw?3=&FXO`C9J0jlmdozJtTf5RkbK8)L$%#c+g7!_G9nJJ8l9mU<&hEn_%XN z8`Ok(-*e-wFv+jS>*wq1Rc7K>>Ij?^9;ew^M`<;!TbZ{{K8Ym`gZmr-l96LtKV?@3 zMVY>r0a&M~0NKN&rC#x{Xrg6xtG}7_!ato33d=DT)Q5U{nEG9goWAnLE?qBjHYyxhsWEx z#6jDn@9&7TG=0pYM_je*wm7OQIWT6|m586Qypbk7?_4$#TP?3)_kuOdXU?mi1x&y>=I|T_cDNVfjtDiTpR`uIocmkez|emP0EKKPYK+* z$KdVL_h)zt1Zw&4f|9lRY>%NT1|-kKjLIg{95;XThAMmbd0!T>D>Kdu6w?y9vdDkkJM$cNl}qohgxVdT-{5O|bl zqH~pS-##0*j!F6k$o1~ORCQD?a^5auZ1QvLW*Q*Qwy*xBs;KAkI*`GwnVa?sAW$aP zzf>A);!}-O^C`#O1%YCLDDxk!Hi74_fyH*L62EiQ1Bzn%=HE?-v*pZh_&dnSKldZc zJTL&>iXi=$v7qLVJo55cdalO(a^FMb6cT$a2?FVX{$(?cyt7=K!W2nBAnLIH&j!R? zt%!O@;0$e=c`w+JRil@UA1e#AO~#1-jh+SW!XPY!L@9G-=Jd?9nWV8W-)KPo4YTYZ z`SxXPW7|_1!Ol_ygREJEhtpP#Y3Uh?>(y*TVrAY({b74>`ah6;zff3bS6OJ`sWqF`q2e>uI~W?e(L{Sjp19yUuRt! z9}6L|pT8RS`P0(aI7Tv9sHuQ4?ho{?INIVVa(-^3=EGI+h%)JDqgTfx#|FyBfT*!7uYtIqNy9EEI2#FOCxw5)$9z z|4jnOQFNnC;V*I(6B8p_^GD_CsY{&7>j7F{7=hP4dT!N^s?-D&Q6mZl;N%7Et`rGZ zh(Z*auJ{32_lK*BUiAuF&Zpfk@d{vc=OcS;-rHlYLo4i@>u{~YrxvI6?;v@4TUo0y zyKAayZAz~6?l8D%jDrWP86kV}QT%qwj;>I1A5B(mS$UqOD}ChYcRM1Zb`H##XvudT+`ja&o=6+sZERSw$Ly?}9-Mn}5yLpU){#2Gf zouBdM5h01 zCj2UAGobb+;WO`hyE}j_+B`DAf3b8L{gSid3;dkYk1tvNu2Gh$v zjJ{<}(a#)U=c7MtD6l}9SF|XFP-FB8!iR4m!t^-dViG}gs)ACKnc7}jk)vD{^{@6) zeU)N;yb0cH4)?=5LI%D>!kfx4iYVd~3q^(*qAEfd9!3!Gu{g%x6+BEBVwJy@8CBbA zIH0$Ma1_(dXnK*<=xfJZyELxNTWhja0@hWre#gC4r*W%n(gcUteId9Lv$jyAR~CdL zF(S#SkM$+C$2t)4I~sqGcdE0O>Q=k)B~Op<5i$`zFe*>0YSW7iI;oCSG>-8e7q@uT zgb0^#x;m;lcC5{Z{xZA5_Tvd3cE5BMD;Q5HrqJY1@pS!uguJ@QA4P992JQE~L(yTJ zDE21nn&%~*FM`^pC&m9rU3IpvGf=3wODuJ2fjBc>Bx}=aN^35vzCF7BLs9~zYyI=} zXc~`|$hHU{{7oFNP^_VdhP1ps4CJmxDHJTUTpprG;ZfM-x}e+XuPEW5D4kbWpR7iY zVI{QGd8VB^(iI*gR-Qu3j`!nr@m`UsCndzzp4vmYc6ioV@I)T9r1R|CvU&S4dXCRlQeDXi4^7 zqkStTn>ibw4;D6~{6PyQfTc*yc{=VXdf6$@GLaX{04;5;Ydddhs+#U89O!gwYcbO$ zSpcLZ41TUH7b40wpN2TSle;4#5TWQMy>``#Zch$Ie%cW(^CJCPRltlpH`My*c=V7sST%Iu<*K!Cg zY2GPV83qV34Xbr37q2{Mb&fLqBk%3n@D65z+8_VU1)LUm zx7kAH62bfeF`^A0@LwyWGgCvXUiuG>f5wpS`?l#RDzpXZpP#rbf3Kcg8~lz18SZ>& z#ja5RCirxgVKW@hIrX4t>ku}yOL=|DQ#d5d>~+5Hjk>mK1oj+iJFDF9$!afxM4h#~ zNCLMumkSG1+BWn5Dn3bnUz6eVdnffD*f917n+K4&P))& zJR=8|*Btn1gdxleX#SFn;{oUsd%JEt-KodHsash^eNLAO8rUuQyhd%#e59I~_2Y$arYmht(*YOA%LM~1h!OWTjR#ur(s-?hkj%a= zU%O;}XYaCRDlUCTf#m_Es$!^iwa4V0wHEC%jT8spj($5tVzlJ$v(>f2F(?v4EP}G& zl-v>M_wo()Ff>--kgG^DtuL5XW=tLCpDxF>`WjEste{N=;m8Pxlf)y5@V#sS!>kVj zl2_+uX@mYJuX(c+tp=Vtf0%WxZ;s&wX3;0iD2KgGeUYmM?G%h)DA|OnHu^N^+WBy# z59J$u7SPNJ_V_|2Ry$pCeH@wB^I;a*URgWl;x$mkEY)gvxu{{;a&q`R=ECd}8$Gj( zbr*w8`%O)lc{_1?tQ+o*iTfU>$F#P!qR)4W)@;gB!7OVR zO3Q~dh&L&Utl1TH4g-eQ7y?-ZR8lay6*6y23u;Nyd0jy25Re+MeCu`jD})I zapCPTN0?_7YRsW#h>aOLqVoV*@16QbaLhd&+!2>w$u^&Rx^K%T=k2)6Q1S!?& zC0#aQ)cro|!&jzjz8g7E1BwUDmm*>nyx_X^63rK5wi!*Tc4s$^-NsL(P>y9Tkep}r z$C@R;37&#F%9q=!i_7An+COMc1)Z3)3}SMZTO~3 z9w!=?v8Sr^|I&DkNPc8-Jm?W}b~655uM9{3(n%6JvVD?2t$3CseuuKj)XCGV+$+1q ze%TWhJmCFSI0` zk3UZhcsUW=QmTg098UY6M20bUEC05$TndT)3b;OvcGmglar3(`eI~WZ&Ng(fy8Kly zgU$SZO{g6Yc=G@wZQFFeX!La3?U)(Wd3`qJfeM6&z$M3)h423M26`8fPbQZy=yOqZ z>{&q9`Q1@eP%29!<>{d}7kG0oYDs^IkCNJU^wjuZOuQ31))LHl zJMbEA@RN0Kp5xhITEYUpnFM&xhwstnsGjfNj7{vQ1MY)bJVM}yLNKOy)j^4l{7vxk z?1Du@N_(9Hsv@vd%HMgD98$5G67N23b+E(jZ?Ee`_d}&VJtOPkJ1?b_ves5|qNU%% z&Uqn6VxSGuIJCvO8a`rjo9ou)z+TDx#rW`+hZFZbrQ)zFObK-4Lq7B^+*OUXG5`?oX4?u5##B>;X{Uz@&wAW$5(xV9z>~) zOQlwm!8G%l0cs9LXoj5nR^K_m+rL;^)^u%5%RQ2)E}wfdK`5$Oc)I3hf^c(VJ*@WY zRCA_w=3X%_v#TTHd;+-2d80%5scU7K97X4se+G{)+H0^7njma)B%X~^L+fstA%nkv z$rpWuYP~c!=(jUz;^5G^smx=Dwgkt+bID`){RgvMnziBc7wSNO(z8xxAJBGDtj&Q6 zmYNtgeOEiSaXp3;2Uw7MGf`}uEaDYxA(-a0dFl|4d*<=4sKu1u=Cs zEO5BJ3Z=aBGn*l|hZV3HKcW1S*4Zd3+v>)AHYEXmN*E%8tTPjq!|@L9b_xMlqU0Px zP@h^AI@dZ|xN}hBOh=-lGJZ1K82b^Im6wZ2H_Weau3az5V#pSph&b`DEn`5N_6B%Y z{OOBR!a1+#n9wk|z;7dRHtUe(a&D#EKjnGSf%=&X(NR{xv}28yF4o-)bj=Lhmj-ulFkn9vy zJsysHlop=#n>3M6$kJa6Wu(sZGLu>5G@YXEVrCF4u8)Q*FC7|-cLIx5tb>NGeeu5&eo;iY*C@!JGZ)d23a-(8scx_ z-{)6+8|G?1FIPY;twu#P_z}eE8Bx>GC_+U>Y`&4NU{}SCotB4D)qThYJ%ybn0#YZQ ze%vP{MnK+JYCwIWeHhG^^dWCin^#mgC0ocNN^O`SB`Vj$JMX939@U=dkV!_La_Sgo z5eF%2Y*}if&M5`_>SA3Ba7Wwpw^|JM%ALI_{dIVIImcBsX>Yp%xh)`f0ET>akCac* zbZ<)5mH!2{iPMg3;?2=1*Oahu7R&0(e877P9Z<6sL;akq^N*Z0 z6~Osnr?9wXt5J%JH+q#>kr;JUOK%XTY^U3TVpxAEkuu*u8HS_Q@5R78AzBY>&}oJ) zM-7>D&m#yFn1ra2IL@?JyEuXaTNQpG$R^YGUrY-D-{&_on#2U*ZsSQn4)5;2@`Ij% z<*Ia{r++W~J7wqz4d-Il^LRG62qj|zZlvD(Khz(x?&c>DTUwEU783stDSCJkJ_(V6 zMgM@v8`c{@dEozj83Rsk9tJ13sAC3wW06)6)7>x{rvfSlH~yVt#ScNe&{2pE3ct$F zr`7RUro8n&BKM8THOX(WmN)VQ5Soh@FqIXmj}1~6H+C-fiPxD;c|mFHVy9|0!Cz<= z^nt{2jrd4kZLHIgjzaJDHhR!abqc)p1v%>09@`<0$6#-#5eao6j+* z(&s{Ln%k}STx$tC8ZIfi*XN6YomKpXwoMxBQr&`drDx`_cSIgD_Eb!5>6C~Mwf{ct z8;&qhjpPwwhFue>9y|<}>5kZxITI&LqSgny$Gv#@`N#52PDMSi$jj}$Y?J8g>r&jy zt9w*_)ZD*TF*zl(;wWy7p1AmxDaX3(mjPGyzJhPbH6O4Z;TFk8JHz1{a7M5Zap=hq zE`*U|pGrDWG%byqOY>!9mpfT`tScmk_PB9wq4nV3xq$2``UkO>^A>yUq0K+etI0I; zrwJBh6b`nI&nE1h^kw;8bL2|=@}@EIRCN!cXY&D7FMe|piFB)IOF36+`x-BxtkBV0 zNu)6H9ZFVy8&_}HMi7PqatK149TL93v^%K-&OUO*UY;VKGOIksr5>C;AkWBE>Sfx0 zk(4RGoV79d!GpBAev#~LQ0qsauE9OHcTCl$!v<{__O2vy;O|%(wz|5EMY?1@G+_y! zDsCL^wpecuwFqiOlHG{yiiL9fJgO+K|Bb2kTPy?GfEF{;y}f8zbjp@7W?f#F$)qt6 z&4e!V0k`siTU_+#k#9YV_#`hf^@zJfgF19pes81mLNV6%wu3J zVtBmg)9t#VPOdPKSlpU7L{F5&HqF;#cbC|>yJwut=l-vp3f87ska044+VlnUi`Z8{)i6a~sG=bgmSwsv&8nk5B~@;q|?6hub3( zAL^qnPkVuhxxwySO$c*jygW?wPW89yS1B{bXfQP9*I?!2u5;VZgdCAj+R~bx@}-X@ z{V^-9!NOrmW{vNba5y7c%LXl?qP%&dCPwq4yBM*P^^!2fQGCJ*n|cOv@rvV+hpm#$ zJk&vlzl6sv{DXe&*of%*EVSi|=aNwG-8(-_k!HaPdRN$)OZSXLLeBS2`@%29`PSza zH!fxa+&jc$C2!Re4e4)@kL8))1n8m*flpO8@45P5axbn2RTQ0R%IK+gvn_UFr)=1t z5>A!h?$C-InI8kIN}X_DKf;hcC%^~-9Q_Cs4mI@lF|hXA_}znG)|wx3vh59vr}dXJ zDx&1sf0n+WzYR1HDH8x4cpvXsnqSy)4|jc(HI4H3Bx7Z}7eL*SnD}+R_C0@|qUGZ~#DDVH}O`q3@ zPaM!?)et!OqundsY8JZ1VYprX7|X)LtGgW@hBsUAfOZ(9MwO%HYnlZZ8#dd~ zyes8OqpZx_zrMZOUk~XExjapL!kqQ9`1^brYp3%fJv2EQ^VZp!G-HFOLyvMl%@R|Dpo znHX0-tWSd&Smbe=zjes+R_9Lagtq|)P%YL3x;EqEGWzu+*>0J!H)VsFNBtBpy-EdL zw?@l3ur~z6J<};+f5C?UI~tUWnNhhYEU3TeSIj)UDxoWQ3+yKdAK`Oq zE~#k@p#X}}5kLy&htHFTYq@XTIxl%Xahs?K1Q^+s5fJ7;f9?IVYaX;q-+X@+%Fw+x_;Co9oW2xrHpou}W zi8R3!+Zk%)p!Z4 z2LcgaB{g*(dNbj)Yq!?fa?C@`2RHuptk#8AbNf;F4|6A=fAR`q!p*tgO1*54!DZJH$=eT-+7QYn6w4q4{ju{Y&H*cxj6Z?)F@y>5wZ;#?A{&SruL8T#z4f*d|in9 zT`TejBy$&k=c7;KKZ-<#(K-I*_rxoOCXll!C^UjSQd-!5mLj!%@ggz5a;`av|E_Z> zZniEpvK?hAgu4iSD;;@4Bu$_I2r*YkyeBX5kpc%tr{7j8VRN0gOiwZLNQhiPgg*L& zsuW#99}{NJuS^4S6(mjM9{!+&xk;|L^aRuV>$#_>H4a&idRNBtg@k(!ms7blWh^-( zob4}gm*WXAxaH5JM>}VB;E^4!p0L^9ewI1~DDH-DsWF3O8eLmD&2a)(Sw2T?C=Jd1 z5A;H0fQ!WWl-Z==7GnqTwzrl_EK;#BwniB4*8-=wjd$&<=!f>p-;4GtBVsVGcNTzF zQN)8lKn99s`O!)-GO=3kY})L$n3K7vYuuu989O~?%n4FHJ6rH?!;ye#lL)u${)(h% z3U%waMVXHt9mV{ZD&ng%G~Pb7;Nj7bxcL`4azwnXlhTg9+Har+?^-l_5z7GdCTAmk}LD^ zGGWPZ>zC=OepORRw}1i*K&#e%Ye`?bhDOh{NyEyw7rO!1L@%Ypk5K6LiL2b{Wi_DONx+rl?M-`e8<2weUj12W#dXFmQSbb_V&;$*@;2I44!kj-X9SCe%8$;>`gB5QHHu zcLqQdzkP6w2&qprJ9Z95*Y^1UrszGF^4nJlufD(9f8sNR2~gNPTAC=k>Y%0zxYP>m z1!4ugRI!%aEH$gi$Yg7nrO}xo}>}3|DFq%*d z)P9o-YnZJ08bQAb=-xT4g4;|b7EfpsTp!9aXQo=lDqO`|c^8gqTSFy5-W+yYo@G-` zY=&%N_+yQRVo3wkimSb)j~hV`s~g=Ss~-I8#T&&;WS0M+6HOTs?*<3fk4>(F^wiqD zmz(1j2raVqiOzPJBJ)6cao)MgLXa*xj)hO2wQjQQzM_ky*yD3pth^CTg<%==eFs*%LS9Sw-2YQ8DjSpE1y-T0cwd%Azxvf6+mTQH#wLhfFe53p!Z6H!;dF5Tao2H zcouCVtbkWY!=0n>%q9`Zf2jqWd;neFdQ(K6CG#3UDuF<(2{hrJOi7y3XF8&|YH1tE zGEWNnIc{wQ0vj!S%A`bA-8&hVubCo;Bqjgrc?}^_ZnzFZ?}Y{j&VaXsa0RT;e3Y-q zd1}Br7PY*->9!@$g?b(I527_ym5~(FQ?R$re^&Z<)S(`dyIJn6so-*S_xSa=&*e;a zx9CXIdq4wR3`A4Zsb_~GA5Fxo`j8u`Df%1!+>j9_84Obdyz(^JP}wD2p@KMRzL%Y4 ziA_3ZHg!2_e_N#Ud-X| zy4t@g<_fr}%6YFH*ThD<5!@?NUBJyP&%}Rt7y)(rijF%P5m%WT0j?7ae)@+)8eEa4 zo@ZxvS%t~t0$b>lY{=OFJHg;T7+F@0GKPTp?ah24k#}tcUj3n4~{X650J&t4g7F9-K3SVn|07?U?dgC<7!nL{mU@p}`DB z=!(Z#cx=UNJA`>I>FD`!agtf|1m=s!TKwNE3P61zEe>zLZ+8LWMeak9=xjY!pq-a? zuR7v|bT%#v&DgmU>QV=FjvR9#9Gsb=`iEW2v%4gLMtdzAM>=XvsY*eb zKj#JtKJy{+vMj22Kj}4Hvh7@v3;_FD;CzePX6Uvv<)sP!5#Pkxe4obI`Aw3eQ=R&@ z5t^3mhIp$mLWG3?A-HU}Pt|OHV;kkj^ba4gP`6UhxC4$NF>qdicH5ao78vfxB~yQA ze2%o5c#5zHD?ZqZoJ2QT95m~@`2w0RK>@CbeLwBOU7V5S!455 zizFT%h0m)o?|dGyTNeIi8gkg)8nRrV)gvvLG*rL`)2@*Eg{+&|$!^V2WI34j6w2s@ zYhAw9E~^#G3jFPjcsX9_Yu6kkY4VPZ*MJc`&7Lu^?tW_AI=qJ~nWYJSJ=R>1o^MfE zDz)ZZF}CCFhmLjljER0+t!?fRrSJ7!VPW5)eoz z2?3QN2?V4Bq~E;X_`Y%P{eOSlAA5{Fb{S*uJ)XUu^~^QrTo65Ow=E=nP)b+te(R+6 zQh)??ET-eXUq$&mn|duQx=zc``Ry=s|2Lz-Sx;UNV!Wy@_o04*lL*E?#U@)_dGx2M z_Xbr=?*j{lR-#OUelm+^UWyPB$tikbKaUk$nacTd~}77Uzh8?IQ#Ubhh$ zS>n6Tm$%-UFWlU>5=O|R2xGrJ|sPs^az{$7*j zfC~C1&YSWN6<|*bcT`rotR5G~;`y=}Ywv-)Y=a^n)V$V1U1|HSE?>vNWmxI&l5^=T zUz6WjdPNpdY9BBCTR#wEr<8r_{>_bHZ5%T?ng?guRhBH3=_Mj+q7^eWw+rECc|kn5 z{l=O6Q;`Fp>8j`8*6vxm${`uG2#Z0=S3qL2Y2~MP8dO|TLhqnE*{+Whl40?Fvwr=V z(jt5tL|E@O#t$rTK>~`FLoatvgls_q++|nzX`6Pu0RjABlewPkir9^i4z|;GPG722 zw1wk}>O3LQ5P!(I{ZoSc$OzW@`#&e+YsaMNbhLemuNlqyEAJ6$pzhz;Ul8g_LP=Ug z>C(JL6t3B^);Xf8to;W0I$r2Li47r~d$#-9oHx1Fn{QCPUCV~)o+He?=mf4&DpGs1 z&FoR#jjm2ImTLs>;Rl$wR9^@^xg$xm4fxmm!;49NesjS9xe7?ZCQ`0b3&FeCC-GCO@vhwl$?6&kZDo$HlL`8o%P%w$t$QTC`IDzI^ z3qZc!@x;iQmn)o(iJBmd*Eb@W5vyC7%{=jag6 z;21G1q0BHH8_XDV`4ZoJTb zYiu00N7-L_!{E$>azd2>+Kx7fuE>pi`y1SLRv03fw!Ss+*-88OPE zs>;Q4D|Bn4Bq&xol3)2};L+Dcvrk(bv*(q|mM|cBuY(kiCn#PViwj43J!R|N+7Exm z)gtHLME%H$fh1c$n<}~%IS_yLP;%&Fv!$CXr!!uWsvRPZSVFq4v@WKYGG$08eL9FN z9YWS-1{)OAb~BM$i&MWqUs}S^N^hb<{1^S@)WHqPM#IL{)m7H_JY!LZGm|V)c215L z%JZFAt+7?!4(e5g^6t565X_HYEy|=d%}UZyXKSsrV}>E4Z-Zkw6I3u(=#zKQjnT>C z$nk`+!9>KY!Fy2csjP`#uGDCsy3lX7+|<5mf{bI;mXJ99nfdo4<8be(1eoewA(@6* z$r=t~Z2T^xpvg7*o!j{Es)j@l(6>5ZaUEFY8*Xhg)GTcAdoCRE3~yCk*~jz_P{H&l zh$~YKKn%-~;wxO(5bJL6!sW{oHVwsL(FEUUR=m=Qd4B)Q3bK@>H{vMtHPFD*SnHUn z!-}4QDRlr3udbYx_hVgeFhR#mdNxw1u8O=zNC2aE&S|DQMb;>C>fXN6tCQ;`rr7w# z6)w6j%QI37+dVW$aASJCXDRR=nV~|uQOX6FL&0W;RHz7~L2C0)8DFpFD7|W$WDnz# zhMt@uYrHCNpn1%~EII^GYZ<-1Y=;B=7BK1u4o`e6G_%<-yxSD%0}d$uJ3r&p;1BoB zMZDA@g0-Q$!vVWxj&;j>hJjAVcH0zTe|s`^l`qzl3dTvFcxwKgohXlh*BEkwhDBot zCmcVEA{-@i_l`R5rT+L*FvCjLx*4e&W{^#re)vi1MU z{WFqgS4X!Odm;NHSEWwY>_l;4%BhSzcWC9}DZpWciP)-X;L+3X>7}@>aLSM!=jLSB zDDs);Q{ZrgvSZ@CZqd}iHY0p(GoPM4UnC?>KC)#6#Z~=uU5JQ~7+NZEjV`U5LhhQR z`-vIHMdMe{F~rIFG22;4NA1=a20xZ-Whb-6Z<$Yh=TG7qKr8GWgWG<8W&+k~EUo+J zp%A@55Xddb64}b`sgU$aHNz9xS7_f2W8txur7$$wg;HRqx15 zD27XJVtenHvHO1sdrcObEsg#96dXHN5Y4HFkRmmlt0s4wwip|=dV2GmMycy%+_a=y z)WW>?F%1m7F0j;$2z3{V4uh7~ENVwz#8_E5u3U<}&35-IK(uxz|*APJ=6 zY0O*=9m|qMgt({}o1o)gW!Zdp`RTa2Y7P{VURwFONwWGxA_3O?(fy|#REAw*24$Vx zZR%t5XQ?BPF?~#vB~;$$`wDM{WY?_q&wWUf>vzC{v#4e>0nsL%#s!fCOlq9}*@wdaRs%(~V zU0RHvqw07_wh+z_@)SdR-d&WGPW*PiFh%t7u0dj%KHMhO_=F7!dXsl;cprM=O-7F- zA68XM;~iJr%AK2$>iQonKr}05Z*mDvXzkceKR0`>gqQl99qjS*#m~aAkbZP`7xhJ<~K(qRb$tCK!RDO%7V{8)Oz9< zE8HwW87ihMMz+?_gUAs!R?99nxBBwFbMsPN=pmUa^lLw!ADEvuJ=W!zA=cPbT5Tje>#JHh_!RPO ztCjjD;LTKyl@$Magi@ovt`wp!Mf5&$FCog5y$^iEF#*QRTwJ}o*lU4!JLUYq<`P4!SK(l64f zubqX@l11*AA~mQp#tnqGA_aqGkG0!rQm(k!wQ$zysUkqP?zPN`JcL|Eubg8o?&#n=(S!{xeRy8w7x%V% zY>{o<+g1y0dNW&ZazSQfRewTY{PNDW90GImwld0n`nm#zlX{mtR}lE?ZjmF9wpvd6wJW6Bl`zkaZ_# z&$W5#6YAV<@w34}J}c~!Y!hBxE!ZryeUqkeXm{d!%Sf5j*l_<$C{_?sPTr3AXX&)> za){p0qoCfuw+CmOzmx}iV4SXOts0Uy2H1}eVP^;h`#b6Bv5y*wj?k)o)l93HM~FR* znBCXFscdINA$7cJu@RL$aZf%1SdMh;b2!4%XH>-O^Ll3Z%)y&Rr{5ZG?O;C+0Sqt4 z?%vzP98nEqZ}~-2E}fT0KYQM+-1|n({u@64d1nJu);>+R_vEEm|b@h6e z3MFo~r&*BQHr|N!pS>7~$~3@eUP6k3SXDJK zH)aR~iu?%e06)TxQ(m(w?z}rZbbLp!0DtwW(NW;De-O9RS_UA)+US&+Z@?#O$5DzD zX8{ZcxdZJujtTCLcHYfx9 zXyWh}Xcm^?fSCqK%li9&d=0Rxjm++ne@1#5&B*%~k;S#v{fB(H7UcSG&hw;yg>@z<^mViAd}IG=rk$Z{ElERO z`Iw(J_%sI1@ir(T*Xa z>PJV;zqzky516{W5bAb~6_?R7>*y=G@cy55ceB)Lsf1Tb@}bKUGY8bKk$vI|ZhTrh z&P=xHWhx1L(;~+8Jr*#7S@@ttpDD2gUz=kfXxuetzFy_x<>5lp_0IGLI1I2#nY+OY z&m%`U6LyV5X2{FF;P6&R-0Y9(!HTpgB%n_VUlgDb$!>;T8+Q%bx{ygjJ-ZuWMnW(U z#A*h<{d_>*27mQ8P^kwqxKK80-4jEi??O7_R)9^S19YfVbiM9%DXB; zgrM<L%g!M7L@7?XdBppC^`kOOgvAL{w8=Xk*3FJT7YY(n zEL(2xj1xK&IUsM28Dso3hcWSV4j3qC=*Oo(->O9>8Ww`q%gy^fyYp)+!42h$<4(?M zEDIx#;BqGlhUVljq6zgld%2e3V5+rxHUVg?aM;8v5F69%UrQVTNRvAQsWFX?(AoM* z8t?PEl|6}}Z|xW=Y+XIC%b$pjLVO=4a3ob7XBsZ`15oYRBk-&=i}MhiV_@U6o(HFH zWngCXpg85w8JPAb`Qsi_VO-SH1!@AZ6G}G^J?@;PXD>1;O{-OE*Nv+xqe>F;|q_*;$6#$ zfAsvLk`rn_GfvoC`Qh%egciPuZtS|ld^5IK)yZ45)V{vYylHeEd-qGlW#4)I(#SAN z-n%b&qGpk~weu`il^mFiB1?t6&TL-I;}u>Q*)Xh`J1-c%wj-Y9S@x|M_$wa7UZL8! zdJ=}=WN2|5vXa@ora!g5+`nn@;7+~d-RW5-2H_p z$G#lmQR~QH>uEQ7n4@50^-1A8Y+*N(Yp&hx3-Cxqkj6TcdOz*YzQ_B6-(TOE zn{}uMXD3RZCh;1HsHhfS&2V1tqNc1W|JvP(&-6^-o^a?${j5cxp=+-fQ2ebr2scUifThr2KP& zM;5I2>|B|nkn3I(PF91`gzl8j2!YPH#mjs`ifm5VdnGZ?30bv=`jd*HEd;X8~*>^7w+xGV@jPMq6Rec-@ z!ruB$w+Pb(Q2oS8^ff^L+jDwLb3I=RG?c^T*6yfXH{m96x?&BO2x1?`{qA&%M7YxPnJnGEG1raLvrcpSmx7eJ}S zKmr4VQI)Xox+T6rj-$6Tf~+?FU{)%uU{|teOmkL{^VJwq!8UpZaLeC%G0xnZQTSwSx|YyKnkCSxJ|Mg$HDa?J2RM*eQeRUKK8QYh;; z@N9kzb&aSDJzq*GsF9F(-z)skQrn<%Qm)M2^mO%>(C+Cq{-46+#;xBqYFVc<{s_Ba zo@FMFHQU6PQyHm(#8_I`0`3I6Ie6{i{C%|j?nze~9|9 zhkt*KfP<$}?YGJ>vx!mjmk`JnH4 zFv*=P!4Gjw`}ZeVeF<1&?e1EXeMg}a1$SkwvuJW>XHOTE;929~g57 zdIOfFa?=QWkp0{{6YZ&W66Wm20^xJ28J>oDXqE9Mz4Ga@S7ma_&d?yE9Plu|t3rN^ zC?AO12tgeH%%oVc*NSyY^Sw3f%>Qgx)v$VaB~*U~?=-ZAAKiS-_RXkL9Tjx<7+A?l z;2q6Kb1S<2GeL$iDrR{>Qnc1pcq%iZjrm%5772WqjO2?ET9B|BkRcNvXkyZv?tNxM zZ(rMxAoPqq_pN70JPKKiiP9hjZ+(}eNF{nG4jTYKqzc6C{kO2-(aopYwH_4c?<+9B z-){pVgdb}UPI~J2*K7{JuwWm$0s3J?NBs{nBzwJ=l`1i2s393S5cwryiTlN-%3}V| z#9c#n?xM&?!KfcQ+5B4g`feQg=>Ci#&j8=LX3BUIsu}6?(5&`xWv-*|fVJ~*Ak!|c zD+-t4-2JdU!x;2@5A@=P70C-vA^>XN@*Ye{_Big|(SN{wX#emIpv%wRTx7=D(ADnx zR=1TRnZORGKH9p=3aao~+$w47GEDv-EI_In_o%FshdF7Ad+TdKJeF$_dR1ikgHxL8 zR?tYu9inS$L4l>N10+%cb}D-lL=XzKj@dW62{{x|h-;6VPovEwH8iXOuQvq@zhA=X z`-Y!dKk!=Scot)Qf86q`+~V$GAB1<64K>Zxh4JBYGD{!>P4ZOAPU@&HWHgg!XYQRe zH+_gidbU}xpQv0%u;mMz1?!!_yZVunuiqJ;V(hzL-wQSaMFPcQU1Qh6Zw;92 z`fYJ`#b!_AjDw%Us#D50Y&Nn@%fo}WY`O>1W%WJ!ed!{BV8gts>6qmPX_1ClpPBjQ#0)G0|Sz6ewqh`NS4}uwU?p8wB}*u z$Z{iKpoTY8>{5KHWq(2*K}j#iE5FKA`m7o%(PUB?g*2j^BbvI`?IQtzGiKK1Hg9uf zy%3MtZRjw>DoQ_6dOM+)@eat)nL72O%ma1dYU!h^fc}=*>)|G!2bO;c7ZE$a`fqFI zAHJYHDZYqUU|YS6zxJId!(DzkqBiESEA7Z5ugv=Nt7_Ke@QgIG(guyKD*wMyXFX@ok1VsNr2W3H@BMi-T&1zslFse4)QFd3gLBYY>2 zpz6JEZxiJsV>_({o{hV1sTPXby85_8c)^o_3D@yDyi&7Ie5EVJ7_lQu@2U^yIaTWT zr901>Om#qav0z}PPcmy}DT!58fmd&RHzixb4kLW6$;%s!ZEP;-lxH2Uun_0c zv}F8Ee#!zShWq{!r^JV^825P`#La1IlPdDdV)ZcKzT6gSm6!kY7Iwl(|8-5lu=Nd< zoSu0T;LAx(OoW(z;CjhM23tG>cJGPX>Xb+8g9UTvq%EY0(Qq!X8J4|}1cgtEFie9ZNl17PEHU+@{R2;Y3Q zibXg%2W* zZmHo$zV30^iT<{6;g1q7%>HB#Kf*U+(9hXkc6ysRn3YF&W3VPPo=@?k`}+?w69EKJR>59cd~VED_b zgSASjGa}_}EZkaWRo$k0$hC&ij~>_^Zf;+`^$uTyUU*<~d_%GP zo8hvBf^vZ^28??T92kER2a+%E)y+l9^~@;q-zaMaL-9)v017p&p5iud%*tIESPSYd zd=vPy5*A#MGJVQ!!RuZIbxz;M7^5%*RGbbw6!~IK#dCU%K>fAHd;4$bCvhLIW))%; zEp~@HmW<-^JGwsxndus*@R9JjxhwBI5%^oe2d6_yMzuBVJMiWz5^mhr1G78S00aA<2eK&)e3W;*m$# zjqKNIfn%pQul2PSj52#uEQ54|tYIT`5uq@0b<&FtJC~O(!7inq_U^+7vzao{<4n8L z4*)?f_iql2U3MCZHLrUa&EY;E(n2o?kXZ(QYsbPi;-XP@2YIm9q0RkEHh}SuV{TGH zkb%FkgiM4XF-LErinvys)lhlMwYr)m=w`Qi&qW{6?OEl#n`~_2SRO2^zTdu7RAo&V z;>5=6=c!nW71gN5?=E5_djbjHGV<15mB}uI8&ky%q}V;zG8dv+Xx z4siq+ikghU!i+r1j$EQK4hDBDEWT7JiR>T34`p@DJ(pQ}@vT}#GyhEW8!<;YOZ)qs zMG-us127v~Jwc_hWgy9uWJ5N;15QJeJ8l-g#gJHPj8|E&=urYX%YA>Ko_+_%0*Dgj zU5mcwPyFgbPB1*uj(RAzNELi@iz71B5!mfCObFd#&Izq&?)`HGeufYAo3it(dR1h_ z3cCg(xK%^VwYaH_xWGqzL1^=824;O>XEgGxVxt@Oes4Ypwo1STfd|S@q3oSy|`>uU0Xm=i2SG?wPD_LEPsuXE8EsLFTGuDiZc}gFtB)4{2tbfb!_Glxi^2f|eQ)|< z$3CWbT<*xaNqeWfYB&#2htSJFXb9bFj9i_D=B6gn~{=F$qDxyb<)1x7ml^_5CI zZdQ#AetN+SHH(*%KSDgx-KUYa(ig>RI(CQuoLN(SS3wmt$ocZvn%;qu#_l}5gP3&KVvYL=MN)6s!D-2u4 z%Ppe-{Ih3!nCO_zF&Zb-pr}783gKC2x;(d0a$4GtMuZ_Ibn=E&EeCT-ZmyLyDvpOy55YJ7c($?#RZ7mh%TcRg{!ln_j_HtfE{8 zP>&PPui-wTX}W>^+|*3HZ`B8!{nPx2;)uVq(wPYHp(aJPgivYDKUZgwQh?+FPJ)I1 zt;nA$>0(#qdG(pbaQfjOSPfZe>Nz&AD4`fVsGk!S=F8IO>ejJRR_7{dSHvNd*G$WX zX)n;b$L32nC#(kX0NcnMH{o|Ui|y*-7gCXix=)Y$BeXnaX-v}h}J3$ zD7yxwJxBf}qZ%R3--}lW+p7c(v<-;*Ukj}l8o6JlW{Iy324?~{lO}U8s!M3Sw=P4~ z&g=85?&Rc3$Gp$ zgZ^}0Yu3CZAkPIavSPzQ+LCZXn~nTM$T!N(aS2l7Ga9tPplc38jiE2nodH~*Nsh|( zN+0#6bBY(_IWi+IUp{_3fr8L8PAm{^LO%39U3giRW;P4tg4q_nQCqKk_nwG=|ByEN zTZX@Y+JENRifec84^RG6{W>|mEV#-AiqVcCya6k{^dM=`4;tZ_A!c1l=lXVo0|m2X zXTJN5P48 z#4|I)nhaJ|-VHy9D=*PAR`*)X!%$EPrpp6S<4~)ATP#O2REjmsO&!9IXV<*y^3;iw z@U`rBsQdBx+q|P4|4Vk7D|pagb)DZiDFP5O>P*AXHRYks^LqA1xy7m2Cj}uUvb;O+ zg;iTN6sJ4E#>Uobc$jfV?c|09Re*Un{tSWHgM#2=n$_`@p?mAJ0MrYIv_TJ!XlHF; z7#r&Uvzhg@$FIJbbpaGypLWp_z~{rOq|C zC&)(z$w4&cngDbEmg&`XslPcx@TRr`<<1$Vb%Ht1Ybc?eDGjnI{rtaJg=62T3F{^2 z#b5J8D-W9n-)>-BsZ<4ih2*`;nrmdj53WDGWj|nrrpP$6i}>`8`F{P-Nd@G($608|!&~IB9QAT!!}i?RXD0a8@?3`*KlP^F z;^s$$-2!tFrx4ln5uKH} zF8+QzkEEmn`yyR$PzF^pI7E%zLTEW z0#ehCvRIfcD-}Xnrq${8##9yS*_1w6VJ|oMa2QL^=Ui1+yc>{}Mc~u+-o)OUeNeza zb=z;*c-*uub!9h-g`;aPUp>8%J+>)-aU@uC&)&KCZ%^*uVxqT|C`GxM-)_^wm)6r3 z7tV^x*9)c7lb4K%G86vm(8;BUAU|__mb7^wGP3i`=zWbmopxP0OT)+uqR)lS@{
|6BaJmK)wQe5+ft7%9jz-pkq1HYqO8ylHY8}e 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 wrQ3hglFgsw START_COINS, '⑤ 生涯金币正增长', `coins=${e5.coins}`); assert(e5.prestige >= 4, '⑤ 里程碑真发声望(≥4)', `prestige=${e5.prestige} 生涯=${e5.career.revenue}流水/${e5.career.served}单`); -assert(e5.unlockedCount >= 6, '⑤ 解锁树真消耗(≥6 节点;速率定标归 U9,此断机制非节奏)', `unlocked=${e5.unlockedCount}/40`); -assert(e5.menuSize > 8, '⑤ 菜单经解锁扩容(>M0 基础 8 道)', `menu=${e5.menuSize}/24`); +// 阈值口径:M1 内容量(40 节点)下曾断 ≥6;M3 内容一期(46 节点/19 客型)客流混合变化后, +// 5 日(≈1.25h)解锁 4–5 个恰落设计书 §3 首小时 ~8–10% 消耗带——本断言只证「解锁真发生」, +// 节奏判定归 M3 上界安全门(scripts/scan-calibrate.mjs 判据 1/2)真管,不在冒烟双写。 +assert(e5.unlockedCount >= 4, '⑤ 解锁树真消耗(≥4 节点;机制断言,节奏归上界安全门)', `unlocked=${e5.unlockedCount}/${e5.treeSize}`); +assert(e5.menuSize > 8, '⑤ 菜单经解锁扩容(>M0 基础 8 道)', `menu=${e5.menuSize}/${RECIPES.length}`); const fiveDayTotal = perDay.reduce((s, x) => s + x, 0); console.log(` INFO ⑤ 跨日墙钟:5 日合计 ${fiveDayTotal.toFixed(1)}ms,均 ${(fiveDayTotal / 5).toFixed(1)}ms/日 → 千日序列外推 ${((fiveDayTotal / 5)).toFixed(0)}s 级/千日`); @@ -209,11 +212,11 @@ assert(imp.ok === true && imp.offline.credited === 0, '⑥ 存档导入成功( const logs = env.data.dayLog; const rate = Math.max(0, logs.reduce((s, x) => s + x.net / x.minutes, 0) / logs.length) * ECONOMY_CURVE.offline_yield.rate_of_online; const capMin = ECONOMY_CURVE.offline_yield.cap_hours * 60; - // 3 小时离线 → 封顶 2h + // 3 小时离线 → 触封顶(cap_hours 曲线单源;M3 定标 = 75 分钟) const H1 = createGameCore({ random: createSeededRandom(1) }); const r1 = H1.importSave(env, { nowMs: T0 + 3 * 3600_000 }); assert(r1.ok === true && r1.offline.credited === Math.floor(capMin * rate), - '⑦ 3h 离线按封顶 2h 结算(min(时长,封顶)×速率)', `credited=${r1.offline.credited} 期望=${Math.floor(capMin * rate)}`); + `⑦ 3h 离线按封顶 ${capMin} 分钟结算(min(时长,封顶)×速率)`, `credited=${r1.offline.credited} 期望=${Math.floor(capMin * rate)}`); // 30 分钟离线 → 不封顶 const H2 = createGameCore({ random: createSeededRandom(1) }); const r2 = H2.importSave(env, { nowMs: T0 + 30 * 60_000 }); diff --git a/tier2/games/night-market/scripts/scan-calibrate.mjs b/tier2/games/night-market/scripts/scan-calibrate.mjs new file mode 100644 index 00000000..c34c94e4 --- /dev/null +++ b/tier2/games/night-market/scripts/scan-calibrate.mjs @@ -0,0 +1,342 @@ +/** + * scripts/scan-calibrate.mjs —— U8b 扫描外层:多参数网格千局扫描 + 上界安全门 + 30 分钟门(M3) + * owner:北极星顶级线①(W-POLARIS)· 设计书 §4 仿真验证方案 · §10 U8b/U9 · §12 M3 行 + * + * 【三种跑法】 + * node scripts/scan-calibrate.mjs → 上界安全门(基线 25×40;判据 1/2 判定,退出码 0=过) + * node scripts/scan-calibrate.mjs --grid → 全网格(基线+3 组扰动×2 = 7 配置 × 25×40 = 7000 营业日) + * node scripts/scan-calibrate.mjs --m30 → 30 分钟真玩口径门(3 seed × 2 营业日 = 2×15min session; + * headless 快进,零死锁零 uncaught;真人真玩归验收窗口) + * + * 【判据口径】(设计书 §4 判据 1/2 的 M3 操作化;时间轴 = 每营业日 15 分钟 session,§3 时长模型) + * 判据1 无死锁窗:进度事件(解锁/盘地/购设备/雇佣/升级/任务领取)时间戳序列上, + * 任意相邻间隔 ≤45 分钟(=3 个营业日),全生涯窗口;网格内**任意曲线组合**都须成立。 + * (进度面按设计 §3 内容架构三层取 meta 全集,非只解锁树;树-only 间隔另报观测值。) + * 判据2 卡点分布:日初「差一点」时刻(存在前沿目标 0 < 价 − 现金 ≤ 昨日净入;前沿 = 依赖/声望/ + * 食材都够、只差钱的树节点/地块/设备)在 2–7h 窗(day9–28)的相邻间隔中位数落 30±15 分钟带; + * 基线曲线判门,扰动组报敏感度。 + * 【驱动】单档最优 driver(O-4 已拍:勤快席 + M2/M3 全系统日始策略;只证上界不崩,下沿归真玩)。 + * 【产物】dist/m3-scan.json(全量)/ dist/m3-gate.json(门摘要);dist 不入库,结论进定标报告。 + */ + +'use strict'; + +import { performance } from 'node:perf_hooks'; +import { mkdirSync, writeFileSync, readFileSync } from 'node:fs'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { createGameCore } from '../src/core/game-core.js'; +import { createSeededRandom } from '../src/core/seeded-random.js'; +import { RECIPES } from '../src/data/recipes.js'; +import { STAFF_POOL } from '../src/data/staff.js'; +import { PLOTS } from '../src/data/plots.js'; +import { EQUIPMENT } from '../src/data/equipment.js'; +import { UNLOCK_TREE } from '../src/data/unlock-tree.js'; + +const MODE = process.argv.includes('--grid') ? 'grid' : (process.argv.includes('--m30') ? 'm30' : 'gate'); +// --only=id1,id2:只跑指定配置(前台分批纪律:整网格 ~11min 超单次前台预算,分批跑再 --merge 并) +const ONLY = (() => { const a = process.argv.find((x) => x.startsWith('--only=')); return a ? a.split('=')[1].split(',') : null; })(); +// --part=名:分批产物落 dist/m3-scan-.json +const PART = (() => { const a = process.argv.find((x) => x.startsWith('--part=')); return a ? a.split('=')[1] : null; })(); +// gate 模式 --from=:从已落盘扫描数据判门(同代码同 seed 确定性,免重复跑) +const FROM = (() => { const a = process.argv.find((x) => x.startsWith('--from=')); return a ? a.split('=')[1] : null; })(); +const MERGE = process.argv.includes('--merge'); // 并分批产物 → dist/m3-scan.json +const CAREERS = 25, DAYS = 40, DT = 0.1, DAY_STEPS = 6001; +const SESSION_MIN = 15; // §3 时长模型:一营业日 = 一次 15 分钟 session(600s 营业 + 结算面) +const GAP_LIMIT_S = 45 * 60; // 判据1:45 分钟 +const POCKET_WIN_S = [2 * 3600, 7 * 3600]; // 判据2:2–7h 窗 +const POCKET_BAND_S = [15 * 60, 45 * 60]; // 判据2:间隔带 30±15 分钟 +const RECIPE_BY_ID = new Map(RECIPES.map((r) => [r.id, r])); +const EMERGENCY_RESERVE = 200; + +/** 扰动网格(设计书 §4「3 组曲线参数扰动」;每组高低两翼,键 = economy_curve 两层覆盖)。 */ +const CONFIGS = [ + { id: 'baseline', econ: null, note: '生产曲线(定标对象)' }, + // P1 节拍组:客流/耐心 ±15% 档(收入面的上下界应力) + { id: 'p1_fast', econ: { patience: { base_s_min: 4.5, base_s_max: 6.5 }, spawn_interval: { idle_s_min: 1.5, idle_s_max: 2.4, peak_s_min: 0.85, peak_s_max: 1.3 } }, note: 'P1a 节拍紧:耐心短+客更密' }, + { id: 'p1_slow', econ: { patience: { base_s_min: 5.5, base_s_max: 7.5 }, spawn_interval: { idle_s_min: 2.1, idle_s_max: 3.2, peak_s_min: 1.15, peak_s_max: 1.75 } }, note: 'P1b 节拍松:耐心长+客更稀' }, + // P2 成长组:升级曲线 × 声望阶梯(成本/门槛面的上下界应力;里程碑随 tiers 重建) + { id: 'p2_cheap', econ: { upgrade_cost: { early_mult: 1.10 }, prestige_threshold: { tiers: [15, 40, 70] } }, note: 'P2a 成长贱:升级缓增+声望门早开' }, + { id: 'p2_steep', econ: { upgrade_cost: { early_mult: 1.22 }, prestige_threshold: { tiers: [30, 75, 140] } }, note: 'P2b 成长陡:升级快涨+声望门晚开' }, + // P3 收益组:连击小费 × 员工薪资曲线(净入面的上下界应力)。 + // 瘦翼定标史:首扫用 {0.03, 1.15} 塌方(违例 25/救济 826/消耗 48%,零死锁但节奏停摆)—— + // 探明安全边界后收窄到 {0.04, 1.12}(仍 −20% 小费/+2pt 薪涨);域外证据存 m3-scan-f3.json,结论见定标报告。 + { id: 'p3_lean', econ: { combo: { tip_bonus_per_stack: 0.04 }, staff_efficiency: { wage_mult_per_level: 1.12 } }, note: 'P3a 收益瘦:小费薄+薪涨快(安全带内翼)' }, + { id: 'p3_rich', econ: { combo: { tip_bonus_per_stack: 0.08 }, staff_efficiency: { wage_mult_per_level: 1.05 } }, note: 'P3b 收益肥:小费厚+薪涨慢' }, +]; + +/** 勤快席 driver(logic-smoke 同款:点耐心最紧可做单;缺料按缺口就地进货)。 */ +function diligentDriver(core, st) { + if (!st.tapTargets.length) return; + if (!st.stoves.some((s) => !s.busy)) return; + const byUrgency = [...st.tapTargets].sort((a, b) => a.patienceLeft - b.patienceLeft); + for (const target of byUrgency) { + if (!target.servable) { + const cu = st.customers.find((c) => c.id === target.customerId); + const recipe = cu && RECIPE_BY_ID.get(cu.orderRecipeId); + if (!recipe) continue; + const stockOf = new Map(st.stockSummary.map((s) => [s.id, s.units])); + let bought = true; + for (const ing of recipe.ingredients) { + const shortfall = ing.qty - (stockOf.get(ing.id) || 0); + if (shortfall > 0 && !core.buyIngredient(ing.id, shortfall).ok) { bought = false; break; } + } + if (!bought) continue; + } + if (core.tapCustomer(target.customerId).ok) return; + } +} + +/** M3 日始策略:M2 全系统 + 员工升级 + 阶段任务/成就领取(单档最优近似;拒绝无害)。 + * 两条 driver 保真修正(均为首轮扫的实测教训,详见定标报告 §driver): + * ① 员工升级入策略(效率 ×1.12/级 > 薪资 ×1.10/级,ROI 恒正,最优玩法必升); + * ② **成长优先、剩钱补仓**:补货放末位——高消耗节拍(p1_fast)下"先补满库存"每天吃掉 + * 全部预算,树/雇佣永远排不上(员工恒 0 → 任务链卡 t23 → 18 日零进度的饥饿假死); + * 缺料自有日中就地按单兜底(diligentDriver),满仓前置不是最优。 */ +function dayStartPolicy(core) { + const cx0 = core.codexView(); // 先领奖(昨日达成的任务/成就 = 今日成长预算) + for (const a of cx0.achievements) if (a.claimable) core.claimAchievement(a.id); + for (const t of cx0.tasks) if (t.claimable) core.claimAchievement(t.id); + for (;;) { + const aff = core.affordableUnlocks(); + const st = core.readState(); + const pick = aff.find((n) => st.coins - n.cost_coins >= EMERGENCY_RESERVE); + if (!pick) break; + core.unlockNode(pick.id); + } + for (const s of STAFF_POOL) if (core.readState().coins - s.hire_cost >= EMERGENCY_RESERVE) core.hireStaff(s.id); + // 升级:表序逐人推级(留应急金;canUpgrade 已含满级/钱面判定) + for (;;) { + const sv = core.staffView(); + const pick = sv.staff.find((s) => s.canUpgrade && core.readState().coins - s.upgradeCost >= EMERGENCY_RESERVE); + if (!pick) break; + core.upgradeStaff(pick.id); + } + for (const p of PLOTS) if (core.readState().coins - p.price_coins >= EMERGENCY_RESERVE) core.buyPlot(p.id); + for (const e of EQUIPMENT) if (core.readState().coins - e.price_coins >= EMERGENCY_RESERVE) core.buyEquipment(e.id); + core.autoRestock(); // 末位:剩余预算补仓(缺口日中按单兜底) +} + +/** 进度事件类型(判据1 的 meta 进度面;fx 流筛取)。 */ +const PROGRESS_FX = new Set(['unlock', 'plot', 'equipment', 'hire', 'staff_upgrade', 'achievement']); + +/** 日初「差一点」检测(判据2):前沿目标里存在 0 < 价−现金 ≤ 昨日净入(只差钱,其余门都够)。 + * 候选全集 = 树前沿 + 地块 + 设备 + 员工雇佣/升级(与日始策略的购买面一致;员工养成 + * 是中期最常态的"差一点"目标,漏掉会低估卡点密度——首轮实测教训)。 */ +function pocketMoment(core, prevDayNet) { + if (!(prevDayNet > 0)) return false; + const st = core.readState(); + const gaps = []; + for (const n of core.researchView()) { + if (st.prestige < n.minPrestige) continue; + if (n.ingredients.some((i) => i.have < i.qty)) continue; + gaps.push(n.cost - st.coins); + } + const ev = core.expansionView(); + if (ev.enabled) { + const slotFree = ev.plots.some((p) => p.owned && p.usedSlots < p.slots); + for (const p of ev.plots) if (!p.owned && !p.base && st.prestige >= p.minPrestige) gaps.push(p.price - st.coins); + for (const e of ev.equipment) if (!e.owned && slotFree) gaps.push(e.price - st.coins); + } + const sv = core.staffView(); + if (sv.enabled) { + for (const s of sv.staff) { + if (!s.hired) gaps.push(s.hireCost - st.coins); + else if (s.upgradeCost != null) gaps.push(s.upgradeCost - st.coins); + } + } + return gaps.some((g) => g > 0 && g <= prevDayNet); +} + +/** 跑一条生涯(单配置单 seed);返回观测记录。 */ +function runCareer(cfg, seed) { + const rec = { seed, days: 0, error: null, progressTs: [], treeTs: [], pocketTs: [], unlockedByDay: [], end: null, relief: 0 }; + try { + const core = createGameCore({ random: createSeededRandom(seed), econ: cfg.econ || undefined }); + core.start(); + let prevDayNet = 0, zeroStreak = 0; + for (let d = 0; d < DAYS; d++) { + const tDay = d * SESSION_MIN * 60; // 本日 session 起点(游玩时间轴,秒) + if (pocketMoment(core, prevDayNet)) rec.pocketTs.push(tDay); + core.drainFx(); + dayStartPolicy(core); + for (const ev of core.drainFx()) { + if (PROGRESS_FX.has(ev.type)) rec.progressTs.push(tDay); + if (ev.type === 'unlock') rec.treeTs.push(tDay); // 树-only 口径(判据1 的观测注记,不判门) + } + let steps = 0; + while (core.readState().phase === 'play' && steps < DAY_STEPS) { + diligentDriver(core, core.readState()); + core.update(DT); + for (const ev of core.drainFx()) if (PROGRESS_FX.has(ev.type)) rec.progressTs.push(tDay + Math.min(core.readState().timeInDay, 600)); + steps++; + } + const st = core.readState(); + if (st.phase !== 'day_end') { rec.error = `第 ${st.day} 日未收钟(死锁)`; break; } + if (st.served === 0) zeroStreak++; else zeroStreak = 0; + if (zeroStreak >= 3) { rec.error = `第 ${st.day} 日起连续 3 日零出餐(经济死锁)`; break; } + prevDayNet = st.dayNet; + rec.unlockedByDay.push(st.unlockedCount); + rec.days++; + core.settleAndAdvanceDay({ nowMs: (d + 1) * 3600_000 }); + for (const ev of core.drainFx()) if (PROGRESS_FX.has(ev.type)) rec.progressTs.push(tDay + 900); + } + const st = core.readState(); + const cnt = core._forensicsView().counts(); + rec.relief = cnt.reliefGranted; + rec.end = { coins: st.coins, prestige: st.prestige, unlocked: st.unlockedCount, plots: st.plotsOwned, staff: st.staffHired, served: st.career.served }; + } catch (e) { + rec.error = 'uncaught: ' + String((e && e.message) || e); + } + return rec; +} + +/** 相邻间隔(含起点 0 与终点边界;时间戳先去重排序)。 */ +function gapsOf(ts, endS) { + const s = [...new Set(ts)].sort((a, b) => a - b); + const out = []; + let prev = 0; + for (const t of s) { out.push(t - prev); prev = t; } + out.push(endS - prev); + return out; +} +const median = (a) => { const s = [...a].sort((x, y) => x - y); return s.length ? s[Math.floor(s.length / 2)] : null; }; + +/** 跑一个配置(25 生涯)并聚合判据。 */ +function runConfig(cfg) { + const t0 = performance.now(); + const careers = []; + for (let k = 0; k < CAREERS; k++) careers.push(runCareer(cfg, 20260706 + k * 1013)); + const ok = careers.filter((c) => !c.error); + // 判据1:全生涯进度间隔(任意生涯任意间隔 >45min 即违例) + let gapViolations = 0, maxGapS = 0, maxTreeGapS = 0; + for (const c of ok) { + for (const g of gapsOf(c.progressTs, c.days * SESSION_MIN * 60)) { + if (g > GAP_LIMIT_S) gapViolations++; + if (g > maxGapS) maxGapS = g; + } + // 树-only 口径观测(解锁面消耗节拍;不判门——meta 全集才是判据1 的进度面) + for (const g of gapsOf(c.treeTs || [], c.days * SESSION_MIN * 60)) if (g > maxTreeGapS) maxTreeGapS = g; + } + // 判据2:2–7h 窗内差一点间隔(逐生涯取窗内时刻序列的相邻间隔,合并统计) + const pocketGaps = []; + let pocketCount = 0; + for (const c of ok) { + const inWin = c.pocketTs.filter((t) => t >= POCKET_WIN_S[0] && t <= POCKET_WIN_S[1]); + pocketCount += inWin.length; + for (let i = 1; i < inWin.length; i++) pocketGaps.push(inWin[i] - inWin[i - 1]); + } + const pocketMedianS = median(pocketGaps); + // 消耗率(10h = day40 末) + const cons = ok.map((c) => (c.unlockedByDay[c.unlockedByDay.length - 1] || 0) / UNLOCK_TREE.length); + const consAvg = cons.length ? cons.reduce((s, x) => s + x, 0) / cons.length : 0; + return { + id: cfg.id, note: cfg.note, + deadlocks: careers.filter((c) => c.error && !c.error.startsWith('uncaught')).length, + uncaught: careers.filter((c) => c.error && c.error.startsWith('uncaught')).length, + daysRun: careers.reduce((s, c) => s + c.days, 0), + crit1: { gapViolations, maxGapMin: +(maxGapS / 60).toFixed(1), maxTreeGapMin: +(maxTreeGapS / 60).toFixed(1) }, + crit2: { pocketCount, gapMedianMin: pocketMedianS != null ? +(pocketMedianS / 60).toFixed(1) : null, gapsN: pocketGaps.length }, + consumptionAt10h: +(consAvg * 100).toFixed(1), + endAvg: { + coins: Math.round(ok.reduce((s, c) => s + c.end.coins, 0) / Math.max(1, ok.length)), + prestige: Math.round(ok.reduce((s, c) => s + c.end.prestige, 0) / Math.max(1, ok.length)), + unlocked: Math.round(ok.reduce((s, c) => s + c.end.unlocked, 0) / Math.max(1, ok.length)), + reliefTotal: Math.round(careers.reduce((s, c) => s + c.relief, 0) / Math.max(1, careers.length)), + }, + wallMs: +(performance.now() - t0).toFixed(0), + careersFailed: careers.filter((c) => c.error).map((c) => ({ seed: c.seed, error: c.error })), + }; +} + +const HERE = dirname(fileURLToPath(import.meta.url)); +const DIST = join(HERE, '..', 'dist'); +mkdirSync(DIST, { recursive: true }); + +if (MERGE) { + // ── 并批:dist/m3-scan-.json × N → dist/m3-scan.json(配置顺序按 CONFIGS 表序)── + const parts = process.argv.filter((x) => x.startsWith('--in=')).map((x) => x.split('=')[1]); + const all = []; + for (const p of parts) all.push(...JSON.parse(readFileSync(join(DIST, p), 'utf8')).configs); + const order = new Map(CONFIGS.map((c, i) => [c.id, i])); + all.sort((a, b) => order.get(a.id) - order.get(b.id)); + writeFileSync(join(DIST, 'm3-scan.json'), JSON.stringify({ measuredAt: 'M3-U8b-grid(分批并)', configs: all }, null, 2)); + console.log(`[night-market scan-calibrate] 并批完成:${all.map((r) => r.id).join(' ')} → dist/m3-scan.json`); + process.exit(0); +} else if (MODE === 'm30') { + // ── 30 分钟真玩口径门:3 seed × 2 营业日(2 × 15min session);零死锁零 uncaught + 真出餐 ── + console.log('[night-market m30] 30 分钟真玩口径(headless 快进 3 seed × 2 营业日;真人真玩归验收窗口)'); + let fails = 0; + for (const seed of [20260706, 424242, 987654]) { + const rec = runCareerM30(seed); + console.log(` seed=${seed} ${rec.ok ? 'PASS' : 'FAIL'} ${rec.detail}`); + if (!rec.ok) fails++; + } + process.exit(fails === 0 ? 0 : 1); +} else if (MODE === 'grid') { + const picked = ONLY ? CONFIGS.filter((c) => ONLY.includes(c.id)) : CONFIGS; + console.log(`[night-market scan-calibrate] 网格扫描:${picked.map((c) => c.id).join(' ')} × ${CAREERS} 生涯 × ${DAYS} 日`); + const results = []; + for (const cfg of picked) { + const r = runConfig(cfg); + results.push(r); + console.log(` [${r.id}] 死锁${r.deadlocks} uncaught${r.uncaught} · 判据1 违例${r.crit1.gapViolations}(最大隔 ${r.crit1.maxGapMin}min)· 判据2 中位 ${r.crit2.gapMedianMin}min(n=${r.crit2.gapsN})· 消耗率@10h ${r.consumptionAt10h}% · 均值金${r.endAvg.coins}/望${r.endAvg.prestige}/锁${r.endAvg.unlocked} 救济${r.endAvg.reliefTotal} · ${(r.wallMs / 1000).toFixed(0)}s`); + } + const outName = PART ? `m3-scan-${PART}.json` : 'm3-scan.json'; + writeFileSync(join(DIST, outName), JSON.stringify({ measuredAt: 'M3-U8b-grid', configs: results }, null, 2)); + console.log(` 报告已落 dist/${outName}`); + process.exit(0); +} else { + // ── 上界安全门(M3 验收):基线判据 1/2 + 全网格判据 1(任意曲线组合)── + // --from= = 从已落盘扫描数据判(同代码同 seed 确定性);否则现场跑全网格。 + console.log(`[night-market upper-bound-gate] 上界安全门:判据1(45min 零进度窗)× 全网格 + 判据2(差一点间隔带)× 基线`); + const results = FROM + ? JSON.parse(readFileSync(FROM, 'utf8')).configs + : CONFIGS.map((cfg) => runConfig(cfg)); + const base = results[0]; + const crit1AllOk = results.every((r) => r.crit1.gapViolations === 0 && r.deadlocks === 0 && r.uncaught === 0); + const crit2Ok = base.crit2.gapMedianMin != null + && base.crit2.gapMedianMin * 60 >= POCKET_BAND_S[0] && base.crit2.gapMedianMin * 60 <= POCKET_BAND_S[1]; + for (const r of results) { + console.log(` [${r.id}] 死锁${r.deadlocks} · 判据1 违例${r.crit1.gapViolations}(最大隔 ${r.crit1.maxGapMin}min)${r.id === 'baseline' ? ` · 判据2 中位 ${r.crit2.gapMedianMin}min ∈[15,45]?` : ''}`); + } + const gate = { + measuredAt: 'M3-upper-bound-gate', + crit1: { pass: crit1AllOk, scope: '全 7 配置零死锁零 45min 空窗', detail: results.map((r) => ({ id: r.id, violations: r.crit1.gapViolations, maxGapMin: r.crit1.maxGapMin, deadlocks: r.deadlocks })) }, + crit2: { pass: crit2Ok, scope: '基线 2–7h 差一点间隔中位 ∈ 30±15min', medianMin: base.crit2.gapMedianMin, n: base.crit2.gapsN }, + consumptionAt10h: base.consumptionAt10h, + }; + writeFileSync(join(DIST, 'm3-gate.json'), JSON.stringify(gate, null, 2)); + if (!FROM) writeFileSync(join(DIST, 'm3-scan.json'), JSON.stringify({ measuredAt: 'M3-U8b-gate-run', configs: results }, null, 2)); + console.log(` 判据1(任意曲线组合零死锁窗):${crit1AllOk ? 'PASS' : 'FAIL'}`); + console.log(` 判据2(基线卡点间隔中位 ${base.crit2.gapMedianMin}min ∈ [15,45]):${crit2Ok ? 'PASS' : 'FAIL'}`); + console.log(` 消耗率@10h(基线):${base.consumptionAt10h}%(判据3 归 M5,观测)`); + console.log(' 报告已落 dist/m3-gate.json / dist/m3-scan.json'); + process.exit(crit1AllOk && crit2Ok ? 0 : 1); +} + +/** 30 分钟口径单跑(2 营业日全策略;放 gate/grid 之外避免顶层 hoist 混淆)。 */ +function runCareerM30(seed) { + try { + const core = createGameCore({ random: createSeededRandom(seed) }); + core.start(); + let servedTotal = 0; + for (let d = 0; d < 2; d++) { + dayStartPolicy(core); + let steps = 0; + while (core.readState().phase === 'play' && steps < DAY_STEPS) { + diligentDriver(core, core.readState()); + core.update(DT); + core.drainFx(); + steps++; + } + const st = core.readState(); + if (st.phase !== 'day_end') return { ok: false, detail: `第 ${st.day} 日未收钟` }; + servedTotal += st.served; + core.settleAndAdvanceDay({ nowMs: (d + 1) * 3600_000 }); + } + return { ok: true, detail: `2 营业日(=30min 口径)收钟,出餐 ${servedTotal} 单,零 uncaught` }; + } catch (e) { + return { ok: false, detail: 'uncaught: ' + String((e && e.message) || e) }; + } +} diff --git a/tier2/games/night-market/scripts/sim-scan.mjs b/tier2/games/night-market/scripts/sim-scan.mjs index 2222a542..6b28c92a 100644 --- a/tier2/games/night-market/scripts/sim-scan.mjs +++ b/tier2/games/night-market/scripts/sim-scan.mjs @@ -27,6 +27,7 @@ import { RECIPES } from '../src/data/recipes.js'; import { STAFF_POOL } from '../src/data/staff.js'; import { PLOTS } from '../src/data/plots.js'; import { EQUIPMENT } from '../src/data/equipment.js'; +import { UNLOCK_TREE } from '../src/data/unlock-tree.js'; const CAREERS = Number(process.argv[2]) || 25; const DAYS = Number(process.argv[3]) || 40; @@ -144,7 +145,7 @@ mkdirSync(join(HERE, '..', 'dist'), { recursive: true }); writeFileSync(join(HERE, '..', 'dist', 'm2-sim-scan.json'), JSON.stringify(summary, null, 2)); console.log(` 局数 ${totalDays}/${CAREERS * DAYS} · 死锁 ${deadlocks} · uncaught ${uncaught} · latch 违约 ${latchViolations}`); -console.log(` 墙钟 ${(wallMs / 1000).toFixed(1)}s(${summary.wallClock.perDayMs}ms/日)· 40 日末均值:金币 ${summary.careerEndAverages.coins} 声望 ${summary.careerEndAverages.prestige} 解锁 ${summary.careerEndAverages.unlocked}/42 地块 ${summary.careerEndAverages.plots} 员工 ${summary.careerEndAverages.staff} 事件 ${summary.careerEndAverages.eventsSeen}`); +console.log(` 墙钟 ${(wallMs / 1000).toFixed(1)}s(${summary.wallClock.perDayMs}ms/日)· 40 日末均值:金币 ${summary.careerEndAverages.coins} 声望 ${summary.careerEndAverages.prestige} 解锁 ${summary.careerEndAverages.unlocked}/${UNLOCK_TREE.length} 地块 ${summary.careerEndAverages.plots} 员工 ${summary.careerEndAverages.staff} 事件 ${summary.careerEndAverages.eventsSeen}`); console.log(' 报告已落 dist/m2-sim-scan.json'); if (ok) { console.log('[night-market sim-scan] 全过:千局零死锁、零 uncaught、latch 全自然。'); diff --git a/tier2/games/night-market/scripts/tree-check.mjs b/tier2/games/night-market/scripts/tree-check.mjs index 3bbf6a56..0d1fc233 100644 --- a/tier2/games/night-market/scripts/tree-check.mjs +++ b/tier2/games/night-market/scripts/tree-check.mjs @@ -17,6 +17,8 @@ * ⑪ 员工:岗位 ∈ STAFF_ROLES、数值字段完备为正 * ⑫ 事件:类型/触发合法,修饰键 ∈ 效果词汇,特邀客 customerTypeId 在顾客表且 weight=0 * ⑬ 成就/变现位:成就 axis ∈ 快照轴、零声望奖励字段(纯度红线);变现位 slotId 唯一、reward.kind 合法 + * 【M3 一查】(内容一期) + * ⑭ 阶段任务链:40 条线性接力(恰一根/无断点无环)、轴阈值沿链递增、零声望、id 不与成就撞 * * 用法:node scripts/tree-check.mjs */ @@ -32,7 +34,7 @@ import { PLOTS } from '../src/data/plots.js'; import { EQUIPMENT } from '../src/data/equipment.js'; import { STAFF_POOL, STAFF_ROLES } from '../src/data/staff.js'; import { EVENTS } from '../src/data/events.js'; -import { ACHIEVEMENTS } from '../src/data/quests.js'; +import { ACHIEVEMENTS, STAGE_TASKS } from '../src/data/quests.js'; import { AD_SLOTS } from '../src/data/monetization.js'; import { CUSTOMER_TYPES } from '../src/data/customer-types.js'; import { PLOT_SITES } from '../src/core/layout.js'; @@ -152,6 +154,10 @@ const byId = new Map(UNLOCK_TREE.map((n) => [n.id, n])); const EFFECT_KINDS = new Set([...NODE_KINDS.filter((k) => k !== 'system' && k !== 'unlock_recipe'), 'cook_speed', 'patience_mult', 'price_mult', 'onscreen_delta', 'auto_serve_rate']); +/** 任务判定轴(core achievementSnapshot 的键;成就 ⑬ 与阶段任务 ⑭ 共用;M3 增 day)。 */ +const QUEST_AXES = new Set(['careerServed', 'careerRevenue', 'comboBest', 'recipesCollected', 'customersCollected', + 'plotsOwned', 'staffHired', 'eventsSeen', 'unlockedCount', 'day']); + // ⑨ 研发节点:cost_ingredients 引用可解、量为正、deps 直含 research 门户 { const ingIds = new Set(INGREDIENTS.map((r) => r.id)); @@ -215,17 +221,18 @@ const EFFECT_KINDS = new Set([...NODE_KINDS.filter((k) => k !== 'system' && k != else if (t.weight !== 0) bad.push(`${ev.id}:特邀客 weight≠0(会进常规抽签)`); } } - check(bad.length === 0, '⑫ 事件表类型/触发/修饰/特邀客对账', bad.join(' ') || `${EVENTS.length} 条(四类型各一)`); + const byType = {}; + for (const ev of EVENTS) byType[ev.type] = (byType[ev.type] || 0) + 1; + check(bad.length === 0, '⑫ 事件表类型/触发/修饰/特邀客对账', + bad.join(' ') || `${EVENTS.length} 条(${Object.entries(byType).map(([k, n]) => `${k}×${n}`).join(' ')})`); } // ⑬ 成就/变现位:axis 合法、零声望字段;slotId 唯一、reward 合法 { - const AXES = new Set(['careerServed', 'careerRevenue', 'comboBest', 'recipesCollected', 'customersCollected', - 'plotsOwned', 'staffHired', 'eventsSeen', 'unlockedCount']); const bad = []; for (const a of ACHIEVEMENTS) { if (a.type !== 'achievement') bad.push(`${a.id}:type`); - if (!AXES.has(a.axis)) bad.push(`${a.id}:axis=${a.axis}`); + if (!QUEST_AXES.has(a.axis)) bad.push(`${a.id}:axis=${a.axis}`); if (!(a.threshold > 0)) bad.push(`${a.id}:threshold`); if (!(a.reward_coins > 0)) bad.push(`${a.id}:reward`); if ('reward_prestige' in a || 'prestige' in a) bad.push(`${a.id}:带声望奖励(纯度红线)`); @@ -242,8 +249,40 @@ const EFFECT_KINDS = new Set([...NODE_KINDS.filter((k) => k !== 'system' && k != bad.join(' ') || `${ACHIEVEMENTS.length} 成就 ${AD_SLOTS.length} 槽`); } +// ⑭ M3 阶段任务链:type/axis/阈值/奖励合法、prev 链无断点无环且线性可达、零声望 +{ + const bad = []; + const byId = new Map(STAGE_TASKS.map((t) => [t.id, t])); + for (const t of STAGE_TASKS) { + if (t.type !== 'stage') bad.push(`${t.id}:type`); + if (!QUEST_AXES.has(t.axis)) bad.push(`${t.id}:axis=${t.axis}`); + if (!(t.threshold > 0)) bad.push(`${t.id}:threshold`); + if (!(t.reward_coins > 0)) bad.push(`${t.id}:reward`); + if ('reward_prestige' in t || 'prestige' in t) bad.push(`${t.id}:带声望奖励(纯度红线)`); + if (t.prev !== null && !byId.has(t.prev)) bad.push(`${t.id}→prev=${t.prev} 不存在`); + } + // 链形:恰一个根(prev=null),自根沿 prev 反向可达全部(线性接力,无环无孤岛) + const roots = STAGE_TASKS.filter((t) => t.prev === null); + if (roots.length !== 1) bad.push(`根数=${roots.length}(应恰 1)`); + const nextOf = new Map(STAGE_TASKS.filter((t) => t.prev).map((t) => [t.prev, t.id])); + let cur = roots[0] ? roots[0].id : null; let visited = 0; + while (cur && visited <= STAGE_TASKS.length) { visited++; cur = nextOf.get(cur) || null; } + if (visited !== STAGE_TASKS.length) bad.push(`链可达 ${visited}/${STAGE_TASKS.length}(断点或分叉)`); + // 同轴阈值沿链不降(接力语义:后面的目标不许比前面松) + const lastByAxis = new Map(); + for (const t of STAGE_TASKS) { + const prevTh = lastByAxis.get(t.axis); + if (prevTh !== undefined && t.threshold <= prevTh) bad.push(`${t.id}:${t.axis} 阈值 ${t.threshold} 未递增(前值 ${prevTh})`); + lastByAxis.set(t.axis, t.threshold); + } + // 成就与任务 id 不撞(claimed 集共用一份) + for (const a of ACHIEVEMENTS) if (byId.has(a.id)) bad.push(`id 撞:${a.id}`); + check(bad.length === 0, '⑭ 阶段任务链(40 条线性接力/轴阈值递增/零声望)', + bad.join(' ') || `${STAGE_TASKS.length} 条 · 根=${roots[0] && roots[0].id}`); +} + if (failures === 0) { - console.log('[night-market tree-check] 全过:M1 八查(树/菜谱/食材/定价)+ M2 五查(研发/地块设备/员工/事件/成就变现位)。'); + console.log('[night-market tree-check] 全过:M1 八查(树/菜谱/食材/定价)+ M2 五查(研发/地块设备/员工/事件/成就变现位)+ M3 一查(阶段任务链)。'); process.exit(0); } else { console.error(`[night-market tree-check] ${failures} 项 FAIL。`); diff --git a/tier2/games/night-market/src/core/game-core.js b/tier2/games/night-market/src/core/game-core.js index e6afc558..7aeb2884 100644 --- a/tier2/games/night-market/src/core/game-core.js +++ b/tier2/games/night-market/src/core/game-core.js @@ -36,12 +36,12 @@ import { RECIPES } from '../data/recipes.js'; import { CUSTOMER_TYPES } from '../data/customer-types.js'; import { INGREDIENTS } from '../data/ingredients.js'; import { UNLOCK_TREE } from '../data/unlock-tree.js'; -import { MILESTONES } from '../data/milestones.js'; +import { MILESTONES, buildMilestones } from '../data/milestones.js'; import { PLOTS } from '../data/plots.js'; import { EQUIPMENT } from '../data/equipment.js'; import { STAFF_POOL, STAFF_ROLES } from '../data/staff.js'; import { EVENTS } from '../data/events.js'; -import { ACHIEVEMENTS } from '../data/quests.js'; +import { ACHIEVEMENTS, STAGE_TASKS } from '../data/quests.js'; import { AD_SLOTS } from '../data/monetization.js'; import { SEATS, STOVES, BASE_SEATS, TAP_RADIUS, PLOT_SITES } from './layout.js'; import { createServiceLoop } from '../systems/service-loop.js'; @@ -57,6 +57,8 @@ import { encodeSave, decodeSave, defaultData } from './save-codec.js'; * @param {{next:()=>number,range:(a,b)=>number,pick:(a)=>any,state?:()=>number,restore?:(c:number)=>void}} deps.random 受控随机源(必传) * @param {string} [deps.deviceTier='mid'] 设备档('high'|'mid'|'low',screen_cap 钳制) * @param {number} [deps.dayLengthS] 营业日时长覆盖(秒;门/测试参数化注入口,缺省 economy_curve 单源) + * @param {Object} [deps.econ] economy_curve 键级覆盖(M3 U8b 扫描器专用注入口:两层浅并入基线曲线, + * 生产/门/渲染一律不传 = 恒用 ECONOMY_CURVE 单源引用,零行为漂移;里程碑表随覆盖曲线重建) * @returns {GameCore} */ export function createGameCore(deps) { @@ -64,7 +66,17 @@ export function createGameCore(deps) { if (!rng || typeof rng.next !== 'function') { throw new Error('[night-market core] 必须注入受控随机源 random({next,range,pick})'); // 错误路径留痕 } - const econ = ECONOMY_CURVE; + // economy_curve 装配:无覆盖 = 原引用(===ECONOMY_CURVE,回归零漂移);有覆盖 = 两层并入(键→对象|标量) + const econ = (deps && deps.econ) + ? Object.freeze(Object.fromEntries(Object.entries(ECONOMY_CURVE).map(([k, v]) => { + const ov = deps.econ[k]; + if (ov === undefined) return [k, v]; + return [k, (v && typeof v === 'object' && !Array.isArray(v) && ov && typeof ov === 'object' && !Array.isArray(ov)) + ? Object.freeze({ ...v, ...ov }) : ov]; + }))) + : ECONOMY_CURVE; + /** 里程碑表(prestige_threshold 扫描时随曲线重建;缺省 === 静态 MILESTONES)。 */ + const milestones = (deps && deps.econ && deps.econ.prestige_threshold) ? buildMilestones(econ) : MILESTONES; const dayLengthS = (deps && deps.dayLengthS) || econ.day.length_s; // ── 三资源账本与顶层状态 ────────────────────────────────────────────────── @@ -101,6 +113,8 @@ export function createGameCore(deps) { serveSettled: 0, missSettled: 0, unlocks: 0, buys: 0, expiredUnits: 0, offlineCredited: 0, // M2 取证轴 criticServed: 0, criticMissed: 0, wagesPaid: 0, adCredited: 0, staffServes: 0, + // M3 取证轴(摊主老本累计发放;定标扫描的死锁封口证据) + reliefGranted: 0, }; const pushFx = (ev) => { fx.push(ev); }; @@ -113,7 +127,8 @@ export function createGameCore(deps) { // ── 系统门户(解锁树 kind:'system' 节点 → target 系统;数据驱动,零硬编码 id)── const NODE_BY_ID = new Map(UNLOCK_TREE.map((n) => [n.id, n])); const ING_BY_ID = new Map(INGREDIENTS.map((r) => [r.id, r])); - const ACH_BY_ID = new Map(ACHIEVEMENTS.map((a) => [a.id, a])); + /** 全量任务索引(成就 12 + M3 阶段 40;claimed 集共用一份,id 全局唯一)。 */ + const QUEST_BY_ID = new Map([...ACHIEVEMENTS, ...STAGE_TASKS].map((a) => [a.id, a])); const SYS_NODE_BY_TARGET = new Map(UNLOCK_TREE.filter((n) => n.kind === 'system').map((n) => [n.target, n.id])); /** 系统是否已开张(expansion/research/staff/events;门户节点解锁即开)。 */ function isSystemEnabled(target) { @@ -376,20 +391,29 @@ export function createGameCore(deps) { fx.push({ type: 'miss', seat: ev.seat, typeName: ev.typeName }); } - /** 成就快照(达成态即时核算;quests 表 axis 的数据源单点)。 */ + /** 任务快照(成就+阶段任务共用;quests 表 axis 的数据源单点;M3 增 day 轴)。 */ function achievementSnapshot() { return { careerServed: career.served, careerRevenue: career.revenue, comboBest: state.comboBest, recipesCollected: cookedRecipeIds.size, customersCollected: servedTypeIds.size, plotsOwned: expansion.ownedCount(), staffHired: staffSys.hiredCount(), eventsSeen: eventSys.seenCount(), unlockedCount: unlocked.size, + day: state.day, // M3 阶段任务「熬到第 N 夜」轴 }; } + /** 任务可领判定(阶段任务另须前置已领 = 接力链;成就无前置)。 */ + function questClaimable(row, snap) { + if (claimed.has(row.id)) return false; + if ((snap[row.axis] || 0) < row.threshold) return false; + if (row.type === 'stage' && row.prev && !claimed.has(row.prev)) return false; + return true; + } + /** 日结里程碑判定:未达成者按生涯轴对账,达成即 +声望(一次性)。返回达成列表。 */ function checkMilestones() { const hit = []; - for (const m of MILESTONES) { + for (const m of milestones) { if (milestonesHit.has(m.id)) continue; const v = m.axis === 'revenue' ? career.revenue : career.served; if (v >= m.threshold) { @@ -482,19 +506,41 @@ export function createGameCore(deps) { }, /** - * 自动补货:按食材表序补到 stock_target(economy_curve.restock 缺省策略;资金不足补到耗尽,确定性顺序)。 + * 自动补货(M3 定标改均衡轮转):表序轮转、每轮每种补 1 件,预算内轮到哪算哪、全到 stock_target 即止。 + * 曾为「表序补到耗尽」(M1 简化口径)——千局扫坐实其低资金病态:救济金全砸表首单一食材、 + * 没有任何一道菜配齐,回血路蒸发 → 破产死锁;均衡口径保证低资金也留下「可做单」的食材组合。 + * 确定性:轮转顺序 = 表序,预算判定 = 累计规划总价(折扣按种类整批 ceil)首次超限即停。 * @returns {{spent:number, bought:Array<{id:string, units:number}>}} */ autoRestock() { + // ① 轮转规划(纯计算,不动账):plan[i] = 该食材本次补的件数 + const plan = new Map(); + const needOf = new Map(INGREDIENTS.map((row) => [row.id, Math.max(0, row.stock_target - totalUnits(row.id))])); + const costOf = () => { + let s = 0; + for (const row of INGREDIENTS) { + const u = plan.get(row.id) || 0; + if (u > 0) s += Math.ceil(u * row.price * mod.discount); + } + return s; + }; + let grew = true; + outer: while (grew) { + grew = false; + for (const row of INGREDIENTS) { + const u = plan.get(row.id) || 0; + if (u >= needOf.get(row.id)) continue; + plan.set(row.id, u + 1); + if (costOf() > state.coins) { plan.set(row.id, u); break outer; } // 预算触顶:回退本件即收 + grew = true; + } + } + // ② 执行(按表序整批入库;总价 = 规划口径,与判定一致) let spent = 0; const bought = []; for (const row of INGREDIENTS) { - let need = row.stock_target - totalUnits(row.id); - if (need <= 0) continue; - // 按余钱缩量(整单向上取整口径下,先试满额,不够则逐步缩) - let units = need; - let total = Math.ceil(units * row.price * mod.discount); - while (units > 0 && total > state.coins) { units--; total = Math.ceil(units * row.price * mod.discount); } + const units = plan.get(row.id) || 0; if (units <= 0) continue; + const total = Math.ceil(units * row.price * mod.discount); state.coins -= total; state.dayNet -= total; (stock[row.id] = stock[row.id] || []).push({ qty: units, freshLeft: row.freshness_days + mod.freshBonus }); @@ -571,6 +617,15 @@ export function createGameCore(deps) { settleCounts.wagesPaid += wagesPaid; fx.push({ type: 'wages', due: wagesDue, paid: wagesPaid }); } + // ①c M3 摊主老本(破产死局回血地板:薪资后金币不足补到 relief.floor_coins; + // 只补差额、不入 dayNet——千局扫坐实的中期断供死锁封口,economy_curve 键注有定标依据) + let reliefGranted = 0; + if (state.coins < econ.relief.floor_coins) { + reliefGranted = econ.relief.floor_coins - state.coins; + state.coins = econ.relief.floor_coins; + settleCounts.reliefGranted += reliefGranted; + fx.push({ type: 'relief', granted: reliefGranted }); + } // ② 日志(近 3 日;离线速率数据源——含日薪后的净入) dayLog.push({ day: state.day, net: state.dayNet, minutes: dayLengthS / 60 }); if (dayLog.length > 3) dayLog = dayLog.slice(-3); @@ -641,7 +696,7 @@ export function createGameCore(deps) { eventSys.importState(data); cookedRecipeIds = new Set((data.collectionsRecipes || []).filter((id) => RECIPES.some((r) => r.id === id))); servedTypeIds = new Set((data.collectionsCustomers || []).filter((id) => CUSTOMER_TYPES.some((t) => t.id === id))); - claimed = new Set((data.achievementsClaimed || []).filter((id) => ACH_BY_ID.has(id))); + claimed = new Set((data.achievementsClaimed || []).filter((id) => QUEST_BY_ID.has(id))); monetize.onDayAdvance(); // 广告运行态清零(限次按日;导入 = 当日重开) recomputeModifiers(); // 日中瞬态清零,落日初(存档口径:日中退出回当日开局) @@ -708,15 +763,16 @@ export function createGameCore(deps) { resolveAd(slotId, result) { return monetize.resolve(slotId, result); }, - /** 领取成就奖励(达成才可领、一次性;奖励只发金币 = 声望纯度红线)。 */ + /** 领取任务奖励(成就+阶段任务同口;达成才可领、一次性、阶段另须前置已领;只发金币 = 声望纯度红线)。 */ claimAchievement(achId) { - const row = ACH_BY_ID.get(achId); + const row = QUEST_BY_ID.get(achId); if (!row) return { ok: false, reason: 'not_found' }; if (claimed.has(achId)) return { ok: false, reason: 'already' }; const snap = achievementSnapshot(); if ((snap[row.axis] || 0) < row.threshold) return { ok: false, reason: 'not_achieved' }; + if (row.type === 'stage' && row.prev && !claimed.has(row.prev)) return { ok: false, reason: 'prev_unclaimed' }; // 接力链 claimed.add(achId); - state.coins += row.reward_coins; // 成就奖励 = 变现外快口径,不入 dayNet(经营净入纯度) + state.coins += row.reward_coins; // 任务奖励 = 变现外快口径,不入 dayNet(经营净入纯度) fx.push({ type: 'achievement', achId, name: row.name, reward: row.reward_coins }); return { ok: true, reward: row.reward_coins }; }, @@ -742,21 +798,24 @@ export function createGameCore(deps) { })) .sort((a, b) => a.cost - b.cost || (a.id < b.id ? -1 : 1)); }, - /** 图鉴成就页:双图鉴投影 + 成就 12 条(达成/已领/可领)。 */ + /** 图鉴任务页:双图鉴投影 + 成就 12 + 阶段任务 40(达成/已领/可领;阶段带接力链语义)。 */ codexView() { const snap = achievementSnapshot(); + const rowView = (a) => { + const cur = snap[a.axis] || 0; + const achieved = cur >= a.threshold; + return { + id: a.id, name: a.name, type: a.type, axis: a.axis, threshold: a.threshold, reward: a.reward_coins, + progress: Math.min(cur, a.threshold), achieved, claimed: claimed.has(a.id), + claimable: questClaimable(a, snap), + prev: a.prev || null, + }; + }; return { recipes: RECIPES.map((r) => ({ id: r.id, name: r.name, rarity: r.rarity, collected: cookedRecipeIds.has(r.id) })), customers: CUSTOMER_TYPES.map((t) => ({ id: t.id, name: t.name, rarity: t.rarity, collected: servedTypeIds.has(t.id) })), - achievements: ACHIEVEMENTS.map((a) => { - const cur = snap[a.axis] || 0; - const achieved = cur >= a.threshold; - return { - id: a.id, name: a.name, axis: a.axis, threshold: a.threshold, reward: a.reward_coins, - progress: Math.min(cur, a.threshold), achieved, claimed: claimed.has(a.id), - claimable: achieved && !claimed.has(a.id), - }; - }), + achievements: ACHIEVEMENTS.map(rowView), + tasks: STAGE_TASKS.map(rowView), // M3 阶段链(UI 只展示当前段;claimable 已含前置判定) }; }, @@ -769,7 +828,7 @@ export function createGameCore(deps) { const v = loop.view(); const snap = achievementSnapshot(); let claimable = 0; - for (const a of ACHIEVEMENTS) if (!claimed.has(a.id) && (snap[a.axis] || 0) >= a.threshold) claimable++; + for (const a of QUEST_BY_ID.values()) if (questClaimable(a, snap)) claimable++; return { phase: state.phase, day: state.day, @@ -790,6 +849,7 @@ export function createGameCore(deps) { .map((c) => ({ customerId: c.id, x: c.x, y: c.y, patienceLeft: c.patienceLeft, servable: canServe(c.orderRecipeId) })), menuSize: menu().length, unlockedCount: unlocked.size, + treeSize: UNLOCK_TREE.length, // 解锁面分母(HUD/仿真消耗率;M3 起内容随批扩,不再写死) offlineEnabled: mod.offlineEnabled, stockSummary: INGREDIENTS.map((r) => { const units = totalUnits(r.id); diff --git a/tier2/games/night-market/src/data/customer-types.js b/tier2/games/night-market/src/data/customer-types.js index 3a7f060a..d0763f95 100644 --- a/tier2/games/night-market/src/data/customer-types.js +++ b/tier2/games/night-market/src/data/customer-types.js @@ -1,23 +1,37 @@ /** - * src/data/customer-types.js —— 顾客类型表(M0 子集:6 类 · 底稿 §1.1 customer_type 表字段的开发装载) - * owner:北极星顶级线①(W-POLARIS)· 开发设计书 §3 内容量表(全量 30 类归 U13 灌装批) + * src/data/customer-types.js —— 顾客类型表(M3 一期:19 类 · 底稿 §1.1 customer_type 表字段的开发装载) + * owner:北极星顶级线①(W-POLARIS)· 开发设计书 §3 内容量表(全量 30 类归 U13 灌装批;M3 目标 18+) * * 字段口径(底稿 customer_type 表):id / 名称 / 耐心基线秒(5–7 带内) / 出现权重 / 偏好菜品 tag[] / - * 稀有度('common'|'rare') / 小费基础系数。立绘 assetId 归美术批(M4),M0 程序化占位不带。 - * 人物全原创(clean-room)。 + * 稀有度('common'|'rare'|'critic') / 小费基础系数。立绘 assetId 归美术批(M4),程序化占位不带。 + * 人物全原创(clean-room,市井烟火调性);weight=0 = 事件特邀专属,不进常规抽签。 */ 'use strict'; export const CUSTOMER_TYPES = Object.freeze([ + // ── 常客(M0 五类;权重 = 出现频率,总量只影响相对占比)── { id: 'c_yeban', name: '夜班青年', patience_base_s: 6.0, weight: 22, prefer_tags: ['quick', 'hot'], rarity: 'common', tip_coef: 0.10 }, { id: 'c_xuesheng', name: '放学学生', patience_base_s: 5.5, weight: 22, prefer_tags: ['sweet', 'quick'], rarity: 'common', tip_coef: 0.08 }, { id: 'c_daye', name: '遛弯大爷', patience_base_s: 7.0, weight: 18, prefer_tags: ['classic'], rarity: 'common', tip_coef: 0.12 }, { id: 'c_qinglv', name: '逛街情侣', patience_base_s: 6.5, weight: 18, prefer_tags: ['sweet', 'seafood'], rarity: 'common', tip_coef: 0.15 }, { id: 'c_ganfan', name: '干饭主播', patience_base_s: 5.0, weight: 14, prefer_tags: ['spicy', 'hot'], rarity: 'common', tip_coef: 0.20 }, - // 稀有客:耐心 ×1.4(economy_curve.patience.rare_mult 在生成时统一乘,表存基线),小费最高,认高稀有度菜 - { id: 'c_shike', name: '挑剔食客', patience_base_s: 6.0, weight: 6, prefer_tags: ['rare_fav', 'seafood'], rarity: 'rare', tip_coef: 0.35 }, - // M2 事件特邀客:评论家(weight 0 = 不进常规客流抽签,只经事件系统 spawnSpecial 登场; - // 好评+声望/怠慢重扣口碑的结算走 economy_curve.critic,底稿 ⑤「高风险高回报」) + // ── 常客(M3 一期 +8:夜市街面的众生相)── + { id: 'c_chuzushiji', name: '出租车师傅', patience_base_s: 6.5, weight: 16, prefer_tags: ['quick', 'hot'], rarity: 'common', tip_coef: 0.10 }, + { id: 'c_guangchangwu', name: '广场舞阿姨', patience_base_s: 7.0, weight: 15, prefer_tags: ['classic', 'sweet'], rarity: 'common', tip_coef: 0.10 }, + { id: 'c_daijia', name: '代驾小哥', patience_base_s: 5.0, weight: 14, prefer_tags: ['quick'], rarity: 'common', tip_coef: 0.12 }, + { id: 'c_jiabanzu', name: '加班白领', patience_base_s: 5.5, weight: 15, prefer_tags: ['hot', 'classic'], rarity: 'common', tip_coef: 0.15 }, + { id: 'c_yepaozu', name: '夜跑青年', patience_base_s: 5.0, weight: 12, prefer_tags: ['sweet', 'quick'], rarity: 'common', tip_coef: 0.10 }, + { id: 'c_sushetuan', name: '宿舍夜聊团', patience_base_s: 6.0, weight: 14, prefer_tags: ['spicy', 'sweet'], rarity: 'common', tip_coef: 0.08 }, + { id: 'c_xiabanbaoan', name: '下班保安', patience_base_s: 7.0, weight: 12, prefer_tags: ['classic', 'hot'], rarity: 'common', tip_coef: 0.10 }, + { id: 'c_daidanqishou', name: '待单骑手', patience_base_s: 5.0, weight: 14, prefer_tags: ['quick', 'spicy'], rarity: 'common', tip_coef: 0.12 }, + // ── 稀有客(M0 一类 + M3 +3):耐心 ×1.4(economy_curve.patience.rare_mult 生成时统一乘),小费高,认高稀有度菜 + { id: 'c_shike', name: '挑剔食客', patience_base_s: 6.0, weight: 6, prefer_tags: ['rare_fav', 'seafood'], rarity: 'rare', tip_coef: 0.35 }, + { id: 'c_laotao', name: '深巷老饕', patience_base_s: 6.0, weight: 5, prefer_tags: ['rare_fav', 'seafood'], rarity: 'rare', tip_coef: 0.32 }, + { id: 'c_tandianbozhu', name: '探店博主', patience_base_s: 5.5, weight: 5, prefer_tags: ['rare_fav', 'sweet'], rarity: 'rare', tip_coef: 0.30 }, + { id: 'c_shoucangjia', name: '夜宵收藏家', patience_base_s: 6.5, weight: 4, prefer_tags: ['rare_fav', 'hot'], rarity: 'rare', tip_coef: 0.35 }, + // ── 事件特邀客(weight 0 = 只经事件系统 spawnSpecial 登场;critic 结算走 economy_curve.critic, + // 底稿 ⑤「高风险高回报」:好评+声望/怠慢重扣口碑)── { id: 'c_pinglunjia', name: '美食评论家', patience_base_s: 7.0, weight: 0, prefer_tags: ['rare_fav'], rarity: 'critic', tip_coef: 0.50 }, + { id: 'c_shitan', name: '深夜食探', patience_base_s: 7.0, weight: 0, prefer_tags: ['rare_fav', 'spicy'], rarity: 'critic', tip_coef: 0.45 }, ]); diff --git a/tier2/games/night-market/src/data/economy-curve.js b/tier2/games/night-market/src/data/economy-curve.js index ae649352..535a8786 100644 --- a/tier2/games/night-market/src/data/economy-curve.js +++ b/tier2/games/night-market/src/data/economy-curve.js @@ -47,8 +47,10 @@ export const ECONOMY_CURVE = Object.freeze({ // ── M1+ 预留键(键清单 v1 完整性;M0 不消费)──────────────────────────────── /** 升级成本曲线:×1.15/级(前期)→×1.22/级(第 6 地块起)。M1 经济骨架消费。〔草案〕 */ upgrade_cost: { early_mult: 1.15, late_mult: 1.22, late_from_plot: 6 }, - /** 离线收益:速率 = 近 3 营业日每分钟净收入均值 ×10%,封顶 2h(设计书 §4 离线口径;M1 消费)。〔草案·与判据5未收敛,U9 首查〕 */ - offline_yield: { rate_of_online: 0.10, cap_hours: 2 }, + /** 离线收益:速率 = 近 3 营业日每分钟净收入均值 ×10%,封顶 1.25h(75 分钟)。 + * 〔M3 定标·U9 首查收敛:下沿玩家模型(日在线 15min+领满封顶)离线占比 = cap×0.10/(cap×0.10+15)—— + * cap 2h→44.4% 违判据5(≤35%),cap 75min→33.3% 收敛留 5% 余;速率 0.10 保留。判据5 门本体归 M5 真验〕 */ + offline_yield: { rate_of_online: 0.10, cap_hours: 1.25 }, /** 员工效率/日薪曲线(M2 员工系统消费:效果 ×1.12/级、日薪 ×1.10/级,升级价按 upgrade_cost.early_mult)。〔草案〕 */ staff_efficiency: { eff_mult_per_level: 1.12, wage_mult_per_level: 1.10 }, /** 下一地块定价 = 当前每分钟净收入 × 25–35 分钟工期反推(M2 地块表先落显式价,U9 定标时按此键回推校准)。〔草案〕 */ @@ -61,8 +63,9 @@ export const ECONOMY_CURVE = Object.freeze({ starting_coins: 40, /** 开业赠料:day1 免费入库 = 各食材 stock_target 全额(食材表单源);不扣初始资金。 */ starting_stock: { grant_full_target: true }, - /** 日结自动补货缺省策略:补到 stock_target;资金不足按表序补到耗尽(确定性顺序)。 */ - restock: { to_target: true }, + /** 日结自动补货缺省策略:补到 stock_target;资金不足按表序**均衡轮转**(每轮每种 1 件,预算触顶即停)。 + * 〔M3 定标·曾为「表序补到耗尽」:低资金全砸表首单一食材 → 无菜可做 → 破产死锁(千局扫坐实),改均衡〕 */ + restock: { to_target: true, balanced: true }, // ── M2 八系统消费键(additive;〔草案·首轮仿真回填后锁〕)──────────────────── /** 变现位奖励参数(mock 口径,设计书 §7 广告红线;槽位属性 per_day/cooldown 归 monetization 表): @@ -70,4 +73,11 @@ export const ECONOMY_CURVE = Object.freeze({ ad: { speedup_mult: 1.5, speedup_duration_s: 60, pending_timeout_s: 8 }, /** 评论家事件结算:好评 = 声望+1(M2 起声望第二来源,设计书 §4)+口碑+5;怠慢 = 口碑 −8。 */ critic: { prestige: 1, rep_serve_bonus: 5, rep_miss_penalty: -8 }, + + // ── M3 定标增补键 ───────────────────────────────────────────────────────── + /** 摊主老本(破产死局的回血地板,设计书 §4「卡点是诱惑不是墙」+ 品类 rubric 条4「低成本回血路」): + * 日结(薪资后)金币不足即补到 floor_coins——够买最便宜配方数份,勤快一日即可回血; + * 只补差额不叠加(无法刷)、不入 dayNet(不污染离线速率)。 + * 〔M3 定标·依据 = 千局扫 11/25 生涯中期薪资+补货抽干现金成永久零出餐死锁,加地板后复扫零死锁〕 */ + relief: { floor_coins: 40 }, }); diff --git a/tier2/games/night-market/src/data/equipment.js b/tier2/games/night-market/src/data/equipment.js index 3fd41d9b..87eb4a42 100644 --- a/tier2/games/night-market/src/data/equipment.js +++ b/tier2/games/night-market/src/data/equipment.js @@ -10,10 +10,10 @@ 'use strict'; export const EQUIPMENT = Object.freeze([ - { id: 'e_menghuozao', name: '猛火灶头', type: '灶具', price_coins: 260, effect: { kind: 'cook_speed', value: 1.08 } }, - { id: 'e_baowentai', name: '保温台', type: '灶具', price_coins: 180, effect: { kind: 'cook_speed', value: 1.06 } }, - { id: 'e_zheyupeng', name: '遮雨棚', type: '服务', price_coins: 150, effect: { kind: 'patience_bonus', value: 0.3 } }, - { id: 'e_shoukuanling', name: '收款铃', type: '服务', price_coins: 140, effect: { kind: 'tip_bonus', value: 0.02 } }, + { id: 'e_menghuozao', name: '猛火灶头', type: '灶具', price_coins: 420, effect: { kind: 'cook_speed', value: 1.08 } }, + { id: 'e_baowentai', name: '保温台', type: '灶具', price_coins: 300, effect: { kind: 'cook_speed', value: 1.06 } }, + { id: 'e_zheyupeng', name: '遮雨棚', type: '服务', price_coins: 240, effect: { kind: 'patience_bonus', value: 0.3 } }, + { id: 'e_shoukuanling', name: '收款铃', type: '服务', price_coins: 350, effect: { kind: 'tip_bonus', value: 0.02 } }, { id: 'e_xiaobinggui', name: '摊头小冰柜', type: '仓储', price_coins: 220, effect: { kind: 'freshness_bonus', value: 1 } }, - { id: 'e_hongdenglong', name: '红灯笼', type: '装饰', price_coins: 120, effect: { kind: 'spawn_rate', value: 0.96 } }, + { id: 'e_hongdenglong', name: '红灯笼', type: '装饰', price_coins: 200, effect: { kind: 'spawn_rate', value: 0.96 } }, ]); diff --git a/tier2/games/night-market/src/data/events.js b/tier2/games/night-market/src/data/events.js index 3bb78f2b..d953aa54 100644 --- a/tier2/games/night-market/src/data/events.js +++ b/tier2/games/night-market/src/data/events.js @@ -36,4 +36,43 @@ export const EVENTS = Object.freeze([ trigger: { kind: 'day_mod', every: 5 }, at_progress: 0.1, duration_ratio: 0.5, modifiers: { spawn_rate: 0.85, tip_bonus: 0.05 }, banner: '夜市节!全街热闹' }, + + // ── M3 一期 +8(4→12;新行一律追加在既有 4 行之后 = 掷签顺序前 4 位不变,回归随机流保真; + // chance 型一律 from_day ≥2 = 首日仍零掷签)── + // 潮汐 ×2:下班潮(早窗)与晚场加座(尾窗)——把一日切出多个紧张拍点 + { id: 'ev_xiabanchao', name: '下班潮', type: 'tide', + trigger: { kind: 'chance', p: 0.35, from_day: 2 }, at_progress: 0.12, duration_ratio: 0.15, + modifiers: { spawn_rate: 0.75, patience_mult: 0.92 }, + banner: '下班潮涌过来了!' }, + { id: 'ev_wanchao', name: '晚场加座', type: 'tide', + trigger: { kind: 'chance', p: 0.25, from_day: 4 }, at_progress: 0.72, duration_ratio: 0.18, + modifiers: { spawn_rate: 0.8, onscreen_delta: 1 }, + banner: '晚场客上桌,加把劲' }, + // 天气 ×2:起风(客稀慢摇)与闷热(耐心变差)——氛围差异化,数值一松一紧 + { id: 'ev_guafeng', name: '起风了', type: 'weather', + trigger: { kind: 'chance', p: 0.15, from_day: 3 }, at_progress: 0, duration_ratio: 1, + modifiers: { spawn_rate: 1.12, patience_mult: 1.05 }, + banner: '起风了,街上人稀' }, + { id: 'ev_menre', name: '闷热夜', type: 'weather', + trigger: { kind: 'chance', p: 0.15, from_day: 3 }, at_progress: 0.3, duration_ratio: 0.5, + modifiers: { patience_mult: 0.9, spawn_rate: 0.95 }, + banner: '闷热难耐,客人都急' }, + // 评论家 ×1:深夜食探(第二位特邀 critic;晚窗登场,与评论家错峰) + { id: 'ev_shitan', name: '深夜食探', type: 'critic', + trigger: { kind: 'chance', p: 0.20, from_day: 5 }, at_progress: 0.55, duration_ratio: 0.35, + modifiers: {}, customerTypeId: 'c_shitan', + banner: '深夜食探暗访中…' }, + // 限时 ×3:灯会(慢节奏高小费)/美食周(客密+溢价)/半价回馈夜(低价换爆客的取舍拍点) + { id: 'ev_dengjie', name: '灯会夜', type: 'festival', + trigger: { kind: 'day_mod', every: 10 }, at_progress: 0.1, duration_ratio: 0.6, + modifiers: { spawn_rate: 0.8, tip_bonus: 0.08 }, + banner: '灯会夜!人间烟火' }, + { id: 'ev_meishizhou', name: '街口美食周', type: 'festival', + trigger: { kind: 'day_mod', every: 8 }, at_progress: 0.2, duration_ratio: 0.5, + modifiers: { spawn_rate: 0.85, price_mult: 1.05 }, + banner: '美食周开街!' }, + { id: 'ev_banjiaye', name: '半价回馈夜', type: 'festival', + trigger: { kind: 'chance', p: 0.12, from_day: 6 }, at_progress: 0.4, duration_ratio: 0.3, + modifiers: { price_mult: 0.85, spawn_rate: 0.6, tip_bonus: 0.03 }, + banner: '半价回馈!客如潮水' }, ]); diff --git a/tier2/games/night-market/src/data/milestones.js b/tier2/games/night-market/src/data/milestones.js index ef60cfcb..68669281 100644 --- a/tier2/games/night-market/src/data/milestones.js +++ b/tier2/games/night-market/src/data/milestones.js @@ -1,41 +1,49 @@ /** - * src/data/milestones.js —— 经营成就里程碑表(M1 · 声望的唯一来源) + * src/data/milestones.js —— 经营成就里程碑表(M1 · 声望的唯一来源;M3 曲线派生函数化) * owner:北极星顶级线①(W-POLARIS)· 开发设计书 §4 三资源分工 * * 【声望纪律】声望 = 解锁硬轴,只从经营成就(本表)与评论家事件(M2 事件系统)来,**不可购买** * (进度纯度红线,设计书 §4)。M1 里程碑两轴:生涯流水(revenue)/ 生涯出餐(served); * 判定时机 = 日结(settleAndAdvanceDay),达成即 +prestige,一次性不重复。 * - * 【单源纪律】流水前三档直接取 economy_curve.prestige_threshold.tiers(22/55/100), - * 后段为其 ×5/×20 的生涯化放大列(设计书 §4「跨日放大」)——本表 import 曲线表推导,零双写。 - * 〔草案·首轮仿真回填后锁〕 + * 【单源纪律】流水阈值全部由 economy_curve.prestige_threshold 推导,零双写。 + * 【M3 函数化】buildMilestones(econ) 供 U8b 扫描器按扰动曲线重建里程碑(prestige_threshold + * 是定标扫描轴之一);缺省 MILESTONES = buildMilestones(ECONOMY_CURVE),外部消费面不变。 + * 〔阈值口径 = M3 定标·见 docs/m3-数值定标报告.md;放大列 ×20/×100/×400 保留〕 */ 'use strict'; import { ECONOMY_CURVE } from './economy-curve.js'; -const T = ECONOMY_CURVE.prestige_threshold.tiers; // [22, 55, 100] +/** + * 由 economy_curve 构建里程碑表(prestige_threshold.tiers 单源推导)。 + * 放大列 ×20/×100/×400:tiers 是单局金标尺度(mini-肥鹅 20→100 币),本作单营业日流水 ≈ 数千, + * 按「首日达成第一组、三五日第二组、旬日第三组」的节奏取营业日尺度放大。 + * @param {Object} econ economy_curve(prestige_threshold 消费方) + */ +export function buildMilestones(econ) { + const T = econ.prestige_threshold.tiers; // 缺省 [22, 55, 100] + return Object.freeze([ + // 生涯流水九档(tiers ×20 / ×100 / ×400 生涯化) + { id: 'm_rev_1', name: '第一桶金', axis: 'revenue', threshold: T[0] * 20, prestige: 1 }, + { id: 'm_rev_2', name: '小摊初旺', axis: 'revenue', threshold: T[1] * 20, prestige: 1 }, + { id: 'm_rev_3', name: '站稳脚跟', axis: 'revenue', threshold: T[2] * 20, prestige: 1 }, + { id: 'm_rev_4', name: '街坊常客', axis: 'revenue', threshold: T[0] * 100, prestige: 1 }, + { id: 'm_rev_5', name: '夜市有名', axis: 'revenue', threshold: T[1] * 100, prestige: 1 }, + { id: 'm_rev_6', name: '一条街招牌', axis: 'revenue', threshold: T[2] * 100, prestige: 1 }, + { id: 'm_rev_7', name: '日进斗金', axis: 'revenue', threshold: T[0] * 400, prestige: 1 }, + { id: 'm_rev_8', name: '生意兴隆', axis: 'revenue', threshold: T[1] * 400, prestige: 1 }, + { id: 'm_rev_9', name: '传说摊主', axis: 'revenue', threshold: T[2] * 400, prestige: 1 }, + // 生涯出餐三档 + { id: 'm_srv_1', name: '百单达成', axis: 'served', threshold: 100, prestige: 1 }, + { id: 'm_srv_2', name: '三百单老手', axis: 'served', threshold: 300, prestige: 1 }, + { id: 'm_srv_3', name: '八百单宗师', axis: 'served', threshold: 800, prestige: 1 }, + ]); +} -/** 里程碑行:{id, name, axis:'revenue'|'served', threshold, prestige}。 - * 放大列 ×20/×100/×400:tiers 是单局金标尺度(mini-肥鹅 20→100 币),本作单营业日流水 ≈ 数千, - * 按「首日达成第一组、三五日第二组、旬日第三组」的节奏取营业日尺度放大。〔草案·仿真回填后锁〕 */ -export const MILESTONES = Object.freeze([ - // 生涯流水九档(tiers ×20 / ×100 / ×400 生涯化) - { id: 'm_rev_1', name: '第一桶金', axis: 'revenue', threshold: T[0] * 20, prestige: 1 }, - { id: 'm_rev_2', name: '小摊初旺', axis: 'revenue', threshold: T[1] * 20, prestige: 1 }, - { id: 'm_rev_3', name: '站稳脚跟', axis: 'revenue', threshold: T[2] * 20, prestige: 1 }, - { id: 'm_rev_4', name: '街坊常客', axis: 'revenue', threshold: T[0] * 100, prestige: 1 }, - { id: 'm_rev_5', name: '夜市有名', axis: 'revenue', threshold: T[1] * 100, prestige: 1 }, - { id: 'm_rev_6', name: '一条街招牌', axis: 'revenue', threshold: T[2] * 100, prestige: 1 }, - { id: 'm_rev_7', name: '日进斗金', axis: 'revenue', threshold: T[0] * 400, prestige: 1 }, - { id: 'm_rev_8', name: '生意兴隆', axis: 'revenue', threshold: T[1] * 400, prestige: 1 }, - { id: 'm_rev_9', name: '传说摊主', axis: 'revenue', threshold: T[2] * 400, prestige: 1 }, - // 生涯出餐三档 - { id: 'm_srv_1', name: '百单达成', axis: 'served', threshold: 100, prestige: 1 }, - { id: 'm_srv_2', name: '三百单老手', axis: 'served', threshold: 300, prestige: 1 }, - { id: 'm_srv_3', name: '八百单宗师', axis: 'served', threshold: 800, prestige: 1 }, -]); +/** 缺省里程碑表(生产曲线;既有消费面原样)。 */ +export const MILESTONES = buildMilestones(ECONOMY_CURVE); /** 里程碑可获声望总额(tree-check ⑤ 可达性上界)。 */ export const MAX_PRESTIGE = MILESTONES.reduce((s, m) => s + m.prestige, 0); diff --git a/tier2/games/night-market/src/data/plots.js b/tier2/games/night-market/src/data/plots.js index d32302a6..ff411a43 100644 --- a/tier2/games/night-market/src/data/plots.js +++ b/tier2/games/night-market/src/data/plots.js @@ -13,7 +13,7 @@ export const PLOTS = Object.freeze([ { id: 'p_yihao', name: '一号摊(起步)', type: 'stall', price_coins: 0, min_prestige: 0, slots: 2, base: true }, - { id: 'p_xiangkou', name: '巷口小摊', type: 'stall', price_coins: 600, min_prestige: 6, slots: 1 }, - { id: 'p_qiaotou', name: '桥头夜摊', type: 'stall', price_coins: 1100, min_prestige: 8, slots: 1 }, - { id: 'p_zhuanjiao', name: '转角小店', type: 'shop', price_coins: 2000, min_prestige: 10, slots: 2 }, + { id: 'p_xiangkou', name: '巷口小摊', type: 'stall', price_coins: 900, min_prestige: 6, slots: 1 }, + { id: 'p_qiaotou', name: '桥头夜摊', type: 'stall', price_coins: 2200, min_prestige: 8, slots: 1 }, + { id: 'p_zhuanjiao', name: '转角小店', type: 'shop', price_coins: 4500, min_prestige: 10, slots: 2 }, ]); diff --git a/tier2/games/night-market/src/data/quests.js b/tier2/games/night-market/src/data/quests.js index fe5d4dc5..28a7e1c1 100644 --- a/tier2/games/night-market/src/data/quests.js +++ b/tier2/games/night-market/src/data/quests.js @@ -1,13 +1,13 @@ /** - * src/data/quests.js —— 任务表·成就子集(M2 · 成就图鉴结构;底稿 §1.1 quest 表) - * owner:北极星顶级线①(W-POLARIS)· 开发设计书 §2 缺口 1(quest 类型枚举扩「成就」,不加新表) - * 全量(引导 20 + 阶段 40 + 每日 30 + 成就 60)归 U13 灌装批;M2 最小集 = 成就 12 条(四组各有代表)。 + * src/data/quests.js —— 任务表(成就 12 + M3 阶段任务 40;底稿 §1.1 quest 表) + * owner:北极星顶级线①(W-POLARIS)· 开发设计书 §2 缺口 1 + §3 内容量表(引导 20/每日 30 归 U13) * - * 字段口径(quest 表 + 缺口 1 处置):id / type('achievement';每日/阶段/引导归 U13)/ 名称 / - * axis(判定轴:core 成就快照的键)/ threshold / reward_coins(奖励{货币,数量})。 - * 【声望纯度红线】成就奖励只发金币——声望仅从里程碑与评论家事件来(设计书 §4),本表零声望字段。 - * 【判定口径】达成 = 快照轴 ≥ threshold(核算即时,不落存档);领取(claimed)一次性、入存档。 - * 〔草案·首轮仿真回填后锁〕内容全原创(clean-room)。 + * 字段口径(quest 表):id / type('achievement'|'stage')/ 名称 / axis(判定轴:core 成就快照的键, + * M3 增 'day' 轴)/ threshold / reward_coins(奖励{货币,数量})/ prev(阶段任务前置 ref,线性链)。 + * 【声望纯度红线】任务奖励只发金币——声望仅从里程碑与评论家事件来(设计书 §4),本表零声望字段。 + * 【判定口径】达成 = 快照轴 ≥ threshold(核算即时,不落存档);领取(claimed)一次性、入存档; + * 阶段任务另须前置已领(手把手接力,「任意时刻都有下一件事」的显式骨架,设计书 §3)。 + * 【定标口径】阶段阈值按 M3 千局扫描的进度中位数排布(docs/m3-数值定标报告.md);内容全原创(clean-room)。 */ 'use strict'; @@ -30,3 +30,55 @@ export const ACHIEVEMENTS = Object.freeze([ { id: 'a_guyuan1', type: 'achievement', name: '首位伙计', axis: 'staffHired', threshold: 1, reward_coins: 80 }, { id: 'a_shijian3', type: 'achievement', name: '见过世面', axis: 'eventsSeen', threshold: 3, reward_coins: 150 }, ]); + +/** + * M3 阶段任务 40 条(type:'stage',线性链 prev 接力):10 小时进度的显式骨架—— + * 从「第一锅热气」到「街口传说」,任意时刻玩家眼前都有下一件事(设计书 §3 内容架构 meta 层)。 + * 阈值排布对齐千局扫描进度中位:前 10 条落首小时、11–25 落 2–5h、26–40 落 5–10h。 + */ +export const STAGE_TASKS = Object.freeze([ + // ── 开张段(首 1 小时:day1–4;手把手起步)── + { id: 't01', type: 'stage', name: '第一锅热气', axis: 'careerServed', threshold: 5, reward_coins: 30, prev: null }, + { id: 't02', type: 'stage', name: '开张小账', axis: 'careerRevenue', threshold: 60, reward_coins: 40, prev: 't01' }, + { id: 't03', type: 'stage', name: '添个新菜', axis: 'unlockedCount', threshold: 2, reward_coins: 50, prev: 't02' }, + { id: 't04', type: 'stage', name: '十五单出摊', axis: 'careerServed', threshold: 15, reward_coins: 50, prev: 't03' }, + { id: 't05', type: 'stage', name: '两百金流水', axis: 'careerRevenue', threshold: 200, reward_coins: 60, prev: 't04' }, + { id: 't06', type: 'stage', name: '熬过头一晚', axis: 'day', threshold: 2, reward_coins: 60, prev: 't05' }, + { id: 't07', type: 'stage', name: '菜单铺开', axis: 'unlockedCount', threshold: 4, reward_coins: 70, prev: 't06' }, + { id: 't08', type: 'stage', name: '手上有连招', axis: 'comboBest', threshold: 3, reward_coins: 70, prev: 't07' }, + { id: 't09', type: 'stage', name: '第一桶金在望', axis: 'careerRevenue', threshold: 440, reward_coins: 80, prev: 't08' }, + { id: 't10', type: 'stage', name: '四十单老摊', axis: 'careerServed', threshold: 40, reward_coins: 80, prev: 't09' }, + // ── 立足段(2–5h:day5–16;解锁与系统门户渐次开)── + { id: 't11', type: 'stage', name: '第三个夜晚', axis: 'day', threshold: 3, reward_coins: 80, prev: 't10' }, + { id: 't12', type: 'stage', name: '锁越开越多', axis: 'unlockedCount', threshold: 7, reward_coins: 90, prev: 't11' }, + { id: 't13', type: 'stage', name: '六道拿手菜', axis: 'recipesCollected', threshold: 6, reward_coins: 90, prev: 't12' }, + { id: 't14', type: 'stage', name: '九百金进账', axis: 'careerRevenue', threshold: 900, reward_coins: 100, prev: 't13' }, + { id: 't15', type: 'stage', name: '五方来客', axis: 'customersCollected', threshold: 5, reward_coins: 100, prev: 't14' }, + { id: 't16', type: 'stage', name: '十锁开张', axis: 'unlockedCount', threshold: 10, reward_coins: 110, prev: 't15' }, + { id: 't17', type: 'stage', name: '百单达成', axis: 'careerServed', threshold: 100, reward_coins: 120, prev: 't16' }, + { id: 't18', type: 'stage', name: '第五夜灯火', axis: 'day', threshold: 5, reward_coins: 120, prev: 't17' }, + { id: 't19', type: 'stage', name: '千八流水', axis: 'careerRevenue', threshold: 1800, reward_coins: 130, prev: 't18' }, + { id: 't20', type: 'stage', name: '六连不断火', axis: 'comboBest', threshold: 6, reward_coins: 140, prev: 't19' }, + { id: 't21', type: 'stage', name: '十四道锁', axis: 'unlockedCount', threshold: 14, reward_coins: 150, prev: 't20' }, + { id: 't22', type: 'stage', name: '半本菜谱', axis: 'recipesCollected', threshold: 12, reward_coins: 150, prev: 't21' }, + { id: 't23', type: 'stage', name: '第一位伙计', axis: 'staffHired', threshold: 1, reward_coins: 160, prev: 't22' }, + { id: 't24', type: 'stage', name: '三千金身家', axis: 'careerRevenue', threshold: 3000, reward_coins: 170, prev: 't23' }, + { id: 't25', type: 'stage', name: '第八个夜晚', axis: 'day', threshold: 8, reward_coins: 180, prev: 't24' }, + // ── 扩张段(5–8h:day17–30;街区铺开)── + { id: 't26', type: 'stage', name: '盘下第二块地', axis: 'plotsOwned', threshold: 2, reward_coins: 200, prev: 't25' }, + { id: 't27', type: 'stage', name: '三百单招牌', axis: 'careerServed', threshold: 300, reward_coins: 200, prev: 't26' }, + { id: 't28', type: 'stage', name: '二十道锁', axis: 'unlockedCount', threshold: 20, reward_coins: 220, prev: 't27' }, + { id: 't29', type: 'stage', name: '夜市见闻', axis: 'eventsSeen', threshold: 2, reward_coins: 220, prev: 't28' }, + { id: 't30', type: 'stage', name: '五千五流水', axis: 'careerRevenue', threshold: 5500, reward_coins: 240, prev: 't29' }, + { id: 't31', type: 'stage', name: '十方食客', axis: 'customersCollected', threshold: 10, reward_coins: 240, prev: 't30' }, + { id: 't32', type: 'stage', name: '三人小班底', axis: 'staffHired', threshold: 3, reward_coins: 260, prev: 't31' }, + { id: 't33', type: 'stage', name: '二十六道锁', axis: 'unlockedCount', threshold: 26, reward_coins: 280, prev: 't32' }, + { id: 't34', type: 'stage', name: '第十二夜', axis: 'day', threshold: 12, reward_coins: 280, prev: 't33' }, + { id: 't35', type: 'stage', name: '九千金大账', axis: 'careerRevenue', threshold: 9000, reward_coins: 300, prev: 't34' }, + // ── 传说段(8–10h+:day30–40;收束到长线循环)── + { id: 't36', type: 'stage', name: '第三块地', axis: 'plotsOwned', threshold: 3, reward_coins: 320, prev: 't35' }, + { id: 't37', type: 'stage', name: '二十道拿手菜', axis: 'recipesCollected', threshold: 20, reward_coins: 340, prev: 't36' }, + { id: 't38', type: 'stage', name: '八百单宗师', axis: 'careerServed', threshold: 800, reward_coins: 360, prev: 't37' }, + { id: 't39', type: 'stage', name: '满树三十四锁', axis: 'unlockedCount', threshold: 34, reward_coins: 400, prev: 't38' }, + { id: 't40', type: 'stage', name: '街口传说', axis: 'careerRevenue', threshold: 15000, reward_coins: 500, prev: 't39' }, +]); diff --git a/tier2/games/night-market/src/data/recipes.js b/tier2/games/night-market/src/data/recipes.js index e6ab12a3..c5ec03bb 100644 --- a/tier2/games/night-market/src/data/recipes.js +++ b/tier2/games/night-market/src/data/recipes.js @@ -78,4 +78,14 @@ export const RECIPES = Object.freeze([ ingredients: [{ id: 'i_youyu', qty: 2 }, { id: 'i_zhuqian', qty: 2 }] }, { id: 'r_guihuashanzha', name: '桂花山楂饮', cook_s: 3.5, price: 22, cost: 9, rarity: 3, tags: ['sweet', 'rare_fav'], base: false, ingredients: [{ id: 'i_guihua', qty: 1 }, { id: 'i_tang', qty: 3 }, { id: 'i_shanzha', qty: 2 }] }, + + // ── M3 内容一期 4 道(26→30;组合既有 12 食材,食材 40 归 M5/U13;定价纪律照 ⑧ 对账)── + { id: 'r_youdunzi', name: '萝卜油墩子', cook_s: 2.0, price: 8, cost: 6, rarity: 0, tags: ['quick', 'classic'], base: false, + ingredients: [{ id: 'i_mianfen', qty: 2 }, { id: 'i_shishu', qty: 3 }, { id: 'i_zhuqian', qty: 1 }] }, + { id: 'r_jianyuwan', name: '香煎鱼丸', cook_s: 3.0, price: 14, cost: 9, rarity: 1, tags: ['seafood', 'quick'], base: false, + ingredients: [{ id: 'i_youyu', qty: 1 }, { id: 'i_mianfen', qty: 2 }, { id: 'i_zhuqian', qty: 2 }] }, + { id: 'r_zhutongfan', name: '竹筒糯米饭', cook_s: 4.5, price: 19, cost: 10, rarity: 2, tags: ['sweet', 'classic'], base: false, + ingredients: [{ id: 'i_nuomi', qty: 3 }, { id: 'i_shishu', qty: 2 }, { id: 'i_tang', qty: 2 }] }, + { id: 'r_bingfen', name: '桂花冰粉', cook_s: 3.5, price: 25, cost: 10, rarity: 3, tags: ['sweet', 'rare_fav'], base: false, + ingredients: [{ id: 'i_tang', qty: 4 }, { id: 'i_shanzha', qty: 2 }, { id: 'i_guihua', qty: 1 }] }, ]); diff --git a/tier2/games/night-market/src/data/staff.js b/tier2/games/night-market/src/data/staff.js index 9fd9ba6a..92b1f3da 100644 --- a/tier2/games/night-market/src/data/staff.js +++ b/tier2/games/night-market/src/data/staff.js @@ -7,7 +7,7 @@ * - waiter 帮工 → auto_serve_rate(每秒自动出招次数:自动点「耐心最紧且可做」的顾客) * - cook 后厨 → cook_speed(灶台出餐倍速) * - cashier 收银 → tip_bonus(结账小费系数加成) - * 【技能升级】M2 最小集 = 单技能等级制(level 1..max_level):效果 ×eff_mult_per_level^(lv−1)、 + * 【技能升级】M2 最小集 = 单技能等级制;upgrade_base 按 M3 定标 ×3(员工养成 = 中期持续资金 sink,卡点密度的主要供给,详见 docs/m3-数值定标报告.md)(level 1..max_level):效果 ×eff_mult_per_level^(lv−1)、 * 日薪 ×wage_mult_per_level^(lv−1)(economy_curve.staff_efficiency 单源),升级价 = * upgrade_base × upgrade_cost.early_mult^(lv−1)(economy_curve 单源;技能槽多技能归 U13)。 * 【日薪】日结(settleAndAdvanceDay)扣,计入 dayNet(经营成本口径,离线速率如实反映)。 @@ -25,8 +25,8 @@ export const STAFF_ROLES = Object.freeze({ /** 招募池(M2 最小集 4 人;base_value = 1 级效果值,cook 为倍率、其余为增量)。 */ export const STAFF_POOL = Object.freeze([ - { id: 's_axiang', name: '阿香', role: 'waiter', base_value: 0.15, hire_cost: 150, wage_per_day: 24, upgrade_base: 120, max_level: 5 }, - { id: 's_laozhou', name: '老周', role: 'cook', base_value: 1.10, hire_cost: 200, wage_per_day: 30, upgrade_base: 160, max_level: 5 }, - { id: 's_xiaomei', name: '小梅', role: 'cashier', base_value: 0.03, hire_cost: 120, wage_per_day: 18, upgrade_base: 100, max_level: 5 }, - { id: 's_dazhuang', name: '大壮', role: 'waiter', base_value: 0.12, hire_cost: 130, wage_per_day: 20, upgrade_base: 110, max_level: 5 }, + { id: 's_axiang', name: '阿香', role: 'waiter', base_value: 0.15, hire_cost: 150, wage_per_day: 24, upgrade_base: 360, max_level: 5 }, + { id: 's_laozhou', name: '老周', role: 'cook', base_value: 1.10, hire_cost: 200, wage_per_day: 30, upgrade_base: 480, max_level: 5 }, + { id: 's_xiaomei', name: '小梅', role: 'cashier', base_value: 0.03, hire_cost: 120, wage_per_day: 18, upgrade_base: 300, max_level: 5 }, + { id: 's_dazhuang', name: '大壮', role: 'waiter', base_value: 0.12, hire_cost: 130, wage_per_day: 20, upgrade_base: 330, max_level: 5 }, ]); diff --git a/tier2/games/night-market/src/data/unlock-tree.js b/tier2/games/night-market/src/data/unlock-tree.js index c2b78d56..a2c3aac2 100644 --- a/tier2/games/night-market/src/data/unlock-tree.js +++ b/tier2/games/night-market/src/data/unlock-tree.js @@ -40,55 +40,60 @@ export const UNLOCK_TREE = Object.freeze([ { id: 'n_r_kaohongshu', name: '烤红薯', kind: 'unlock_recipe', target: 'r_kaohongshu', deps: ['n_r_zhimaqiu'], cost_coins: 45, min_prestige: 0 }, { id: 'n_r_nuomici', name: '红糖糍粑', kind: 'unlock_recipe', target: 'r_nuomici', deps: ['n_r_kaohongshu'], cost_coins: 80, min_prestige: 1 }, { id: 'n_r_danhuasu', name: '蛋花酥', kind: 'unlock_recipe', target: 'r_danhuasu', deps: ['n_r_nuomici'], cost_coins: 110, min_prestige: 1 }, - { id: 'n_r_tangshanyao', name: '拔丝山药', kind: 'unlock_recipe', target: 'r_tangshanyao', deps: ['n_r_danhuasu'], cost_coins: 200, min_prestige: 2 }, - { id: 'n_r_guihuagao', name: '桂花年糕', kind: 'unlock_recipe', target: 'r_guihuagao', deps: ['n_r_tangshanyao'], cost_coins: 320, min_prestige: 4 }, + { id: 'n_r_tangshanyao', name: '拔丝山药', kind: 'unlock_recipe', target: 'r_tangshanyao', deps: ['n_r_danhuasu'], cost_coins: 320, min_prestige: 2 }, + { id: 'n_r_guihuagao', name: '桂花年糕', kind: 'unlock_recipe', target: 'r_guihuagao', deps: ['n_r_tangshanyao'], cost_coins: 520, min_prestige: 4 }, // ── 主食线(unlock_recipe ×5)──────────────────────────────────────────── { id: 'n_r_congyoubing', name: '葱油饼', kind: 'unlock_recipe', target: 'r_congyoubing', deps: [], cost_coins: 30, min_prestige: 0 }, { id: 'n_r_jiroujuan', name: '鸡蛋灌饼', kind: 'unlock_recipe', target: 'r_jiroujuan', deps: ['n_r_congyoubing'], cost_coins: 50, min_prestige: 0 }, { id: 'n_r_chaomian', name: '铁板炒面', kind: 'unlock_recipe', target: 'r_chaomian', deps: ['n_r_jiroujuan'], cost_coins: 90, min_prestige: 1 }, { id: 'n_r_jianjiao', name: '脆底煎饺', kind: 'unlock_recipe', target: 'r_jianjiao', deps: ['n_r_chaomian'], cost_coins: 120, min_prestige: 1 }, - { id: 'n_r_jianbingsu', name: '金黄煎蛋饼', kind: 'unlock_recipe', target: 'r_jianbingsu', deps: ['n_r_jianjiao'], cost_coins: 220, min_prestige: 3 }, + { id: 'n_r_jianbingsu', name: '金黄煎蛋饼', kind: 'unlock_recipe', target: 'r_jianbingsu', deps: ['n_r_jianjiao'], cost_coins: 350, min_prestige: 3 }, // ── 香辣线(unlock_recipe ×2)──────────────────────────────────────────── { id: 'n_r_liangpi', name: '麻酱凉皮', kind: 'unlock_recipe', target: 'r_liangpi', deps: [], cost_coins: 40, min_prestige: 0 }, { id: 'n_r_shaokao', name: '烤蔬菜串', kind: 'unlock_recipe', target: 'r_shaokao', deps: ['n_r_liangpi'], cost_coins: 70, min_prestige: 1 }, // ── 海鲜线(unlock_recipe ×3;吃灶台扩容)───────────────────────────────── - { id: 'n_r_haixianzhou', name: '海鲜砂锅粥', kind: 'unlock_recipe', target: 'r_haixianzhou', deps: ['n_zao3'], cost_coins: 180, min_prestige: 2 }, - { id: 'n_r_laweiguo', name: '香辣海鲜锅', kind: 'unlock_recipe', target: 'r_laweiguo', deps: ['n_r_haixianzhou'], cost_coins: 260, min_prestige: 3 }, - { id: 'n_r_yexiaopin', name: '招牌夜宵拼盘', kind: 'unlock_recipe', target: 'r_yexiaopin', deps: ['n_r_laweiguo', 'n_r_guihuagao'], cost_coins: 420, min_prestige: 6 }, + { id: 'n_r_haixianzhou', name: '海鲜砂锅粥', kind: 'unlock_recipe', target: 'r_haixianzhou', deps: ['n_zao3'], cost_coins: 290, min_prestige: 2 }, + { id: 'n_r_laweiguo', name: '香辣海鲜锅', kind: 'unlock_recipe', target: 'r_laweiguo', deps: ['n_r_haixianzhou'], cost_coins: 420, min_prestige: 3 }, + { id: 'n_r_yexiaopin', name: '招牌夜宵拼盘', kind: 'unlock_recipe', target: 'r_yexiaopin', deps: ['n_r_laweiguo', 'n_r_guihuagao'], cost_coins: 680, min_prestige: 6 }, // ── 灶台扩容(stove_slot ×3:2→5)──────────────────────────────────────── { id: 'n_zao3', name: '第三口灶', kind: 'stove_slot', value: 1, deps: [], cost_coins: 120, min_prestige: 1 }, - { id: 'n_zao4', name: '第四口灶', kind: 'stove_slot', value: 1, deps: ['n_zao3'], cost_coins: 260, min_prestige: 3 }, - { id: 'n_zao5', name: '第五口灶', kind: 'stove_slot', value: 1, deps: ['n_zao4'], cost_coins: 480, min_prestige: 6 }, + { id: 'n_zao4', name: '第四口灶', kind: 'stove_slot', value: 1, deps: ['n_zao3'], cost_coins: 420, min_prestige: 3 }, + { id: 'n_zao5', name: '第五口灶', kind: 'stove_slot', value: 1, deps: ['n_zao4'], cost_coins: 800, min_prestige: 6 }, // ── 座位扩容(seat ×3:6→9)────────────────────────────────────────────── { id: 'n_zuo7', name: '加一张马扎', kind: 'seat', value: 1, deps: [], cost_coins: 60, min_prestige: 0 }, { id: 'n_zuo8', name: '拼一张折叠桌', kind: 'seat', value: 1, deps: ['n_zuo7'], cost_coins: 140, min_prestige: 2 }, - { id: 'n_zuo9', name: '再撑一把伞', kind: 'seat', value: 1, deps: ['n_zuo8'], cost_coins: 300, min_prestige: 4 }, + { id: 'n_zuo9', name: '再撑一把伞', kind: 'seat', value: 1, deps: ['n_zuo8'], cost_coins: 480, min_prestige: 4 }, // ── 服务与节奏 ───────────────────────────────────────────────────────────── { id: 'n_dengzi', name: '舒适马扎', kind: 'patience_bonus', value: 0.4, deps: [], cost_coins: 90, min_prestige: 1 }, - { id: 'n_yinliao', name: '免费凉茶', kind: 'patience_bonus', value: 0.4, deps: ['n_dengzi'], cost_coins: 200, min_prestige: 3 }, + { id: 'n_yinliao', name: '免费凉茶', kind: 'patience_bonus', value: 0.4, deps: ['n_dengzi'], cost_coins: 320, min_prestige: 3 }, { id: 'n_zhaopai', name: '手写招牌', kind: 'tip_bonus', value: 0.02, deps: [], cost_coins: 70, min_prestige: 0 }, - { id: 'n_dengchuan', name: '氛围灯串', kind: 'tip_bonus', value: 0.02, deps: ['n_zhaopai'], cost_coins: 160, min_prestige: 2 }, + { id: 'n_dengchuan', name: '氛围灯串', kind: 'tip_bonus', value: 0.02, deps: ['n_zhaopai'], cost_coins: 260, min_prestige: 2 }, { id: 'n_yaohe', name: '穿街吆喝', kind: 'spawn_rate', value: 0.92, deps: [], cost_coins: 100, min_prestige: 1 }, - { id: 'n_koubei', name: '口碑传开', kind: 'spawn_rate', value: 0.92, deps: ['n_yaohe'], cost_coins: 240, min_prestige: 3 }, + { id: 'n_koubei', name: '口碑传开', kind: 'spawn_rate', value: 0.92, deps: ['n_yaohe'], cost_coins: 380, min_prestige: 3 }, { id: 'n_shoutao', name: '利落手套', kind: 'combo_window', value: 2, deps: [], cost_coins: 110, min_prestige: 1 }, - { id: 'n_shuangdao', name: '双刀快手', kind: 'combo_stack', value: 2, deps: ['n_shoutao'], cost_coins: 180, min_prestige: 2 }, - { id: 'n_xiaopai', name: '致歉小牌', kind: 'rep_shield', value: 1, deps: [], cost_coins: 220, min_prestige: 3 }, + { id: 'n_shuangdao', name: '双刀快手', kind: 'combo_stack', value: 2, deps: ['n_shoutao'], cost_coins: 280, min_prestige: 2 }, + { id: 'n_xiaopai', name: '致歉小牌', kind: 'rep_shield', value: 1, deps: [], cost_coins: 350, min_prestige: 3 }, // ── 库存与进货 ───────────────────────────────────────────────────────────── - { id: 'n_bingxiang', name: '二手小冰柜', kind: 'freshness_bonus', value: 1, deps: [], cost_coins: 150, min_prestige: 2 }, - { id: 'n_baoxianhe', name: '成套保鲜盒', kind: 'freshness_bonus', value: 1, deps: ['n_bingxiang'], cost_coins: 280, min_prestige: 4 }, - { id: 'n_caigou', name: '相熟菜贩', kind: 'market_discount', value: 0.95, deps: [], cost_coins: 130, min_prestige: 2 }, - { id: 'n_pifa', name: '批发渠道', kind: 'market_discount', value: 0.90, deps: ['n_caigou'], cost_coins: 300, min_prestige: 5 }, + { id: 'n_bingxiang', name: '二手小冰柜', kind: 'freshness_bonus', value: 1, deps: [], cost_coins: 240, min_prestige: 2 }, + { id: 'n_baoxianhe', name: '成套保鲜盒', kind: 'freshness_bonus', value: 1, deps: ['n_bingxiang'], cost_coins: 450, min_prestige: 4 }, + { id: 'n_caigou', name: '相熟菜贩', kind: 'market_discount', value: 0.95, deps: [], cost_coins: 210, min_prestige: 2 }, + { id: 'n_pifa', name: '批发渠道', kind: 'market_discount', value: 0.90, deps: ['n_caigou'], cost_coins: 480, min_prestige: 5 }, // ── 离线收益启用(根节点,早期低价可达)──────────────────────────────────── { id: 'n_yedeng', name: '值夜摊灯', kind: 'offline_enable', deps: [], cost_coins: 50, min_prestige: 0 }, // ── M2 四系统门户(M1 曾为 arrivesAt:'M2' 前瞻;M2 机制到位,解锁即开张——效果经 system kind // 在效果解释器兑现:expand=可购地块 / rnd=可研发 / staff=可招工 / event=事件开始触发)──── - { id: 'n_sys_expand', name: '第二摊位', kind: 'system', target: 'expansion', deps: ['n_zao3'], cost_coins: 500, min_prestige: 6 }, - { id: 'n_sys_rnd', name: '研发工作台', kind: 'system', target: 'research', deps: ['n_r_danhuasu'], cost_coins: 400, min_prestige: 5 }, - { id: 'n_sys_staff', name: '招工启事', kind: 'system', target: 'staff', deps: ['n_zuo8'], cost_coins: 450, min_prestige: 5 }, - { id: 'n_sys_event', name: '夜市百态', kind: 'system', target: 'events', deps: ['n_koubei'], cost_coins: 400, min_prestige: 6 }, + { id: 'n_sys_expand', name: '第二摊位', kind: 'system', target: 'expansion', deps: ['n_zao3'], cost_coins: 800, min_prestige: 6 }, + { id: 'n_sys_rnd', name: '研发工作台', kind: 'system', target: 'research', deps: ['n_r_danhuasu'], cost_coins: 640, min_prestige: 5 }, + { id: 'n_sys_staff', name: '招工启事', kind: 'system', target: 'staff', deps: ['n_zuo8'], cost_coins: 720, min_prestige: 5 }, + { id: 'n_sys_event', name: '夜市百态', kind: 'system', target: 'events', deps: ['n_koubei'], cost_coins: 640, min_prestige: 6 }, // ── M2 研发节点(unlock_recipe + cost_ingredients:食材组合出新菜,经 n_sys_rnd 门户)──────── - { id: 'n_r_jiaoyanyuqiu', name: '研发·椒盐鱿鱼球', kind: 'unlock_recipe', target: 'r_jiaoyanyuqiu', deps: ['n_sys_rnd', 'n_r_haixianzhou'], cost_coins: 150, min_prestige: 5, + { id: 'n_r_jiaoyanyuqiu', name: '研发·椒盐鱿鱼球', kind: 'unlock_recipe', target: 'r_jiaoyanyuqiu', deps: ['n_sys_rnd', 'n_r_haixianzhou'], cost_coins: 240, min_prestige: 5, cost_ingredients: [{ id: 'i_youyu', qty: 6 }, { id: 'i_laliao', qty: 4 }] }, - { id: 'n_r_guihuashanzha', name: '研发·桂花山楂饮', kind: 'unlock_recipe', target: 'r_guihuashanzha', deps: ['n_sys_rnd'], cost_coins: 120, min_prestige: 5, + { id: 'n_r_guihuashanzha', name: '研发·桂花山楂饮', kind: 'unlock_recipe', target: 'r_guihuashanzha', deps: ['n_sys_rnd'], cost_coins: 200, min_prestige: 5, cost_ingredients: [{ id: 'i_guihua', qty: 3 }, { id: 'i_shanzha', qty: 6 }] }, + // ── M3 内容一期菜谱节点 ×4(中后段价格阶梯:填 2–7h 卡点带,U9 定标的成本面棋子)──────────── + { id: 'n_r_youdunzi', name: '萝卜油墩子', kind: 'unlock_recipe', target: 'r_youdunzi', deps: ['n_r_congyoubing'], cost_coins: 260, min_prestige: 2 }, + { id: 'n_r_jianyuwan', name: '香煎鱼丸', kind: 'unlock_recipe', target: 'r_jianyuwan', deps: ['n_r_haixianzhou'], cost_coins: 480, min_prestige: 4 }, + { id: 'n_r_zhutongfan', name: '竹筒糯米饭', kind: 'unlock_recipe', target: 'r_zhutongfan', deps: ['n_r_nuomici'], cost_coins: 620, min_prestige: 5 }, + { id: 'n_r_bingfen', name: '桂花冰粉', kind: 'unlock_recipe', target: 'r_bingfen', deps: ['n_r_guihuagao'], cost_coins: 900, min_prestige: 7 }, ]); diff --git a/tier2/games/night-market/src/scenes/main-scene.js b/tier2/games/night-market/src/scenes/main-scene.js index ee5b3a71..7bc33b3a 100644 --- a/tier2/games/night-market/src/scenes/main-scene.js +++ b/tier2/games/night-market/src/scenes/main-scene.js @@ -198,6 +198,8 @@ export class MainScene extends Phaser.Scene { this.hud.floatText(VIEW_W / 2, VIEW_H * 0.30, `成就「${ev.name}」奖 ${ev.reward} 金`, '#ffd166'); } else if (ev.type === 'wages') { this.hud.floatText(VIEW_W / 2, VIEW_H * 0.46, `发工钱 −${ev.paid}`, '#c8d2f0'); + } else if (ev.type === 'relief') { + this.hud.floatText(VIEW_W / 2, VIEW_H * 0.48, `翻出老本 +${ev.granted},明天再战`, '#9ef0a0'); } else if (ev.type === 'day_end' && !this._dayEndShown) { this._dayEndShown = true; if (this._dockOpen) this.dock.close(); // 收钟强制回日结面板(信息层级唯一) diff --git a/tier2/games/night-market/src/ui/dock.js b/tier2/games/night-market/src/ui/dock.js index 21359e5b..e76ac46b 100644 --- a/tier2/games/night-market/src/ui/dock.js +++ b/tier2/games/night-market/src/ui/dock.js @@ -130,11 +130,21 @@ export class Dock { // codex const v = c.codexView(); const st = c.readState(); + // M3 阶段任务链:已领折叠成一行计数,当前段(可领 + 接下来 4 条)展开——「下一件事」永远在眼前 + const doneTasks = v.tasks.filter((t) => t.claimed).length; + const currentTasks = v.tasks.filter((t) => !t.claimed).slice(0, 5); return { - title: '图鉴与成就', + title: '图鉴与任务', rows: [ { text: `菜谱图鉴 ${st.collections.recipes.collected}/${st.collections.recipes.total}`, sub: v.recipes.filter((r) => r.collected).slice(-4).map((r) => r.name).join(' ') || '还没做过菜' }, { text: `顾客图鉴 ${st.collections.customers.collected}/${st.collections.customers.total}`, sub: v.customers.filter((t) => t.collected).map((t) => t.name).join(' ') || '还没来过客' }, + { text: `阶段任务 ${doneTasks}/${v.tasks.length}`, sub: doneTasks > 0 ? '一步一个脚印' : '从第一锅热气开始' }, + ...currentTasks.map((t) => ({ + text: `${t.claimable ? '★' : '·'} ${t.name}`, + sub: `${t.progress}/${t.threshold} · 奖 ${t.reward} 金`, + btn: t.claimable ? '领取' : null, + onTap: () => c.claimAchievement(t.id), + })), ...v.achievements.map((a) => ({ text: `${a.claimed ? '✓' : a.achieved ? '★' : '☆'} ${a.name}`, sub: `${a.progress}/${a.threshold}${a.claimed ? ' · 已领' : ` · 奖 ${a.reward} 金`}`, diff --git a/tier2/games/night-market/src/ui/hud.js b/tier2/games/night-market/src/ui/hud.js index 101ec60e..e9b301e6 100644 --- a/tier2/games/night-market/src/ui/hud.js +++ b/tier2/games/night-market/src/ui/hud.js @@ -47,7 +47,7 @@ export class Hud { /** 每帧刷新(只读 state)。 */ update(st) { this.coinsText.setText(`金币 ${st.coins}`); - this.prestigeText.setText(`声望 ${st.prestige} · 解锁 ${st.unlockedCount}/42`); + this.prestigeText.setText(`声望 ${st.prestige} · 解锁 ${st.unlockedCount}/${st.treeSize}`); this.repText.setText(`口碑 ${st.reputation}`); this.comboText.setText(st.combo >= 2 ? `连击 ×${st.combo}` : ''); this.servedText.setText(`出餐 ${st.served} · 翻台 ${st.missed}`); diff --git a/tier2/games/night-market/test/m1-core.test.mjs b/tier2/games/night-market/test/m1-core.test.mjs index bd73c530..ef743b99 100644 --- a/tier2/games/night-market/test/m1-core.test.mjs +++ b/tier2/games/night-market/test/m1-core.test.mjs @@ -153,9 +153,9 @@ test('自动补货:确定性 + 资金不足按表序补到耗尽', () => { assert.equal(c.readState().coins, 50 - r.spent); }); -test('解锁树数据面:42 节点、18 菜谱节点、4 系统门户带 target(M2 兑现)、2 研发节点带食材组合', () => { - assert.equal(UNLOCK_TREE.length, 42); // M1 40 + M2 研发 2 - assert.equal(UNLOCK_TREE.filter((n) => n.kind === 'unlock_recipe').length, 18); +test('解锁树数据面:46 节点、22 菜谱节点、4 系统门户带 target(M2 兑现)、2 研发节点带食材组合', () => { + assert.equal(UNLOCK_TREE.length, 46); // M1 40 + M2 研发 2 + M3 内容一期 4 + assert.equal(UNLOCK_TREE.filter((n) => n.kind === 'unlock_recipe').length, 22); const sys = UNLOCK_TREE.filter((n) => n.kind === 'system'); assert.equal(sys.length, 4); // M1 曾为 arrivesAt:'M2' 前瞻;M2 机制到位后收编为 target 门户(expansion/research/staff/events) diff --git a/tier2/games/night-market/test/m2-systems.test.mjs b/tier2/games/night-market/test/m2-systems.test.mjs index 5f12db0b..009f68b3 100644 --- a/tier2/games/night-market/test/m2-systems.test.mjs +++ b/tier2/games/night-market/test/m2-systems.test.mjs @@ -32,13 +32,13 @@ const ALL_GATES = { }; test('扩张边界:未知地块/声望门/钱不够/设备重复购', () => { - const c = richCore(1, { unlocked: ['n_zao3', 'n_sys_expand'], prestige: 6, coins: 700 }); + const c = richCore(1, { unlocked: ['n_zao3', 'n_sys_expand'], prestige: 6, coins: 1000 }); // 金额随 M3 定标地价(900) assert.equal(c.buyPlot('p_bushi').reason, 'not_found'); assert.equal(c.buyPlot('p_qiaotou').reason, 'prestige_low'); // 要 8,只有 6 assert.equal(c.buyPlot('p_zhuanjiao').reason, 'prestige_low'); // 要 10 - assert.equal(c.buyPlot('p_xiangkou').ok, true); // 600 ≤ 700 + assert.equal(c.buyPlot('p_xiangkou').ok, true); // 900 ≤ 1000(M3 定标价) assert.equal(c.buyPlot('p_xiangkou').reason, 'already'); - assert.equal(c.buyEquipment('e_menghuozao').reason, 'insufficient_coins'); // 只剩 100 + assert.equal(c.buyEquipment('e_menghuozao').reason, 'insufficient_coins'); // 只剩 100 < 420 const c2 = richCore(2, { unlocked: ['n_zao3', 'n_sys_expand'] }); assert.equal(c2.buyEquipment('e_hongdenglong').ok, true); assert.equal(c2.buyEquipment('e_hongdenglong').reason, 'already'); // 全街限购一件(M2 最小集) @@ -151,17 +151,39 @@ test('变现位:closed 路无奖;view 可用性语境;加速在 day_end 不流 assert.equal(slots.find((s) => s.slotId === 'ad_cook_boost').available, true, '营业中加速位亮'); }); -test('图鉴投影含评论家位(总数 7);评论家不进常规客流', () => { +test('图鉴投影含特邀客位(M3 总数 19);特邀客不进常规客流', () => { const c = richCore(8); c.start(); c.autoRestock(); - assert.equal(c.readState().collections.customers.total, 7); - // 整日常规客流不该出现评论家(weight 0;事件系统未解锁) + assert.equal(c.readState().collections.customers.total, 19); // 13 常 + 4 稀 + 2 特邀(M3 一期) + // 整日常规客流不该出现特邀客(weight 0;事件系统未解锁) for (let i = 0; i < 6001 && c.readState().phase === 'play'; i++) { c.update(0.1); - assert.ok(!c.readState().customers.some((x) => x.rarity === 'critic'), '常规抽签零评论家'); + assert.ok(!c.readState().customers.some((x) => x.rarity === 'critic'), '常规抽签零特邀客'); } }); +test('M3 econ 注入缝:覆盖键两层并入且里程碑随 tiers 重建;不传恒用生产曲线', () => { + // 覆盖 prestige_threshold → 里程碑阈值随 buildMilestones 重建(×20 放大列) + const c = richCore(41, { ...ALL_GATES }); + const cOv = createGameCore({ + random: createSeededRandom(41), + econ: { prestige_threshold: { tiers: [10, 20, 30] }, combo: { tip_bonus_per_stack: 0.03 } }, + }); + const e0 = cOv._forensicsView().econEcho(); + assert.equal(e0.comboWindow, ECONOMY_CURVE.combo.window_s, '未覆盖键保留基线(两层并入非整键替换)'); + // 白盒:生涯流水 210 > 10×20=200 → 覆盖核首个里程碑达成;生产核阈值 440 未达 + const inject = { schemaVersion: 1, data: { ...defaultData(), careerRevenue: 210, coins: 100 } }; + cOv.importSave(inject, {}); cOv.start(); + const cProd = createGameCore({ random: createSeededRandom(41) }); + cProd.importSave(inject, {}); cProd.start(); + for (const core of [cOv, cProd]) { // 快进一日触发日结里程碑判定 + for (let i = 0; i < 6001 && core.readState().phase === 'play'; i++) core.update(0.1); + core.settleAndAdvanceDay({ nowMs: 1 }); + } + assert.ok(cOv.readState().prestige >= 1, '覆盖 tiers 后里程碑真重建(200 线达成)'); + assert.equal(cProd.readState().prestige, 0, '生产曲线阈值不受注入缝影响(440 线未达)'); +}); + test('存档 additive:M2 字段缺省兜底;未知地块/员工/成就 id 忽略不炸', () => { const c = createGameCore({ random: createSeededRandom(9) }); const r = c.importSave({