From chuan.liao at hp.com Thu Feb 20 04:33:11 2014 Content-Type: multipart/mixed; boundary="===============0408895227768256892==" MIME-Version: 1.0 From: Liao, Chuan (Jason Liao, HPservers-Core-OE-PSC) To: devel at ovirt.org Subject: [Engine-devel] which data structure is better Date: Thu, 20 Feb 2014 09:31:16 +0000 Message-ID: --===============0408895227768256892== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable --_000_B63C858E777679458338A30A991BB524015B0A84G1W3780americas_ Content-Type: text/plain; charset=3D"us-ascii" Content-Transfer-Encoding: quoted-printable Hi All, I am Jason Liao from HP who are in charge of NUMA and Virtual NUMA feature. Now I have some concept about the host NUMA topology data structure on engi= =3D ne core We have VDS, VDSDynamic, VDSStatic, VdsStatistics object on engine core. And we have NUMA topology information: List numaNodeList NumaNode String ID = =3D # update from GetCapabilitiesVDSCommand List cpuList # update = =3D from GetCapabilitiesVDSCommand Int totalMem # update from GetCapabi= =3D litiesVDSCommand Int freeMem # u= =3D pdate from GetStatsVDSCommand A. Add this data structure into VDSDynamic We should change the GetStatsVDSCommand update the VDSDynamic data. B. Add this data structure into VDS, and build the data structure from= =3D VDSDynamic, VdsStatistics I prefer B. does anybody have some comments? Best Regards, Jason Liao --_000_B63C858E777679458338A30A991BB524015B0A84G1W3780americas_ Content-Type: text/html; charset=3D"us-ascii" Content-Transfer-Encoding: quoted-printable

Hi All,

 

I am Jason Liao from HP who are in = =3D charge of NUMA and Virtual NUMA feature.

 

Now I have some concept about the h= =3D ost NUMA topology data structure on engine core

 

We have VDS, VDSDynamic, VDSStatic,= =3D VdsStatistics object on engine core.

 

And we have NUMA topology informati= =3D on:

List<NumaNode> numaNodeList

      = =3D ;   NumaNode

      = =3D ;            String ID&nb= =3D sp;            = =3D             &nb= =3D sp;            = =3D            # update from = =3D GetCapabilitiesVDSCommand

      = =3D ;             L= =3D ist<String> cpuList        &n= =3D bsp;            = =3D ;      # update from GetCapabilitiesVDSCommand

= Int totalMem        &n= =3D bsp;            = =3D ;            &n= =3D bsp;      # update from GetCapabilitiesVDSCommand<= =3D o:p>

      = =3D ;             I= =3D nt freeMem           = =3D ;            &n= =3D bsp;            = =3D ;      # update from GetStatsVDSCommand= =3D

      = =3D ;            

A.<= sp=3D an style=3D3D"font:7.0pt "Times New Roman"">   &nb= sp=3D ;  Add this data structure int= =3D o VDSDynamic

<= span=3D lang=3D3D"EN-US" style=3D3D"font-family:"HP Simplified","sa= ns-s=3D erif"">We should change the GetStatsVDSCommand update the VDSDynamic d= =3D ata.

B.<= sp=3D an style=3D3D"font:7.0pt "Times New Roman"">   &nb= sp=3D ;  Add this data structure int= =3D o VDS, and build the data structure from VDSDynamic, VdsStatistics

=  

= I =3D prefer B. does anybody have some comments?

 

Best= =3D Regards,
Jason Liao= =3D

 

--_000_B63C858E777679458338A30A991BB524015B0A84G1W3780americas_-- --===============0408895227768256892== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS1fMDAwX0I2M0M4NThFNzc3Njc5NDU4MzM4QTMwQTk5MUJCNTI0MDE1QjBBODRHMVczNzgwYW1l cmljYXNfCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiCkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKCkhpIEFsbCwKCkkgYW0gSmFz b24gTGlhbyBmcm9tIEhQIHdobyBhcmUgaW4gY2hhcmdlIG9mIE5VTUEgYW5kIFZpcnR1YWwgTlVN QSBmZWF0dXJlLgoKTm93IEkgaGF2ZSBzb21lIGNvbmNlcHQgYWJvdXQgdGhlIGhvc3QgTlVNQSB0 b3BvbG9neSBkYXRhIHN0cnVjdHVyZSBvbiBlbmdpPQpuZSBjb3JlCgpXZSBoYXZlIFZEUywgVkRT RHluYW1pYywgVkRTU3RhdGljLCBWZHNTdGF0aXN0aWNzIG9iamVjdCBvbiBlbmdpbmUgY29yZS4K CkFuZCB3ZSBoYXZlIE5VTUEgdG9wb2xvZ3kgaW5mb3JtYXRpb246Ckxpc3Q8TnVtYU5vZGU+IG51 bWFOb2RlTGlzdAogICAgICAgICBOdW1hTm9kZQogICAgICAgICAgICAgICAgICBTdHJpbmcgSUQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9CiAjIHVwZGF0 ZSBmcm9tIEdldENhcGFiaWxpdGllc1ZEU0NvbW1hbmQKICAgICAgICAgICAgICAgICAgIExpc3Q8 U3RyaW5nPiBjcHVMaXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1cGRhdGUgPQpmcm9t IEdldENhcGFiaWxpdGllc1ZEU0NvbW1hbmQKSW50IHRvdGFsTWVtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgdXBkYXRlIGZyb20gR2V0Q2FwYWJpPQpsaXRpZXNWRFND b21tYW5kCiAgICAgICAgICAgICAgICAgICBJbnQgZnJlZU1lbSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgdT0KcGRhdGUgZnJvbSBHZXRTdGF0c1ZEU0NvbW1hbmQK CgpBLiAgICAgIEFkZCB0aGlzIGRhdGEgc3RydWN0dXJlIGludG8gVkRTRHluYW1pYwpXZSBzaG91 bGQgY2hhbmdlIHRoZSBHZXRTdGF0c1ZEU0NvbW1hbmQgdXBkYXRlIHRoZSBWRFNEeW5hbWljIGRh dGEuCgpCLiAgICAgIEFkZCB0aGlzIGRhdGEgc3RydWN0dXJlIGludG8gVkRTLCBhbmQgYnVpbGQg dGhlIGRhdGEgc3RydWN0dXJlIGZyb209CiBWRFNEeW5hbWljLCBWZHNTdGF0aXN0aWNzCgoKCkkg cHJlZmVyIEIuIGRvZXMgYW55Ym9keSBoYXZlIHNvbWUgY29tbWVudHM/CgpCZXN0IFJlZ2FyZHMs Ckphc29uIExpYW8KCgotLV8wMDBfQjYzQzg1OEU3Nzc2Nzk0NTgzMzhBMzBBOTkxQkI1MjQwMTVC MEE4NEcxVzM3ODBhbWVyaWNhc18KQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9InVz LWFzY2lpIgpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlCgo8aHRt bCB4bWxuczp2PTNEInVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206dm1sIiB4bWxuczpvPTNEInVy bjpzY2hlbWFzLW1pY3I9Cm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIiB4bWxuczp3PTNEInVybjpz Y2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOndvcmQiID0KeG1sbnM6bT0zRCJodHRwOi8vc2No ZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA0LzEyL29tbWwiIHhtbG5zPTNEImh0dHA6PQov L3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MCI+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PTNEIkNv bnRlbnQtVHlwZSIgY29udGVudD0zRCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9M0R1cy1hc2NpaSI9Cj4K PG1ldGEgbmFtZT0zRCJHZW5lcmF0b3IiIGNvbnRlbnQ9M0QiTWljcm9zb2Z0IFdvcmQgMTUgKGZp bHRlcmVkIG1lZGl1bSkiPgo8c3R5bGU+PCEtLQovKiBGb250IERlZmluaXRpb25zICovCkBmb250 LWZhY2UKCXtmb250LWZhbWlseTpTaW1TdW47CglwYW5vc2UtMToyIDEgNiAwIDMgMSAxIDEgMSAx O30KQGZvbnQtZmFjZQoJe2ZvbnQtZmFtaWx5OiJDYW1icmlhIE1hdGgiOwoJcGFub3NlLTE6MiA0 IDUgMyA1IDQgNiAzIDIgNDt9CkBmb250LWZhY2UKCXtmb250LWZhbWlseTpDYWxpYnJpOwoJcGFu b3NlLTE6MiAxNSA1IDIgMiAyIDQgMyAyIDQ7fQpAZm9udC1mYWNlCgl7Zm9udC1mYW1pbHk6IkhQ IFNpbXBsaWZpZWQiOwoJcGFub3NlLTE6MiAxMSA2IDQgMiAyIDQgMiAyIDQ7fQpAZm9udC1mYWNl Cgl7Zm9udC1mYW1pbHk6IllhSGVpIENvbnNvbGFzIEh5YnJpZCI7CglwYW5vc2UtMToyIDExIDUg OSAyIDIgNCAyIDIgNDt9CkBmb250LWZhY2UKCXtmb250LWZhbWlseTpTaW1TdW47CglwYW5vc2Ut MToyIDEgNiAwIDMgMSAxIDEgMSAxO30KQGZvbnQtZmFjZQoJe2ZvbnQtZmFtaWx5OiJcQFlhSGVp IENvbnNvbGFzIEh5YnJpZCI7CglwYW5vc2UtMToyIDExIDUgOSAyIDIgNCAyIDIgNDt9Ci8qIFN0 eWxlIERlZmluaXRpb25zICovCnAuTXNvTm9ybWFsLCBsaS5Nc29Ob3JtYWwsIGRpdi5Nc29Ob3Jt YWwKCXttYXJnaW46MGNtOwoJbWFyZ2luLWJvdHRvbTouMDAwMXB0OwoJdGV4dC1hbGlnbjpqdXN0 aWZ5OwoJdGV4dC1qdXN0aWZ5OmludGVyLWlkZW9ncmFwaDsKCWZvbnQtc2l6ZToxMC41cHQ7Cglm b250LWZhbWlseToiQ2FsaWJyaSIsInNhbnMtc2VyaWYiO30KYTpsaW5rLCBzcGFuLk1zb0h5cGVy bGluawoJe21zby1zdHlsZS1wcmlvcml0eTo5OTsKCWNvbG9yOiMwNTYzQzE7Cgl0ZXh0LWRlY29y YXRpb246dW5kZXJsaW5lO30KYTp2aXNpdGVkLCBzcGFuLk1zb0h5cGVybGlua0ZvbGxvd2VkCgl7 bXNvLXN0eWxlLXByaW9yaXR5Ojk5OwoJY29sb3I6Izk1NEY3MjsKCXRleHQtZGVjb3JhdGlvbjp1 bmRlcmxpbmU7fQpwLk1zb0xpc3RQYXJhZ3JhcGgsIGxpLk1zb0xpc3RQYXJhZ3JhcGgsIGRpdi5N c29MaXN0UGFyYWdyYXBoCgl7bXNvLXN0eWxlLXByaW9yaXR5OjM0OwoJbWFyZ2luOjBjbTsKCW1h cmdpbi1ib3R0b206LjAwMDFwdDsKCXRleHQtYWxpZ246anVzdGlmeTsKCXRleHQtanVzdGlmeTpp bnRlci1pZGVvZ3JhcGg7Cgl0ZXh0LWluZGVudDoyMS4wcHQ7Cglmb250LXNpemU6MTAuNXB0OwoJ Zm9udC1mYW1pbHk6IkNhbGlicmkiLCJzYW5zLXNlcmlmIjt9CnNwYW4uRW1haWxTdHlsZTE3Cgl7 bXNvLXN0eWxlLXR5cGU6cGVyc29uYWwtY29tcG9zZTsKCWZvbnQtZmFtaWx5OiJIUCBTaW1wbGlm aWVkIiwic2Fucy1zZXJpZiI7Cgljb2xvcjp3aW5kb3d0ZXh0O30KLk1zb0NocERlZmF1bHQKCXtt c28tc3R5bGUtdHlwZTpleHBvcnQtb25seTt9Ci8qIFBhZ2UgRGVmaW5pdGlvbnMgKi8KQHBhZ2Ug V29yZFNlY3Rpb24xCgl7c2l6ZTo2MTIuMHB0IDc5Mi4wcHQ7CgltYXJnaW46NzIuMHB0IDkwLjBw dCA3Mi4wcHQgOTAuMHB0O30KZGl2LldvcmRTZWN0aW9uMQoJe3BhZ2U6V29yZFNlY3Rpb24xO30K LyogTGlzdCBEZWZpbml0aW9ucyAqLwpAbGlzdCBsMAoJe21zby1saXN0LWlkOjM4NTY4MzI5NjsK CW1zby1saXN0LXR5cGU6aHlicmlkOwoJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOjc3NDUzNTEzOCA1 NjcwMTg4NTggNjc2OTg3MTMgNjc2OTg3MTUgNjc2OTg3MDMgNjc2OTg9CjcxMyA2NzY5ODcxNSA2 NzY5ODcwMyA2NzY5ODcxMyA2NzY5ODcxNTt9CkBsaXN0IGwwOmxldmVsMQoJe21zby1sZXZlbC1u dW1iZXItZm9ybWF0OmFscGhhLXVwcGVyOwoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7Cgltc28t bGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CgltYXJnaW4tbGVmdDoxOC4wcHQ7Cgl0ZXh0LWlu ZGVudDotMTguMHB0O30KQGxpc3QgbDA6bGV2ZWwyCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6 YWxwaGEtbG93ZXI7Cgltc28tbGV2ZWwtdGV4dDoiJTJcKSI7Cgltc28tbGV2ZWwtdGFiLXN0b3A6 bm9uZTsKCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKCW1hcmdpbi1sZWZ0OjQyLjBw dDsKCXRleHQtaW5kZW50Oi0yMS4wcHQ7fQpAbGlzdCBsMDpsZXZlbDMKCXttc28tbGV2ZWwtbnVt YmVyLWZvcm1hdDpyb21hbi1sb3dlcjsKCW1zby1sZXZlbC10YWItc3RvcDpub25lOwoJbXNvLWxl dmVsLW51bWJlci1wb3NpdGlvbjpyaWdodDsKCW1hcmdpbi1sZWZ0OjYzLjBwdDsKCXRleHQtaW5k ZW50Oi0yMS4wcHQ7fQpAbGlzdCBsMDpsZXZlbDQKCXttc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsK CW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKCW1hcmdpbi1sZWZ0Ojg0LjBwdDsKCXRl eHQtaW5kZW50Oi0yMS4wcHQ7fQpAbGlzdCBsMDpsZXZlbDUKCXttc28tbGV2ZWwtbnVtYmVyLWZv cm1hdDphbHBoYS1sb3dlcjsKCW1zby1sZXZlbC10ZXh0OiIlNVwpIjsKCW1zby1sZXZlbC10YWIt c3RvcDpub25lOwoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwoJbWFyZ2luLWxlZnQ6 MTA1LjBwdDsKCXRleHQtaW5kZW50Oi0yMS4wcHQ7fQpAbGlzdCBsMDpsZXZlbDYKCXttc28tbGV2 ZWwtbnVtYmVyLWZvcm1hdDpyb21hbi1sb3dlcjsKCW1zby1sZXZlbC10YWItc3RvcDpub25lOwoJ bXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpyaWdodDsKCW1hcmdpbi1sZWZ0OjEyNi4wcHQ7Cgl0 ZXh0LWluZGVudDotMjEuMHB0O30KQGxpc3QgbDA6bGV2ZWw3Cgl7bXNvLWxldmVsLXRhYi1zdG9w Om5vbmU7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CgltYXJnaW4tbGVmdDoxNDcu MHB0OwoJdGV4dC1pbmRlbnQ6LTIxLjBwdDt9CkBsaXN0IGwwOmxldmVsOAoJe21zby1sZXZlbC1u dW1iZXItZm9ybWF0OmFscGhhLWxvd2VyOwoJbXNvLWxldmVsLXRleHQ6IiU4XCkiOwoJbXNvLWxl dmVsLXRhYi1zdG9wOm5vbmU7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CgltYXJn aW4tbGVmdDoxNjguMHB0OwoJdGV4dC1pbmRlbnQ6LTIxLjBwdDt9CkBsaXN0IGwwOmxldmVsOQoJ e21zby1sZXZlbC1udW1iZXItZm9ybWF0OnJvbWFuLWxvd2VyOwoJbXNvLWxldmVsLXRhYi1zdG9w Om5vbmU7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOnJpZ2h0OwoJbWFyZ2luLWxlZnQ6MTg5 LjBwdDsKCXRleHQtaW5kZW50Oi0yMS4wcHQ7fQpvbAoJe21hcmdpbi1ib3R0b206MGNtO30KdWwK CXttYXJnaW4tYm90dG9tOjBjbTt9Ci0tPjwvc3R5bGU+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+ CjxvOnNoYXBlZGVmYXVsdHMgdjpleHQ9M0QiZWRpdCIgc3BpZG1heD0zRCIxMDI2IiAvPgo8L3ht bD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KPG86c2hhcGVsYXlvdXQgdjpl eHQ9M0QiZWRpdCI+CjxvOmlkbWFwIHY6ZXh0PTNEImVkaXQiIGRhdGE9M0QiMSIgLz4KPC9vOnNo YXBlbGF5b3V0PjwveG1sPjwhW2VuZGlmXS0tPgo8L2hlYWQ+Cjxib2R5IGxhbmc9M0QiWkgtQ04i IGxpbms9M0QiIzA1NjNDMSIgdmxpbms9M0QiIzk1NEY3MiIgc3R5bGU9M0QidGV4dC1qdXN0aT0K ZnktdHJpbTpwdW5jdHVhdGlvbiI+CjxkaXYgY2xhc3M9M0QiV29yZFNlY3Rpb24xIj4KPHAgY2xh c3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIiBzdHlsZT0zRCJmb250LWZhbWls eTomcXVvdDtIUCBTPQppbXBsaWZpZWQmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+SGkg QWxsLDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBs YW5nPTNEIkVOLVVTIiBzdHlsZT0zRCJmb250LWZhbWlseTomcXVvdDtIUCBTPQppbXBsaWZpZWQm cXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9w Pgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiIHN0eWxlPTNEImZv bnQtZmFtaWx5OiZxdW90O0hQIFM9CmltcGxpZmllZCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1 b3Q7Ij5JIGFtIEphc29uIExpYW8gZnJvbSBIUCB3aG8gYXJlIGluID0KY2hhcmdlIG9mIE5VTUEg YW5kIFZpcnR1YWwgTlVNQSBmZWF0dXJlLjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9 M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIiBzdHlsZT0zRCJmb250LWZhbWlseTom cXVvdDtIUCBTPQppbXBsaWZpZWQmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+PG86cD4m bmJzcDs8L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9 M0QiRU4tVVMiIHN0eWxlPTNEImZvbnQtZmFtaWx5OiZxdW90O0hQIFM9CmltcGxpZmllZCZxdW90 OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij5Ob3cgSSBoYXZlIHNvbWUgY29uY2VwdCBhYm91dCB0 aGUgaD0Kb3N0IE5VTUEgdG9wb2xvZ3kgZGF0YSBzdHJ1Y3R1cmUgb24gZW5naW5lIGNvcmU8bzpw PjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNwYW4gbGFuZz0zRCJF Ti1VUyIgc3R5bGU9M0QiZm9udC1mYW1pbHk6JnF1b3Q7SFAgUz0KaW1wbGlmaWVkJnF1b3Q7LCZx dW90O3NhbnMtc2VyaWYmcXVvdDsiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xh c3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIiBzdHlsZT0zRCJmb250LWZhbWls eTomcXVvdDtIUCBTPQppbXBsaWZpZWQmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+V2Ug aGF2ZSBWRFMsIFZEU0R5bmFtaWMsIFZEU1N0YXRpYyw9CiBWZHNTdGF0aXN0aWNzIG9iamVjdCBv biBlbmdpbmUgY29yZS48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1h bCI+PHNwYW4gbGFuZz0zRCJFTi1VUyIgc3R5bGU9M0QiZm9udC1mYW1pbHk6JnF1b3Q7SFAgUz0K aW1wbGlmaWVkJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPjxvOnA+Jm5ic3A7PC9vOnA+ PC9zcGFuPjwvcD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIiBz dHlsZT0zRCJmb250LWZhbWlseTomcXVvdDtIUCBTPQppbXBsaWZpZWQmcXVvdDssJnF1b3Q7c2Fu cy1zZXJpZiZxdW90OyI+QW5kIHdlIGhhdmUgTlVNQSB0b3BvbG9neSBpbmZvcm1hdGk9Cm9uOjxv OnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNE IkVOLVVTIiBzdHlsZT0zRCJmb250LWZhbWlseTomcXVvdDtIUCBTPQppbXBsaWZpZWQmcXVvdDss JnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+TGlzdCZsdDtOdW1hTm9kZSZndDsgbnVtYU5vZGVMaXN0 PG89CjpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNwYW4gbGFu Zz0zRCJFTi1VUyIgc3R5bGU9M0QiZm9udC1mYW1pbHk6JnF1b3Q7SFAgUz0KaW1wbGlmaWVkJnF1 b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwPQo7Jm5ic3A7Jm5ic3A7IE51bWFOb2RlPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBj bGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiIHN0eWxlPTNEImZvbnQtZmFt aWx5OiZxdW90O0hQIFM9CmltcGxpZmllZCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij4m bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcD0KOyZuYnNwOyZuYnNwOyAmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgU3RyaW5nIElEJm5iPQpz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDs9CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYj0Kc3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 PQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgIyB1cGRhdGUgZnJvbSA9CkdldENhcGFiaWxpdGllc1ZEU0NvbW1hbmQ8bzpwPjwvbzpw Pjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNwYW4gbGFuZz0zRCJFTi1VUyIg c3R5bGU9M0QiZm9udC1mYW1pbHk6JnF1b3Q7SFAgUz0KaW1wbGlmaWVkJnF1b3Q7LCZxdW90O3Nh bnMtc2VyaWYmcXVvdDsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwPQo7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7IEw9CmlzdCZsdDtTdHJpbmcmZ3Q7IGNwdUxpc3QmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbj0KYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwPQo7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICMgdXBkYXRlIGZyb20gR2V0Q2FwYWJpbGl0 aWVzVkRTQ29tbWFuZDxvOnA9Cj48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29Ob3Jt YWwiIHN0eWxlPTNEIm1hcmdpbi1sZWZ0OjIxLjBwdDt0ZXh0LWluZGVudDoyMS4wcHQiPjxzcGE9 Cm4gbGFuZz0zRCJFTi1VUyIgc3R5bGU9M0QiZm9udC1mYW1pbHk6JnF1b3Q7SFAgU2ltcGxpZmll ZCZxdW90OywmcXVvdDtzYW5zLT0Kc2VyaWYmcXVvdDsiPkludCB0b3RhbE1lbSZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuPQpic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A9CjsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbj0KYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyAjIHVwZGF0ZSBmcm9tIEdldENhcGFiaWxpdGllc1ZEU0NvbW1hbmQ8PQpvOnA+PC9vOnA+PC9z cGFuPjwvcD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIiBzdHls ZT0zRCJmb250LWZhbWlseTomcXVvdDtIUCBTPQppbXBsaWZpZWQmcXVvdDssJnF1b3Q7c2Fucy1z ZXJpZiZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A9CjsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgST0KbnQgZnJlZU1lbSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwPQo7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm49CmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcD0KOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAjIHVwZGF0ZSBm cm9tIEdldFN0YXRzVkRTQ29tbWFuZDxvOnA+PC9vOnA+PQo8L3NwYW4+PC9wPgo8cCBjbGFzcz0z RCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiIHN0eWxlPTNEImZvbnQtZmFtaWx5OiZx dW90O0hQIFM9CmltcGxpZmllZCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij4mbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcD0KOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwo8bzpwPjwvbzpw Pjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb0xpc3RQYXJhZ3JhcGgiIHN0eWxlPTNEIm1hcmdp bi1sZWZ0OjE4LjBwdDt0ZXh0LWluZGVudDotMTguMD0KcHQ7bXNvLWxpc3Q6bDAgbGV2ZWwxIGxm bzEiPgo8IVtpZiAhc3VwcG9ydExpc3RzXT48c3BhbiBsYW5nPTNEIkVOLVVTIiBzdHlsZT0zRCJm b250LWZhbWlseTomcXVvdDtIUCBTaW09CnBsaWZpZWQmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZx dW90OyI+PHNwYW4gc3R5bGU9M0QibXNvLWxpc3Q6SWdub3JlIj5BLjxzcD0KYW4gc3R5bGU9M0Qi Zm9udDo3LjBwdCAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPiZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwPQo7Jm5ic3A7Cjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwhW2VuZGlmXT48c3BhbiBsYW5n PTNEIkVOLVVTIiBzdHlsZT0zRCJmb250LWZhbWlseTomcT0KdW90O0hQIFNpbXBsaWZpZWQmcXVv dDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+QWRkIHRoaXMgZGF0YSBzdHJ1Y3R1cmUgaW50PQpv IFZEU0R5bmFtaWM8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCIg c3R5bGU9M0QibWFyZ2luLWxlZnQ6MzkuMHB0O3RleHQtaW5kZW50OjMuMHB0Ij48c3Bhbj0KIGxh bmc9M0QiRU4tVVMiIHN0eWxlPTNEImZvbnQtZmFtaWx5OiZxdW90O0hQIFNpbXBsaWZpZWQmcXVv dDssJnF1b3Q7c2Fucy1zPQplcmlmJnF1b3Q7Ij5XZSBzaG91bGQgY2hhbmdlIHRoZSBHZXRTdGF0 c1ZEU0NvbW1hbmQgdXBkYXRlIHRoZSBWRFNEeW5hbWljIGQ9CmF0YS48bzpwPjwvbzpwPjwvc3Bh bj48L3A+CjxwIGNsYXNzPTNEIk1zb0xpc3RQYXJhZ3JhcGgiIHN0eWxlPTNEIm1hcmdpbi1sZWZ0 OjE4LjBwdDt0ZXh0LWluZGVudDotMTguMD0KcHQ7bXNvLWxpc3Q6bDAgbGV2ZWwxIGxmbzEiPgo8 IVtpZiAhc3VwcG9ydExpc3RzXT48c3BhbiBsYW5nPTNEIkVOLVVTIiBzdHlsZT0zRCJmb250LWZh bWlseTomcXVvdDtIUCBTaW09CnBsaWZpZWQmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+ PHNwYW4gc3R5bGU9M0QibXNvLWxpc3Q6SWdub3JlIj5CLjxzcD0KYW4gc3R5bGU9M0QiZm9udDo3 LjBwdCAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw PQo7Jm5ic3A7Cjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwhW2VuZGlmXT48c3BhbiBsYW5nPTNEIkVO LVVTIiBzdHlsZT0zRCJmb250LWZhbWlseTomcT0KdW90O0hQIFNpbXBsaWZpZWQmcXVvdDssJnF1 b3Q7c2Fucy1zZXJpZiZxdW90OyI+QWRkIHRoaXMgZGF0YSBzdHJ1Y3R1cmUgaW50PQpvIFZEUywg YW5kIGJ1aWxkIHRoZSBkYXRhIHN0cnVjdHVyZSBmcm9tIFZEU0R5bmFtaWMsIFZkc1N0YXRpc3Rp Y3M8bzpwPjwvbzo9CnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9M0QiTXNvTGlzdFBhcmFncmFwaCIg c3R5bGU9M0QidGV4dC1pbmRlbnQ6MGNtIj48c3BhbiBsYW5nPTNEIkVOLVVTPQoiIHN0eWxlPTNE ImZvbnQtZmFtaWx5OiZxdW90O0hQIFNpbXBsaWZpZWQmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZx dW90OyI+PG89CjpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb0xpc3RQ YXJhZ3JhcGgiIHN0eWxlPTNEInRleHQtaW5kZW50OjBjbSI+PHNwYW4gbGFuZz0zRCJFTi1VUz0K IiBzdHlsZT0zRCJmb250LWZhbWlseTomcXVvdDtIUCBTaW1wbGlmaWVkJnF1b3Q7LCZxdW90O3Nh bnMtc2VyaWYmcXVvdDsiPkkgPQpwcmVmZXIgQi4gZG9lcyBhbnlib2R5IGhhdmUgc29tZSBjb21t ZW50cz88bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNwYW4g bGFuZz0zRCJFTi1VUyIgc3R5bGU9M0QiZm9udC1mYW1pbHk6JnF1b3Q7SFAgUz0KaW1wbGlmaWVk JnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwv cD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48Yj48c3BhbiBsYW5nPTNEIkVOLVVTIiBzdHlsZT0z RCJmb250LXNpemU6OS4wcHQ7Zm9uPQp0LWZhbWlseTomcXVvdDtIUCBTaW1wbGlmaWVkJnF1b3Q7 LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6YmxhY2siPkJlc3Q9CiBSZWdhcmRzLDxicj4K PC9zcGFuPjwvYj48c3BhbiBsYW5nPTNEIkVOLVVTIiBzdHlsZT0zRCJmb250LXNpemU6OS4wcHQ7 Zm9udC1mYW1pbHk6JnF1b3Q7PQpIUCBTaW1wbGlmaWVkJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYm cXVvdDs7Y29sb3I6IzcxNzE3MiI+SmFzb24gTGlhbzwvc3Bhbj49CjxzcGFuIGxhbmc9M0QiRU4t VVMiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBs YW5nPTNEIkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+CjwvZGl2Pgo8L2JvZHk+ CjwvaHRtbD4KCi0tXzAwMF9CNjNDODU4RTc3NzY3OTQ1ODMzOEEzMEE5OTFCQjUyNDAxNUIwQTg0 RzFXMzc4MGFtZXJpY2FzXy0tCg== --===============0408895227768256892==--