From mboxrd@z Thu Jan 1 00:00:00 1970 From: ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org (Eric W. Biederman) Subject: Re: [Pkg-shadow-devel] [PATCH 00/11] pkg-shadow support subordinate ids with user namespaces Date: Wed, 07 Aug 2013 11:04:59 -0700 Message-ID: <87eha5peb8.fsf@xmission.com> References: <87d2wxshu0.fsf@xmission.com> <20130728171451.GX5670@mykerinos.kheops.frmug.org> <87r4eilg6y.fsf@xmission.com> <11218395-363e-46cd-b7a1-4488079a4986@email.android.com> <20130806145403.GA20913@mail.hallyn.com> <20130806225332.GA14109@nekral.nekral.homelinux.net> <20130807153352.GA5022@sergelap> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20130807153352.GA5022@sergelap> (Serge Hallyn's message of "Wed, 7 Aug 2013 10:33:52 -0500") List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: Serge Hallyn Cc: Linux Containers , Pkg-shadow-devel-XbBxUvOt3X2LieD7tvxI8l/i77bcL1HB@public.gmane.org, "Michael Kerrisk (man-pages)" , Christian PERRIER List-Id: containers.vger.kernel.org U2VyZ2UgSGFsbHluIDxzZXJnZS5oYWxseW5AdWJ1bnR1LmNvbT4gd3JpdGVzOgoKPiBRdW90aW5n IE5pY29sYXMgRnJhbsOnb2lzIChuaWNvbGFzLmZyYW5jb2lzQGNlbnRyYWxpZW5zLm5ldCk6Cj4+ IEhpLAo+PiAKPj4gT24gVHVlLCBBdWcgMDYsIDIwMTMgYXQgMDI6NTQ6MDNQTSArMDAwMCwgc2Vy Z2VAaGFsbHluLmNvbSB3cm90ZToKPj4gPiAKPj4gPiBJIHJlYmFzZWQgYW5kIHB1c2hlZCB0aGUg cGF0Y2hzZXQgeWVzdGVyZGF5Lgo+PiAKPj4gVGhhbmtzICh0aGlzIHJlbW92ZXMgbWUgdGhlIGJ1 cmRlbiBvZiBmaW5kaW5nIGhvdyB0byBtZXJnZSBhIGJyYW5jaCkuCj4+IAo+PiBJIHN0YXJ0ZWQg dG8gcmV2aWV3IGFuZCByZWFkIGFib3V0IHVzZXIgbmFtZXNwYWNlcyAodGhhbmtzIHRvIE1pY2hh ZWwhKQo+PiBvCj4+IEhlcmUgYXJlIHNvbWUgcXVlc3Rpb25zL3JlbWFya3M6Cj4+IAo+PiAgMV0g SXQgd291bGQgYmUgbmljZSB0byBiZSBhYmxlIHRvIGRpc2FibGUgdGhlIG5ldyB0b29scyAvIG1h bnBhZ2VzIC8KPj4gICAgIG9wdGlvbnMgb24gc29tZSBzeXN0ZW1zIChpLmUuIHRoZXkgb25seSBt YWtlIHNlbnNlIG9uIExpbnV4LCB3aXRoCj4+ICAgICByZWNlbnQgS2VybmVsKS4gSXQgd291bGQg YmUgT0sgZm9yIG1lIGlmIGl0IGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KPj4gICAgIERvIHlvdSBh Z3JlZT8KPgo+IE1ha2VzIHNlbnNlLgo+Cj4+ICAyXSBJIHRoaW5rIHdlIGNhbiBhc3N1bWUgdGhh dCBVSUQvR0lEcyBhcmUgKGF0IGxlYXN0KSAzMiBiaXRzLCByaWdodD8KPj4gICAgIChvciBhdCBs ZWFzdCB3aGVuIHRoZSBmZWF0dXJlIGlzIG5vdCBkaXNhYmxlZCAtIHNlZSBwb2ludCAxKQo+Cj4g SG0sIHdoYXQgYWJvdXQgc3lzdGVtcyBjb21waWxlZCB3aXRoIENPTkZJR19VSUQxNj8KPgo+PiAg M10gRm9yIFBBTSB2ZXJzaW9ucyBvZiBzaGFkb3csIEkgdGhpbmsgaXQgd291bGQgYmUgbmljZSB0 byBhdXRoZW50aWNhdGUKPj4gICAgIHRoZSBjYWxsZXIgb2YgbmV3dWlkbWFwIC8gbmV3Z2lkbWFw LiBEbyB5b3UgYWdyZWU/Cj4KPiBJJ20gbm90IHN1cmUgd2hhdCB5b3UgbWVhbi4gIERvIHlvdSBt ZWFuIHRoYXQgcGFtX3NvbWV0aGluZy5zbyBjb3VsZAo+IG90aGVyd2lzZSBjYWxsIG5ld3VpZG1h cC9uZXdnaWRtYXAgYmVmb3JlIGJlaW5nIGF1dGhlbnRpY2F0ZWQ/CgpJdCBzb3VuZGVkIHRvIG1l IGxpa2UgaGUgd2FzIHN1Z2dlc3RpbmcgbmV3dWlkbWFwL25ld2dpZG1hcCBzaG91bGQgbWFrZQph biBhcHByb3ByaWF0ZSBwYW0gY2FsbC4gIEkgYW0gbm90IGZhbWlsaWFyIHdpdGggdGhhdCBwYXJ0 IG9mIHBhbSBzbyBJCmRvbid0IGtub3cgd2hhdCB3b3VsZCBiZSBhbiBhcHByb3ByaWF0ZSBwYW0g Y2FsbC4KClRoZSBjbG9zZXN0IGFuYWxvZyBJIGNhbiB0aGluayBvZiBpcyBuZXdncnAsIGFuZCB0 byBteSBrbm93bGVkZ2UgbmV3Z3JwCmRvZXMgbm90IGNhbCBpbnRvIHBhbS4KCgo+PiAgNF0gV2hh dCBoYXBwZW5zIHdoZW4gbmV3dWlkbWFwIC8gbmV3Z2lkbWFwIGFyZSB1c2VkIHdpdGhpbiBhIG5l dyBuYW1lc3BhY2U/Cj4+ICAgICBJcyB0aGVyZSBhIHJpc2sgdG8gZG8gc29tZXRoaW5nIHdyb25n IGJ5IHJlY3Vyc2l2ZWx5IGNyZWF0aW5nIHNoZWxscyBpbgo+PiAgICAgY2FzY2FkZWQgbmFtZXNw YWNlIGFuZCB1c2luZyB0aGVzZSB0b29scz8gKEkgZG9uJ3QgdGhpbmsgc28pCj4+ICAgICBJcyB0 aGVyZSBhIHdheSB0byBlbmZvcmNlIHRoYXQgaXQgd291bGQgb25seSBiZSB1c2VkIGluIHRoZSB0 b3AtbW9zdAo+PiAgICAgbmFtZXNwYWNlPyAoTWF5YmUgaXQncyBub3QgbmVlZGVkIHRvIGZvcmJp ZCBpdCkKPgo+IFRoZSBrZXJuZWwgdXNlciBuYW1lc3BhY2UgaW1wbGVtZW50YXRpb24gaXMgZGVz aWduZWQgdG8gc3VwcG9ydCBuZXN0aW5nLgo+Cj4gQWN0dWFsbHkgSSdtIG5vdCAxMDAlIHN1cmUs IGJ1dCBJIHRoaW5rIHRoYXQgc2V0dWlkLXJvb3QgaXMgY3VycmVudGx5Cj4gb25seSBob25vcmVk IGluIHRoZSBpbml0aWFsIHVzZXIgbmFtZXNwYWNlLiAgSWYgdGhhdCB3ZXJlIGNoYW5nZWQsCj4g dGhlbiBjYWxsaW5nIG5ld3VpZG1hcCBmcm9tIGEgY2hpbGQgdXNlciBuYW1lc3BhY2Ugd291bGQg b25seSBnaXZlCj4gdGhlIGNhbGxlciBwcml2aWxlZ2Ugb3ZlciBoaXMgY2hpbGQgdXNlciBuYW1l c3BhY2UuICBUaGVyZWZvcmUgaGUKPiBjb3VsZCBvbmx5IGRlbGVnYXRlIHVzZXJpZHMgZnJvbSBo aXMgb3duIChub24taW5pdCkgbmFtZXNwYWNlIHRvCj4gaGlzIG93biBkZXNjZW5kZW50IHVzZXIg bmFtZXNwYWNlcy4KPgo+IGNhbGxpbmcgbmV3dWlkbWFwIG9uIGEgcGlkIGluIHRoZSBpbml0aWFs IHVzZXIgbmFtZXNwYWNlIHJlc3VsdHMgaW4KPiAtRVBFUk0gKGFzIG90aGVyd2lzZSBhbiB1bnBy aXZpbGVnZWQgdXNlciBjb3VsZCByZW1hcCBwcml2aWxlZ2VkCj4gdGFza3MgdG8gaGlzIHBlcm1p dHRlZCBzdWJ1aWRzIDopCgpUaGVyZSBhcmUgc2xpZ2h0bHkgZnVubnkgdGhpbmdzIHdpdGggc2V0 dWlkIGFuZCBzZXRjYXAuCgpUaGUgc2hvcnQgdmVyc2lvbiBob3dldmVyIGlzIHRoYXQgb25jZSBp biBhIHVzZXIgbmFtZXNwYWNlIHlvdSB3aWxsCm5ldmVyIGhhdmUgbW9yZSBwZXJtaXNzaW9ucyB0 aGFuIHlvdXIgdGhlIHJvb3QgdXNlciBpbiB5b3VyIHVzZXIKbmFtZXNwYWNlLgoKU28gZnJvbSB0 aGUgb3V0c2lkZSBvZiB0aGUgdXNlciBuYW1lc3BhY2UgeW91IGNhbid0IGRvIGFueXRoaW5nIGJh ZCBldmVuCndpdGggbmVzdGluZy4gIEFrYSB0aGVyZSBpcyBubyBkZWZpbmVkIG1lYW5zIHRvIGVz Y2FwdGUgcHJpdmlsZWdlcyBmcm9tCmluc2lkZSBhIHVzZXIgbmFtZXNwYWNlIHRvIGFueXRoaW5n IHByaXZpbGVnZWQgb3V0c2lkZSBhIHVzZXIgbmFtZXNwYWNlLgoKRnJvbSBpbnNpZGUgdGhlIHVz ZXIgbmFtZXNwYWNlIHlvdSBjYW4gb25seSBmb2xsb3cgL2V0Yy9zdWJ1aWQgb3IKL2V0Yy9zdWJn aWQgKHdoZW4gc2V0dGluZyB1cCBhIG5lc3RlZCB1c2VyIG5hbWVzcGFjZSkuICBBbmQgaWYgdGhh dCBpcyBhCmNvbmNlcm4gdGhlIHJvb3QgdXNlciBvZiBhIHVzZXIgbmFtZXNwYWNlIGNhbiBqdXN0 IGNyZWF0ZSBhIG5ldyBtb3VudApuYW1lc3BhY2UgYW5kIG1vdW50IG92ZXIgdGhlIHRvcCBvZiB0 aGVtLgoKU28gSSBkb24ndCBzZWUgYW55dGhpbmcgdG8gY29uY2VybiBhYm91dC4KCj4+ICAgICBJ dCB3b3VsZCBiZSB3b3J0aCB0byBoYXZlIGF0IGxlYXN0IGEgcGFyYWdyYXBoIGFib3V0IGl0IGlu IHRoZQo+PiAgICAgbWFucGFnZXMuIChpLmUuIElEcyBpbiAvZXRjL3N1YippZCBhcmUgYWNjb3Jk aW5nIHRvIHRoZSBjYWxsZXIncwo+PiAgICAgbmFtZXNwYWNlKQo+Cj4gQWdyZWVkLgo+Cj4+ICA1 XSBJdCB3b3VsZCBiZSB3b3J0aCBkb2N1bWVudGluZyBvbiB3aGljaCBwcm9jZXNzZXMgbmV3dWlk bWFwIC8gbmV3Z2lkbWFwCj4+ICAgICBjYW4gYWN0Lgo+PiAgICAgV2l0aCBuZXd1aWRtYXAsIGFu IHVzZXIgY2FuIHNldCB0aGUgVUlEIG1hcHBpbmcgZm9yIGFueSBwcm9jZXNzIHdpdGgKPj4gICAg IHJlc3RyaWN0aW9ucyBvbiB0aGUgcHJvY2VzcyBhbmQgb24gdGhlIHJlcXVlc3RlZCByYW5nZXMu Cj4+ICAgICBXZSBjb3VsZCBhbHNvIG1lbnRpb24gdGhhdCB0aGUga2VybmVsIGVuZm9yY2UgYWxz byByZXN0cmljdGlvbiAoNQo+PiAgICAgbGluZXMgYXQgbW9zdDsgY2FuIG9ubHkgYmUgd3JpdHRl biBvbmNlKQo+Cj4gTm90ZSB0aGF0IHRoZXJlIGFyZSB1bmRlci1kZXZlbG9wbWVudCB2ZXJ5IGRl dGFpbGVkIG1hbnBhZ2VzIGZvcgo+IG5hbWVzcGFjZXMoNykgYW5kIHVzZXJfbmFtZXNwYWNlcyg3 KS4gIEkgYWdyZWUgdGhlIG5ld3VpZG1hcAo+IG1hbnBhZ2Ugc2hvdWxkIGRvY3VtZW50IHdoYXQg aXQgY2FuIGFjdCwgYSBvbmUgb3IgdHdvIGxpbmUgYWRkaXRpb24KPiB0byBERVNDUklQVElPTi4g IFRoZW4gaXQgc2hvdWxkIHNpbXBseSByZWZlciB0byB0aGUgb3RoZXIgbWFucGFnZXMuCgpZZWFo LiAgSSBzaG91bGQgZm9sbG93IHVwIGFuZCBzZWUgd2hhdCBoYXMgaGFwcGVuZCB3aXRoIGFsbCBv ZiB0aGF0LgoKPj4gIDUuMV0gVGhlIHJlc3RyaWN0aW9uIG9uIHRoZSBjYWxsZXIgb3IgcHJvY2Vz c2VzIHNlZW1zIHRvIGJlIHRoZSBmb2xsb3dpbmdzOgo+PiAgICAgaWYgKChnZXR1aWQoKSAhPSBw dy0+cHdfdWlkKSB8fCAgIC8vIG5vdCBuZWVkZWQgKGFscmVhZHkgZW5mb3JjZWQKPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieSBnZXRfbXlfcHdlbnQoKSkgLSBi dXQgZG9lcyBub3QKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBo YXJtLgo+PiAgICAgICAgIChnZXRnaWQoKSAhPSBwdy0+cHdfZ2lkKSB8fCAgIC8vIEkgZG9uJ3Qg dW5kZXJzdGFuZCB0aGlzCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ly8gcmVzdHJpY3Rpb24uIElmIEkgZXhlY3V0ZSBhCj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gc2hlbGwgd2l0aCBhbm90aGVyIEdJRCAoZS5nLiB1c2luZwo+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5ld2dycCkgd2h5IHNob3Vs ZCBpdCBiZSBkZW5pZWQ/Cj4KPiBJJ20gbm90IHN1cmUuICBJIGRvbid0IGtub3cgd2hldGhlciBF cmljIHdhcyBmb2xsb3dpbmcgY29udmVudGlvbnMKPiBlbHNld2hlcmUgaW4gdGhlIGNvZGUsIG9y IGhhZCBzcGVjaWZpYyBhdHRhY2tzIGluIG1pbmQuCgpJIGRvbid0IGhhdmUgdGhlIGNvbnRleHQg aGFuZHksIGJ1dCBJIHRoaW5rIHRoYXQgd2FzIGdlbmVyYWwgcGFyYW5vaWEuCk9uIHRoZSBsaW5l cyBvZiBpZiBzb21ldGhpbmcgc3RyYW5nZSBpcyBnb2luZyBvbiBkb24ndCBhbGxvdyBpdC4KCj4+ ICAgICAgICAgKHB3LT5wd191aWQgIT0gc3Quc3RfdWlkKSB8fAo+PiAgICAgICAgIChwdy0+cHdf Z2lkICE9IHN0LnN0X2dpZCkpIHsgIC8vIElzIGl0IGFsc28gbmVlZGVkPyBXaGF0IHdvdWxkIGJl Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHByb2JsZW0K Pgo+IElJVUMgdWlkIDEwMDAsIGF1dGhvcml6ZWQgdG8gdXNlIHN1YnVpZHMgMTAwMDAwLTExMDAw MCwgY291bGQgb3RoZXJ3aXNlCj4gdXNlIG5ld3VpZG1hcCB0byByZW1hcCBhIG5hbWVzcGFjZSBv d25lZCBieSB1aWQgMTAwMS4KPgo+PiAgNl3CoERvY3VtZW50aW5nIHRoZSBBUElzIHdvdWxkIGJl IHVzZWZ1bC4gRXNwZWNpYWxseSB0aGUgb25lcyBpbgo+PiAgICAgbGliL3N1Ym9yZGluYXRlaW8u YyAoYWZ0ZXIgNSBtaW51dGVzLCBJIGdldCBsb3N0IHdpdGggdGhlCj4+ICAgICBpc19yYW5nZV9m cmVlLCByYW5nZV9leGlzdHMsIGZpbmRfcmFuZ2UsIGhhdmVfcmFuZ2UsIC4uLikKPgo+IEluLWxp bmUgKGFib3ZlIGVhY2ggZnVuY3Rpb24pIG9yIGVsc2V3aGVyZT8KPgo+PiAgN10gSSdtIG5vdCBz dXJlIGFib3V0IHRoZSBoYW5kbGluZyBvZiBsaW1pdHMgb2YgcmFuZ2VzLgo+PiAgICAgKiBGaXJz dCwgSSdtIG5vdCBzdXJlIHdoYXQgaXMgaW50ZW5kZWQuIChlLmcuIGlzIFNVQl9HSURfTUFYIGlu Y2x1ZGVkIGluCj4+ICAgICB0aGUgcmFuZ2UpCj4+ICAgICAqIEluIGxpYm1pc2MvZmluZF9uZXdf c3ViX3VpZHMuYzogSXMgaXQgaW50ZW5kZWQgdG8gZm9yYmlkIG1pbiA9PSBtYXgKPj4gICAgICAg KEknbSBub3QgY2xhaW1pbmcgdGhpcyBpcyB2ZXJ5IHVzZWZ1bCwgYnV0IGlmCj4+ICAgICAgIFNV Ql9HSURfTUlOPVNVQl9HSURfTUFYIGFuZCBTVUJfR0lEX0NPVU5UIGlzIHNldCB0byAxLCB0aGlz IHNob3VsZAo+PiAgICAgICBiZSB2YWxpZCB0byBzZXQgYSBzaW5nbGUgbWFwcGluZyBmb3Igb25l IFVJRCkKPgo+IEFncmVlZCB0aGF0IHNvdW5kcyBsaWtlIGl0IHNob3VsZCBiZSBhbGxvd2VkLgo+ Cj4+ICAgICAqIEluIGZpbmRfZnJlZV9yYW5nZSgpLCBtaW49PW1heCBpcyBhbHNvIGZvcmJpZGRl bi4KPj4gICAgICogSW4gZmluZF9mcmVlX3JhbmdlKCksIHRoZSBjaGVjayAoaGlnaCA+IGxvdykg Zm9yYmlkcyB0byByZXVzZSBhIGhvbGUKPj4gICAgICAgb2YganVzdCAxIFVJRCBzdGFydGluZyBh dCBtaW4KPj4gICAgIC4uLgoKU2NyYXRjaGluZyBteSBoZWFkLiAgV2hlbiByYW5nZXMgYXJlIGJv dW5kZWQgYnkgdHdvIG51bWJlcnMgaXQgZ2V0cwp3ZWlyZC4gIEFsbCBJIHJlbWVtYmVyIGZvciBj ZXJ0YWluIGlzIEkgZGVsaWJlcmF0ZWx5IGNob29zZSB0aGUgZmlsZQpmb3JtYXQgb2YgdWlkLCBs ZW5ndGggc28gdGhhdCBpdCB3b3VsZCBiZSBoYXJkIHRvIG1ha2Ugb2ZmIGJ5IG9uZQptaXN0YWtl cyBpbiB0aGUgZmlsZXMuCgo+PiAgOF0gSXMgdGhlcmUgYSBuZWVkIHRvIGNoZWNrIHNvbWV3aGVy ZSB0aGF0IHRoYXQgVUlEX01BWCA8IFNVQl9VSURfTUlOIGluCj4+ICAgICBsb2dpbi5kZWZzPyBP ciBpcyBpdCB2YWxpZCB0byBoYXZlIG92ZXJsYXBzPwo+Cj4gVGhhdCBzb3VuZHMgbGlrZSBhIGRh bmdlcm91cyBjb25kaXRpb24gdG8gbWUsIGFuZCBJIGhhZCBhc3N1bWVkIGl0IHdhcwo+IGFscmVh ZHkgY2hlY2tlZCBzb21ld2hlcmUuCgpUaGVzZSB3ZXJlIGZhaXJseSBhcmJpdHJhcnkgZGVmaW5l cywgd2l0aCBubyBzYW5pdHkgY2hlY2tzIGFuZCBJIGRpZG4ndAphZGQgYW55LiAgSSBqdXN0IGhh ZCBzZW5zaWJsZSBkZWZhdWx0cy4gIEFzIHRoYXQgdGVuZHMgdG8gYmUgdGhlIHVuaXgKd2F5LiBZ b3UgY2FuIGhhdmUgcm9wZSB0byBzaG9vdCB5b3Vyc2VsZiBpZiB5b3UgcmVhbGx5IHdhbnQgaXQu CgpJIHJlYWxseSBoYXZlIG5vIG9waW5pb24gb24gdGhlIG5lZWQgZm9yIHNhbml0eSBjaGVja3Mg b25lIHdheSBvciBhbm90aGVyLgoKPj4gIDldwqBBZGQgbWFucGFnZSBOT1RFIHRoYXQgbmV3dWlk bWFwIC8gbmV3Z2lkbWFwIGNhbiBiZSB1c2VkIG9ubHkgb25jZSBvbiBhCj4+ICAgICBnaXZlbiBw cm9jZXNzPwo+Cj4gQWdyZWVkLgo+Cj4+IDEwXSB1c2VyYWRkIGFkZHMgc3ViKmlkIHdoZW4gdGhl IC9ldGMvc3ViKmlkIGZpbGVzIGFyZSBwcmVzZW50LCByaWdodD8KPj4gICAgIElzIGl0IGFsc28g Y29ycmVjdC9pbnRlbmRlZCBmb3Igc3lzdGVtIHVzZXJzPwo+PiAgICAgSSB0aGluayB0aGVyZSBz aG91bGQgYmUgb3B0aW9ucyB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgZmVhdHVyZS4KPj4gICAg IChJIHdvdWxkIGhhdmUgY2hvc2VuIHRoZSBmaXJzdCBzb2x1dGlvbiwgYnV0IEkgY2FuIGFsc28g dW5kZXJzdGFuZAo+PiAgICAgdGhhdCB3ZSBjb25zaWRlciB0aGF0IHRoZSBwcmVzZW5jZSBvZiB0 aGUgZmlsZXMgaXMgYSByZXF1ZXN0IHRvIHVzZQo+PiAgICAgdGhlIGZlYXR1cmUgYnkgZGVmYXVs dCkKPgo+IE5vdCBzdXJlIG9uIGJvdGggb2YgdGhvc2UuICBBY3R1YWxseSBnaXZlbiB0aGUgKGFy dGlmaWNpYWwpIGRlZmluaXRpb24KPiBvZiBhIHN5c3RlbSB1c2VyIGluIHVzZXJhZGQoOCksIGl0 IHNvdW5kcyB0byBtZSBsaWtlIHN1YnVpZHMgY291bGQgYmUKPiB1c2VmdWwgZm9yIHN5c3RlbSB1 c2VycyBvbiBhIHN5c3RlbSB3aGVyZSB0YXNrcyBnZXQgc3RhcnRlZCBpbiBhIHVzZXJucwo+IGJ5 IGJvb3Qgc2NyaXB0cyB1c2luZyBhIHN5c3RlbSB1c2VyaWQuCgpJIGJlbGlldmUgdGhlIHF1ZXN0 aW9uIHdhcy4gIElmIC9ldGMvc3VidWlkIGRvZXMgbm90IGV4aXN0IGFuZCB3ZSBhZGQgYQpuZXcg dXNlciBkbyB3ZSB3YW50IHRvIGFkZCBhbiBlbnRyeSBpbiAvZXRjL3N1YnVpZC4gIFNpbWlsYXJs eSBmb3IKL2V0Yy9zdWJnaWQuCgpJIGZvbGxvd2VkIGNvbnZlbnRpb24gaW4gc2hhZG93IGFuZCBm aWd1cmVkIHRoYXQgaWYgL2V0Yy9zdWJ1aWQgYW5kCi9ldGMvc3ViZ2lkIGFyZSBub3QgcHJlc2Vu dCB3ZSBkb24ndCB3YW50IHRvIGFkZCBzdWJ1aWRzIGFuZCBzdWJnaWRzLgoKSSBkb24ndCBleHBl Y3Qgd2Ugd2FudCB0byBhZGQgc3VidWlkcyBhbmQgc3ViZ2lkcyBmb3Igc3lzdGVtIHVzZXJzIGJ5 CmRlZmF1bHQgYnV0IGFzIFNlcmdlIHNheXMgdGhlcmUgbWF5IGJlIGluc3RhbmNlcyB3aGVyZSB3 ZSB3YW50IHRvIGFkZAp0aGVtIG1hbnVhbGx5LgoKPj4gMTFdwqBSYW5nZXMgd2lsbCBiZSBkZWZp bmVkIGZvciBuZXcgdXNlcnMuIERvIHlvdSB0aGluayB0aGVyZSB3b3VsZCBiZSBhCj4+ICAgICBu ZWVkIGZvciBhbm90aGVyIHRvb2wgdG8gaW5pdGlhbGl6ZSBhIHN5c3RlbSBmb3IgdGhpcyBmZWF0 dXJlPwo+PiAgICAgKHNpbWlsYXIgdG8gcHdjb252KQo+Cj4gRG8geW91IG1lYW4gdG8gYWRkIHJh bmdlcyBmb3IgZXhpc3RpbmcgdXNlcnM/CgpJIGJlbGlldmUgaXQgd2FzIGVpdGhlciB1c2VyYWRk IG9yIHVzZXJtb2QgdGhhdCBJIG1vZGlmaWVkIHNvIHRoYXQgSQpjb3VsZCBhZGQgc3VidWlkcyBh bmQgc3ViZ2lkcyBmb3IgYW4gZXhpc3RpbmcgdXNlciBtYW51YWxseS4KCkFzIGZvciB1cGdyYWRl cyBJIGRvbid0IGtub3cuICBTZXJnZSB3aXRoIHlvdXIgZGlzdHJvIGhhdCBvbiBkbyB5b3Ugc2Vl CmEgdXNlIGZvciBhdXRvbWF0aWNhbGx5IGdpdmluZyB1c2VyIG9uIGEgc3lzdGVtIHN1YmlkcyBh bmQgc3ViZ2lkcyB3aGVuCnRoZXkgdXBncmFkZSB2ZXJzaW9ucyBvZiBzaGFkb3c/Cgo+PiAxMl3C oFRoZXJlIGNvdWxkIGJlIGFkZGl0aW9ucyBpbiBwd2NrOgo+PiAgICAgICogY2hlY2sgdGhhdCB1 c2VycyBpbiAvZXRjL3N1YippZCBleGlzdAo+PiAgICAgICogY2hlY2sgb3ZlcmxhcHM/Cj4KPiBP dmVybGFwcyBtYXkgYWN0dWFsbHkgYmUgYSBmZWF0dXJlIGluIHNvbWUgY2FzZXMsIGFzIGEgd2F5 IHRvIGFsbG93Cj4gdXNlcnMgdG8gc2hhcmUgZGF0YS4KCkkga25vdyBJIGRlbGliZXJhdGVseSBh bGxvd2VkIChidXQgd291bGQgbmV2ZXIgY3JlYXRlIGJ5IGRlZmF1bHQpCm11bHRpcGxlIHVzZXJz IGhhdmluZyBhY2Nlc3MgdG8gdGhlIHNhbWUgcmFuZ2Ugb2Ygc3Vib3JkaW5hdGUgdWlkcy4KClNo YXJlZCByZWFkLW9ubHkgc3lzdGVtIGltYWdlcyBtYXkgYmVuZWZpdCBmcm9tIHN1Y2ggYSBwcmFj dGljZS4KCkluIGEgc2ltaWxhciB2ZWluIHRoZXJlIG1heSBiZSB1c2VzIG9mIGJlaW5nIGFibGUg dG8gbG9nIGluIHRvIGEgc3lzdGVtCndpdGggd2hhdCBpcyBvcmRpbmFyaWx5IGEgc3Vib3JkaW5h dGUgdWlkLgoKVGhlIGRpc3RpbmN0aW9uIGlzIGEgZGlzdGluY3Rpb24gb2YgdXNlIG5vdCBhIGRp c3RpbmN0aW9uIG1hZGUgaW4gdGhlCmtlcm5lbC4KClRoYXQgc2FpZCBoYXZpbmcgb3ZlcmxhcHMg aXMgdXN1YWxseSBhIG1pc3Rha2UgYW5kIGEgd2FybmluZyBpbiB0aGUKbWFudWFsIHByb2Nlc3Mg bWF5IGJlIGNhbGxlZCBmb3IgaW4gY2FzZSBzb21lb25lIHNpbXBseSBkaWRuJ3Qgc2VlCnNvbWV0 aGluZy4KCj4+ICAgICAgKiBjaGVjayBvdmVybGFwcyB3aXRoIFVJRHM/Cj4+ICAgICAgKiAuLi4K Pj4gCj4+IEkgZG8gbm90IHRoaW5rIHRoYXQgdGhleSBhcmUgYmxvY2tpbmcgcG9pbnRzLiAoaS5l LiB0aGVyZSBjb3VsZCBiZSBhCj4+IHJlbGVhc2Ugd2l0aG91dCBhIHNvbHV0aW9uKQo+Cj4gSSds bCB3YWl0IGZvciBjb21tZW50cyBvciAoIm5vIHRpbWUgZm9yIGEgY29tbWVudCIpIG9uIGFueSBv ZiB0aGVzZQo+IGZyb20gRXJpYywgdGhlbiBsb29rIGF0IGFkZHJlc3NpbmcgdGhvc2UgdGhhdCBJ IGNhbi4KCkkgaG9wZSB0aGF0IGhlbHBzIHB1dCBzb21lIGNvbnRleHQgdG8gdGhpbmdzLiAgSSBh bSB0b3RhbGx5IG5vdCBsb29raW5nCmF0IHRoZSB1c2Vyc3BhY2UgaXNzdWVzIGFyb3VuZCBuZXd1 aWRtYXAgYW5kIG5ld2dpZG1hcCByaWdodCBub3csIGFuZCBJCmFwcHJlY2lhdGUgb3RoZXJzIGJl aW5nIGFibGUgdG8gbG9vayBhdCBpdCBhbmQgbWFrZSB0aGluZ3MgYmV0dGVyLgoKRXJpYwoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQ29udGFpbmVycyBt YWlsaW5nIGxpc3QKQ29udGFpbmVyc0BsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczov L2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9jb250YWluZXJz