From mboxrd@z Thu Jan 1 00:00:00 1970 From: xxhdx1985126 Subject: Re:Re:Re: Re:Re:Re:Re: How does rbd-mirror preserve the order of WRITE operations that finished on the primary cluster Date: Tue, 6 Jun 2017 15:40:23 +0800 (CST) Message-ID: <762fe21a.9068.15c7c58f41b.Coremail.xxhdx1985126@163.com> References: <70c5c552.66e6.15c766dce68.Coremail.xxhdx1985126@163.com> <75e21ee8.f334.15c78f23929.Coremail.xxhdx1985126@163.com> <428d3e79.3d2.15c7a56a64f.Coremail.xxhdx1985126@163.com> <448ceff0.46ce.15c7b5c0b16.Coremail.xxhdx1985126@163.com> <344a1254.5a75.15c7b942fa4.Coremail.xxhdx1985126@163.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Return-path: Received: from m13-98.163.com ([220.181.13.98]:33498 "EHLO m13-98.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751194AbdFFHka (ORCPT ); Tue, 6 Jun 2017 03:40:30 -0400 In-Reply-To: <344a1254.5a75.15c7b942fa4.Coremail.xxhdx1985126@163.com> Sender: ceph-devel-owner@vger.kernel.org List-ID: To: Haomai Wang Cc: Sage Weil , jdillama@redhat.com, "ceph-devel@vger.kernel.org" ClVoLCBzb3JyeSwgbXkgZmF1bHQuIE9TRCBkb2VzIHRyZWF0IHJlcXVlc3RzIGZyb20gZGlmZmVy ZW50IGNsaWVudHMgc2VwZXJhdGVseS4KCkJ5IHRoZSB3YXksIEkndmUgYSBmdXJ0aGVyIHF1ZXN0 aW9uLiBTYXksIHRoZXJlIGlzIGEgd3JpdGUgb3BlcmF0aW9uOiBXUklURShvYmpBLm9mZj0zLCBv YmpCLm9mZj00KSwgaWYsIGR1ZSB0byBzb21lIHJlYXNvbihwcmltYXJ5IGNsdXN0ZXIncyBPU0Qg ZmFpbHVyZSwgZm9yIGV4YW1wbGUpLCB0aGUgIm9iakIiIHBhcnQgb2YgdGhlIG9wZXJhdGlvbiBj YW4gbm90IGJlIHJlcGxpY2F0ZWQgdG8gc2xhdmUgY2x1c3RlciwgY2FuIHRoZSAib2JqQSIgcGFy dCBhbmQgbm9uLW9iakIgcGFydCBvZiBzdWJzZXF1ZW50IHdyaXRlcyB0aGF0IGludm9sdmUgb2Jq QiBzdGlsbCBiZSByZXBsaWNhdGVkPwoKQXQgMjAxNy0wNi0wNiAxMjowNToyOCwgInh4aGR4MTk4 NTEyNiIgPHh4aGR4MTk4NTEyNkAxNjMuY29tPiB3cm90ZToKPgo+WWVzLCBpdCBpcyBmcm9tIHR3 byBjbGllbnRzLCBidXQgaXQgbG9va3MgdG8gbWUgdGhhdCBPU0QgdHJlYXRzIHJlcXVlc3RzIGZy b20gZGlmZmVyZW50IGNsaWVudHMgdW5pZm9ybWx5LiBTbyBJIHRoaW5rLCBpbiB0aGUgc2NlbmFy aW8gb2YgcmJkLW1pcnJvciwgcmVxdWVzdHMgZnJvbSB0aGUgc2FtZSByYmQtbWlycm9yIGluc3Rh bmNlIGNhbiBhbHNvIGdldCBkaXNvcmRlcmVkLgo+Cj4KPkF0IDIwMTctMDYtMDYgMTE6MTM6NDgs ICJIYW9tYWkgV2FuZyIgPGhhb21haUB4c2t5LmNvbT4gd3JvdGU6Cj4+T24gVHVlLCBKdW4gNiwg MjAxNyBhdCAxMTowNCBBTSwgeHhoZHgxOTg1MTI2IDx4eGhkeDE5ODUxMjZAMTYzLmNvbT4gd3Jv dGU6Cj4+Pgo+Pj4gSSBzdWJtaXR0ZWQgYW4gaXNzdWUgYWJvdXQgdGhyZWUgbW9udGhzIGFnbzog aHR0cDovL3RyYWNrZXIuY2VwaC5jb20vaXNzdWVzLzE5MjUyLCBpbiB3aGljaCBJIHN1Ym1pdHRl ZCBwYXJ0IG9mIG15IGxvZy4KPj4+Cj4+Cj4+d2hhdCdzIHlvdXIgdXNlIGNhc2U/Cj4+SSBub3Rp Y2VkIHlvdXIgZmlyc3Qgc2VudGVuY2UgIlJlY2VudGx5LCBpbiBvdXIgdGVzdCwgd2UgZm91bmQg YQo+PnN0cmFuZ2UgcGhlbm9tZW5vbjogYSBSRUFEIHJlcSBmcm9tIGNsaWVudCBBIHRoYXQgYXJy aXZlZCBsYXRlciB0aGFuIGEKPj5XUklURSByZXEgZnJvbSBjbGllbnQgQiBpcyBmaW5pc2hlZCBl YWxpZXIgdGhhbiB0aGF0IFdSSVRFIHJlcS4iLgo+Pgo+PklzIGl0IG1lYW5zIHRoZSB0d28gcmVx dWVzdHMgZnJvbSB0d28gY2xpZW50PyBpZiBzbywgaXQncyBleHBlY3RlZC4KPj4KPj4+Cj4+PiBB dCAyMDE3LTA2LTA2IDA2OjUwOjQ5LCAieHhoZHgxOTg1MTI2IiA8eHhoZHgxOTg1MTI2QDE2My5j b20+IHdyb3RlOgo+Pj4+Cj4+Pj5UaGFua3MgZm9yIHlvdXIgcmVwbHk6LSkKPj4+Pgo+Pj4+VGhl IHJlcXVldWVpbmcgaXMgcHJvdGVjdGVkIGJ5IFBHOjpsb2NrLCBob3dldmVyLCB3aGVuIHRoZSB3 cml0ZSByZXF1ZXN0IGlzIGFkZCB0byB0aGUgdHJhbnNhY3Rpb24gcXVldWUsIGl0J3MgbGVmdCBm b3IgdGhlIGpvdXJuYWxpbmcgdGhyZWFkIGFuZCBmaWxlc3RvcmUgdGhyZWFkLCB0byBkbyB0aGUg YWN0dWFsIHdyaXRlLCB0aGUgT1NEJ3Mgd29ya2VyIHRocmVhZCBqdXN0IHJlbGVhc2UgdGhlIFBH Ojpsb2NrIGFuZCB0cnkgdG8gcmV0cmlldmUgdGhlIG5leHQgcmVxIGluIE9TRCdzIHdvcmsgcXVl dWUsIHdoaWNoIGdpdmVzIHRoZSBvcHBvcnR1bml0eSBmb3IgbGF0ZXIgcmVxcyB0byBnbyBiZWZv cmUgcHJldmlvdXMgcmVxcy4gVGhpcyBkaWQgaGFwcGVuZWQgaW4gb3VyIGV4cGVyaW1lbnQuCj4+ Pj4KPj4+Pkhvd2V2ZXIsIHNpbmNlIHRoaXMgZXhwZXJpbWVudCB3YXMgZG9uZSBzZXJ2ZXJhbCBt b250aCBhZ28sIEknbGwgdXBsb2FkIHRoZSBsb2cgaWYgSSBjYW4gZmluZCBpdCwgb3IgSSdsbCB0 cnkgdG8gcmVwcm9kdWNlIGl0Lgo+Pj4+Cj4+Pj5BdCAyMDE3LTA2LTA2IDA2OjIyOjM2LCAiU2Fn ZSBXZWlsIiA8c3dlaWxAcmVkaGF0LmNvbT4gd3JvdGU6Cj4+Pj4+T24gVHVlLCA2IEp1biAyMDE3 LCB4eGhkeDE5ODUxMjYgd3JvdGU6Cj4+Pj4+PiBUaGFua3MgZm9yIHlvdXIgcmVwbHk6LSkKPj4+ Pj4+Cj4+Pj4+PiBUaGUgcmVxdWV1ZWluZyBpcyBwcm90ZWN0ZWQgYnkgUEc6OmxvY2ssIGhvd2V2 ZXIsIHdoZW4gdGhlIHdyaXRlIHJlcXVlc3QgaXMKPj4+Pj4+IGFkZCB0byB0aGUgdHJhbnNhY3Rp b24gcXVldWUsIGl0J3MgbGVmdCBmb3IgdGhlIGpvdXJuYWxpbmcgdGhyZWFkIGFuZAo+Pj4+Pj4g ZmlsZXN0b3JlIHRocmVhZCwgdG8gZG8gdGhlIGFjdHVhbCB3cml0ZSwgdGhlIE9TRCdzIHdvcmtl ciB0aHJlYWQganVzdAo+Pj4+Pj4gcmVsZWFzZSB0aGUgUEc6OmxvY2sgYW5kIHRyeSB0byByZXRy aWV2ZSB0aGUgbmV4dCByZXEgaW4gT1NEJ3Mgd29yayBxdWV1ZSwKPj4+Pj4+IHdoaWNoIGdpdmVz IHRoZSBvcHBvcnR1bml0eSBmb3IgbGF0ZXIgcmVxcyB0byBnbyBiZWZvcmUgcHJldmlvdXMgcmVx cy4gVGhpcwo+Pj4+Pj4gZGlkIGhhcHBlbmVkIGluIG91ciBleHBlcmltZW50Lgo+Pj4+Pgo+Pj4+ PkZpbGVTdG9yZSBzaG91bGQgYWxzbyBzdHJpY3RseSBvcmRlciB0aGUgcmVxdWVzdHMgdmlhIHRo ZSBPcFNlcXVlbmNlci4KPj4+Pj4KPj4+Pj4+IEhvd2V2ZXIsIHNpbmNlIHRoaXMgZXhwZXJpbWVu dCB3YXMgZG9uZSBzZXJ2ZXJhbCBtb250aCBhZ28sIEknbGwgdXBsb2FkIHRoZQo+Pj4+Pj4gbG9n IGlmIEkgY2FuIGZpbmQgaXQsIG9yIEknbGwgdHJ5IHRvIHJlcHJvZHVjZSBpdC4KPj4+Pj4KPj4+ Pj5Pa2F5LCB0aGFua3MhCj4+Pj4+Cj4+Pj4+c2FnZQo+Pj4+Pgo+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+ IEF0IDIwMTctMDYtMDYgMDA6MjE6MzQsICJTYWdlIFdlaWwiIDxzd2VpbEByZWRoYXQuY29tPiB3 cm90ZToKPj4+Pj4+ID5PbiBNb24sIDUgSnVuIDIwMTcsIHh4aGR4MTk4NTEyNiB3cm90ZToKPj4+ Pj4+ID4+Cj4+Pj4+PiA+PiBVaCwgc29ycnksIEkgZG9uJ3QgcXVpdGUgZm9sbG93IHlvdS4gQWNj b3JkaW5nIHRvIG15IHVuZGVyc3RhbmRpbmcgb2YKPj4+Pj4+ID4+IHRoZSBzb3VyY2UgY29kZSBv ZiBPU0QgYW5kIG91ciBleHBlcmltZW50IHByZXZpb3VzbHkgbWVudGlvbmVkIGluCj4+Pj4+PiA+ PiAiaHR0cHM6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9jZXBoLXVzZXJzQGxpc3RzLmNlcGguY29t L21zZzM2MTc4Lmh0bWwiLAo+Pj4+Pj4gPj4gdGhlcmUgZXhpc3RzIHRoZSBmb2xsb3dpbmcgc2Nl bmFyaW8gd2hlcmUgdGhlIGFjdHVhbCBmaW5pc2hpbmcgb3JkZXIgb2YKPj4+Pj4+ID4+IHRoZSBX UklURXMgdGhhdCB0YXJnZXRzIHRoZSBzYW1lIG9iamVjdCBpcyBub3QgdGhlIHNhbWUgYXMgdGhl IG9yZGVyCj4+Pj4+PiA+PiB0aGV5IGFycml2ZWQgYXQgT1NELCB3aGljaCwgSSB0aGluaywgY291 bGQgYmUgYSBoaW50IHRoYXQgdGhlIG9yZGVyIG9mCj4+Pj4+PiA+PiB3cml0ZXMgZnJvbSBhIHNp bmdsZSBjbGllbnQgY29ubmVjdGlvbiB0byBhIHNpbmdsZSBPU0QgaXMgbm90IGd1cmFudGVlZDoK Pj4+Pj4+ID4KPj4+Pj4+ID5JZiBzbywgaXQgaXMgYSBidWcgdGhhdCBzaG91bGQgYmUgZml4ZWQg aW4gdGhlIE9TRC4gIHJiZC1taXJyb3IgcmVseWluZyBvbgo+Pj4+Pj4gPk9TRCBvcmRlcmluZyB0 byBiZSBjb3JyZWN0IGlzIHRvdGFsbHkgZmluZS0tbG90cyBvZiBvdGhlciBzdHVmZiBkb2VzIHRv by4KPj4+Pj4+ID4KPj4+Pj4+ID4+ICAgICAgIFNheSB0aHJlZSB3cml0ZXMgdGhhdCB0YXJnZXRp bmcgdGhlIHNhbWUgb2JqZWN0IEEgYXJyaXZlZCBhdCBhbgo+Pj4+Pj4gPj4gT1NEIGluIHRoZSBv cmRlcjogIldSSVRFIEEub2ZmIDEiLCAiV1JJVEUgQS5vZmYgMiIsICJXUklURSBBLm9mZiAzIi4g VGhlCj4+Pj4+PiA+PiBmaXJzdCB3cml0ZSwgIldSSVRFIEEub2ZmIDEiLCBhY3F1aXJlcyB0aGUg b2JqZWN0Y29udGV4dCBsb2NrIG9mIG9iamVjdAo+Pj4+Pj4gPj4gQSwgYW5kIGlzIHB1dCBpbnRv IGEgdHJhbnNhY3Rpb24gcXVldWUgdG8gZ28gdGhyb3VnaCB0aGUgImpvdXJuYWxpbmcgKwo+Pj4+ Pj4gPj4gZmlsZSBzeXN0ZW0gd3JpdGUiIHByb2NlZHVyZS4gQmVmb3JlIGl0J3MgZmluaXNoZWQs IGEgdGhyZWFkIG9mCj4+Pj4+PiA+PiBPU0Q6Om9zZF9vcF90cCByZXRyaWV2ZWQgdGhlIHNlY29u ZCB3cml0ZSBhbmQgYXR0ZW1wdCB0byBwcm9jZXNzIGl0Cj4+Pj4+PiA+PiBkdXJpbmcgd2hpY2gg aXQgZmluZHMgdGhhdCB0aGUgb2JqZWN0Y29udGV4dCBsb2NrIG9mIEEgaXMgaGVsZCBieSBhCj4+ Pj4+PiA+PiBwcmV2aW91cyBXUklURSBhbmQgcHV0IHRoZSBzZWNvbmQgd3JpdGUgaW50byBBJ3Mg cndzdGF0ZTo6d2FpdGVycyBxdWV1ZS4KPj4+Pj4+ID4+IEl0J3Mgb25seSB3aGVuIHRoZSBmaXJz dCB3cml0ZSBpcyBmaW5pc2hlZCBvbiBhbGwgcmVwbGljYSBPU0RzIHRoYXQgdGhlCj4+Pj4+PiA+ PiBzZWNvbmQgd3JpdGUgaXMgcHV0IGJhY2sgaW50byBPU0Q6OnNoYXJkZWRvcF93cSB0byBiZSBw cm9jZXNzZWQgYWdhaW4gaW4KPj4+Pj4+ID4+IHRoZSBmdXR1cmUuIElmLCBhZnRlciB0aGUgc2Vj b25kIHdyaXRlIGlzIHB1dCBpbnRvIHJ3c3RhdGU6OndhaXRlcnMKPj4+Pj4+ID4+IHF1ZXVlIGFu ZCB0aGUgZmlyc3Qgd3JpdGUgaXMgZmluaXNoZWQgb24gYWxsIHJlcGxpY2EgT1NEcywgaW4gd2hp Y2ggY2FzZQo+Pj4+Pj4gPj4gdGhlIGZpcnN0IHdyaXRlIHJlbGVhc2UgdGhlIEEncyBvYmplY3Rj b250ZXh0IGxvY2ssIGJ1dCBiZWZvcmUgdGhlCj4+Pj4+PiA+PiBzZWNvbmQgd3JpdGUgaXMgcHV0 IGJhY2sgaW50byBPU0Q6OnNoYXJkZWRvcF93cSwgdGhlIHRoaXJkIHdyaXRlIGlzCj4+Pj4+PiA+ PiByZXRyaWV2ZWQgYnkgT1NEJ3Mgd29ya2VyIHRocmVhZCwgaXQgd291bGQgZ2V0IHByb2Nlc3Nl ZCBhcyBubyBwcmV2aW91cwo+Pj4+Pj4gPj4gb3BlcmF0aW9uIGlzIGhvbGRpbmcgQSdzIG9iamVj dGNvbnRleHQgbG9jaywgaW4gd2hpY2ggY2FzZSwgdGhlIGFjdHVhbAo+Pj4+Pj4gPj4gZmluaXNo aW5nIG9yZGVyIG9mIHRoZSB0aHJlZSB3cml0ZXMgaXMgIldSSVRFIEEub2ZmIDEiLCAiV1JJVEUg QS5vZmYgMyIsCj4+Pj4+PiA+PiAiV1JJVEUgQS5vZmYgMiIsIHdoaWNoIGlzIGRpZmZlcmVudCBm cm9tIHRoZSBvcmRlciB0aGV5IGFycml2ZWQuCj4+Pj4+PiA+Cj4+Pj4+PiA+VGhpcyBzaG91bGQg bm90IGhhcHBlbi4gIChJZiBpdCBoYXBwZW5lZCBpbiB0aGUgcGFzdCwgaXQgd2FzIGEgYnVnLCBi dXQgSQo+Pj4+Pj4gPndvdWxkIGV4cGVjdCBpdCBpcyBmaXhlZCBpbiB0aGUgbGF0ZXN0IGhhbW1l ciBwb2ludCByZWxlYXNlLCBhbmQgaW4gamV3ZWwKPj4+Pj4+ID5hbmQgbWFzdGVyLikgIFRoZSBy ZXF1ZWluZyBpcyBkb25lIHVuZGVyIHRoZSBQRzo6bG9jayBzbyB0aGF0IHJlcXVldWVpbmcKPj4+ Pj4+ID5wcmVzZXJ2ZXMgb3JkZXJpbmcuICBBIGZhaXIgYml0IG9mIGNvZGUgYW5kIGEgKmxvdCog b2YgdGVzdGluZyBnb2VzIGludG8KPj4+Pj4+ID5lbnN1cmluZyB0aGF0IHRoaXMgaXMgdHJ1ZS4g IElmIHlvdSd2ZSBzZWVuIHRoaXMgcmVjZW50bHksIHRoZW4gYQo+Pj4+Pj4gPnJlcHJvZHVjZXIg b3IgbG9nIChhbmQgdHJhY2tlciB0aWNrZXQpIHdvdWxkIGJlIHdlbGNvbWUhICBXaGVuIHdlIHNl ZSBhbnkKPj4+Pj4+ID5vcmRlcmluZyBlcnJvcnMgaW4gUUEgd2UgdGFrZSB0aGVtIHZlcnkgc2Vy aW91c2x5IGFuZCBmaXggdGhlbSBxdWlja2x5Lgo+Pj4+Pj4gPgo+Pj4+Pj4gPllvdSBtaWdodCBi ZSBpbnRlcmVzdGVkIGluIHRoZSBvc2RfZGVidWdfb3Bfb3JkZXIgY29uZmlnIG9wdGlvbiwgd2hp Y2ggd2UKPj4+Pj4+ID5lbmFibGUgaW4gcWEsIHdoaWNoIGFzc2VydHMgaWYgaXQgc2VlcyBvcHMg ZnJvbSBhIGNsaWVudCBhcnJpdmUgb3V0IG9mCj4+Pj4+PiA+b3JkZXIuICBUaGUgY2VwaF90ZXN0 X3JhZG9zIHdvcmtsb2FkIGdlbmVyYXRlIHRoYXQgd2UgdXNlIGZvciBtdWNoIG9mIHRoZQo+Pj4+ Pj4gPnJhZG9zIHFhIHN1aXRlIGFsc28gZmFpbHMgaWYgaXQgc2VlcyBvdXQgb2Ygb3JkZXIgb3Bl cmF0aW9ucy4KPj4+Pj4+ID4KPj4+Pj4+ID5zYWdlCj4+Pj4+PiA+Cj4+Pj4+PiA+Pgo+Pj4+Pj4g Pj4gSW4gaHR0cHM6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9jZXBoLXVzZXJzQGxpc3RzLmNlcGgu Y29tL21zZzM2MTc4Lmh0bWwsCj4+Pj4+PiB3ZSBzaG93ZWQgb3VyIGV4cGVyaW1lbnQgcmVzdWx0 IHdoaWNoIGlzIGV4YWN0bHkgYXMgdGhlIGFib3ZlIHNjZW5hcmlvIHNob3dzCj4+Pj4+PiAuCj4+ Pj4+PiA+Pgo+Pj4+Pj4gPj4gSG93ZXZlciwgdGhlIGNlcGgncyB2ZXJzaW9uIG9uIHdoaWNoIHdl IGRpZCB0aGUgZXhwZXJpbWVudCBhbmQgdGhlIHNvdWNlCj4+Pj4+PiBjb2RlIG9mIHdoaWNoIHdl IHJlYWQgd2FzIEhhbW1lciwgMC45NC41LiBJIGRvbid0IGtub3cgd2hldGhlciB0aGUgc2NlbmFy aW8KPj4+Pj4+IGFib3ZlIG1heSBzdGlsbCBleGlzdHMgaW4gbGF0ZXIgdmVyc2lvbnMuCj4+Pj4+ PiA+Pgo+Pj4+Pj4gPj4gQW0gSSByaWdodCBhYm91dCB0aGlzPyBPciBhbSBJIG1pc3NpbmcgYW55 dGhpbmc/IFBsZWFzZSBoZWxwIG1lLCBJJ20gcmVhbAo+Pj4+Pj4gbHkgY29uZnVzZWQgcmlnaHQg bm93LiBUaGFuayB5b3UuCj4+Pj4+PiA+Pgo+Pj4+Pj4gPj4gQXQgMjAxNy0wNi0wNSAyMDowMDow NiwgIkphc29uIERpbGxhbWFuIiA8amRpbGxhbWFAcmVkaGF0LmNvbT4gd3JvdGU6Cj4+Pj4+PiA+ PiA+VGhlIG9yZGVyIG9mIHdyaXRlcyBmcm9tIGEgc2luZ2xlIGNsaWVudCBjb25uZWN0aW9uIHRv IGEgc2luZ2xlIE9TRCBpcwo+Pj4+Pj4gPj4gPmd1YXJhbnRlZWQuIFRoZSByYmQtbWlycm9yIGpv dXJuYWwgcmVwbGF5IHByb2Nlc3MgaGFuZGxlcyBvbmUgZXZlbnQgYXQKPj4+Pj4+ID4+ID5hIHRp bWUgYW5kIGRvZXMgbm90IHN0YXJ0IHByb2Nlc3NpbmcgdGhlIG5leHQgZXZlbnQgdW50aWwgdGhl IElPIGhhcwo+Pj4+Pj4gPj4gPmJlZW4gc3RhcnRlZCBpbi1mbGlnaHQgd2l0aCBsaWJyYWRvcy4g VGhlcmVmb3JlLCBldmVuIHRob3VnaCB0aGUKPj4+Pj4+ID4+ID5yZXBsYXkgcHJvY2VzcyBhbGxv d3MgNTAgLSAxMDAgSU8gcmVxdWVzdHMgdG8gYmUgaW4tZmxpZ2h0LCB0aG9zZSBJT3MKPj4+Pj4+ ID4+ID5hcmUgYWN0dWFsbHkgd2VsbC1vcmRlcmVkIGluIHRlcm1zIG9mIHVwZGF0ZXMgdG8gYSBz aW5nbGUgb2JqZWN0Lgo+Pj4+Pj4gPj4gPgo+Pj4+Pj4gPj4gPk9mIGNvdXJzZSwgc3VjaCBhbiBJ TyByZXF1ZXN0IGZyb20gdGhlIGNsaWVudCBhcHBsaWNhdGlvbiAvIFZNIHdvdWxkCj4+Pj4+PiA+ PiA+YmUgaW5jb3JyZWN0IGJlaGF2aW9yIGlmIHRoZXkgZGlkbid0IHdhaXQgZm9yIHRoZSBjb21w bGV0aW9uIGNhbGxiYWNrCj4+Pj4+PiA+PiA+YmVmb3JlIGlzc3VpbmcgdGhlIHNlY29uZCB1cGRh dGUuCj4+Pj4+PiA+PiA+Cj4+Pj4+PiA+PiA+T24gTW9uLCBKdW4gNSwgMjAxNyBhdCAxMjowNSBB TSwgeHhoZHgxOTg1MTI2IDx4eGhkeDE5ODUxMjZAMTYzLmNvbT4gd3JvCj4+Pj4+PiB0ZToKPj4+ Pj4+ID4+ID4+IEhpLCBldmVyeW9uZS4KPj4+Pj4+ID4+ID4+Cj4+Pj4+PiA+PiA+Pgo+Pj4+Pj4g Pj4gPj4gUmVjZW50bHksIEkndmUgYmVlbiByZWFkaW5nIHRoZSBzb3VyY2UgY29kZSBvZiByYmQt bWlycm9yLiBJIHdvbmRlciBobwo+Pj4+Pj4gdyByYmQtbWlycm9yIHByZXNlcnZlcyB0aGUgb3Jk ZXIgb2YgV1JJVEUgb3BlcmF0aW9ucyB0aGF0IGZpbmlzaGVkIG9uIHRoZSBwcgo+Pj4+Pj4gaW1h cnkgY2x1c3Rlci4gQXMgZmFyIGFzIEkgY2FuIHVuZGVyc3RhbmQgdGhlIGNvZGUsIHJiZC1taXJy b3IgZmV0Y2hlcyBJL08gbwo+Pj4+Pj4gcGVyYXRpb25zIGZyb20gdGhlIGpvdXJuYWwgb24gdGhl IHByaW1hcnkgY2x1c3RlciwgYW5kIHJlcGxheSB0aGVtIG9uIHRoZSBzbAo+Pj4+Pj4gYXZlIGNs dXN0ZXIgd2l0aG91dCBjaGVja2luZyB3aGV0aGVyIHRoZXJlJ3MgYWxyZWFkeSBhbnkgSS9PIG9w ZXJhdGlvbnMgdGFyZwo+Pj4+Pj4gZXRpbmcgdGhlIHNhbWUgb2JqZWN0IHRoYXQgaGFzIGJlZW4g aXNzdWVkIHRvIHRoZSBzbGF2ZSBjbHVzdGVyIGFuZCBub3QgeWV0Cj4+Pj4+PiBmaW5pc2hlZC4g U2luY2UgY29uY3VycmVudCBvcGVyYXRpb25zIG1heSBmaW5pc2ggaW4gYSBkaWZmZXJlbnQgb3Jk ZXIgdGhhbiB0Cj4+Pj4+PiBoYXQgaW4gd2hpY2ggdGhleSBhcnJpdmVkIGF0IHRoZSBPU0QsIHRo ZSBvcmRlciB0aGF0IHRoZSBXUklURSBvcGVyYXRpb25zIGZpCj4+Pj4+PiBuaXNoIG9uIHRoZSBz bGF2ZSBjbHVzdGVyIG1heSBiZSBkaWZmZXJlbnQgdGhhbiB0aGF0IG9uIHRoZSBwcmltYXkgY2x1 c3Rlci4KPj4+Pj4+IEZvciBleGFtcGxlOiBvbiB0aGUgcHJpbWFyeSBjbHVzdGVyLCB0aGVyZSBh cmUgdHdvIFdSSVRFIG9wZXJhdGlvbiB0YXJnZXRpbmcKPj4+Pj4+ICB0aGUgc2FtZSBvYmplY3Qg QSB3aGljaCBhcmUsIGluIHRoZSBvcmRlciB0aGV5IGZpbmlzaCBvbiB0aGUgcHJpbWFyeSBjbHVz dGUKPj4+Pj4+IHIsICJXUklURSBBLm9mZiBkYXRhMSIgYW5kICJXUklURSBBLm9mZiBkYXRhMiI7 IHdoaWxlIHdoZW4gdGhleSBhcmUgcmVwbGF5ZWQKPj4+Pj4+ICBvbiB0aGUgc2xhdmUgY2x1c3Rl ciwgdGhlIG9yZGVyIG1heSBiZSAiV1JJVEUgQS5vZmYgZGF0YTIiIGFuZCAiV1JJVEUgQS5vZmYK Pj4+Pj4+ICBkYXRhMSIsIHdoCj4+Pj4+PiA+IGljaCBtZWFucyB0aGF0IHRoZSByZXN1bHQgb2Yg dGhlIHR3byBvcGVyYXRpb25zIG9uIHRoZSBwcmltYXJ5IGNsdXN0ZXIgaXMKPj4+Pj4+IEEub2Zm PWRhdGEyIHdoaWxlLCBvbiB0aGUgc2xhdmUgY2x1c3RlciwgdGhlIHJlc3VsdCBpcyBBLm9mZj1k YXRhMS4KPj4+Pj4+ID4+ID4+Cj4+Pj4+PiA+PiA+Pgo+Pj4+Pj4gPj4gPj4gSXMgdGhpcyBwb3Nz aWJsZT8KPj4+Pj4+ID4+ID4+Cj4+Pj4+PiA+PiA+Pgo+Pj4+Pj4gPj4gPj4KPj4+Pj4+ID4+ID4K Pj4+Pj4+ID4+ID4KPj4+Pj4+ID4+ID4KPj4+Pj4+ID4+ID4tLQo+Pj4+Pj4gPj4gPkphc29uCj4+ Pj4+PiA+PiBO5aul5Y+J6Z2j56yheT8/P+awimLnnoI/Pz/ljYN26LGdPz8/6JeTey5uPz8/5aOP 5riu5qaPeumzkOWmoGF5Pz8/6JWg6LeIPz8/aj8/P2bvvILnqZDmrp3phJcKPj4+Pj4+ID8/P+eV kOOCoj8/P+KSjj8/PzorduWivuWmm+mRmuixsOeomz8/P+ePo+i1mXpaK+WHkuauoOWouD8/PyLm v58h56eICj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+Cj4+Pgo+Pj4K Pj4+Cj4+Pgo+Cj4KPgo+wqAK