From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 7175A7CA2 for ; Sun, 14 Feb 2016 15:31:52 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 297E8304051 for ; Sun, 14 Feb 2016 13:31:52 -0800 (PST) Received: from mail-wm0-f52.google.com (mail-wm0-f52.google.com [74.125.82.52]) by cuda.sgi.com with ESMTP id v2nWhXmwadnDAF50 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO) for ; Sun, 14 Feb 2016 13:31:46 -0800 (PST) Received: by mail-wm0-f52.google.com with SMTP id c200so88223459wme.0 for ; Sun, 14 Feb 2016 13:31:45 -0800 (PST) Subject: Re: richacl(7) man page review comments References: <56B770B6.7040803@gmail.com> <56B77262.7090107@gmail.com> From: "Michael Kerrisk (man-pages)" Message-ID: <56C0F23C.7030902@gmail.com> Date: Sun, 14 Feb 2016 22:31:40 +0100 MIME-Version: 1.0 In-Reply-To: List-Id: XFS Filesystem from SGI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xfs-bounces@oss.sgi.com Sender: xfs-bounces@oss.sgi.com To: Andreas Gruenbacher Cc: Andreas Dilger , linux-cifs@vger.kernel.org, Linux NFS Mailing List , Christoph Hellwig , Linux API , Trond Myklebust , lkml , XFS Developers , "J. Bruce Fields" , mtk.manpages@gmail.com, linux-fsdevel , Jeff Layton , linux-ext4 , Anna Schumaker SGkgQW5kcmVhcywKCkhlcmUncyBhIGZldyBtb3JlIGNvbW1lbnRzIG9uIHRoZSBjdXJyZW50IHJp Y2hhY2woNykgcGFnZQp0aGF0IEkgZmV0Y2hlZCBmcm9tIHRoZSBnaXQgcmVwby4KCj4gLlwiCj4g LlwiIFJpY2hBQ0wgTWFudWFsIFBhZ2VzCj4gLlwiCj4gLlwiIENvcHlyaWdodCAoQykgMjAxNSwy MDE2ICBSZWQgSGF0LCBJbmMuCj4gLlwiIFdyaXR0ZW4gYnkgQW5kcmVhcyBHcnVlbmJhY2hlciA8 YWdydWVuYmFAcmVkaGF0LmNvbT4KPiAuXCIgVGhpcyBpcyBmcmVlIGRvY3VtZW50YXRpb247IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+IC5cIiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwo+IC5cIiBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgo+IC5c IiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiAu XCIKPiAuXCIgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlJ3MgcmVmZXJlbmNlcyB0byAi b2JqZWN0IGNvZGUiCj4gLlwiIGFuZCAiZXhlY3V0YWJsZXMiIGFyZSB0byBiZSBpbnRlcnByZXRl ZCBhcyB0aGUgb3V0cHV0IG9mIGFueQo+IC5cIiBkb2N1bWVudCBmb3JtYXR0aW5nIG9yIHR5cGVz ZXR0aW5nIHN5c3RlbSwgaW5jbHVkaW5nCj4gLlwiIGludGVybWVkaWF0ZSBhbmQgcHJpbnRlZCBv dXRwdXQuCj4gLlwiCj4gLlwiIFRoaXMgbWFudWFsIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gLlwiIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gLlwiIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiAuXCIgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiAuXCIKPiAuXCIgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCj4g LlwiIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIG1hbnVhbC4gIElmIG5vdCwgc2VlCj4gLlwiIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KPiAuXCIKPiAuZGUgVVJMCj4gXFwkMiBcKGxh VVJMOiBcXCQxIFwocmFcXCQzCj4gLi4KPiAuaWYgXG5bLmddIC5tc28gd3d3LnRtYWMKPiAuVEgg UklDSEFDTCA3IDIwMTUtMDktMDEgIkxpbnV4IiAiUmljaCBBY2Nlc3MgQ29udHJvbCBMaXN0cyIK PiAuU0ggTkFNRQo+IHJpY2hhY2wgXC0gUmljaCBBY2Nlc3MgQ29udHJvbCBMaXN0cwo+IC5TSCBE RVNDUklQVElPTgo+IFJpY2ggQWNjZXNzIENvbnRyb2wgTGlzdHMgKFJpY2hBQ0xzKSBhcmUgYW4g ZXh0ZW5zaW9uIG9mIHRoZSBQT1NJWCBmaWxlCj4gcGVybWlzc2lvbiBtb2RlbCAoc2VlCj4gLkJS IGFjbCAoNSkpCj4gdG8gc3VwcG9ydAo+IC5VUkwgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9yZmMv cmZjNTY2MS50eHQgIk5GU3Y0IEFjY2VzcyBDb250cm9sIExpc3RzIgo+IG9uIGxvY2FsIGFuZCBy ZW1vdGUtbW91bnRlZCBmaWxlc3lzdGVtcy4KCkhhdmluZyByZWFkIHRoZSBmb2xsb3dpbmcgcGFy YWdyYXBoIGEgbnVtYmVyIG9mIHRpbWVzIChhbmQgYmVpbmcKaWdub3JhbnQgb2YgTkZTIEFDTHMp LCBJIGZpbmQgdGhhdCBJJ20gbm9uZSB0aGUgd2lzZXIgYWJvdXQgd2hhdCB5b3UgYXJlCnRyeWlu ZyB0byBzYXkuIFdoYXQgZG9lcyBpdCBtZWFuIHRvICJhcHBseSBhIGZpbGUgbW9kZSB0byBhbi4u LiBBQ0wiPwpMaWtld2lzZSwgaG93IGRvZXMgInRoZSBmaWxlIG1vZGUgZGV0ZXJtaW5lIHRoZSB2 YWx1ZXMgb2YgdGhlIGZpbGUKbWFza3MiPyBUaGlzIGlzbid0IGNsZWFyIGluIHRoZSBmb2xsb3dp bmcgcGFyYWdyYXBoLCBhbmQgZG9lc24ndCBzZWVtIHRvCmJlIGFsYm9yYXRlZCBpbiB0aGUgcmVz dCBvZiB0aGUgcGFnZS4gQ291bGQgeW91IGFkZCBzb21lIHRleHQgc29tZWh3ZXJlCnRvIGV4cGxh aW4gdGhlc2UgcG9pbnRzPwoKPiBSaWNoQUNMcyBzdXBwb3J0IGZpbGUgbWFza3Mgd2hpY2ggY2Fu IGJlIHVzZWQgdG8gYXBwbHkgYSBmaWxlIG1vZGUgdG8gYW4gZXhpc3RpbmcKPiBORlN2NCBBQ0wg d2l0aG91dCBkZXN0cnVjdGl2ZSBzaWRlIGVmZmVjdHM6IHRoZSBmaWxlIG1vZGUgZGV0ZXJtaW5l cyB0aGUgdmFsdWVzCj4gb2YgdGhlIGZpbGUgbWFza3M7IHRoZSBmaWxlIG1hc2tzIHJlc3RyaWN0 IHRoZSBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoZSBORlN2NAo+IEFDTC4gIFdoZW4gYSBsZXNz IHJlc3RyaWN0aXZlIGZpbGUgbW9kZSBpcyBhcHBsaWVkIGxhdGVyLCB0aGUgZmlsZSBtYXNrcyBi ZWNvbWUKPiBsZXNzIHJlc3RyaWN0aXZlLCBhbmQgbW9yZSBvZiB0aGUgb3JpZ2luYWwgcGVybWlz c2lvbnMgY2FuIGJlY29tZSBlZmZlY3RpdmUuCj4gCj4gQSBSaWNoQUNMIGNhbiBhbHdheXMgYmUg dHJhbnNsYXRlZCBpbnRvIGFuIGVxdWl2YWxlbnQgTkZTdjQgQUNMIHdoaWNoIGdyYW50cwo+IHRo ZSBzYW1lIHBlcm1pc3Npb25zLgo+IAo+IFJpY2hBQ0xzIGNhbiBiZSBlbmFibGVkIG9uIHN1cHBv cnRlZCBmaWxlc3lzdGVtcy4gVGhpcyBkaXNhYmxlcyBQT1NJWCBBY2Nlc3MKCkkgdGhpbmsgaXQg bWlnaHQgYmUgaGVscGZ1bCBoZXJlIHRvIGxpc3Qgd2hpY2ggZmlsZXN5c3RlbXMgc28gZmFyCnN1 cHBvcnQgUmljaEFDTHMuCgo+IENvbnRyb2wgTGlzdHM7IHRoZSB0d28gQUNMIG1vZGVscyBjYW5u b3QgY29leGlzdCBvbiB0aGUgc2FtZSBmaWxlc3lzdGVtLgo+IAo+IFdoZW4gdXNlZCBvbiBhIGZp bGVzeXN0ZW0gdGhhdCBkb2VzIG5vdCBzdXBwb3J0IFJpY2hBQ0xzLCB0aGUKPiAuQlIgZ2V0cmlj aGFjbCAoMSkKPiBhbmQKPiAuQlIgc2V0cmljaGFjbCAoMSkKPiB1dGlsaXRpZXMgd2lsbCBvcGVy YXRlIG9uIHRoZSBmaWxlIHBlcm1pc3Npb24gYml0cyBpbnN0ZWFkOgo+IC5CUiBnZXRyaWNoYWNs ICgxKQo+IHdpbGwgZGlzcGxheSB0aGUgZmlsZSBwZXJtaXNzaW9uIGJpdHMgYXMgYSBSaWNoQUNM OyB3aGVuIGEgUmljaEFDTAo+IGlzIHNldCB3aXRoCj4gLkJSIHNldHJpY2hhY2wgKDEpCj4gd2hp Y2ggY2FuIGJlIHJlcHJlc2VudGVkIGV4YWN0bHkgYnkgdGhlIGZpbGUgcGVybWlzc2lvbiBiaXRz LAo+IC5CUiBzZXRyaWNoYWNsICgxKQo+IHdpbGwgc2V0IHRoZSBmaWxlIHBlcm1pc3Npb24gYml0 cyBpbnN0ZWFkLiAgQW4gYXR0ZW1wdCB0byBzZXQgYSBSaWNoQUNMIHRoYXQKPiBjYW5ub3QgYmUg cmVwcmVzZW50ZWQgZXhhY3RseSBieSB0aGUgZmlsZSBwZXJtaXNzaW9uIGJpdHMgcmVzdWx0cyBp biBhbiBlcnJvci4KPiAKPiAuU1MgU3RydWN0dXJlIG9mIFJpY2hBQ0xzCj4gCj4gUmljaEFDTHMg Y29uc2lzdCBvZiBhIG51bWJlciBvZiBBQ0wgZW50cmllcywgdGhyZWUgZmlsZSBtYXNrcywgYW5k IHNvbWUgZmxhZ3MKPiBzcGVjaWZ5aW5nIGF0dHJpYnV0ZXMgb2YgdGhlIEFDTCBhcyB3aG9sZSAo YnkgY29udHJhc3Qgd2l0aCB0aGUgcGVyLUFDTC1lbnRyeQo+IGZsYWdzIGRlc2NyaWJlZCBiZWxv dykuCgpJbnNlcnQgYSBibGFuayBsaW5lIGhlcmUsIHRvIHN0YXJ0IGEgbmV3IHBhcmFncmFwaC4K Cj4gRWFjaCBvZiB0aGUgQUNMIGVudHJpZXMgYWxsb3dzIG9yIGRlbmllcyBzb21lIHBlcm1pc3Np b25zIHRvIGEgcGFydGljdWxhciB1c2VyLAo+IGdyb3VwLCBvciBzcGVjaWFsIGVudGl0eS4gRWFj aCBlbnRyeSBjb25zaXN0cyBvZjoKCkluIHRoZSBwcmV2aW91cyBsaW5lIHlvdSB3cml0ZSAiZW50 aXR5Ii4gSW4gdGhlIGxpbmVzIGJlbG93IHlvdSB1c2UKImlkZW50aWZpZXIiLiBUaGUgdGVybWlu b2xvZ3kgc3dpdGNoIGlzIGNvbmZ1c2luZy4gVXNlIGp1c3Qgb25lCnRlcm0uCiAKPiAuSVAgXChi dSA0Cj4gQSB0YWcgd2hpY2ggc3BlY2lmaWVzIHRoZSB1c2VyICh3aXRoIHByZWZpeAo+IC5CIHVz ZXI6Cj4gb3IKPiAuQlIgdTogKSwKPiBncm91cCAod2l0aCBwcmVmaXgKPiAuQiBncm91cDoKPiBv cgo+IC5CUiBnOiApLAo+IG9yIHNwZWNpYWwgaWRlbnRpZmllciB0aGUgZW50cnkgYXBwbGllcyB0 by4gU3BlY2lhbAo+IGlkZW50aWZpZXJzIGNhbiBiZSB0aGUgZmlsZSBvd25lcgo+IC5SQiAoIG93 bmVyQCApLAo+IHRoZSBvd25pbmcgZ3JvdXAKPiAuUkIgKCBncm91cEAgKSwKPiBvciBldmVyeW9u ZQo+IC5SQiAoIGV2ZXJ5b25lQCApLgo+IC5JUCBcKGJ1Cj4gQSBzZXQgb2YgcGVybWlzc2lvbnMg dGhlIGVudHJ5IGFsbG93cyBvciBkZW5pZXMuCj4gLklQIFwoYnUKPiBBIHNldCBvZiBmbGFncyB0 aGF0IGluZGljYXRlIHdoZXRoZXIgdGhlIHVzZXIgb3IgZ3JvdXAgaWRlbnRpZmllciBpcyBtYXBw ZWQgb3IKPiB1bm1hcHBlZCwgYW5kIHdoZXRoZXIgdGhlIGVudHJ5IGhhcyBiZWVuIGFuZCBjYW4g YmUgaW5oZXJpdGVkLgo+IC5JUCBcKGJ1IDQKPiBBIGZpZWxkIGluZGljYXRpbmcgd2hldGhlciB0 aGUgZW50cnkgYWxsb3dzIG9yIGRlbmllcyBhY2Nlc3MuCgpEb2VzIHRoaXMgZmllbGQgaGF2ZSBh IG5hbWU/IEl0IHdvdWxkIG1ha2UgZGljdXNzaW5nIGl0IGVhc2llcgp0byBnaXZlIGl0IGEgbmFt ZS4gVGhhdCBpcywgYW4gQUNMIGVudHJ5IGNvbnNpc3RzIG9mIGZvdXIgZmllbGRzOgoKKiBhIHRh ZwoqIHBlcm1pc3Npb25zCiogZmxhZ3MKKiA/Pz8gKCJ0eXBlIj8pCgo+IC5QUAo+IFRoZSBvd25l ciwgZ3JvdXAsIGFuZCBvdGhlciBmaWxlIG1hc2tzIGZ1cnRoZXIgY29udHJvbCB3aGljaCBwZXJt aXNzaW9ucyB0aGUKPiBBQ0wgZ3JhbnRzLCBzdWJqZWN0IHRvIHRoZQo+IC5CUiBtYXNrZWQgIlwg KCIgbSApCj4gYW5kCj4gLkJSIHdyaXRlX3Rocm91Z2ggIlwgKCIgdyApCj4gQUNMIGZsYWdzLgo+ IAo+IE5vdGUgdGhhdCBlbnRyaWVzIHdpdGggdGhlIGlkZW50aWZpZXIKPiAuQiBldmVyeW9uZUAK PiBhcHBseSB0byBhbGwgcHJvY2Vzc2VzLCB3aGVyZWFzIHRoZSBcKGxxb3RoZXJcKHJxIGZpbGUg cGVybWlzc2lvbnMgYW5kCj4gXChscW90aGVyXChycSBlbnRyaWVzIGluIFBPU0lYIEFDTHMgYXBw bHkgdG8gYWxsIHByb2Nlc3NlcyB3aGljaCBhcmUgbm90IHRoZQo+IG93bmVyLCBhcmUgbm90IGlu IHRoZSBvd25pbmcgZ3JvdXAsIGFuZCBkbyBub3QgbWF0Y2ggYSB1c2VyIG9yIGdyb3VwIG1lbnRp b25lZAo+IGluIHRoZSBBQ0wuCj4gCj4gVW5saWtlIFBPU0lYIEFDTHMsIFJpY2hBQ0xzIGRvIG5v dCBoYXZlIHNlcGFyYXRlIFwobHFhY2Nlc3NcKHJxIEFDTHMgdGhhdAo+IGRlZmluZSB0aGUgYWNj ZXNzIHBlcm1pc3Npb25zIGFuZCBcKGxxZGVmYXVsdFwocnEgQUNMcyB0aGF0IGRlZmluZSB0aGUK PiBpbmhlcml0YWJsZSBwZXJtaXNzaW9ucy4gIEluc3RlYWQsIGZsYWdzIG9uIGVhY2ggQUNMIGVu dHJ5IGRldGVybWluZSB3aGV0aGVyCj4gdGhlIGVudHJ5IGlzIGVmZmVjdGl2ZSBkdXJpbmcgYWNj ZXNzIGNoZWNrcyBhbmQvb3IgaW5oZXJpdGFibGUuCj4gCj4gCj4gLlNTIEFDTCBmbGFncwo+IAo+ IFRoZSBmb2xsb3dpbmcgZmxhZ3Mgb24gQUNMcyBhcmUgZGVmaW5lZDoKPiAKPiAuUlMKPiAuSFAK CkkgZG9uJ3QgdGhpbmsgdGhlIGhlYXZ5IGluZGVudGF0aW9uIGhlcmUgaXMgaGVscGZ1bCwgYW5k IGl0IG5hcnJvcnMgdGhlCnRleHQgY29uc2lkZXJhYmx5LiBJIHN1Z2dlc3QgcmVwbGFjaW5nIHRo ZSBwcmVjZWRpbmcgLlJTKy5IUCB3aXRoIC5UUCwKYW5kIGNoYW5naW5nIGV3YWNoIC5IUCBiZWxv dyB0byAuVFAsIGFuZCByZW1vdmUgdGhlIGNvbG9uIGF0IHRoZSBlbmQgb2YKZWFjaCBsaW5lIHRo YXQgZm9sbG93cyB0aGUgLlRQIGxpbmVzLgoKPiAuQlIgbWFza2VkICJcICgiIG0gKToKPiBXaGVu IHNldCwgdGhlIGZpbGUgbWFza3MgZGVmaW5lIHVwcGVyIGxpbWl0cyBvbiB0aGUgcGVybWlzc2lv bnMgdGhlIEFDTCBtYXkKPiBncmFudC4KPiAuSFAKPiAuQlIgd3JpdGVfdGhyb3VnaCAiXCAoIiB3 ICk6Cj4gV2hlbiB0aGlzIGZsYWcgYW5kIHRoZQo+IC5CIG1hc2tlZAo+IGZsYWcgYXJlIGJvdGgg c2V0LCB0aGUgb3duZXIgYW5kIG90aGVyIGZpbGUgbWFza3MgZGVmaW5lIHRoZSBhY3R1YWwgcGVy bWlzc2lvbnMKPiBncmFudGVkIHRvIHRoZSBmaWxlIG93bmVyIGFuZCB0byBvdGhlcnMgaW5zdGVh ZCBvZiBhbiB1cHBlciBsaW1pdC4KClRoZXJlIG5lZWRzIHRvIGJlIGEgc3RhdGVtZW50IGhlcmUg YWJvdXQgd2hhdCAnd3JpdGVfdGhyb3VnaCcgZG9lcyBpZgonbWFza2VkJyBpcyBub3Qgc2V0LgoK PiAuSFAKPiAuQlIgYXV0b19pbmhlcml0ICJcICgiIGEgKToKPiBBdXRvbWF0aWMgSW5oZXJpdGFu Y2UgaXMgZW5hYmxlZCBmb3IgdGhlIGZpbGUgdGhlIEFDTCBpcwo+IGF0dGFjaGVkIHRvLiBTZWUK PiAuSVIgIkF1dG9tYXRpYyBJbmhlcml0YW5jZSIgLgo+IC5IUAo+IC5CUiBwcm90ZWN0ZWQgIlwg KCIgcCApOgo+IFRoZSBBQ0wgaXMgcHJvdGVjdGVkIGZyb20gbW9kaWZpY2F0aW9uIGJ5IEF1dG9t YXRpYwo+IEluaGVyaXRhbmNlLgo+IC5IUAo+IC5CUiBkZWZhdWx0ZWQgIlwgKCIgZCApOgo+IFRo ZSBBQ0wgaGFzIGJlZW4gYXNzaWduZWQgYnkgZGVmYXVsdC4gQXV0b21hdGljIEluaGVyaXRhbmNl IHNob3VsZCBjb21wbGV0ZWx5CgpXaGF0IGRvZXMgImFzc2lnbmVkIGJ5IGRlZmF1bHQiIG1lYW4/ IFRoYXQgaXQgd2FzIGluaGVyaXRlZCBiZWNhdXNlIG9mCidkaXJfaW5oZXJpdCcgb3IgJ2ZpbGVf aW5oZXJpdCcgaW4gdGhlIHBhcmVlbnQgZGlyZWN0b3J5PyBUaGlzIG5lZWRzIHRvCmJlIGNsZWFy ZXIuCgoKPiByZXBsYWNlIHRoZSBBQ0wuCj4gLlJFCgpJZiB5b3UgZm9sbG93IG15IHN1Z2dlc3Rp b24gYWJvdmUsIGRlbGV0ZSB0aGUgcHJlY2VkaW5nIC5SRQoKPiAuU1MgQUNMIGVudHJ5IGZsYWdz Cj4gCj4gVGhlIGZvbGxvd2luZyBmbGFncyBvbiBBQ0wgZW50cmllcyBhcmUgZGVmaW5lZDoKPiAK PiAuUlMKPiAuSFAKClNlZSBhYm92ZS4gUG9zc2libHkgY2hhbmdlIC5SUysuSFAgdG8gLlRQCgo+ IC5CUiBmaWxlX2luaGVyaXQgIlwgKCIgZiApOgo+IFRoZSBlbnRyeSBpcyBpbmhlcml0YWJsZSBm b3IgZmlsZXMuCgpNYXliZSB0aGlzIHdvdWxkIGJlIGJldHRlciBhczoKCiJXaGVuIHRoaXMgZmxh ZyBhcHBlYXJzIGluIHRoZSBBQ0wgZW50cnkgb2YgYSBkaXJlY3RvcnksIHRoZW4gdGhhdCBlbnRy eSBpcwppbmhlcml0ZWQgYnkgbmV3IGZpbGVzIGNyZWF0ZWQgaW4gdGhlIGRpcmVjdG9yeS4iCgpJ cyB0aGF0IHRleHQgdGhhdCBJIHByb3Bvc2UgY29ycmVjdD8KCj4gLkhQCj4gLkJSIGRpcl9pbmhl cml0ICJcICgiIGQgKToKPiBUaGUgZW50cnkgaXMgaW5oZXJpdGFibGUgZm9yIGRpcmVjdG9yaWVz LgoKIldoZW4gdGhpcyBmbGFnIGFwcGVhcnMgaW4gdGhlIEFDTCBlbnRyeSBvZiBhIGRpcmVjdG9y eSwgdGhlbiB0aGF0IGVudHJ5IGlzCmluaGVyaXRlZCBieSBuZXcgc3ViZGlyZWN0b3JpZXMgY3Jl YXRlZCBpbiB0aGUgZGlyZWN0b3J5LiIKCklzIHRoYXQgdGV4dCB0aGF0IEkgcHJvcG9zZSBjb3Jy ZWN0PwoKPiAuSFAKPiAuQlIgbm9fcHJvcGFnYXRlICJcICgiIG4gKToKPiBJbmhlcml0YW5jZSBz dG9wcyBhdCB0aGUgbmV4dCBzdWJkaXJlY3RvcnkgbGV2ZWwuCj4gLkhQCj4gLkJSIGluaGVyaXRf b25seSAiXCAoIiBpICk6Cj4gVGhlIGVudHJ5IGRlZmluZXMgaW5oZXJpdGFibGUgcGVybWlzc2lv bnMgb25seSBhbmQgaXMgaWdub3JlZCBmb3IgYWNjZXNzCj4gY2hlY2tpbmcuCj4gLkhQCj4gLkJS IGluaGVyaXRlZCAiXCAoIiBhICk6Cj4gVGhlIGVudHJ5IGhhcyBiZWVuIGF1dG9tYXRpY2FsbHkg aW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBkaXJlY3Rvcnk7IHRoZQo+IEFDTCdzCj4gLkIgYXV0 b19pbmhlcml0Cj4gZmxhZyBzaG91bGQgYmUgb24uCj4gLkhQCj4gLkJSIHVubWFwcGVkICJcICgi IHUgKToKPiBUaGUgdXNlciBvciBncm91cCBpZGVudGlmaWVyIGlzIGEgdGV4dHVhbCBzdHJpbmcg YW5kIGlzIG5vdCBtYXBwZWQgdG8gYSBudW1lcmljCj4gdXNlciBvciBncm91cCBpZGVudGlmaWVy LiAgQUNMcyB3aXRoIHVubWFwcGVkIGlkZW50aWZpZXJzIGNhbiBvY2N1ciBvbiBORlN2NAo+IG1v dW50ZWQgZmlsZXN5c3RlbXMgd2hlbiB0aGUgY2xpZW50IGNhbm5vdCBkZXRlcm1pbmUgbnVtZXJp YyB1c2VyIG9yIGdyb3VwCj4gaWRlbnRpZmllcnMgZm9yIHNvbWUgb2YgdGhlIE5GU3Y0IHVzZXJA ZG9tYWluIG9yIGdyb3VwQGRvbWFpbiB3aG8gdmFsdWVzLiAgVGhleQo+IGNhbm5vdCBiZSBhc3Np Z25lZCB0byBsb2NhbCBmaWxlcyBvciBkaXJlY3Rvcmllcy4KPiAuUkUKCklmIHlvdSBmb2xsb3cg bXkgc3VnZ2VzdGlvbiBhYm92ZSwgZGVsZXRlIHRoZSBwcmVjZWRpbmcgLlJFCgo+IAo+IC5TUyBQ ZXJtaXNzaW9ucwo+IAo+IFRoZSBmb2xsb3dpbmcgcGVybWlzc2lvbnMgYXJlIGRlZmluZWQgZm9y IFJpY2hBQ0wgZW50cmllcyBhbmQgZm9yIHRoZSB0aHJlZQo+IGZpbGUgbWFza3M6Cj4gCj4gLlJT Cj4gLkhQCgpTZWUgYWJvdmUuIFBvc3NpYmx5IGNoYW5nZSAuUlMrLkhQIHlvIC5UUAoKPiAuQlIg cmVhZF9kYXRhICIgLyAiIGxpc3RfZGlyZWN0b3J5ICJcICgiIHIgKToKPiBGb3IgYSBmaWxlOiBy ZWFkIHRoZSBkYXRhIG9mIHRoZSBmaWxlLgo+IEZvciBhIGRpcmVjdG9yeTogbGlzdCB0aGUgY29u dGVudHMgb2YgdGhlIGRpcmVjdG9yeS4KPiAuSFAKPiAuQlIgd3JpdGVfZGF0YSAiIC8gIiBhZGRf ZmlsZSAiXCAoIiB3ICk6Cj4gRm9yIGEgZmlsZTogbW9kaWZ5IHRoZSBkYXRhIG9mIHRoZSBmaWxl OyBkb2VzIG5vdCBpbmNsdWRlIG9wZW5pbmcgdGhlIGZpbGUgaW4KPiBhcHBlbmQgbW9kZS4KPiBG b3IgYSBkaXJlY3Rvcnk6IGFkZCBhIG5ldyBmaWxlIGluIHRoZSBkaXJlY3RvcnkuCj4gLkhQCj4g LkJSIGFwcGVuZF9kYXRhICIgLyAiIGFkZF9zdWJkaXJlY3RvcnkgIlwgKCIgcCApOgo+IEZvciBh IGZpbGU6IG9wZW4gdGhlIGZpbGUgaW4gYXBwZW5kIG1vZGUuCj4gRm9yIGEgZGlyZWN0b3J5OiBj cmVhdGUgYSBzdWJkaXJlY3RvcnkgaW4gdGhlIGRpcmVjdG9yeS4KPiAuSFAKPiAuQlIgZXhlY3V0 ZSAiXCAoIiB4ICk6Cj4gRm9yIGEgZmlsZTogZXhlY3V0ZSB0aGUgZmlsZS4KPiBGb3IgYSBkaXJl Y3Rvcnk6IHRyYXZlcnNlIC8gc2VhcmNoIHRoZSBkaXJlY3RvcnkuCj4gLkhQCj4gLkJSIGRlbGV0 ZV9jaGlsZCAiXCAoIiBkICk6Cj4gRGVsZXRlIGEgZmlsZSBvciBkaXJlY3Rvcnkgd2l0aGluIGEg ZGlyZWN0b3J5Lgo+IC5IUAo+IC5CUiBkZWxldGUgIlwgKCIgRCApOgo+IERlbGV0ZSB0aGUgZmls ZSBvciBkaXJlY3RvcnkuCj4gLkhQCj4gLkJSIHJlYWRfYXR0cmlidXRlcyAiXCAoIiBhICk6Cj4g UmVhZCBiYXNpYyBhdHRyaWJ1dGVzIG9mIGEgZmlsZSBvciBkaXJlY3RvcnkgKHNlZQo+IC5CUiBz dGF0ICgyKSkuCj4gVGhpcyBwZXJtaXNzaW9uIGlzIGFsd2F5cyBpbXBsaWNpdGx5IGdyYW50ZWQu CgpTbywgY2FuIHRoaXMgcGVybWlzc2lvbiBldmVyIGJlIHRha2VuIGF3YXk/IElmIHllcywgc2F5 IHNvLiBJZiBub3QsIHdoeQpkb2VzIHRoaXMgcGVybWlzc2lvbiBleGlzdD8gKEFuZCBtYXliZSBz YXkgc29tZXRoaW5nIGFib3V0IHRoYXQuKQoKPiAuSFAKPiAuQlIgd3JpdGVfYXR0cmlidXRlcyAi XCAoIiBBICk6Cj4gQ2hhbmdlIHRoZSB0aW1lcyBhc3NvY2lhdGVkIHdpdGggYSBmaWxlIG9yIGRp cmVjdG9yeSB0byBhbiBhcmJpdHJhcnkgdmFsdWUuCj4gVGhpcyBwZXJtaXNzaW9uIGlzIGFsd2F5 cyBpbXBsaWNpdGx5IGdyYW50ZWQgdG8gdGhlIGZpbGUgb3duZXIuCj4gLkhQCj4gLkJSIHJlYWRf YWNsICJcICgiIGMgKToKPiBSZWFkIHRoZSBBQ0wgb2YgYSBmaWxlIG9yIGRpcmVjdG9yeS4gVGhp cyBwZXJtaXNzaW9uIGlzIGFsd2F5cwo+IGltcGxpY2l0bHkgZ3JhbnRlZC4KPiAuSFAKPiAuQlIg d3JpdGVfYWNsICJcICgiIEMgKToKPiBDaGFuZ2UgdGhlIEFDTCBvciBmaWxlIG1vZGUgb2YgYSBm aWxlIG9yIGRpcmVjdG9yeS4KPiAuSFAKPiAuQlIgd3JpdGVfb3duZXIgIlwgKCIgbyApOgo+IFRh a2Ugb3duZXJzaGlwIG9mIGEgZmlsZSBvciBkaXJlY3RvcnkuICBDaGFuZ2UgdGhlIG93bmluZyBn cm91cCBvZiBhIGZpbGUgb3IKPiBkaXJlY3RvcnkgdG8gYSBncm91cCBvZiB3aGljaCB0aGUgY2Fs bGluZyBwcm9jZXNzIGlzIGEgbWVtYmVyLgo+IC5IUAo+IC5CUiByZWFkX25hbWVkX2F0dHJzICJc ICgiIFIgKSwKPiAuQlIgd3JpdGVfbmFtZWRfYXR0cnMgIlwgKCIgVyApLAo+IC5CUiBzeW5jaHJv bml6ZSAiXCAoIiBTICksCj4gLkJSIHdyaXRlX3JldGVudGlvbiAiXCAoIiBlICksCj4gLkJSIHdy aXRlX3JldGVudGlvbl9ob2xkICJcICgiIEUgKToKCklmIHlvdSBmb2xsb3cgbXkgLlRQIHN1Z2dl c3Rpb24gYWJvdmUsIHRoZW4gdGhlIGFib3ZlIGxpbmVzIHdvdWxkIG5lZWQKdG8gYmUgcmV3cml0 dGVuIHNvbWV0aW5oIGxpa2U6CgouQlIgcmVhZF9uYW1lZF9hdHRycyAiXCAoIiBSICIpLCAiIHdy aXRlX25hbWVkX2F0dHJzICJcICgiIFcgIiksICIgXApzeW5jaHJvbml6ZSAiXCAoIiBTICIpLCAi IHdyaXRlX3JldGVudGlvbiAiXCAoIiBlICIpLCAiIFwKd3JpdGVfcmV0ZW50aW9uX2hvbGQgIlwg KCIgRSApCgo+IFRoZXNlIHBlcm1pc3Npb25zIGFyZSBkZWZpbmVkIGJ5IE5GU3Y0IC8gTkZTdjQu MS4gIFRoZXkgY2FuIGJlIHN0b3JlZCwgYnV0IGFyZQo+IG5vdCB1c2VkLgo+IC5SRQoKSWYgeW91 IGZvbGxvdyBteSBzdWdnZXN0aW9uIGFib3ZlLCBkZWxldGUgdGhlIHByZWNlZGluZyAuUkUgYW5k CmFkZCAuUFAKCj4gCj4gRm9yIHRoZQo+IC5CUiByICIsICIgdyAiLCBhbmQgIiBwCj4gcGVybWlz c2lvbnMgd2hpY2ggaGF2ZSBkaWZmZXJlbnQgbG9uZyBmb3JtcyBmb3IgZmlsZXMgYW5kIGRpcmVj dG9yaWVzLCB0aGUKPiAuQlIgZ2V0cmljaGFjbCAoMSkKPiB1dGlsaXR5IHdpbGwgb3V0cHV0IHRo ZSBhcHByb3ByaWF0ZSBmb3JtKHMpIGRlcGVuZGluZyBvbiB0aGUgY29udGV4dC4KPiBUaGUKPiAu QlIgc2V0cmljaGFjbCAoMSkKPiB1dGlsaXR5IHdpbGwgYWNjZXB0IGVpdGhlciBmb3JtIGZvciBh bnkgZmlsZSB0eXBlLgo+IAo+IC5TUyBUZXh0IGZvcm0KPiBUaGUgY29tbW9uIHRleHR1YWwgcmVw cmVzZW50YXRpb24gb2YgYSBSaWNoQUNMIGNvbnNpc3RzIG9mIHRoZSBjb2xvbi1zZXBhcmF0ZWQK PiBmaWVsZHMgb2YgdGhlIHRoZSBBQ0wgZmxhZ3MsIGZpbGUgbWFza3MsIGFuZCBBQ0wgZW50cmll cyBpbiB0aGUgZm9sbG93aW5nCgpzL3RoZSB0aGUvdGhlLwoKPiBmb3JtYXQ6Cj4gLlRQCj4gXGZC ZmxhZ3M6XGZSXGZJYWNsX2ZsYWdzXGZSCj4gVGhlIEFDTCBmbGFncy4KPiAuVFAKPiBcZkJvd25l cjpcZlJcZklwZXJtXGZSXGZCOjptYXNrXGZSLCBcZkJncm91cDpcZlJcZklwZXJtXGZSXGZCOjpt YXNrXGZSLCBcZkJvdGhlcjpcZlJcZklwZXJtXGZSXGZCOjptYXNrXGZSCj4gVGhlIGZpbGUgbWFz a3MgYW5kIHRoZWlyIHBlcm1pc3Npb25zLgo+IC5UUAo+IFxmSXdob1xmUlxmQjpcZlJcZklwZXJt XGZSXGZCOlxmUlxmSWZsYWdzXGZSXGZCOmFsbG93XGZSLCBcZkl3aG9cZlJcZkI6XGZSXGZJcGVy bVxmUlxmQjpcZlJcZklmbGFnc1xmUlxmQjpkZW55XGZSCj4gRm9yIGVhY2ggQUNMIGVudHJ5LCB3 aG8gdGhlIGVudHJ5IGFwcGxpZXMgdG8sIHRoZSBwZXJtaXNzaW9ucyBvZiB0aGUgZW50cnksIHRo ZQo+IGVudHJ5IGZsYWdzLCBhbmQgd2hldGhlciB0aGUgZW50cnkgYWxsb3dzIG9yIGRlbmllcyBw ZXJtaXNzaW9ucy4gIFRoZSBcZkl3aG9cZlIKPiBmaWVsZCBoYXMgbm8gcHJlZml4IGZvciBzcGVj aWFsIGlkZW50aWZpZXJzLCBhCj4gLkIgdXNlcjoKPiBvcgo+IC5CIHU6Cj4gcHJlZml4IGZvciBy ZWd1bGFyIHVzZXJzLCBhbmQgYQo+IC5CIGdyb3VwOgo+IG9yCj4gLkIgZzoKPiBwcmVmaXggZm9y IHJlZ3VsYXIgZ3JvdXBzLgoKSSB0aGluayB0aGUgcHJlY2VkaW5nIHNlbnRlbmNlIGNvdWxkIGJl IGNsZWFyZXIuIEhvdyBhYm91dCBzb21ldGhpbmcKbGlrZSB0aGUgZm9sbG93aW5nIChpZiBjb3Jy ZWN0KToKCltbClRoZSB3aG8gZmllbGQgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmc6CgoqIE9uZSBv ZiB0aGUgc3BlY2lhbCBpZGVudGlmaWVyczogb3duZXJALCBncm91cEAsIG9yIGV2ZXJ5b25lQAoq IEEgdXNlcjogb3IgdTogcHJlZml4IGZvbGxvd2VkIGJ5IGEgW3VzZXIgbmFtZSwgdXNlciBJRD9d IHRoYXQgZGVzaWduYXRlcwogIHMgc3BlY2lmaWMgdXNlcgoqIEEgZ3JvdXA6IG9yIGc6IHByZWZp eCBmb2xsb3dlZCBieSBhIFtncm91cCBuYW1lLCBncm91cCBJRD9dIHRoYXQgZGVzaWduYXRlcwog IHMgc3BlY2lmaWMgZ3JvdXAKXV0KCj4gLlBQCj4gVGhlIGVudHJpZXMgYXJlIGNvbW1hLCB3aGl0 ZXNwYWNlLCBvciBuZXdsaW5lIHNlcGFyYXRlZC4KPiAKPiBGbGFncyBhbmQgcGVybWlzc2lvbnMg aGF2ZSBzaW5nbGUtbGV0dGVyIGFzIHdlbGwgYXMgbG9uZyBmb3JtcywgYXMgbGlzdGVkIHVuZGVy Cj4gLklSICJBQ0wgZmxhZ3MiICwKPiAuSVIgIkFDTCBlbnRyeSBmbGFncyIgLAo+IGFuZAo+IC5J UiBQZXJtaXNzaW9ucyAuCj4gV2hlbiB0aGUgc2luZ2xlLWxldHRlciBmb3JtcyBhcmUgdXNlZCwg dGhlIGZsYWdzIG9yIHBlcm1pc3Npb25zIGFyZQo+IGNvbmNhdGVuYXRlZC4gV2hlbiB0aGUgbG9u ZyBmb3JtcyBhcmUgdXNlZCwgdGhlIGZsYWdzIG9yIHBlcm1pc3Npb25zIGFyZQo+IHNlcGFyYXRl ZCBieSBzbGFzaGVzLiAgVG8gYWxpZ24gcGVybWlzc2lvbnMgb3IgZmxhZ3MgdmVydGljYWxseSwg ZGFzaGVzIGNhbiBiZQo+IHVzZWQgZm9yIHBhZGRpbmcuCj4gCj4gLlNTIFNldHRpbmcgYW5kIG1v ZGlmeWluZyBmaWxlIHBlcm1pc3Npb25zCj4gVGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBmb3IgYSBm aWxlIGNhbiBlaXRoZXIgYmUgc2V0IGJ5IGFzc2lnbmluZyBhbiBhY2Nlc3MKPiBjb250cm9sIGxp c3QKPiAuUkIgKCBzZXRyaWNoYWNsICgxKSkKPiBvciBieSBjaGFuZ2luZyB0aGUgZmlsZSBtb2Rl IHBlcm1pc3Npb24gYml0cwo+IC5SQiAoIGNobW9kICgxKSkuCj4gSW4gYWRkaXRpb24sIGEgZmls ZSBjYW4gaW5oZXJpdCBhbiBBQ0wgZnJvbSBpdHMgcGFyZW50IGRpcmVjdG9yeSBhdCBjcmVhdGlv bgo+IHRpbWUgYXMgZGVzY3JpYmVkIHVuZGVyCj4gLklSICJQZXJtaXNzaW9ucyBhdCBmaWxlLWNy ZWF0aW9uIHRpbWUiIC4KPiAKPiAuU1MgQXNzaWduaW5nIGFuIEFjY2VzcyBDb250cm9sIExpc3QK PiBXaGVuIGFzc2lnbmluZyBhbiBBQ0wgdG8gYSBmaWxlLCB1bmxlc3MgZXhwbGljaXRseSBzcGVj aWZpZWQsIHRoZSBvd25lciwgZ3JvdXAsCj4gYW5kIG90aGVyIGZpbGUgbWFza3Mgd2lsbCBiZSBj b21wdXRlZCBmcm9tIHRoZSBBQ0wgZW50cmllcyBhcyBkZXNjcmliZWQgaW4KPiB0aGUgc2VjdGlv bgo+IC5JUiAiQ29tcHV0aW5nIHRoZSBtYXhpbXVtIGZpbGUgbWFza3MiIC4KPiBUaGUgb3duZXIs IGdyb3VwLCBhbmQgb3RoZXIgZmlsZSBtb2RlIHBlcm1pc3Npb24gYml0cyBhcmUgdGhlbiBlYWNo IHNldCBmcm9tCj4gdGhlIG93bmVyLCBncm91cCwgYW5kIG90aGVyIGZpbGUgbWFzayBhcyBmb2xs b3dzOgo+IC5JUCBcKGJ1IDQKPiBJZiB0aGUgZmlsZSBtYXNrIGluY2x1ZGVzIHRoZQo+IC5CIHIK PiBwZXJtaXNzaW9uLCB0aGUgcmVhZAo+IGZpbGUgbW9kZSBwZXJtaXNzaW9uIGJpdCB3aWxsIGJl IHNldC4KPiAuSVAgXChidQo+IElmIHRoZSBmaWxlIG1hc2sgaW5jbHVkZXMgdGhlCj4gLkIgdwo+ IG9yCj4gLkIgcAo+IHBlcm1pc3Npb24sIHRoZSB3cml0ZSBmaWxlIG1vZGUgcGVybWlzc2lvbiBi aXQgd2lsbCBiZSBzZXQuCj4gLklQIFwoYnUKPiBJZiB0aGUgZmlsZSBtYXNrIGluY2x1ZGVzIHRo ZQo+IC5CIHgKPiBwZXJtaXNzaW9uLCB0aGUgZXhlY3V0ZSBmaWxlIG1vZGUgcGVybWlzc2lvbiBi aXQgd2lsbCBiZSBzZXQuCj4gLlBQCj4gSWYgdGhlIEFDTCBjYW4gYmUgcmVwcmVzZW50ZWQgZXhh Y3RseSBieSB0aGUgZmlsZSBtb2RlCj4gcGVybWlzc2lvbiBiaXRzLCB0aGUgZmlsZSBwZXJtaXNz aW9uIGJpdHMgYXJlIHNldCB0byBtYXRjaCB0aGUgQUNMIGFuZCB0aGUgQUNMCj4gaXMgbm90IHN0 b3JlZC4gIChXaGVuIHRoZSBBQ0wgb2YgYSBmaWxlIGlzIHJlcXVlc3RlZCB3aGljaCBkb2Vzbid0 IGhhdmUgYW4gQUNMLAo+IHRoZSBmaWxlIG1vZGUgcGVybWlzc2lvbiBiaXRzIGFyZSBjb252ZXJ0 ZWQgaW50byBhbiBlcXVpdmFsZW50IEFDTC4pCj4gCj4gLlNTIENoYW5naW5nIHRoZSBmaWxlIG1v ZGUgcGVybWlzc2lvbiBiaXRzCj4gV2hlbiBjaGFuZ2luZyB0aGUgZmlsZSBtb2RlIHBlcm1pc3Np b24gYml0cyB3aXRoCj4gLkJSIGNobW9kICgxKSwKPiB0aGUgb3duZXIsIGdyb3VwLAo+IGFuZCBv dGhlciBmaWxlIHBlcm1pc3Npb24gYml0cyBhcmUgc2V0IHRvIHRoZSBwZXJtaXNzaW9uIGJpdHMg aW4gdGhlIG5ldyBtb2RlLAo+IGFuZCB0aGUgZmlsZSBtYXNrcyBlYWNoIGFyZSBzZXQgYmFzZWQg b24gdGhlIG5ldyBtb2RlIGJpdHMgYXMgZm9sbG93czoKPiAuSVAgXChidSA0Cj4gSWYgdGhlIHJl YWQgYml0IGluIGEgc2V0IG9mIHBlcm1pc3Npb25zIGlzIHNldCwgdGhlCj4gLkIgcgo+IHBlcm1p c3Npb24gaW4gdGhlIGNvcnJlc3BvbmRpbmcgZmlsZSBtYXNrIHdpbGwgYmUgc2V0Lgo+IC5JUCBc KGJ1Cj4gSWYgdGhlIHdyaXRlIGJpdCBpbiBhIHNldCBvZiBwZXJtaXNzaW9ucyBpcyBzZXQsIHRo ZQo+IC5CIHcKPiBhbmQKPiAuQiBwCj4gcGVybWlzc2lvbnMgaW4gdGhlIGNvcnJlc3BvbmRpbmcg ZmlsZSBtYXNrIHdpbGwgYmUgc2V0Lgo+IC5JUCBcKGJ1Cj4gSWYgdGhlIGV4ZWN1dGUgYml0IGlu IGEgc2V0IG9mIHBlcm1pc3Npb25zIGlzIHNldCwgdGhlCj4gLkIgeAo+IHBlcm1pc3Npb24gaW4g dGhlIGNvcnJlc3BvbmRpbmcgZmlsZSBtYXNrIHdpbGwgYmUgc2V0Lgo+IC5QUAo+IEluIGFkZGl0 aW9uLCB0aGUKPiAuQiBtYXNrZWQKPiBhbmQKPiAuQiB3cml0ZV90aHJvdWdoCj4gQUNMIGZsYWdz IGFyZSBzZXQuIFRoaXMgaGFzIHRoZQo+IGVmZmVjdCBvZiBsaW1pdGluZyB0aGUgcGVybWlzc2lv bnMgZ3JhbnRlZCBieSB0aGUgQUNMIHRvIHRoZSBmaWxlIG1vZGUKPiBwZXJtaXNzaW9uIGJpdHM7 IGluIGFkZGl0aW9uLCB0aGUgb3duZXIgaXMgZ3JhbnRlZCB0aGUgb3duZXIgbW9kZSBiaXRzIGFu ZAo+IG90aGVycyBhcmUgZ3JhbnRlZCB0aGUgb3RoZXIgbW9kZSBiaXRzLiBJZiB0aGUKPiAuQiBh dXRvX2luaGVyaXQKPiBmbGFnIGlzIHNldCwgdGhlCj4gLkIgcHJvdGVjdGVkCj4gZmxhZyBpcyBh bHNvIHNldCB0byBwcmV2ZW50IHRoZSBBdXRvbWF0aWMgSW5oZXJpdGFuY2UgYWxnb3JpdGhtIGZy b20gbW9kaWZ5aW5nCj4gdGhlIEFDTC4KPiAKPiAuU1MgUGVybWlzc2lvbnMgYXQgZmlsZS1jcmVh dGlvbiB0aW1lCj4gV2hlbiBhIGRpcmVjdG9yeSBoYXMgaW5oZXJpdGFibGUgQUNMIGVudHJpZXMs IHRoZSBmb2xsb3dpbmcKPiBoYXBwZW5zIHdoZW4gYSBmaWxlIG9yIGRpcmVjdG9yeSBpcyBjcmVh dGVkIGluc2lkZSB0aGF0IGRpcmVjdG9yeToKPiAuUlMgNAo+IC5JUCAxLiA0Cj4gQSBmaWxlIGNy ZWF0ZWQgaW5zaWRlIHRoYXQgZGlyZWN0b3J5IHdpbGwgaW5oZXJpdCBhbGwgb2YgdGhlIEFDTCBl bnRyaWVzIHRoYXQKPiBoYXZlIHRoZQo+IC5CIGZpbGVfaW5oZXJpdAo+IGZsYWcgc2V0LCBhbmQg YWxsIGluaGVyaXRhbmNlLXJlbGF0ZWQgZmxhZ3MgaW4gdGhlIGluaGVyaXRlZCBlbnRyaWVzIHdp bGwgYmUKPiBjbGVhcmVkLgo+IAo+IEEgc3ViZGlyZWN0b3J5IGNyZWF0ZWQgaW5zaWRlIHRoYXQg ZGlyZWN0b3J5IHdpbGwgaW5oZXJpdCBhbGwgb2YgdGhlIEFDTAo+IGVudHJpZXMgdGhhdCBoYXZl IHRoZQo+IC5CIGZpbGVfaW5oZXJpdAo+IG9yCj4gLkIgZGlyX2luaGVyaXQKPiBmbGFnIHNldC4g IEVudHJpZXMgd2hvc2UKPiAuQiBub19wcm9wYWdhdGUKPiBmbGFnIGlzIHNldCB3aWxsIGhhdmUg YWxsIGluaGVyaXRhbmNlLXJlbGF0ZWQgZmxhZ3MgY2xlYXJlZC4gIEVudHJpZXMgd2hvc2UKPiAu QiBub19wcm9wYWdhdGUKPiBhbmQKPiAuQiBkaXJfaW5oZXJpdAo+IGZsYWdzIGFyZSBub3Qgc2V0 IGFuZCB3aG9zZQo+IC5CIGZpbGVfaW5oZXJpdAo+IGlzIHNldCB3aWxsIGhhdmUgdGhlaXIKPiAu QiBpbmhlcml0X29ubHkKPiBmbGFnIHNldC4KPiAuSVAgMi4KPiBJZiB0aGUgcGFyZW50IGRpcmVj dG9yeSdzIEFDTCBoYXMgdGhlCj4gLkIgYXV0b19pbmhlcml0Cj4gZmxhZyBzZXQsIHRoZSBpbmhl cml0ZWQgQUNMIHdpbGwgaGF2ZSBpdHMKPiAuQiBhdXRvX2luaGVyaXQKPiBmbGFnIHNldCwgYW5k IGFsbCBlbnRyaWVzIHdpbGwgaGF2ZSB0aGVpcgo+IC5CIGluaGVyaXRlZAo+IGZsYWcgc2V0Lgo+ IC5JUCAzLgo+IFRoZSB0aHJlZSBmaWxlIG1hc2tzIGFyZSBjb21wdXRlZCBmcm9tIHRoZSBpbmhl cml0ZWQgQUNMIGFzIGRlc2NyaWJlZCBpbgo+IHRoZSBzZWN0aW9uCj4gLklSICJDb21wdXRpbmcg dGhlIG1heGltdW0gZmlsZSBtYXNrcyIgLgo+IC5JUCA0Lgo+IFRoZSB0aHJlZSBzZXRzIG9mIHBl cm1pc3Npb25zIGZvciB0aGUgb3duZXIsIHRoZSBncm91cCwgYW5kIGZvciBvdGhlcnMgaW4KPiB0 aGUgXGZJbW9kZVxmUiBwYXJhbWV0ZXIgYXMgZ2l2ZW4gdG8KPiAuQlIgb3BlbiAoMiksCj4gLkJS IG1rZGlyICgyKSwKPiBhbmQgc2ltaWxhciBhcmUgY29udmVydGVkIGludG8gc2V0cyBvZiBSaWNo QUNMIHBlcm1pc3Npb25zIGFzIGRlc2NyaWJlZCBpbgo+IHRoZSBzZWN0aW9uCj4gLklSICJDaGFu Z2luZyB0aGUgZmlsZSBtb2RlIHBlcm1pc3Npb24gYml0cyIgLgo+IEFueSBSaWNoQUNMIHBlcm1p c3Npb25zIG5vdCBpbmNsdWRlZCBpbiB0aG9zZSBzZXRzIGFyZQo+IHJlbW92ZWQgZnJvbSB0aGUg b3duZXIsIGdyb3VwLCBhbmQgb3RoZXIgZmlsZSBtYXNrcy4gVGhlIGZpbGUgbW9kZSBwZXJtaXNz aW9uCj4gYml0cyBhcmUgdGhlbiBjb21wdXRlZCBmcm9tIHRoZSBmaWxlIG1hc2tzIGFzIGRlc2Ny aWJlZCBpbiB0aGUgc2VjdGlvbgo+IC5JUiAiQXNzaWduaW5nIGFuIEFjY2VzcyBDb250cm9sIExp c3QiIC4KPiBUaGUgcHJvY2VzcyB1bWFzayAoc2VlCj4gLkJSIHVtYXNrICgyKSkKPiBpcyBpZ25v cmVkLgo+IC5JUCA1Lgo+IFRoZQo+IC5CIG1hc2tlZAo+IEFDTCBmbGFnIGlzIHNldC4gVGhlCj4g LkIgd3JpdGVfdGhyb3VnaAo+IEFDTCBmbGFnIHJlbWFpbnMgY2xlYXJlZC4gSW4gYWRkaXRpb24s IGlmIHRoZQo+IC5CIGF1dG9faW5oZXJpdAo+IGZsYWcgb2YgdGhlIGluaGVyaXRlZCBBQ0wgaXMg c2V0LCB0aGUKPiAuQiBwcm90ZWN0ZWQKPiBmbGFnIGlzIGFsc28gc2V0IHRvIHByZXZlbnQgdGhl IEF1dG9tYXRpYyBJbmhlcml0YW5jZSBhbGdvcml0aG0gZnJvbSBtb2RpZnlpbmcKPiB0aGUgQUNM Lgo+IC5SRQo+IC5QUAo+IFdoZW4gYSBkaXJlY3RvcnkgZG9lcyBub3QgaGF2ZSBpbmhlcml0YWJs ZSBBQ0wgZW50cmllcywgZmlsZXMgYW5kIGRpcmVjdG9yaWVzCj4gY3JlYXRlZCBpbnNpZGUgdGhh dCBkaXJlY3Rvcnkgd2lsbCBub3QgYmUgYXNzaWduZWQgYWNjZXNzIGNvbnRyb2wgbGlzdHMgYW5k IHRoZQo+IGZpbGUgbW9kZSBwZXJtaXNzaW9uIGJpdHMgd2lsbCBiZSBzZXQgdG8gKFxmSW1vZGVc ZlJcICZcIH5cZkl1bWFza1xmUikgd2hlcmUKPiBcZkltb2RlXGZSIGlzIHRoZSBtb2RlIGFyZ3Vt ZW50IG9mIHRoZSByZWxldmFudCBzeXN0ZW0gY2FsbCBhbmQgXGZJdW1hc2tcZlIgaXMKPiB0aGUg cHJvY2VzcyB1bWFzayAoc2VlCj4gLkJSIHVtYXNrICgyKSkuCj4gCj4gLlNTIEF1dG9tYXRpYyBJ bmhlcml0YW5jZQo+IEF1dG9tYXRpYyBJbmhlcml0YW5jZSBpcyBhIG1lY2hhbmlzbSB0aGF0IGFs bG93cyBwZXJtaXNzaW9uIGNoYW5nZXMgdG8KPiBwcm9wYWdhdGUgZnJvbSBhIGRpcmVjdG9yeSB0 byBmaWxlcyBhbmQgc3ViZGlyZWN0b3JpZXMgaW5zaWRlIHRoYXQgZGlyZWN0b3J5LAo+IHJlY3Vy c2l2ZWx5LiAgUHJvcGFnYXRpb24gaXMgY2FycmllZCBvdXQgYnkgdGhlIHByb2Nlc3MgY2hhbmdp bmcgdGhlIGRpcmVjdG9yeQo+IHBlcm1pc3Npb25zICh1c3VhbGx5LAo+IC5CUiBzZXRyaWNoYWNs ICgxKSk7Cj4gaXQgaGFwcGVucyB3aXRob3V0IHVzZXIgaW50ZXJ2ZW50aW9uIGFsYmVpdCBub3Qg ZW50aXJlbHkgYXV0b21hdGljYWxseS4KPiAKPiBBIHNpZ25pZmljYW50IGxpbWl0YXRpb24gaXMg dGhhdCB0aGlzIG1lY2hhbmlzbSB3b3JrcyBvbmx5IGFzIGxvbmcgYXMgZmlsZXMKPiBhcmUgY3Jl YXRlZCB3aXRob3V0IGV4cGxpY2l0bHkgc3BlY2lmeWluZyB0aGUgZmlsZSBwZXJtaXNzaW9ucyB0 byB1c2UuIFRoZQo+IHN0YW5kYXJkIHN5c3RlbSBjYWxscyBmb3IgY3JlYXRpbmcgZmlsZXMgYW4g ZGlyZWN0b3JpZXMgKAoKcy9hbiAvYW5kIC8Kcy8gKCQvLwoKPiAuQlIgY3JlYXQgKDIpLAoKTWFr ZSB0aGF0IGxhc3QgbGluZToKCi5STSAoIGNyZWF0ICgyKSwKCj4gLkJSIG9wZW4gKDIpLAo+IC5C UiBta2RpciAoMiksCj4gLkJSIG1rbm9kICgyKSkKPiBhbGwgaGF2ZSBtYW5kYXRvcnkgbW9kZSBw YXJhbWV0ZXJzIHdoaWNoIGRlZmluZSB0aGUgbWF4aW11bSBhbGxvd2VkIHBlcm1pc3Npb25zCj4g b2YgdGhlIG5ldyBmaWxlcy4gVG8gdGFrZSBhY2NvdW50IG9mIHRoaXMgcmVzdHJpY3Rpb24sIHRo ZQo+IC5CIHByb3RlY3RlZAo+IEFDTCBmbGFnIG11c3QgYmUgc2V0IGlmIHRoZQo+IC5CIGluaGVy aXRlZAo+IGZsYWcgaXMgc2V0LiBUaGlzIGVmZmVjdGl2ZWx5IGRpc2FibGVzIEF1dG9tYXRpYyBJ bmhlcml0YW5jZSBmb3IgdGhhdAo+IHBhcnRpY3VsYXIgZmlsZS4KPiAKPiBBdXRvbWF0aWMgSW5o ZXJpdGFuY2Ugc3RpbGwgcmVtYWlucyB1c2VmdWwgZm9yIG5ldHdvcmsgcHJvdG9jb2xzIGxpa2Ug TkZTdjQgYW5kCj4gU01CLCB3aGljaCBib3RoIHN1cHBvcnQgY3JlYXRpbmcgZmlsZXMgYW5kIGRp cmVjdG9yaWVzIHdpdGhvdXQgZGVmaW5pbmcgd2hpY2gKCnMvd2hpY2gkL3RoZWlyLwoKPiBwZXJt aXNzaW9uczogdGhleSBjYW4gaW1wbGVtZW50IHRob3NlIG9wZXJhdGlvbnMgYnkgdXNpbmcgdGhl IHN0YW5kYXJkIHN5c3RlbQo+IGNhbGxzIGFuZCBieSB0aGVuIHVuZG9pbmcgdGhlIGVmZmVjdCBv ZiBhcHBseWluZyB0aGUgbW9kZSBwYXJhbWV0ZXJzLgo+IAo+IFdoZW4gdGhlIEFDTCBvZiBhIGRp cmVjdG9yeSBpcyBjaGFuZ2VkLCB0aGUgZm9sbG93aW5nIGhhcHBlbnMgZm9yIGVhY2ggZW50cnkK PiAoXChscWNoaWxkXChycSkgaW5zaWRlIHRoYXQgZGlyZWN0b3J5Ogo+IC5JUCAxLiA0Cj4gSWYg dGhlIGVudHJ5IGlzIGEgc3ltYmxpYyBsaW5rLCBza2lwIHRoZSBjaGlsZC4KPiAuSVAgMi4KPiBJ ZiB0aGUKPiAuQiBhdXRvX2luaGVyaXQKPiBmbGFnIG9mIHRoZSBlbnRyeSdzIEFDTCBpcyBub3Qg c2V0IG9yIHRoZQo+IC5CIHByb3RlY3RlZAo+IGZsYWcgaXMgc2V0LCBza2lwIHRoZSBjaGlsZC4K PiAuSVAgMy4KPiBXaXRoIHRoZSBjaGlsZCdzIEFDTDoKPiAuUlMgNAo+IC5JUCBhKSA0Cj4gSWYg dGhlCj4gLkIgZGVmYXVsdGVkCj4gZmxhZyBpcyBzZXQsIHJlcGxhY2UgdGhlIEFDTCB3aXRoIGFu IGVtcHR5IEFDTAo+IHdpdGggdGhlCj4gLkIgYXV0b19pbmhlcml0Cj4gZmxhZyBzZXQuCj4gLklQ IGIpCj4gRGVsZXRlIGFsbCBlbnRyaWVzIHdoaWNoIGhhdmUgdGhlCj4gLkIgaW5oZXJpdGVkCj4g ZmxhZyBzZXQuCj4gLklQIGMpCj4gQXBwZW5kIGFsbCBlbnRyaWVzIGluaGVyaXRlZCBmcm9tIHRo ZSBwYXJlbnQgZGlyZWN0b3J5IGFjY29yZGluZyB0byBzdGVwIDEgb2YKPiB0aGUgYWxnb3JpdGht IGRlc2NyaWJlZCB1bmRlcgo+IC5JUiAiUGVybWlzc2lvbnMgYXQgZmlsZS1jcmVhdGlvbiB0aW1l Ii4KPiBTZXQgdGhlCj4gLkIgaW5oZXJpdGVkCj4gZmxhZyBvZiBlYWNoIG9mIHRoZXNlIGVudHJp ZXMuCj4gLklQIGQpCj4gUmVjb21wdXRlIHRoZSBmaWxlIG1hc2tzLgo+IC5SRQo+IC5JUCA0Lgo+ IElmIHRoZSBjaGlsZCBpcyBhIGRpcmVjdG9yeSwgcmVjdXJzaXZlbHkgYXBwbHkgdGhpcyBhbGdv cml0aG0uCj4gCj4gLlNTIEFjY2VzcyBjaGVjayBhbGdvcml0aG0KPiAKPiBXaGVuIGEgcHJvY2Vz cyByZXF1ZXN0cyBhIHBhcnRpY3VsYXIga2luZCBvZiBhY2Nlc3MgKGV4cHJlc3NlZCBhcyBhIHNl dCBvZgo+IFJpY2hBQ0wgcGVybWlzc2lvbnMpIHRvIGEgZmlsZSwgdGhlIGZvbGxvd2luZyBhbGdv cml0aG0gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZQo+IGFjY2VzcyBpcyBncmFudGVkIG9yIGRlbmll ZDoKPiAKPiAuSVAgMS4gNAo+IElmIHRoZQo+IC5CIG1hc2tlZAo+IEFDTCBmbGFnIGlzIHNldCwg dGhlbjoKPiAuUlMgNAo+IC5JUCBhKSA0Cj4gSWYgdGhlCj4gLkIgd3JpdGVfdGhyb3VnaAo+IEFD TCBmbGFnIGlzIHNldCwgdGhlbjoKPiAuUlMgNAo+IC5JUCBcKGJ1IDQKPiBJZiB0aGUgcmVxdWVz dGluZyBwcm9jZXNzIGlzIHRoZSBmaWxlIG93bmVyLCB0aGVuIGFjY2VzcyBpcyBncmFudGVkIGlm IHRoZQo+IG93bmVyIG1hc2sgaW5jbHVkZXMgdGhlIHJlcXVlc3RlZCBwZXJtaXNzaW9ucywgYW5k IGlzIG90aGVyd2lzZSBkZW5pZWQuCj4gLklQIFwoYnUKPiBJZiB0aGUgcmVxdWVzdGluZyBwcm9j ZXNzIGlzIG5vdCB0aGUgZmlsZSBvd25lciwgaXMgbm90IGluIHRoZSBvd25pbmcgZ3JvdXAsCj4g YW5kIG5vIEFDTCBlbnRyaWVzIG90aGVyIHRoYW4KPiAuQiBldmVyeW9uZUAKPiBtYXRjaCB0aGUg cHJvY2VzcywgdGhlbiBhY2Nlc3MgaXMgZ3JhbnRlZCBpZiB0aGUgb3RoZXIgbWFzayBpbmNsdWRl cyB0aGUKPiByZXF1ZXN0ZWQgcGVybWlzc2lvbnMsIGFuZCBpcyBvdGhlcndpc2UgZGVuaWVkLgo+ IC5SRQo+IC5JUCBiKQo+IElmIGFueSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6Cj4gLlJTIDQK PiAuSVAgXChidSA0Cj4gdGhlIHJlcXVlc3RpbmcgcHJvY2VzcyBpcyB0aGUgZmlsZSBvd25lciBh bmQgdGhlIG93bmVyIG1hc2sgZG9lcyBub3QgaW5jbHVkZSBhbGwKPiByZXF1ZXN0ZWQgcGVybWlz c2lvbnMsCj4gLklQIFwoYnUgNAo+IHRoZSByZXF1ZXN0aW5nIHByb2Nlc3MgaXMgbm90IHRoZSBm aWxlIG93bmVyIGFuZCBpdCBpcyBpbiB0aGUgb3duaW5nIGdyb3VwIG9yCj4gbWF0Y2hlcyBhbnkg QUNMIGVudHJpZXMgb3RoZXIgdGhhbgo+IC5CUiBldmVyeW9uZUAgLAo+IGFuZCB0aGUgZ3JvdXAg bWFzayBkb2VzIG5vdCBpbmNsdWRlIGFsbCByZXF1ZXN0ZWQgcGVybWlzc2lvbnMsCj4gLklQIFwo YnUgNAo+IHRoZSByZXF1ZXN0aW5nIHByb2Nlc3MgaXMgbm90IHRoZSBmaWxlIG93bmVyLCBub3Qg aW4gdGhlIG93bmluZyBncm91cCwgaXQKPiBtYXRjaGVzIG5vIEFDTCBlbnRyaWVzIG90aGVyIHRo YW4KPiAuQlIgZXZlcnlvbmVAICwKPiBhbmQgdGhlIG90aGVyIG1hc2sgZG9lcyBub3QgaW5jbHVk ZSBhbGwgcmVxdWVzdGVkIHBlcm1pc3Npb25zLAo+IC5QUAo+IHRoZW4gYWNjZXNzIGlzIGRlbmll ZC4KPiAuUkUKPiAuUkUKPiAuSVAgMi4KPiBTZXQgdGhlIHJlbWFpbmluZyBwZXJtaXNzaW9ucyB0 byB0aGUgcmVxdWVzdGVkIHBlcm1pc3Npb25zLiAgR28gdGhyb3VnaCBhbGwgQUNMCj4gZW50cmll cy4gRm9yIGVhY2ggZW50cnk6Cj4gLlJTIDQKPiAuSVAgYSkgNAo+IElmIHRoZQo+IC5CIGluaGVy aXRfb25seQo+IG9yCj4gLkIgdW5tYXBwZWQKPiBmbGFncyBhcmUgc2V0LCBjb250aW51ZSB3aXRo IHRoZSBuZXh0IEFDTCBlbnRyeS4KPiAuSVAgYikKPiBJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBp cyB0cnVlOgo+IC5SUyA0Cj4gLklQIFwoYnUgNAo+IHRoZSBlbnRyeSdzIGlkZW50aWZpZXIgaXMK PiAuQiBvd25lckAKPiBhbmQgdGhlIHJlcXVlc3RpbmcgcHJvY2VzcyBpcyB0aGUgZmlsZSBvd25l ciwKPiAuSVAgXChidQo+IHRoZSBlbnRyeSdzIGlkZW50aWZpZXIgaXMKPiAuQiBncm91cEAKPiBh bmQgdGhlIHJlcXVlc3RpbmcgcHJvY2VzcyBpcyBpbiB0aGUgb3duaW5nIGdyb3VwLAo+IC5JUCBc KGJ1Cj4gdGhlIGVudHJ5J3MgaWRlbnRpZmllciBpcyBhIHVzZXIgYW5kIHRoZSByZXF1ZXN0aW5n IHByb2Nlc3MgaXMgb3duZWQgYnkgdGhhdAo+IHVzZXIsCj4gLklQIFwoYnUKPiB0aGUgZW50cnkn cyBpZGVudGlmaWVyIGlzIGEgZ3JvdXAgYW5kIHRoZSByZXF1ZXN0aW5nIHByb2Nlc3MgaXMgYSBt ZW1iZXIgaW4KPiB0aGF0IGdyb3VwLAo+IC5JUCBcKGJ1Cj4gdGhlIGVudHJ5J3MgaWRlbnRpZmll ciBpcwo+IC5CUiBldmVyeW9uZUAgLAo+IC5QUAo+IHRoZW4gdGhlIGVudHJ5IG1hdGNoZXMgdGhl IHByb2Nlc3M7IHByb2NlZWQgdG8gdGhlIG5leHQgc3RlcC4gT3RoZXJ3aXNlLAo+IGNvbnRpbnVl IHdpdGggdGhlIG5leHQgQUNMIGVudHJ5Lgo+IC5SRQo+IC5JUCBjKQo+IElmIHRoZSBlbnRyeSBk ZW5pZXMgYW55IG9mIHRoZSByZW1haW5pbmcgcGVybWlzc2lvbnMsIGFjY2VzcyBpcyBkZW5pZWQu Cj4gLklQIGQpCj4gSWYgdGhlIGVudHJ5IGFsbG93cyBhbnkgb2YgdGhlIHJlbWFpbmluZyBwZXJt aXNzaW9ucywgdGhlbjoKPiAuUlMgNAo+IC5JUCBcKGJ1IDQKPiBJZiB0aGUKPiAuQiBtYXNrZWQK PiBBQ0wgZmxhZyBpcyBzZXQgYW5kIHRoZSBlbnRyeSdzIGlkZW50aWZpZXIgaXMgbm90Cj4gLkIg b3duZXJACj4gb3IKPiAuQlIgZXZlcnlvbmVACj4gb3IgaXMgYSB1c2VyIGVudHJ5IG1hdGNoaW5n IHRoZSBmaWxlIG93bmVyLCByZW1vdmUgYWxsIHBlcm1pc3Npb25zIGZyb20gdGhlCj4gcmVtYWlu aW5nIHBlcm1pc3Npb25zIHdoaWNoIGFyZSBib3RoIGFsbG93ZWQgYnkgdGhlIGVudHJ5IGFuZCBp bmNsdWRlZCBpbiB0aGUKPiBncm91cCBtYXNrLAo+IC5JUCBcKGJ1Cj4gT3RoZXJ3aXNlLCByZW1v dmUgYWxsIHBlcm1pc3Npb25zIGZyb20gdGhlIHJlbWFpbmluZyBwZXJtaXNzaW9ucyB3aWNoIGFy ZQo+IGFsbG93ZWQgYnkgdGhlIGVudHJ5Lgo+IC5SRQo+IC5SRQo+IC5JUCAzLgo+IElmIHRoZXJl IGFyZSBubyBtb3JlIHJlbWFpbmluZyBwZXJtaXNzaW9ucywgYWNjZXNzIGlzIGFsbG93ZWQuIE90 aGVyd2lzZSwKPiBhY2Nlc3MgaXMgZGVuaWVkLgo+IAo+IC5TUyBDb21wdXRpbmcgdGhlIG1heGlt dW0gZmlsZSBtYXNrcwo+IFdoZW4gc2V0dGluZyBhbiBBQ0wgYW5kIG5vIGZpbGUgbWFza3MgaGF2 ZSBiZWVuIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFuZCB3aGVuCj4gaW5oZXJpdGluZyBhbiBBQ0wg ZnJvbSB0aGUgcGFyZW50IGRpcmVjdG9yeSwgdGhlIGZvbGxvd2luZyBhbGdvcml0aG0gaXMgdXNl ZAo+IGZvciBjb21wdXRpbmcgdGhlIGZpbGUgbWFza3M6Cj4gCj4gLklQIDEuIDQKPiBDbGVhciB0 aGUgb3duZXIsIGdyb3VwLCBhbmQgb3RoZXIgZmlsZSBtYXNrcy4gUmVtZW1iZXIgd2hpY2ggcGVy bWlzc2lvbnMgaGF2ZQo+IGFscmVhZHkgYmVlbiBwcm9jZXNzZWQgKGluaXRpYWxseSwgdGhlIGVt cHR5IHNldCkuCj4gLklQIDIuCj4gRm9yIGVhY2ggQUNMIGVudHJ5Ogo+IC5SUyA0Cj4gLklQIFwo YnUgNAo+IElmIHRoZQo+IC5CIGluaGVyaXRfb25seQo+IGZsYWcgaXMgc2V0LCBza2lwIHRoZSBl bnRyeS4KPiAuSVAgXChidSA0Cj4gT3RoZXJ3aXNlLCBjb21wdXRlIHdoaWNoIHBlcm1pc3Npb25z IHRoZSBlbnRyeSBhbGxvd3Mgb3IgZGVuaWVzIHRoYXQgaGF2ZSBub3QKPiBiZWVuIHByb2Nlc3Nl ZCB5ZXQgKHRoZSByZW1haW5pbmcgcGVybWlzc2lvbnMpLgo+IC5JUCBcKGJ1Cj4gSWYgdGhlIGVu dHJ5IGlzIGFuCj4gLkIgb3duZXJACj4gZW50cnksIGFkZCB0aGUgcmVtYWluaW5nIHBlcm1pc3Np b25zIHRvIHRoZSBvd25lciBtYXNrIGZvcgo+IC5CIGFsbG93Cj4gZW50cmllcywgYW5kIHJlbW92 ZSB0aGUgcmVtYWluaW5nIHBlcm1pc3Npb25zIGZyb20gdGhlIG93bmVyIG1hc2sgZm9yCj4gLkIg ZGVueQo+IGVudHJpZXMuCj4gLklQIFwoYnUKPiBPdGhlcndpc2UsIGlmIHRoZSBlbnRyeSBpcyBh bgo+IC5CIGV2ZXJ5b25lQAo+IGVudHJ5LCBwcm9jZWVkIGFzIHdpdGgKPiAuQiBvd25lckAKPiBl bnRyaWVzIGJ1dCBhZGQgb3IgcmVtb3ZlIHRoZSByZW1haW5pbmcgcGVybWlzc2lvbnMgZnJvbSB0 aGUgb3duZXIsIGdyb3VwLCBhbmQKPiBvdGhlciBmaWxlIG1hc2tzLgo+IC5JUCBcKGJ1Cj4gT3Ro ZXJ3aXNlLCBwcm9jZWVkIGFzIHdpdGgKPiAuQiBvd25lckAKPiBlbnRyaWVzIGJ1dCBhZGQgb3Ig cmVtb3ZlIHRoZSByZW1haW5pbmcgcGVybWlzc2lvbnMgZnJvbSB0aGUgb3duZXIgYW5kIGdyb3Vw Cj4gZmlsZSBtYXNrcy4KPiAuSVAgXChidQo+IEFkZCB0aGUgZW50cnkncyBwZXJtaXNzaW9ucyB0 byB0aGUgcHJvY2Vzc2VkIHBlcm1pc3Npb25zLgo+IC5SRQo+IC5QUAo+IFRoZSByZXN1bHRpbmcg ZmlsZSBtYXNrcyByZXByZXNlbnQgdGhlIEFDTCBhcyBjbG9zZWx5IGFzIHBvc3NpYmxlLiBXaXRo IHRoZXNlCj4gZmlsZSBtYXNrcywgaWYgdGhlCj4gLkIgbWFza2VkCj4gQUNMIGZsYWcgaXMgc2V0 LCB0aGUgZWZmZWN0aXZlIHBlcm1pc3Npb25zIHN0aWxsIHN0YXkgdGhlIHNhbWUuCj4gCj4gLlwi IC5TSCBCVUdTCj4gLlNIIEFVVEhPUgo+IFdyaXR0ZW4gYnkgQW5kcmVhcyBHcsO8bmJhY2hlciA8 YWdydWVuYmFAcmVkaGF0LmNvbT4uCj4gCj4gUGxlYXNlIHNlbmQgeW91ciBidWcgcmVwb3J0cywg c3VnZ2VzdGVkIGZlYXR1cmVzIGFuZCBjb21tZW50cyB0byB0aGUgYWJvdmUgYWRkcmVzcy4KCkNv dWxkIHdlIHN0YXJ0IHdpdGgganVzdCBhIGZldyBzaW1wbGUgZXhhbXBsZXMgYWxyZWFkeSwgYW5k IGJ1aWxkIHVwCm92ZXIgZnV0dXJlIGl0ZXJhdGlvbnMgb2YgdGhpcyBwYWdlPwoKPiAuU0ggQ09O Rk9STUlORyBUTwo+IFJpY2ggQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlIExpbnV4LXNwZWNpZmlj Lgo+IC5TSCBTRUUgQUxTTwo+IC5CUiBhY2wgKDUpLAo+IC5CUiBjaG1vZCAoMSksCj4gLkJSIGdl dHJpY2hhY2wgKDEpLAo+IC5CUiBscyAoMSksCj4gLkJSIHNldHJpY2hhY2wgKDEpCj4gLkJSIHN0 YXQgKDIpLAo+IC5CUiB1bWFzayAoMikKPiAuXCIgbGlicmljaGFjbAoKVGhhbmtzLAoKTWljaGFl bAoKLS0gCk1pY2hhZWwgS2VycmlzawpMaW51eCBtYW4tcGFnZXMgbWFpbnRhaW5lcjsgaHR0cDov L3d3dy5rZXJuZWwub3JnL2RvYy9tYW4tcGFnZXMvCkxpbnV4L1VOSVggU3lzdGVtIFByb2dyYW1t aW5nIFRyYWluaW5nOiBodHRwOi8vbWFuNy5vcmcvdHJhaW5pbmcvCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp4ZnMgbWFpbGluZyBsaXN0Cnhmc0Bvc3Mu c2dpLmNvbQpodHRwOi8vb3NzLnNnaS5jb20vbWFpbG1hbi9saXN0aW5mby94ZnMK