From mboxrd@z Thu Jan 1 00:00:00 1970 From: Allen Samuels Subject: RE: Memory Pooling and Containers Date: Wed, 28 Sep 2016 19:39:42 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-sn1nam01on0048.outbound.protection.outlook.com ([104.47.32.48]:57064 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932392AbcI1Tjp (ORCPT ); Wed, 28 Sep 2016 15:39:45 -0400 In-Reply-To: Content-Language: en-US Sender: ceph-devel-owner@vger.kernel.org List-ID: To: Haomai Wang , Sage Weil Cc: Ceph Development VGhlIHNlYXN0YXIgc3R1ZmYgaXMgaW50ZXJlc3RpbmcsIGl0IGxvb2tzIGxpa2UgYSByZXBsYWNl bWVudCBmb3IgdGhlIHVuZGVybHlpbmcgc3RvcmFnZSBhbGxvY2F0b3Igd2l0aCBzb21lIGhlYXZ5 IG9wdGltaXphdGlvbiBhbmQgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIG1hcHBpbmcgb2YgY29yZXMg b250byBtYWxsb2MvZnJlZSBvcGVyYXRpb25zLg0KDQpJIHdhcyBpbnRlbmRpbmcgdG8gZG8gc29t ZXRoaW5nIGNvbnNpZGVyYWJseSBzbWFsbGVyIGFuZCBlYXNpZXIgc29sZWx5IGluIHRoZSBhY2Nv dW50aW5nIGFyZWEsIGJ1dCBub3QgdG8gYXR0ZW1wdCB0byByZXBsYWNlIHRoZSBleGlzdGluZyBt YWxsb2MvZnJlZSB3b3JrIHRoYXQncyBiZWVuIGRvbmUgKHRjbWFsbG9jL2plbWFsbG9jLCBldGMu KS4NCg0KDQpBbGxlbiBTYW11ZWxzDQpTYW5EaXNrIHxhIFdlc3Rlcm4gRGlnaXRhbCBicmFuZA0K Mjg4MCBKdW5jdGlvbiBBdmVudWUsIFNhbiBKb3NlLCBDQSA5NTEzNA0KVDogKzEgNDA4IDgwMSA3 MDMwfCBNOiArMSA0MDggNzgwIDY0MTYNCmFsbGVuLnNhbXVlbHNAU2FuRGlzay5jb20NCg0KDQo+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEhhb21haSBXYW5nIFttYWlsdG86 aGFvbWFpQHhza3kuY29tXQ0KPiBTZW50OiBXZWRuZXNkYXksIFNlcHRlbWJlciAyOCwgMjAxNiAz OjM0IFBNDQo+IFRvOiBTYWdlIFdlaWwgPHNhZ2VAbmV3ZHJlYW0ubmV0Pg0KPiBDYzogQWxsZW4g U2FtdWVscyA8QWxsZW4uU2FtdWVsc0BzYW5kaXNrLmNvbT47IENlcGggRGV2ZWxvcG1lbnQNCj4g PGNlcGgtZGV2ZWxAdmdlci5rZXJuZWwub3JnPg0KPiBTdWJqZWN0OiBSZTogTWVtb3J5IFBvb2xp bmcgYW5kIENvbnRhaW5lcnMNCj4gDQo+IE9uIFdlZCwgU2VwIDI4LCAyMDE2IGF0IDk6MjcgUE0s IFNhZ2UgV2VpbCA8c2FnZUBuZXdkcmVhbS5uZXQ+IHdyb3RlOg0KPiA+IE9uIFR1ZSwgMjcgU2Vw IDIwMTYsIEFsbGVuIFNhbXVlbHMgd3JvdGU6DQo+ID4+IEFzIHdlIGRpc2N1c3NlZCBpbiB0aGUg Qmx1ZXN0b3JlIHN0YW5kdXAgdGhpcyBtb3JuaW5nLiBUaGlzIGlzDQo+ID4+IGludGVuZGVkIHRv IHN0YXJ0IGEgZGlzY3Vzc2lvbiBhYm91dCBjcmVhdGluZyBzb21lIGludGVybmFsIG1lbW9yeQ0K PiA+PiBwb29saW5nIHRlY2hub2xvZ3kgdG8gdHJ5IHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24g dGhlIGludGVybmFsDQo+ID4+IHVzYWdlIG9mIG1lbW9yeSBieSBDZXBoLiBMZXQncyBzdGFydCBi eSBkaXNjdXNzaW5nIHRoZSByZXF1aXJlbWVudHMuLi4NCj4gPj4NCj4gPj4gSGVyZSBpcyBteSBs aXN0IG9mIHJlcXVpcmVtZW50czoNCj4gPj4NCj4gPj4gKDEpIFNob3VsZCBiZSBhYmxlIHRvIGNy ZWF0ZSBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mICJwb29scyIgb2YgbWVtb3J5Lg0KPiA+Pg0KPiA+ PiAoMikgRGV2ZWxvcGVycyBzaG91bGQgYmUgYWJsZSB0byBkZWNsYXJlIHRoYXQgYSBwYXJ0aWN1 bGFyIGNvbnRhaW5lcg0KPiA+PiAoaS5lLiwgU1RMIG9yIGJvb3N0LWxpa2UgY29udGFpbmVyKSBp cyB3aG9sbHkgY29udGFpbmVkIHdpdGhpbiBhIHBvb2wuDQo+ID4+DQo+ID4+ICgzKSBCZXlvbmQg ZGVjbGFyYXRpb25zIChhbmQgcG9zc2libHkgY29uc3RydWN0b3IgaW5pdGlhbGl6YXRpb24pLCBu bw0KPiA+PiBleHBsaWNpdCBjb2RlIGlzIHJlcXVpcmVkIHRvIGJlIHdyaXR0ZW4gYnkgZGV2ZWxv cGVycyB0byBzdXBwb3J0ICgyKS4NCj4gPj4gQWxsIGNvbnRhaW5lciBtYW5pcHVsYXRpb24gcHJp bWl0aXZlcyBwcm9wZXJseSB1cGRhdGUgdGhlIGFjY291bnRpbmcuDQo+ID4+DQo+ID4+ICg0KSBC ZXlvbmQgY29uc3RydWN0aW9uL2Rlc3RydWN0aW9uIGNvc3RzLCBubyBjb250YWluZXIgb3BlcmF0 aW9uIGlzDQo+ID4+IGJ1cmRlbmVkIGJ5IGFkZGl0aW9uYWwgY29kZSAtLSBvbmx5IGltcGxpY2l0 IG1hbGxvYy9mcmVlIG9wZXJhdGlvbnMNCj4gPj4gYXJlIGJ1cmRlbmVkIHdpdGggYWNjb3VudGlu Zy4NCj4gPj4NCj4gPj4gKDUpIFRoZSBzeXN0ZW0gdHJhY2tzIHRoZSBhZ2dyZWdhdGUgYW1vdW50 IG9mIG1lbW9yeSBjb25zdW1lZCBpbg0KPiBlYWNoDQo+ID4+IHBvb2wgYW5kIGl0J3MgcmVsYXRp dmVseSBjaGVhcCB0byBpbnRlcnJvZ2F0ZSB0aGUgY3VycmVudCB0b3RhbA0KPiA+PiBjb25zdW1w dGlvbi4NCj4gPg0KPiA+IFllcw0KPiA+DQo+ID4+ICg2KSBUaGUgc3lzdGVtIHRyYWNrcyB0aGUg YWdncmVnYXRlIGFtb3VudCBvZiBtZW1vcnkgY29uc3VtZWQgYnkNCj4gZWFjaA0KPiA+PiBjb250 YWluZXIgaW4gZWFjaCBwb29sIC0tIGJ1dCB0aGlzIGlzIGV4cGVuc2l2ZSB0byBpbnRlcnJvZ2F0 ZSBhbmQgaXMNCj4gPj4gaW50ZW5kZWQgdG8gYmUgdXNlZCBwcmltYXJpbHkgZm9yIGRlYnVnZ2lu ZyBwdXJwb3Nlcy4NCj4gPg0KPiA+IFRoaXMgb25lIHNvdW5kcyBsaWtlIGEgbmljZS10by1oYXZl IHRvIG1lLiAgSWYgdGhlcmUgaXMgYSBwZXJmb3JtYW5jZQ0KPiA+IGNvc3QgSSB3b3VsZCBza2lw IGl0Lg0KPiA+DQo+ID4+ICg3KSBnZW5lcmljIG9iamVjdCBuZXcvZGVsZXRlIGlzIHBvc3NpYmxl LCBidXQgbm90IGZyZWVkIG9mIHRoZQ0KPiA+PiBhY2NvdW50aW5nIHJlcXVpcmVtZW50cyAtLSBl c3BlY2lhbGx5ICM2LCBpLmUuLg0KPiA+Pg0KPiA+PiAoOCkgTm8gYmFja3ByZXNzdXJlIGlzIGJ1 aWx0IGludG8gdGhlIHNjaGVtZSwgaS5lLiwgbm9ib2R5IGhhcyB0bw0KPiA+PiB3b3JyeSBhYm91 dCBzdWRkZW5seSBiZWluZyAib3V0IiBvZiBtZW1vcnkgb3IgYmVpbmcgZGVsYXllZCAtLSBqdXN0 DQo+ID4+IGJlY2F1c2Ugc29tZSBwYXJ0aWN1bGFyIHBvb2wgaXMgZmlsbGluZyB1cC4gVGhhdCdz IGEgaGlnaGVyIGxldmVsDQo+ID4+IHByb2JsZW0gdG8gc29sdmUuIE5vIG1lbW9yeSBpcyAicmVz ZXJ2ZWQiIGVpdGhlciAtLSBJZiB5b3UNCj4gPj4gb3ZlcmNvbW1pdCwgdGhhdCdzIGFsc28gbm90 IHNvbHZlZCBhdCB0aGlzIGxheWVyLiBJTU8sIHRoaXMgaXMgYQ0KPiA+PiBjcmFwcHkgcGxhY2Ug dG8gYmUgZG9pbmcgaW5nZXN0IGFuZCBmbG93IGNvbnRyb2wuDQo+ID4+DQo+ID4+ICg5KSBJbXBs ZW1lbnRhdGlvbiBtdXN0IGJlIG11bHRpLXRocmVhZCBhbmQgbXVsdGktc29ja2V0IGF3YXJlLiBJ dA0KPiA+PiBzaG91bGQgZXhwZWN0IGhpZ2ggbGV2ZWxzIG9mIHRocmVhZCBjb25jdXJyZW5jeSBh bmQgYXZvaWQgdW5uZWNlc3NhcnkNCj4gPj4gZ2xvYmFsIGRhdGEgbWFuaXB1bGF0aW9uIChleHBl Y3QgaW50ZXJuYWwgc2hhcmRpbmcgb2YgZGF0YSBzdHJ1Y3R1cmVzDQo+ID4+IC0tIHNvbWV0aGlu ZyBsaWtlIGFuIGFyZW5hLWJhc2VkIG1hbGxvYyBzY2hlbWUpLg0KPiA+DQo+ID4gWWVzDQo+ID4N Cj4gPj4gUmVxdWlyZW1lbnQgNSBhbGxvd3MgYSAidHJpbW1pbmciIHN5c3RlbSB0byBiZSBkZXZl bG9wZWQuIEkgdGhpbmsNCj4gPj4gdGhlcmUgYXJlIHJlYWxseSB0d28gc3R5bGVzIGZvciB0aGlz Og0KPiA+Pg0KPiA+PiAoYSkgVGltZS1iYXNlZCwgaS5lLiwgcGVyaW9kaWNhbGx5IHNvbWUgdGhy ZWFkIHdha2VzIHVwIGFuZCBjaGVja3MNCj4gPj4gbWVtb3J5IHVzYWdlIHdpdGhpbiBhIHBvb2wu IElmIGl0IGRvZXNuJ3QgbGlrZSBpdCwgdGhlbiBpdCdzDQo+ID4+IHJlc3BvbnNpYmxlIGZvciAi Zml4aW5nIiBpdCwgaS5lLiwgdHJpbW1pbmcgYXMgbmVlZGVkLg0KPiA+Pg0KPiA+PiAoYikgZXZl bnQtYmFzZWQuIE5vIHJlYXNvbiB0aGF0IHdlIGNvdWxkbid0IHNldHVwIGFuIGV2ZW50IG9yDQo+ ID4+IGNvbmRpdGlvbiB2YXJpYWJsZSBwZXItcG9vbCBhbmQgaGF2ZSB0aGUgbWFsbG9jL2ZyZWUg Y29kZSB0cmlnZ2VyDQo+ID4+IHRoYXQgY29uZGl0aW9uL3ZhcmlhYmxlLiBJdCBhZGRzIG9uZSBv ciB0d28gY29tcGFyZS9icmFuY2hlcyB0byBlYWNoDQo+ID4+IG1hbGxvYyAvIGZyZWUgb3BlcmF0 aW9uICh3aGljaCBpcyBwcmV0dHkgY2hlYXApLCBidXQgZG9lc24ndCBoYXZlIHRoZQ0KPiA+PiBs YXRlbmN5IGNvc3RzIG9mIChhKS4gVGhlIGRvd25zaWRlIGlzIHRoYXQgdGhpcyBpbXBsaWNpdGx5 IGFzc3VtZXMgYQ0KPiA+PiBzaW5nbGUgZ2xvYmFsLXRocmVhZCBpcyByZXNwb25zaWJsZSBmb3Ig Y2xlYW5pbmcgZWFjaCBwb29sIHdoaWNoDQo+ID4+IHdvcmtzIHdlbGwgd2hlbiB0aGVyZSBhcmUg YSByZWxhdGl2ZWx5IHNtYWxsIG51bWJlciBvZiBwb29scy4NCj4gPj4NCj4gPj4gSGVyZSBpcyBt eSBsaXN0IG9mIGFudGktcmVxdWlyZW1lbnRzOg0KPiA+Pg0KPiA+PiAoMSkgTm8gaGllcmFyY2hp Y2FsIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBwb29scy4gW0lNTywgdGhpcyBpcw0KPiA+PiBr ZXdsLCBidXQgdW5uZWNlc3NhcnkgYW5kIHRlbmRzIHRvIHNjcmV3IHVwIHlvdXIgY2FjaGUsIGku ZS4sIGRlc3Ryb3lzDQo+ICM5Lg0KPiA+Pg0KPiA+PiAoMikgTm8gcGh5c2ljYWwgY29sb2NhdGlv biBvZiB0aGUgYWxsb2NhdGVkIHBvb2wgbWVtb3J5LiBUaGUgcG9vbCBpcw0KPiA+PiAibG9naWNh bCIsIGkuZS4sIGFuIGFjY291bnRpbmcgbWlyYWdlIG9ubHkuDQo+ID4+DQo+ID4+ICgzKSBObyBy ZWFzb24gdG8gZHluYW1pY2FsbHkgY3JlYXRlL2Rlc3Ryb3kgbWVtb3J5IHBvb2xzLiBUaGV5IGNh biBiZQ0KPiA+PiBzdGF0aWNhbGx5IGRlY2xhcmVkICh0aGlzIGRyYW1hdGljYWxseSBzaW1wbGlm aWVzIHRoZSBjb2RlIHRoYXQgdXNlcw0KPiA+PiB0aGlzIHN5c3RlbSkuDQo+ID4NCj4gPiBZZXMu ICBHcmVhdCBzdW1tYXJ5IQ0KPiA+DQo+ID4+IExldCB0aGUgZGlzY3Vzc2lvbiBiZWdpbiEhDQo+ ID4+IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCj4gPj4NCj4gPj4gSGVyZSBpcyBteSBwcm9w b3NlZCBleHRlcm5hbCBpbnRlcmZhY2UgdG8gdGhlIGRlc2lnbjoNCj4gPj4NCj4gPj4gRmlyc3Qs IGxvb2sgYXQgdGhlIHNsYWJfeHh4eCBjb250YWluZXJzIHRoYXQgSSBqdXN0IHN1Ym1pdHRlZC4g WW91DQo+ID4+IGNhbiBmaW5kIHRoZW0gYXQNCj4gPj4NCj4gaHR0cHM6Ly9naXRodWIuY29tL2Fs bGVuc2FtdWVscy9jZXBoL2Jsb2IvbWFzdGVyL3NyYy9pbmNsdWRlL3NsYWJfY29uDQo+ID4+IHRh aW5lcnMuaA0KPiA+Pg0KPiA+PiBJIHdvdWxkIHByb3Bvc2UgdG8gZXh0ZW5kIHRob3NlIGNvbnRh aW5lcnMgYXMgdGhlIGJhc2lzIGZvciB0aGUNCj4gPj4gbWVtb3J5IHBvb2xpbmcuDQo+ID4+DQo+ ID4+IEZpcnN0LCB0aGVyZSdzIGEgZ2xvYmFsIGVudW0gdGhhdCBkZWZpbmVzIHRoZSBtZW1vcnkg cG9vbHMgLS0geWVzLA0KPiA+PiB0aGV5J3JlIHN0YXRpYyBhbmQgYSBzbWFsbCBudW1iZXINCj4g Pj4NCj4gPj4gZW51bSBtcG9vbF9pbmRleCB7DQo+ID4+ICAgIE1QT09MX09ORSwNCj4gPj4gICAg TVBPT0xfVFdPLA0KPiA+PiAuLi4NCj4gPj4gICAgTVBPT0xfTEFTVA0KPiA+PiB9Ow0KPiA+Pg0K PiA+PiBBbmQgYSBnbG9iYWwgb2JqZWN0IGZvciBlYWNoIHBvb2w6DQo+ID4+DQo+ID4+IGNsYXNz IG1wb29sOyAvLyBUQkQgLi4uIHNlZSBiZWxvdy4NCj4gPj4NCj4gPj4gRXh0ZXJuIG1wb29sW01Q T09MX0xBU1RdOyAvLyBBY3R1YWwgZGVmaW5pdGlvbiBvZiBlYWNoIHBvb2wNCj4gPj4NCj4gPj4g RWFjaCBzbGFiX3h4eCBjb250YWluZXIgdGVtcGxhdGUgaXMgYXVnbWVudGVkIHRvIGV4cGVjdCBy ZWNlaXZlIGFuDQo+ID4+IGFkZGl0aW9uYWwgImVudW0gbXBvb2xfaW5kZXgiIHBhcmFtZXRlci4N Cj4gPj4NCj4gPj4gVGhhdCdzIEFMTCBUSEFUJ1MgcmVxdWlyZWQgZm9yIHRoZSBkZXZlbG9wZXIu IEluIG90aGVyIHdvcmRzLCBpZiBlYWNoDQo+ID4+IGRlZmluaXRpb24gb2YgYW4gU1RMIGNvbnRh aW5lciB1c2VzIGEgdHlwZWRlZiB3aXRoIHRoZSByaWdodCBtcG9vbA0KPiA+PiBpbmRleCwgdGhl biB5b3UncmUgZG9uZS4gVGhlIG1hY2hpbmVyeSB0YWtlcyBjYXJlIG9mIGV2ZXJ5dGhpbmcgZWxz ZQ0KPiA+PiA6KQ0KPiA+DQo+ID4gRldJVyBJJ20gbm90IHN1cmUgaWYgdGhlcmUncyBtdWNoIHJl YXNvbiB0byBwYXNzIE1QT09MX0ZPTyBpbnN0ZWFkIG9mDQo+ID4gZ19tcG9vbFtNUE9PTF9GT09d IHRvIHRoZSBhbGxvY2F0b3IgaW5zdGFuY2UuICBUaGUgZm9ybWVyIGhhcmQtY29kZXMNCj4gPiB0 aGUgZ2xvYmFsIGluc3RhbmNlOyB0aGUgbGF0dGVyIG1lYW5zIHlvdSBjb3VsZCBtYW5hZ2UgdGhl IG1lbW9yeSBwb29sDQo+ID4gaG93ZXZlciB5b3UgbGlrZSAoZS5nLiwgYXMgcGFydCBvZiB0aGUg Q2VwaENvbnRleHQgZm9yIGxpYnJhZG9zKS4NCj4gPiBUaGF0J3MgYSBzbWFsbCBkZXRhaWwsIHRo b3VnaC4NCj4gPg0KPiA+PiBTdGFuZGFsb25lIG9iamVjdHMsIGkuZS4sIG5ha2VkIG5ldy9kZWxl dGUgYXJlIGVhc2lseSBkb25lIGJ5IG1ha2luZw0KPiA+PiB0aGUgZXF1aXZhbGVudCBvZiBhIHNs YWJfaW50cnVzaXZlX2xpc3QgYW5kIG1heWJlIGEgbWFjcm8gb3IgdHdvLg0KPiA+PiBUaGVyZSdz IHNvbWUgdHJpY2t5IGluaXRpYWxpemF0aW9uIGZvciB0aGlzIG9uZSAoc2VlIGJlbG93KS4NCj4g Pj4NCj4gPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ Pg0KPiA+PiBJbXBsZW1lbnRhdGlvbg0KPiA+Pg0KPiA+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4+DQo+ID4+IFJlcXVpcmVtZW50IDYgaXMgd2hhdCBk cml2ZXMgdGhpcyBpbXBsZW1lbnRhdGlvbi4NCj4gPj4NCj4gPj4gSSB3b3VsZCBleHRlbmQgZWFj aCBzbGFiX3h4eHggY29udGFpbmVyIHRvIGFsc28gdmlydHVhbGx5IGluaGVyaXQNCj4gPj4gZnJv bSBhIFBvb2xfTWVtYmVyIGludGVyZmFjZSwgdGhpcyBpbnRlcmZhY2UgYWxsb3dzIHRoZSBtZW1v cnkgcG9vbA0KPiA+PiBnbG9iYWwgbWFjaGluZXJ5IHRvIGltcGxlbWVudCAjNi4NCj4gPj4NCj4g Pj4gSSBwcm9wb3NlIHRoYXQgdGhlIGN0b3IvZHRvciBmb3IgUG9vbF9NZW1iZXIgKG9uZSBmb3Ig ZWFjaCBjb250YWluZXIpDQo+ID4+IHB1dCBpdHNlbGYgb24gYSBsaXN0IHdpdGhpbiB0aGUgcmVz cGVjdGl2ZSBtZW1vcnkgcG9vbC4gVGhpcyBNVVNUIGJlDQo+ID4+IGEgc3luY2hyb25pemVkIG9w ZXJhdGlvbiBidXQgd2UgY2FuIHNoYXJkIHRoZSBsaXN0IHRvIHJlZHVjZSB0aGUNCj4gPj4gY29s bGlzaW9ucyAodXNlIHRoZSBsb3cgNC01IGJpdHMgb2YgdGhlIGNyZWF0aW5nIHRocmVhZCBwb2lu dGVyIHRvDQo+ID4+IGluZGV4IHRoZSBzaGFyZCAtLSBtaW5pbWl6ZXMgY3RvciBleHBlbnNlIGJ1 dCBpbmNyZWFzZXMgdGhlIGR0b3INCj4gPj4gZXhwZW5zZSAtLSB3aGljaCBpcyBvZnRlbiBkb25l IGluICJ0cmltIikuIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSByYXRlDQo+ID4+IG9mIGNvbnRhaW5l ciBjcmVhdGlvbi9kZXN0cnVjdGlvbiB3aXRoaW4gYSBtZW1vcnkgcG9vbCBpcyBub3Qgc3VwZXIN Cj4gPj4gaGlnaCAtLSB3ZSBjb3VsZCBtYWtlIHRoaXMgYmUgYSBjb21waWxlLXRpbWUgb3B0aW9u IGlmIGl0IGJlY29tZXMgdG9vDQo+IGV4cGVuc2l2ZS4NCj4gPj4NCj4gPj4gVGhlIHBlci1wb29s IHNoYXJkZWQgbGlzdHMgYWxsb3cgdGhlIGRlYnVnIHJvdXRpbmVzIHRvIHZpc2l0IGVhY2gNCj4g Pj4gY29udGFpbmVyIGFuZCBkbyB0aGluZ3MgbGlrZSBhc2sgImhvdyBtYW55IGVsZW1lbnRzIGRv IHlvdSBoYXZlPyIgLS0NCj4gPj4gIkhvdyBiaWcgaXMgZWFjaCBlbGVtZW50IiAtLSAiR2l2ZSBt ZSBhIHByaW50YWJsZSBzdHJpbmcgb2YgdGhlDQo+ID4+IHR5cGUtc2lnbmF0dXJlIGZvciB0aGlz IGNvbnRhaW5lciIuIE9uY2UgeW91IGhhdmUgdGhpcyBsaXN0IHlvdSBjYW4NCj4gPj4gZ2VuZXJh dGUgbG90cyBvZiBpbnRlcmVzdGluZyBkZWJ1ZyByZXBvcnRzLiBCZWNhdXNlIHlvdSBjYW4gc29y dCBieQ0KPiA+PiBpbmRpdmlkdWFsIGNvbnRhaW5lcnMgYXMgd2VsbCBhcyBncm91cCBjb250YWlu ZXJzIGJ5IHRoZWlyIHR5cGUNCj4gPj4gc2lnbmF0dXJlcyAoaS5lLiwgY29tYmluZWQgdGhlIGNv bnN1bXB0aW9uIG9mIGFsbCAibWFwPGEsYj4iDQo+ID4+IGNvbnRhaW5lcnMgYXMgYSBncm91cCku IFlvdSBjYW4gcmVwb3J0IG91dCBib3RoIGJ5IEJ5dGUgYXMgd2VsbCBhcyBieQ0KPiA+PiBFbGVt ZW50IGNvdW50IGNvbnN1bXB0aW9uLg0KPiA+DQo+ID4gWWVhaCwgdGhpcyBzb3VuZHMgcHJldHR5 IG5pY2UuICBCdXQgSSB0aGluayBpdCdzIGltcG9ydGFudCB0byBiZSBhYmxlDQo+ID4gdG8gY29t cGlsZSBpdCBvdXQuICBJIHRoaW5rIHdlIHdpbGwgaGF2ZSBhIGxvdCBvZiBjcmVhdGlvbnMvZGVz dHJ1Y3Rpb25zLg0KPiA+IEZvciBleGFtcGxlLCBpbiBCbHVlU3RvcmUsIE9ub2RlcyBoYXZlIG1h cHMgb2YgRXh0ZW50cywgdGhvc2UgbWFwIHRvDQo+ID4gQmxvYnMsIGFuZCB0aG9zZSBoYXZlIGEg QnVmZmVyU3BhY2Ugd2l0aCBhIG1hcCBvZiBCdWZmZXJzIGZvciBjYWNoZWQNCj4gPiBkYXRhLiAg SSBleHBlY3QgdGhhdCBibG9icyBhbmQgZXZlbiBvbm9kZXMgd2lsbCBiZSBjb21pbmcgaW4gYW5k IG91dA0KPiA+IG9mIGNhY2hlIGEgbG90Lg0KPiA+DQo+ID4+IFRoaXMga2luZCBvZiBpbmZvcm1h dGlvbiB1c3VhbGx5IGFsbG93cyB5b3UgdG8gcXVpY2tseSBmaWd1cmUgb3V0DQo+ID4+IHdoZXJl IHRoZSBtZW1vcnkgaXMgYmVpbmcgY29uc3VtZWQuIEEgYml0IG9mIHNjcmlwdCB3aXphcmRyeSB3 b3VsZA0KPiA+PiByZWNvZ25pemUgdGhhdCBzb21lIGNvbnRhaW5lcnMgY29udGFpbiBvdGhlciBj b250YWluZXJzLiBGb3IgZXhhbXBsZSwNCj4gPj4gbm8gcmVhc29uIGEgc2ltcGxlIFB5dGhvbiBz Y3JpcHQgY291bGRuJ3QgcmVjb2duaXplIHRoYXQgZWFjaCBvTm9kZQ0KPiA+PiBtaWdodCBoYXZl IGEgYnVuY2ggb2YgdmVjdG9yPHBleHRlbnRzPiB3aXRoaW4gaXQgYW5kIHRlbGwgeW91IHRoaW5n cw0KPiA+PiBsaWtlIHRoZSBhdmVyYWdlIG51bWJlciBvZiBwZXh0ZW50cyAvIG9Ob2Rlcy4gQXZl cmFnZSBEUkFNDQo+ID4+IGNvbnN1bXB0aW9uIHBlciBvTm9kZSAod2hpY2ggaXMgYSBwcmV0dHkg Y29tcGxpY2F0ZWQgY29tYmluYXRpb24gb2YNCj4gPj4gcGV4dGVudHMsIGxleHRlbnRzLCBidWZm ZXI6OnB0ciwNCj4gPj4gZXRjLikNCj4gPj4NCj4gPj4gQ29tbWVudHM6ID8/Pz8/DQo+ID4NCj4g PiBJdCB3b3VsZCBiZSBuaWNlIHRvIGJ1aWxkIHRoaXMgb24gdG9wIG9mIGV4aXN0aW5nIGFsbG9j YXRvciBsaWJyYXJpZXMNCj4gPiBpZiB3ZSBjYW4uICBGb3IgZXhhbXBsZSwgc29tZXRoaW5nIGlu IGJvb3N0LiAgSSB0b29rIGEgcXVpY2sgcGVlayB0aGUNCj4gPiBvdGhlciBkYXkgYW5kIGRpZG4n dCBmaW5kIHNvbWV0aGluZyB0aGF0IGFsbG93ZWQgc2ltcGxlIGludGVycm9nYXRpb24NCj4gPiBh Ym91dCB1dGlsaXphdGlvbiwgdGhvdWdoLCB3aGljaCB3YXMgc3VycHJpc2luZy4gIEl0IHdvdWxk IGJlIG5pY2UgdG8NCj4gPiBoYXZlIHNvbWV0aGluZyB1c2VmdWwgKHBlcmhhcHMgd2l0aG91dCAj NikgdGhhdCBjb3VsZCBiZSBkb25lDQo+ID4gcmVsYXRpdmVseSBxdWlja2x5IGFuZCBhZGRyZXNz IGFsbCBvZiB0aGUgb3RoZXIgcmVxdWlyZW1lbnRzLg0KPiANCj4gSWYgd2Ugd2FudCB0byBkbyBp biBhIGxpZ2h0IHdheSwgSSByZWNvbW1lbmQgdG8gcmVmZXIgdG8gc2Vhc3Rhcg0KPiBpbXBsKGh0 dHBzOi8vZ2l0aHViLmNvbS9zY3lsbGFkYi9zZWFzdGFyL2Jsb2IvbWFzdGVyL2NvcmUvbWVtb3J5 LmhoDQo+IGh0dHBzOi8vZ2l0aHViLmNvbS9zY3lsbGFkYi9zZWFzdGFyL2Jsb2IvbWFzdGVyL2Nv cmUvc2xhYi5oaCkuIFRoaXMgY2FuDQo+IGdpdmUgYSBsb3Qgb2YgaW5zaWdodHMuDQo+IA0KPiA+ DQo+ID4gc2FnZQ0KPiA+IC0tDQo+ID4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNl bmQgdGhlIGxpbmUgInVuc3UgYnNjcmliZSBjZXBoLWRldmVsIg0KPiA+IGluIHRoZSBib2R5IG9m IGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnIE1vcmUNCj4gbWFqb3Jkb21v DQo+ID4gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1s DQo=