From vlaero at yahoo.com.au Sat Sep 13 21:59:26 2014 Content-Type: multipart/mixed; boundary="===============1286449244754685061==" MIME-Version: 1.0 From: Paul Jansen To: users at ovirt.org Subject: [ovirt-users] [RFI] oVirt 3.6 Planning Date: Sat, 13 Sep 2014 18:59:24 -0700 Message-ID: <1410659964.78009.YahooMailNeo@web120602.mail.ne1.yahoo.com> --===============1286449244754685061== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ---1212189890-1261065207-1410659964=3D:78009 Content-Type: text/plain; charset=3Dutf-8 Content-Transfer-Encoding: quoted-printable My vote is for storage load balancing/scheduler.=3D0AVmware's Vcenter has t= he=3D concept of a 'storage cluster'. It's essentially a logical storage devic= =3D e.=3D0AWhen you configure hosts/vms to use this device vcenter then works o= ut=3D which of the actual storage devices underneath this logical device is will= =3D send the storage requests to.=3D0AThis works out as a basic form of load b= al=3D acing by alternating where the storage for new vms are created.=3D0AThis is= n'=3D t particularly amazing, but what it does allow - with the highest end vcent= =3D er licensing anyway - is what Vmware calls 'storage distributed resource sc= =3D heduling'.=3D0AMuch like we already have the ability to have a scheduler th= at=3D moves the execution of vms around on hosts based on load, this does the sa= =3D me thing for the storage component of VM.=3D0AImagine having two configured= s=3D torage locations under a 'storage cluster' and then having the ability to p= =3D ut one of the storage locations into 'maintenance mode'. The storage sched= =3D uler would then 'live storage migrate' all the storage for vms over to the = =3D other storage location. This would then allow the first storage location t= =3D o be taken down for maintenance.=3D0AThis approach also allows storage to s= ca=3D le over time as more is added. The 'storage scheduler' can take inputs suc= =3D h as latency etc into account and manage the load across the 'storage clust= =3D er' to balance things out and make smart decisions so that the avaialble st= =3D orage is utilized as best as it can be (ie: not overloading one storage loc= =3D ation while the other location is mainly idle).=3D0A=3D0A=3D0AI've done a b= it a s=3D earching to see where Ovirt might be up to in this regard and what I've fou= =3D nd seems to indicate that we are not anywhere near this capability just yet= =3D .=3D0AAn important prerequisite is having the hosts able to actually do a l= iv=3D e storage migration. EL7 based hosts under ovirt 3.5 have this, as have Fe= =3D dora 19 and 20 hosts.=3D0AIf the decision is made to use qemu-kvm-rhev on E= L6=3D hosts - as has been talked about recently - then the host requirement for = =3D supporting live storage migration will be met. This then allows the idea o= =3D f a storage scheduler to be futher considered.=3D0A=3D0AI think this is an = impo=3D rtant step in reaching feature parity with Vmware's vcenter product, and re= =3D moves a key reason ovirt/rhev can't be considered in some instances.=3D0A ---1212189890-1261065207-1410659964=3D:78009 Content-Type: text/html; charset=3Dutf-8 Content-Transfer-Encoding: quoted-printable
My vote is for storage load balancing/scheduler.
Vmware's Vcenter has the concept of a 'storage cluster'.   It'= =3D s essentially a logical storage device.
When you configure hosts/= =3D vms to use this device vcenter then works out which of the actual storage d= =3D evices underneath this logical device is will send the storage requests to.= =3D
This works out as a basic form of load balacing by alternating w= =3D here the storage for new vms are created.
This isn't particularly= =3D amazing, but what it does allow - with the highest end vcenter licensing a= =3D nyway - is what Vmware calls 'storage distributed resource scheduling'.
Much like we already have the ability to have a scheduler that moves= =3D the execution of vms around on hosts based on load, this does the same thing for the storage component of VM.
Imagine having two c= =3D onfigured storage locations under a 'storage cluster' and then having the a= =3D bility to put one of the storage locations into 'maintenance mode'.  T= =3D he storage scheduler would then 'live storage migrate' all the storage for = =3D vms over to the other storage location.  This would then allow the fir= =3D st storage location to be taken down for maintenance.
This approa= =3D ch also allows storage to scale over time as more is added.  The 'stor= =3D age scheduler' can take inputs such as latency etc into account and manage = =3D the load across the 'storage cluster' to balance things out and make smart = =3D decisions so that the avaialble storage is utilized as best as it can be (i= =3D e: not overloading one storage location while the other location is mainly = =3D idle).
I've done a= =3D bit a searching to see where Ovirt might be up to in this regard and what = =3D I've found seems to indicate that we are not anywhere near this capability = =3D just yet.
An import= =3D ant prerequisite is having the hosts able to actually do a live storage mig= =3D ration.  EL7 based hosts under ovirt 3.5 have this, as have Fedora 19 = =3D and 20 hosts.
If the decision is made to use qemu-kvm-rhev on EL6 hosts - as has been = =3D talked about recently - then the host requirement for supporting live stora= =3D ge migration will be met.  This then allows the idea of a storage sche= =3D duler to be futher considered.

I = =3D think this is an important step in reaching feature parity with Vmware's vc= =3D enter product, and removes a key reason ovirt/rhev can't be considered in s= =3D ome instances.
<= =3D br>
---1212189890-1261065207-1410659964=3D:78009-- --===============1286449244754685061== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS0tMTIxMjE4OTg5MC0xMjYxMDY1MjA3LTE0MTA2NTk5NjQ9Ojc4MDA5CkNvbnRlbnQtVHlwZTog dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90 ZWQtcHJpbnRhYmxlCgpNeSB2b3RlIGlzIGZvciBzdG9yYWdlIGxvYWQgYmFsYW5jaW5nL3NjaGVk dWxlci49MEFWbXdhcmUncyBWY2VudGVyIGhhcyB0aGU9CiBjb25jZXB0IG9mIGEgJ3N0b3JhZ2Ug Y2x1c3RlcicuICAgSXQncyBlc3NlbnRpYWxseSBhIGxvZ2ljYWwgc3RvcmFnZSBkZXZpYz0KZS49 MEFXaGVuIHlvdSBjb25maWd1cmUgaG9zdHMvdm1zIHRvIHVzZSB0aGlzIGRldmljZSB2Y2VudGVy IHRoZW4gd29ya3Mgb3V0PQogd2hpY2ggb2YgdGhlIGFjdHVhbCBzdG9yYWdlIGRldmljZXMgdW5k ZXJuZWF0aCB0aGlzIGxvZ2ljYWwgZGV2aWNlIGlzIHdpbGw9CiBzZW5kIHRoZSBzdG9yYWdlIHJl cXVlc3RzIHRvLj0wQVRoaXMgd29ya3Mgb3V0IGFzIGEgYmFzaWMgZm9ybSBvZiBsb2FkIGJhbD0K YWNpbmcgYnkgYWx0ZXJuYXRpbmcgd2hlcmUgdGhlIHN0b3JhZ2UgZm9yIG5ldyB2bXMgYXJlIGNy ZWF0ZWQuPTBBVGhpcyBpc24nPQp0IHBhcnRpY3VsYXJseSBhbWF6aW5nLCBidXQgd2hhdCBpdCBk b2VzIGFsbG93IC0gd2l0aCB0aGUgaGlnaGVzdCBlbmQgdmNlbnQ9CmVyIGxpY2Vuc2luZyBhbnl3 YXkgLSBpcyB3aGF0IFZtd2FyZSBjYWxscyAnc3RvcmFnZSBkaXN0cmlidXRlZCByZXNvdXJjZSBz Yz0KaGVkdWxpbmcnLj0wQU11Y2ggbGlrZSB3ZSBhbHJlYWR5IGhhdmUgdGhlIGFiaWxpdHkgdG8g aGF2ZSBhIHNjaGVkdWxlciB0aGF0PQogbW92ZXMgdGhlIGV4ZWN1dGlvbiBvZiB2bXMgYXJvdW5k IG9uIGhvc3RzIGJhc2VkIG9uIGxvYWQsIHRoaXMgZG9lcyB0aGUgc2E9Cm1lIHRoaW5nIGZvciB0 aGUgc3RvcmFnZSBjb21wb25lbnQgb2YgVk0uPTBBSW1hZ2luZSBoYXZpbmcgdHdvIGNvbmZpZ3Vy ZWQgcz0KdG9yYWdlIGxvY2F0aW9ucyB1bmRlciBhICdzdG9yYWdlIGNsdXN0ZXInIGFuZCB0aGVu IGhhdmluZyB0aGUgYWJpbGl0eSB0byBwPQp1dCBvbmUgb2YgdGhlIHN0b3JhZ2UgbG9jYXRpb25z IGludG8gJ21haW50ZW5hbmNlIG1vZGUnLiAgVGhlIHN0b3JhZ2Ugc2NoZWQ9CnVsZXIgd291bGQg dGhlbiAnbGl2ZSBzdG9yYWdlIG1pZ3JhdGUnIGFsbCB0aGUgc3RvcmFnZSBmb3Igdm1zIG92ZXIg dG8gdGhlID0Kb3RoZXIgc3RvcmFnZSBsb2NhdGlvbi4gIFRoaXMgd291bGQgdGhlbiBhbGxvdyB0 aGUgZmlyc3Qgc3RvcmFnZSBsb2NhdGlvbiB0PQpvIGJlIHRha2VuIGRvd24gZm9yIG1haW50ZW5h bmNlLj0wQVRoaXMgYXBwcm9hY2ggYWxzbyBhbGxvd3Mgc3RvcmFnZSB0byBzY2E9CmxlIG92ZXIg dGltZSBhcyBtb3JlIGlzIGFkZGVkLiAgVGhlICdzdG9yYWdlIHNjaGVkdWxlcicgY2FuIHRha2Ug aW5wdXRzIHN1Yz0KaCBhcyBsYXRlbmN5IGV0YyBpbnRvIGFjY291bnQgYW5kIG1hbmFnZSB0aGUg bG9hZCBhY3Jvc3MgdGhlICdzdG9yYWdlIGNsdXN0PQplcicgdG8gYmFsYW5jZSB0aGluZ3Mgb3V0 IGFuZCBtYWtlIHNtYXJ0IGRlY2lzaW9ucyBzbyB0aGF0IHRoZSBhdmFpYWxibGUgc3Q9Cm9yYWdl IGlzIHV0aWxpemVkIGFzIGJlc3QgYXMgaXQgY2FuIGJlIChpZTogbm90IG92ZXJsb2FkaW5nIG9u ZSBzdG9yYWdlIGxvYz0KYXRpb24gd2hpbGUgdGhlIG90aGVyIGxvY2F0aW9uIGlzIG1haW5seSBp ZGxlKS49MEE9MEE9MEFJJ3ZlIGRvbmUgYSBiaXQgYSBzPQplYXJjaGluZyB0byBzZWUgd2hlcmUg T3ZpcnQgbWlnaHQgYmUgdXAgdG8gaW4gdGhpcyByZWdhcmQgYW5kIHdoYXQgSSd2ZSBmb3U9Cm5k IHNlZW1zIHRvIGluZGljYXRlIHRoYXQgd2UgYXJlIG5vdCBhbnl3aGVyZSBuZWFyIHRoaXMgY2Fw YWJpbGl0eSBqdXN0IHlldD0KLj0wQUFuIGltcG9ydGFudCBwcmVyZXF1aXNpdGUgaXMgaGF2aW5n IHRoZSBob3N0cyBhYmxlIHRvIGFjdHVhbGx5IGRvIGEgbGl2PQplIHN0b3JhZ2UgbWlncmF0aW9u LiAgRUw3IGJhc2VkIGhvc3RzIHVuZGVyIG92aXJ0IDMuNSBoYXZlIHRoaXMsIGFzIGhhdmUgRmU9 CmRvcmEgMTkgYW5kIDIwIGhvc3RzLj0wQUlmIHRoZSBkZWNpc2lvbiBpcyBtYWRlIHRvIHVzZSBx ZW11LWt2bS1yaGV2IG9uIEVMNj0KIGhvc3RzIC0gYXMgaGFzIGJlZW4gdGFsa2VkIGFib3V0IHJl Y2VudGx5IC0gdGhlbiB0aGUgaG9zdCByZXF1aXJlbWVudCBmb3IgPQpzdXBwb3J0aW5nIGxpdmUg c3RvcmFnZSBtaWdyYXRpb24gd2lsbCBiZSBtZXQuICBUaGlzIHRoZW4gYWxsb3dzIHRoZSBpZGVh IG89CmYgYSBzdG9yYWdlIHNjaGVkdWxlciB0byBiZSBmdXRoZXIgY29uc2lkZXJlZC49MEE9MEFJ IHRoaW5rIHRoaXMgaXMgYW4gaW1wbz0KcnRhbnQgc3RlcCBpbiByZWFjaGluZyBmZWF0dXJlIHBh cml0eSB3aXRoIFZtd2FyZSdzIHZjZW50ZXIgcHJvZHVjdCwgYW5kIHJlPQptb3ZlcyBhIGtleSBy ZWFzb24gb3ZpcnQvcmhldiBjYW4ndCBiZSBjb25zaWRlcmVkIGluIHNvbWUgaW5zdGFuY2VzLj0w QQotLS0xMjEyMTg5ODkwLTEyNjEwNjUyMDctMTQxMDY1OTk2ND06NzgwMDkKQ29udGVudC1UeXBl OiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVv dGVkLXByaW50YWJsZQoKPGh0bWw+PGJvZHk+PGRpdiBzdHlsZT0zRCJjb2xvcjojMDAwOyBiYWNr Z3JvdW5kLWNvbG9yOiNmZmY7IGZvbnQtZmFtaWx5OkhlPQpsdmV0aWNhTmV1ZSwgSGVsdmV0aWNh IE5ldWUsIEhlbHZldGljYSwgQXJpYWwsIEx1Y2lkYSBHcmFuZGUsIFNhbnMtU2VyaWY7Zm89Cm50 LXNpemU6MTJwdCI+PGRpdj5NeSB2b3RlIGlzIGZvciBzdG9yYWdlIGxvYWQgYmFsYW5jaW5nL3Nj aGVkdWxlci48L2Rpdj48ZD0KaXY+Vm13YXJlJ3MgVmNlbnRlciBoYXMgdGhlIGNvbmNlcHQgb2Yg YSAnc3RvcmFnZSBjbHVzdGVyJy4mbmJzcDsmbmJzcDsgSXQnPQpzIGVzc2VudGlhbGx5IGEgbG9n aWNhbCBzdG9yYWdlIGRldmljZS48L2Rpdj48ZGl2PldoZW4geW91IGNvbmZpZ3VyZSBob3N0cy89 CnZtcyB0byB1c2UgdGhpcyBkZXZpY2UgdmNlbnRlciB0aGVuIHdvcmtzIG91dCB3aGljaCBvZiB0 aGUgYWN0dWFsIHN0b3JhZ2UgZD0KZXZpY2VzIHVuZGVybmVhdGggdGhpcyBsb2dpY2FsIGRldmlj ZSBpcyB3aWxsIHNlbmQgdGhlIHN0b3JhZ2UgcmVxdWVzdHMgdG8uPQo8L2Rpdj48ZGl2PlRoaXMg d29ya3Mgb3V0IGFzIGEgYmFzaWMgZm9ybSBvZiBsb2FkIGJhbGFjaW5nIGJ5IGFsdGVybmF0aW5n IHc9CmhlcmUgdGhlIHN0b3JhZ2UgZm9yIG5ldyB2bXMgYXJlIGNyZWF0ZWQuPC9kaXY+PGRpdj5U aGlzIGlzbid0IHBhcnRpY3VsYXJseT0KIGFtYXppbmcsIGJ1dCB3aGF0IGl0IGRvZXMgYWxsb3cg LSB3aXRoIHRoZSBoaWdoZXN0IGVuZCB2Y2VudGVyIGxpY2Vuc2luZyBhPQpueXdheSAtIGlzIHdo YXQgVm13YXJlIGNhbGxzICdzdG9yYWdlIGRpc3RyaWJ1dGVkIHJlc291cmNlIHNjaGVkdWxpbmcn LjwvZGk9CnY+PGRpdj5NdWNoIGxpa2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSBhYmlsaXR5IHRvIGhh dmUgYSBzY2hlZHVsZXIgdGhhdCBtb3Zlcz0KIHRoZSBleGVjdXRpb24gb2Ygdm1zIGFyb3VuZCBv biBob3N0cyBiYXNlZCBvbiBsb2FkLCB0aGlzIGRvZXMgdGhlCiBzYW1lIHRoaW5nIGZvciB0aGUg c3RvcmFnZSBjb21wb25lbnQgb2YgVk0uPC9kaXY+PGRpdj5JbWFnaW5lIGhhdmluZyB0d28gYz0K b25maWd1cmVkIHN0b3JhZ2UgbG9jYXRpb25zIHVuZGVyIGEgJ3N0b3JhZ2UgY2x1c3RlcicgYW5k IHRoZW4gaGF2aW5nIHRoZSBhPQpiaWxpdHkgdG8gcHV0IG9uZSBvZiB0aGUgc3RvcmFnZSBsb2Nh dGlvbnMgaW50byAnbWFpbnRlbmFuY2UgbW9kZScuJm5ic3A7IFQ9CmhlIHN0b3JhZ2Ugc2NoZWR1 bGVyIHdvdWxkIHRoZW4gJ2xpdmUgc3RvcmFnZSBtaWdyYXRlJyBhbGwgdGhlIHN0b3JhZ2UgZm9y ID0Kdm1zIG92ZXIgdG8gdGhlIG90aGVyIHN0b3JhZ2UgbG9jYXRpb24uJm5ic3A7IFRoaXMgd291 bGQgdGhlbiBhbGxvdyB0aGUgZmlyPQpzdCBzdG9yYWdlIGxvY2F0aW9uIHRvIGJlIHRha2VuIGRv d24gZm9yIG1haW50ZW5hbmNlLjwvZGl2PjxkaXY+VGhpcyBhcHByb2E9CmNoIGFsc28gYWxsb3dz IHN0b3JhZ2UgdG8gc2NhbGUgb3ZlciB0aW1lIGFzIG1vcmUgaXMgYWRkZWQuJm5ic3A7IFRoZSAn c3Rvcj0KYWdlIHNjaGVkdWxlcicgY2FuIHRha2UgaW5wdXRzIHN1Y2ggYXMgbGF0ZW5jeSBldGMg aW50byBhY2NvdW50IGFuZCBtYW5hZ2UgPQp0aGUgbG9hZCBhY3Jvc3MgdGhlICdzdG9yYWdlIGNs dXN0ZXInIHRvIGJhbGFuY2UgdGhpbmdzIG91dCBhbmQgbWFrZSBzbWFydCA9CmRlY2lzaW9ucyBz byB0aGF0IHRoZSBhdmFpYWxibGUgc3RvcmFnZSBpcyB1dGlsaXplZCBhcyBiZXN0IGFzIGl0IGNh biBiZSAoaT0KZTogbm90IG92ZXJsb2FkaW5nIG9uZSBzdG9yYWdlIGxvY2F0aW9uIHdoaWxlIHRo ZSBvdGhlciBsb2NhdGlvbiBpcyBtYWlubHkgPQppZGxlKS48YnI+PC9kaXY+PGRpdiBzdHlsZT0z RCJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LXNpemU6IDE2cHg7IGZvbnQtZmE9Cm1pbHk6IEhl bHZldGljYU5ldWUsSGVsdmV0aWNhIE5ldWUsSGVsdmV0aWNhLEFyaWFsLEx1Y2lkYQogR3JhbmRl LHNhbnMtc2VyaWY7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyBmb250LXN0eWxlOiBu b3JtYWw7Ij48YnI9Cj48c3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0zRCJjb2xvcjogcmdi KDAsIDAsIDApOyBmb250LXNpemU6IDE2cHg7IGZvbj0KdC1mYW1pbHk6IEhlbHZldGljYU5ldWUs SGVsdmV0aWNhIE5ldWUsSGVsdmV0aWNhLEFyaWFsLEx1Y2lkYSBHcmFuZGUsc2Fucy1zPQplcmlm OyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgZm9udC1zdHlsZTogbm9ybWFsOyI+PHNw YW4+SSd2ZSBkb25lIGE9CiBiaXQgYSBzZWFyY2hpbmcgdG8gc2VlIHdoZXJlIE92aXJ0IG1pZ2h0 IGJlIHVwIHRvIGluIHRoaXMgcmVnYXJkIGFuZCB3aGF0ID0KSSd2ZSBmb3VuZCBzZWVtcyB0byBp bmRpY2F0ZSB0aGF0IHdlIGFyZSBub3QgYW55d2hlcmUgbmVhciB0aGlzIGNhcGFiaWxpdHkgPQpq dXN0IHlldC48L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0zRCJjb2xvcjogcmdiKDAsIDAsIDApOyBm b250LXNpemU6IDE2cHg7IGY9Cm9udC1mYW1pbHk6IEhlbHZldGljYU5ldWUsSGVsdmV0aWNhIE5l dWUsSGVsdmV0aWNhLEFyaWFsLEx1Y2lkYSBHcmFuZGUsc2Fucz0KLXNlcmlmOyBiYWNrZ3JvdW5k LWNvbG9yOiB0cmFuc3BhcmVudDsgZm9udC1zdHlsZTogbm9ybWFsOyI+PHNwYW4+QW4gaW1wb3J0 PQphbnQgcHJlcmVxdWlzaXRlIGlzIGhhdmluZyB0aGUgaG9zdHMgYWJsZSB0byBhY3R1YWxseSBk byBhIGxpdmUgc3RvcmFnZSBtaWc9CnJhdGlvbi4mbmJzcDsgRUw3IGJhc2VkIGhvc3RzIHVuZGVy IG92aXJ0IDMuNSBoYXZlIHRoaXMsIGFzIGhhdmUgRmVkb3JhIDE5ID0KYW5kIDIwIGhvc3RzLjwv c3Bhbj48L2Rpdj48ZGl2IHN0eWxlPTNEImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtc2l6ZTog MTZwPQp4OyBmb250LWZhbWlseTogSGVsdmV0aWNhTmV1ZSxIZWx2ZXRpY2EgTmV1ZSxIZWx2ZXRp Y2EsQXJpYWwsTHVjaWRhCiBHcmFuZGUsc2Fucy1zZXJpZjsgYmFja2dyb3VuZC1jb2xvcjogdHJh bnNwYXJlbnQ7IGZvbnQtc3R5bGU6IG5vcm1hbDsiPjxzcD0KYW4+SWYgdGhlIGRlY2lzaW9uIGlz IG1hZGUgdG8gdXNlIHFlbXUta3ZtLXJoZXYgb24gRUw2IGhvc3RzIC0gYXMgaGFzIGJlZW4gPQp0 YWxrZWQgYWJvdXQgcmVjZW50bHkgLSB0aGVuIHRoZSBob3N0IHJlcXVpcmVtZW50IGZvciBzdXBw b3J0aW5nIGxpdmUgc3RvcmE9CmdlIG1pZ3JhdGlvbiB3aWxsIGJlIG1ldC4mbmJzcDsgVGhpcyB0 aGVuIGFsbG93cyB0aGUgaWRlYSBvZiBhIHN0b3JhZ2Ugc2NoZT0KZHVsZXIgdG8gYmUgZnV0aGVy IGNvbnNpZGVyZWQuPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9M0QiY29sb3I6IHJnYigwLCAwLCAw PQopOyBmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2FOZXVlLEhlbHZldGlj YSBOZXVlLEhlbHZldGljYSxBcmk9CmFsLEx1Y2lkYSBHcmFuZGUsc2Fucy1zZXJpZjsgYmFja2dy b3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IGZvbnQtc3R5bGU6IG5vcj0KbWFsOyI+PGJyPjxzcGFu Pjwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPTNEImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtc2l6 ZTogPQoxNnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhTmV1ZSxIZWx2ZXRpY2EgTmV1ZSxIZWx2 ZXRpY2EsQXJpYWwsTHVjaWRhIEdyYW49CmRlLHNhbnMtc2VyaWY7IGJhY2tncm91bmQtY29sb3I6 IHRyYW5zcGFyZW50OyBmb250LXN0eWxlOiBub3JtYWw7Ij48c3Bhbj5JID0KdGhpbmsgdGhpcyBp cyBhbiBpbXBvcnRhbnQgc3RlcCBpbiByZWFjaGluZyBmZWF0dXJlIHBhcml0eSB3aXRoIFZtd2Fy ZSdzIHZjPQplbnRlciBwcm9kdWN0LCBhbmQgcmVtb3ZlcyBhIGtleSByZWFzb24gb3ZpcnQvcmhl diBjYW4ndCBiZSBjb25zaWRlcmVkIGluIHM9Cm9tZSBpbnN0YW5jZXMuPC9zcGFuPjwvZGl2Pjxk aXYgc3R5bGU9M0QiY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1zaXplOgogMTZweDsgZm9udC1m YW1pbHk6IEhlbHZldGljYU5ldWUsSGVsdmV0aWNhIE5ldWUsSGVsdmV0aWNhLEFyaWFsLEx1Y2lk YSBHcmE9Cm5kZSxzYW5zLXNlcmlmOyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgZm9u dC1zdHlsZTogbm9ybWFsOyI+PHNwYW4+PD0KYnI+PC9zcGFuPjwvZGl2PjwvZGl2PjwvYm9keT48 L2h0bWw+Ci0tLTEyMTIxODk4OTAtMTI2MTA2NTIwNy0xNDEwNjU5OTY0PTo3ODAwOS0tCg== --===============1286449244754685061==--