From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xusangdi Subject: RE: chooseleaf may cause some unnecessary pg migrations Date: Fri, 16 Oct 2015 11:24:58 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.h3c.com ([221.12.31.13]:13329 "EHLO h3cmg01-ex.h3c.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1752281AbbJPLY6 (ORCPT ); Fri, 16 Oct 2015 07:24:58 -0400 In-Reply-To: Content-Language: zh-CN Sender: ceph-devel-owner@vger.kernel.org List-ID: To: Sage Weil Cc: "ceph-devel@vger.kernel.org" DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGNlcGgtZGV2ZWwtb3duZXJA dmdlci5rZXJuZWwub3JnIFttYWlsdG86Y2VwaC1kZXZlbC1vd25lckB2Z2VyLmtlcm5lbC5vcmdd IE9uIEJlaGFsZiBPZg0KPiBTYWdlIFdlaWwNCj4gU2VudDogRnJpZGF5LCBPY3RvYmVyIDE2LCAy MDE1IDM6MTQgQU0NCj4gVG86IHh1c2FuZ2RpIDExOTc2IChSRCkNCj4gQ2M6IGNlcGgtZGV2ZWxA dmdlci5rZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJFOiBjaG9vc2VsZWFmIG1heSBjYXVzZSBzb21l IHVubmVjZXNzYXJ5IHBnIG1pZ3JhdGlvbnMNCj4NCj4gT24gVGh1LCAxNSBPY3QgMjAxNSwgWHVz YW5nZGkgd3JvdGU6DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJv bTogU2FnZSBXZWlsIFttYWlsdG86c3dlaWxAcmVkaGF0LmNvbV0NCj4gPiA+IFNlbnQ6IFdlZG5l c2RheSwgT2N0b2JlciAxNCwgMjAxNSAxMDoxOCBQTQ0KPiA+ID4gVG86IHh1c2FuZ2RpIDExOTc2 IChSRCkNCj4gPiA+IENjOiBjZXBoLWRldmVsQHZnZXIua2VybmVsLm9yZw0KPiA+ID4gU3ViamVj dDogUkU6IGNob29zZWxlYWYgbWF5IGNhdXNlIHNvbWUgdW5uZWNlc3NhcnkgcGcgbWlncmF0aW9u cw0KPiA+ID4NCj4gPiA+IE9uIFdlZCwgMTQgT2N0IDIwMTUsIFh1c2FuZ2RpIHdyb3RlOg0KPiA+ ID4gPiBQbGVhc2Ugc2VlIGlubGluZS4NCj4gPiA+ID4NCj4gPiA+ID4gPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+IEZyb206IGNlcGgtZGV2ZWwtb3duZXJAdmdlci5rZXJu ZWwub3JnDQo+ID4gPiA+ID4gW21haWx0bzpjZXBoLWRldmVsLW93bmVyQHZnZXIua2VybmVsLm9y Z10gT24gQmVoYWxmIE9mIFNhZ2UgV2VpbA0KPiA+ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgT2N0 b2JlciAxNCwgMjAxNSAxMjo0NSBBTQ0KPiA+ID4gPiA+IFRvOiB4dXNhbmdkaSAxMTk3NiAoUkQp DQo+ID4gPiA+ID4gQ2M6IGNlcGgtZGV2ZWxAdmdlci5rZXJuZWwub3JnDQo+ID4gPiA+ID4gU3Vi amVjdDogUmU6IGNob29zZWxlYWYgbWF5IGNhdXNlIHNvbWUgdW5uZWNlc3NhcnkgcGcgbWlncmF0 aW9ucw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSGkgU2FuZ2RpLA0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gT24gVHVlLCAxMyBPY3QgMjAxNSwgWHVzYW5nZGkgd3JvdGU6DQo+ID4gPiA+ID4gPiBIaSBT YWdlLA0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFJlY2VudGx5IHdoZW4gSSB3YXMgbGVhcm5p bmcgYWJvdXQgdGhlIGNydXNoIHJ1bGVzIEkgbm90aWNlZA0KPiA+ID4gPiA+ID4gdGhhdCB0aGUg c3RlcCBjaG9vc2VsZWFmIG1heSBjYXVzZQ0KPiA+ID4gPiA+IHNvbWUgdW5uZWNlc3NhcnkgcGcg bWlncmF0aW9ucyB3aGVuIE9TRHMgYXJlIG91dGVkLg0KPiA+ID4gPiA+ID4gRm9yIGV4YW1wbGUs IGZvciBhIGNsdXN0ZXIgb2YgNCBob3N0cyB3aXRoIDIgT1NEcyBlYWNoLCBhZnRlcg0KPiA+ID4g PiA+ID4gaG9zdDEob3NkLjIsIG9zZC4zKSBpcyBkb3duLCB0aGUNCj4gPiA+ID4gPiBtYXBwaW5n IGRpZmZlcmVuY2VzIHdvdWxkIGJlIGxpa2UgdGhpczoNCj4gPiA+ID4gPiA+IHBnaWQgICAgYmVm b3JlIDwtPiBhZnRlciAgICAgICAgZGlmZiAgICBkaWZmX251bQ0KPiA+ID4gPiA+ID4gMC4xZSAg ICBbNSwgMSwgMl0gPC0+IFs1LCAxLCA3XSAgICAgICAgIFsyXSAgICAgMQ0KPiA+ID4gPiA+ID4g MC4xZiAgICBbMCwgNywgM10gPC0+IFswLCA3LCA0XSAgICAgICAgIFszXSAgICAgMQ0KPiA+ID4g PiA+ID4gMC4xYSAgICBbMCwgNCwgM10gPC0+IFswLCA0LCA2XSAgICAgICAgIFszXSAgICAgMQ0K PiA+ID4gPiA+ID4gMC41ICAgICBbNiwgMywgMV0gPC0+IFs2LCAwLCA1XSAgICAgICAgIFsxLCAz XSAgMg0KPiA+ID4gPiA+ID4gMC40ICAgICBbNSwgNiwgMl0gPC0+IFs1LCA2LCAwXSAgICAgICAg IFsyXSAgICAgMQ0KPiA+ID4gPiA+ID4gMC43ICAgICBbMywgNywgMF0gPC0+IFs3LCAwLCA0XSAg ICAgICAgIFszXSAgICAgMQ0KPiA+ID4gPiA+ID4gMC42ICAgICBbMiwgMSwgN10gPC0+IFswLCA3 LCA0XSAgICAgICAgIFsxLCAyXSAgMg0KPiA+ID4gPiA+ID4gMC45ICAgICBbMywgNCwgMF0gPC0+ IFs1LCAwLCA3XSAgICAgICAgIFszLCA0XSAgMg0KPiA+ID4gPiA+ID4gMC4xNSAgICBbMiwgNiwg MV0gPC0+IFs2LCAwLCA1XSAgICAgICAgIFsxLCAyXSAgMg0KPiA+ID4gPiA+ID4gMC4xNCAgICBb MywgNiwgNV0gPC0+IFs3LCA0LCAxXSAgICAgICAgIFszLCA1LCA2XSAgICAgICAzDQo+ID4gPiA+ ID4gPiAwLjE3ICAgIFswLCA1LCAyXSA8LT4gWzAsIDUsIDZdICAgICAgICAgWzJdICAgICAxDQo+ ID4gPiA+ID4gPiAwLjE2ICAgIFswLCA0LCAyXSA8LT4gWzAsIDQsIDddICAgICAgICAgWzJdICAg ICAxDQo+ID4gPiA+ID4gPiAwLjExICAgIFs0LCA3LCAyXSA8LT4gWzQsIDcsIDFdICAgICAgICAg WzJdICAgICAxDQo+ID4gPiA+ID4gPiAwLjEwICAgIFswLCAzLCA2XSA8LT4gWzAsIDcsIDRdICAg ICAgICAgWzMsIDZdICAyDQo+ID4gPiA+ID4gPiAwLjEzICAgIFsxLCA3LCAzXSA8LT4gWzEsIDcs IDRdICAgICAgICAgWzNdICAgICAxDQo+ID4gPiA+ID4gPiAwLmEgICAgIFswLCAyLCA3XSA8LT4g WzAsIDcsIDRdICAgICAgICAgWzJdICAgICAxDQo+ID4gPiA+ID4gPiAwLmMgICAgIFs1LCAwLCAz XSA8LT4gWzUsIDAsIDZdICAgICAgICAgWzNdICAgICAxDQo+ID4gPiA+ID4gPiAwLmIgICAgIFsy LCA1LCA3XSA8LT4gWzQsIDcsIDBdICAgICAgICAgWzIsIDVdICAyDQo+ID4gPiA+ID4gPiAwLjE4 ICAgIFs3LCAyLCA0XSA8LT4gWzcsIDQsIDBdICAgICAgICAgWzJdICAgICAxDQo+ID4gPiA+ID4g PiAwLmYgICAgIFsyLCA3LCA1XSA8LT4gWzYsIDQsIDBdICAgICAgICAgWzIsIDUsIDddICAgICAg IDMNCj4gPiA+ID4gPiA+IENoYW5nZWQgcGcgcmF0aW86IDMwIC8gMzINCj4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPiBJIHRyaWVkIHRvIGNoYW5nZSB0aGUgY29kZSAocGxlYXNlIHNlZQ0KPiA+ID4g PiA+ID4gaHR0cHM6Ly9naXRodWIuY29tL2NlcGgvY2VwaC9wdWxsLzYyNDIpIGFuZCBhZnRlciB0 aGUNCj4gPiA+ID4gPiBtb2RpZmljYXRpb24gdGhlIHJlc3VsdCB3b3VsZCBiZSBsaWtlIHRoaXM6 DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBDYW4geW91IGRlc2NyaWJlIHRoZSByZWFzb25pbmcgYmVo aW5kIHRoZSBjaGFuZ2U/ICBJIGNhbid0IG1ha2UNCj4gPiA+ID4gPiBzZW5zZSBvZiBpdC4gIFRo ZSByZWN1cnNpdmUgY2FsbCBpcyBzdGlsbCBwaWNraW5nIGp1c3QgMSBpdGVtLA0KPiA+ID4gPiA+ IGJ1dCBpdCBsb29rcyBsaWtlIGl0IGlzIGFsd2F5cyBjaG9vc2luZyBhIGRldmljZSBpbiBmb3Ig c2xvdCAwDQo+ID4gPiA+ID4gYW5kIG5vdCB0aGUgY3VycmVudCBzbG90IGluIHRoZSBjYWxsZXIu ICBJJ20gbm90DQo+ID4gPiBzdXJlIGhvdyB0aGF0IGNvdWxkIGdlbmVyYXRlIGEgY29ycmVjdCBy ZXN1bHQuDQo+ID4gPiA+ID4NCj4gPiA+ID4gRnJvbSBteSB1bmRlcnN0YW5kaW5nLCB0aGUgYXJn dW1lbnQgJ291dHBvcycgb2YNCj4gPiA+ID4gY3J1c2hfY2hvb3NlX2ZpcnN0biguLi4pIGlzIGFs d2F5cyBzZXQgdG8gMCBmb3IgJ2Nob29zZSBmaXJzdG4nDQo+ID4gPiA+IGFuZCB0aGUgZmlyc3Qg c3RlcCBvZiAnY2hvb3NlbGVhZiBmaXJzdG4nICh5b3UgbWF5IGNoZWNrIGl0cyBjYWxsZXIsIGku ZS4NCj4gPiA+ID4gY3J1c2hfZG9fcnVsZSguLi4pLCB0aGF0IHRoZSB2YXJpYWJsZSAnaicgdGhl cmUgaXMgYWx3YXlzIDApLiBTbw0KPiA+ID4gPiBpbiBmYWN0IHRoZSBjb2RlIG1vZGlmaWNhdGlv biB3b24ndCBjaGFuZ2UgYW55dGhpbmcgZm9yIHRoZXNlIHN0ZXBzLiBJdCB3aWxsIG9ubHkgYWZm ZWN0IHRoZQ0KPiByZWN1cnNpdmUgY2FsbC4NCj4gPiA+ID4gQW5kIGl0IHRoaXMgY2FsbCwgJ3Jl cCcoYW5kICdyJykgaXMgaW5kZXBlbmRlbnQgZnJvbSBpdHMgY2FsbGVyLA0KPiA+ID4gPiB3aGlj aCBtZWFucyBpdCdzIG9ubHkgdXNlZCB0byBpbmRpY2F0ZSB0aGUgcmVwbGljYSBudW1iZXIodGhl DQo+ID4gPiA+IHN0YXJ0IHZhbHVlIG9mICdyZXAnIHNob3VsZCBiZSAxIGxlc3MgdGhhbiAnbnVt cmVwJyksIGJ1dCBpcyBub3QNCj4gPiA+ID4gcmVsYXRlZCB0byByZXN1bHQgcG9zaXRpb24uIFNp bmNlICdvdXRwb3MnIGlzIGNvcnJlY3RseSBwYXNzZWQgdG8NCj4gPiA+ID4gdGhlIHJlY3Vyc2l2 ZSBjYWxsLCB0aGUgcmVzdWx0IHdvdWxkIGJlIHB1dCBpbiB0aGUgcmlnaHQgc2xvdCwgbm90IHNs b3QgMC4NCj4gPiA+DQo+ID4gPiBPa2F5LCBJIHVuZGVydHN0YW5kIG5vdy4gIFRoYW5rcyENCj4g PiA+DQo+ID4gPiA+IFRoZSBjdXJyZW50IGNvZGUgc2V0IHRoZSBzdGFydGluZyB2YWx1ZSBvZiAn cicgYmFzZWQgb24gdGhlIHNsb3QNCj4gPiA+ID4gbnVtYmVyLCB3aGljaCBtZWFucyB0aGUgYWxn b3JpdGhtIG1heSBnZW5lcmF0ZSBhIGRpZmZlcmVudCByZXN1bHQNCj4gPiA+ID4gZXZlbiB3aGVu IG9ubHkgdGhlIHNsb3QgbnVtYmVyIGNoYW5nZXMsIHdoaWNoIEkgYmVsaWV2ZSBpcyBub3QNCj4g PiA+ID4gd2hhdCB3ZSB3YW50IGZvciByZXBsaWNhdGVkIHBvb2xzLiBGb3IgZXhhbXBsZSwgMC4x NCBbMywgNiwgNV0gPC0+DQo+ID4gPiA+IFs3LCA0LCAxXSwgYWZ0ZXINCj4gPiA+ID4gb2RzLjMg aXMgZG93biBhbmQgb3V0LCB0aGUgcGcgb24gb3NkLjYgaXMgdHJhbnNmZXJyZWQgdG8gb3NkLjcN Cj4gPiA+ID4gYmVjYXVzZSB0aGUgc3RhcnRpbmcgdmFsdWUgb2YgJ3InIGlzIGNoYW5nZWQocHJv YmFibHkgZnJvbSAxIHRvDQo+ID4gPiA+IDApLCBhbmQgc28gaXMgdGhlIHBnIGZyb20gb3NkLjUg dG8gb3NkLjQuIFRob3VnaCBpdCBsb29rcyBsaWtlDQo+ID4gPiA+IHRoYXQgYWxsIG9mIHRoZXNl IGV4dHJhIG1pZ3JhdGlvbnMgYXJlIGFsd2F5cyB3aXRoaW4gdGhlIHNhbWUNCj4gPiA+ID4gY2hv c2VuIGJ1Y2tldCwgdGhleSBhcmUgdW5uZWNlc3NhcnkuIElmIHdlIHNldCB0aGUgc3RhcnRpbmcg dmFsdWUNCj4gPiA+ID4gb2YgJ3JlcCcoYW5kICdyJykgdG8gYmUgYSBmaXhlZCB2YWx1ZShlLmcu IDApLCB0aGUgcmVzdWx0cyB3b3VsZCBiZSBzdGFibGUuDQo+ID4gPg0KPiA+ID4gWWVhaCwgdGhh dCBtYWtlcyBzZW5zZS4NCj4gPiA+DQo+ID4gPiBUaGUgb25seSBwcm9ibGVtIEkgc2VlIGlzIHRo ZSBjb2xsaXNpb24gY2hlY2sgaGVyZToNCj4gPiA+DQo+ID4gPg0KPiA+ID4gaHR0cHM6Ly9naXRo dWIuY29tL2NlcGgvY2VwaC9wdWxsLzYyNDIvZmlsZXMjZGlmZi0wZGYxM2FkMjk0ZjY1ODVjMzIN Cj4gPiA+IDI1ODhjZmUwMjZkNzAxUjQ5Nw0KPiA+ID4NCj4gPiA+IEZvciBtb3N0IG1hcHMgeW91 ciBjaGFuZ2UgaXNuJ3QgcHJvYmxlbWF0aWMgYmVjYXVzZSBkZXZpY2VzIG9ubHkNCj4gPiA+IGFw cGVhciBvbmNlIGluIHRoZSBoaWVyYXJjaHksIGJ1dCBpZiBhbiBpdGVtIGRvZXMgYXBwZWFyIHR3 aWNlLCB3ZSBtYXkgY2hvb3NlIGl0IHR3aWNlIGFuZCBub3QNCj4gZGV0ZWN0IHRoZSBkdXAuDQo+ ID4gPg0KPiA+ID4gUGVyaGFwcyBsZWF2aW5nIHRoZSBhcmd1bWVudCBhbG9uZSBhbmQgc2ltcGx5 IGNoYW5naW5nIHRoZSBmb3IgbG9vcA0KPiA+ID4gdG8NCj4gPiA+DQo+ID4gPiAgICAgICBmb3Ig KHJlcCA9IDA7IHJlcCA8IChudW1yZXAgLSBvdXRwb3MpICYmIGNvdW50ID4gMCA7IHJlcCsrKSB7 DQo+ID4gPg0KPiA+ID4gd291bGQgZG8gdGhlIHRyaWNrPw0KPiA+ID4NCj4gPiBXZWxsIEkgYmVs aWV2ZSBpdCBhY3R1YWxseSB3aWxsIGRldGVjdCB0aGUgZHVwIGFzICdudW1yZXAnIGFuZCAnb3V0 cG9zJw0KPiA+IGFyZSB0d28gZGlmZmVyZW50IGFyZ3VtZW50cyBhbmQgJ291dHBvcycgaXMgY29y cmVjdGx5IHBhc3NlZCwgc28gdGhlDQo+ID4gJ2ZvciBsb29wJyB5b3UgbWFya2VkIGZvciBkZXRl Y3RpbmcgY29sbGlzaW9uIHdpbGwgY2hlY2sgYWxsDQo+ID4gcHJldmlvdXNseSBzZWxlY3RlZCBp dGVtcy4NCj4NCj4gWWVwLCByaWdodCBhZ2Fpbi4NCj4NCj4gPiBJIGhhdmUgcmVhZCB0aGUgcG9z dCBhYm91dCBjdXJyZW50IENSVVNIIGJlaGF2aW9yIGFuZCB0aGFua3MgZm9yIHRoYXQNCj4gPiBk ZXRhaWxlZCBleHBsYW5hdGlvbi4gSG93ZXZlciwgdGhlIHByZXJlcXVpc2l0ZSB0aGVyZSBpcyB0 aGUgY3J1c2htYXANCj4gPiBpcyBjaGFuZ2VkKHNvbWUgaXRlbSBpcyByZXdlaWdodGVkKSwgd2hp bGUgaW4gdGhlIGN1cnJlbnQNCj4gPiBpbXBsZW1lbnRhdGlvbiB0aGUgY3J1c2htYXAgcmVtYWlu cyB1bnRvdWNoZWQgZm9yIHF1aXRlIGEgbG9uZyB0aW1lDQo+ID4gYWZ0ZXIgc29tZSBkZXZpY2Vz IGZhaWwuIEFuZCBiZWNhdXNlIG9mIHRoaXMsIEkgdGhpbmsgdGhlIGNvZGUgY2hhbmdlDQo+ID4g Y2FuIG1ha2UgdGhlIHBnIG1pZ3JhdGlvbnMgdG8gYmUgb3B0aW1hbCB3aGVuIG9zZHMgYmVjb21l IGRvd24uIFdoZW4NCj4gPiB0aGUgY3J1c2htYXAgZG9lcyBjaGFuZ2UsIGxpa2UgeW91IHNhaWQs IHRoZSBleHRyYSBtaWdyYXRpb25zIHdvdWxkIGJlIHVuYXZvaWRhYmxlLg0KPiA+IEFueXdheSwg YXMgSSByZWFsbHkgY2Fubm90IGZpbmQgaXQsIGNvdWxkIHlvdSBnaXZlIG1lIHNvbWUgdGlwIGFi b3V0DQo+ID4gaG93IG9yIHdoZW4gdGhlIGNydXNobWFwIHdvdWxkIGdldCBtb2RpZmllZCBhdXRv bWF0aWNhbGx5PyBUaGFuayB5b3UhDQo+DQo+IEkgdGhpbmsgdGhlIHNpdHVhdGlvbiBpcyB0aGUg c2FtZToNCj4NCldlbGwgSSBhbSBub3Qgc3VyZSBpZiB0aGlzIGlzIHdoYXQgeW91IHJlZmVycmVk LCBidXQgSSBjYW4gY29uZmlybSB0aGF0ICdtYXJrIG9zZCBvdXQnIGlzIGRlZmluaXRlbHkNCmRp ZmZlcmVudCBmcm9tICdyZW1vdmUgb3NkIGZyb20gY3J1c2htYXAnLiBQbGVhc2Ugbm90ZSBpZiBp dCdzIG5vdCBjbGVhciB0aGF0IHRoZSAnY3J1c2htYXAnIGhlcmUNCkkgbWVhbiB3aGF0IHdlIGNh biBvYnRhaW4gZnJvbSAnY2VwaCBvc2QgZ2V0Y3J1c2htYXAnIGNvbW1hbmQuDQoNCj4gd2hlbiB0 aGUgb3NkIGlzIG1hcmtlZCAib3V0IiB0aGUgd2VpZ2h0W2ldIHZhbHVlIGdvZXMgdG8gemVybyBh bmQgd2UNCj4gd2lsbCByZWplY3QgaXQgYXQNCj4NCj4gaHR0cHM6Ly9naXRodWIuY29tL2NlcGgv Y2VwaC9wdWxsLzYyNDIvZmlsZXMjZGlmZi0wZGYxM2FkMjk0ZjY1ODVjMzIyNTg4Y2ZlMDI2ZDcw MVI1MzUNCj4NClllcyBidXQgd2UgZG8gcGljayB0aGlzICdvdXQnIG9zZCBmaXJzdCBmcm9tIHRo ZSBjcnVzaF9idWNrZXRfY2hvb3NlKC4uLikgZnVuY3Rpb24sIHdoaWNoIHdvdWxkDQpuZXZlciBy ZXR1cm4gdGhpcyBvc2QgaWYgaXQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBjcnVzaG1hcC4gRnJvbSBt eSB1bmRlcnN0YW5kaW5nLCBDUlVTSCB3b3VsZCBmaXJzdA0KbWFrZSBhIGNob2ljZSBiYXNlZCBv biB2YWx1ZXMgcGFyc2VkIGZyb20gdGhlIGNydXNobWFwKGNydXNoX2J1Y2tldF9jaG9vc2UgZnVu Y3Rpb24pLCBhbmQgdGhlbg0KZGV0ZXJtaW5lIHdoZXRoZXIgdG8gYWN0dWFsbHkgY2hvb3NlIHRo aXMgaXRlbSBkZXBlbmQgb24gcmVhbC10aW1lIHdlaWdodHMoaXNfb3V0IGZ1bmN0aW9uKS4gSGVu Y2UsDQppZiBhbiBvc2QgaXMgb25seSBtYXJrZWQgb3V0IGJ1dCBub3QgbWFudWFsbHkgcmVtb3Zl ZCBmcm9tIHRoZSBjcnVzaG1hcCAob3IgbWF5YmUgaXQgd2lsbCBhdXRvbWF0aWNhbGx5DQpiZSBy ZW1vdmVkIGFmdGVyIGEgY2VydGFpbiB0aW1lPyB0aGlzIGlzIHdoYXQgSSBhc2tlZCksIHRoZSBj cnVzaF9idWNrZXRfY2hvb3NlKC4uLikgZnVuY3Rpb24gd2lsbCByZXR1cm4NCmV4YWN0bHkgdGhl IHNhbWUgcmVzdWx0cyBhcyBiZWZvcmUgZm9yIGVhY2ggdHVybi4NCg0KPiAoQW4gb3NkIGdvZXMg ZG93biBidXQgbm90IG91dCBkb2Vzbid0IGhhdmUgYW55IGVmZmVjdCBvbiBjcnVzaC0tdGhlIGNl cGggY29kZSBqdXN0IGZpbHRlcnMgdGhvc2Ugb3Nkcw0KPiBvdXQgb2YgdGhlIGNydXNoIHJlc3Vs dC4pDQo+DQo+IFNvLCBhbnl3YXksIHllczogdGhpcyBsb29rcyBsaWtlIGEgZ29vZCBjaGFuZ2Uu ICBPbmUgdGhpbmcgdGhhdCB3b3VsZCBiZSBncmVhdCB3b3VsZCBiZSBhIHdheSB0bw0KPiBxdWFu dGlmeSBob3cgbXVjaCBpdCBpbXByb3ZlcyB0aGluZ3MuDQo+DQo+IFRoZSBuZXh0IHN0ZXAgaXMg dG8gaW50cm9kdWNlIGEgdHVuYWJsZSB0aGF0IG1ha2VzIHRoaXMgYmVoYXZpb3Igb3B0aW9uYWwg KGFzIHdlIGNhbid0IGJyZWFrL2NoYW5nZQ0KPiBwcmV2aW91cyBtYXBwaW5ncykuICBUaGF0IG1l YW5zIGludHJvZHVjaW5nIGEgbmV3IGZpZWxkIGluIGNydXNoL2NydXNoLmggZm9yIHRoZSB0dW5h YmxlLCBhZGRpbmcNCj4gYWNjZXNzb3JzIGluIENydXNoV3JhcHBlciwgaW50cm9kdWNpbmcgYSBu ZXcgJ2pld2VsJyBwcmVzZXQgdGhhdCBzZXRzIGl0IHRoYXQgd2F5IChhbmQgbWFraW5nIGpld2Vs DQo+IHRoZSBuZXcgJ29wdGltYWwnKSwgbW9kaWZ5aW5nIGNydXNodG9vbC5jYyB3aXRoIGFuIGFy Z3VtZW50IHRvIG1vZGlmeSB0aGUgdHVuYWJsZSwgbW9kaWZ5aW5nDQo+IENydXNoQ29tcGlsZXIg dG8gYm90aCBzcGl0IG91dCB0aGUgdHVuYWJsZSBpZiBpdCdzIG5vbi1kZWZhdWx0IGFuZCB0byBw YXJzZSBpdCBpZiBpdHMgc3BlY2lmaWVkIGluIHRoZSBpbnB1dCwNCj4gZXRjLg0KPg0KPiBJZiB5 b3UncmUgY29tZm9ydGFibGUgd2l0aCB0aG9zZSBjaGFuZ2VzLCBpdCB3b3VsZCBiZSBncmVhdCBp ZiB5b3UgY291bGQgZG8gdGhpcyBwYXJ0LiAgSWYgbm90LCBJIGNhbiB0YWtlDQo+IGNhcmUgb2Yg aXQhDQo+DQpUaGFua3MgZm9yIGFsbCB0aGUgdGlwcyEgRm9yIG1lIGl0IGlzIGNoYWxsZW5naW5n LCBidXQgSSdkIGxpa2UgdG8gdGFrZSBhIHRyeSBmaXJzdCBhcyBpdCB3b3VsZCBiZSBhIGdvb2Qg bGVhcm5pbmcNCmV4cGVyaWVuY2Ugb2YgQ1JVU0guDQoNClRoYW5rIHlvdSwNCi0tLVNhbmdkaQ0K DQo+IFRoYW5rcy0NCj4gc2FnZQ0KPg0KPg0KPiA+DQo+ID4gLS0tU2FuZ2RpDQo+ID4NCj4gPiA+ IFRoYW5rcyENCj4gPiA+IHNhZ2UNCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4gVGhlIHF1 YWxpdHkgb2YgZGlzdHJpYnV0aW9uIGNvdWxkIGJlIGFzc3VyZWQgYnkgdGhlIGhhc2hlZCB2YWx1 ZQ0KPiA+ID4gPiB4LCBzaW5jZSBpdCdzIGRlcGVuZGVudCBvbiBwZ2lkLiBBIHNpbXBsZSB0ZXN0 IHJlc3VsdCBmb3IgYQ0KPiA+ID4gPiByZWxhdGl2ZWx5IGxhcmdlIGNsdXN0ZXIgaXMgYXMgZm9s bG93aW5ncywgd2hpY2ggZnJvbSBteSB2aWV3IGlzDQo+ID4gPiA+IHNpbWlsYXIgd2l0aCB0aGF0 IG9mIHRoZSBjdXJyZW50IGNvZGU6DQo+ID4gPiA+DQo+ID4gPiA+IGNydXNodG9vbCAtbyBjcnVz aG1hcCAtLWJ1aWxkIC0tbnVtX29zZHMgNjQgaG9zdCBzdHJhdzIgNCByYWNrDQo+ID4gPiA+IHN0 cmF3Mg0KPiA+ID4gPiA0IHJvb3Qgc3RyYXcyIDANCj4gPiA+ID4NCj4gPiA+ID4gY3J1c2h0b29s IC0tdGVzdCAtaSBjcnVzaG1hcCAtLW51bV9yZXAgMyAtLXNob3ctdXRpbGl6YXRpb24gcnVsZSAw DQo+ID4gPiA+IChyZXBsaWNhdGVkX3J1bGVzZXQpLCB4ID0gMC4uMTAyMywgbnVtcmVwID0gMy4u MyBydWxlIDANCj4gPiA+ID4gKHJlcGxpY2F0ZWRfcnVsZXNldCkgbnVtX3JlcCAzIHJlc3VsdCBz aXplID09IDM6IDEwMjQvMTAyNA0KPiA+ID4gPiAgIGRldmljZSAwOiAgICAgICAgICAgICAgc3Rv cmVkIDogNTcgICAgIGV4cGVjdGVkIDogNDgNCj4gPiA+ID4gICBkZXZpY2UgMTogICAgICAgICAg ICAgIHN0b3JlZCA6IDM5ICAgICBleHBlY3RlZCA6IDQ4DQo+ID4gPiA+ICAgZGV2aWNlIDI6ICAg ICAgICAgICAgICBzdG9yZWQgOiA0NCAgICAgZXhwZWN0ZWQgOiA0OA0KPiA+ID4gPiAgIGRldmlj ZSAzOiAgICAgICAgICAgICAgc3RvcmVkIDogNDIgICAgIGV4cGVjdGVkIDogNDgNCj4gPiA+ID4g ICBkZXZpY2UgNDogICAgICAgICAgICAgIHN0b3JlZCA6IDQ1ICAgICBleHBlY3RlZCA6IDQ4DQo+ ID4gPiA+ICAgZGV2aWNlIDU6ICAgICAgICAgICAgICBzdG9yZWQgOiA0MiAgICAgZXhwZWN0ZWQg OiA0OA0KPiA+ID4gPiAgIGRldmljZSA2OiAgICAgICAgICAgICAgc3RvcmVkIDogNDUgICAgIGV4 cGVjdGVkIDogNDgNCj4gPiA+ID4gICBkZXZpY2UgNzogICAgICAgICAgICAgIHN0b3JlZCA6IDQ4 ICAgICBleHBlY3RlZCA6IDQ4DQo+ID4gPiA+ICAgZGV2aWNlIDg6ICAgICAgICAgICAgICBzdG9y ZWQgOiA0MyAgICAgZXhwZWN0ZWQgOiA0OA0KPiA+ID4gPiAgIGRldmljZSA5OiAgICAgICAgICAg ICAgc3RvcmVkIDogMzggICAgIGV4cGVjdGVkIDogNDgNCj4gPiA+ID4gICBkZXZpY2UgMTA6ICAg ICAgICAgICAgIHN0b3JlZCA6IDQ0ICAgICBleHBlY3RlZCA6IDQ4DQo+ID4gPiA+ICAgZGV2aWNl IDExOiAgICAgICAgICAgICBzdG9yZWQgOiA1MiAgICAgZXhwZWN0ZWQgOiA0OA0KPiA+ID4gPiAg IGRldmljZSAxMjogICAgICAgICAgICAgc3RvcmVkIDogNTQgICAgIGV4cGVjdGVkIDogNDgNCj4g PiA+ID4gICBkZXZpY2UgMTM6ICAgICAgICAgICAgIHN0b3JlZCA6IDU5ICAgICBleHBlY3RlZCA6 IDQ4DQo+ID4gPiA+ICAgZGV2aWNlIDE0OiAgICAgICAgICAgICBzdG9yZWQgOiA1MyAgICAgZXhw ZWN0ZWQgOiA0OA0KPiA+ID4gPiAgIGRldmljZSAxNTogICAgICAgICAgICAgc3RvcmVkIDogNTMg ICAgIGV4cGVjdGVkIDogNDgNCj4gPiA+ID4gICBkZXZpY2UgMTY6ICAgICAgICAgICAgIHN0b3Jl ZCA6IDQyICAgICBleHBlY3RlZCA6IDQ4DQo+ID4gPiA+ICAgZGV2aWNlIDE3OiAgICAgICAgICAg ICBzdG9yZWQgOiA1NiAgICAgZXhwZWN0ZWQgOiA0OA0KPiA+ID4gPiAgIGRldmljZSAxODogICAg ICAgICAgICAgc3RvcmVkIDogNDkgICAgIGV4cGVjdGVkIDogNDgNCj4gPiA+ID4gICBkZXZpY2Ug MTk6ICAgICAgICAgICAgIHN0b3JlZCA6IDQyICAgICBleHBlY3RlZCA6IDQ4DQo+ID4gPiA+ICAg ZGV2aWNlIDIwOiAgICAgICAgICAgICBzdG9yZWQgOiA1NiAgICAgZXhwZWN0ZWQgOiA0OA0KPiA+ ID4gPiAgIGRldmljZSAyMTogICAgICAgICAgICAgc3RvcmVkIDogNTEgICAgIGV4cGVjdGVkIDog NDgNCj4gPiA+ID4gICBkZXZpY2UgMjI6ICAgICAgICAgICAgIHN0b3JlZCA6IDU5ICAgICBleHBl Y3RlZCA6IDQ4DQo+ID4gPiA+ICAgZGV2aWNlIDIzOiAgICAgICAgICAgICBzdG9yZWQgOiAzNCAg ICAgZXhwZWN0ZWQgOiA0OA0KPiA+ID4gPiAgIGRldmljZSAyNDogICAgICAgICAgICAgc3RvcmVk IDogNDMgICAgIGV4cGVjdGVkIDogNDgNCj4gPiA+ID4gICBkZXZpY2UgMjU6ICAgICAgICAgICAg IHN0b3JlZCA6IDUyICAgICBleHBlY3RlZCA6IDQ4DQo+ID4gPiA+ICAgZGV2aWNlIDI2OiAgICAg ICAgICAgICBzdG9yZWQgOiA0NiAgICAgZXhwZWN0ZWQgOiA0OA0KPiA+ID4gPiAgIGRldmljZSAy NzogICAgICAgICAgICAgc3RvcmVkIDogNDQgICAgIGV4cGVjdGVkIDogNDgNCj4gPiA+ID4gICBk ZXZpY2UgMjg6ICAgICAgICAgICAgIHN0b3JlZCA6IDQzICAgICBleHBlY3RlZCA6IDQ4DQo+ID4g PiA+ICAgZGV2aWNlIDI5OiAgICAgICAgICAgICBzdG9yZWQgOiA1NyAgICAgZXhwZWN0ZWQgOiA0 OA0KPiA+ID4gPiAgIGRldmljZSAzMDogICAgICAgICAgICAgc3RvcmVkIDogNTMgICAgIGV4cGVj dGVkIDogNDgNCj4gPiA+ID4gICBkZXZpY2UgMzE6ICAgICAgICAgICAgIHN0b3JlZCA6IDUyICAg ICBleHBlY3RlZCA6IDQ4DQo+ID4gPiA+ICAgZGV2aWNlIDMyOiAgICAgICAgICAgICBzdG9yZWQg OiA0NiAgICAgZXhwZWN0ZWQgOiA0OA0KPiA+ID4gPiAgIGRldmljZSAzMzogICAgICAgICAgICAg c3RvcmVkIDogNDIgICAgIGV4cGVjdGVkIDogNDgNCj4gPiA+ID4gICBkZXZpY2UgMzQ6ICAgICAg ICAgICAgIHN0b3JlZCA6IDU5ICAgICBleHBlY3RlZCA6IDQ4DQo+ID4gPiA+ICAgZGV2aWNlIDM1 OiAgICAgICAgICAgICBzdG9yZWQgOiA1MCAgICAgZXhwZWN0ZWQgOiA0OA0KPiA+ID4gPiAgIGRl dmljZSAzNjogICAgICAgICAgICAgc3RvcmVkIDogNDggICAgIGV4cGVjdGVkIDogNDgNCj4gPiA+ ID4gICBkZXZpY2UgMzc6ICAgICAgICAgICAgIHN0b3JlZCA6IDQ3ICAgICBleHBlY3RlZCA6IDQ4 DQo+ID4gPiA+ICAgZGV2aWNlIDM4OiAgICAgICAgICAgICBzdG9yZWQgOiA1MiAgICAgZXhwZWN0 ZWQgOiA0OA0KPiA+ID4gPiAgIGRldmljZSAzOTogICAgICAgICAgICAgc3RvcmVkIDogNTYgICAg IGV4cGVjdGVkIDogNDgNCj4gPiA+ID4gICBkZXZpY2UgNDA6ICAgICAgICAgICAgIHN0b3JlZCA6 IDM4ICAgICBleHBlY3RlZCA6IDQ4DQo+ID4gPiA+ICAgZGV2aWNlIDQxOiAgICAgICAgICAgICBz dG9yZWQgOiA0MCAgICAgZXhwZWN0ZWQgOiA0OA0KPiA+ID4gPiAgIGRldmljZSA0MjogICAgICAg ICAgICAgc3RvcmVkIDogNTIgICAgIGV4cGVjdGVkIDogNDgNCj4gPiA+ID4gICBkZXZpY2UgNDM6 ICAgICAgICAgICAgIHN0b3JlZCA6IDQzICAgICBleHBlY3RlZCA6IDQ4DQo+ID4gPiA+ICAgZGV2 aWNlIDQ0OiAgICAgICAgICAgICBzdG9yZWQgOiA0MSAgICAgZXhwZWN0ZWQgOiA0OA0KPiA+ID4g PiAgIGRldmljZSA0NTogICAgICAgICAgICAgc3RvcmVkIDogNTEgICAgIGV4cGVjdGVkIDogNDgN Cj4gPiA+ID4gICBkZXZpY2UgNDY6ICAgICAgICAgICAgIHN0b3JlZCA6IDQzICAgICBleHBlY3Rl ZCA6IDQ4DQo+ID4gPiA+ICAgZGV2aWNlIDQ3OiAgICAgICAgICAgICBzdG9yZWQgOiA0NiAgICAg ZXhwZWN0ZWQgOiA0OA0KPiA+ID4gPiAgIGRldmljZSA0ODogICAgICAgICAgICAgc3RvcmVkIDog NDIgICAgIGV4cGVjdGVkIDogNDgNCj4gPiA+ID4gICBkZXZpY2UgNDk6ICAgICAgICAgICAgIHN0 b3JlZCA6IDQ3ICAgICBleHBlY3RlZCA6IDQ4DQo+ID4gPiA+ICAgZGV2aWNlIDUwOiAgICAgICAg ICAgICBzdG9yZWQgOiA1MSAgICAgZXhwZWN0ZWQgOiA0OA0KPiA+ID4gPiAgIGRldmljZSA1MTog ICAgICAgICAgICAgc3RvcmVkIDogNTQgICAgIGV4cGVjdGVkIDogNDgNCj4gPiA+ID4gICBkZXZp Y2UgNTI6ICAgICAgICAgICAgIHN0b3JlZCA6IDU2ICAgICBleHBlY3RlZCA6IDQ4DQo+ID4gPiA+ ICAgZGV2aWNlIDUzOiAgICAgICAgICAgICBzdG9yZWQgOiA0NiAgICAgZXhwZWN0ZWQgOiA0OA0K PiA+ID4gPiAgIGRldmljZSA1NDogICAgICAgICAgICAgc3RvcmVkIDogNDcgICAgIGV4cGVjdGVk IDogNDgNCj4gPiA+ID4gICBkZXZpY2UgNTU6ICAgICAgICAgICAgIHN0b3JlZCA6IDQ4ICAgICBl eHBlY3RlZCA6IDQ4DQo+ID4gPiA+ICAgZGV2aWNlIDU2OiAgICAgICAgICAgICBzdG9yZWQgOiA0 MiAgICAgZXhwZWN0ZWQgOiA0OA0KPiA+ID4gPiAgIGRldmljZSA1NzogICAgICAgICAgICAgc3Rv cmVkIDogNDAgICAgIGV4cGVjdGVkIDogNDgNCj4gPiA+ID4gICBkZXZpY2UgNTg6ICAgICAgICAg ICAgIHN0b3JlZCA6IDU4ICAgICBleHBlY3RlZCA6IDQ4DQo+ID4gPiA+ICAgZGV2aWNlIDU5OiAg ICAgICAgICAgICBzdG9yZWQgOiA1MyAgICAgZXhwZWN0ZWQgOiA0OA0KPiA+ID4gPiAgIGRldmlj ZSA2MDogICAgICAgICAgICAgc3RvcmVkIDogNDEgICAgIGV4cGVjdGVkIDogNDgNCj4gPiA+ID4g ICBkZXZpY2UgNjE6ICAgICAgICAgICAgIHN0b3JlZCA6IDQ0ICAgICBleHBlY3RlZCA6IDQ4DQo+ ID4gPiA+ICAgZGV2aWNlIDYyOiAgICAgICAgICAgICBzdG9yZWQgOiA1MiAgICAgZXhwZWN0ZWQg OiA0OA0KPiA+ID4gPiAgIGRldmljZSA2MzogICAgICAgICAgICAgc3RvcmVkIDogNjAgICAgIGV4 cGVjdGVkIDogNDgNCj4gPiA+ID4NCj4gPiA+ID4gPiBQZXJoYXBzIHlvdSBjYW4gc2hhcmUgdGhl IG9zZCB0cmVlIG91dHB1dCBzbyB3ZSBjYW4gc2VlIGhvdyB5b3VyIG1hcCBpdCBzdHJ1Y3R1cmVk Pw0KPiA+ID4gPiA+DQo+ID4gPiA+IFRoZSBhcmNoaXRlY3R1cmUgaXMgcHJldHR5IHNpbXBsZToN Cj4gPiA+ID4gSUQgV0VJR0hUICBUWVBFIE5BTUUgICAgICBVUC9ET1dOIFJFV0VJR0hUIFBSSU1B UlktQUZGSU5JVFkNCj4gPiA+ID4gLTUgOC4wMDAwMCByb290IHJvb3QNCj4gPiA+ID4gLTEgMi4w MDAwMCAgICAgaG9zdCBob3N0MA0KPiA+ID4gPiAgMCAxLjAwMDAwICAgICAgICAgb3NkLjAgICAg ICAgdXAgIDEuMDAwMDAgICAgICAgICAgMS4wMDAwMA0KPiA+ID4gPiAgMSAxLjAwMDAwICAgICAg ICAgb3NkLjEgICAgICAgdXAgIDEuMDAwMDAgICAgICAgICAgMS4wMDAwMA0KPiA+ID4gPiAtMiAy LjAwMDAwICAgICBob3N0IGhvc3QxDQo+ID4gPiA+ICAyIDEuMDAwMDAgICAgICAgICBvc2QuMiAg ICAgZG93biAgICAgICAgMCAgICAgICAgICAxLjAwMDAwDQo+ID4gPiA+ICAzIDEuMDAwMDAgICAg ICAgICBvc2QuMyAgICAgZG93biAgICAgICAgMCAgICAgICAgICAxLjAwMDAwDQo+ID4gPiA+IC0z IDIuMDAwMDAgICAgIGhvc3QgaG9zdDINCj4gPiA+ID4gIDQgMS4wMDAwMCAgICAgICAgIG9zZC40 ICAgICAgIHVwICAxLjAwMDAwICAgICAgICAgIDEuMDAwMDANCj4gPiA+ID4gIDUgMS4wMDAwMCAg ICAgICAgIG9zZC41ICAgICAgIHVwICAxLjAwMDAwICAgICAgICAgIDEuMDAwMDANCj4gPiA+ID4g LTQgMi4wMDAwMCAgICAgaG9zdCBob3N0Mw0KPiA+ID4gPiAgNiAxLjAwMDAwICAgICAgICAgb3Nk LjYgICAgICAgdXAgIDEuMDAwMDAgICAgICAgICAgMS4wMDAwMA0KPiA+ID4gPiAgNyAxLjAwMDAw ICAgICAgICAgb3NkLjcgICAgICAgdXAgIDEuMDAwMDAgICAgICAgICAgMS4wMDAwMA0KPiA+ID4g Pg0KPiA+ID4gPiBBbmQgdGhlIHJ1bGUgdXNlZCBpZiB5b3Ugd2VyZSBpbnRlcmVzdGVkOg0KPiA+ ID4gPiBydWxlIHJlcGxpY2F0ZWRfcnVsZXNldCB7DQo+ID4gPiA+ICAgICAgICAgcnVsZXNldCAw DQo+ID4gPiA+ICAgICAgICAgdHlwZSByZXBsaWNhdGVkDQo+ID4gPiA+ICAgICAgICAgbWluX3Np emUgMQ0KPiA+ID4gPiAgICAgICAgIG1heF9zaXplIDEwDQo+ID4gPiA+ICAgICAgICAgc3RlcCB0 YWtlIHJvb3QNCj4gPiA+ID4gICAgICAgICBzdGVwIGNob29zZWxlYWYgZmlyc3RuIDAgdHlwZSBo b3N0DQo+ID4gPiA+ICAgICAgICAgc3RlcCBlbWl0DQo+ID4gPiA+IH0NCj4gPiA+ID4NCj4gPiA+ ID4gQWxzbyBhbGwgdGhlIHR1bmFibGVzIGFyZSBkZWZhdWx0IHZhbHVlcyBhbmQgSSdtIHJ1bm5p bmcgdGhlIG1hc3RlciBmcm9tIHNldmVyYWwgZGF5cyBhZ28uDQo+ID4gPiA+DQo+ID4gPiA+ID4g SXQgaXMgbm9ybWFsIGZvciBzb21lIG1hcHBpbmdzIHRvIGhhdmUgbXVsdGlwbGUgaXRlbXMgY2hh bmdlLCBhcw0KPiA+ID4gPiA+IEkndmUgZGVzY3JpYmVkIHByZXZpb3VzbHkgb24gdGhpcw0KPiA+ ID4gbGlzdC4NCj4gPiA+ID4gPiBJdCdzIGEgcmVzdWx0IG9mIHRoZSBmYWN0IHRoYXQgd2UncmUg Y29uc2lkZXJpbmcgdG90YWxseQ0KPiA+ID4gPiA+IGluZGVwZW5kZW50IHNlcmllcyBvZiBpdGVt cywgYnV0IHdoZXRoZXIgd2UgYWNjZXB0IGEgY2hvaWNlIGFsc28NCj4gPiA+ID4gPiBkZXBlbmRz IG9uIHRoZSBwcmV2aW91cyBjaG9pY2VzICh3ZSBkbyBub3QgYWxsb3cgZHVwcykuLiB3aGljaA0K PiA+ID4gPiA+IG1lYW5zIHRoYXQgeW91IGdldCBlY2hvIGVmZmVjdHMgaW4gbGF0ZXIgc2xvdHMN Cj4gPiA+IHdoZW4gd2UgbWFrZSBhIGRpZmZlcmVudCBjaG9pY2UgaW4gZWFybGllciBzbG90cy4N Cj4gPiA+ID4gPg0KPiA+ID4gPiBBcyBJIGRlc2NyaWJlZCBpbiB0aGUgcHJldmlvdXMgc2VjdGlv biwgSSB0aGluayB0aGVzZSBleHRyYQ0KPiA+ID4gPiBtaWdyYXRpb25zIGlzIG5vdCBjYXVzZWQg YnkgY29sbGlzaW9ucy4gQW5kIElNTyB0aGUgaWRlYWwgcmVzdWx0DQo+ID4gPiA+IHdoZW4gYW4g b3NkIGZhaWxzIHNob3VsZCBiZSBhIHNpbXBsZSBzaGlmdGluZywganVzdA0KPiA+ID4gYXMgeW91 IGlsbHVzdHJhdGVkIGluIHRoZSBDUlVTSCBwYXBlcjoNCj4gPiA+ID4NCj4gPiA+ID4gMSAyIDMg NCA1IDYNCj4gPiA+ID4gYSBiIGMgZCBlIGYgLi4uDQo+ID4gPiA+DQo+ID4gPiA+IGIgZmFpbHMg PT0+DQo+ID4gPiA+DQo+ID4gPiA+IDEgMiAzIDQgNSA2DQo+ID4gPiA+IGEgYyBkIGUgZiBnIC4u Lg0KPiA+ID4gPg0KPiA+ID4gPiAtLS0tLS0tLS0tDQo+ID4gPiA+IEJlc3QgcmVnYXJkcywNCj4g PiA+ID4gU2FuZ2RpDQo+ID4gPiA+DQo+ID4gPiA+ID4gVGhhbmtzIQ0KPiA+ID4gPiA+IHNhZ2UN Cj4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBwZ2lkICAgIGJlZm9yZSA8LT4gYWZ0 ZXIgICAgICAgIGRpZmYgICAgZGlmZl9udW0NCj4gPiA+ID4gPiA+IDAuMWUgICAgWzUsIDAsIDNd IDwtPiBbNSwgMCwgN10gICAgICAgICBbM10gICAgIDENCj4gPiA+ID4gPiA+IDAuMWYgICAgWzAs IDYsIDNdIDwtPiBbMCwgNiwgNF0gICAgICAgICBbM10gICAgIDENCj4gPiA+ID4gPiA+IDAuMWEg ICAgWzAsIDUsIDJdIDwtPiBbMCwgNSwgNl0gICAgICAgICBbMl0gICAgIDENCj4gPiA+ID4gPiA+ IDAuNSAgICAgWzYsIDMsIDBdIDwtPiBbNiwgMCwgNV0gICAgICAgICBbM10gICAgIDENCj4gPiA+ ID4gPiA+IDAuNCAgICAgWzUsIDcsIDJdIDwtPiBbNSwgNywgMF0gICAgICAgICBbMl0gICAgIDEN Cj4gPiA+ID4gPiA+IDAuNyAgICAgWzMsIDcsIDFdIDwtPiBbNywgMSwgNV0gICAgICAgICBbM10g ICAgIDENCj4gPiA+ID4gPiA+IDAuNiAgICAgWzIsIDAsIDddIDwtPiBbMCwgNywgNF0gICAgICAg ICBbMl0gICAgIDENCj4gPiA+ID4gPiA+IDAuOSAgICAgWzMsIDUsIDFdIDwtPiBbNSwgMSwgN10g ICAgICAgICBbM10gICAgIDENCj4gPiA+ID4gPiA+IDAuMTUgICAgWzIsIDYsIDFdIDwtPiBbNiwg MSwgNF0gICAgICAgICBbMl0gICAgIDENCj4gPiA+ID4gPiA+IDAuMTQgICAgWzMsIDcsIDVdIDwt PiBbNywgNSwgMV0gICAgICAgICBbM10gICAgIDENCj4gPiA+ID4gPiA+IDAuMTcgICAgWzAsIDQs IDNdIDwtPiBbMCwgNCwgNl0gICAgICAgICBbM10gICAgIDENCj4gPiA+ID4gPiA+IDAuMTYgICAg WzAsIDQsIDNdIDwtPiBbMCwgNCwgNl0gICAgICAgICBbM10gICAgIDENCj4gPiA+ID4gPiA+IDAu MTEgICAgWzQsIDYsIDNdIDwtPiBbNCwgNiwgMF0gICAgICAgICBbM10gICAgIDENCj4gPiA+ID4g PiA+IDAuMTAgICAgWzAsIDMsIDZdIDwtPiBbMCwgNiwgNV0gICAgICAgICBbM10gICAgIDENCj4g PiA+ID4gPiA+IDAuMTMgICAgWzEsIDcsIDNdIDwtPiBbMSwgNywgNV0gICAgICAgICBbM10gICAg IDENCj4gPiA+ID4gPiA+IDAuYSAgICAgWzAsIDMsIDZdIDwtPiBbMCwgNiwgNV0gICAgICAgICBb M10gICAgIDENCj4gPiA+ID4gPiA+IDAuYyAgICAgWzUsIDAsIDNdIDwtPiBbNSwgMCwgNl0gICAg ICAgICBbM10gICAgIDENCj4gPiA+ID4gPiA+IDAuYiAgICAgWzIsIDQsIDZdIDwtPiBbNCwgNiwg MV0gICAgICAgICBbMl0gICAgIDENCj4gPiA+ID4gPiA+IDAuMTggICAgWzcsIDMsIDVdIDwtPiBb NywgNSwgMV0gICAgICAgICBbM10gICAgIDENCj4gPiA+ID4gPiA+IDAuZiAgICAgWzIsIDYsIDVd IDwtPiBbNiwgNSwgMV0gICAgICAgICBbMl0gICAgIDENCj4gPiA+ID4gPiA+IENoYW5nZWQgcGcg cmF0aW86IDIwIC8gMzINCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBDdXJyZW50bHkgdGhlIG9u bHkgZGVmZWN0IEkgY2FuIHNlZSBmcm9tIHRoZSBjaGFuZ2UgaXMgdGhhdA0KPiA+ID4gPiA+ID4g dGhlIGNoYW5jZSBmb3IgYSBnaXZlbiBwZyB0byBzdWNjZXNzZnVsbHkNCj4gPiA+ID4gPiBjaG9v c2UgcmVxdWlyZWQgYXZhaWxhYmxlIE9TRHMgbWlnaHQgYmUgYSBiaXQgbG93ZXIgY29tcGFyZWQN Cj4gPiA+ID4gPiB3aXRoIGJlZm9yZS4gSG93ZXZlciwgSSBiZWxpZXZlIGl0IHdpbGwgY2F1c2Ug cHJvYmxlbXMgb25seSB3aGVuDQo+ID4gPiA+ID4gdGhlIGNsdXN0ZXIgaXMgcHJldHR5IHNtYWxs IGFuZCBkZWdyYWRlZC4gQW5kIGluIHRoYXQgY2FzZSwgd2UNCj4gPiA+ID4gPiBjYW4gc3RpbGwg bWFrZSBpdCB3b3JrYWJsZSBieSB0dW5pbmcgc29tZQ0KPiA+ID4gb2YgdGhlIGNydXNobWFwIHBh cmFtZXRlcnMgc3VjaCBhcyBjaG9vc2VsZWFmX3RyaWVzLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+IEFueXdheSBJJ20gbm90IHN1cmUgaWYgaXQgd291bGQgcmFpc2UgYW55IG90aGVyIGlzc3Vl cywgY291bGQNCj4gPiA+ID4gPiA+IHlvdSBwbGVhc2UgcmV2aWV3IGl0IGFuZCBtYXliZSBnaXZl IG1lDQo+ID4gPiA+ID4gc29tZSBzdWdnZXN0aW9ucz8gVGhhbmsgeW91IQ0KPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+IC0tLS0tLS0tLS0NCj4gPiA+ID4gPiA+IEJlc3QgcmVnYXJkcywNCj4gPiA+ ID4gPiA+IFNhbmdkaQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gPiA+ID4g PiAtLS0tDQo+ID4gPiA+ID4gPiAtLS0tDQo+ID4gPiA+ID4gPiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4gPiA+ID4g LSA/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/DQo+ID4gPiA+ID4gPiA/ Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/DQo+ID4gPiA+ID4gPiA/Pz8/ Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/DQo+ID4gPiA+ID4gPiA/Pz8NCj4g PiA+ID4gPiA+IFRoaXMgZS1tYWlsIGFuZCBpdHMgYXR0YWNobWVudHMgY29udGFpbiBjb25maWRl bnRpYWwNCj4gPiA+ID4gPiA+IGluZm9ybWF0aW9uIGZyb20gSDNDLCB3aGljaCBpcyBpbnRlbmRl ZCBvbmx5IGZvciB0aGUgcGVyc29uIG9yDQo+ID4gPiA+ID4gPiBlbnRpdHkgd2hvc2UgYWRkcmVz cyBpcyBsaXN0ZWQgYWJvdmUuIEFueSB1c2Ugb2YgdGhlDQo+ID4gPiA+ID4gPiBpbmZvcm1hdGlv biBjb250YWluZWQgaGVyZWluIGluIGFueSB3YXkgKGluY2x1ZGluZywgYnV0IG5vdA0KPiA+ID4g PiA+ID4gbGltaXRlZCB0bywgdG90YWwgb3IgcGFydGlhbCBkaXNjbG9zdXJlLCByZXByb2R1Y3Rp b24sIG9yDQo+ID4gPiA+ID4gPiBkaXNzZW1pbmF0aW9uKSBieSBwZXJzb25zIG90aGVyIHRoYW4g dGhlIGludGVuZGVkDQo+ID4gPiA+ID4gPiByZWNpcGllbnQocykgaXMgcHJvaGliaXRlZC4gSWYg eW91IHJlY2VpdmUgdGhpcyBlLW1haWwgaW4NCj4gPiA+ID4gPiA+IGVycm9yLCBwbGVhc2Ugbm90 aWZ5IHRoZSBzZW5kZXIgYnkgcGhvbmUgb3IgZW1haWwgaW1tZWRpYXRlbHkgYW5kIGRlbGV0ZSBp dCENCj4gPiA+ID4gPiA+IE4/Pz8/P3I/P3k/Pz8/Pz9YPz8/dj8/Pyk/ey5uPz8/Pz96P116Pz8/ P2F5Px0/Pz8/aiA/P2Y/Pz9oPz8/Pz8eP3c/Pz8NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ID8/P2o6 K3Y/Pz93Pz8/Pz8/Pz8gPz8/P3paKz8/Pz8/Pz9qIj8/Pz9pDQo+ID4gPiA+ID4gLS0NCj4gPiA+ ID4gPiBUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJz Y3JpYmUNCj4gPiA+ID4gPiBjZXBoLWRldmVsIiBpbiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8N Cj4gPiA+ID4gPiBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnIE1vcmUgbWFqb3Jkb21vIGluZm8g YXQNCj4gPiA+ID4gPiBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwN Cj4gPiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gPiA+IC0tLS0NCj4gPiA+ID4gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gPiA+ ID8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8NCj4gPiA+ID4gPz8/Pz8/ Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pw0KPiA+ID4gPiA/Pz8/Pz8/Pz8/Pz8/ Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/DQo+ID4gPiA+ID8/Pw0KPiA+ID4gPiBUaGlzIGUt bWFpbCBhbmQgaXRzIGF0dGFjaG1lbnRzIGNvbnRhaW4gY29uZmlkZW50aWFsIGluZm9ybWF0aW9u DQo+ID4gPiA+IGZyb20gSDNDLCB3aGljaCBpcyBpbnRlbmRlZCBvbmx5IGZvciB0aGUgcGVyc29u IG9yIGVudGl0eSB3aG9zZQ0KPiA+ID4gPiBhZGRyZXNzIGlzIGxpc3RlZCBhYm92ZS4gQW55IHVz ZSBvZiB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkDQo+ID4gPiA+IGhlcmVpbiBpbiBhbnkgd2F5 IChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bywgdG90YWwgb3IgcGFydGlhbA0KPiA+ID4g PiBkaXNjbG9zdXJlLCByZXByb2R1Y3Rpb24sIG9yIGRpc3NlbWluYXRpb24pIGJ5IHBlcnNvbnMg b3RoZXIgdGhhbg0KPiA+ID4gPiB0aGUgaW50ZW5kZWQNCj4gPiA+ID4gcmVjaXBpZW50KHMpIGlz IHByb2hpYml0ZWQuIElmIHlvdSByZWNlaXZlIHRoaXMgZS1tYWlsIGluIGVycm9yLA0KPiA+ID4g PiBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgYnkgcGhvbmUgb3IgZW1haWwgaW1tZWRpYXRlbHkg YW5kIGRlbGV0ZSBpdCENCj4gPiA+ID4gTj8/Pz8/cj8/eT8/Pz8/P1g/Pz92Pz8/KT97Lm4/Pz8/ P3o/XXo/Pz8/YXk/HT8/Pz9qID8/Zj8/P2g/Pz8/Px4/dz8/Pw0KPiA+ID4NCj4gPiA+ID8/P2o6 K3Y/Pz93Pz8/Pz8/Pz8gPz8/P3paKz8/Pz8/Pz9qIj8/Pz9pDQo+ID4gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KPiA+ID8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8N Cj4gPiA/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/DQo+ID4gPz8/Pz8/ Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pw0KPiA+ID8/Pw0KPiA+IFRoaXMgZS1t YWlsIGFuZCBpdHMgYXR0YWNobWVudHMgY29udGFpbiBjb25maWRlbnRpYWwgaW5mb3JtYXRpb24g ZnJvbQ0KPiA+IEgzQywgd2hpY2ggaXMgaW50ZW5kZWQgb25seSBmb3IgdGhlIHBlcnNvbiBvciBl bnRpdHkgd2hvc2UgYWRkcmVzcyBpcw0KPiA+IGxpc3RlZCBhYm92ZS4gQW55IHVzZSBvZiB0aGUg aW5mb3JtYXRpb24gY29udGFpbmVkIGhlcmVpbiBpbiBhbnkgd2F5DQo+ID4gKGluY2x1ZGluZywg YnV0IG5vdCBsaW1pdGVkIHRvLCB0b3RhbCBvciBwYXJ0aWFsIGRpc2Nsb3N1cmUsDQo+ID4gcmVw cm9kdWN0aW9uLCBvciBkaXNzZW1pbmF0aW9uKSBieSBwZXJzb25zIG90aGVyIHRoYW4gdGhlIGlu dGVuZGVkDQo+ID4gcmVjaXBpZW50KHMpIGlzIHByb2hpYml0ZWQuIElmIHlvdSByZWNlaXZlIHRo aXMgZS1tYWlsIGluIGVycm9yLA0KPiA+IHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBieSBwaG9u ZSBvciBlbWFpbCBpbW1lZGlhdGVseSBhbmQgZGVsZXRlIGl0IQ0KPiA+DQo+IC0tDQo+IFRvIHVu c3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBjZXBo LWRldmVsIiBpbiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8NCj4gbWFqb3Jkb21vQHZnZXIua2Vy bmVsLm9yZyBNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21h am9yZG9tby1pbmZvLmh0bWwNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCuacrOmCruS7tuWPiuWFtumZ hOS7tuWQq+acieadreW3nuWNjuS4iemAmuS/oeaKgOacr+aciemZkOWFrOWPuOeahOS/neWvhuS/ oeaBr++8jOS7hemZkOS6juWPkemAgee7meS4iumdouWcsOWdgOS4reWIl+WHug0K55qE5Liq5Lq6 5oiW576k57uE44CC56aB5q2i5Lu75L2V5YW25LuW5Lq65Lul5Lu75L2V5b2i5byP5L2/55So77yI 5YyF5ous5L2G5LiN6ZmQ5LqO5YWo6YOo5oiW6YOo5YiG5Zyw5rOE6Zyy44CB5aSN5Yi244CBDQrm iJbmlaPlj5HvvInmnKzpgq7ku7bkuK3nmoTkv6Hmga/jgILlpoLmnpzmgqjplJnmlLbkuobmnKzp gq7ku7bvvIzor7fmgqjnq4vljbPnlLXor53miJbpgq7ku7bpgJrnn6Xlj5Hku7bkurrlubbliKDp maTmnKwNCumCruS7tu+8gQ0KVGhpcyBlLW1haWwgYW5kIGl0cyBhdHRhY2htZW50cyBjb250YWlu IGNvbmZpZGVudGlhbCBpbmZvcm1hdGlvbiBmcm9tIEgzQywgd2hpY2ggaXMNCmludGVuZGVkIG9u bHkgZm9yIHRoZSBwZXJzb24gb3IgZW50aXR5IHdob3NlIGFkZHJlc3MgaXMgbGlzdGVkIGFib3Zl LiBBbnkgdXNlIG9mIHRoZQ0KaW5mb3JtYXRpb24gY29udGFpbmVkIGhlcmVpbiBpbiBhbnkgd2F5 IChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bywgdG90YWwgb3IgcGFydGlhbA0KZGlzY2xv c3VyZSwgcmVwcm9kdWN0aW9uLCBvciBkaXNzZW1pbmF0aW9uKSBieSBwZXJzb25zIG90aGVyIHRo YW4gdGhlIGludGVuZGVkDQpyZWNpcGllbnQocykgaXMgcHJvaGliaXRlZC4gSWYgeW91IHJlY2Vp dmUgdGhpcyBlLW1haWwgaW4gZXJyb3IsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlcg0KYnkgcGhv bmUgb3IgZW1haWwgaW1tZWRpYXRlbHkgYW5kIGRlbGV0ZSBpdCENCg==