From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============6596743628796658209==" MIME-Version: 1.0 From: Yang, Ziye Subject: Re: [SPDK] SPDK Blobstore support object store? Date: Thu, 31 Aug 2017 23:52:02 +0000 Message-ID: In-Reply-To: BD8438AF-F5C3-4706-9DA3-8FA292D3D1D6@163.com List-ID: To: spdk@lists.01.org --===============6596743628796658209== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi We We, Could you also put this in SPDK trello: https://tr= ello.com/spdk ? Thanks. From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of We We Sent: Friday, September 1, 2017 12:04 AM To: Storage Performance Development Kit Subject: Re: [SPDK] SPDK Blobstore support object store? Hi all, Thank you for your answers. I have submitted the proposal about the blobkv (blobstore object) design (= https://github.com/spdk/spdk/pull/188/files?short_path=3D420ca87#diff-420c= a87f40f0f8170bb68bc5c742b6dc ), please visit it. Regards, Helloway =E5=9C=A8 2017=E5=B9=B48=E6=9C=8831=E6=97=A5=EF=BC=8C=E4=B8=8B=E5=8D=888:16= =EF=BC=8CYang, Ziye > = =E5=86=99=E9=81=93=EF=BC=9A Hi, Currently, SPDK can be integrated with Ceph in the following two ways: 1 SPDK has rbd bdev, thus you can have SPDK iSCSI target which uses= the exported rbd device by Ceph. 2 SPDK can be integrated into bluestore in Ceph, the code is NVMEDEV= ICE.CC/h, located in src/os/bluestore/ folder. However SPDK is not enabled= in Ceph. You need to build with WITH_SPDK=3Don option. And these days, we = are doing some work to make SPDK can be compiled default in Ceph. Also in SPDK for object store support, we do not have a detailed plan now. Best Regards, Ziye Yang From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of We We Sent: Monday, August 28, 2017 9:17 PM To: spdk(a)lists.01.org Subject: [SPDK] SPDK Blobstore support object store? Hi=EF=BC=8C In the source code of SPDk (https://github.com/spdk/spdk/tree/master/lib), = we can find spdk/lib/bdev/ module that means SPDk is able to be in favor of block store and accel= erate ceph block store. However, I don not see anything about object store.= Does SPDK support object store? Is there any plan to do with object store? Could someone can give me the answer? Regards, Helloway _______________________________________________ SPDK mailing list SPDK(a)lists.01.org https://lists.01.org/mailman/listinfo/spdk --===============6596743628796658209== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1nYjIzMTIiPgo8bWV0YSBuYW1lPSJHZW5lcmF0b3Ii IGNvbnRlbnQ9Ik1pY3Jvc29mdCBXb3JkIDE1IChmaWx0ZXJlZCBtZWRpdW0pIj4KPHN0eWxlPjwh LS0KLyogRm9udCBEZWZpbml0aW9ucyAqLwpAZm9udC1mYWNlCgl7Zm9udC1mYW1pbHk6SGVsdmV0 aWNhOwoJcGFub3NlLTE6MiAxMSA2IDQgMiAyIDIgMiAyIDQ7fQpAZm9udC1mYWNlCgl7Zm9udC1m YW1pbHk6y87M5TsKCXBhbm9zZS0xOjIgMSA2IDAgMyAxIDEgMSAxIDE7fQpAZm9udC1mYWNlCgl7 Zm9udC1mYW1pbHk6IkNhbWJyaWEgTWF0aCI7CglwYW5vc2UtMToyIDQgNSAzIDUgNCA2IDMgMiA0 O30KQGZvbnQtZmFjZQoJe2ZvbnQtZmFtaWx5OkNhbGlicmk7CglwYW5vc2UtMToyIDE1IDUgMiAy IDIgNCAzIDIgNDt9CkBmb250LWZhY2UKCXtmb250LWZhbWlseToiU2Vnb2UgVUkiOwoJcGFub3Nl LTE6MiAxMSA1IDIgNCAyIDQgMiAyIDM7fQpAZm9udC1mYWNlCgl7Zm9udC1mYW1pbHk6IlxAy87M 5SI7CglwYW5vc2UtMToyIDEgNiAwIDMgMSAxIDEgMSAxO30KLyogU3R5bGUgRGVmaW5pdGlvbnMg Ki8KcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbAoJe21hcmdpbjowaW47 CgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Cglmb250LXNpemU6MTIuMHB0OwoJZm9udC1mYW1pbHk6 y87M5Tt9CmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsKCXttc28tc3R5bGUtcHJpb3JpdHk6OTk7 Cgljb2xvcjpibHVlOwoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9CmE6dmlzaXRlZCwgc3Bh bi5Nc29IeXBlcmxpbmtGb2xsb3dlZAoJe21zby1zdHlsZS1wcmlvcml0eTo5OTsKCWNvbG9yOnB1 cnBsZTsKCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQpwCgl7bXNvLXN0eWxlLXByaW9yaXR5 Ojk5OwoJbXNvLW1hcmdpbi10b3AtYWx0OmF1dG87CgltYXJnaW4tcmlnaHQ6MGluOwoJbXNvLW1h cmdpbi1ib3R0b20tYWx0OmF1dG87CgltYXJnaW4tbGVmdDowaW47Cglmb250LXNpemU6MTIuMHB0 OwoJZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7fQpzcGFuLmFwcGxlLWNvbnZl cnRlZC1zcGFjZQoJe21zby1zdHlsZS1uYW1lOmFwcGxlLWNvbnZlcnRlZC1zcGFjZTt9CnNwYW4u c2VwYXJhdG9yCgl7bXNvLXN0eWxlLW5hbWU6c2VwYXJhdG9yO30Kc3Bhbi5FbWFpbFN0eWxlMTkK CXttc28tc3R5bGUtdHlwZTpwZXJzb25hbC1yZXBseTsKCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixz YW5zLXNlcmlmOwoJY29sb3I6IzFGNDk3RDt9Ci5Nc29DaHBEZWZhdWx0Cgl7bXNvLXN0eWxlLXR5 cGU6ZXhwb3J0LW9ubHk7Cglmb250LXNpemU6MTAuMHB0O30KQHBhZ2UgV29yZFNlY3Rpb24xCgl7 c2l6ZTo4LjVpbiAxMS4waW47CgltYXJnaW46MS4waW4gMS4yNWluIDEuMGluIDEuMjVpbjt9CmRp di5Xb3JkU2VjdGlvbjEKCXtwYWdlOldvcmRTZWN0aW9uMTt9Ci0tPjwvc3R5bGU+PCEtLVtpZiBn dGUgbXNvIDldPjx4bWw+CjxvOnNoYXBlZGVmYXVsdHMgdjpleHQ9ImVkaXQiIHNwaWRtYXg9IjEw MjYiIC8+CjwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgo8bzpzaGFw ZWxheW91dCB2OmV4dD0iZWRpdCI+CjxvOmlkbWFwIHY6ZXh0PSJlZGl0IiBkYXRhPSIxIiAvPgo8 L286c2hhcGVsYXlvdXQ+PC94bWw+PCFbZW5kaWZdLS0+CjwvaGVhZD4KPGJvZHkgbGFuZz0iRU4t VVMiIGxpbms9ImJsdWUiIHZsaW5rPSJwdXJwbGUiPgo8ZGl2IGNsYXNzPSJXb3JkU2VjdGlvbjEi Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250 LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+SGkg V2UgV2UsPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBz dHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNh bnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgo8cCBj bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWls eTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+Q291bGQgeW91 IGFsc28gcHV0IHRoaXMgaW4gU1BESyB0cmVsbG86Cjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1z aXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29s b3I6IzFGNDk3RCI+PGEgaHJlZj0iaHR0cHM6Ly90cmVsbG8uY29tL3NwZGsiPmh0dHBzOi8vPC9h PjxhIGhyZWY9Imh0dHBzOi8vdHJlbGxvLmNvbS9zcGRrIj50cmVsbG8uY29tL3NwZGs8L2E+ID88 bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJm b250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJp Zjtjb2xvcjojMUY0OTdEIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJN c29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90 O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj5UaGFua3MuPC9zcGFuPjxz cGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVv dDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5 OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj48bzpwPiZuYnNw OzwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxhIG5hbWU9Il9NYWlsRW5k Q29tcG9zZSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7 Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+ PC9zcGFuPjwvYT48L3A+CjxkaXY+CjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6 c29saWQgI0UxRTFFMSAxLjBwdDtwYWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj4KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6 JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmIj5Gcm9tOjwvc3Bhbj48L2I+PHNwYW4gc3R5 bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5z LXNlcmlmIj4gU1BESyBbbWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmddCjxiPk9uIEJl aGFsZiBPZiA8L2I+V2UgV2U8YnI+CjxiPlNlbnQ6PC9iPiBGcmlkYXksIFNlcHRlbWJlciAxLCAy MDE3IDEyOjA0IEFNPGJyPgo8Yj5Ubzo8L2I+IFN0b3JhZ2UgUGVyZm9ybWFuY2UgRGV2ZWxvcG1l bnQgS2l0ICZsdDtzcGRrQGxpc3RzLjAxLm9yZyZndDs8YnI+CjxiPlN1YmplY3Q6PC9iPiBSZTog W1NQREtdIFNQREsgQmxvYnN0b3JlIHN1cHBvcnQgb2JqZWN0IHN0b3JlPzxvOnA+PC9vOnA+PC9z cGFuPjwvcD4KPC9kaXY+CjwvZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwv bzpwPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC41 cHQiPkhpIGFsbCw8L3NwYW4+PG86cD48L286cD48L3A+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3Jt YWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuNXB0Ij5UaGFuayB5b3UgZm9yIHlvdXIgYW5z d2Vycy48L3NwYW4+PG86cD48L286cD48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9y bWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjVwdCI+SSBoYXZlIHN1Ym1pdHRlZCB0aGUg cHJvcG9zYWwgYWJvdXQgJm5ic3A7dGhlIGI8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTox MC41cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UgVUkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjoj MjQyOTJFO2JhY2tncm91bmQ6d2hpdGUiPmxvYmt2IChibG9ic3RvcmUgb2JqZWN0KSBkZXNpZ24m bmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC41cHQiPigmbmJzcDs8L3NwYW4+ PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NwZGsvc3Bkay9wdWxsLzE4OC9maWxlcz9zaG9y dF9wYXRoPTQyMGNhODcjZGlmZi00MjBjYTg3ZjQwZjBmODE3MGJiNjhiYzVjNzQyYjZkYyI+aHR0 cHM6Ly9naXRodWIuY29tL3NwZGsvc3Bkay9wdWxsLzE4OC9maWxlcz9zaG9ydF9wYXRoPTQyMGNh ODcjZGlmZi00MjBjYTg3ZjQwZjBmODE3MGJiNjhiYzVjNzQyYjZkYzwvYT4mbmJzcDs8c3BhbiBz dHlsZT0iZm9udC1zaXplOjEwLjVwdCI+KSwKIHBsZWFzZSB2aXNpdCBpdC48L3NwYW4+PG86cD48 L286cD48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48YnI+ClJlZ2FyZHMs PGJyPgpIZWxsb3dheTxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05v cm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+CjwvZGl2Pgo8ZGl2Pgo8ZGl2Pgo8ZGl2Pgo8Ymxv Y2txdW90ZSBzdHlsZT0ibWFyZ2luLXRvcDo1LjBwdDttYXJnaW4tYm90dG9tOjUuMHB0Ij4KPGRp dj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iWkgtQ04iPtTaPC9zcGFuPiAyMDE3 PHNwYW4gbGFuZz0iWkgtQ04iPsTqPC9zcGFuPjg8c3BhbiBsYW5nPSJaSC1DTiI+1MI8L3NwYW4+ MzE8c3BhbiBsYW5nPSJaSC1DTiI+yNWjrM/Czuc8L3NwYW4+ODoxNjxzcGFuIGxhbmc9IlpILUNO Ij6jrDwvc3Bhbj5ZYW5nLCBaaXllICZsdDs8YSBocmVmPSJtYWlsdG86eml5ZS55YW5nQGludGVs LmNvbSI+eml5ZS55YW5nQGludGVsLmNvbTwvYT4mZ3Q7CjxzcGFuIGxhbmc9IlpILUNOIj7QtLXA o7o8L3NwYW4+PG86cD48L286cD48L3A+CjwvZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpw PiZuYnNwOzwvbzpwPjwvcD4KPGRpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90Oyxz YW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPkhpLDwvc3Bhbj48bzpwPjwvbzpwPjwvcD4KPC9kaXY+ CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0 O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdE Ij4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNv Tm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtD YWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+Q3VycmVudGx5LCBTUERLIGNh biBiZSBpbnRlZ3JhdGVkIHdpdGggQ2VwaCBpbiB0aGUgZm9sbG93aW5nIHR3byB3YXlzOjwvc3Bh bj48bzpwPjwvbzpwPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu IHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDss c2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+Cjwv ZGl2Pgo8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj4KPHAgY2xhc3M9Ik1zb05vcm1hbCIg c3R5bGU9InRleHQtaW5kZW50Oi0uMjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7 Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0Qi PjE8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTo3LjBwdDtmb250LWZhbWlseTomcXVvdDtU aW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7Y29sb3I6IzFGNDk3RCI+Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+ Jm5ic3A7PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZh bWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+U1BESwog aGFzJm5ic3A7IHJiZCBiZGV2LCZuYnNwOyB0aHVzIHlvdSBjYW4gaGF2ZSBTUERLIGlTQ1NJIHRh cmdldCB3aGljaCB1c2VzIHRoZSBleHBvcnRlZCByYmQgZGV2aWNlIGJ5IENlcGguPC9zcGFuPjxv OnA+PC9vOnA+PC9wPgo8L2Rpdj4KPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+CjxwIGNs YXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWluZGVudDotLjI1aW4iPjxzcGFuIHN0eWxlPSJm b250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJp Zjtjb2xvcjojMUY0OTdEIj4yPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6Ny4wcHQ7Zm9u dC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmO2NvbG9yOiMxRjQ5N0Qi PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJhcHBsZS1j b252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9y OiMxRjQ5N0QiPlNQREsKICZuYnNwO2NhbiBiZSBpbnRlZ3JhdGVkIGludG8gYmx1ZXN0b3JlIGlu IENlcGgsIHRoZSBjb2RlIGlzIE5WTUVERVZJQ0UuQ0MvaCwgbG9jYXRlZCBpbiBzcmMvb3MvYmx1 ZXN0b3JlLyBmb2xkZXIuIEhvd2V2ZXImbmJzcDsgU1BESyBpcyBub3QgZW5hYmxlZCBpbiBDZXBo LiBZb3UgbmVlZCB0byBidWlsZCB3aXRoIFdJVEhfU1BESz1vbiBvcHRpb24uIEFuZCB0aGVzZSBk YXlzLCB3ZSBhcmUgZG9pbmcgc29tZSB3b3JrIHRvIG1ha2UgU1BESyBjYW4gYmUgY29tcGlsZWQK IGRlZmF1bHQgaW4gQ2VwaC48L3NwYW4+PG86cD48L286cD48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBj bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWls eTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+Jm5ic3A7PC9z cGFuPjxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90 OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPkFsc28gaW4gU1BESyBmb3Igb2JqZWN0IHN0b3Jl IHN1cHBvcnQsICZuYnNwO3dlIGRvIG5vdCBoYXZlIGEgZGV0YWlsZWQgcGxhbiBub3cuPC9zcGFu PjxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90Oyxz YW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPiZuYnNwOzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4KPC9k aXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAu MHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0 OTdEIj5CZXN0IFJlZ2FyZHMsPC9zcGFuPjxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPGRpdj4KPHAg Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1p bHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPlppeWUgWWFu Zzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwi PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkm cXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj4mbmJzcDs8L3NwYW4+PG86cD48L286cD48 L3A+CjwvZGl2Pgo8ZGl2Pgo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9wOnNvbGlk ICNFMUUxRTEgMS4wcHQ7cGFkZGluZzozLjBwdCAwaW4gMGluIDBpbiI+CjxkaXY+CjxwIGNsYXNz PSJNc29Ob3JtYWwiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5 OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZiI+RnJvbTo8L3NwYW4+PC9iPjxzcGFuIGNs YXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0 O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZiI+Jm5ic3A7PC9zcGFu Pjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtD YWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPlNQREsKIFs8YSBocmVmPSJtYWlsdG86c3Bkay1ib3Vu Y2VzQGxpc3RzLjAxLm9yZyI+bWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmc8L2E+XTxz cGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj48Yj5PbiBCZWhh bGYgT2Y8c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+PC9i PldlIFdlPGJyPgo8Yj5TZW50OjwvYj48c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNl Ij4mbmJzcDs8L3NwYW4+TW9uZGF5LCBBdWd1c3QgMjgsIDIwMTcgOToxNyBQTTxicj4KPGI+VG86 PC9iPjxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj48YSBo cmVmPSJtYWlsdG86c3Bka0BsaXN0cy4wMS5vcmciPnNwZGtAbGlzdHMuMDEub3JnPC9hPjxicj4K PGI+U3ViamVjdDo8L2I+PHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7 PC9zcGFuPltTUERLXSBTUERLIEJsb2JzdG9yZSBzdXBwb3J0IG9iamVjdCBzdG9yZT88L3NwYW4+ PG86cD48L286cD48L3A+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29O b3JtYWwiPiZuYnNwOzxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPGRpdj4KPGRpdj4KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC41cHQ7Zm9udC1mYW1pbHk6JnF1 b3Q7U2Vnb2UgVUkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMjQyOTJFO2JhY2tncm91bmQ6d2hp dGUiPkhpPC9zcGFuPjxzcGFuIGxhbmc9IlpILUNOIiBzdHlsZT0iZm9udC1zaXplOjEwLjVwdDtj b2xvcjojMjQyOTJFO2JhY2tncm91bmQ6d2hpdGUiPqOsPC9zcGFuPjxvOnA+PC9vOnA+PC9wPgo8 L2Rpdj4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250 LXNpemU6MTAuNXB0O2ZvbnQtZmFtaWx5OiZxdW90O1NlZ29lIFVJJnF1b3Q7LHNhbnMtc2VyaWY7 Y29sb3I6IzI0MjkyRTtiYWNrZ3JvdW5kOndoaXRlIj5JbiB0aGUgc291cmNlIGNvZGUgb2YgU1BE ayAoPC9zcGFuPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zcGRrL3NwZGsvdHJlZS9tYXN0 ZXIvbGliIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjVwdDtmb250LWZhbWlseTomcXVvdDtT ZWdvZSBVSSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOnB1cnBsZTtiYWNrZ3JvdW5kOndoaXRlIj5o dHRwczovL2dpdGh1Yi5jb20vc3Bkay9zcGRrL3RyZWUvbWFzdGVyL2xpYjwvc3Bhbj48L2E+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZToxMC41cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UgVUkmcXVv dDssc2Fucy1zZXJpZjtjb2xvcjojMjQyOTJFO2JhY2tncm91bmQ6d2hpdGUiPiksCiB3ZSBjYW4g ZmluZCZuYnNwOzwvc3Bhbj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc3Bkay9zcGRrIj48 Yj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UgVUkmcXVvdDssc2Fucy1zZXJp Zjtjb2xvcjojMDM2NkQ2O3RleHQtZGVjb3JhdGlvbjpub25lIj5zcGRrPC9zcGFuPjwvYj48L2E+ PHNwYW4gY2xhc3M9InNlcGFyYXRvciI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O1Nl Z29lIFVJJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzU4NjA2OTtiYWNrZ3JvdW5kOndoaXRlIj4v PC9zcGFuPjwvc3Bhbj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc3Bkay9zcGRrL3RyZWUv bWFzdGVyL2xpYiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O1NlZ29lIFVJJnF1b3Q7 LHNhbnMtc2VyaWY7Y29sb3I6IzAzNjZENjt0ZXh0LWRlY29yYXRpb246bm9uZSI+bGliPC9zcGFu PjwvYT48c3BhbiBjbGFzcz0ic2VwYXJhdG9yIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1 b3Q7U2Vnb2UgVUkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojNTg2MDY5O2JhY2tncm91bmQ6d2hp dGUiPi88L3NwYW4+PC9zcGFuPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zcGRrL3NwZGsv dHJlZS9tYXN0ZXIvbGliL2JkZXYiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtTZWdv ZSBVSSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMwMzY2RDY7dGV4dC1kZWNvcmF0aW9uOm5vbmUi PmJkZXY8L3NwYW4+PC9hPjxzcGFuIGNsYXNzPSJzZXBhcmF0b3IiPjxzcGFuIHN0eWxlPSJmb250 LWZhbWlseTomcXVvdDtTZWdvZSBVSSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiM1ODYwNjk7YmFj a2dyb3VuZDp3aGl0ZSI+LwogbW9kdWxlIHRoYXQgbWVhbnMmbmJzcDs8L3NwYW4+PC9zcGFuPjxz cGFuIHN0eWxlPSJmb250LXNpemU6MTAuNXB0O2ZvbnQtZmFtaWx5OiZxdW90O1NlZ29lIFVJJnF1 b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzI0MjkyRTtiYWNrZ3JvdW5kOndoaXRlIj4mbmJzcDtTUERr IGlzIGFibGUgdG8gYmUgaW4gZmF2b3Igb2YgYmxvY2sgc3RvcmUgYW5kIGFjY2VsZXJhdGUgY2Vw aCBibG9jayBzdG9yZS4gSG93ZXZlciwgSSBkb24gbm90IHNlZSBhbnl0aGluZyBhYm91dCBvYmpl Y3Qgc3RvcmUuCiBEb2VzIFNQREsgc3VwcG9ydCBvYmplY3Qgc3RvcmU/IElzIHRoZXJlIGFueSBw bGFuIHRvIGRvIHdpdGggb2JqZWN0IHN0b3JlPzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4KPC9kaXY+ CjxkaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 MTAuNXB0O2ZvbnQtZmFtaWx5OiZxdW90O1NlZ29lIFVJJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6 IzI0MjkyRTtiYWNrZ3JvdW5kOndoaXRlIj48YnI+Cjxicj4KPGJyPgo8L3NwYW4+PG86cD48L286 cD48L3A+CjwvZGl2Pgo8L2Rpdj4KPGRpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZToxMC41cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UgVUkmcXVv dDssc2Fucy1zZXJpZjtjb2xvcjojMjQyOTJFO2JhY2tncm91bmQ6d2hpdGUiPkNvdWxkIHNvbWVv bmUgY2FuIGdpdmUgbWUgdGhlIGFuc3dlcj88L3NwYW4+PG86cD48L286cD48L3A+CjwvZGl2Pgo8 L2Rpdj4KPGRpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jm5ic3A7PG86cD48L286cD48 L3A+CjwvZGl2Pgo8L2Rpdj4KPGRpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZToxMC41cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UgVUkmcXVvdDss c2Fucy1zZXJpZjtjb2xvcjojMjQyOTJFIj5SZWdhcmRzLDwvc3Bhbj48bzpwPjwvbzpwPjwvcD4K PC9kaXY+CjwvZGl2Pgo8ZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHls ZT0iZm9udC1zaXplOjEwLjVwdDtmb250LWZhbWlseTomcXVvdDtTZWdvZSBVSSZxdW90OyxzYW5z LXNlcmlmO2NvbG9yOiMyNDI5MkUiPkhlbGxvd2F5PC9zcGFuPjxvOnA+PC9vOnA+PC9wPgo8L2Rp dj4KPC9kaXY+CjxkaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPiZuYnNwOzxvOnA+PC9v OnA+PC9wPgo8L2Rpdj4KPC9kaXY+CjxkaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPiZu YnNwOzxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPC9kaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz cGFuIHN0eWxlPSJmb250LXNpemU6OS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7SGVsdmV0aWNhJnF1 b3Q7LHNhbnMtc2VyaWYiPl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fPGJyPgpTUERLIG1haWxpbmcgbGlzdDxicj4KPC9zcGFuPjxhIGhyZWY9Im1haWx0bzpT UERLQGxpc3RzLjAxLm9yZyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTo5LjBwdDtmb250LWZhbWls eTomcXVvdDtIZWx2ZXRpY2EmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpwdXJwbGUiPlNQREtAbGlz dHMuMDEub3JnPC9zcGFuPjwvYT48c3BhbiBzdHlsZT0iZm9udC1zaXplOjkuMHB0O2ZvbnQtZmFt aWx5OiZxdW90O0hlbHZldGljYSZxdW90OyxzYW5zLXNlcmlmIj48YnI+Cjwvc3Bhbj48YSBocmVm PSJodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3NwZGsiPjxzcGFuIHN0eWxl PSJmb250LXNpemU6OS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7SGVsdmV0aWNhJnF1b3Q7LHNhbnMt c2VyaWY7Y29sb3I6cHVycGxlIj5odHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZv L3NwZGs8L3NwYW4+PC9hPjxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPC9ibG9ja3F1b3RlPgo8L2Rp dj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+CjwvZGl2Pgo8L2Rp dj4KPC9kaXY+CjwvYm9keT4KPC9odG1sPgo= --===============6596743628796658209==--