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 015B27CBD for ; Sun, 21 Feb 2016 15:41:20 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id B1CF2304097 for ; Sun, 21 Feb 2016 13:41:13 -0800 (PST) Received: from mail-wm0-f44.google.com (mail-wm0-f44.google.com [74.125.82.44]) by cuda.sgi.com with ESMTP id ME2xTqr8YGzhSrVJ (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO) for ; Sun, 21 Feb 2016 13:41:05 -0800 (PST) Received: by mail-wm0-f44.google.com with SMTP id g62so133711544wme.0 for ; Sun, 21 Feb 2016 13:41:05 -0800 (PST) Subject: Re: richacl(7) man page review comments References: <56B770B6.7040803@gmail.com> <56B77262.7090107@gmail.com> <56C0F23C.7030902@gmail.com> From: "Michael Kerrisk (man-pages)" Message-ID: <56CA2EEB.9080504@gmail.com> Date: Sun, 21 Feb 2016 22:40:59 +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 SGVsbG8gQW5kcmVhcywKCk9uIDAyLzIwLzIwMTYgMDU6MzcgUE0sIEFuZHJlYXMgR3J1ZW5iYWNo ZXIgd3JvdGU6Cj4gSGkgTWljaGFlbCwKPiAKPiB0aGFua3MgYWdhaW4gZm9yIGFsbCB0aGUgZmVl ZGJhY2suIEkndmUgZm9sbG93ZWQgYWxsIHlvdXIgc3VnZ2VzdGlvbnM7Cj4gYWdhaW4sIHBsZWFz ZSBzZWUgdGhlIGdpdGh1YiByZXBvIGZvciB0aGUgbGF0ZXN0IHZlcnNpb246Cj4gCj4gICBodHRw czovL2dpdGh1Yi5jb20vYW5kcmVhcy1ncnVlbmJhY2hlci9yaWNoYWNsCgpJJ3ZlIG9uY2UgbW9y ZSBwdWxsZWQgZnJvbSB0aGUgbGF0ZXN0IGdpdDsgaGVyZSdzIHNvbWUgbW9yZSBjb21tZW50cy4K Cj4gLlwiCj4gLlwiIFJpY2hBQ0wgTWFudWFsIFBhZ2VzCj4gLlwiCj4gLlwiIENvcHlyaWdodCAo QykgMjAxNSwyMDE2ICBSZWQgSGF0LCBJbmMuCj4gLlwiIFdyaXR0ZW4gYnkgQW5kcmVhcyBHcnVl bmJhY2hlciA8YWdydWVuYmFAcmVkaGF0LmNvbT4KPiAuXCIgVGhpcyBpcyBmcmVlIGRvY3VtZW50 YXRpb247IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+IC5cIiBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwo+IC5cIiBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MiBvZgo+IC5cIiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KPiAuXCIKPiAuXCIgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlJ3MgcmVmZXJl bmNlcyB0byAib2JqZWN0IGNvZGUiCj4gLlwiIGFuZCAiZXhlY3V0YWJsZXMiIGFyZSB0byBiZSBp bnRlcnByZXRlZCBhcyB0aGUgb3V0cHV0IG9mIGFueQo+IC5cIiBkb2N1bWVudCBmb3JtYXR0aW5n IG9yIHR5cGVzZXR0aW5nIHN5c3RlbSwgaW5jbHVkaW5nCj4gLlwiIGludGVybWVkaWF0ZSBhbmQg cHJpbnRlZCBvdXRwdXQuCj4gLlwiCj4gLlwiIFRoaXMgbWFudWFsIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gLlwiIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gLlwiIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK PiAuXCIgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiAuXCIK PiAuXCIgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljCj4gLlwiIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIG1hbnVhbC4gIElmIG5vdCwgc2Vl Cj4gLlwiIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KPiAuXCIKPiAuZGUgVVJMCj4g XFwkMiBcKGxhVVJMOiBcXCQxIFwocmFcXCQzCj4gLi4KPiAuaWYgXG5bLmddIC5tc28gd3d3LnRt YWMKPiAuVEggUklDSEFDTCA3IDIwMTUtMDktMDEgIkxpbnV4IiAiUmljaCBBY2Nlc3MgQ29udHJv bCBMaXN0cyIKPiAuU0ggTkFNRQo+IHJpY2hhY2wgXC0gUmljaCBBY2Nlc3MgQ29udHJvbCBMaXN0 cwo+IC5TSCBERVNDUklQVElPTgo+IFJpY2ggQWNjZXNzIENvbnRyb2wgTGlzdHMgKFJpY2hBQ0xz KSBhcmUgYW4gZXh0ZW5zaW9uIG9mIHRoZSBQT1NJWCBmaWxlCj4gcGVybWlzc2lvbiBtb2RlbCAo c2VlCj4gLkJSIGFjbCAoNSkpCj4gdG8gc3VwcG9ydAo+IC5VUkwgaHR0cHM6Ly90b29scy5pZXRm Lm9yZy9yZmMvcmZjNTY2MS50eHQgIk5GU3Y0IEFjY2VzcyBDb250cm9sIExpc3RzIgo+IG9uIGxv Y2FsIGFuZCByZW1vdGUtbW91bnRlZCBmaWxlc3lzdGVtcy4KPiAKPiBBIFJpY2hBQ0wgY2FuIGFs d2F5cyBiZSB0cmFuc2xhdGVkIGludG8gYW4gZXF1aXZhbGVudCBORlN2NCBBQ0wgd2hpY2ggZ3Jh bnRzCj4gdGhlIHNhbWUgcGVybWlzc2lvbnMuCj4gCj4gUmljaEFDTHMgY2FuIGJlIGVuYWJsZWQg b24gc3VwcG9ydGVkIGxvY2FsIGZpbGVzeXN0ZW1zIChjdXJyZW50bHksIGV4dDQgYW5kCj4gWEZT KS4gIFRoaXMgZGlzYWJsZXMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHM7IHRoZSB0d28gQUNM IG1vZGVscyBjYW5ub3QKPiBjb2V4aXN0IG9uIHRoZSBzYW1lIGZpbGVzeXN0ZW0uCj4gCj4gVGhl IGluLWtlcm5lbCBORlN2NCBzZXJ2ZXIgYW5kIGNsaWVudCBhbHNvIGluY2x1ZGUgUmljaEFDTCBz dXBwb3J0LgoKUmV3cml0ZSB0aGUgcHJlY2VkaW5nIHR3byBwYXJhcyBpbiBhIGJldHRlciBsb2dp Y2FsIHNwbGl0IGFuZCBvcmRlcjoKCltbClJpY2hBQ0xzIGNhbiBiZSBlbmFibGVkIG9uIHN1cHBv cnRlZCBsb2NhbCBmaWxlc3lzdGVtcyAoY3VycmVudGx5LCBleHQ0IGFuZApYRlMpLiAgVGhlIGlu LWtlcm5lbCBORlN2NCBzZXJ2ZXIgYW5kIGNsaWVudCBhbHNvIGluY2x1ZGUgUmljaEFDTCBzdXBw b3J0LgoKRW5hYmxpbmcgUmljaEFDTHMgZGlzYWJsZXMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlz dHM7CnRoZSB0d28gQUNMIG1vZGVscyBjYW5ub3QgY29leGlzdCBvbiB0aGUgc2FtZSBmaWxlc3lz dGVtLgpdXQoKPiAKPiBXaGVuIHVzZWQgb24gYSBmaWxlc3lzdGVtIHRoYXQgZG9lcyBub3Qgc3Vw cG9ydCBSaWNoQUNMcywgdGhlCj4gLkJSIGdldHJpY2hhY2wgKDEpCj4gYW5kCj4gLkJSIHNldHJp Y2hhY2wgKDEpCj4gdXRpbGl0aWVzIHdpbGwgb3BlcmF0ZSBvbiB0aGUgZmlsZSBwZXJtaXNzaW9u IGJpdHMgaW5zdGVhZDoKPiAuQlIgZ2V0cmljaGFjbCAoMSkKPiB3aWxsIGRpc3BsYXkgdGhlIGZp bGUgcGVybWlzc2lvbiBiaXRzIGFzIGEgUmljaEFDTDsgd2hlbiBhIFJpY2hBQ0wKPiBpcyBzZXQg d2l0aAo+IC5CUiBzZXRyaWNoYWNsICgxKQo+IHdoaWNoIGNhbiBiZSByZXByZXNlbnRlZCBleGFj dGx5IGJ5IHRoZSBmaWxlIHBlcm1pc3Npb24gYml0cywKPiAuQlIgc2V0cmljaGFjbCAoMSkKPiB3 aWxsIHNldCB0aGUgZmlsZSBwZXJtaXNzaW9uIGJpdHMgaW5zdGVhZC4gIEFuIGF0dGVtcHQgdG8g c2V0IGEgUmljaEFDTCB0aGF0Cj4gY2Fubm90IGJlIHJlcHJlc2VudGVkIGV4YWN0bHkgYnkgdGhl IGZpbGUgcGVybWlzc2lvbiBiaXRzIHJlc3VsdHMgaW4gYW4gZXJyb3IuCj4gCj4gLlNTIFN0cnVj dHVyZSBvZiBSaWNoQUNMcwo+IAo+IFJpY2hBQ0xzIGNvbnNpc3Qgb2YgYSBudW1iZXIgb2YgQUNM IGVudHJpZXMsIHRocmVlIGZpbGUgbWFza3MsIGFuZCBzb21lIGZsYWdzCgpzL3NvbWUgZmxhZ3Mv YSBzZXQgb2YgZmxhZ3MvCgo+IHNwZWNpZnlpbmcgYXR0cmlidXRlcyBvZiB0aGUgQUNMIGFzIHdo b2xlIChieSBjb250cmFzdCB3aXRoIHRoZSBwZXItQUNMLWVudHJ5CgpzL3dob2xlL2Egd2hvbGUv Cgo+IGZsYWdzIGRlc2NyaWJlZCBiZWxvdykuCj4gCj4gRWFjaCBvZiB0aGUgQUNMIGVudHJpZXMg YWxsb3dzIG9yIGRlbmllcyBzb21lIHBlcm1pc3Npb25zIHRvIGEgcGFydGljdWxhciB1c2VyLAo+ IGdyb3VwLCBvciBzcGVjaWFsIGlkZW50aWZpZXIuIEFuIEFDTCBlbnRyeSBjb25zaXN0cyBvZiBm b3VyIGZpZWxkczoKPiAKPiAuSVAgXChidSA0CgpzLzQvMi8KCj4gQSB0YWcgd2hpY2ggc3BlY2lm aWVzIHRoZSB1c2VyLCBncm91cCwgb3Igc3BlY2lhbCBpZGVudGlmaWVyIHRoZSBlbnRyeSBhcHBs aWVzCj4gdG8uICBTcGVjaWFsIGlkZW50aWZpZXJzIGNhbiBiZSB0aGUgZmlsZSBvd25lciwgdGhl IG93bmluZyBncm91cCwgb3IgZXZlcnlvbmUuCgo9PT4KU3BlY2lhbCBpZGVudGlmaWVycyBjb3Jy ZXNwb25kIHRvIG9uZSBvZiB0aHJlZSBmaWxlIG1hc2tzIGZvciB0aGUgZmlsZSBvd25lcgouUkIg KCBvd25lckAgKSwKdGhlIG93bmluZyBncm91cAouUkIgKCBncm91cEAgKSwKb3IgZXZlcnlvbmUK LlJCICggZXZlcnlvbmVAICkuCgo+IC5JUCBcKGJ1Cj4gQSBzZXQgb2YgcGVybWlzc2lvbnMgdGhl IGVudHJ5IGFsbG93cyBvciBkZW5pZXMuCj4gLklQIFwoYnUKPiBBIHNldCBvZiBmbGFncyB0aGF0 IGluZGljYXRlIHdoZXRoZXIgdGhlIHVzZXIgb3IgZ3JvdXAgaWRlbnRpZmllciBpcyBtYXBwZWQg b3IKPiB1bm1hcHBlZCwgYW5kIHdoZXRoZXIgdGhlIGVudHJ5IGhhcyBiZWVuIGFuZCBjYW4gYmUg aW5oZXJpdGVkLgo+IC5JUCBcKGJ1IDQKCnMvIDQvLwoKPiBBIHR5cGUgZmllbGQgaW5kaWNhdGlu ZyB3aGV0aGVyIHRoZSBlbnRyeSBhbGxvd3Mgb3IgZGVuaWVzIGFjY2Vzcy4KCnMvYWNjZXNzL3Ro ZSBwZXJtaXNzaW9ucyBzcGVjaWZpZWQgaW4gdGhlIHNlY29uZCBmaWVsZC8KCj4gLlBQCj4gVGhl IG93bmVyLCBncm91cCwgYW5kIG90aGVyIGZpbGUgbWFza3MgZnVydGhlciBjb250cm9sIHdoaWNo IHBlcm1pc3Npb25zIHRoZQo+IEFDTCBncmFudHMsIHN1YmplY3QgdG8gdGhlCj4gLkJSIG1hc2tl ZCAiXCAoIiBtICkKPiBhbmQKPiAuQlIgd3JpdGVfdGhyb3VnaCAiXCAoIiB3ICkKPiBBQ0wgZmxh Z3M6IHdoZW4gdGhlIHBlcm1pc3Npb25zIG9mIGEgZmlsZSBvciBkaXJlY3RvcnkgYXJlIGNoYW5n ZWQgd2l0aAo+IC5CUiBjaG1vZCAoMiksCj4gdGhlIGZpbGUgbWFza3MgYXJlIHNldCBiYXNlZCBv biB0aGUgbmV3IGZpbGUgbW9kZSwgYW5kIHRoZQo+IC5CIG1hc2tlZAo+IGFuZAo+IC5CIHdyaXRl X3Rocm91Z2gKPiBBQ0wgZmxhZ3MgYXJlIHNldC4gTGlrZXdpc2UsIHdoZW4gYSBuZXcgZmlsZSBv ciBkaXJlY3RvcnkgaW5oZXJpdHMgYW4gQUNMIGZyb20KPiBpdHMgcGFyZW50IGRpcmVjdG9yeSwg dGhlIGZpbGUgbWFza3MgYXJlIHNldCB0byB0aGUgaW50ZXJzZWN0aW9uIGJldHdlZW4gdGhlCj4g cGVybWlzc2lvbnMgZ3JhbnRlZCBieSB0aGUgaW5oZXJpdGVkIEFDTCBhbmQgdGhlCj4gLkkgbW9k ZQo+IHBhcmFtZXRlciBhcyBnaXZlbiB0bwo+IC5CUiBvcGVuICIoMiksICIgbWtkaXIgKDIpLAo+ IGFuZCBzaW1pbGFyLCBhbmQgdGhlCj4gLkIgbWFza2VkCj4gQUNMIGZsYWcgaXMgc2V0LiBJbiBi b3RoIGNhc2VzLCB0aGUgZmlsZSBtYXNrcyBsaW1pdCB0aGUgcGVybWlzc2lvbnMgdGhhdCB0aGUK PiBBQ0wgd2lsbCBncmFudC4KPiAKPiBUaGUgYWR2YW50YWdlIG9mIHRoaXMgYXBwcm9hY2ggb3Zl ciBkaXJlY3RseSBtb2RpZnlpbmcgdGhlIEFDTCBlbnRyaWVzIGlzIHRoYXQKPiBwZXJtaXNzaW9u cyBkZWZpbmVkIGluIEFDTCBlbnRyaWVzIGFyZSBub3QgbG90IHdoZW4gdGhlIGZpbGUgbWFza3Mg YXJlIGxhdGVyCgpzL2xvdC9sb3N0LwoKPiBzZXQgdG8gYmUgbGVzcyByZXN0cmljdGl2ZS4KCihJ IHRoaW5rKSBJIGtub3cgd2hhdCB5b3UgYXJlIHRyeWluZyB0byBzYXkgaW4gdGhlIHByZXZpb3Vz IHBhcmFncmFwaCwKYnV0ICJ0aGlzIGFwcHJvYWNoIiBhbmQgImRpcmVjdGx5IG1vZGlmeWluZyB0 aGUgQUNMIGVudHJpZXMiIGlzIGEgbGl0dGxlCnZhZ3VlLiAgTWFza3MgYXJlIGFib3V0IHNvbHZp bmcgdGhlIGh5c3RlcmVzaXMgcHJvYmxlbSwgcmlnaHQ/IFNvLCBob3cKYWJvdXQgc29tZSB0ZXh0 IGFsb25nIHRoZSBmb2xsb3dpbmcgbGluZXMgKEknbSBzdXJlIHlvdSBjYW4gaW1wcm92ZSk6Cgpb WwpUaGUgcHVycG9zZSBvZiB0aGUgZmlsZSBtYXNrcyBpcyB0byBhbGxvdyBhcHBsaWNhdGlvbnMg dGhhdCBhcmUgdW5hd2FyZQpvZiBSaWNoQUNMcyB0byBwbGFjZSBsaW1pdHMgb24gdGhlIHBlcm1p c3Npb25zIGdyYW50ZWQgYnkgdmFyaW91cwpjbGFzc2VzIG9mIFJpY2hBQ0wgaW4gYSBtYW5uZXIg dGhhdCBjb3JyZXNwb25kcyB0byB0aGUgdHJhZGl0aW9uYWwKdXNlci9ncm91cC9vdGhlciBzZW1h bnRpY3MsIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSBBQ0wgZW50cmllcyBpbiB0aG9zZQpjbGFzc2Vz LiAgV2l0aG91dCB0aGUgZmlsZSBtYXNrcywgdGhlIG9ubHkgYWx0ZXJuYXRpdmUgd291bGQgYmUg Zm9yIHRoZQprZXJuZWwgdG8gZGlyZWN0bHkgbW9kaWZ5IHRoZSBBQ0wgZW50cmllcyBpbiB0aG9z ZSBjbGFzc2VzLiBIb3dldmVyLAp0aGlzIGxhdHRlciBhcHByb2FjaCBjb3VsZCBoYXZlIGEgImh5 c3RlcmVzaXMgZWZmZWN0Iiwgd2hlcmVieQphIFJpY2hBQ0wtdW5hd2FyZSBhcHBsaWNhdGlvbiB0 aGF0IHBlcmZvcm1zIGEgdHJhbnNpdGlvbiBmcm9tIG9uZSBmaWxlCm1vZGUgdG8gYW5vdGhlciBm aWxlIG1vZGUgYW5kIHRoZW4gYmFjayB0byB0aGUgb3JpZ2luYWwgZmlsZSBtb2RlCmNvdWxkIGNh dXNlIGRlc3RydWN0aW9uIG9mIHRoZSBwZXJtaXNzaW9uIGluZm9ybWF0aW9uIGluIEFDTCBlbnRy aWVzLgpdXQoKPiAKPiBOb3RlIHRoYXQgZW50cmllcyB3aXRoIHRoZSBpZGVudGlmaWVyCj4gLkIg ZXZlcnlvbmVACj4gYXBwbHkgdG8gYWxsIHByb2Nlc3Nlcywgd2hlcmVhcyB0aGUgXChscW90aGVy XChycSBmaWxlIHBlcm1pc3Npb25zIGFuZAo+IFwobHFvdGhlclwocnEgZW50cmllcyBpbiBQT1NJ WCBBQ0xzIGFwcGx5IHRvIGFsbCBwcm9jZXNzZXMgd2hpY2ggYXJlIG5vdCB0aGUKCkknZCBiZSBp bmNsaW5lZCB0byB1c2UgKG9yIGFkZCkgXGZCQUNMX09USEVSXGZQIGluc3RlYWQgb2YgIm90aGVy IgppbiB0aGUgcHJlY2VkaW5nIGxpbmUuICBUaGluZ3MgbWFrZXMgdGhpbmdzIElNTyBhIGxpdHRs ZSBjbGVhcmVyIHdoZW4KeW91IHRyeSB0byBkaXN0aW5ndWlzaCBmcm9tICJvdGhlciIgZmlsZSBw ZXJtaXNzaW9ucy4KCj4gb3duZXIsIGFyZSBub3QgaW4gdGhlIG93bmluZyBncm91cCwgYW5kIGRv IG5vdCBtYXRjaCBhIHVzZXIgb3IgZ3JvdXAgbWVudGlvbmVkCj4gaW4gdGhlIEFDTC4KPiAKPiBV bmxpa2UgUE9TSVggQUNMcywgUmljaEFDTHMgZG8gbm90IGhhdmUgc2VwYXJhdGUgXChscWFjY2Vz c1wocnEgQUNMcyB0aGF0Cj4gZGVmaW5lIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgYW5kIFwobHFk ZWZhdWx0XChycSBBQ0xzIHRoYXQgZGVmaW5lIHRoZQo+IGluaGVyaXRhYmxlIHBlcm1pc3Npb25z LiAgSW5zdGVhZCwgZmxhZ3Mgb24gZWFjaCBBQ0wgZW50cnkgZGV0ZXJtaW5lIHdoZXRoZXIKPiB0 aGUgZW50cnkgaXMgZWZmZWN0aXZlIGR1cmluZyBhY2Nlc3MgY2hlY2tzIGFuZC9vciBpbmhlcml0 YWJsZS4KPiAKPiAKPiAuU1MgQUNMIGZsYWdzCj4gCj4gVGhlIGZvbGxvd2luZyBmbGFncyBvbiBB Q0xzIGFyZSBkZWZpbmVkOgoKcy9mbGFncyBvbiBBQ0xzL0FDTCBmbGFncy8KCj4gCj4gLlRQCj4g LkJSIG1hc2tlZCAiXCAoIiBtICkKPiBXaGVuIHNldCwgdGhlIGZpbGUgbWFza3MgZGVmaW5lIHVw cGVyIGxpbWl0cyBvbiB0aGUgcGVybWlzc2lvbnMgdGhlIEFDTCBtYXkKPiBncmFudC4gIFdoZW4g bm90IHNldCwgdGhlIGZpbGUgbWFza3MgYXJlIGlnbm9yZWQuCj4gLlRQCj4gLkJSIHdyaXRlX3Ro cm91Z2ggIlwgKCIgdyApCj4gV2hlbiB0aGlzIGZsYWcgYW5kIHRoZQo+IC5CIG1hc2tlZAo+IGZs YWcgYXJlIGJvdGggc2V0LCB0aGUgb3duZXIgYW5kIG90aGVyIGZpbGUgbWFza3MgZGVmaW5lIHRo ZSBhY3R1YWwgcGVybWlzc2lvbnMKPiBncmFudGVkIHRvIHRoZSBmaWxlIG93bmVyIGFuZCB0byBv dGhlcnMgaW5zdGVhZCBvZiBkZWZpbmluZyBhbiB1cHBlciBsaW1pdC4KPiBXaGVuIHRoZQo+IC5C IG1hc2tlZAo+IGZsYWcgaXMgbm90IHNldCwgdGhlIHdyaXRlX3Rocm91Z2ggZmxhZyBoYXMgbm8g ZWZmZWN0LgoKVXNlIC5CUiB3cml0ZV90aHJvdWdoIGZvciBwcmVjZWRpbmcgbGluZQoKPiAuVFAK PiAuQlIgYXV0b19pbmhlcml0ICJcICgiIGEgKQo+IEF1dG9tYXRpYyBJbmhlcml0YW5jZSBpcyBl bmFibGVkLiAgU2VlCj4gLklSICJBdXRvbWF0aWMgSW5oZXJpdGFuY2UiIC4KPiAuVFAKPiAuQlIg cHJvdGVjdGVkICJcICgiIHAgKQo+IFRoZSBBQ0wgaXMgcHJvdGVjdGVkIGZyb20gbW9kaWZpY2F0 aW9uIGJ5IEF1dG9tYXRpYwo+IEluaGVyaXRhbmNlLgo+IC5UUAo+IC5CUiBkZWZhdWx0ZWQgIlwg KCIgZCApCj4gSW5kaWNhdGVzIHRoYXQgdGhlIEFDTCBoYXMgYmVlbiBhc3NpZ25lZCBpbiBhbiBh cHBsaWNhdGlvbi1kZXBlbmRlbnQgd2F5IHdoZW4KPiB0aGUgZmlsZSBvciBkaXJlY3Rvcnkgd2Fz IGNyZWF0ZWQ7IGl0IGhhcyBuZWl0aGVyIGJlZW4gaW5oZXJpdGVkIG5vciBzZXQKPiBleHBsaWNp dGx5LiBBQ0xzIG9mIGZpbGVzIGNyZWF0ZWQgb24gTGludXggd2lsbCBuZXZlciBoYXZlIHRoZQo+ IC5CIGRlZmF1bHRlZAo+IGZsYWcgc2V0LiAKClRoZSBwcmVjZWRpbmcgc2VudGVuY2UgaW1tZWRp YXRlbHkgdHJpZ2dlcnMgYW4gb2J2aW91cyBxdWVzdGlvbiBmb3IgdGhlCnJlYWRlci4gIFNvLCBk byB3ZSBuZWVkIGEgc2VudGVuY2UgaGVyZSB0byBzYXkgd2hlbi93aGVyZSB0aGUgImRlZmF1bHRl ZCIKZmxhZyBpcyBzZXQ/Cj4gICAgICAgICAgIFdoZW4gdGhpcyBmbGFnIGlzIHNldCBmb3IgYW4g QUNMLCBBdXRvbWF0aWMgSW5oZXJpdGFuY2Ugd2lsbAo+IGNvbXBsZXRlbHkgcmVwbGFjZSB0aGUg QUNMLgo+IAo+IC5TUyBBQ0wgZW50cnkgZmxhZ3MKPiAKPiBUaGUgZm9sbG93aW5nIGZsYWdzIG9u IEFDTCBlbnRyaWVzIGFyZSBkZWZpbmVkOgo+IAo+IC5UUAo+IC5CUiBmaWxlX2luaGVyaXQgIlwg KCIgZiApCj4gV2hlbiB0aGlzIGZsYWcgYXBwZWFycyBpbiB0aGUgQUNMIGVudHJ5IG9mIGEgZGly ZWN0b3J5LCB0aGVuOgo+IC5SUwo+IC5JUCBcKGJ1IDQKPiBUaGF0IGVudHJ5IGlzIGluaGVyaXRl ZCBieSBuZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGUgZGlyZWN0b3J5IHN1Y2ggdGhhdCB0aGUKCnMv NC8yLwoKPiBwZXJtaXNzaW9ucyBvZiB0aGUgZW50cnkgYXBwbHkgdG8gdGhlIGZpbGUgKHRoZSBp bmhlcml0YW5jZSBmbGFncyBvZiB0aGUKPiBpbmhlcml0ZWQgZW50cnkgYXJlIGNsZWFyZWQpLgo+ IC5JUCBcKGJ1IDQKPiBUaGUgZW50cnkgaXMgaXMgaW5oZXJpdGVkIGJ5IG5ldyBzdWJkaXJlY3Rv cmllcyBjcmVhdGVkIGluIHRoZSBkaXJlY3Rvcnkgc3VjaAoKcy8gNC8vCgo+IHRoYXQgdGhlIHBl cm1pc3Npb25zIG9mIHRoZSBlbnRyeSB3aWxsIGFwcGx5IHRvIG5ldyBmaWxlcyBjcmVhdGVkIGlu IHRoZQo+IHN1YmRpcmVjdG9yeS4KPiAuUkUKPiAuVFAKPiAuQlIgZGlyX2luaGVyaXQgIlwgKCIg ZCApCj4gV2hlbiB0aGlzIGZsYWcgYXBwZWFycyBpbiB0aGUgQUNMIGVudHJ5IG9mIGEgZGlyZWN0 b3J5LCB0aGVuIHRoYXQgZW50cnkgaXMKPiBpbmhlcml0ZWQgYnkgbmV3IHN1YmRpcmVjdG9yaWVz IGNyZWF0ZWQgaW4gdGhlIGRpcmVjdG9yeSBzdWNoIHRoYXQgdGhlCj4gcGVybWlzc2lvbnMgb2Yg dGhlIGVudHJ5IGFwcGx5IHRvIHRoZSBzdWJkaXJlY3RvcnkgKHRoZQo+IC5CIGluaGVyaXRfb25s eQo+IGZsYWcgaXMgY2xlYXJlZCkuCj4gLlRQCj4gLkJSIG5vX3Byb3BhZ2F0ZSAiXCAoIiBuICkK PiBJbmhlcml0YW5jZSBzdG9wcyBhdCB0aGUgbmV4dCBzdWJkaXJlY3RvcnkgbGV2ZWwuICBXaGVu IGEgZmlsZSBvciBkaXJlY3RvcnkKPiBpbmhlcml0cyBhbiBlbnRyeSB0aGF0IGhhcyB0aGlzIGZs YWcgc2V0LCB0aGUKPiAuQlIgZmlsZV9pbmhlcml0ICIsICIgZGlyX2luaGVyaXQgIiwgIiBub19w cm9wYWdhdGUgIiwgYW5kICIgaW5oZXJpdF9vbmx5Cj4gZmxhZ3MgYXJlIGNsZWFyZWQuCj4gLlRQ Cj4gLkJSIGluaGVyaXRfb25seSAiXCAoIiBpICkKPiBUaGUgZW50cnkgZGVmaW5lcyBpbmhlcml0 YWJsZSBwZXJtaXNzaW9ucyBvbmx5IGFuZCBpcyBpZ25vcmVkIGZvciBhY2Nlc3MKPiBjaGVja2lu Zy4gIFdoZW4gYSBmaWxlIG9yIGRpcmVjdG9yeSBpbmhlcml0cyBhbiBlbnRyeSB0aGF0IGhhcyB0 aGlzIGZsYWcgc2V0LAo+IHRoZSBmbGFnIGlzIGNsZWFyZWQuCj4gLlRQCj4gLkJSIGluaGVyaXRl ZCAiXCAoIiBhICkKPiBUaGUgZW50cnkgaGFzIGJlZW4gYXV0b21hdGljYWxseSBpbmhlcml0ZWQg ZnJvbSB0aGUgcGFyZW50IGRpcmVjdG9yeTsgdGhlCj4gQUNMJ3MKPiAuQiBhdXRvX2luaGVyaXQK PiBmbGFnIHNob3VsZCBiZSBvbi4KCldoeSAic2hvdWxkIGJlIiBpbiB0aGUgcHJldmlvdXMgc2Vu dGVuY2U/IEkgdGhpbmsgYSBsaXR0bGUgZXhwbGFuYXRpb24KaXMgbmVlZGVkIGhlcmUuLi4KPiAu VFAKPiAuQlIgdW5tYXBwZWQgIlwgKCIgdSApCj4gVGhlIHVzZXIgb3IgZ3JvdXAgaWRlbnRpZmll ciBpcyBhIHRleHR1YWwgc3RyaW5nIGFuZCBpcyBub3QgbWFwcGVkIHRvIGEgbnVtZXJpYwo+IHVz ZXIgb3IgZ3JvdXAgaWRlbnRpZmllci4gIEFDTHMgd2l0aCB1bm1hcHBlZCBpZGVudGlmaWVycyBj YW4gb2NjdXIgb24gTkZTdjQKPiBtb3VudGVkIGZpbGVzeXN0ZW1zIHdoZW4gdGhlIGNsaWVudCBj YW5ub3QgZGV0ZXJtaW5lIG51bWVyaWMgdXNlciBvciBncm91cAo+IGlkZW50aWZpZXJzIGZvciBz b21lIG9mIHRoZSBORlN2NCB1c2VyQGRvbWFpbiBvciBncm91cEBkb21haW4gd2hvIHZhbHVlcy4g IFRoZXkKPiBjYW5ub3QgYmUgYXNzaWduZWQgdG8gbG9jYWwgZmlsZXMgb3IgZGlyZWN0b3JpZXMu Cj4gCj4gLlNTIFBlcm1pc3Npb25zCj4gCj4gVGhlIGZvbGxvd2luZyBwZXJtaXNzaW9ucyBhcmUg ZGVmaW5lZCBmb3IgUmljaEFDTCBlbnRyaWVzIGFuZCBmb3IgdGhlIHRocmVlCj4gZmlsZSBtYXNr czoKPiAKPiAuVFAKPiAuQlIgcmVhZF9kYXRhICIgLyAiIGxpc3RfZGlyZWN0b3J5ICJcICgiIHIg KQo+IEZvciBhIGZpbGU6IHJlYWQgdGhlIGRhdGEgb2YgdGhlIGZpbGUuCj4gRm9yIGEgZGlyZWN0 b3J5OiBsaXN0IHRoZSBjb250ZW50cyBvZiB0aGUgZGlyZWN0b3J5Lgo+IC5UUAo+IC5CUiB3cml0 ZV9kYXRhICIgLyAiIGFkZF9maWxlICJcICgiIHcgKQo+IEZvciBhIGZpbGU6IG1vZGlmeSB0aGUg ZGF0YSBvZiB0aGUgZmlsZTsgZG9lcyBub3QgaW5jbHVkZSBvcGVuaW5nIHRoZSBmaWxlIGluCj4g YXBwZW5kIG1vZGUuCj4gRm9yIGEgZGlyZWN0b3J5OiBhZGQgYSBuZXcgZmlsZSBpbiB0aGUgZGly ZWN0b3J5Lgo+IC5UUAo+IC5CUiBhcHBlbmRfZGF0YSAiIC8gIiBhZGRfc3ViZGlyZWN0b3J5ICJc ICgiIHAgKQo+IEZvciBhIGZpbGU6IG9wZW4gdGhlIGZpbGUgaW4gYXBwZW5kIG1vZGUuCj4gRm9y IGEgZGlyZWN0b3J5OiBjcmVhdGUgYSBzdWJkaXJlY3RvcnkgaW4gdGhlIGRpcmVjdG9yeS4KPiAu VFAKPiAuQlIgZXhlY3V0ZSAiXCAoIiB4ICkKPiBGb3IgYSBmaWxlOiBleGVjdXRlIHRoZSBmaWxl Lgo+IEZvciBhIGRpcmVjdG9yeTogdHJhdmVyc2UgLyBzZWFyY2ggdGhlIGRpcmVjdG9yeS4KCnMl dHJhdmVyc2UgLyBzZWFyY2gldHJhdmVyc2UgKHNlYXJjaCklCj4gLlRQCj4gLkJSIGRlbGV0ZV9j aGlsZCAiXCAoIiBkICkKPiBEZWxldGUgYSBmaWxlIG9yIGRpcmVjdG9yeSB3aXRoaW4gYSBkaXJl Y3RvcnkuICBUaGlzIHBlcm1pc3Npb24gaXMgbWVhbmluZ2xlc3MKPiBmb3Igbm9uLWRpcmVjdG9y aWVzLgoKPT0+ICJUaGlzIHBlcm1pc3Npb24gaXMgbWVhbnVuZ2Z1bCBvbmx5IGZvciBkaXJlY3Rv cmllcy4iCgo+IC5UUAo+IC5CUiBkZWxldGUgIlwgKCIgRCApCj4gRGVsZXRlIHRoZSBmaWxlIG9y IGRpcmVjdG9yeS4KPiAuVFAKPiAuQlIgcmVhZF9hdHRyaWJ1dGVzICJcICgiIGEgKQo+IFJlYWQg YmFzaWMgYXR0cmlidXRlcyBvZiBhIGZpbGUgb3IgZGlyZWN0b3J5IChzZWUKPiAuQlIgc3RhdCAo MikpLgo+IFRoaXMgcGVybWlzc2lvbiBpcyBkZWZpbmVkIGJ5IE5GU3Y0LiAgSXQgaXMgc3RvcmVk LCBidXQgaWdub3JlZC4gIFJlYWRpbmcgYmFzaWMKPiBhdHRyaWJ1dGVzIG9mIGZpbGVzIGFuZCBk aXJlY3RvcmllcyBpcyBhbHdheXMgYWxsb3dlZCBvbiBMaW51eC4KPiAuVFAKPiAuQlIgd3JpdGVf YXR0cmlidXRlcyAiXCAoIiBBICkKPiBDaGFuZ2UgdGhlIHRpbWVzIGFzc29jaWF0ZWQgd2l0aCBh IGZpbGUgb3IgZGlyZWN0b3J5IHRvIGFuIGFyYml0cmFyeSB2YWx1ZS4KPiBUaGlzIHBlcm1pc3Np b24gaXMgYWx3YXlzIGltcGxpY2l0bHkgZ3JhbnRlZCB0byB0aGUgZmlsZSBvd25lci4KPiAuVFAK PiAuQlIgcmVhZF9hY2wgIlwgKCIgYyApCj4gUmVhZCB0aGUgQUNMIG9mIGEgZmlsZSBvciBkaXJl Y3RvcnkuIFRoaXMgcGVybWlzc2lvbiBpcyBhbHdheXMKPiBpbXBsaWNpdGx5IGdyYW50ZWQuCgpT bywgSSB0aGluayBhIHNlbnRlbmNlIGV4cGxhaW5pbmcgd2h5ICJyZWFkX2FjbCIgZXhpc3RzIHdv dWxkIGJlCmhlbHBmdWwsIHNpbmNlIHRoZSByZWFkZXIgaXMgbGVmdCBhIGxpdHRsZSBwdXp6bGVk IGFib3V0IGl0cyBwdXJwb3NlIGlmCml0IGlzIGFsd2F5cyBpbXBsaWNpdGx5IGdyYW50ZWQuCgo+ IC5UUAo+IC5CUiB3cml0ZV9hY2wgIlwgKCIgQyApCj4gQ2hhbmdlIHRoZSBBQ0wgb3IgZmlsZSBt b2RlIG9mIGEgZmlsZSBvciBkaXJlY3RvcnkuCj4gLlRQCj4gLkJSIHdyaXRlX293bmVyICJcICgi IG8gKQo+IFRha2Ugb3duZXJzaGlwIG9mIGEgZmlsZSBvciBkaXJlY3RvcnkuICBDaGFuZ2UgdGhl IG93bmluZyBncm91cCBvZiBhIGZpbGUgb3IKPiBkaXJlY3RvcnkgdG8gYSBncm91cCBvZiB3aGlj aCB0aGUgY2FsbGluZyBwcm9jZXNzIGlzIGEgbWVtYmVyLgo+IC5UUAoKRm9ybWF0dGluZyB0d2Vh azogYWRkICIuYWQgbCIgYmVmb3JlIHRoZSBmb2xsb3dpbmcgbGluZSBhbWQgIi5hZCIgYWZ0ZXIK dGhlIGxpbmUuCgo+IC5CUiByZWFkX25hbWVkX2F0dHJzICJcICgiIFIgIiksICIgd3JpdGVfbmFt ZWRfYXR0cnMgIlwgKCIgVyAiKSwgIiBzeW5jaHJvbml6ZSAiXCAoIiBTICIpLCAiIHdyaXRlX3Jl dGVudGlvbiAiXCAoIiBlICIpLCAiIHdyaXRlX3JldGVudGlvbl9ob2xkICJcICgiIEUgKQo+IFRo ZXNlIHBlcm1pc3Npb25zIGFyZSBkZWZpbmVkIGJ5IE5GU3Y0IC8gTkZTdjQuMS4gIFRoZXkgYXJl IHN0b3JlZCwgYnV0IGlnbm9yZWQuCgpzJS8lYW5kJQoKPiAuUFAKPiBGb3IgdGhlCj4gLkJSIHIg IiwgIiB3ICIsIGFuZCAiIHAKPiBwZXJtaXNzaW9ucyB3aGljaCBoYXZlIGRpZmZlcmVudCBsb25n IGZvcm1zIGZvciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMsIHRoZQoKcy9wZXJtaXNzaW9ucy9wZXJt aXNzaW9ucywvCgo+IC5CUiBnZXRyaWNoYWNsICgxKQo+IHV0aWxpdHkgd2lsbCBvdXRwdXQgdGhl IGFwcHJvcHJpYXRlIGZvcm0ocykgZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0Lgo+IFRoZQo+IC5C UiBzZXRyaWNoYWNsICgxKQo+IHV0aWxpdHkgd2lsbCBhY2NlcHQgZWl0aGVyIGZvcm0gZm9yIGFu eSBmaWxlIHR5cGUuCj4gCj4gLlNTIFRleHQgZm9ybQo+IFRoZSBjb21tb24gdGV4dHVhbCByZXBy ZXNlbnRhdGlvbiBvZiBhIFJpY2hBQ0wgY29uc2lzdHMgb2YgdGhlIGNvbG9uLXNlcGFyYXRlZAo+ IGZpZWxkcyBvZiB0aGUgQUNMIGZsYWdzLCBmaWxlIG1hc2tzLCBhbmQgQUNMIGVudHJpZXMgaW4g dGhlIGZvbGxvd2luZwo+IGZvcm1hdDoKPiAuVFAKPiBcZkJmbGFnczpcZlJcZklhY2xfZmxhZ3Nc ZlIKPiBUaGUgQUNMIGZsYWdzLgo+IC5UUAo+IFxmQm93bmVyOlxmUlxmSXBlcm1cZlJcZkI6Om1h c2tcZlIsIFxmQmdyb3VwOlxmUlxmSXBlcm1cZlJcZkI6Om1hc2tcZlIsIFxmQm90aGVyOlxmUlxm SXBlcm1cZlJcZkI6Om1hc2tcZlIKPiBUaGUgZmlsZSBtYXNrcyBhbmQgdGhlaXIgcGVybWlzc2lv bnMuCj4gLlRQCj4gXGZJd2hvXGZSXGZCOlxmUlxmSXBlcm1cZlJcZkI6XGZSXGZJZmxhZ3NcZlJc ZkI6YWxsb3dcZlIsIFxmSXdob1xmUlxmQjpcZlJcZklwZXJtXGZSXGZCOlxmUlxmSWZsYWdzXGZS XGZCOmRlbnlcZlIKPiBGb3IgZWFjaCBBQ0wgZW50cnksIHdobyB0aGUgZW50cnkgYXBwbGllcyB0 bywgdGhlIHBlcm1pc3Npb25zIG9mIHRoZSBlbnRyeSwgdGhlCj4gZW50cnkgZmxhZ3MsIGFuZCB0 aGUgZW50cnkgdHlwZS4gVGhlIHdobyBmaWVsZCBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKCnMv d2hvL1xcZkl3aG9cXGZQLwoKPiAuUlMKPiAuSVAgXChidSA0CgpzLzQvMi8KCj4gT25lIG9mIHRo ZSBzcGVjaWFsIGlkZW50aWZpZXJzOgo+IC5CUiBvd25lckAgIiwgIiBncm91cEAgIiwgb3IgIiBl dmVyeW9uZUAgLAo+IC5JUCBcKGJ1Cj4gQQo+IC5CUiB1c2VyOiAiIG9yICIgdToKPiBwcmVmaXgg Zm9sbG93ZWQgYnkgYSB1c2VyIG5hbWUgb3IgdXNlciBJRCB0aGF0IGRlc2lnbmF0ZXMgYSBzcGVj aWZpYyB1c2VyLAo+IC5JUCBcKGJ1Cj4gQQo+IC5CUiBncm91cDogIiBvciAiIGc6Cj4gcHJlZml4 IGZvbGxvd2VkIGJ5IGEgZ3JvdXAgbmFtZSBvciBncm91cCBJRCB0aGF0IGRlc2lnbmF0ZXMgYSBz cGVjaWZpYyBncm91cC4KPiAuUkUKPiAuUFAKPiBUaGUgZW50cmllcyBhcmUgY29tbWEsIHdoaXRl c3BhY2UsIG9yIG5ld2xpbmUgc2VwYXJhdGVkLgo+IAo+IEZsYWdzIGFuZCBwZXJtaXNzaW9ucyBo YXZlIHNpbmdsZS1sZXR0ZXIgYXMgd2VsbCBhcyBsb25nIGZvcm1zLCBhcyBsaXN0ZWQgdW5kZXIK PiAuSVIgIkFDTCBmbGFncyIgLAo+IC5JUiAiQUNMIGVudHJ5IGZsYWdzIiAsCj4gYW5kCj4gLklS IFBlcm1pc3Npb25zIC4KPiBXaGVuIHRoZSBzaW5nbGUtbGV0dGVyIGZvcm1zIGFyZSB1c2VkLCB0 aGUgZmxhZ3Mgb3IgcGVybWlzc2lvbnMgYXJlCj4gY29uY2F0ZW5hdGVkLiBXaGVuIHRoZSBsb25n IGZvcm1zIGFyZSB1c2VkLCB0aGUgZmxhZ3Mgb3IgcGVybWlzc2lvbnMgYXJlCj4gc2VwYXJhdGVk IGJ5IHNsYXNoZXMuICBUbyBhbGlnbiBwZXJtaXNzaW9ucyBvciBmbGFncyB2ZXJ0aWNhbGx5LCBk YXNoZXMgY2FuIGJlCj4gdXNlZCBmb3IgcGFkZGluZy4KPiAKPiAuU1MgU2V0dGluZyBhbmQgbW9k aWZ5aW5nIGZpbGUgcGVybWlzc2lvbnMKPiBUaGUgYWNjZXNzIHBlcm1pc3Npb25zIGZvciBhIGZp bGUgY2FuIGVpdGhlciBiZSBzZXQgYnkgYXNzaWduaW5nIGFuIEFjY2Vzcwo+IENvbnRyb2wgTGlz dAo+IC5SQiAoIHNldHJpY2hhY2wgKDEpKQo+IG9yIGJ5IGNoYW5naW5nIHRoZSBmaWxlIG1vZGUg cGVybWlzc2lvbiBiaXRzCj4gLlJCICggY2htb2QgKDEpKS4KPiBJbiBhZGRpdGlvbiwgYSBmaWxl IGNhbiBpbmhlcml0IGFuIEFDTCBmcm9tIGl0cyBwYXJlbnQgZGlyZWN0b3J5IGF0IGNyZWF0aW9u Cj4gdGltZSBhcyBkZXNjcmliZWQgdW5kZXIKPiAuSVIgIlBlcm1pc3Npb25zIGF0IGZpbGUtY3Jl YXRpb24gdGltZSIgLgo+IAo+IC5TUyBBc3NpZ25pbmcgYW4gQWNjZXNzIENvbnRyb2wgTGlzdAo+ IFdoZW4gYXNzaWduaW5nIGFuIEFDTCB0byBhIGZpbGUsIHVubGVzcyBleHBsaWNpdGx5IHNwZWNp ZmllZCwgdGhlIG93bmVyLCBncm91cCwKPiBhbmQgb3RoZXIgZmlsZSBtYXNrcyB3aWxsIGJlIGNv bXB1dGVkIGZyb20gdGhlIEFDTCBlbnRyaWVzIGFzIGRlc2NyaWJlZCBpbgo+IHRoZSBzZWN0aW9u Cj4gLklSICJDb21wdXRpbmcgdGhlIG1heGltdW0gZmlsZSBtYXNrcyIgLgo+IFRoZSBvd25lciwg Z3JvdXAsIGFuZCBvdGhlciBmaWxlIG1vZGUgcGVybWlzc2lvbiBiaXRzIGFyZSB0aGVuIGVhY2gg c2V0IGZyb20KPiB0aGUgb3duZXIsIGdyb3VwLCBhbmQgb3RoZXIgZmlsZSBtYXNrIGFzIGZvbGxv d3M6Cj4gLklQIFwoYnUgNAoKcy80LzIvCgo+IElmIHRoZSBmaWxlIG1hc2sgaW5jbHVkZXMgdGhl Cj4gLkIgcgo+IHBlcm1pc3Npb24sIHRoZSByZWFkCj4gZmlsZSBtb2RlIHBlcm1pc3Npb24gYml0 IHdpbGwgYmUgc2V0Lgo+IC5JUCBcKGJ1Cj4gSWYgdGhlIGZpbGUgbWFzayBpbmNsdWRlcyB0aGUK PiAuQiB3Cj4gb3IKPiAuQiBwCj4gcGVybWlzc2lvbiwgdGhlIHdyaXRlIGZpbGUgbW9kZSBwZXJt aXNzaW9uIGJpdCB3aWxsIGJlIHNldC4KPiAuSVAgXChidQo+IElmIHRoZSBmaWxlIG1hc2sgaW5j bHVkZXMgdGhlCj4gLkIgeAo+IHBlcm1pc3Npb24sIHRoZSBleGVjdXRlIGZpbGUgbW9kZSBwZXJt aXNzaW9uIGJpdCB3aWxsIGJlIHNldC4KPiAuUFAKPiBJZiB0aGUgQUNMIGNhbiBiZSByZXByZXNl bnRlZCBleGFjdGx5IGJ5IHRoZSBmaWxlIG1vZGUKPiBwZXJtaXNzaW9uIGJpdHMsIHRoZSBmaWxl IHBlcm1pc3Npb24gYml0cyBhcmUgc2V0IHRvIG1hdGNoIHRoZSBBQ0wgYW5kIHRoZSBBQ0wKPiBp cyBub3Qgc3RvcmVkLgoKTWF5YmUgYmV0dGVyOiAiLi4uYW5kIG5vIEFDTCBpcyBzdG9yZWQiCgo+ ICAgICAgICAgICAgICAgIChXaGVuIHRoZSBBQ0wgb2YgYSBmaWxlIGlzIHJlcXVlc3RlZCB3aGlj aCBkb2Vzbid0IGhhdmUgYW4gQUNMLAo+IHRoZSBmaWxlIG1vZGUgcGVybWlzc2lvbiBiaXRzIGFy ZSBjb252ZXJ0ZWQgaW50byBhbiBlcXVpdmFsZW50IEFDTC4pCj4gCj4gLlNTIENoYW5naW5nIHRo ZSBmaWxlIG1vZGUgcGVybWlzc2lvbiBiaXRzCj4gV2hlbiBjaGFuZ2luZyB0aGUgZmlsZSBtb2Rl IHBlcm1pc3Npb24gYml0cyB3aXRoCj4gLkJSIGNobW9kICgxKSwKPiB0aGUgb3duZXIsIGdyb3Vw LCBhbmQgb3RoZXIgZmlsZSBwZXJtaXNzaW9uIGJpdHMgYXJlIHNldCB0byB0aGUgcGVybWlzc2lv biBiaXRzCj4gaW4gdGhlIG5ldyBtb2RlLCBhbmQgdGhlIG93bmVyLCBncm91cCwgYW5kIG90aGVy IGZpbGUgbWFza3MgYXJlIHNldCBiYXNlZCBvbgo+IHRoZSBuZXcgbW9kZSBiaXRzIGFzIGZvbGxv d3M6Cj4gLklQIFwoYnUgNAoKcy80LzIvCgo+IElmIHRoZSByZWFkIGJpdCBpbiBhIHNldCBvZiBw ZXJtaXNzaW9ucyBpcyBzZXQsIHRoZQo+IC5CIHIKPiBwZXJtaXNzaW9uIGluIHRoZSBjb3JyZXNw b25kaW5nIGZpbGUgbWFzayB3aWxsIGJlIHNldC4KPiAuSVAgXChidQo+IElmIHRoZSB3cml0ZSBi aXQgaW4gYSBzZXQgb2YgcGVybWlzc2lvbnMgaXMgc2V0LCB0aGUKPiAuQiB3Cj4gYW5kCj4gLkIg cAo+IHBlcm1pc3Npb25zIGluIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUgbWFzayB3aWxsIGJlIHNl dC4KPiAuSVAgXChidQo+IElmIHRoZSBleGVjdXRlIGJpdCBpbiBhIHNldCBvZiBwZXJtaXNzaW9u cyBpcyBzZXQsIHRoZQo+IC5CIHgKPiBwZXJtaXNzaW9uIGluIHRoZSBjb3JyZXNwb25kaW5nIGZp bGUgbWFzayB3aWxsIGJlIHNldC4KPiAuUFAKPiBJbiBhZGRpdGlvbiwgdGhlCj4gLkIgbWFza2Vk Cj4gYW5kCj4gLkIgd3JpdGVfdGhyb3VnaAo+IEFDTCBmbGFncyBhcmUgc2V0LiBUaGlzIGhhcyB0 aGUKPiBlZmZlY3Qgb2YgbGltaXRpbmcgdGhlIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhlIEFD TCB0byB0aGUgZmlsZSBtb2RlCj4gcGVybWlzc2lvbiBiaXRzOyBpbiBhZGRpdGlvbiwgdGhlIG93 bmVyIGlzIGdyYW50ZWQgdGhlIG93bmVyIG1vZGUgYml0cyBhbmQKPiBvdGhlcnMgYXJlIGdyYW50 ZWQgdGhlIG90aGVyIG1vZGUgYml0cy4gSWYgdGhlCj4gLkIgYXV0b19pbmhlcml0Cj4gZmxhZyBp cyBzZXQsIHRoZQo+IC5CIHByb3RlY3RlZAo+IGZsYWcgaXMgYWxzbyBzZXQgdG8gcHJldmVudCB0 aGUgQXV0b21hdGljIEluaGVyaXRhbmNlIGFsZ29yaXRobSBmcm9tIG1vZGlmeWluZwo+IHRoZSBB Q0wuCj4gCj4gLlNTIFBlcm1pc3Npb25zIGF0IGZpbGUtY3JlYXRpb24gdGltZQo+IFdoZW4gYSBk aXJlY3RvcnkgaGFzIGluaGVyaXRhYmxlIEFDTCBlbnRyaWVzLCB0aGUgZm9sbG93aW5nCgpzL2hh cy9oYXMgYW4vCgo+IGhhcHBlbnMgd2hlbiBhIGZpbGUgb3IgZGlyZWN0b3J5IGlzIGNyZWF0ZWQg aW5zaWRlIHRoYXQgZGlyZWN0b3J5Ogo+IC5SUyA0Cj4gLklQIDEuIDQKPiBBIGZpbGUgY3JlYXRl ZCBpbnNpZGUgdGhhdCBkaXJlY3Rvcnkgd2lsbCBpbmhlcml0IGFsbCBvZiB0aGUgQUNMIGVudHJp ZXMgdGhhdAo+IGhhdmUgdGhlCj4gLkIgZmlsZV9pbmhlcml0Cj4gZmxhZyBzZXQsIGFuZCBhbGwg aW5oZXJpdGFuY2UtcmVsYXRlZCBmbGFncyBpbiB0aGUgaW5oZXJpdGVkIGVudHJpZXMgZmxhZyB3 aWxsCj4gYmUgY2xlYXJlZC4KPiAKPiBBIHN1YmRpcmVjdG9yeSBjcmVhdGVkIGluc2lkZSB0aGF0 IGRpcmVjdG9yeSB3aWxsIGluaGVyaXQgYWxsIG9mIHRoZSBBQ0wKPiBlbnRyaWVzIHRoYXQgZWl0 aGVyIGhhdmUgdGhlCj4gLkIgZGlyX2luaGVyaXQKPiBmbGFnIHNldCwgb3IgdGhlCj4gLkIgZmls ZV9pbmhlcml0Cj4gZmxhZyBzZXQgYW5kIHRoZQo+IC5CIG5vX3Byb3BhZ2F0ZQo+IGZsYWcgbm90 IHNldC4gIEVudHJpZXMgd2hvc2UKPiAuQiBkaXJfaW5oZXJpdAo+IGZsYWcgaXMgc2V0IHdpbGwg aGF2ZSB0aGVpcgo+IC5CIGluaGVyaXRfb25seQo+IGZsYWcgY2xlYXJlZCwgYW5kIGVudHJpZXMg d2hvc2UKPiAuQiBkaXJfaW5oZXJpdAo+IGZsYWcgaXMgbm90IHNldCB3aWxsIGhhdmUgdGhlaXIK PiAuQiBpbmhlcml0X29ubHkKPiBmbGFnIHNldC4gIEZpbmFsbHksIGVudHJpZXMgd2hvc2UKPiAu QiBub19wcm9wYWdhdGUKPiBmbGFnIGlzIHNldCB3aWxsIGhhdmUgYWxsIGluaGVyaXRhbmNlLXJl bGF0ZWQgZmxhZ3MgY2xlYXJlZC4KPiAuSVAgMi4KPiBJZiB0aGUgcGFyZW50IGRpcmVjdG9yeSdz IEFDTCBoYXMgdGhlCj4gLkIgYXV0b19pbmhlcml0Cj4gZmxhZyBzZXQsIHRoZSBpbmhlcml0ZWQg QUNMIHdpbGwgaGF2ZSBpdHMKPiAuQiBhdXRvX2luaGVyaXQKPiBmbGFnIHNldCwgYW5kIGFsbCBl bnRyaWVzIHdpbGwgaGF2ZSB0aGVpcgo+IC5CIGluaGVyaXRlZAo+IGZsYWcgc2V0LiAgT3RoZXJ3 aXNlLCB0aGUKPiAuQiBhdXRvX2luaGVyaXQKPiBhbmQKPiAuQiBpbmhlcml0ZWQKPiBmbGFncyBh cmUgY2xlYXJlZC4KPiAuSVAgMy4KPiBUaGUgdGhyZWUgZmlsZSBtYXNrcyBhcmUgY29tcHV0ZWQg ZnJvbSB0aGUgaW5oZXJpdGVkIEFDTCBhcyBkZXNjcmliZWQgaW4KPiB0aGUgc2VjdGlvbgo+IC5J UiAiQ29tcHV0aW5nIHRoZSBtYXhpbXVtIGZpbGUgbWFza3MiIC4KPiAuSVAgNC4KPiBUaGUgdGhy ZWUgc2V0cyBvZiBwZXJtaXNzaW9ucyBmb3IgdGhlIG93bmVyLCB0aGUgZ3JvdXAsIGFuZCBmb3Ig b3RoZXJzIGluCj4gdGhlIFxmSW1vZGVcZlIgcGFyYW1ldGVyIGFzIGdpdmVuIHRvCj4gLkJSIG9w ZW4gKDIpLAo+IC5CUiBta2RpciAoMiksCj4gYW5kIHNpbWlsYXIgYXJlIGNvbnZlcnRlZCBpbnRv IHNldHMgb2YgUmljaEFDTCBwZXJtaXNzaW9ucy4gVGhlIGNvcnJlc3BvbmRlbmNlCj4gYmV0d2Vl biBtYXNrIGZsYWdzIGFuZCBSaWNoQUNMIHBlcm1pc3Npb24gYml0cyBpcyBkZXNjcmliZWQgaW4g dGhlIHNlY3Rpb24KPiAuSVIgIkNoYW5naW5nIHRoZSBmaWxlIG1vZGUgcGVybWlzc2lvbiBiaXRz IiAuCj4gQW55IFJpY2hBQ0wgcGVybWlzc2lvbnMgbm90IGluY2x1ZGVkIGluIHRob3NlIHNldHMg YXJlCj4gcmVtb3ZlZCBmcm9tIHRoZSBvd25lciwgZ3JvdXAsIGFuZCBvdGhlciBmaWxlIG1hc2tz LiBUaGUgZmlsZSBtb2RlIHBlcm1pc3Npb24KPiBiaXRzIGFyZSB0aGVuIGNvbXB1dGVkIGZyb20g dGhlIGZpbGUgbWFza3MgYXMgZGVzY3JpYmVkIGluIHRoZSBzZWN0aW9uCj4gLklSICJBc3NpZ25p bmcgYW4gQWNjZXNzIENvbnRyb2wgTGlzdCIgLgo+IFRoZSBwcm9jZXNzIHVtYXNrIChzZWUKPiAu QlIgdW1hc2sgKDIpKQo+IGlzIGlnbm9yZWQuCj4gLklQIDUuCj4gVGhlCj4gLkIgbWFza2VkCj4g QUNMIGZsYWcgaXMgc2V0LiBUaGUKPiAuQiB3cml0ZV90aHJvdWdoCj4gQUNMIGZsYWcgcmVtYWlu cyBjbGVhcmVkLiBJbiBhZGRpdGlvbiwgaWYgdGhlCj4gLkIgYXV0b19pbmhlcml0Cj4gZmxhZyBv ZiB0aGUgaW5oZXJpdGVkIEFDTCBpcyBzZXQsIHRoZQo+IC5CIHByb3RlY3RlZAo+IGZsYWcgaXMg YWxzbyBzZXQgdG8gcHJldmVudCB0aGUgQXV0b21hdGljIEluaGVyaXRhbmNlIGFsZ29yaXRobSBm cm9tIG1vZGlmeWluZwo+IHRoZSBBQ0wuCj4gLlJFCj4gLlBQCj4gV2hlbiBhIGRpcmVjdG9yeSBk b2VzIG5vdCBoYXZlIGluaGVyaXRhYmxlIEFDTCBlbnRyaWVzLCBmaWxlcyBhbmQgZGlyZWN0b3Jp ZXMKPiBjcmVhdGVkIGluc2lkZSB0aGF0IGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBhc3NpZ25lZCBB Y2Nlc3MgQ29udHJvbCBMaXN0cyBhbmQgdGhlCj4gZmlsZSBtb2RlIHBlcm1pc3Npb24gYml0cyB3 aWxsIGJlIHNldCB0byAoXGZJbW9kZVxmUlwgJlwgflxmSXVtYXNrXGZSKSB3aGVyZQo+IFxmSW1v ZGVcZlIgaXMgdGhlIG1vZGUgYXJndW1lbnQgb2YgdGhlIHJlbGV2YW50IHN5c3RlbSBjYWxsIGFu ZCBcZkl1bWFza1xmUiBpcwo+IHRoZSBwcm9jZXNzIHVtYXNrIChzZWUKPiAuQlIgdW1hc2sgKDIp KS4KPiAKPiAuU1MgQXV0b21hdGljIEluaGVyaXRhbmNlCj4gQXV0b21hdGljIEluaGVyaXRhbmNl IGlzIGEgbWVjaGFuaXNtIHRoYXQgYWxsb3dzIHBlcm1pc3Npb24gY2hhbmdlcyB0bwo+IHByb3Bh Z2F0ZSBmcm9tIGEgZGlyZWN0b3J5IHRvIGZpbGVzIGFuZCBzdWJkaXJlY3RvcmllcyBpbnNpZGUg dGhhdCBkaXJlY3RvcnksCj4gcmVjdXJzaXZlbHkuICBQcm9wYWdhdGlvbiBpcyBjYXJyaWVkIG91 dCBieSB0aGUgcHJvY2VzcyBjaGFuZ2luZyB0aGUgZGlyZWN0b3J5Cj4gcGVybWlzc2lvbnMgKHVz dWFsbHksCj4gLkJSIHNldHJpY2hhY2wgKDEpKTsKPiBpdCBoYXBwZW5zIHdpdGhvdXQgdXNlciBp bnRlcnZlbnRpb24gYWxiZWl0IG5vdCBlbnRpcmVseSBhdXRvbWF0aWNhbGx5Lgo+IAo+IEEgc2ln bmlmaWNhbnQgbGltaXRhdGlvbiBpcyB0aGF0IHRoaXMgbWVjaGFuaXNtIHdvcmtzIG9ubHkgYXMg bG9uZyBhcyBmaWxlcwo+IGFyZSBjcmVhdGVkIHdpdGhvdXQgZXhwbGljaXRseSBzcGVjaWZ5aW5n IHRoZSBmaWxlIHBlcm1pc3Npb25zIHRvIHVzZS4gVGhlCj4gc3RhbmRhcmQgc3lzdGVtIGNhbGxz IGZvciBjcmVhdGluZyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMKPiAuUkIgKCBjcmVhdCAoMiksCj4g LkJSIG9wZW4gKDIpLAo+IC5CUiBta2RpciAoMiksCj4gLkJSIG1rbm9kICgyKSkKPiBhbGwgaGF2 ZSBtYW5kYXRvcnkgbW9kZSBwYXJhbWV0ZXJzIHdoaWNoIGRlZmluZSB0aGUgbWF4aW11bSBhbGxv d2VkIHBlcm1pc3Npb25zCj4gb2YgdGhlIG5ldyBmaWxlcy4gVG8gdGFrZSBhY2NvdW50IG9mIHRo aXMgcmVzdHJpY3Rpb24sIHRoZQo+IC5CIHByb3RlY3RlZAo+IEFDTCBmbGFnIG11c3QgYmUgc2V0 IGlmIHRoZQo+IC5CIGluaGVyaXRlZAo+IGZsYWcgaXMgc2V0LiBUaGlzIGVmZmVjdGl2ZWx5IGRp c2FibGVzIEF1dG9tYXRpYyBJbmhlcml0YW5jZSBmb3IgdGhhdAo+IHBhcnRpY3VsYXIgZmlsZS4K PiAKCkFkZCB0aGUgZm9sbG93aW5nIGF0IHRoZSBzdGFydCBvZiB0aGUgbmV4dCBwYXJhZ3JhcGg6 CgoiTW90d2l0aHN0YW5kaW5nIHRoZSBhZm9yZW1lbnRpb25lZCBsaW1pdGF0aW9uLCIKPiBBdXRv bWF0aWMgSW5oZXJpdGFuY2Ugc3RpbGwgcmVtYWlucyB1c2VmdWwgZm9yIG5ldHdvcmsgcHJvdG9j b2xzIGxpa2UgTkZTdjQgYW5kCj4gU01CLCB3aGljaCBib3RoIHN1cHBvcnQgY3JlYXRpbmcgZmls ZXMgYW5kIGRpcmVjdG9yaWVzIHdpdGhvdXQgZGVmaW5pbmcgdGhlaXIKPiBwZXJtaXNzaW9uczog dGhleSBjYW4gaW1wbGVtZW50IHRob3NlIG9wZXJhdGlvbnMgYnkgdXNpbmcgdGhlIHN0YW5kYXJk IHN5c3RlbQoKcy86IHRoZXkvLiBUaGVzZSBwcm90b2NvbHMvCihUbyBhdm9pZCBhbiBleGNlc3Np dmVseSBsb25nIHNlbnRlbmNlLikKCj4gY2FsbHMgYW5kIGJ5IHRoZW4gdW5kb2luZyB0aGUgZWZm ZWN0IG9mIGFwcGx5aW5nIHRoZSBtb2RlIHBhcmFtZXRlcnMuCj4gCj4gV2hlbiB0aGUgQUNMIG9m IGEgZGlyZWN0b3J5IGlzIGNoYW5nZWQsIHRoZSBmb2xsb3dpbmcgaGFwcGVucyBmb3IgZWFjaCBl bnRyeQo+IChcKGxxY2hpbGRcKHJxKSBpbnNpZGUgdGhhdCBkaXJlY3Rvcnk6Cj4gLklQIDEuIDQK PiBJZiB0aGUgZW50cnkgaXMgYSBzeW1ibGljIGxpbmssIHNraXAgdGhlIGNoaWxkLgoKcy9zeW1i bGljL3N5bWJvbGljLwoKPiAuSVAgMi4KPiBJZiB0aGUKPiAuQiBhdXRvX2luaGVyaXQKPiBmbGFn IG9mIHRoZSBlbnRyeSdzIEFDTCBpcyBub3Qgc2V0IG9yIHRoZQo+IC5CIHByb3RlY3RlZAo+IGZs YWcgaXMgc2V0LCBza2lwIHRoZSBjaGlsZC4KPiAuSVAgMy4KPiBXaXRoIHRoZSBjaGlsZCdzIEFD TDoKPiAuUlMgNAo+IC5JUCBhKSA0Cj4gSWYgdGhlCj4gLkIgZGVmYXVsdGVkCj4gZmxhZyBpcyBz ZXQsIHJlcGxhY2UgdGhlIEFDTCB3aXRoIGFuIGVtcHR5IEFDTAo+IHdpdGggdGhlCj4gLkIgYXV0 b19pbmhlcml0Cj4gZmxhZyBzZXQuCj4gLklQIGIpCj4gRGVsZXRlIGFsbCBlbnRyaWVzIHdoaWNo IGhhdmUgdGhlCj4gLkIgaW5oZXJpdGVkCj4gZmxhZyBzZXQuCj4gLklQIGMpCj4gQXBwZW5kIGFs bCBlbnRyaWVzIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQgZGlyZWN0b3J5IGFjY29yZGluZyB0 byBzdGVwIDEgb2YKPiB0aGUgYWxnb3JpdGhtIGRlc2NyaWJlZCB1bmRlcgo+IC5JUiAiUGVybWlz c2lvbnMgYXQgZmlsZS1jcmVhdGlvbiB0aW1lIi4KPiBTZXQgdGhlCj4gLkIgaW5oZXJpdGVkCj4g ZmxhZyBvZiBlYWNoIG9mIHRoZXNlIGVudHJpZXMuCj4gLklQIGQpCj4gUmVjb21wdXRlIHRoZSBm aWxlIG1hc2tzLgo+IC5SRQo+IC5JUCA0Lgo+IElmIHRoZSBjaGlsZCBpcyBhIGRpcmVjdG9yeSwg cmVjdXJzaXZlbHkgYXBwbHkgdGhpcyBhbGdvcml0aG0uCj4gCj4gLlNTIEFjY2VzcyBjaGVjayBh bGdvcml0aG0KPiAKPiBXaGVuIGEgcHJvY2VzcyByZXF1ZXN0cyBhIHBhcnRpY3VsYXIga2luZCBv ZiBhY2Nlc3MgKGV4cHJlc3NlZCBhcyBhIHNldCBvZgo+IFJpY2hBQ0wgcGVybWlzc2lvbnMpIHRv IGEgZmlsZSwgdGhlIGZvbGxvd2luZyBhbGdvcml0aG0gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZQo+ IGFjY2VzcyBpcyBncmFudGVkIG9yIGRlbmllZDoKPiAKPiAuSVAgMS4gNAo+IElmIHRoZQo+IC5C IG1hc2tlZAo+IEFDTCBmbGFnIGlzIHNldCwgdGhlbjoKPiAuUlMgNAo+IC5JUCBhKSA0Cj4gSWYg dGhlCj4gLkIgd3JpdGVfdGhyb3VnaAo+IEFDTCBmbGFnIGlzIHNldCwgdGhlbjoKPiAuUlMgNAoK cy80LzIvCgo+IC5JUCBcKGJ1IDQKCnMvNC8yLwoKPiBJZiB0aGUgcmVxdWVzdGluZyBwcm9jZXNz IGlzIHRoZSBmaWxlIG93bmVyLCB0aGVuIGFjY2VzcyBpcyBncmFudGVkIGlmIHRoZQo+IG93bmVy IG1hc2sgaW5jbHVkZXMgdGhlIHJlcXVlc3RlZCBwZXJtaXNzaW9ucywgYW5kIGlzIG90aGVyd2lz ZSBkZW5pZWQuCj4gLklQIFwoYnUKPiBJZiB0aGUgcmVxdWVzdGluZyBwcm9jZXNzIGlzIG5vdCB0 aGUgZmlsZSBvd25lciwgaXMgbm90IGluIHRoZSBvd25pbmcgZ3JvdXAsCj4gYW5kIG5vIEFDTCBl bnRyaWVzIG90aGVyIHRoYW4KPiAuQiBldmVyeW9uZUAKPiBtYXRjaCB0aGUgcHJvY2VzcywgdGhl biBhY2Nlc3MgaXMgZ3JhbnRlZCBpZiB0aGUgb3RoZXIgbWFzayBpbmNsdWRlcyB0aGUKPiByZXF1 ZXN0ZWQgcGVybWlzc2lvbnMsIGFuZCBpcyBvdGhlcndpc2UgZGVuaWVkLgoKU28sIGluIHRoZSBh Ym92ZSBzdWJjYXNlcywgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBzZWVtIHRvIGJlIGNvdmVyZWQ6 CiAgICAgICAgKDEpICJtYXNrZWQiIEFDTCBmbGFnIGlzIHNldCBBTkQKICAgICAgICAoMikgcmVx dWVzdGluZyBwcm9jZXNzICppcyogaW4gb3duaW5nIGdyb3VwICpvciogYW4gQUNMIG90aGVyCiAg ICAgICAgICAgIHRoYW4gImV2ZXJ5b25lQCJtYXRjaGVzIHRoZSBwcm9jZXNzLgoKV2hhdCBoYXBw ZW5zIGluIHRoaXMgY2FzZT8gSSBzdXNwZWN0IHRoYXQgc29tZWhvdyB3ZSBhcmUgc3VwcG9zZWQg dG8KZmFsbCB0aHJvdWdoIHRvIHBhcnQgImIpIiBiZWxvdyAoYW5kIHBvc3NpYmx5IGludG8gY2xh dXNlICIyLiI/KSwgYnV0CnRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiB0aGUgY2xhdXNlcyBkb2Vz IG5vdCByZWZsZWN0IHRoaXMuCiAgICAgICAgCj4gLlJFCj4gLklQIGIpCj4gSWYgYW55IG9mIHRo ZSBmb2xsb3dpbmcgaXMgdHJ1ZToKPiAuUlMgNAoKcy80LzIvCgo+IC5JUCBcKGJ1IDQKCnMvNC8y LwoKPiB0aGUgcmVxdWVzdGluZyBwcm9jZXNzIGlzIHRoZSBmaWxlIG93bmVyIGFuZCB0aGUgb3du ZXIgbWFzayBkb2VzIG5vdCBpbmNsdWRlIGFsbAo+IHJlcXVlc3RlZCBwZXJtaXNzaW9ucywKPiAu SVAgXChidSA0CgpzLyA0Ly8KCj4gdGhlIHJlcXVlc3RpbmcgcHJvY2VzcyBpcyBub3QgdGhlIGZp bGUgb3duZXIgYW5kIGl0IGlzIGluIHRoZSBvd25pbmcgZ3JvdXAgb3IKPiBtYXRjaGVzIGFueSBB Q0wgZW50cmllcyBvdGhlciB0aGFuCj4gLkJSIGV2ZXJ5b25lQCAsCj4gYW5kIHRoZSBncm91cCBt YXNrIGRvZXMgbm90IGluY2x1ZGUgYWxsIHJlcXVlc3RlZCBwZXJtaXNzaW9ucywKPiAuSVAgXChi dSA0CgpzLyA0Ly8KCj4gdGhlIHJlcXVlc3RpbmcgcHJvY2VzcyBpcyBub3QgdGhlIGZpbGUgb3du ZXIsIG5vdCBpbiB0aGUgb3duaW5nIGdyb3VwLCBpdAo+IG1hdGNoZXMgbm8gQUNMIGVudHJpZXMg b3RoZXIgdGhhbgo+IC5CUiBldmVyeW9uZUAgLAo+IGFuZCB0aGUgb3RoZXIgbWFzayBkb2VzIG5v dCBpbmNsdWRlIGFsbCByZXF1ZXN0ZWQgcGVybWlzc2lvbnMsCj4gLlBQCj4gdGhlbiBhY2Nlc3Mg aXMgZGVuaWVkLgo+IC5SRQo+IC5SRQoKQXQgc29tZSBwb2ludCwgcGVyaGFwcyBpbiB0aGUgbmV4 dCBwYXJhZ3JhcGgsIEkgdGhpbmsgdGhhdCBpdCBuZWVkcyB0bwpiZSBjbGFyaWZpZWQgdGhhdCB1 bmxpa2UgUE9TSVggQUNMcywgYSBwcm9jZXNzIGNhbiBnYWluIHRoZSBwZXJtaXNzaW9ucwppdCBy ZXF1aXJlcyBieSBhY2N1bXVsYXRpbmcgdGhlbSBmcm9tIG11bHRpcGxlIFJpY2hBQ0wgZW50aWVz LiAoVGhhdCdzCmNvcnJlY3QsIGlzIGl0IG5vdD8pCgo+IC5JUCAyLgo+IFNldCB0aGUgcmVtYWlu aW5nIHBlcm1pc3Npb25zIHRvIHRoZSByZXF1ZXN0ZWQgcGVybWlzc2lvbnMuICBHbyB0aHJvdWdo IGFsbCBBQ0wKPiBlbnRyaWVzLiBGb3IgZWFjaCBlbnRyeToKClNvLCBwZXJoYXBzIHJlcGxhY2Ug dGhlIHByZWNlZGluZyB0d28gbGluZXMgd2l0aCBzb21ldGhpbmcgbGlrZToKCltbClVwb24gcmVh Y2hpbmcgdGhpcyBwb2ludCwgdGhlIGRldGVybWluYXRpb24gb2Ygd2hldGhlciBvciBub3QgYWNj ZXNzIGlzCmdyYW50ZWQgaXMgbWFkZSBieSBzY2FubmluZyBhbGwgQUNMIGVudHJpZXMgdG8gc2Vl IGlmIG9uZSBvciBtb3JlCmFwcGxpY2FibGUgZW50cmllcyB0b2dldGhlciBncmFudCBhIGN1bXVs YXRpdmUgc2V0IG9mIHBlcm1pc3Npb25zIHRoYXQKbWF0Y2hlcyB0aGUgcmVxdWVzdGVkIHBlcm1p c3Npb25zIG9yIHRoZXJlIGlzIGFuIGFwcGxpY2FibGUgZW50cnkgdGhhdApleHBsaWNpdGx5IGRl bmllcyBvbmUgb3IgbW9yZSBvZiB0aGUgcmVxdWVzdGVkIHBlcm1pc3Npb25zLgpUaGUgc2NhbiBv ZiBhbGwgQUNMIGVudHJpZXMgYmVnaW5zIGJ5CmZpcnN0IGluaXRpYWxpemluZyB0aGUgc2V0IG9m IHJlbWFpbmluZyBwZXJtaXNzaW9ucyAoaS5lLiwgdGhvc2UgdGhhdCBoYXZlCm5vdCB5ZXQgYmVl biBzYXRpc2ZpZWQgZHVyaW5nIHRoZSBzY2FuKSB0byBiZSB0aGUgc2V0IG9mIHJlcXVlc3RlZApw ZXJtaXNzaW9ucy4gVGhlbiB0aGUgQUNMIGVudHJpZXMgYXJlIHNjYW5uZWQKLklSICJpbiBvcmRl ciIgLAphbmQgZm9yIGVhY2ggZW50cnk6Cl1dCgo+IC5SUyA0Cj4gLklQIGEpIDQKPiBJZiB0aGUK PiAuQiBpbmhlcml0X29ubHkKPiBvcgo+IC5CIHVubWFwcGVkCj4gZmxhZ3MgYXJlIHNldCwgY29u dGludWUgd2l0aCB0aGUgbmV4dCBBQ0wgZW50cnkuCj4gLklQIGIpCj4gSWYgYW55IG9mIHRoZSBm b2xsb3dpbmcgaXMgdHJ1ZToKPiAuUlMgNAoKcy80LzIvCgo+IC5JUCBcKGJ1IDQKCnMvNC8yLwoK PiB0aGUgZW50cnkncyBpZGVudGlmaWVyIGlzCj4gLkIgb3duZXJACj4gYW5kIHRoZSByZXF1ZXN0 aW5nIHByb2Nlc3MgaXMgdGhlIGZpbGUgb3duZXIsCj4gLklQIFwoYnUKPiB0aGUgZW50cnkncyBp ZGVudGlmaWVyIGlzCj4gLkIgZ3JvdXBACj4gYW5kIHRoZSByZXF1ZXN0aW5nIHByb2Nlc3MgaXMg aW4gdGhlIG93bmluZyBncm91cCwKPiAuSVAgXChidQo+IHRoZSBlbnRyeSdzIGlkZW50aWZpZXIg aXMgYSB1c2VyIGFuZCB0aGUgcmVxdWVzdGluZyBwcm9jZXNzIGlzIG93bmVkIGJ5IHRoYXQKPiB1 c2VyLAo+IC5JUCBcKGJ1Cj4gdGhlIGVudHJ5J3MgaWRlbnRpZmllciBpcyBhIGdyb3VwIGFuZCB0 aGUgcmVxdWVzdGluZyBwcm9jZXNzIGlzIGEgbWVtYmVyIGluCj4gdGhhdCBncm91cCwKPiAuSVAg XChidQo+IHRoZSBlbnRyeSdzIGlkZW50aWZpZXIgaXMKPiAuQlIgZXZlcnlvbmVAICwKPiAuUFAK PiB0aGVuIHRoZSBlbnRyeSBtYXRjaGVzIHRoZSBwcm9jZXNzOyBwcm9jZWVkIHRvIHRoZSBuZXh0 IHN0ZXAuIE90aGVyd2lzZSwKPiBjb250aW51ZSB3aXRoIHRoZSBuZXh0IEFDTCBlbnRyeS4KPiAu UkUKPiAuSVAgYykKPiBJZiB0aGUgZW50cnkgZGVuaWVzIGFueSBvZiB0aGUgcmVtYWluaW5nIHBl cm1pc3Npb25zLCBhY2Nlc3MgaXMgZGVuaWVkLgo+IC5JUCBkKQo+IElmIHRoZSBlbnRyeSBhbGxv d3MgYW55IG9mIHRoZSByZW1haW5pbmcgcGVybWlzc2lvbnMsIHRoZW46Cj4gLlJTIDQKCnMvNC8y LwoKPiAuSVAgXChidSA0CgpzLzQvMi8KCj4gSWYgdGhlCj4gLkIgbWFza2VkCj4gQUNMIGZsYWcg aXMgc2V0IGFuZCB0aGUgZW50cnkncyBpZGVudGlmaWVyIGlzIG5vdAo+IC5CIG93bmVyQAo+IG9y Cj4gLkJSIGV2ZXJ5b25lQAo+IG9yIGlzIGEgdXNlciBlbnRyeSBtYXRjaGluZyB0aGUgZmlsZSBv d25lciwgcmVtb3ZlIGFsbCBwZXJtaXNzaW9ucyBmcm9tIHRoZQo+IHJlbWFpbmluZyBwZXJtaXNz aW9ucyB3aGljaCBhcmUgYm90aCBhbGxvd2VkIGJ5IHRoZSBlbnRyeSBhbmQgaW5jbHVkZWQgaW4g dGhlCj4gZ3JvdXAgbWFzaywKPiAuSVAgXChidQo+IE90aGVyd2lzZSwgcmVtb3ZlIGFsbCBwZXJt aXNzaW9ucyBmcm9tIHRoZSByZW1haW5pbmcgcGVybWlzc2lvbnMgd2ljaCBhcmUKCnMvd2ljaC93 aGljaCAKCj4gYWxsb3dlZCBieSB0aGUgZW50cnkuCj4gLlJFCj4gLlJFCj4gLklQIDMuCj4gSWYg dGhlcmUgYXJlIG5vIG1vcmUgcmVtYWluaW5nIHBlcm1pc3Npb25zLCBhY2Nlc3MgaXMgYWxsb3dl ZC4gT3RoZXJ3aXNlLAo+IGFjY2VzcyBpcyBkZW5pZWQuCj4gCj4gLlNTIENvbXB1dGluZyB0aGUg bWF4aW11bSBmaWxlIG1hc2tzCj4gV2hlbiBzZXR0aW5nIGFuIEFDTCBhbmQgbm8gZmlsZSBtYXNr cyBoYXZlIGJlZW4gZXhwbGljaXRseSBzcGVjaWZpZWQgYW5kIHdoZW4KPiBpbmhlcml0aW5nIGFu IEFDTCBmcm9tIHRoZSBwYXJlbnQgZGlyZWN0b3J5LCB0aGUgZm9sbG93aW5nIGFsZ29yaXRobSBp cyB1c2VkCj4gZm9yIGNvbXB1dGluZyB0aGUgZmlsZSBtYXNrczoKPiAKPiAuSVAgMS4gNAo+IENs ZWFyIHRoZSBvd25lciwgZ3JvdXAsIGFuZCBvdGhlciBmaWxlIG1hc2tzLiBSZW1lbWJlciB3aGlj aCBwZXJtaXNzaW9ucyBoYXZlCj4gYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCAoaW5pdGlhbGx5LCB0 aGUgZW1wdHkgc2V0KS4KPiAuSVAgMi4KPiBGb3IgZWFjaCBBQ0wgZW50cnk6Cj4gLlJTIDQKCnMv NC8yLwoKPiAuSVAgXChidSA0CgpzLzQvMi8KCj4gSWYgdGhlCj4gLkIgaW5oZXJpdF9vbmx5Cj4g ZmxhZyBpcyBzZXQsIHNraXAgdGhlIGVudHJ5Lgo+IC5JUCBcKGJ1IDQKCnMvIDQvLwoKPiBPdGhl cndpc2UsIGNvbXB1dGUgd2hpY2ggcGVybWlzc2lvbnMgdGhlIGVudHJ5IGFsbG93cyBvciBkZW5p ZXMgdGhhdCBoYXZlIG5vdAo+IGJlZW4gcHJvY2Vzc2VkIHlldCAodGhlIHJlbWFpbmluZyBwZXJt aXNzaW9ucykuCj4gLklQIFwoYnUKPiBJZiB0aGUgZW50cnkgaXMgYW4KPiAuQiBvd25lckAKPiBl bnRyeSwgYWRkIHRoZSByZW1haW5pbmcgcGVybWlzc2lvbnMgdG8gdGhlIG93bmVyIG1hc2sgZm9y Cj4gLkIgYWxsb3cKPiBlbnRyaWVzLCBhbmQgcmVtb3ZlIHRoZSByZW1haW5pbmcgcGVybWlzc2lv bnMgZnJvbSB0aGUgb3duZXIgbWFzayBmb3IKPiAuQiBkZW55Cj4gZW50cmllcy4KPiAuSVAgXChi dQo+IE90aGVyd2lzZSwgaWYgdGhlIGVudHJ5IGlzIGFuCj4gLkIgZXZlcnlvbmVACj4gZW50cnks IHByb2NlZWQgYXMgd2l0aAo+IC5CIG93bmVyQAo+IGVudHJpZXMgYnV0IGFkZCBvciByZW1vdmUg dGhlIHJlbWFpbmluZyBwZXJtaXNzaW9ucyBmcm9tIHRoZSBvd25lciwgZ3JvdXAsIGFuZAo+IG90 aGVyIGZpbGUgbWFza3MuCj4gLklQIFwoYnUKPiBPdGhlcndpc2UsIHByb2NlZWQgYXMgd2l0aAo+ IC5CIG93bmVyQAo+IGVudHJpZXMgYnV0IGFkZCBvciByZW1vdmUgdGhlIHJlbWFpbmluZyBwZXJt aXNzaW9ucyBmcm9tIHRoZSBvd25lciBhbmQgZ3JvdXAKPiBmaWxlIG1hc2tzLgo+IC5JUCBcKGJ1 Cj4gQWRkIHRoZSBlbnRyeSdzIHBlcm1pc3Npb25zIHRvIHRoZSBwcm9jZXNzZWQgcGVybWlzc2lv bnMuCj4gLlJFCj4gLlBQCj4gVGhlIHJlc3VsdGluZyBmaWxlIG1hc2tzIHJlcHJlc2VudCB0aGUg QUNMIGFzIGNsb3NlbHkgYXMgcG9zc2libGUuIFdpdGggdGhlc2UKPiBmaWxlIG1hc2tzLCBpZiB0 aGUKPiAuQiBtYXNrZWQKPiBBQ0wgZmxhZyBpcyBzZXQsIHRoZSBlZmZlY3RpdmUgcGVybWlzc2lv bnMgc3RpbGwgc3RheSB0aGUgc2FtZS4KClRoZSBtZWFpbmcgb2YgIndpbGwgc3RheSB0aGUgc2Ft ZSIgaXMgbm90IHF1aXRlIGNsZWFyICJ3aWxsIHN0YXkgdGhlCnNhbWUgKmFzIHdoYXQqIj8pLiBJ IHN1c3BlY3QgSSBrbm93IHdoYXQgeW91IG1lYW4sIGJ1dCBpdCBuZWVkcyB0byBiZQptYWRlIG1v cmUgb2J2aW91cy4KCj4gCj4gLlwiIC5TSCBCVUdTCj4gLlNIIEFVVEhPUgo+IFdyaXR0ZW4gYnkg QW5kcmVhcyBHcsO8bmJhY2hlciA8YWdydWVuYmFAcmVkaGF0LmNvbT4uCj4gCj4gUGxlYXNlIHNl bmQgeW91ciBidWcgcmVwb3J0cywgc3VnZ2VzdGVkIGZlYXR1cmVzIGFuZCBjb21tZW50cyB0byB0 aGUgYWJvdmUgYWRkcmVzcy4KPiAKCkknbSBnb2luZyB0byBwbGF5IHRoZSBicm9rZW4gcmVjb3Jk IDotKQoKQ291bGQgd2Ugc3RhcnQgd2l0aCBqdXN0IGEgZmV3IHNpbXBsZSBleGFtcGxlcyBhbHJl YWR5LCBhbmQgYnVpbGQgdXAKb3ZlciBmdXR1cmUgaXRlcmF0aW9ucyBvZiB0aGlzIHBhZ2U/Cgo+ IC5TSCBDT05GT1JNSU5HIFRPCj4gUmljaCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBhcmUgTGludXgt c3BlY2lmaWMuCj4gLlNIIFNFRSBBTFNPCj4gLkJSIGFjbCAoNSksCgpNb3ZlIHRoaXMgZW50cnkg dG8gdGhlIHBvaW50IFhYWCBiZWxvdy4KCj4gLkJSIGNobW9kICgxKSwKPiAuQlIgZ2V0cmljaGFj bCAoMSksCj4gLkJSIGxzICgxKSwKPiAuQlIgc2V0cmljaGFjbCAoMSkKPiAuQlIgc3RhdCAoMiks Cj4gLkJSIHVtYXNrICgyKQo+IC5cIiBsaWJyaWNoYWNsCgpYWFgKCkJ5IHRoZSB3YXksIGFyZSB0 aGVyZSBhbHJlYWR5IG1hbiBwYWdlcyBmb3IgdGhlIGxpYnJpY2hhY2wgZnVuY3Rpb25zPwoKQ2hl ZXJzLAoKTWljaGFlbAoKLS0gCk1pY2hhZWwgS2VycmlzawpMaW51eCBtYW4tcGFnZXMgbWFpbnRh aW5lcjsgaHR0cDovL3d3dy5rZXJuZWwub3JnL2RvYy9tYW4tcGFnZXMvCkxpbnV4L1VOSVggU3lz dGVtIFByb2dyYW1taW5nIFRyYWluaW5nOiBodHRwOi8vbWFuNy5vcmcvdHJhaW5pbmcvCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp4ZnMgbWFpbGluZyBs aXN0Cnhmc0Bvc3Muc2dpLmNvbQpodHRwOi8vb3NzLnNnaS5jb20vbWFpbG1hbi9saXN0aW5mby94 ZnMK