From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============6011395334366173640==" MIME-Version: 1.0 From: Harris, James R Subject: Re: [SPDK] Need help for iSCSI configuration for NVMe disc Date: Thu, 25 May 2017 19:08:53 +0000 Message-ID: <222C004E-8DF3-48AC-9E0A-7F2D082C10DC@intel.com> In-Reply-To: A8260581-FF1E-43E8-A84F-55A85DD88844@cloudsimple.com List-ID: To: spdk@lists.01.org --===============6011395334366173640== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Kiran, Can you confirm which SPDK git commit ID you are working from? Since there= have been changes in this transport ID format, I want to make sure I provi= de you the correct details based on the SPDK version you are using. Thanks, -Jim From: Kiran Dikshit Date: Wednesday, May 24, 2017 at 10:50 PM To: James Harris Cc: Storage Performance Development Kit Subject: Re: [SPDK] Need help for iSCSI configuration for NVMe disc Hi Harris, I did try with the TransportID =E2=80=9Ctrtype:PCIe traddr:0000.0a:00.0=E2= =80=9D Nvme3 option i am still seeing the same issue. Thank you Kiran On 24-May-2017, at 9:50 PM, Harris, James R > wrote: On May 24, 2017, at 4:10 AM, Kiran Dikshit > wrote: Hi All, I am trying to configure iSCSI for a NVMe drive and getting the below error= =E2=80=99s. I have unbound the NVMe drive from kernel using the setup.sh. tgt_node.c: 718:spdk_iscsi_tgt_node_construct: ***ERROR*** Could not constr= uct SCSI device tgt_node.c: 984:spdk_cf_add_iscsi_tgt_node: ***ERROR*** tgt_node1: add_iscs= i_target_node error tgt_node.c:1010:spdk_iscsi_init_tgt_nodes: ***ERROR*** spdk_cf_add_iscsi_tg= t_node() failed iscsi_subsystem.c: 965:spdk_iscsi_subsystem_init: ***ERROR*** spdk_iscsi_in= it_tgt_nodes() failed app.c: 404:spdk_app_init: ***ERROR*** spdk_subsystem_init() failed Below is the section of my iscsi.conf.in file for ref= erence. # NVMe configuration options [Nvme] # NVMe Device Whitelist # Users may specify which NVMe devices to claim by their PCI # domain, bus, device, and function. The format is dddd:bb:dd.f, which is # the same format displayed by lspci or in /sys/bus/pci/devices. The second # argument is a "name" for the device that can be anything. The name # is referenced later in the Subsystem section. # # Alternatively, the user can specify ClaimAllDevices. All # NVMe devices will be claimed and named Nvme0, Nvme1, etc. # BDF 0000:00:00.0 Nvme0 BDF 0000:0a:00.0 Nvme3 Hi Kiran, The format of the NVMe section changed in the last SPDK release, so that we= could add support for remote NVMe-oF devices as well. Can you try the following instead? [Nvme] TransportID =E2=80=9Ctrtype:PCIe traddr:0000.0a:00.0=E2=80=9D Nvme3 The comment for spdk_nvme_transport_id_parse() in include/spdk/nvme.h descr= ibes the format in more detail, including how to specify NVMe-oF targets. Thanks, -Jim [TargetNode1] TargetName disk2 TargetAlias "Data Disk2" Mapping PortalGroup1 InitiatorGroup1 AuthMethod Auto AuthGroup AuthGroup1 UseDigest Auto LUN0 Nvme3 QueueDepth 64 Thank you Kiran _______________________________________________ SPDK mailing list SPDK(a)lists.01.org https://lists.01.org/mailman/listinfo/spdk _______________________________________________ SPDK mailing list SPDK(a)lists.01.org https://lists.01.org/mailman/listinfo/spdk --===============6011395334366173640== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWwgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIiB4 bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIiB4bWxuczptPSJo dHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA0LzEyL29tbWwiIHhtbG5zPSJo dHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVp dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KPG1l dGEgbmFtZT0iVGl0bGUiIGNvbnRlbnQ9IiI+DQo8bWV0YSBuYW1lPSJLZXl3b3JkcyIgY29udGVu dD0iIj4NCjxtZXRhIG5hbWU9IkdlbmVyYXRvciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUg KGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxlPjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8N CkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6IkNhbWJyaWEgTWF0aCI7DQoJcGFub3NlLTE6MiA0 IDUgMyA1IDQgNiAzIDIgNDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OkRlbmdYaWFuOw0K CXBhbm9zZS0xOjIgMSA2IDAgMyAxIDEgMSAxIDE7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWls eTpDYWxpYnJpOw0KCXBhbm9zZS0xOjIgMTUgNSAyIDIgMiA0IDMgMiA0O30NCkBmb250LWZhY2UN Cgl7Zm9udC1mYW1pbHk6UE1pbmdMaVU7DQoJcGFub3NlLTE6MiAyIDUgMCAwIDAgMCAwIDAgMDt9 DQovKiBTdHlsZSBEZWZpbml0aW9ucyAqLw0KcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2 Lk1zb05vcm1hbA0KCXttYXJnaW46MGluOw0KCW1hcmdpbi1ib3R0b206LjAwMDFwdDsNCglmb250 LXNpemU6MTIuMHB0Ow0KCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30NCmE6bGluaywg c3Bhbi5Nc29IeXBlcmxpbmsNCgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCWNvbG9yOmJsdWU7 DQoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9DQphOnZpc2l0ZWQsIHNwYW4uTXNvSHlwZXJs aW5rRm9sbG93ZWQNCgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCWNvbG9yOnB1cnBsZTsNCgl0 ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30NCnNwYW4uRW1haWxTdHlsZTE3DQoJe21zby1zdHls ZS10eXBlOnBlcnNvbmFsLXJlcGx5Ow0KCWZvbnQtZmFtaWx5OkNhbGlicmk7DQoJY29sb3I6d2lu ZG93dGV4dDt9DQpzcGFuLm1zb0lucw0KCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsNCglt c28tc3R5bGUtbmFtZToiIjsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOw0KCWNvbG9yOnRl YWw7fQ0KLk1zb0NocERlZmF1bHQNCgl7bXNvLXN0eWxlLXR5cGU6ZXhwb3J0LW9ubHk7DQoJZm9u dC1zaXplOjEwLjBwdDt9DQpAcGFnZSBXb3JkU2VjdGlvbjENCgl7c2l6ZTo4LjVpbiAxMS4waW47 DQoJbWFyZ2luOjEuMGluIDEuMGluIDEuMGluIDEuMGluO30NCmRpdi5Xb3JkU2VjdGlvbjENCgl7 cGFnZTpXb3JkU2VjdGlvbjE7fQ0KLS0+PC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5IGJnY29sb3I9 IndoaXRlIiBsYW5nPSJFTi1VUyIgbGluaz0iYmx1ZSIgdmxpbms9InB1cnBsZSI+DQo8ZGl2IGNs YXNzPSJXb3JkU2VjdGlvbjEiPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSI+SGkgS2lyYW4sPG86cD48L286cD48 L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTox MS4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0K PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1m YW1pbHk6Q2FsaWJyaSI+Q2FuIHlvdSBjb25maXJtIHdoaWNoIFNQREsgZ2l0IGNvbW1pdCBJRCB5 b3UgYXJlIHdvcmtpbmcgZnJvbT8mbmJzcDsgU2luY2UgdGhlcmUgaGF2ZSBiZWVuIGNoYW5nZXMg aW4gdGhpcyB0cmFuc3BvcnQgSUQgZm9ybWF0LCBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgcHJvdmlk ZSB5b3UgdGhlIGNvcnJlY3QgZGV0YWlscyBiYXNlZCBvbg0KIHRoZSBTUERLIHZlcnNpb24geW91 IGFyZSB1c2luZy48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48 c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTpDYWxpYnJpIj48bzpwPiZu YnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0i Zm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTpDYWxpYnJpIj5UaGFua3MsPG86cD48L286cD48 L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTox MS4wcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0K PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1m YW1pbHk6Q2FsaWJyaSI+LUppbTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29O b3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmki PjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu IHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OkNhbGlicmkiPjxvOnA+Jm5ic3A7 PC9vOnA+PC9zcGFuPjwvcD4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29s aWQgI0I1QzRERiAxLjBwdDtwYWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj4NCjxwIGNsYXNzPSJN c29Ob3JtYWwiPjxiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDYWxpYnJpO2NvbG9yOmJsYWNr Ij5Gcm9tOiA8L3NwYW4+DQo8L2I+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkNhbGlicmk7Y29s b3I6YmxhY2siPktpcmFuIERpa3NoaXQgJmx0O2tkaWtzaGl0QGNsb3Vkc2ltcGxlLmNvbSZndDs8 YnI+DQo8Yj5EYXRlOiA8L2I+V2VkbmVzZGF5LCBNYXkgMjQsIDIwMTcgYXQgMTA6NTAgUE08YnI+ DQo8Yj5UbzogPC9iPkphbWVzIEhhcnJpcyAmbHQ7amFtZXMuci5oYXJyaXNAaW50ZWwuY29tJmd0 Ozxicj4NCjxiPkNjOiA8L2I+U3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZlbG9wbWVudCBLaXQgJmx0 O3NwZGtAbGlzdHMuMDEub3JnJmd0Ozxicj4NCjxiPlN1YmplY3Q6IDwvYj5SZTogW1NQREtdIE5l ZWQgaGVscCBmb3IgaVNDU0kgY29uZmlndXJhdGlvbiBmb3IgTlZNZSBkaXNjPG86cD48L286cD48 L3NwYW4+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJz cDs8L286cD48L3A+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPkhpIEhhcnJpcywgPG86 cD48L286cD48L3A+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286 cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5JIGRpZCB0cnkgd2l0 aCB0aGUgVHJhbnNwb3J0SUQg4oCcdHJ0eXBlOlBDSWUgdHJhZGRyOjAwMDAuMGE6MDAuMOKAnSBO dm1lMyAmbmJzcDtvcHRpb24gaSBhbSBzdGlsbCBzZWVpbmcgdGhlIHNhbWUgaXNzdWUuJm5ic3A7 PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpw PiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPlRo YW5rIHlvdTxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1h bCI+S2lyYW48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPGRpdj4NCjxibG9ja3F1b3RlIHN0eWxlPSJtYXJn aW4tdG9wOjUuMHB0O21hcmdpbi1ib3R0b206NS4wcHQiPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29O b3JtYWwiPk9uIDI0LU1heS0yMDE3LCBhdCA5OjUwIFBNLCBIYXJyaXMsIEphbWVzIFIgJmx0Ozxh IGhyZWY9Im1haWx0bzpqYW1lcy5yLmhhcnJpc0BpbnRlbC5jb20iPmphbWVzLnIuaGFycmlzQGlu dGVsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXY+DQo8YmxvY2txdW90ZSBzdHls ZT0ibWFyZ2luLXRvcDo1LjBwdDttYXJnaW4tYm90dG9tOjUuMHB0O2ZvbnQtdmFyaWFudC1jYXBz OiBub3JtYWw7b3JwaGFuczogYXV0bzt0ZXh0LWFsaWduOnN0YXJ0O3dpZG93czogYXV0bzstd2Vi a2l0LXRleHQtc2l6ZS1hZGp1c3Q6IGF1dG87LXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4 O3dvcmQtc3BhY2luZzowcHgiPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZTo5LjBwdDtmb250LWZhbWlseTpIZWx2ZXRpY2EiPjxicj4NCk9uIE1heSAyNCwgMjAx NywgYXQgNDoxMCBBTSwgS2lyYW4gRGlrc2hpdCAmbHQ7PGEgaHJlZj0ibWFpbHRvOmtkaWtzaGl0 QGNsb3Vkc2ltcGxlLmNvbSI+a2Rpa3NoaXRAY2xvdWRzaW1wbGUuY29tPC9hPiZndDsgd3JvdGU6 PGJyPg0KPGJyPg0KSGkgQWxsLDxicj4NCjxicj4NCkkgYW0gdHJ5aW5nIHRvIGNvbmZpZ3VyZSBp U0NTSSBmb3IgYSBOVk1lIGRyaXZlIGFuZCBnZXR0aW5nIHRoZSBiZWxvdyBlcnJvcuKAmXMuIEkg aGF2ZSB1bmJvdW5kIHRoZSBOVk1lIGRyaXZlIGZyb20ga2VybmVsIHVzaW5nIHRoZSBzZXR1cC5z aC48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTo5LjBwdDtmb250LWZhbWlseTpQTWluZ0xp VSI+PGJyPg0KPGJyPg0KPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6OS4wcHQ7Zm9udC1m YW1pbHk6SGVsdmV0aWNhIj50Z3Rfbm9kZS5jOiA3MTg6c3Bka19pc2NzaV90Z3Rfbm9kZV9jb25z dHJ1Y3Q6ICoqKkVSUk9SKioqIENvdWxkIG5vdCBjb25zdHJ1Y3QgU0NTSSBkZXZpY2U8L3NwYW4+ PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTo5LjBwdDtmb250LWZhbWlseTpQTWluZ0xpVSI+PGJyPg0K PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6OS4wcHQ7Zm9udC1mYW1pbHk6SGVsdmV0aWNh Ij50Z3Rfbm9kZS5jOiA5ODQ6c3Bka19jZl9hZGRfaXNjc2lfdGd0X25vZGU6ICoqKkVSUk9SKioq IHRndF9ub2RlMTogYWRkX2lzY3NpX3RhcmdldF9ub2RlIGVycm9yPGJyPg0KdGd0X25vZGUuYzox MDEwOnNwZGtfaXNjc2lfaW5pdF90Z3Rfbm9kZXM6ICoqKkVSUk9SKioqIHNwZGtfY2ZfYWRkX2lz Y3NpX3RndF9ub2RlKCkgZmFpbGVkPGJyPg0KaXNjc2lfc3Vic3lzdGVtLmM6IDk2NTpzcGRrX2lz Y3NpX3N1YnN5c3RlbV9pbml0OiAqKipFUlJPUioqKiBzcGRrX2lzY3NpX2luaXRfdGd0X25vZGVz KCkgZmFpbGVkPGJyPg0KYXBwLmM6IDQwNDpzcGRrX2FwcF9pbml0OiAqKipFUlJPUioqKiBzcGRr X3N1YnN5c3RlbV9pbml0KCkgZmFpbGVkPGJyPg0KPGJyPg0KPGJyPg0KPGJyPg0KQmVsb3cgaXMg dGhlIHNlY3Rpb24gb2YgbXkgPGEgaHJlZj0iaHR0cDovL2lzY3NpLmNvbmYuaW4iPmlzY3NpLmNv bmYuaW48L2E+IGZpbGUgZm9yIHJlZmVyZW5jZS48YnI+DQo8YnI+DQojIE5WTWUgY29uZmlndXJh dGlvbiBvcHRpb25zPGJyPg0KW052bWVdPGJyPg0KIyBOVk1lIERldmljZSBXaGl0ZWxpc3Q8YnI+ DQojIFVzZXJzIG1heSBzcGVjaWZ5IHdoaWNoIE5WTWUgZGV2aWNlcyB0byBjbGFpbSBieSB0aGVp ciBQQ0k8YnI+DQojIGRvbWFpbiwgYnVzLCBkZXZpY2UsIGFuZCBmdW5jdGlvbi4gVGhlIGZvcm1h dCBpcyBkZGRkOmJiOmRkLmYsIHdoaWNoIGlzPGJyPg0KIyB0aGUgc2FtZSBmb3JtYXQgZGlzcGxh eWVkIGJ5IGxzcGNpIG9yIGluIC9zeXMvYnVzL3BjaS9kZXZpY2VzLiBUaGUgc2Vjb25kPGJyPg0K IyBhcmd1bWVudCBpcyBhICZxdW90O25hbWUmcXVvdDsgZm9yIHRoZSBkZXZpY2UgdGhhdCBjYW4g YmUgYW55dGhpbmcuIFRoZSBuYW1lPGJyPg0KIyBpcyByZWZlcmVuY2VkIGxhdGVyIGluIHRoZSBT dWJzeXN0ZW0gc2VjdGlvbi48YnI+DQojPGJyPg0KIyBBbHRlcm5hdGl2ZWx5LCB0aGUgdXNlciBj YW4gc3BlY2lmeSBDbGFpbUFsbERldmljZXMuIEFsbDxicj4NCiMgTlZNZSBkZXZpY2VzIHdpbGwg YmUgY2xhaW1lZCBhbmQgbmFtZWQgTnZtZTAsIE52bWUxLCBldGMuPGJyPg0KIyBCREYgMDAwMDow MDowMC4wIE52bWUwPGJyPg0KJm5ic3A7QkRGIDAwMDA6MGE6MDAuMCBOdm1lMzxvOnA+PC9vOnA+ PC9zcGFuPjwvcD4NCjwvYmxvY2txdW90ZT4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0 eWxlPSJmb250LXNpemU6OS4wcHQ7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIj48YnI+DQpIaSBLaXJh biw8YnI+DQo8YnI+DQpUaGUgZm9ybWF0IG9mIHRoZSBOVk1lIHNlY3Rpb24gY2hhbmdlZCBpbiB0 aGUgbGFzdCBTUERLIHJlbGVhc2UsIHNvIHRoYXQgd2UgY291bGQgYWRkIHN1cHBvcnQgZm9yIHJl bW90ZSBOVk1lLW9GIGRldmljZXMgYXMgd2VsbC48YnI+DQo8YnI+DQpDYW4geW91IHRyeSB0aGUg Zm9sbG93aW5nIGluc3RlYWQ/PGJyPg0KPGJyPg0KW052bWVdPGJyPg0KJm5ic3A7VHJhbnNwb3J0 SUQg4oCcdHJ0eXBlOlBDSWUgdHJhZGRyOjAwMDAuMGE6MDAuMOKAnSBOdm1lMzxicj4NCjxicj4N ClRoZSBjb21tZW50IGZvciBzcGRrX252bWVfdHJhbnNwb3J0X2lkX3BhcnNlKCkgaW4gaW5jbHVk ZS9zcGRrL252bWUuaCBkZXNjcmliZXMgdGhlIGZvcm1hdCBpbiBtb3JlIGRldGFpbCwgaW5jbHVk aW5nIGhvdyB0byBzcGVjaWZ5IE5WTWUtb0YgdGFyZ2V0cy48YnI+DQo8YnI+DQpUaGFua3MsPGJy Pg0KPGJyPg0KLUppbTxicj4NCjxiciBzdHlsZT0iZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDt0 ZXh0LWFsaWduOnN0YXJ0Oy13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDt3b3JkLXNwYWNp bmc6MHB4Ij4NCjxicj4NCjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxibG9ja3F1b3RlIHN0eWxl PSJtYXJnaW4tdG9wOjUuMHB0O21hcmdpbi1ib3R0b206NS4wcHQiPg0KPHAgY2xhc3M9Ik1zb05v cm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTo5LjBwdDtmb250LWZhbWlseTpIZWx2ZXRpY2Ei Pjxicj4NCltUYXJnZXROb2RlMV08YnI+DQombmJzcDtUYXJnZXROYW1lIGRpc2syPGJyPg0KJm5i c3A7VGFyZ2V0QWxpYXMgJnF1b3Q7RGF0YSBEaXNrMiZxdW90Ozxicj4NCiZuYnNwO01hcHBpbmcg UG9ydGFsR3JvdXAxIEluaXRpYXRvckdyb3VwMTxicj4NCiZuYnNwO0F1dGhNZXRob2QgQXV0bzxi cj4NCiZuYnNwO0F1dGhHcm91cCBBdXRoR3JvdXAxPGJyPg0KJm5ic3A7VXNlRGlnZXN0IEF1dG88 YnI+DQombmJzcDtMVU4wIE52bWUzPGJyPg0KJm5ic3A7UXVldWVEZXB0aCA2NDxicj4NCjxicj4N Cjxicj4NClRoYW5rIHlvdTxicj4NCktpcmFuPGJyPg0KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX188YnI+DQpTUERLIG1haWxpbmcgbGlzdDxicj4NCjxhIGhy ZWY9Im1haWx0bzpTUERLQGxpc3RzLjAxLm9yZyI+U1BES0BsaXN0cy4wMS5vcmc8L2E+PGJyPg0K PGEgaHJlZj0iaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9zcGRrIj5odHRw czovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3NwZGs8L2E+PG86cD48L286cD48L3Nw YW4+PC9wPg0KPC9ibG9ja3F1b3RlPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9 ImZvbnQtc2l6ZTo5LjBwdDtmb250LWZhbWlseTpIZWx2ZXRpY2EiPjxicj4NCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPg0KU1BESyBtYWlsaW5nIGxp c3Q8YnI+DQo8L3NwYW4+PGEgaHJlZj0ibWFpbHRvOlNQREtAbGlzdHMuMDEub3JnIj48c3BhbiBz dHlsZT0iZm9udC1zaXplOjkuMHB0O2ZvbnQtZmFtaWx5OkhlbHZldGljYSI+U1BES0BsaXN0cy4w MS5vcmc8L3NwYW4+PC9hPjxzcGFuIHN0eWxlPSJmb250LXNpemU6OS4wcHQ7Zm9udC1mYW1pbHk6 SGVsdmV0aWNhIj48YnI+DQo8L3NwYW4+PGEgaHJlZj0iaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFp bG1hbi9saXN0aW5mby9zcGRrIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjkuMHB0O2ZvbnQtZmFt aWx5OkhlbHZldGljYSI+aHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9zcGRr PC9zcGFuPjwvYT48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9ibG9ja3F1b3RlPg0KPC9kaXY+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9k aXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo= --===============6011395334366173640==--