From kripper at imatronix.cl Sun Jun 21 12:10:49 2015 Content-Type: multipart/mixed; boundary="===============3013105112109221575==" MIME-Version: 1.0 From: Christopher Pereira To: devel at ovirt.org Subject: Re: [ovirt-devel] Live export/import Date: Sun, 21 Jun 2015 13:10:50 -0300 Message-ID: <5586E20A.90808@imatronix.cl> In-Reply-To: 47710768.5569550.1434899054757.JavaMail.zimbra@redhat.com --===============3013105112109221575== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable This is a multi-part message in MIME format. --------------000403020406090108090604 Content-Type: text/plain; charset=3Dutf-8; format=3Dflowed Content-Transfer-Encoding: 7bit Hi Allon, We are on the same track, since the additional steps I mentioned are = only for reducing downtime (big backing chain images should be copied = while VMs are still running and writing to a small active snapshot that = would be copied at the end). I'm basically reattaching an existing storage domain (with VM and = OVF_STORE disks) on another ovirt installation, but doing a copy of the = storage domain, instead of detaching it from the source data center. Benefit for oVirt : Live export/import The problem is that something is missing, since the VMs are not = displayed when I attach and activate the cloned storage domain on the = destination data center. Maybe the detach process does something that is required to show the VMs = later. Again, I'm not doing a detach, but cloning the storage domain = with active VMs. I saw in the logs that oVirt is getting the OVF files from a tar file. Start fetching OVF files from tar file File 'info.json' is not an OVF file, will be ignored. Finish to fetch OVF files from tar file. The number of OVF entities = are 0 _*Maybe this tar file is written by the detach process? What else could = be missing?*_ I reported and shared the logs here: https://bugzilla.redhat.com/show_bug.cgi?id=3D1234137 On 21-06-2015 12:04, Allon Mureinik wrote: > Another way, if you have a domain to spare, would be to detach the domain= containing the VM and attaching it to another setup. > Otherwise, you're limited to either an export domain (which requires copy= ing twice, as you mentioned), or some manual procedure like you suggested. > > ----- Original Message ----- >> From: "Christopher Pereira" >> To: devel(a)ovirt.org >> Sent: Saturday, June 20, 2015 2:48:20 AM >> Subject: [ovirt-devel] Live export/import >> >> Hi, >> >> I would like to migrate a VM between two different ovirt installations w= ith >> minimum down time. >> >> Using a export domain is slow (requires copying twice) and requires to s= top >> the VM. >> >> It seems like the best option is to 1) create a snapshot, 2) transfer the >> backing chain images and OVF files to the destination storage domain 3) = stop >> the VM, 4) transfer the active snapshot and 5) import the VM from the >> destination storage domain. >> >> Can you please comment and suggest other alternatives? >> >> Thanks. >> >> _______________________________________________ >> Devel mailing list >> Devel(a)ovirt.org >> http://lists.ovirt.org/mailman/listinfo/devel >> >> >> --------------000403020406090108090604 Content-Type: text/html; charset=3Dutf-8 Content-Transfer-Encoding: 8bit Hi Allon,

We are on the same track, since the additional steps I mentioned are only for reducing downtime (big backing chain images should be copied while VMs are still running and writing to a small active snapshot that would be copied at the end).

I'm basically reattaching an existing storage domain (with VM and OVF_STORE disks) on another ovirt installation, but doing a copy of the storage domain, instead of detaching it from the source data center.

Benefit for oVirt : Live export/import

The problem is that something is missing, since the VMs are not displayed when I attach and activate the cloned storage domain on the destination data center.
Maybe the detach process does something that is required to show the VMs later. Again, I'm not doing a detach, but cloning the storage domain with active VMs.
I saw in the logs that oVirt is getting the OVF files from a tar file.

=C2=A0=C2=A0=C2=A0 Start fetching OVF files from tar file
=C2=A0=C2=A0=C2=A0 File 'info.json' is not an OVF file, will be ignored= .
=C2=A0=C2=A0=C2=A0 Finish to fetch OVF files from tar file. The number = of OVF entities are 0

Maybe this tar file is written by the detach process? What else could be missing?

I reported and shared the logs here:
https://bugzilla.redhat.com/show_bug.cgi?id=3D12= 34137

On 21-06-2015 12:04, Allon Mureinik wrote:
Another way, if you have a domain to spare, would be t=
o detach the domain containing the VM and attaching it to another setup.
Otherwise, you're limited to either an export domain (which requires copyin=
g twice, as you mentioned), or some manual procedure like you suggested.

----- Original Message -----
From: "Christopher Pereira" <kripper(a)imatronix.c=
l>
To: devel(a)ovirt.org
Sent: Saturday, June 20, 2015 2:48:20 AM
Subject: [ovirt-devel] Live export/import

Hi,

I would like to migrate a VM between two different ovirt installations with
minimum down time.

Using a export domain is slow (requires copying twice) and requires to stop
the VM.

It seems like the best option is to 1) create a snapshot, 2) transfer the
backing chain images and OVF files to the destination storage domain 3) stop
the VM, 4) transfer the active snapshot and 5) import the VM from the
destination storage domain.

Can you please comment and suggest other alternatives?

Thanks.

_______________________________________________
Devel mailing list
Dev=
el(a)ovirt.org
http://lists.ovirt.org/mailman/listinfo/devel




    

--------------000403020406090108090604-- --===============3013105112109221575== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" VGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC4KLS0tLS0tLS0tLS0t LS0wMDA0MDMwMjA0MDYwOTAxMDgwOTA2MDQKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy c2V0PXV0Zi04OyBmb3JtYXQ9Zmxvd2VkCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQK CkhpIEFsbG9uLAoKV2UgYXJlIG9uIHRoZSBzYW1lIHRyYWNrLCBzaW5jZSB0aGUgYWRkaXRpb25h bCBzdGVwcyBJIG1lbnRpb25lZCBhcmUgCm9ubHkgZm9yIHJlZHVjaW5nIGRvd250aW1lIChiaWcg YmFja2luZyBjaGFpbiBpbWFnZXMgc2hvdWxkIGJlIGNvcGllZCAKd2hpbGUgVk1zIGFyZSBzdGls bCBydW5uaW5nIGFuZCB3cml0aW5nIHRvIGEgc21hbGwgYWN0aXZlIHNuYXBzaG90IHRoYXQgCndv dWxkIGJlIGNvcGllZCBhdCB0aGUgZW5kKS4KCkknbSBiYXNpY2FsbHkgcmVhdHRhY2hpbmcgYW4g ZXhpc3Rpbmcgc3RvcmFnZSBkb21haW4gKHdpdGggVk0gYW5kIApPVkZfU1RPUkUgZGlza3MpIG9u IGFub3RoZXIgb3ZpcnQgaW5zdGFsbGF0aW9uLCBidXQgZG9pbmcgYSBjb3B5IG9mIHRoZSAKc3Rv cmFnZSBkb21haW4sIGluc3RlYWQgb2YgZGV0YWNoaW5nIGl0IGZyb20gdGhlIHNvdXJjZSBkYXRh IGNlbnRlci4KCkJlbmVmaXQgZm9yIG9WaXJ0IDogTGl2ZSBleHBvcnQvaW1wb3J0CgpUaGUgcHJv YmxlbSBpcyB0aGF0IHNvbWV0aGluZyBpcyBtaXNzaW5nLCBzaW5jZSB0aGUgVk1zIGFyZSBub3Qg CmRpc3BsYXllZCB3aGVuIEkgYXR0YWNoIGFuZCBhY3RpdmF0ZSB0aGUgY2xvbmVkIHN0b3JhZ2Ug ZG9tYWluIG9uIHRoZSAKZGVzdGluYXRpb24gZGF0YSBjZW50ZXIuCk1heWJlIHRoZSBkZXRhY2gg cHJvY2VzcyBkb2VzIHNvbWV0aGluZyB0aGF0IGlzIHJlcXVpcmVkIHRvIHNob3cgdGhlIFZNcyAK bGF0ZXIuIEFnYWluLCBJJ20gbm90IGRvaW5nIGEgZGV0YWNoLCBidXQgY2xvbmluZyB0aGUgc3Rv cmFnZSBkb21haW4gCndpdGggYWN0aXZlIFZNcy4KSSBzYXcgaW4gdGhlIGxvZ3MgdGhhdCBvVmly dCBpcyBnZXR0aW5nIHRoZSBPVkYgZmlsZXMgZnJvbSBhIHRhciBmaWxlLgoKICAgICBTdGFydCBm ZXRjaGluZyBPVkYgZmlsZXMgZnJvbSB0YXIgZmlsZQogICAgIEZpbGUgJ2luZm8uanNvbicgaXMg bm90IGFuIE9WRiBmaWxlLCB3aWxsIGJlIGlnbm9yZWQuCiAgICAgRmluaXNoIHRvIGZldGNoIE9W RiBmaWxlcyBmcm9tIHRhciBmaWxlLiBUaGUgbnVtYmVyIG9mIE9WRiBlbnRpdGllcyAKYXJlIDAK Cl8qTWF5YmUgdGhpcyB0YXIgZmlsZSBpcyB3cml0dGVuIGJ5IHRoZSBkZXRhY2ggcHJvY2Vzcz8g V2hhdCBlbHNlIGNvdWxkIApiZSBtaXNzaW5nPypfCgpJIHJlcG9ydGVkIGFuZCBzaGFyZWQgdGhl IGxvZ3MgaGVyZToKaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0x MjM0MTM3CgpPbiAyMS0wNi0yMDE1IDEyOjA0LCBBbGxvbiBNdXJlaW5payB3cm90ZToKPiBBbm90 aGVyIHdheSwgaWYgeW91IGhhdmUgYSBkb21haW4gdG8gc3BhcmUsIHdvdWxkIGJlIHRvIGRldGFj aCB0aGUgZG9tYWluIGNvbnRhaW5pbmcgdGhlIFZNIGFuZCBhdHRhY2hpbmcgaXQgdG8gYW5vdGhl ciBzZXR1cC4KPiBPdGhlcndpc2UsIHlvdSdyZSBsaW1pdGVkIHRvIGVpdGhlciBhbiBleHBvcnQg ZG9tYWluICh3aGljaCByZXF1aXJlcyBjb3B5aW5nIHR3aWNlLCBhcyB5b3UgbWVudGlvbmVkKSwg b3Igc29tZSBtYW51YWwgcHJvY2VkdXJlIGxpa2UgeW91IHN1Z2dlc3RlZC4KPgo+IC0tLS0tIE9y aWdpbmFsIE1lc3NhZ2UgLS0tLS0KPj4gRnJvbTogIkNocmlzdG9waGVyIFBlcmVpcmEiIDxrcmlw cGVyQGltYXRyb25peC5jbD4KPj4gVG86IGRldmVsQG92aXJ0Lm9yZwo+PiBTZW50OiBTYXR1cmRh eSwgSnVuZSAyMCwgMjAxNSAyOjQ4OjIwIEFNCj4+IFN1YmplY3Q6IFtvdmlydC1kZXZlbF0gTGl2 ZSBleHBvcnQvaW1wb3J0Cj4+Cj4+IEhpLAo+Pgo+PiBJIHdvdWxkIGxpa2UgdG8gbWlncmF0ZSBh IFZNIGJldHdlZW4gdHdvIGRpZmZlcmVudCBvdmlydCBpbnN0YWxsYXRpb25zIHdpdGgKPj4gbWlu aW11bSBkb3duIHRpbWUuCj4+Cj4+IFVzaW5nIGEgZXhwb3J0IGRvbWFpbiBpcyBzbG93IChyZXF1 aXJlcyBjb3B5aW5nIHR3aWNlKSBhbmQgcmVxdWlyZXMgdG8gc3RvcAo+PiB0aGUgVk0uCj4+Cj4+ IEl0IHNlZW1zIGxpa2UgdGhlIGJlc3Qgb3B0aW9uIGlzIHRvIDEpIGNyZWF0ZSBhIHNuYXBzaG90 LCAyKSB0cmFuc2ZlciB0aGUKPj4gYmFja2luZyBjaGFpbiBpbWFnZXMgYW5kIE9WRiBmaWxlcyB0 byB0aGUgZGVzdGluYXRpb24gc3RvcmFnZSBkb21haW4gMykgc3RvcAo+PiB0aGUgVk0sIDQpIHRy YW5zZmVyIHRoZSBhY3RpdmUgc25hcHNob3QgYW5kIDUpIGltcG9ydCB0aGUgVk0gZnJvbSB0aGUK Pj4gZGVzdGluYXRpb24gc3RvcmFnZSBkb21haW4uCj4+Cj4+IENhbiB5b3UgcGxlYXNlIGNvbW1l bnQgYW5kIHN1Z2dlc3Qgb3RoZXIgYWx0ZXJuYXRpdmVzPwo+Pgo+PiBUaGFua3MuCj4+Cj4+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IERldmVsIG1h aWxpbmcgbGlzdAo+PiBEZXZlbEBvdmlydC5vcmcKPj4gaHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RldmVsCj4+Cj4+Cj4+CgoKLS0tLS0tLS0tLS0tLS0wMDA0MDMwMjA0 MDYwOTAxMDgwOTA2MDQKQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgKQ29u dGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKPGh0bWw+CiAgPGhlYWQ+CiAgICA8bWV0YSBj b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw ZSI+CiAgPC9oZWFkPgogIDxib2R5IGJnY29sb3I9IiNGRkZGRkYiIHRleHQ9IiMwMDAwMDAiPgog ICAgSGkgQWxsb24sPGJyPgogICAgPGJyPgogICAgV2UgYXJlIG9uIHRoZSBzYW1lIHRyYWNrLCBz aW5jZSB0aGUgYWRkaXRpb25hbCBzdGVwcyBJIG1lbnRpb25lZCBhcmUKICAgIG9ubHkgZm9yIHJl ZHVjaW5nIGRvd250aW1lIChiaWcgYmFja2luZyBjaGFpbiBpbWFnZXMgc2hvdWxkIGJlCiAgICBj b3BpZWQgd2hpbGUgVk1zIGFyZSBzdGlsbCBydW5uaW5nIGFuZCB3cml0aW5nIHRvIGEgc21hbGwg YWN0aXZlCiAgICBzbmFwc2hvdCB0aGF0IHdvdWxkIGJlIGNvcGllZCBhdCB0aGUgZW5kKS48YnI+ CiAgICA8YnI+CiAgICBJJ20gYmFzaWNhbGx5IHJlYXR0YWNoaW5nIGFuIGV4aXN0aW5nIHN0b3Jh Z2UgZG9tYWluICh3aXRoIFZNIGFuZAogICAgT1ZGX1NUT1JFIGRpc2tzKSBvbiBhbm90aGVyIG92 aXJ0IGluc3RhbGxhdGlvbiwgYnV0IGRvaW5nIGEgY29weSBvZgogICAgdGhlIHN0b3JhZ2UgZG9t YWluLCBpbnN0ZWFkIG9mIGRldGFjaGluZyBpdCBmcm9tIHRoZSBzb3VyY2UgZGF0YQogICAgY2Vu dGVyLjxicj4KICAgIDxicj4KICAgIEJlbmVmaXQgZm9yIG9WaXJ0IDogTGl2ZSBleHBvcnQvaW1w b3J0PGJyPgogICAgPGJyPgogICAgVGhlIHByb2JsZW0gaXMgdGhhdCBzb21ldGhpbmcgaXMgbWlz c2luZywgc2luY2UgdGhlIFZNcyBhcmUgbm90CiAgICBkaXNwbGF5ZWQgd2hlbiBJIGF0dGFjaCBh bmQgYWN0aXZhdGUgdGhlIGNsb25lZCBzdG9yYWdlIGRvbWFpbiBvbgogICAgdGhlIGRlc3RpbmF0 aW9uIGRhdGEgY2VudGVyLjxicj4KICAgIE1heWJlIHRoZSBkZXRhY2ggcHJvY2VzcyBkb2VzIHNv bWV0aGluZyB0aGF0IGlzIHJlcXVpcmVkIHRvIHNob3cgdGhlCiAgICBWTXMgbGF0ZXIuIEFnYWlu LCBJJ20gbm90IGRvaW5nIGEgZGV0YWNoLCBidXQgY2xvbmluZyB0aGUgc3RvcmFnZQogICAgZG9t YWluIHdpdGggYWN0aXZlIFZNcy48YnI+CiAgICBJIHNhdyBpbiB0aGUgbG9ncyB0aGF0IG9WaXJ0 IGlzIGdldHRpbmcgdGhlIE9WRiBmaWxlcyBmcm9tIGEgdGFyCiAgICBmaWxlLjxicj4KICAgIDxi cj4KICAgIMKgwqDCoCBTdGFydCBmZXRjaGluZyBPVkYgZmlsZXMgZnJvbSB0YXIgZmlsZTxicj4K ICAgIMKgwqDCoCBGaWxlICdpbmZvLmpzb24nIGlzIG5vdCBhbiBPVkYgZmlsZSwgd2lsbCBiZSBp Z25vcmVkLjxicj4KICAgIMKgwqDCoCBGaW5pc2ggdG8gZmV0Y2ggT1ZGIGZpbGVzIGZyb20gdGFy IGZpbGUuIFRoZSBudW1iZXIgb2YgT1ZGCiAgICBlbnRpdGllcyBhcmUgMDxicj4KICAgIDxicj4K ICAgIDx1PjxiPk1heWJlIHRoaXMgdGFyIGZpbGUgaXMgd3JpdHRlbiBieSB0aGUgZGV0YWNoIHBy b2Nlc3M/IFdoYXQKICAgICAgICBlbHNlIGNvdWxkIGJlIG1pc3Npbmc/PC9iPjwvdT48YnI+CiAg ICA8YnI+CiAgICBJIHJlcG9ydGVkIGFuZCBzaGFyZWQgdGhlIGxvZ3MgaGVyZTo8YnI+CiAgICA8 YSBjbGFzcz0ibW96LXR4dC1saW5rLWZyZWV0ZXh0IiBocmVmPSJodHRwczovL2J1Z3ppbGxhLnJl ZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTEyMzQxMzciPmh0dHBzOi8vYnVnemlsbGEucmVkaGF0 LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDEzNzwvYT48YnI+CiAgICA8YnI+CiAgICA8ZGl2IGNs YXNzPSJtb3otc2lnbmF0dXJlIj4KICAgICAgPHN0eWxlPgouc2lnbmF0dXJlLCAuc21hbGwtc2ln bmF0dXJlIHsKCWZvbnQtZmFtaWx5OiJDYWxpYnJpIiwic2Fucy1zZXJpZiI7bXNvLWZhcmVhc3Qt Zm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7Cgljb2xvcjojN0Y3RjdGOwp9Cgouc2lnbmF0 dXJlIHsKCWZvbnQtc2l6ZToxMHB0Owp9Cgouc21hbGwtc2lnbmF0dXJlIHsKCWZvbnQtc2l6ZTo4 cHQ7Cn08L3N0eWxlPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ibW96LWNpdGUtcHJlZml4Ij5PbiAy MS0wNi0yMDE1IDEyOjA0LCBBbGxvbiBNdXJlaW5pawogICAgICB3cm90ZTo8YnI+CiAgICA8L2Rp dj4KICAgIDxibG9ja3F1b3RlCiAgICAgIGNpdGU9Im1pZDo0NzcxMDc2OC41NTY5NTUwLjE0MzQ4 OTkwNTQ3NTcuSmF2YU1haWwuemltYnJhQHJlZGhhdC5jb20iCiAgICAgIHR5cGU9ImNpdGUiPgog ICAgICA8cHJlIHdyYXA9IiI+QW5vdGhlciB3YXksIGlmIHlvdSBoYXZlIGEgZG9tYWluIHRvIHNw YXJlLCB3b3VsZCBiZSB0byBkZXRhY2ggdGhlIGRvbWFpbiBjb250YWluaW5nIHRoZSBWTSBhbmQg YXR0YWNoaW5nIGl0IHRvIGFub3RoZXIgc2V0dXAuCk90aGVyd2lzZSwgeW91J3JlIGxpbWl0ZWQg dG8gZWl0aGVyIGFuIGV4cG9ydCBkb21haW4gKHdoaWNoIHJlcXVpcmVzIGNvcHlpbmcgdHdpY2Us IGFzIHlvdSBtZW50aW9uZWQpLCBvciBzb21lIG1hbnVhbCBwcm9jZWR1cmUgbGlrZSB5b3Ugc3Vn Z2VzdGVkLgoKLS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0tLQo8L3ByZT4KICAgICAgPGJsb2Nr cXVvdGUgdHlwZT0iY2l0ZSI+CiAgICAgICAgPHByZSB3cmFwPSIiPkZyb206ICJDaHJpc3RvcGhl ciBQZXJlaXJhIiA8YSBjbGFzcz0ibW96LXR4dC1saW5rLXJmYzIzOTZFIiBocmVmPSJtYWlsdG86 a3JpcHBlckBpbWF0cm9uaXguY2wiPiZsdDtrcmlwcGVyQGltYXRyb25peC5jbCZndDs8L2E+ClRv OiA8YSBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJldmlhdGVkIiBocmVmPSJtYWlsdG86ZGV2ZWxA b3ZpcnQub3JnIj5kZXZlbEBvdmlydC5vcmc8L2E+ClNlbnQ6IFNhdHVyZGF5LCBKdW5lIDIwLCAy MDE1IDI6NDg6MjAgQU0KU3ViamVjdDogW292aXJ0LWRldmVsXSBMaXZlIGV4cG9ydC9pbXBvcnQK CkhpLAoKSSB3b3VsZCBsaWtlIHRvIG1pZ3JhdGUgYSBWTSBiZXR3ZWVuIHR3byBkaWZmZXJlbnQg b3ZpcnQgaW5zdGFsbGF0aW9ucyB3aXRoCm1pbmltdW0gZG93biB0aW1lLgoKVXNpbmcgYSBleHBv cnQgZG9tYWluIGlzIHNsb3cgKHJlcXVpcmVzIGNvcHlpbmcgdHdpY2UpIGFuZCByZXF1aXJlcyB0 byBzdG9wCnRoZSBWTS4KCkl0IHNlZW1zIGxpa2UgdGhlIGJlc3Qgb3B0aW9uIGlzIHRvIDEpIGNy ZWF0ZSBhIHNuYXBzaG90LCAyKSB0cmFuc2ZlciB0aGUKYmFja2luZyBjaGFpbiBpbWFnZXMgYW5k IE9WRiBmaWxlcyB0byB0aGUgZGVzdGluYXRpb24gc3RvcmFnZSBkb21haW4gMykgc3RvcAp0aGUg Vk0sIDQpIHRyYW5zZmVyIHRoZSBhY3RpdmUgc25hcHNob3QgYW5kIDUpIGltcG9ydCB0aGUgVk0g ZnJvbSB0aGUKZGVzdGluYXRpb24gc3RvcmFnZSBkb21haW4uCgpDYW4geW91IHBsZWFzZSBjb21t ZW50IGFuZCBzdWdnZXN0IG90aGVyIGFsdGVybmF0aXZlcz8KClRoYW5rcy4KCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRldmVsIG1haWxpbmcgbGlzdAo8 YSBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJldmlhdGVkIiBocmVmPSJtYWlsdG86RGV2ZWxAb3Zp cnQub3JnIj5EZXZlbEBvdmlydC5vcmc8L2E+CjxhIGNsYXNzPSJtb3otdHh0LWxpbmstZnJlZXRl eHQiIGhyZWY9Imh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby9kZXZlbCI+ aHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RldmVsPC9hPgoKCgo8L3By ZT4KICAgICAgPC9ibG9ja3F1b3RlPgogICAgICA8cHJlIHdyYXA9IiI+CjwvcHJlPgogICAgPC9i bG9ja3F1b3RlPgogICAgPGJyPgogIDwvYm9keT4KPC9odG1sPgoKLS0tLS0tLS0tLS0tLS0wMDA0 MDMwMjA0MDYwOTAxMDgwOTA2MDQtLQo= --===============3013105112109221575==--