From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============5504295759632249838==" MIME-Version: 1.0 From: Andrey Kuzmin Subject: Re: [SPDK] SPDK FIO poor 4K read performance Date: Mon, 18 Dec 2017 22:40:12 +0000 Message-ID: In-Reply-To: BAF7572087063A4BAD2F325FC7533F420554F4342A86@FMSAMAIL.fmsa.local List-ID: To: spdk@lists.01.org --===============5504295759632249838== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On Tue, Dec 19, 2017, 01:27 Isaac Otsiabah wro= te: > Hi Audrey, > Hi Isaac, I guess you meant to address the original submission author, Mayank. Regards, Andrey which > plugin are you running? examples/nvme/fio_plugin/fio_plugin or > examples/bdev/fio_plugin/fio_plugin ? Is it on Fedora or Centos? > > > > Isaac > > *From:* SPDK [mailto:spdk-bounces(a)lists.01.org] *On Behalf Of *Andrey > Kuzmin > *Sent:* Monday, December 18, 2017 5:59 AM > *To:* Storage Performance Development Kit > *Subject:* Re: [SPDK] SPDK FIO poor 4K read performance > > > > > > On Mon, Dec 18, 2017, 16:08 Mayank wrote: > > Hi All, > > I have performed fio benchmark test with SPDK fio plugin for throughput > test with iodepth =3D 32 and numjobs=3D4. > > Latency results are as below: > > > > rand read > > 11.2k > > 45.9MB/s > > 88.83 usec > > rand write > > 126k > > 518MB/s > > 7.56 usec > > Throughput results are as below: > > > > Throughput (io:32 thr:4) > > IOPS > > Throuhgput > > Latency (usec) > > seq read > > 406k > > 1665MB/s > > 314.71 > > seq write > > 455k > > 1865MB/s > > 280.87 > > rand read > > 478k > > 1959MB/s > > 267.29 > > rand write > > 442k > > 1812MB/s > > 289.03 > > > > In results, 'm getting sequential read IOPS lesser than sequential write > IOPS. > > I am using NVME model number : INTEL SSDPEDMD020T4. > kernel : 4.13.13 > fio version : 2.21 > > > > BTW, your fio version is couple of years behind. > > > can anybody tell me what could be the issue? > > > > The latency data above clearly shows the reason: writes are being handled > by the internal SSD cache of few usec latency, while reads are served off > the real media, with typical (high-end) SSD latency of about 100 usec. > > > > Regards, > > Andrey > > > > Thanks, > Mayank > > _______________________________________________ > SPDK mailing list > SPDK(a)lists.01.org > https://lists.01.org/mailman/listinfo/spdk > > -- > > Regards, > Andrey > _______________________________________________ > SPDK mailing list > SPDK(a)lists.01.org > https://lists.01.org/mailman/listinfo/spdk > -- = Regards, Andrey --===============5504295759632249838== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGJyPjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+PGRpdiBkaXI9Imx0ciI+T24gVHVlLCBE ZWMgMTksIDIwMTcsIDAxOjI3IElzYWFjIE90c2lhYmFoICZsdDs8YSBocmVmPSJtYWlsdG86SU90 c2lhYmFoQHVzLmZ1aml0c3UuY29tIj5JT3RzaWFiYWhAdXMuZnVqaXRzdS5jb208L2E+Jmd0OyB3 cm90ZTo8YnI+PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFy Z2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFl eCI+PGRpdiBsYW5nPSJFTi1VUyIgbGluaz0iYmx1ZSIgdmxpbms9InB1cnBsZSI+PGRpdiBjbGFz cz0ibV8xNjkzMTMyMDQ4MzI4NTI5NTY3V29yZFNlY3Rpb24xIj48cCBjbGFzcz0iTXNvTm9ybWFs Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJp JnF1b3Q7LHNhbnMtc2VyaWYiPkhpIEF1ZHJleSzCoCA8L3NwYW4+PC9wPjwvZGl2PjwvZGl2Pjwv YmxvY2txdW90ZT48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkhpIElzYWFjLDwvZGl2PjxkaXY+ PGJyPjwvZGl2PjxkaXY+SSBndWVzcyB5b3UgbWVhbnQgdG8gYWRkcmVzcyB0aGUgb3JpZ2luYWwg c3VibWlzc2lvbiBhdXRob3IswqBNYXlhbmsuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5SZWdh cmRzLDwvZGl2PjxkaXY+QW5kcmV5PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj53aGljaDwvZGl2 PjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUi IHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRk aW5nLWxlZnQ6MWV4Ij48ZGl2IGxhbmc9IkVOLVVTIiBsaW5rPSJibHVlIiB2bGluaz0icHVycGxl Ij48ZGl2IGNsYXNzPSJtXzE2OTMxMzIwNDgzMjg1Mjk1NjdXb3JkU2VjdGlvbjEiPjxwIGNsYXNz PSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZx dW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZiI+wqBwbHVnaW4gYXJlIHlvdSBydW5uaW5nPyBl eGFtcGxlcy9udm1lL2Zpb19wbHVnaW4vZmlvX3BsdWdpbiBvciBleGFtcGxlcy9iZGV2L2Zpb19w bHVnaW4vZmlvX3BsdWdpbiA/IElzIGl0IG9uIEZlZG9yYSBvciBDZW50b3M/PHU+PC91Pjx1Pjwv dT48L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZiI+PHU+PC91 PsKgPHU+PC91Pjwvc3Bhbj48L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlm Ij5Jc2FhYzx1PjwvdT48dT48L3U+PC9zcGFuPjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj48Yj48 c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1 b3Q7LHNhbnMtc2VyaWYiPkZyb206PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEx LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPiBTUERLIFtt YWlsdG86PGEgaHJlZj0ibWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmciIHRhcmdldD0i X2JsYW5rIj5zcGRrLWJvdW5jZXNAbGlzdHMuMDEub3JnPC9hPl0gPGI+T24gQmVoYWxmIE9mIDwv Yj5BbmRyZXkgS3V6bWluPGJyPjxiPlNlbnQ6PC9iPiBNb25kYXksIERlY2VtYmVyIDE4LCAyMDE3 IDU6NTkgQU08YnI+PGI+VG86PC9iPiBTdG9yYWdlIFBlcmZvcm1hbmNlIERldmVsb3BtZW50IEtp dCAmbHQ7PGEgaHJlZj0ibWFpbHRvOnNwZGtAbGlzdHMuMDEub3JnIiB0YXJnZXQ9Il9ibGFuayI+ c3Bka0BsaXN0cy4wMS5vcmc8L2E+Jmd0Ozxicj48Yj5TdWJqZWN0OjwvYj4gUmU6IFtTUERLXSBT UERLIEZJTyBwb29yIDRLIHJlYWQgcGVyZm9ybWFuY2U8dT48L3U+PHU+PC91Pjwvc3Bhbj48L3A+ PC9kaXY+PC9kaXY+PGRpdiBsYW5nPSJFTi1VUyIgbGluaz0iYmx1ZSIgdmxpbms9InB1cnBsZSI+ PGRpdiBjbGFzcz0ibV8xNjkzMTMyMDQ4MzI4NTI5NTY3V29yZFNlY3Rpb24xIj48cCBjbGFzcz0i TXNvTm9ybWFsIj48dT48L3U+wqA8dT48L3U+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxl PSJtYXJnaW4tYm90dG9tOjEyLjBwdCI+PHU+PC91PsKgPHU+PC91PjwvcD48ZGl2PjxkaXY+PHAg Y2xhc3M9Ik1zb05vcm1hbCI+T24gTW9uLCBEZWMgMTgsIDIwMTcsIDE2OjA4IE1heWFuayAmbHQ7 PGEgaHJlZj0ibWFpbHRvOm1heWFuay5wYXRlbEBtYXlhZGF0YS5pbyIgdGFyZ2V0PSJfYmxhbmsi Pm1heWFuay5wYXRlbEBtYXlhZGF0YS5pbzwvYT4mZ3Q7IHdyb3RlOjx1PjwvdT48dT48L3U+PC9w PjwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVmdDpzb2xpZCAj Y2NjY2NjIDEuMHB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNi4wcHQ7bWFyZ2luLWxlZnQ6NC44cHQ7 bWFyZ2luLXJpZ2h0OjBpbiIgaWQ9Im1fMTY5MzEzMjA0ODMyODUyOTU2N2dtYWlsX2Jsb2NrX3F1 b3RlMCI+PGRpdj48cD5IaSBBbGwsPHU+PC91Pjx1PjwvdT48L3A+PHA+SSBoYXZlIHBlcmZvcm1l ZCBmaW8gYmVuY2htYXJrIHRlc3Qgd2l0aCBTUERLIGZpbyBwbHVnaW4gZm9yIHRocm91Z2hwdXQg dGVzdCB3aXRoIGlvZGVwdGggPSAzMiBhbmQgbnVtam9icz00Ljx1PjwvdT48dT48L3U+PC9wPjxw PkxhdGVuY3kgcmVzdWx0cyBhcmUgYXMgYmVsb3c6PHU+PC91Pjx1PjwvdT48L3A+PHA+PHU+PC91 PsKgPHU+PC91PjwvcD48dGFibGUgY2xhc3M9Im1fMTY5MzEzMjA0ODMyODUyOTU2N01zb05vcm1h bFRhYmxlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+PHRib2R5 Pjx0ciBzdHlsZT0iaGVpZ2h0OjExLjI1cHQiPjx0ZCBzdHlsZT0icGFkZGluZzouNzVwdCAuNzVw dCAuNzVwdCAuNzVwdDtoZWlnaHQ6MTEuMjVwdCI+PHAgY2xhc3M9Ik1zb05vcm1hbCI+cmFuZCBy ZWFkPHU+PC91Pjx1PjwvdT48L3A+PC90ZD48dGQgc3R5bGU9InBhZGRpbmc6Ljc1cHQgLjc1cHQg Ljc1cHQgLjc1cHQ7aGVpZ2h0OjExLjI1cHQiPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjExLjJrPHU+ PC91Pjx1PjwvdT48L3A+PC90ZD48dGQgc3R5bGU9InBhZGRpbmc6Ljc1cHQgLjc1cHQgLjc1cHQg Ljc1cHQ7aGVpZ2h0OjExLjI1cHQiPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjQ1LjlNQi9zPHU+PC91 Pjx1PjwvdT48L3A+PC90ZD48dGQgc3R5bGU9InBhZGRpbmc6Ljc1cHQgLjc1cHQgLjc1cHQgLjc1 cHQ7aGVpZ2h0OjExLjI1cHQiPjxwIGNsYXNzPSJNc29Ob3JtYWwiIGFsaWduPSJyaWdodCIgc3R5 bGU9InRleHQtYWxpZ246cmlnaHQiPjg4LjgzIHVzZWM8dT48L3U+PHU+PC91PjwvcD48L3RkPjwv dHI+PHRyIHN0eWxlPSJoZWlnaHQ6MTEuMjVwdCI+PHRkIHN0eWxlPSJwYWRkaW5nOi43NXB0IC43 NXB0IC43NXB0IC43NXB0O2hlaWdodDoxMS4yNXB0Ij48cCBjbGFzcz0iTXNvTm9ybWFsIj5yYW5k IHdyaXRlPHU+PC91Pjx1PjwvdT48L3A+PC90ZD48dGQgc3R5bGU9InBhZGRpbmc6Ljc1cHQgLjc1 cHQgLjc1cHQgLjc1cHQ7aGVpZ2h0OjExLjI1cHQiPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjEyNms8 dT48L3U+PHU+PC91PjwvcD48L3RkPjx0ZCBzdHlsZT0icGFkZGluZzouNzVwdCAuNzVwdCAuNzVw dCAuNzVwdDtoZWlnaHQ6MTEuMjVwdCI+PHAgY2xhc3M9Ik1zb05vcm1hbCI+NTE4TUIvczx1Pjwv dT48dT48L3U+PC9wPjwvdGQ+PHRkIHN0eWxlPSJwYWRkaW5nOi43NXB0IC43NXB0IC43NXB0IC43 NXB0O2hlaWdodDoxMS4yNXB0Ij48cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0icmlnaHQiIHN0 eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij43LjU2IHVzZWM8dT48L3U+PHU+PC91PjwvcD48L3RkPjwv dHI+PC90Ym9keT48L3RhYmxlPjxwPlRocm91Z2hwdXQgcmVzdWx0cyBhcmUgYXMgYmVsb3c6PHU+ PC91Pjx1PjwvdT48L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHU+PC91PsKgPHU+PC91PjwvcD48 dGFibGUgY2xhc3M9Im1fMTY5MzEzMjA0ODMyODUyOTU2N01zb05vcm1hbFRhYmxlIiBib3JkZXI9 IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+PHRib2R5Pjx0ciBzdHlsZT0iaGVp Z2h0OjExLjI1cHQiPjx0ZCBzdHlsZT0icGFkZGluZzouNzVwdCAuNzVwdCAuNzVwdCAuNzVwdDto ZWlnaHQ6MTEuMjVwdCI+PHAgY2xhc3M9Ik1zb05vcm1hbCI+VGhyb3VnaHB1dCAoaW86MzIgdGhy OjQpPHU+PC91Pjx1PjwvdT48L3A+PC90ZD48dGQgc3R5bGU9InBhZGRpbmc6Ljc1cHQgLjc1cHQg Ljc1cHQgLjc1cHQ7aGVpZ2h0OjExLjI1cHQiPjxwIGNsYXNzPSJNc29Ob3JtYWwiPklPUFM8dT48 L3U+PHU+PC91PjwvcD48L3RkPjx0ZCBzdHlsZT0icGFkZGluZzouNzVwdCAuNzVwdCAuNzVwdCAu NzVwdDtoZWlnaHQ6MTEuMjVwdCI+PHAgY2xhc3M9Ik1zb05vcm1hbCI+VGhyb3VoZ3B1dDx1Pjwv dT48dT48L3U+PC9wPjwvdGQ+PHRkIHN0eWxlPSJwYWRkaW5nOi43NXB0IC43NXB0IC43NXB0IC43 NXB0O2hlaWdodDoxMS4yNXB0Ij48cCBjbGFzcz0iTXNvTm9ybWFsIj5MYXRlbmN5ICh1c2VjKTx1 PjwvdT48dT48L3U+PC9wPjwvdGQ+PC90cj48dHIgc3R5bGU9ImhlaWdodDoxMS4yNXB0Ij48dGQg c3R5bGU9InBhZGRpbmc6Ljc1cHQgLjc1cHQgLjc1cHQgLjc1cHQ7aGVpZ2h0OjExLjI1cHQiPjxw IGNsYXNzPSJNc29Ob3JtYWwiPnNlcSByZWFkPHU+PC91Pjx1PjwvdT48L3A+PC90ZD48dGQgc3R5 bGU9InBhZGRpbmc6Ljc1cHQgLjc1cHQgLjc1cHQgLjc1cHQ7aGVpZ2h0OjExLjI1cHQiPjxwIGNs YXNzPSJNc29Ob3JtYWwiPjQwNms8dT48L3U+PHU+PC91PjwvcD48L3RkPjx0ZCBzdHlsZT0icGFk ZGluZzouNzVwdCAuNzVwdCAuNzVwdCAuNzVwdDtoZWlnaHQ6MTEuMjVwdCI+PHAgY2xhc3M9Ik1z b05vcm1hbCI+MTY2NU1CL3M8dT48L3U+PHU+PC91PjwvcD48L3RkPjx0ZCBzdHlsZT0icGFkZGlu ZzouNzVwdCAuNzVwdCAuNzVwdCAuNzVwdDtoZWlnaHQ6MTEuMjVwdCI+PHAgY2xhc3M9Ik1zb05v cm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+MzE0LjcxPHU+PC91 Pjx1PjwvdT48L3A+PC90ZD48L3RyPjx0ciBzdHlsZT0iaGVpZ2h0OjExLjI1cHQiPjx0ZCBzdHls ZT0icGFkZGluZzouNzVwdCAuNzVwdCAuNzVwdCAuNzVwdDtoZWlnaHQ6MTEuMjVwdCI+PHAgY2xh c3M9Ik1zb05vcm1hbCI+c2VxIHdyaXRlPHU+PC91Pjx1PjwvdT48L3A+PC90ZD48dGQgc3R5bGU9 InBhZGRpbmc6Ljc1cHQgLjc1cHQgLjc1cHQgLjc1cHQ7aGVpZ2h0OjExLjI1cHQiPjxwIGNsYXNz PSJNc29Ob3JtYWwiPjQ1NWs8dT48L3U+PHU+PC91PjwvcD48L3RkPjx0ZCBzdHlsZT0icGFkZGlu ZzouNzVwdCAuNzVwdCAuNzVwdCAuNzVwdDtoZWlnaHQ6MTEuMjVwdCI+PHAgY2xhc3M9Ik1zb05v cm1hbCI+MTg2NU1CL3M8dT48L3U+PHU+PC91PjwvcD48L3RkPjx0ZCBzdHlsZT0icGFkZGluZzou NzVwdCAuNzVwdCAuNzVwdCAuNzVwdDtoZWlnaHQ6MTEuMjVwdCI+PHAgY2xhc3M9Ik1zb05vcm1h bCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+MjgwLjg3PHU+PC91Pjx1 PjwvdT48L3A+PC90ZD48L3RyPjx0ciBzdHlsZT0iaGVpZ2h0OjExLjI1cHQiPjx0ZCBzdHlsZT0i cGFkZGluZzouNzVwdCAuNzVwdCAuNzVwdCAuNzVwdDtoZWlnaHQ6MTEuMjVwdCI+PHAgY2xhc3M9 Ik1zb05vcm1hbCI+cmFuZCByZWFkPHU+PC91Pjx1PjwvdT48L3A+PC90ZD48dGQgc3R5bGU9InBh ZGRpbmc6Ljc1cHQgLjc1cHQgLjc1cHQgLjc1cHQ7aGVpZ2h0OjExLjI1cHQiPjxwIGNsYXNzPSJN c29Ob3JtYWwiPjQ3OGs8dT48L3U+PHU+PC91PjwvcD48L3RkPjx0ZCBzdHlsZT0icGFkZGluZzou NzVwdCAuNzVwdCAuNzVwdCAuNzVwdDtoZWlnaHQ6MTEuMjVwdCI+PHAgY2xhc3M9Ik1zb05vcm1h bCI+MTk1OU1CL3M8dT48L3U+PHU+PC91PjwvcD48L3RkPjx0ZCBzdHlsZT0icGFkZGluZzouNzVw dCAuNzVwdCAuNzVwdCAuNzVwdDtoZWlnaHQ6MTEuMjVwdCI+PHAgY2xhc3M9Ik1zb05vcm1hbCIg YWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+MjY3LjI5PHU+PC91Pjx1Pjwv dT48L3A+PC90ZD48L3RyPjx0ciBzdHlsZT0iaGVpZ2h0OjExLjI1cHQiPjx0ZCBzdHlsZT0icGFk ZGluZzouNzVwdCAuNzVwdCAuNzVwdCAuNzVwdDtoZWlnaHQ6MTEuMjVwdCI+PHAgY2xhc3M9Ik1z b05vcm1hbCI+cmFuZCB3cml0ZTx1PjwvdT48dT48L3U+PC9wPjwvdGQ+PHRkIHN0eWxlPSJwYWRk aW5nOi43NXB0IC43NXB0IC43NXB0IC43NXB0O2hlaWdodDoxMS4yNXB0Ij48cCBjbGFzcz0iTXNv Tm9ybWFsIj40NDJrPHU+PC91Pjx1PjwvdT48L3A+PC90ZD48dGQgc3R5bGU9InBhZGRpbmc6Ljc1 cHQgLjc1cHQgLjc1cHQgLjc1cHQ7aGVpZ2h0OjExLjI1cHQiPjxwIGNsYXNzPSJNc29Ob3JtYWwi PjE4MTJNQi9zPHU+PC91Pjx1PjwvdT48L3A+PC90ZD48dGQgc3R5bGU9InBhZGRpbmc6Ljc1cHQg Ljc1cHQgLjc1cHQgLjc1cHQ7aGVpZ2h0OjExLjI1cHQiPjxwIGNsYXNzPSJNc29Ob3JtYWwiIGFs aWduPSJyaWdodCIgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjI4OS4wMzx1PjwvdT48dT48L3U+ PC9wPjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PHAgY2xhc3M9Ik1zb05vcm1hbCI+PGJyPjxi cj5JbiByZXN1bHRzLCAmIzM5O20gZ2V0dGluZyBzZXF1ZW50aWFsIHJlYWQgSU9QUyBsZXNzZXIg dGhhbiBzZXF1ZW50aWFsIHdyaXRlIElPUFMuPGJyPsKgPGJyPkkgYW0gdXNpbmcgTlZNRSBtb2Rl bCBudW1iZXIgOiBJTlRFTCBTU0RQRURNRDAyMFQ0Ljxicj5rZXJuZWzCoCA6IDQuMTMuMTM8YnI+ ZmlvIHZlcnNpb24gOiAyLjIxPHU+PC91Pjx1PjwvdT48L3A+PC9kaXY+PC9ibG9ja3F1b3RlPjwv ZGl2PjxkaXY+PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHU+PC91PsKgPHU+PC91PjwvcD48L2Rpdj48 ZGl2PjxwIGNsYXNzPSJNc29Ob3JtYWwiPkJUVywgeW91ciBmaW8gdmVyc2lvbiBpcyBjb3VwbGUg b2YgeWVhcnMgYmVoaW5kLjx1PjwvdT48dT48L3U+PC9wPjwvZGl2PjxkaXY+PGJsb2NrcXVvdGUg c3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci1sZWZ0OnNvbGlkICNjY2NjY2MgMS4wcHQ7cGFkZGlu ZzowaW4gMGluIDBpbiA2LjBwdDttYXJnaW4tbGVmdDo0LjhwdDttYXJnaW4tcmlnaHQ6MGluIiBp ZD0ibV8xNjkzMTMyMDQ4MzI4NTI5NTY3Z21haWxfYmxvY2tfcXVvdGUxIj48ZGl2PjxwIGNsYXNz PSJNc29Ob3JtYWwiPjxicj5jYW4gYW55Ym9keSB0ZWxsIG1lIHdoYXQgY291bGQgYmUgdGhlIGlz c3VlPzx1PjwvdT48dT48L3U+PC9wPjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48ZGl2PjxwIGNs YXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1PjwvdT48L3A+PC9kaXY+PGRpdj48cCBjbGFzcz0i TXNvTm9ybWFsIj5UaGUgbGF0ZW5jeSBkYXRhIGFib3ZlIGNsZWFybHkgc2hvd3MgdGhlIHJlYXNv bjogd3JpdGVzIGFyZSBiZWluZyBoYW5kbGVkIGJ5IHRoZSBpbnRlcm5hbCBTU0QgY2FjaGUgb2Yg ZmV3IHVzZWMgbGF0ZW5jeSwgd2hpbGUgcmVhZHMgYXJlIHNlcnZlZCBvZmYgdGhlIHJlYWwgbWVk aWEsIHdpdGggdHlwaWNhbCAoaGlnaC1lbmQpIFNTRCBsYXRlbmN5IG9mIGFib3V0IDEwMCB1c2Vj Ljx1PjwvdT48dT48L3U+PC9wPjwvZGl2PjxkaXY+PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHU+PC91 PsKgPHU+PC91PjwvcD48L2Rpdj48ZGl2PjxwIGNsYXNzPSJNc29Ob3JtYWwiPlJlZ2FyZHMsPHU+ PC91Pjx1PjwvdT48L3A+PC9kaXY+PGRpdj48cCBjbGFzcz0iTXNvTm9ybWFsIj5BbmRyZXk8dT48 L3U+PHU+PC91PjwvcD48L2Rpdj48ZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXI6bm9uZTti b3JkZXItbGVmdDpzb2xpZCAjY2NjY2NjIDEuMHB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNi4wcHQ7 bWFyZ2luLWxlZnQ6NC44cHQ7bWFyZ2luLXJpZ2h0OjBpbiIgaWQ9Im1fMTY5MzEzMjA0ODMyODUy OTU2N2dtYWlsX2Jsb2NrX3F1b3RlMiI+PGRpdj48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0i bWFyZ2luLWJvdHRvbToxMi4wcHQiPjxicj48YnI+VGhhbmtzLDxicj5NYXlhbms8YnI+PGJyPjx1 PjwvdT48dT48L3U+PC9wPjwvZGl2PjxwIGNsYXNzPSJNc29Ob3JtYWwiPl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPlNQREsgbWFpbGluZyBsaXN0PGJy PjxhIGhyZWY9Im1haWx0bzpTUERLQGxpc3RzLjAxLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPlNQREtA bGlzdHMuMDEub3JnPC9hPjxicj48YSBocmVmPSJodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFu L2xpc3RpbmZvL3NwZGsiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2xpc3RzLjAxLm9yZy9tYWls bWFuL2xpc3RpbmZvL3NwZGs8L2E+PHU+PC91Pjx1PjwvdT48L3A+PC9ibG9ja3F1b3RlPjwvZGl2 PjxkaXY+PHAgY2xhc3M9Ik1zb05vcm1hbCI+LS0gPHU+PC91Pjx1PjwvdT48L3A+PC9kaXY+PGRp dj48cD5SZWdhcmRzLDxicj5BbmRyZXk8dT48L3U+PHU+PC91PjwvcD48L2Rpdj48L2Rpdj48L2Rp dj5fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxicj4KU1BE SyBtYWlsaW5nIGxpc3Q8YnI+CjxhIGhyZWY9Im1haWx0bzpTUERLQGxpc3RzLjAxLm9yZyIgdGFy Z2V0PSJfYmxhbmsiPlNQREtAbGlzdHMuMDEub3JnPC9hPjxicj4KPGEgaHJlZj0iaHR0cHM6Ly9s aXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9zcGRrIiByZWw9Im5vcmVmZXJyZXIiIHRhcmdl dD0iX2JsYW5rIj5odHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3NwZGs8L2E+ PGJyPgo8L2Jsb2NrcXVvdGU+PC9kaXY+PGRpdiBkaXI9Imx0ciI+LS0gPGJyPjwvZGl2PjxkaXYg Y2xhc3M9ImdtYWlsX3NpZ25hdHVyZSIgZGF0YS1zbWFydG1haWw9ImdtYWlsX3NpZ25hdHVyZSI+ PHAgZGlyPSJsdHIiPlJlZ2FyZHMsPGJyPgpBbmRyZXk8L3A+CjwvZGl2Pgo= --===============5504295759632249838==--