From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael Kerrisk (man-pages)" Subject: Re: RichACLs man-pages review Date: Sun, 7 Feb 2016 17:29:46 +0100 Message-ID: <56B770FA.2050107@gmail.com> References: <56B770B6.7040803@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: In-Reply-To: <56B770B6.7040803-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Sender: linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Andreas Gruenbacher Cc: mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, "J. Bruce Fields" , linux-ext4-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, xfs-VZNHf3L845pBDgjK7y7TUQ@public.gmane.org, lkml , linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Linux API , Dave Chinner , Christoph Hellwig , Anna Schumaker , Trond Myklebust , Jeff Layton , Andreas Dilger List-Id: linux-api@vger.kernel.org Hello Andreas, Here, some comments on the setrichacl(1) page. > .\" > .\" Richacl Manual Pages > .\" > .\" Copyright (C) 2015 Red Hat, Inc. > .\" Written by Andreas Gruenbacher > .\" This is free documentation; you can redistribute it and/or > .\" modify it under the terms of the GNU General Public License as > .\" published by the Free Software Foundation; either version 2 of > .\" the License, or (at your option) any later version. > .\" > .\" The GNU General Public License's references to "object code" > .\" and "executables" are to be interpreted as the output of any > .\" document formatting or typesetting system, including > .\" intermediate and printed output. > .\" > .\" This manual is distributed in the hope that it will be useful, > .\" but WITHOUT ANY WARRANTY; without even the implied warranty of > .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > .\" GNU General Public License for more details. > .\" > .\" You should have received a copy of the GNU General Public > .\" License along with this manual. If not, see > .\" . > .\" > .TH SETRICHACL 7 2015-09-01 "Linux" "Rich Access Control Lists" >=20 > .SH NAME > setrichacl \- Set Rich Access Control Lists >=20 > .SH SYNOPSIS > .B setrichacl > .RI [ OPTION "]... [" FILE ]... In man-pages, at least, the convention is to use lower case for these pieces (and thus through the remainder of the page), so: > .RI [ option "]... [" file ]... >=20 > .SH DESCRIPTION > The setrichacl utility sets or modifies Rich Access Control Lists (ri= chacls) of =2EBR setrichacl > files and directories. >=20 > The > .B \-m > and > .B \-s > options expect an ACL or parts of an ACL on the command line. The > .B \-M > and > .B \-S > options read an ACL or parts of an ACL from a file. In either case, t= he entry > format is described in section > .I TEXT FORM > of the richacl(7) manual page. The single-letter or long forms of fla= gs and Use =2EBR richachl (7) for page cross references. > permissions can be mixed arbitrarily. Multiple entries are separated = by > whitespace, newlines or commas. >=20 > Note that the order of ACL entries matters, and that changing the ord= er may > grant different permissions. >=20 > The use of > .B deny > entries is discouraged. If > .B deny > entries are used, they should be placed ahead of > .B allow > entries for improved interoperability with Windows where possible. >=20 > When the file masks are not specified, they are computed automaticall= y. >=20 > When the ACL to be set is simple enough that the traditional file per= mission > bits can express the same permissions, setrichacl instead only sets t= he file =2EBR setrichacl > permission bits. Minor differences that do not have an influence on t= he > permissions granted by the acl are not preserved. When setrichacl's s/acl/ACL/ =2EBR setrichacl 's > counterpart utility, getrichacl, is used on a file or directory that = does not =2EBR getrichacl , > have a richacl, it displays the access permissions defined by the fil= e > permission bits as a richacl. >=20 > .SS Permissions >=20 > Setting ACLs or changing the file permission bits is allowed to the f= ile owner, > to processes which have the write_acl permission, and to processes wh= ich have =2EB write_acl > the CAP_FOWNER capability. =2EB CAP_FOWNER >=20 > .SH OPTIONS > .TP > \-\-\fBmodify\fR \fIacl\fR, \fB\-m\fR \fIacl\fR > Modify the ACL of \fIFILE\fR by replacing existing entries with the e= ntries in > \fIacl\fR, and adding all new entries. When the permissions of an ent= ry are > empty, remove the entry. > .TP > \fB\-\-modify\-file\fR \fIacl_file\fR, \fB\-M\fR \fIacl_file\fR > Identical to \-\-modify, but read the ACL from \fIacl_file\fR instead= =2E If the =2EB \-\-modify > file is \(lq\-\(rq, read from standard input. > .TP > \fB\-\-set\fR \fIacl\fR, \fB\-s\fR \fIacl\fR > Set the ACL of \fIFILE\fR to \fIacl\fR. Any previous ACL is replaced. > ACL entries are separated by whitespace, newlines, or commas. > .TP > \fB\-\-set\-file\fR \fIacl_file\fR, \fB\-S\fR \fIacl_file\fR > Identical to \-\-set, but read the ACL from \fIacl_file\fR instead. I= f the =2EBR \-\-set , > file is \(lq\-\(rq, read from standard input. > .TP > \fB\-\-remove\fR, \fB\-b\fR > Remove all extended permissions and revert to the file permission bit= s only. > .TP > \fB\-\-version\fR, \fB\-v\fR > Display the version of setrichacl and exit. =2EBR setrichacl > .TP > \fB\-\-help\fR, \fB\-h\fR > Display command-line usage help text. >=20 > .\" .SH EXAMPLES Yes please! > .SH AUTHOR > Written by Andreas Gr=C3=BCnbacher . >=20 > Please send your bug reports, suggested features and comments to the = above address. >=20 > .SH CONFORMING TO > Rich Access Control Lists are Linux-specific. >=20 > .SH SEE ALSO > .BR getrichacl (1), > .BR richacl (7) Cheers, Michael --=20 Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/ From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f53.google.com ([74.125.82.53]:34810 "EHLO mail-wm0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750980AbcBGQ3y (ORCPT ); Sun, 7 Feb 2016 11:29:54 -0500 Subject: Re: RichACLs man-pages review To: Andreas Gruenbacher References: <56B770B6.7040803@gmail.com> Cc: mtk.manpages@gmail.com, "J. Bruce Fields" , linux-ext4@vger.kernel.org, xfs@oss.sgi.com, lkml , linux-fsdevel@vger.kernel.org, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org, Linux API , Dave Chinner , Christoph Hellwig , Anna Schumaker , Trond Myklebust , Jeff Layton , Andreas Dilger From: "Michael Kerrisk (man-pages)" Message-ID: <56B770FA.2050107@gmail.com> Date: Sun, 7 Feb 2016 17:29:46 +0100 MIME-Version: 1.0 In-Reply-To: <56B770B6.7040803@gmail.com> Content-Type: text/plain; charset=utf-8 Sender: linux-nfs-owner@vger.kernel.org List-ID: Hello Andreas, Here, some comments on the setrichacl(1) page. > .\" > .\" Richacl Manual Pages > .\" > .\" Copyright (C) 2015 Red Hat, Inc. > .\" Written by Andreas Gruenbacher > .\" This is free documentation; you can redistribute it and/or > .\" modify it under the terms of the GNU General Public License as > .\" published by the Free Software Foundation; either version 2 of > .\" the License, or (at your option) any later version. > .\" > .\" The GNU General Public License's references to "object code" > .\" and "executables" are to be interpreted as the output of any > .\" document formatting or typesetting system, including > .\" intermediate and printed output. > .\" > .\" This manual is distributed in the hope that it will be useful, > .\" but WITHOUT ANY WARRANTY; without even the implied warranty of > .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > .\" GNU General Public License for more details. > .\" > .\" You should have received a copy of the GNU General Public > .\" License along with this manual. If not, see > .\" . > .\" > .TH SETRICHACL 7 2015-09-01 "Linux" "Rich Access Control Lists" > > .SH NAME > setrichacl \- Set Rich Access Control Lists > > .SH SYNOPSIS > .B setrichacl > .RI [ OPTION "]... [" FILE ]... In man-pages, at least, the convention is to use lower case for these pieces (and thus through the remainder of the page), so: > .RI [ option "]... [" file ]... > > .SH DESCRIPTION > The setrichacl utility sets or modifies Rich Access Control Lists (richacls) of .BR setrichacl > files and directories. > > The > .B \-m > and > .B \-s > options expect an ACL or parts of an ACL on the command line. The > .B \-M > and > .B \-S > options read an ACL or parts of an ACL from a file. In either case, the entry > format is described in section > .I TEXT FORM > of the richacl(7) manual page. The single-letter or long forms of flags and Use .BR richachl (7) for page cross references. > permissions can be mixed arbitrarily. Multiple entries are separated by > whitespace, newlines or commas. > > Note that the order of ACL entries matters, and that changing the order may > grant different permissions. > > The use of > .B deny > entries is discouraged. If > .B deny > entries are used, they should be placed ahead of > .B allow > entries for improved interoperability with Windows where possible. > > When the file masks are not specified, they are computed automatically. > > When the ACL to be set is simple enough that the traditional file permission > bits can express the same permissions, setrichacl instead only sets the file .BR setrichacl > permission bits. Minor differences that do not have an influence on the > permissions granted by the acl are not preserved. When setrichacl's s/acl/ACL/ .BR setrichacl 's > counterpart utility, getrichacl, is used on a file or directory that does not .BR getrichacl , > have a richacl, it displays the access permissions defined by the file > permission bits as a richacl. > > .SS Permissions > > Setting ACLs or changing the file permission bits is allowed to the file owner, > to processes which have the write_acl permission, and to processes which have .B write_acl > the CAP_FOWNER capability. .B CAP_FOWNER > > .SH OPTIONS > .TP > \-\-\fBmodify\fR \fIacl\fR, \fB\-m\fR \fIacl\fR > Modify the ACL of \fIFILE\fR by replacing existing entries with the entries in > \fIacl\fR, and adding all new entries. When the permissions of an entry are > empty, remove the entry. > .TP > \fB\-\-modify\-file\fR \fIacl_file\fR, \fB\-M\fR \fIacl_file\fR > Identical to \-\-modify, but read the ACL from \fIacl_file\fR instead. If the .B \-\-modify > file is \(lq\-\(rq, read from standard input. > .TP > \fB\-\-set\fR \fIacl\fR, \fB\-s\fR \fIacl\fR > Set the ACL of \fIFILE\fR to \fIacl\fR. Any previous ACL is replaced. > ACL entries are separated by whitespace, newlines, or commas. > .TP > \fB\-\-set\-file\fR \fIacl_file\fR, \fB\-S\fR \fIacl_file\fR > Identical to \-\-set, but read the ACL from \fIacl_file\fR instead. If the .BR \-\-set , > file is \(lq\-\(rq, read from standard input. > .TP > \fB\-\-remove\fR, \fB\-b\fR > Remove all extended permissions and revert to the file permission bits only. > .TP > \fB\-\-version\fR, \fB\-v\fR > Display the version of setrichacl and exit. .BR setrichacl > .TP > \fB\-\-help\fR, \fB\-h\fR > Display command-line usage help text. > > .\" .SH EXAMPLES Yes please! > .SH AUTHOR > Written by Andreas Grünbacher . > > Please send your bug reports, suggested features and comments to the above address. > > .SH CONFORMING TO > Rich Access Control Lists are Linux-specific. > > .SH SEE ALSO > .BR getrichacl (1), > .BR richacl (7) Cheers, Michael -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/ From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 09BDF7CA2 for ; Sun, 7 Feb 2016 10:30:00 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id C39648F8033 for ; Sun, 7 Feb 2016 08:29:56 -0800 (PST) Received: from mail-wm0-f41.google.com (mail-wm0-f41.google.com [74.125.82.41]) by cuda.sgi.com with ESMTP id KGLruewFw73VDzjx (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO) for ; Sun, 07 Feb 2016 08:29:54 -0800 (PST) Received: by mail-wm0-f41.google.com with SMTP id g62so105362959wme.0 for ; Sun, 07 Feb 2016 08:29:54 -0800 (PST) Subject: Re: RichACLs man-pages review References: <56B770B6.7040803@gmail.com> From: "Michael Kerrisk (man-pages)" Message-ID: <56B770FA.2050107@gmail.com> Date: Sun, 7 Feb 2016 17:29:46 +0100 MIME-Version: 1.0 In-Reply-To: <56B770B6.7040803@gmail.com> 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@vger.kernel.org, Christoph Hellwig , Linux API , Trond Myklebust , lkml , xfs@oss.sgi.com, "J. Bruce Fields" , mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, Jeff Layton , linux-ext4@vger.kernel.org, Anna Schumaker SGVsbG8gQW5kcmVhcywKCkhlcmUsIHNvbWUgY29tbWVudHMgb24gdGhlIHNldHJpY2hhY2woMSkg cGFnZS4KCj4gLlwiCj4gLlwiIFJpY2hhY2wgTWFudWFsIFBhZ2VzCj4gLlwiCj4gLlwiIENvcHly aWdodCAoQykgMjAxNSAgUmVkIEhhdCwgSW5jLgo+IC5cIiBXcml0dGVuIGJ5IEFuZHJlYXMgR3J1 ZW5iYWNoZXIgPGFncnVlbmJhQHJlZGhhdC5jb20+Cj4gLlwiIFRoaXMgaXMgZnJlZSBkb2N1bWVu dGF0aW9uOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiAuXCIgbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKPiAuXCIg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIgb2YKPiAuXCIgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCj4gLlwiCj4gLlwiIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSdzIHJlZmVy ZW5jZXMgdG8gIm9iamVjdCBjb2RlIgo+IC5cIiBhbmQgImV4ZWN1dGFibGVzIiBhcmUgdG8gYmUg aW50ZXJwcmV0ZWQgYXMgdGhlIG91dHB1dCBvZiBhbnkKPiAuXCIgZG9jdW1lbnQgZm9ybWF0dGlu ZyBvciB0eXBlc2V0dGluZyBzeXN0ZW0sIGluY2x1ZGluZwo+IC5cIiBpbnRlcm1lZGlhdGUgYW5k IHByaW50ZWQgb3V0cHV0Lgo+IC5cIgo+IC5cIiBUaGlzIG1hbnVhbCBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+IC5cIiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+IC5cIiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Cj4gLlwiIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gLlwi Cj4gLlwiIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYwo+IC5cIiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBtYW51YWwuICBJZiBub3QsIHNl ZQo+IC5cIiA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCj4gLlwiCj4gLlRIIFNFVFJJ Q0hBQ0wgNyAyMDE1LTA5LTAxICJMaW51eCIgIlJpY2ggQWNjZXNzIENvbnRyb2wgTGlzdHMiCj4g Cj4gLlNIIE5BTUUKPiBzZXRyaWNoYWNsIFwtIFNldCBSaWNoIEFjY2VzcyBDb250cm9sIExpc3Rz Cj4gCj4gLlNIIFNZTk9QU0lTCj4gLkIgc2V0cmljaGFjbAo+IC5SSSBbIE9QVElPTiAiXS4uLiBb IiBGSUxFIF0uLi4KCkluIG1hbi1wYWdlcywgYXQgbGVhc3QsIHRoZSBjb252ZW50aW9uIGlzIHRv IHVzZSBsb3dlciBjYXNlIGZvciB0aGVzZQpwaWVjZXMgKGFuZCB0aHVzIHRocm91Z2ggdGhlIHJl bWFpbmRlciBvZiB0aGUgcGFnZSksIHNvOgoKPiAuUkkgWyBvcHRpb24gIl0uLi4gWyIgZmlsZSBd Li4uCgo+IAo+IC5TSCBERVNDUklQVElPTgo+IFRoZSBzZXRyaWNoYWNsIHV0aWxpdHkgc2V0cyBv ciBtb2RpZmllcyBSaWNoIEFjY2VzcyBDb250cm9sIExpc3RzIChyaWNoYWNscykgb2YKCi5CUiBz ZXRyaWNoYWNsCgo+IGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4KPiAKPiBUaGUKPiAuQiBcLW0KPiBh bmQKPiAuQiBcLXMKPiBvcHRpb25zIGV4cGVjdCBhbiBBQ0wgb3IgcGFydHMgb2YgYW4gQUNMIG9u IHRoZSBjb21tYW5kIGxpbmUuIFRoZQo+IC5CIFwtTQo+IGFuZAo+IC5CIFwtUwo+IG9wdGlvbnMg cmVhZCBhbiBBQ0wgb3IgcGFydHMgb2YgYW4gQUNMIGZyb20gYSBmaWxlLiBJbiBlaXRoZXIgY2Fz ZSwgdGhlIGVudHJ5Cj4gZm9ybWF0IGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uCj4gLkkgVEVYVCBG T1JNCj4gb2YgdGhlIHJpY2hhY2woNykgbWFudWFsIHBhZ2UuIFRoZSBzaW5nbGUtbGV0dGVyIG9y IGxvbmcgZm9ybXMgb2YgZmxhZ3MgYW5kCgpVc2UKLkJSIHJpY2hhY2hsICg3KQpmb3IgcGFnZSBj cm9zcyByZWZlcmVuY2VzLgoKPiBwZXJtaXNzaW9ucyBjYW4gYmUgbWl4ZWQgYXJiaXRyYXJpbHku IE11bHRpcGxlIGVudHJpZXMgYXJlIHNlcGFyYXRlZCBieQo+IHdoaXRlc3BhY2UsIG5ld2xpbmVz IG9yIGNvbW1hcy4KPiAKPiBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIEFDTCBlbnRyaWVzIG1hdHRl cnMsIGFuZCB0aGF0IGNoYW5naW5nIHRoZSBvcmRlciBtYXkKPiBncmFudCBkaWZmZXJlbnQgcGVy bWlzc2lvbnMuCj4gCj4gVGhlIHVzZSBvZgo+IC5CIGRlbnkKPiBlbnRyaWVzIGlzIGRpc2NvdXJh Z2VkLiBJZgo+IC5CIGRlbnkKPiBlbnRyaWVzIGFyZSB1c2VkLCB0aGV5IHNob3VsZCBiZSBwbGFj ZWQgYWhlYWQgb2YKPiAuQiBhbGxvdwo+IGVudHJpZXMgZm9yIGltcHJvdmVkIGludGVyb3BlcmFi aWxpdHkgd2l0aCBXaW5kb3dzIHdoZXJlIHBvc3NpYmxlLgo+IAo+IFdoZW4gdGhlIGZpbGUgbWFz a3MgYXJlIG5vdCBzcGVjaWZpZWQsIHRoZXkgYXJlIGNvbXB1dGVkIGF1dG9tYXRpY2FsbHkuCj4g Cj4gV2hlbiB0aGUgQUNMIHRvIGJlIHNldCBpcyBzaW1wbGUgZW5vdWdoIHRoYXQgdGhlIHRyYWRp dGlvbmFsIGZpbGUgcGVybWlzc2lvbgo+IGJpdHMgY2FuIGV4cHJlc3MgdGhlIHNhbWUgcGVybWlz c2lvbnMsIHNldHJpY2hhY2wgaW5zdGVhZCBvbmx5IHNldHMgdGhlIGZpbGUKCi5CUiBzZXRyaWNo YWNsCgo+IHBlcm1pc3Npb24gYml0cy4gTWlub3IgZGlmZmVyZW5jZXMgdGhhdCBkbyBub3QgaGF2 ZSBhbiBpbmZsdWVuY2Ugb24gdGhlCj4gcGVybWlzc2lvbnMgZ3JhbnRlZCBieSB0aGUgYWNsIGFy ZSBub3QgcHJlc2VydmVkLiAgV2hlbiBzZXRyaWNoYWNsJ3MKCnMvYWNsL0FDTC8KCi5CUiBzZXRy aWNoYWNsICdzCgo+IGNvdW50ZXJwYXJ0IHV0aWxpdHksIGdldHJpY2hhY2wsIGlzIHVzZWQgb24g YSBmaWxlIG9yIGRpcmVjdG9yeSB0aGF0IGRvZXMgbm90CgouQlIgZ2V0cmljaGFjbCAsCgo+IGhh dmUgYSByaWNoYWNsLCBpdCBkaXNwbGF5cyB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIGRlZmluZWQg YnkgdGhlIGZpbGUKPiBwZXJtaXNzaW9uIGJpdHMgYXMgYSByaWNoYWNsLgo+IAo+IC5TUyBQZXJt aXNzaW9ucwo+IAo+IFNldHRpbmcgQUNMcyBvciBjaGFuZ2luZyB0aGUgZmlsZSBwZXJtaXNzaW9u IGJpdHMgaXMgYWxsb3dlZCB0byB0aGUgZmlsZSBvd25lciwKPiB0byBwcm9jZXNzZXMgd2hpY2gg aGF2ZSB0aGUgd3JpdGVfYWNsIHBlcm1pc3Npb24sIGFuZCB0byBwcm9jZXNzZXMgd2hpY2ggaGF2 ZQoKLkIgd3JpdGVfYWNsCgo+IHRoZSBDQVBfRk9XTkVSIGNhcGFiaWxpdHkuCgouQiBDQVBfRk9X TkVSCgo+IAo+IC5TSCBPUFRJT05TCj4gLlRQCj4gXC1cLVxmQm1vZGlmeVxmUiBcZklhY2xcZlIs IFxmQlwtbVxmUiBcZklhY2xcZlIKPiBNb2RpZnkgdGhlIEFDTCBvZiBcZklGSUxFXGZSIGJ5IHJl cGxhY2luZyBleGlzdGluZyBlbnRyaWVzIHdpdGggdGhlIGVudHJpZXMgaW4KPiBcZklhY2xcZlIs IGFuZCBhZGRpbmcgYWxsIG5ldyBlbnRyaWVzLiBXaGVuIHRoZSBwZXJtaXNzaW9ucyBvZiBhbiBl bnRyeSBhcmUKPiBlbXB0eSwgcmVtb3ZlIHRoZSBlbnRyeS4KPiAuVFAKPiBcZkJcLVwtbW9kaWZ5 XC1maWxlXGZSIFxmSWFjbF9maWxlXGZSLCBcZkJcLU1cZlIgXGZJYWNsX2ZpbGVcZlIKPiBJZGVu dGljYWwgdG8gXC1cLW1vZGlmeSwgYnV0IHJlYWQgdGhlIEFDTCBmcm9tIFxmSWFjbF9maWxlXGZS IGluc3RlYWQuIElmIHRoZQoKLkIgXC1cLW1vZGlmeQoKPiBmaWxlIGlzIFwobHFcLVwocnEsIHJl YWQgZnJvbSBzdGFuZGFyZCBpbnB1dC4KPiAuVFAKPiBcZkJcLVwtc2V0XGZSIFxmSWFjbFxmUiwg XGZCXC1zXGZSIFxmSWFjbFxmUgo+IFNldCB0aGUgQUNMIG9mIFxmSUZJTEVcZlIgdG8gXGZJYWNs XGZSLiBBbnkgcHJldmlvdXMgQUNMIGlzIHJlcGxhY2VkLgo+IEFDTCBlbnRyaWVzIGFyZSBzZXBh cmF0ZWQgYnkgd2hpdGVzcGFjZSwgbmV3bGluZXMsIG9yIGNvbW1hcy4KPiAuVFAKPiBcZkJcLVwt c2V0XC1maWxlXGZSIFxmSWFjbF9maWxlXGZSLCBcZkJcLVNcZlIgXGZJYWNsX2ZpbGVcZlIKPiBJ ZGVudGljYWwgdG8gXC1cLXNldCwgYnV0IHJlYWQgdGhlIEFDTCBmcm9tIFxmSWFjbF9maWxlXGZS IGluc3RlYWQuIElmIHRoZQoKLkJSIFwtXC1zZXQgLAoKPiBmaWxlIGlzIFwobHFcLVwocnEsIHJl YWQgZnJvbSBzdGFuZGFyZCBpbnB1dC4KPiAuVFAKPiBcZkJcLVwtcmVtb3ZlXGZSLCBcZkJcLWJc ZlIKPiBSZW1vdmUgYWxsIGV4dGVuZGVkIHBlcm1pc3Npb25zIGFuZCByZXZlcnQgdG8gdGhlIGZp bGUgcGVybWlzc2lvbiBiaXRzIG9ubHkuCj4gLlRQCj4gXGZCXC1cLXZlcnNpb25cZlIsIFxmQlwt dlxmUgo+IERpc3BsYXkgdGhlIHZlcnNpb24gb2Ygc2V0cmljaGFjbCBhbmQgZXhpdC4KCi5CUiBz ZXRyaWNoYWNsCgo+IC5UUAo+IFxmQlwtXC1oZWxwXGZSLCBcZkJcLWhcZlIKPiBEaXNwbGF5IGNv bW1hbmQtbGluZSB1c2FnZSBoZWxwIHRleHQuCj4gCj4gLlwiIC5TSCBFWEFNUExFUwoKWWVzIHBs ZWFzZSEKCj4gLlNIIEFVVEhPUgo+IFdyaXR0ZW4gYnkgQW5kcmVhcyBHcsO8bmJhY2hlciA8YWdy dWVuYmFAcmVkaGF0LmNvbT4uCj4gCj4gUGxlYXNlIHNlbmQgeW91ciBidWcgcmVwb3J0cywgc3Vn Z2VzdGVkIGZlYXR1cmVzIGFuZCBjb21tZW50cyB0byB0aGUgYWJvdmUgYWRkcmVzcy4KPiAKPiAu U0ggQ09ORk9STUlORyBUTwo+IFJpY2ggQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlIExpbnV4LXNw ZWNpZmljLgo+IAo+IC5TSCBTRUUgQUxTTwo+IC5CUiBnZXRyaWNoYWNsICgxKSwKPiAuQlIgcmlj aGFjbCAoNykKCkNoZWVycywKCk1pY2hhZWwKCgoKLS0gCk1pY2hhZWwgS2VycmlzawpMaW51eCBt YW4tcGFnZXMgbWFpbnRhaW5lcjsgaHR0cDovL3d3dy5rZXJuZWwub3JnL2RvYy9tYW4tcGFnZXMv CkxpbnV4L1VOSVggU3lzdGVtIFByb2dyYW1taW5nIFRyYWluaW5nOiBodHRwOi8vbWFuNy5vcmcv dHJhaW5pbmcvCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwp4ZnMgbWFpbGluZyBsaXN0Cnhmc0Bvc3Muc2dpLmNvbQpodHRwOi8vb3NzLnNnaS5jb20vbWFp bG1hbi9saXN0aW5mby94ZnMK