From soeren.malchow at mcon.net Fri Dec 19 06:44:43 2014 Content-Type: multipart/mixed; boundary="===============6906378314067158234==" MIME-Version: 1.0 From: Soeren Malchow To: users at ovirt.org Subject: [ovirt-users] Backup and Restore of VMs Date: Fri, 19 Dec 2014 11:44:38 +0000 Message-ID: <687766E0007010429FBFF98CA70824887896D9@mc-exch-01.mcon-group.net> --===============6906378314067158234== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable --_000_687766E0007010429FBFF98CA70824887896D9mcexch01mcongroup_ Content-Type: text/plain; charset=3D"us-ascii" Content-Transfer-Encoding: quoted-printable Dear all, ovirt: 3.5 gluster: 3.6.1 OS: CentOS 7 (except ovirt hosted engine =3D3D centos 6.6) i spent quite a while researching backup and restore for VMs right now, so = =3D far I have come up with this as a start for us - API calls to create schedule snapshots of virtual machines This is or short term storage and to guard against accidential deletion wit= =3D hin the VM but not for storage corruption - Since we are using a gluster backend, gluster snapshots I wasn't able so far to really test it since the LV needs to be thin provis= =3D ioned and we did not do that in the setup For the API calls we have the problem that we can not find any existing scr= =3D ipts or something like that to do those snapshots (and i/we are not develop= =3D ers enough to do that). As an additional information, we have a ZFS based storage with deduplicatio= =3D n that we use for other backup purposes which does a great job especially b= =3D ecause of the deduplication (we can storage generations of backups without = =3D problems), this storage can be NFS exported and used as backup repository. Are there any backup and restore procedure you guys are using for backup an= =3D d restore that works for you and can you point me into the right direction = =3D ? I am a little bit list right now and would appreciate any help. Regards Soeren --_000_687766E0007010429FBFF98CA70824887896D9mcexch01mcongroup_ Content-Type: text/html; charset=3D"us-ascii" Content-Transfer-Encoding: quoted-printable

Dear all,

 

ovirt: 3.5

gluster: 3.6.1

OS: CentOS 7 (except ovirt = host=3D ed engine =3D3D centos 6.6)

 

i spent quite a while resea= rchi=3D ng backup and restore for VMs right now, so far I have come up with this as= =3D a start for us

 

- &nbs= p;=3D         API calls to create s= ch=3D edule snapshots of virtual machines
This is or short term storage and to guard against accidential deletion wit= =3D hin the VM but not for storage corruption

- &nbs= p;=3D         Since we are using a = gl=3D uster backend, gluster snapshots
I wasn’t able so far to really test it since the LV needs to be thin = =3D provisioned and we did not do that in the setup

 

For the API calls we have t= he p=3D roblem that we can not find any existing scripts or something like that to = =3D do those snapshots (and i/we are not developers enough to do that).

 

As an additional informatio= n, w=3D e have a ZFS based storage with deduplication that we use for other backup = =3D purposes which does a great job especially because of the deduplication (we= =3D can storage generations of backups without problems), this storage can be NFS exported and used as backup rep= =3D ository.

 

Are there any backup and re= stor=3D e procedure you guys are using for backup and restore that works for you an= =3D d can you point me into the right direction ?

I am a little bit list righ= t no=3D w and would appreciate any help.

 

Regards

Soeren

--_000_687766E0007010429FBFF98CA70824887896D9mcexch01mcongroup_-- --===============6906378314067158234== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS1fMDAwXzY4Nzc2NkUwMDA3MDEwNDI5RkJGRjk4Q0E3MDgyNDg4Nzg5NkQ5bWNleGNoMDFtY29u Z3JvdXBfCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiCkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKCkRlYXIgYWxsLAoKb3ZpcnQ6 IDMuNQpnbHVzdGVyOiAzLjYuMQpPUzogQ2VudE9TIDcgKGV4Y2VwdCBvdmlydCBob3N0ZWQgZW5n aW5lID0zRCBjZW50b3MgNi42KQoKaSBzcGVudCBxdWl0ZSBhIHdoaWxlIHJlc2VhcmNoaW5nIGJh Y2t1cCBhbmQgcmVzdG9yZSBmb3IgVk1zIHJpZ2h0IG5vdywgc28gPQpmYXIgSSBoYXZlIGNvbWUg dXAgd2l0aCB0aGlzIGFzIGEgc3RhcnQgZm9yIHVzCgoKLSAgICAgICAgICBBUEkgY2FsbHMgdG8g Y3JlYXRlIHNjaGVkdWxlIHNuYXBzaG90cyBvZiB2aXJ0dWFsIG1hY2hpbmVzClRoaXMgaXMgb3Ig c2hvcnQgdGVybSBzdG9yYWdlIGFuZCB0byBndWFyZCBhZ2FpbnN0IGFjY2lkZW50aWFsIGRlbGV0 aW9uIHdpdD0KaGluIHRoZSBWTSBidXQgbm90IGZvciBzdG9yYWdlIGNvcnJ1cHRpb24KCgotICAg ICAgICAgIFNpbmNlIHdlIGFyZSB1c2luZyBhIGdsdXN0ZXIgYmFja2VuZCwgZ2x1c3RlciBzbmFw c2hvdHMKSSB3YXNuJ3QgYWJsZSBzbyBmYXIgdG8gcmVhbGx5IHRlc3QgaXQgc2luY2UgdGhlIExW IG5lZWRzIHRvIGJlIHRoaW4gcHJvdmlzPQppb25lZCBhbmQgd2UgZGlkIG5vdCBkbyB0aGF0IGlu IHRoZSBzZXR1cAoKRm9yIHRoZSBBUEkgY2FsbHMgd2UgaGF2ZSB0aGUgcHJvYmxlbSB0aGF0IHdl IGNhbiBub3QgZmluZCBhbnkgZXhpc3Rpbmcgc2NyPQppcHRzIG9yIHNvbWV0aGluZyBsaWtlIHRo YXQgdG8gZG8gdGhvc2Ugc25hcHNob3RzIChhbmQgaS93ZSBhcmUgbm90IGRldmVsb3A9CmVycyBl bm91Z2ggdG8gZG8gdGhhdCkuCgpBcyBhbiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLCB3ZSBoYXZl IGEgWkZTIGJhc2VkIHN0b3JhZ2Ugd2l0aCBkZWR1cGxpY2F0aW89Cm4gdGhhdCB3ZSB1c2UgZm9y IG90aGVyIGJhY2t1cCBwdXJwb3NlcyB3aGljaCBkb2VzIGEgZ3JlYXQgam9iIGVzcGVjaWFsbHkg Yj0KZWNhdXNlIG9mIHRoZSBkZWR1cGxpY2F0aW9uICh3ZSBjYW4gc3RvcmFnZSBnZW5lcmF0aW9u cyBvZiBiYWNrdXBzIHdpdGhvdXQgPQpwcm9ibGVtcyksIHRoaXMgc3RvcmFnZSBjYW4gYmUgTkZT IGV4cG9ydGVkIGFuZCB1c2VkIGFzIGJhY2t1cCByZXBvc2l0b3J5LgoKQXJlIHRoZXJlIGFueSBi YWNrdXAgYW5kIHJlc3RvcmUgcHJvY2VkdXJlIHlvdSBndXlzIGFyZSB1c2luZyBmb3IgYmFja3Vw IGFuPQpkIHJlc3RvcmUgdGhhdCB3b3JrcyBmb3IgeW91IGFuZCBjYW4geW91IHBvaW50IG1lIGlu dG8gdGhlIHJpZ2h0IGRpcmVjdGlvbiA9Cj8KSSBhbSBhIGxpdHRsZSBiaXQgbGlzdCByaWdodCBu b3cgYW5kIHdvdWxkIGFwcHJlY2lhdGUgYW55IGhlbHAuCgpSZWdhcmRzClNvZXJlbgoKLS1fMDAw XzY4Nzc2NkUwMDA3MDEwNDI5RkJGRjk4Q0E3MDgyNDg4Nzg5NkQ5bWNleGNoMDFtY29uZ3JvdXBf CkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSJ1cy1hc2NpaSIKQ29udGVudC1UcmFu c2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQoKPGh0bWwgeG1sbnM6dj0zRCJ1cm46c2No ZW1hcy1taWNyb3NvZnQtY29tOnZtbCIgeG1sbnM6bz0zRCJ1cm46c2NoZW1hcy1taWNyPQpvc29m dC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0zRCJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29t Om9mZmljZTp3b3JkIiA9CnhtbG5zOm09M0QiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9v ZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0zRCJodHRwOj0KLy93d3cudzMub3JnL1RSL1JFQy1o dG1sNDAiPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0zRCJDb250ZW50LVR5cGUiIGNvbnRlbnQ9 M0QidGV4dC9odG1sOyBjaGFyc2V0PTNEdXMtYXNjaWkiPQo+CjxtZXRhIG5hbWU9M0QiR2VuZXJh dG9yIiBjb250ZW50PTNEIk1pY3Jvc29mdCBXb3JkIDE1IChmaWx0ZXJlZCBtZWRpdW0pIj4KPHN0 eWxlPjwhLS0KLyogRm9udCBEZWZpbml0aW9ucyAqLwpAZm9udC1mYWNlCgl7Zm9udC1mYW1pbHk6 V2luZ2RpbmdzOwoJcGFub3NlLTE6NSAwIDAgMCAwIDAgMCAwIDAgMDt9CkBmb250LWZhY2UKCXtm b250LWZhbWlseToiQ2FtYnJpYSBNYXRoIjsKCXBhbm9zZS0xOjIgNCA1IDMgNSA0IDYgMyAyIDQ7 fQpAZm9udC1mYWNlCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsKCXBhbm9zZS0xOjIgMTUgNSAyIDIg MiA0IDMgMiA0O30KLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8KcC5Nc29Ob3JtYWwsIGxpLk1zb05v cm1hbCwgZGl2Lk1zb05vcm1hbAoJe21hcmdpbjowaW47CgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7 Cglmb250LXNpemU6MTEuMHB0OwoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7Cglt c28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUzt9CmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsKCXtt c28tc3R5bGUtcHJpb3JpdHk6OTk7Cgljb2xvcjojMDU2M0MxOwoJdGV4dC1kZWNvcmF0aW9uOnVu ZGVybGluZTt9CmE6dmlzaXRlZCwgc3Bhbi5Nc29IeXBlcmxpbmtGb2xsb3dlZAoJe21zby1zdHls ZS1wcmlvcml0eTo5OTsKCWNvbG9yOiM5NTRGNzI7Cgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5l O30KcC5Nc29MaXN0UGFyYWdyYXBoLCBsaS5Nc29MaXN0UGFyYWdyYXBoLCBkaXYuTXNvTGlzdFBh cmFncmFwaAoJe21zby1zdHlsZS1wcmlvcml0eTozNDsKCW1hcmdpbi10b3A6MGluOwoJbWFyZ2lu LXJpZ2h0OjBpbjsKCW1hcmdpbi1ib3R0b206MGluOwoJbWFyZ2luLWxlZnQ6LjVpbjsKCW1hcmdp bi1ib3R0b206LjAwMDFwdDsKCWZvbnQtc2l6ZToxMS4wcHQ7Cglmb250LWZhbWlseToiQ2FsaWJy aSIsc2Fucy1zZXJpZjsKCW1zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTO30Kc3Bhbi5FbWFpbFN0 eWxlMTcKCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbC1jb21wb3NlOwoJZm9udC1mYW1pbHk6IkNh bGlicmkiLHNhbnMtc2VyaWY7Cgljb2xvcjp3aW5kb3d0ZXh0O30KLk1zb0NocERlZmF1bHQKCXtt c28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsKCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNl cmlmOwoJbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVM7fQpAcGFnZSBXb3JkU2VjdGlvbjEKCXtz aXplOjguNWluIDExLjBpbjsKCW1hcmdpbjo3MC44NXB0IDcwLjg1cHQgNTYuN3B0IDcwLjg1cHQ7 fQpkaXYuV29yZFNlY3Rpb24xCgl7cGFnZTpXb3JkU2VjdGlvbjE7fQovKiBMaXN0IERlZmluaXRp b25zICovCkBsaXN0IGwwCgl7bXNvLWxpc3QtaWQ6MTg4NTAxODgyMzsKCW1zby1saXN0LXR5cGU6 aHlicmlkOwoJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOjUxODEzMjA3MiAtMTk5NjA4NDM2MCA2NzU2 NzYxOSA2NzU2NzYyMSA2NzU2NzYxNyA2NzU9CjY3NjE5IDY3NTY3NjIxIDY3NTY3NjE3IDY3NTY3 NjE5IDY3NTY3NjIxO30KQGxpc3QgbDA6bGV2ZWwxCgl7bXNvLWxldmVsLXN0YXJ0LWF0OjA7Cglt c28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7Cgltc28tbGV2ZWwtdGV4dDotOwoJbXNvLWxl dmVsLXRhYi1zdG9wOm5vbmU7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0 LWluZGVudDotLjI1aW47Cglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjsKCW1zby1m YXJlYXN0LWZvbnQtZmFtaWx5OkNhbGlicmk7Cgltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMg TmV3IFJvbWFuIjt9CkBsaXN0IGwwOmxldmVsMgoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1 bGxldDsKCW1zby1sZXZlbC10ZXh0Om87Cgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsKCW1zby1s ZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKCXRleHQtaW5kZW50Oi0uMjVpbjsKCWZvbnQtZmFt aWx5OiJDb3VyaWVyIE5ldyI7fQpAbGlzdCBsMDpsZXZlbDMKCXttc28tbGV2ZWwtbnVtYmVyLWZv cm1hdDpidWxsZXQ7Cgltc28tbGV2ZWwtdGV4dDpcRjBBNzsKCW1zby1sZXZlbC10YWItc3RvcDpu b25lOwoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwoJdGV4dC1pbmRlbnQ6LS4yNWlu OwoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KQGxpc3QgbDA6bGV2ZWw0Cgl7bXNvLWxldmVsLW51 bWJlci1mb3JtYXQ6YnVsbGV0OwoJbXNvLWxldmVsLXRleHQ6XEYwQjc7Cgltc28tbGV2ZWwtdGFi LXN0b3A6bm9uZTsKCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKCXRleHQtaW5kZW50 Oi0uMjVpbjsKCWZvbnQtZmFtaWx5OlN5bWJvbDt9CkBsaXN0IGwwOmxldmVsNQoJe21zby1sZXZl bC1udW1iZXItZm9ybWF0OmJ1bGxldDsKCW1zby1sZXZlbC10ZXh0Om87Cgltc28tbGV2ZWwtdGFi LXN0b3A6bm9uZTsKCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKCXRleHQtaW5kZW50 Oi0uMjVpbjsKCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7fQpAbGlzdCBsMDpsZXZlbDYKCXtt c28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7Cgltc28tbGV2ZWwtdGV4dDpcRjBBNzsKCW1z by1sZXZlbC10YWItc3RvcDpub25lOwoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwoJ dGV4dC1pbmRlbnQ6LS4yNWluOwoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KQGxpc3QgbDA6bGV2 ZWw3Cgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OwoJbXNvLWxldmVsLXRleHQ6XEYw Qjc7Cgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsKCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246 bGVmdDsKCXRleHQtaW5kZW50Oi0uMjVpbjsKCWZvbnQtZmFtaWx5OlN5bWJvbDt9CkBsaXN0IGww OmxldmVsOAoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKCW1zby1sZXZlbC10ZXh0 Om87Cgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsKCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246 bGVmdDsKCXRleHQtaW5kZW50Oi0uMjVpbjsKCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7fQpA bGlzdCBsMDpsZXZlbDkKCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7Cgltc28tbGV2 ZWwtdGV4dDpcRjBBNzsKCW1zby1sZXZlbC10YWItc3RvcDpub25lOwoJbXNvLWxldmVsLW51bWJl ci1wb3NpdGlvbjpsZWZ0OwoJdGV4dC1pbmRlbnQ6LS4yNWluOwoJZm9udC1mYW1pbHk6V2luZ2Rp bmdzO30Kb2wKCXttYXJnaW4tYm90dG9tOjBpbjt9CnVsCgl7bWFyZ2luLWJvdHRvbTowaW47fQot LT48L3N0eWxlPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgo8bzpzaGFwZWRlZmF1bHRzIHY6ZXh0 PTNEImVkaXQiIHNwaWRtYXg9M0QiMTAyNiIgLz4KPC94bWw+PCFbZW5kaWZdLS0+PCEtLVtpZiBn dGUgbXNvIDldPjx4bWw+CjxvOnNoYXBlbGF5b3V0IHY6ZXh0PTNEImVkaXQiPgo8bzppZG1hcCB2 OmV4dD0zRCJlZGl0IiBkYXRhPTNEIjEiIC8+CjwvbzpzaGFwZWxheW91dD48L3htbD48IVtlbmRp Zl0tLT4KPC9oZWFkPgo8Ym9keSBsYW5nPTNEIkRFIiBsaW5rPTNEIiMwNTYzQzEiIHZsaW5rPTNE IiM5NTRGNzIiPgo8ZGl2IGNsYXNzPTNEIldvcmRTZWN0aW9uMSI+CjxwIGNsYXNzPTNEIk1zb05v cm1hbCI+RGVhciBhbGwsPG86cD48L286cD48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PG86 cD4mbmJzcDs8L286cD48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNwYW4gbGFuZz0zRCJF Ti1VUyI+b3ZpcnQ6IDMuNTxvOnA+PC9vOnA+PC9zcGFuPjwvcD0KPgo8cCBjbGFzcz0zRCJNc29O b3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiPmdsdXN0ZXI6IDMuNi4xPG86cD48L286cD48L3Nw YW49Cj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNwYW4gbGFuZz0zRCJFTi1VUyI+T1M6 IENlbnRPUyA3IChleGNlcHQgb3ZpcnQgaG9zdD0KZWQgZW5naW5lID0zRCBjZW50b3MgNi42KTxv OnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNE IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1h bCI+PHNwYW4gbGFuZz0zRCJFTi1VUyI+aSBzcGVudCBxdWl0ZSBhIHdoaWxlIHJlc2VhcmNoaT0K bmcgYmFja3VwIGFuZCByZXN0b3JlIGZvciBWTXMgcmlnaHQgbm93LCBzbyBmYXIgSSBoYXZlIGNv bWUgdXAgd2l0aCB0aGlzIGFzPQogYSBzdGFydCBmb3IgdXM8bzpwPjwvbzpwPjwvc3Bhbj48L3A+ CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNwYW4gbGFuZz0zRCJFTi1VUyI+PG86cD4mbmJzcDs8 L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29MaXN0UGFyYWdyYXBoIiBzdHlsZT0zRCJ0 ZXh0LWluZGVudDotLjI1aW47bXNvLWxpc3Q6bDAgbGV2ZWw9CjEgbGZvMSI+PCFbaWYgIXN1cHBv cnRMaXN0c10+PHNwYW4gbGFuZz0zRCJFTi1VUyI+PHNwYW4gc3R5bGU9M0QibXNvLWxpc3Q6ST0K Z25vcmUiPi08c3BhbiBzdHlsZT0zRCJmb250OjcuMHB0ICZxdW90O1RpbWVzIE5ldyBSb21hbiZx dW90OyI+Jm5ic3A7Jm5ic3A7PQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsKPC9zcGFuPjwvc3Bhbj48L3NwYW4+PCFbZW5kaWZdPjxzcGFuIGxhbmc9M0QiRU4tVVMi PkFQSSBjYWxscyB0byBjcmVhdGUgc2NoPQplZHVsZSBzbmFwc2hvdHMgb2YgdmlydHVhbCBtYWNo aW5lczxicj4KVGhpcyBpcyBvciBzaG9ydCB0ZXJtIHN0b3JhZ2UgYW5kIHRvIGd1YXJkIGFnYWlu c3QgYWNjaWRlbnRpYWwgZGVsZXRpb24gd2l0PQpoaW4gdGhlIFZNIGJ1dCBub3QgZm9yIHN0b3Jh Z2UgY29ycnVwdGlvbjxicj4KPGJyPgo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNE Ik1zb0xpc3RQYXJhZ3JhcGgiIHN0eWxlPTNEInRleHQtaW5kZW50Oi0uMjVpbjttc28tbGlzdDps MCBsZXZlbD0KMSBsZm8xIj48IVtpZiAhc3VwcG9ydExpc3RzXT48c3BhbiBsYW5nPTNEIkVOLVVT Ij48c3BhbiBzdHlsZT0zRCJtc28tbGlzdDpJPQpnbm9yZSI+LTxzcGFuIHN0eWxlPTNEImZvbnQ6 Ny4wcHQgJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij4mbmJzcDsmbmJzcDs9CiZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwo8L3NwYW4+PC9zcGFuPjwvc3Bhbj48 IVtlbmRpZl0+PHNwYW4gbGFuZz0zRCJFTi1VUyI+U2luY2Ugd2UgYXJlIHVzaW5nIGEgZ2w9CnVz dGVyIGJhY2tlbmQsIGdsdXN0ZXIgc25hcHNob3RzPGJyPgpJIHdhc24mIzgyMTc7dCBhYmxlIHNv IGZhciB0byByZWFsbHkgdGVzdCBpdCBzaW5jZSB0aGUgTFYgbmVlZHMgdG8gYmUgdGhpbiA9CnBy b3Zpc2lvbmVkIGFuZCB3ZSBkaWQgbm90IGRvIHRoYXQgaW4gdGhlIHNldHVwPG86cD48L286cD48 L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiPjxv OnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBs YW5nPTNEIkVOLVVTIj5Gb3IgdGhlIEFQSSBjYWxscyB3ZSBoYXZlIHRoZSBwPQpyb2JsZW0gdGhh dCB3ZSBjYW4gbm90IGZpbmQgYW55IGV4aXN0aW5nIHNjcmlwdHMgb3Igc29tZXRoaW5nIGxpa2Ug dGhhdCB0byA9CmRvIHRob3NlIHNuYXBzaG90cyAoYW5kIGkvd2UgYXJlIG5vdCBkZXZlbG9wZXJz IGVub3VnaCB0byBkbyB0aGF0KS48bzpwPjwvbz0KOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9M0Qi TXNvTm9ybWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48 L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNwYW4gbGFuZz0zRCJFTi1VUyI+QXMgYW4gYWRk aXRpb25hbCBpbmZvcm1hdGlvbiwgdz0KZSBoYXZlIGEgWkZTIGJhc2VkIHN0b3JhZ2Ugd2l0aCBk ZWR1cGxpY2F0aW9uIHRoYXQgd2UgdXNlIGZvciBvdGhlciBiYWNrdXAgPQpwdXJwb3NlcyB3aGlj aCBkb2VzIGEgZ3JlYXQgam9iIGVzcGVjaWFsbHkgYmVjYXVzZSBvZiB0aGUgZGVkdXBsaWNhdGlv biAod2U9CiBjYW4gc3RvcmFnZSBnZW5lcmF0aW9ucyBvZiBiYWNrdXBzCiB3aXRob3V0IHByb2Js ZW1zKSwgdGhpcyBzdG9yYWdlIGNhbiBiZSBORlMgZXhwb3J0ZWQgYW5kIHVzZWQgYXMgYmFja3Vw IHJlcD0Kb3NpdG9yeS48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1h bCI+PHNwYW4gbGFuZz0zRCJFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgo8cCBj bGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiPkFyZSB0aGVyZSBhbnkgYmFj a3VwIGFuZCByZXN0b3I9CmUgcHJvY2VkdXJlIHlvdSBndXlzIGFyZSB1c2luZyBmb3IgYmFja3Vw IGFuZCByZXN0b3JlIHRoYXQgd29ya3MgZm9yIHlvdSBhbj0KZCBjYW4geW91IHBvaW50IG1lIGlu dG8gdGhlIHJpZ2h0IGRpcmVjdGlvbiA/PG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0z RCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiPkkgYW0gYSBsaXR0bGUgYml0IGxpc3Qg cmlnaHQgbm89CncgYW5kIHdvdWxkIGFwcHJlY2lhdGUgYW55IGhlbHAuPG86cD48L286cD48L3Nw YW4+PC9wPgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiPjxvOnA+ Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5n PTNEIkVOLVVTIj5SZWdhcmRzPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29O b3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiPlNvZXJlbjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4K PC9kaXY+CjwvYm9keT4KPC9odG1sPgoKLS1fMDAwXzY4Nzc2NkUwMDA3MDEwNDI5RkJGRjk4Q0E3 MDgyNDg4Nzg5NkQ5bWNleGNoMDFtY29uZ3JvdXBfLS0K --===============6906378314067158234==--