Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v2y7d-009QcB-6z for pgsql-hackers@arkaria.postgresql.org; Sun, 28 Sep 2025 20:35:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1v2y6b-00FLUB-2H for pgsql-hackers@arkaria.postgresql.org; Sun, 28 Sep 2025 20:34:49 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v2y6a-00FLU2-IE for pgsql-hackers@lists.postgresql.org; Sun, 28 Sep 2025 20:34:49 +0000 Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v2y6Y-000axg-1r for pgsql-hackers@postgresql.org; Sun, 28 Sep 2025 20:34:48 +0000 Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-b3727611d76so515529966b.2 for ; Sun, 28 Sep 2025 13:34:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pgguru-net.20230601.gappssmtp.com; s=20230601; t=1759091680; x=1759696480; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=nj0aCayed9GCTq+gSfmEgKa3K5OexMJ3fq2l8xLIzBk=; b=q/80Q746krQnRrht5w8eRe8vRGlUVpiKJ6IElAUzV6JydyV45B2LntaSS9dlwra2pB EwaPjvdPSpZooGDLZ+QDvDsenOl7+bCcDCIgz79OG8Wm4PBbioqY/JtMLBu94XZ5F1tq uAuQ/2OmQsOUJqkGVF04f3DkKI27TJnLYDQeXQh8W5nAcoiC53igX6sRBWDZ2HYd/EWv pNgulI9McNObQmQ2D8cy5k5DEXD9JlQ0OHvUhM3iDinX/NLiM4PkQTuPqkGXs628szLn dXcBIlbsgWH7jStIdHbko/4IxFZk4R1zqEYEQoXCrQWG0crbPGHH0EvdHfVGUebcwbkm Fjiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759091680; x=1759696480; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=nj0aCayed9GCTq+gSfmEgKa3K5OexMJ3fq2l8xLIzBk=; b=JXWmNSQA35r7EmPQMqYtJUNQvefrr/PDbs28IBZOvixeBcDJGEUXzIRxOH0ffDjqNf tHajDAvjdHXV6fNIWt6sYFRqMrzcSa/z20qKe2LhhnKrRiG5MIfSjniEHlnCkfzAE8k7 QIKpAFQLctCz9k3uKyLcv+ZO8UPY94eWcuDpPtcbcbKkTBtYJhBsgp8a0qXwir1bB0O0 10WAuz3HHqRPRSX7MymqZEdwv9tCOSfpAz7beAdfhPTRFdFWW3dpQhtGcsemSVLeCJG3 eqhVsXXV+F7TKBu+0vxl4Bi89Q7fcAR/+OlE4uHgpaN/r6EPVbt4lphBwGJUc3CZKQ8S ir5g== X-Forwarded-Encrypted: i=1; AJvYcCW777jGgZ+szI2GPehCkE9xc/+9Hnv1lI/0iGDFqXFcUY2hCsjsDjnbUsaNP86xqcDI6ffNwJGUk/0zc9uB@postgresql.org X-Gm-Message-State: AOJu0YwQ2o7k7yUUnsE9x2ZjP+C7i9h2JRVoBVdBm7ZGEQFHu+e4/pHl C6rSSdB63rLfhbcZxA+uRtFA6Kt5JGd8ZKW1e8YbX/OVjyzp/+SlZcmEC9IR+p91/ViQ7ZZKvT+ hg9jNIZkrp8aIQQqfKMp5D3IQ7sMiA5zPn0hDt7X+Aw== X-Gm-Gg: ASbGncuU4JXmHMw8I76VdNRYi3JztKv51SsTB3jtH6DBBxZ2juShfwwkFBIXOhagxNE HXs6vsevmsFlJ8BZHfO/kpSIsRD412dIoGFpQgxCnob4DsfUqF8x9vAdAhW1WIIxN1Wjq9/wJbl T8nVtQwWluGhEV0tsH/9fLjufqmSuhCCrL3sUiYj1MYPnoqJwoj38FHAx5m3Ru+mrVBHH73QZSh EzSKsdUex2RV4zIUa2dbfAHmOi6DCnRF3q7GZPucMOn9qvAmGTW X-Google-Smtp-Source: AGHT+IG9kSoq4idIy6HFh9lFHb43Z1VPNqcW3oUzQT7Ugq1RGkn8Xefgz5h7PTDKtpS90bPOLd3p6bfZGVHiPrCK/b8= X-Received: by 2002:a17:906:6a14:b0:b2b:62f8:e48d with SMTP id a640c23a62f3a-b34bb8f1213mr1725873266b.28.1759091679999; Sun, 28 Sep 2025 13:34:39 -0700 (PDT) MIME-Version: 1.0 References: <4D2047B0-E8D8-472B-B7E8-61206B1E6AFA@yandex-team.ru> <4083063.1758902694@sss.pgh.pa.us> <4085064.1758903815@sss.pgh.pa.us> <167505.1758988990@sss.pgh.pa.us> <702762.1759011796@sss.pgh.pa.us> In-Reply-To: From: David Christensen Date: Sun, 28 Sep 2025 15:34:28 -0500 X-Gm-Features: AS18NWBv6K9CeFbOv8QazvJHQ88C893qjLiPLkHRKZP6DZkG3nw8N1YjZfziRE0 Message-ID: Subject: Re: [PATCH] GROUP BY ALL To: Tom Lane Cc: Peter Eisentraut , Andrey Borodin , pgsql-hackers , "David G. Johnston" , Jelte Fennema-Nio Content-Type: multipart/mixed; boundary="000000000000b6f58d063fe27245" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b6f58d063fe27245 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Sep 28, 2025 at 2:18=E2=80=AFPM David Christensen wrote: > > On Sat, Sep 27, 2025 at 5:23=E2=80=AFPM Tom Lane wrot= e: > > > > Here's a v6 that's rebased up to HEAD and contains fixes for the > > semantic issues we discussed. It still lacks documentation, but > > otherwise I think it's about ready to go. > > Here is v7 with a stab at docs; fairly minimal at this point, but > touching the two areas that are likely to need adjusting. When > adjusting the docs for sql-select, I noticed that the grammar also > supports `GROUP BY ALL `, so I also added a test to > ensure that this syntax is explicitly supported. (It seems like it > works as-is without further grammar adjustments, but I was a little > worried when I first saw that fact... :D) Not sure that > aggregates.sql is still the right place for all of these bits, but it > does seem like having all things `GROUP BY ALL`-related tested in the > same place is a nice property, so leaving there for now. This time with attachment! --000000000000b6f58d063fe27245 Content-Type: application/octet-stream; name="v7-0001-Add-GROUP-BY-ALL.patch" Content-Disposition: attachment; filename="v7-0001-Add-GROUP-BY-ALL.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg45rbq90 RnJvbSA2NzgxMmJlMzQxNDhkMWUxODZmZjdhZmM5NWM5YWNkMmY1OGZhMWIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gTGFuZSA8dGdsQHNzcy5wZ2gucGEudXM+CkRhdGU6IFNh dCwgMjcgU2VwIDIwMjUgMTg6MTk6MTYgLTA0MDAKU3ViamVjdDogW1BBVENIIHY3XSBBZGQgR1JP VVAgQlkgQUxMCgpHUk9VUCBCWSBBTEwgaXMgYSBmb3JtIG9mIEdST1VQIEJZIHRoYXQgYWRkcyBh bnkgVGFyZ2V0RXhwciB0aGF0IGRvZXMKbm90IGNvbnRhaW4gYW4gYWdncmVnYXRlIG9yIHdpbmRv dyBmdW5jdGlvbiBpbnRvIHRoZSBncm91cENsYXVzZSBvZgp0aGUgcXVlcnksIG1ha2luZyBpdCBl eGFjdGx5IGVxdWl2YWxlbnQgdG8gc3BlY2lmeWluZyB0aG9zZSBzYW1lCmV4cHJlc3Npb25zIGlu IGFuIGV4cGxpY2l0IEdST1VQIEJZIGxpc3QuCgpUaGlzIGZlYXR1cmUgaXMgdXNlZnVsIGZvciBj ZXJ0YWluIGtpbmRzIG9mIGRhdGEgZXhwbG9yYXRpb24uICBJdCdzCmFscmVhZHkgcHJlc2VudCBp biBzb21lIG90aGVyIERCTVNlcywgYW5kIHRoZSBTUUwgY29tbWl0dGVlIHJlY2VudGx5CmFjY2Vw dGVkIGl0IGludG8gdGhlIHN0YW5kYXJkLCBzbyB3ZSBjYW4gYmUgcmVhc29uYWJseSBjb25maWRl bnQgaW4KdGhlIHN5bnRheCBiZWluZyBzdGFibGUuICBXZSBkbyBoYXZlIHRvIGludmVudCBwYXJ0 IG9mIHRoZSBzZW1hbnRpY3MsCmFzIHRoZSBzdGFuZGFyZCBkb2Vzbid0IGFsbG93IGZvciBleHBy ZXNzaW9ucyBpbiBHUk9VUCBCWSwgc28gdGhleQpoYXZlbid0IHNwZWNpZmllZCB3aGF0IHRvIGRv IHdpdGggd2luZG93IGZ1bmN0aW9ucy4gIFdlIGFzc3VtZSB0aGF0CnRob3NlIHNob3VsZCBiZSB0 cmVhdGVkIGxpa2UgYWdncmVnYXRlcywgaS5lLiwgbGVmdCBvdXQgb2YgdGhlCmNvbnN0cnVjdGVk IEdST1VQIEJZIGxpc3QuCgpBdXRob3I6IERhdmlkIENocmlzdGVuc2VuIDxkYXZpZEBwZ2d1cnUu bmV0PgpSZXZpZXdlZC1ieTogVG9tIExhbmUgPHRnbEBzc3MucGdoLnBhLnVzPgpEaXNjdXNzaW9u OiBodHRwczovL3Bvc3Rnci5lcy9tL0NBSE0wTlhqejBrRHd0em9lLWZuSEFxUEIxcUE4X1ZKTjBY QW1DZ1VaK2lQbnZQNUxiQUBtYWlsLmdtYWlsLmNvbQotLS0KIGRvYy9zcmMvc2dtbC9xdWVyaWVz LnNnbWwgICAgICAgICAgICAgICAgfCAgMjggKysrKysrCiBkb2Mvc3JjL3NnbWwvcmVmL3NlbGVj dC5zZ21sICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5j ICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAg ICAgICAgfCAgMTQgKysrCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMgICAgICAg IHwgIDY1ICsrKysrKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAg ICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICB8 ICAgNCArLQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NsYXVzZS5oICAgICAgICB8ICAgMSAr CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FnZ3JlZ2F0ZXMub3V0IHwgMTIyICsrKysrKysr KysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVzLnNxbCAgICAg IHwgIDU0ICsrKysrKysrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDMwMCBpbnNlcnRpb25zKCspLCA0 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9xdWVyaWVzLnNnbWwgYi9k b2Mvc3JjL3NnbWwvcXVlcmllcy5zZ21sCmluZGV4IGEzMjY5NjBmZjRkLi45YmNiMjk2MmU2ZSAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3F1ZXJpZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cXVlcmllcy5zZ21sCkBAIC0xMTUxLDYgKzExNTEsMzQgQEAgU0VMRUNUIHByb2R1Y3RfaWQsIHAu bmFtZSwgKHN1bShzLnVuaXRzKSAqIHAucHJpY2UpIEFTIHNhbGVzCiAgICAgY29sdW1uIG5hbWVz IGlzIGFsc28gYWxsb3dlZC4KICAgIDwvcGFyYT4KIAorICAgPHBhcmE+CisgICAgUG9zdGdyZVNR TCBhbHNvIHN1cHBvcnRzIHRoZSA8bGl0ZXJhbD5HUk9VUCBCWSBBTEw8L2xpdGVyYWw+IHN5bnRh eCwgd2hpY2gKKyAgICBpcyBlcXVpdmFsZW50IHRvIGV4cGxpY2l0bHkgaW5jbHVkaW5nIGFsbCBj b2x1bW5zIG9yIGV4cHJlc3Npb25zIHdoaWNoIGRvCisgICAgbm90IGNvbnRhaW4gZWl0aGVyIGFu IGFnZ3JlZ2F0ZSBmdW5jdGlvbiBvciBhIHdpbmRvdyBmdW5jdGlvbiBpbiB0aGVpcgorICAgIGV4 cHJlc3Npb24gbGlzdC4gIFRoaXMgY2FuIGdyZWF0bHkgc2ltcGxpZnkgYWQtaG9jIGV4cGxvcmF0 aW9uIG9mIGRhdGEuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBBbiBleGFtcGxlIG9m IHRoZSBlcXVpdmFsZW5jZSBpcyB0aGlzOgorPHNjcmVlbj4KKzxwcm9tcHQ+PSZndDs8L3Byb21w dD4gPHVzZXJpbnB1dD5TRUxFQ1QgYSwgYiwgYSArIGIsIHN1bShjKSBGUk9NIHRlc3QxIEdST1VQ IEJZIEFMTDs8L3VzZXJpbnB1dD4KKyBhIHwgYiB8ID9jb2x1bW4/IHwgc3VtCistLS0rLS0tKy0t LS0tLS0tLS0rLS0tLQorIDEgfCA0IHwgICAgICAgIDUgfCAgOQorIDIgfCA1IHwgICAgICAgIDcg fCAxMgorIDMgfCA2IHwgICAgICAgIDkgfCAxNQorKDMgcm93cykKKworPHByb21wdD49Jmd0Ozwv cHJvbXB0PiA8dXNlcmlucHV0PlNFTEVDVCBhLCBiLCBhICsgYiwgc3VtKGMpIEZST00gdGVzdDEg R1JPVVAgQlkgYSwgYiwgYSArIGI7PC91c2VyaW5wdXQ+CisgYSB8IGIgfCA/Y29sdW1uPyB8IHN1 bQorLS0tKy0tLSstLS0tLS0tLS0tKy0tLS0KKyAxIHwgNCB8ICAgICAgICA1IHwgIDkKKyAyIHwg NSB8ICAgICAgICA3IHwgMTIKKyAzIHwgNiB8ICAgICAgICA5IHwgMTUKKygzIHJvd3MpCis8L3Nj cmVlbj4KKyAgIDwvcGFyYT4KKwogICAgPGluZGV4dGVybT4KICAgICA8cHJpbWFyeT5IQVZJTkc8 L3ByaW1hcnk+CiAgICA8L2luZGV4dGVybT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYv c2VsZWN0LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3NlbGVjdC5zZ21sCmluZGV4IGQ3MDg5ZWFj MGJlLi5hZmE0OTA0MDM1OCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9zZWxlY3Quc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3NlbGVjdC5zZ21sCkBAIC03OTYsNyArNzk2LDcgQEAg V0hFUkUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbmRpdGlvbjwvcmVwbGFjZWFi bGU+CiAgICA8cGFyYT4KICAgICBUaGUgb3B0aW9uYWwgPGxpdGVyYWw+R1JPVVAgQlk8L2xpdGVy YWw+IGNsYXVzZSBoYXMgdGhlIGdlbmVyYWwgZm9ybQogPHN5bm9wc2lzPgotR1JPVVAgQlkgWyBB TEwgfCBESVNUSU5DVCBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ncm91cGluZ19l bGVtZW50PC9yZXBsYWNlYWJsZT4gWywgLi4uXQorR1JPVVAgQlkgeyBBTEwgfCBbIEFMTCB8IERJ U1RJTkNUIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmdyb3VwaW5nX2VsZW1lbnQ8 L3JlcGxhY2VhYmxlPiBbLCAuLi5dIH0KIDwvc3lub3BzaXM+CiAgICA8L3BhcmE+CiAKQEAgLTgx Myw2ICs4MTMsMTQgQEAgR1JPVVAgQlkgWyBBTEwgfCBESVNUSU5DVCBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5ncm91cGluZ19lbGVtZW50PC9yZXAKICAgICBpbnB1dC1jb2x1bW4g bmFtZSByYXRoZXIgdGhhbiBhbiBvdXRwdXQgY29sdW1uIG5hbWUuCiAgICA8L3BhcmE+CiAKKyAg IDxwYXJhPgorICAgIFRoZSBmb3JtIDxsaXRlcmFsPkdST1VQIEJZIEFMTDwvbGl0ZXJhbD4gd2l0 aCBubyBhZGRpdGlvbmFsCisgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmdyb3Vw aW5nX2VsZW1lbnQ8L3JlcGxhY2VhYmxlPiBlbGVtZW50cworICAgIHByb3ZpZGVkIGlzIGVxdWl2 YWxlbnQgdG8gZG9pbmcgYSA8bGl0ZXJhbD5HUk9VUCBCWTwvbGl0ZXJhbD4gb24gYWxsCisgICAg ZXhwcmVzc2lvbnMgaW4gdGhlIHRhcmdldCBsaXN0IHRoYXQgZG8gbm90IGNvbnRhaW4gZWl0aGVy IGFuIGFnZ3JlZ2F0ZSBvcgorICAgIGEgd2luZG93IGZ1bmN0aW9uLgorICAgPC9wYXJhPgorCiAg ICA8cGFyYT4KICAgICBJZiBhbnkgb2YgPGxpdGVyYWw+R1JPVVBJTkcgU0VUUzwvbGl0ZXJhbD4s IDxsaXRlcmFsPlJPTExVUDwvbGl0ZXJhbD4gb3IKICAgICA8bGl0ZXJhbD5DVUJFPC9saXRlcmFs PiBhcmUgcHJlc2VudCBhcyBncm91cGluZyBlbGVtZW50cywgdGhlbiB0aGUKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6 ZS5jCmluZGV4IDVhZWI1NGViNWY2Li4zYjM5MmIwODRhZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBA IC0xNDY3LDEyICsxNDY3LDE0IEBAIHRyYW5zZm9ybVNlbGVjdFN0bXQoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBTZWxlY3RTdG10ICpzdG10LAogCiAJcXJ5LT5ncm91cENsYXVzZSA9IHRyYW5zZm9ybUdy b3VwQ2xhdXNlKHBzdGF0ZSwKIAkJCQkJCQkJCQkJc3RtdC0+Z3JvdXBDbGF1c2UsCisJCQkJCQkJ CQkJCXN0bXQtPmdyb3VwQnlBbGwsCiAJCQkJCQkJCQkJCSZxcnktPmdyb3VwaW5nU2V0cywKIAkJ CQkJCQkJCQkJJnFyeS0+dGFyZ2V0TGlzdCwKIAkJCQkJCQkJCQkJcXJ5LT5zb3J0Q2xhdXNlLAog CQkJCQkJCQkJCQlFWFBSX0tJTkRfR1JPVVBfQlksCiAJCQkJCQkJCQkJCWZhbHNlIC8qIGFsbG93 IFNRTDkyIHJ1bGVzICovICk7CiAJcXJ5LT5ncm91cERpc3RpbmN0ID0gc3RtdC0+Z3JvdXBEaXN0 aW5jdDsKKwlxcnktPmdyb3VwQnlBbGwgPSBzdG10LT5ncm91cEJ5QWxsOwogCiAJaWYgKHN0bXQt PmRpc3RpbmN0Q2xhdXNlID09IE5JTCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA5ZmQ0OGFjYjFmOC4u ZjFkZWY2N2FjN2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMTIwLDYgKzEyMCw3IEBAIHR5cGVkZWYgc3Ry dWN0IFNlbGVjdExpbWl0CiB0eXBlZGVmIHN0cnVjdCBHcm91cENsYXVzZQogewogCWJvb2wJCWRp c3RpbmN0OworCWJvb2wJCWFsbDsKIAlMaXN0CSAgICpsaXN0OwogfSBHcm91cENsYXVzZTsKIApA QCAtMTI5OTMsNiArMTI5OTQsNyBAQCBzaW1wbGVfc2VsZWN0OgogCQkJCQluLT53aGVyZUNsYXVz ZSA9ICQ2OwogCQkJCQluLT5ncm91cENsYXVzZSA9ICgkNyktPmxpc3Q7CiAJCQkJCW4tPmdyb3Vw RGlzdGluY3QgPSAoJDcpLT5kaXN0aW5jdDsKKwkJCQkJbi0+Z3JvdXBCeUFsbCA9ICgkNyktPmFs bDsKIAkJCQkJbi0+aGF2aW5nQ2xhdXNlID0gJDg7CiAJCQkJCW4tPndpbmRvd0NsYXVzZSA9ICQ5 OwogCQkJCQkkJCA9IChOb2RlICopIG47CkBAIC0xMzAxMCw2ICsxMzAxMiw3IEBAIHNpbXBsZV9z ZWxlY3Q6CiAJCQkJCW4tPndoZXJlQ2xhdXNlID0gJDY7CiAJCQkJCW4tPmdyb3VwQ2xhdXNlID0g KCQ3KS0+bGlzdDsKIAkJCQkJbi0+Z3JvdXBEaXN0aW5jdCA9ICgkNyktPmRpc3RpbmN0OworCQkJ CQluLT5ncm91cEJ5QWxsID0gKCQ3KS0+YWxsOwogCQkJCQluLT5oYXZpbmdDbGF1c2UgPSAkODsK IAkJCQkJbi0+d2luZG93Q2xhdXNlID0gJDk7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAgLTEz NTA3LDE0ICsxMzUxMCwyNCBAQCBncm91cF9jbGF1c2U6CiAJCQkJCUdyb3VwQ2xhdXNlICpuID0g KEdyb3VwQ2xhdXNlICopIHBhbGxvYyhzaXplb2YoR3JvdXBDbGF1c2UpKTsKIAogCQkJCQluLT5k aXN0aW5jdCA9ICQzID09IFNFVF9RVUFOVElGSUVSX0RJU1RJTkNUOworCQkJCQluLT5hbGwgPSBm YWxzZTsKIAkJCQkJbi0+bGlzdCA9ICQ0OwogCQkJCQkkJCA9IG47CiAJCQkJfQorCQkJfCBHUk9V UF9QIEJZIEFMTAorCQkJCXsKKwkJCQkJR3JvdXBDbGF1c2UgKm4gPSAoR3JvdXBDbGF1c2UgKikg cGFsbG9jKHNpemVvZihHcm91cENsYXVzZSkpOworCQkJCQluLT5kaXN0aW5jdCA9IGZhbHNlOwor CQkJCQluLT5hbGwgPSB0cnVlOworCQkJCQluLT5saXN0ID0gTklMOworCQkJCQkkJCA9IG47CisJ CQkJfQogCQkJfCAvKkVNUFRZKi8KIAkJCQl7CiAJCQkJCUdyb3VwQ2xhdXNlICpuID0gKEdyb3Vw Q2xhdXNlICopIHBhbGxvYyhzaXplb2YoR3JvdXBDbGF1c2UpKTsKIAogCQkJCQluLT5kaXN0aW5j dCA9IGZhbHNlOworCQkJCQluLT5hbGwgPSBmYWxzZTsKIAkJCQkJbi0+bGlzdCA9IE5JTDsKIAkJ CQkJJCQgPSBuOwogCQkJCX0KQEAgLTE3NjE4LDYgKzE3NjMxLDcgQEAgUExwZ1NRTF9FeHByOiBv cHRfZGlzdGluY3RfY2xhdXNlIG9wdF90YXJnZXRfbGlzdAogCQkJCQluLT53aGVyZUNsYXVzZSA9 ICQ0OwogCQkJCQluLT5ncm91cENsYXVzZSA9ICgkNSktPmxpc3Q7CiAJCQkJCW4tPmdyb3VwRGlz dGluY3QgPSAoJDUpLT5kaXN0aW5jdDsKKwkJCQkJbi0+Z3JvdXBCeUFsbCA9ICgkNSktPmFsbDsK IAkJCQkJbi0+aGF2aW5nQ2xhdXNlID0gJDY7CiAJCQkJCW4tPndpbmRvd0NsYXVzZSA9ICQ3Owog CQkJCQluLT5zb3J0Q2xhdXNlID0gJDg7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfY2xhdXNlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMKaW5kZXgg OWYyMGE3MGNlMTMuLmNhMjZmNmY2MWYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfY2xhdXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jCkBA IC0yNTk4LDYgKzI1OTgsOSBAQCB0cmFuc2Zvcm1Hcm91cGluZ1NldChMaXN0ICoqZmxhdHJlc3Vs dCwKICAqIEdST1VQIEJZIGl0ZW1zIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHRhcmdldGxpc3QgKGFz IHJlc2p1bmsgY29sdW1ucykKICAqIGlmIG5vdCBhbHJlYWR5IHByZXNlbnQsIHNvIHRoZSB0YXJn ZXRsaXN0IG11c3QgYmUgcGFzc2VkIGJ5IHJlZmVyZW5jZS4KICAqCisgKiBJZiBHUk9VUCBCWSBB TEwgaXMgc3BlY2lmaWVkLCB0aGUgZ3JvdXBDbGF1c2Ugd2lsbCBiZSBpbmZlcnJlZCB0byBiZSBh bGwKKyAqIG5vbi1hZ2dyZWdhdGUsIG5vbi13aW5kb3cgZXhwcmVzc2lvbnMgaW4gdGhlIHRhcmdl dGxpc3QuCisgKgogICogVGhpcyBpcyBhbHNvIHVzZWQgZm9yIHdpbmRvdyBQQVJUSVRJT04gQlkg Y2xhdXNlcyAod2hpY2ggYWN0IGFsbW9zdCB0aGUKICAqIHNhbWUsIGJ1dCBhcmUgYWx3YXlzIGlu dGVycHJldGVkIHBlciBTUUw5OSBydWxlcykuCiAgKgpAQCAtMjYyMiw2ICsyNjI1LDcgQEAgdHJh bnNmb3JtR3JvdXBpbmdTZXQoTGlzdCAqKmZsYXRyZXN1bHQsCiAgKgogICogcHN0YXRlCQlQYXJz ZVN0YXRlCiAgKiBncm91cGxpc3QJY2xhdXNlIHRvIHRyYW5zZm9ybQorICogZ3JvdXBCeUFsbAlp cyB0aGlzIGEgR1JPVVAgQlkgQUxMIHN0YXRlbWVudD8KICAqIGdyb3VwaW5nU2V0cyByZWZlcmVu Y2UgdG8gbGlzdCB0byBjb250YWluIHRoZSBncm91cGluZyBzZXQgdHJlZQogICogdGFyZ2V0bGlz dAlyZWZlcmVuY2UgdG8gVGFyZ2V0RW50cnkgbGlzdAogICogc29ydENsYXVzZQlPUkRFUiBCWSBj bGF1c2UgKFNvcnRHcm91cENsYXVzZSBub2RlcykKQEAgLTI2MjksNyArMjYzMyw4IEBAIHRyYW5z Zm9ybUdyb3VwaW5nU2V0KExpc3QgKipmbGF0cmVzdWx0LAogICogdXNlU1FMOTkJCVNRTDk5IHJh dGhlciB0aGFuIFNRTDkyIHN5bnRheAogICovCiBMaXN0ICoKLXRyYW5zZm9ybUdyb3VwQ2xhdXNl KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqZ3JvdXBsaXN0LCBMaXN0ICoqZ3JvdXBpbmdTZXRz LAordHJhbnNmb3JtR3JvdXBDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpncm91cGxp c3QsIGJvb2wgZ3JvdXBCeUFsbCwKKwkJCQkJIExpc3QgKipncm91cGluZ1NldHMsCiAJCQkJCSBM aXN0ICoqdGFyZ2V0bGlzdCwgTGlzdCAqc29ydENsYXVzZSwKIAkJCQkJIFBhcnNlRXhwcktpbmQg ZXhwcktpbmQsIGJvb2wgdXNlU1FMOTkpCiB7CkBAIC0yNjQwLDYgKzI2NDUsNjMgQEAgdHJhbnNm b3JtR3JvdXBDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpncm91cGxpc3QsIExpc3Qg Kipncm91cGluZ1NldHMsCiAJYm9vbAkJaGFzR3JvdXBpbmdTZXRzID0gZmFsc2U7CiAJQml0bWFw c2V0ICAqc2Vlbl9sb2NhbCA9IE5VTEw7CiAKKwkvKiBIYW5kbGUgR1JPVVAgQlkgQUxMICovCisJ aWYgKGdyb3VwQnlBbGwpCisJeworCQkvKiBUaGVyZSBjYW5ub3QgaGF2ZSBiZWVuIGFueSBleHBs aWNpdCBncm91cGxpc3QgaXRlbXMgKi8KKwkJQXNzZXJ0KGdyb3VwbGlzdCA9PSBOSUwpOworCisJ CS8qIEl0ZXJhdGUgb3ZlciB0YXJnZXRzLCBhZGRpbmcgYWNjZXB0YWJsZSBvbmVzIHRvIHRoZSBy ZXN1bHQgbGlzdCAqLworCQlmb3JlYWNoX3B0cihUYXJnZXRFbnRyeSwgdGxlLCAqdGFyZ2V0bGlz dCkKKwkJeworCQkJLyogSWdub3JlIGp1bmsgVExFcyAqLworCQkJaWYgKHRsZS0+cmVzanVuaykK KwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIFRMRXMgY29udGFpbmluZyBhZ2dyZWdhdGVz IGFyZSBub3Qgb2theSB0byBhZGQgdG8gR1JPVVAgQlkKKwkJCSAqIChjb21wYXJlIGNoZWNrVGFy Z2V0bGlzdEVudHJ5U1FMOTIpLiAgQnV0IHRoZSBTUUwgc3RhbmRhcmQKKwkJCSAqIGRpcmVjdHMg dXMgdG8gc2tpcCB0aGVtLCBzbyBpdCdzIGZpbmUuCisJCQkgKi8KKwkJCWlmIChwc3RhdGUtPnBf aGFzQWdncyAmJgorCQkJCWNvbnRhaW5fYWdnc19vZl9sZXZlbCgoTm9kZSAqKSB0bGUtPmV4cHIs IDApKQorCQkJCWNvbnRpbnVlOworCisJCQkvKgorCQkJICogTGlrZXdpc2UsIFRMRXMgY29udGFp bmluZyB3aW5kb3cgZnVuY3Rpb25zIGFyZSBub3Qgb2theSB0byBhZGQKKwkJCSAqIHRvIEdST1VQ IEJZLiAgQXQgdGhpcyB3cml0aW5nLCB0aGUgU1FMIHN0YW5kYXJkIGlzIHNpbGVudCBvbgorCQkJ ICogd2hhdCB0byBkbyB3aXRoIHRoZW0sIGJ1dCBieSBhbmFsb2d5IHRvIGFnZ3JlZ2F0ZXMgd2Un bGwganVzdAorCQkJICogc2tpcCB0aGVtLgorCQkJICovCisJCQlpZiAocHN0YXRlLT5wX2hhc1dp bmRvd0Z1bmNzICYmCisJCQkJY29udGFpbl93aW5kb3dmdW5jcygoTm9kZSAqKSB0bGUtPmV4cHIp KQorCQkJCWNvbnRpbnVlOworCisJCQkvKgorCQkJICogT3RoZXJ3aXNlLCBhZGQgdGhlIFRMRSB0 byB0aGUgcmVzdWx0IHVzaW5nIGRlZmF1bHQgc29ydC9ncm91cAorCQkJICogc2VtYW50aWNzLiAg V2Ugc3BlY2lmeSB0aGUgcGFyc2UgbG9jYXRpb24gYXMgdGhlIFRMRSdzCisJCQkgKiBsb2NhdGlv biwgZGVzcGl0ZSB0aGUgY29tbWVudCBmb3IgYWRkVGFyZ2V0VG9Hcm91cExpc3QKKwkJCSAqIGRp c2NvdXJhZ2luZyB0aGF0LiAgVGhlIG9ubHkgb3RoZXIgdGhpbmcgd2UgY291bGQgcG9pbnQgdG8g aXMKKwkJCSAqIHRoZSBBTEwga2V5d29yZCwgd2hpY2ggc2VlbXMgdW5oZWxwZnVsIHdoZW4gdGhl cmUgYXJlIG11bHRpcGxlCisJCQkgKiBUTEVzLgorCQkJICovCisJCQlyZXN1bHQgPSBhZGRUYXJn ZXRUb0dyb3VwTGlzdChwc3RhdGUsIHRsZSwKKwkJCQkJCQkJCQkgIHJlc3VsdCwgKnRhcmdldGxp c3QsCisJCQkJCQkJCQkJICBleHByTG9jYXRpb24oKE5vZGUgKikgdGxlLT5leHByKSk7CisJCX0K KworCQkvKiBJZiB3ZSBmb3VuZCBhbnkgYWNjZXB0YWJsZSB0YXJnZXRzLCB3ZSdyZSBkb25lICov CisJCWlmIChyZXN1bHQgIT0gTklMKQorCQkJcmV0dXJuIHJlc3VsdDsKKworCQkvKgorCQkgKiBP dGhlcndpc2UsIHRoZSBTUUwgc3RhbmRhcmQgc2F5cyB0byB0cmVhdCBpdCBsaWtlICJHUk9VUCBC WSAoKSIuCisJCSAqIEJ1aWxkIGEgcmVwcmVzZW50YXRpb24gb2YgdGhhdCwgYW5kIGxldCB0aGUg cmVzdCBvZiB0aGlzIGZ1bmN0aW9uCisJCSAqIGhhbmRsZSBpdC4KKwkJICovCisJCWdyb3VwbGlz dCA9IGxpc3RfbWFrZTEobWFrZUdyb3VwaW5nU2V0KEdST1VQSU5HX1NFVF9FTVBUWSwgTklMLCAt MSkpOworCX0KKwogCS8qCiAJICogUmVjdXJzaXZlbHkgZmxhdHRlbiBpbXBsaWNpdCBSb3dFeHBy cy4gKFRlY2huaWNhbGx5IHRoaXMgaXMgb25seSBuZWVkZWQKIAkgKiBmb3IgR1JPVVAgQlksIHBl ciB0aGUgc3ludGF4IHJ1bGVzIGZvciBncm91cGluZyBzZXRzLCBidXQgd2UgZG8gaXQKQEAgLTI4 MTgsNiArMjg4MCw3IEBAIHRyYW5zZm9ybVdpbmRvd0RlZmluaXRpb25zKFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJCQkJCQkJCQkgIHRydWUgLyogZm9yY2UgU1FMOTkgcnVsZXMgKi8gKTsKIAkJcGFy dGl0aW9uQ2xhdXNlID0gdHJhbnNmb3JtR3JvdXBDbGF1c2UocHN0YXRlLAogCQkJCQkJCQkJCQkg ICB3aW5kZWYtPnBhcnRpdGlvbkNsYXVzZSwKKwkJCQkJCQkJCQkJICAgZmFsc2UgLyogbm90IEdS T1VQIEJZIEFMTCAqLyAsCiAJCQkJCQkJCQkJCSAgIE5VTEwsCiAJCQkJCQkJCQkJCSAgIHRhcmdl dGxpc3QsCiAJCQkJCQkJCQkJCSAgIG9yZGVyQ2xhdXNlLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jCmluZGV4IGRlZmNkYWE4YjM0Li5jNmQ4M2Q2N2I4NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYwpAQCAtNjE4Niw3ICs2MTg2LDkgQEAgZ2V0X2Jhc2ljX3NlbGVjdF9xdWVyeShRdWVy eSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAkJc2F2ZV9pbmdyb3VwYnkgPSBj b250ZXh0LT5pbkdyb3VwQnk7CiAJCWNvbnRleHQtPmluR3JvdXBCeSA9IHRydWU7CiAKLQkJaWYg KHF1ZXJ5LT5ncm91cGluZ1NldHMgPT0gTklMKQorCQlpZiAocXVlcnktPmdyb3VwQnlBbGwpCisJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkFMTCIpOworCQllbHNlIGlmIChxdWVyeS0+ Z3JvdXBpbmdTZXRzID09IE5JTCkKIAkJewogCQkJc2VwID0gIiI7CiAJCQlmb3JlYWNoKGwsIHF1 ZXJ5LT5ncm91cENsYXVzZSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBmMTcwNmRmNThmZC4u YWMwZTAyYTFkYjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTIxNCw3ICsyMTQsOCBAQCB0 eXBlZGVmIHN0cnVjdCBRdWVyeQogCUxpc3QJICAgKnJldHVybmluZ0xpc3Q7CS8qIHJldHVybi12 YWx1ZXMgbGlzdCAob2YgVGFyZ2V0RW50cnkpICovCiAKIAlMaXN0CSAgICpncm91cENsYXVzZTsJ LyogYSBsaXN0IG9mIFNvcnRHcm91cENsYXVzZSdzICovCi0JYm9vbAkJZ3JvdXBEaXN0aW5jdDsJ LyogaXMgdGhlIGdyb3VwIGJ5IGNsYXVzZSBkaXN0aW5jdD8gKi8KKwlib29sCQlncm91cERpc3Rp bmN0OwkvKiB3YXMgR1JPVVAgQlkgRElTVElOQ1QgdXNlZD8gKi8KKwlib29sCQlncm91cEJ5QWxs OwkJLyogd2FzIEdST1VQIEJZIEFMTCB1c2VkPyAqLwogCiAJTGlzdAkgICAqZ3JvdXBpbmdTZXRz OwkvKiBhIGxpc3Qgb2YgR3JvdXBpbmdTZXQncyBpZiBwcmVzZW50ICovCiAKQEAgLTIxOTIsNiAr MjE5Myw3IEBAIHR5cGVkZWYgc3RydWN0IFNlbGVjdFN0bXQKIAlOb2RlCSAgICp3aGVyZUNsYXVz ZTsJLyogV0hFUkUgcXVhbGlmaWNhdGlvbiAqLwogCUxpc3QJICAgKmdyb3VwQ2xhdXNlOwkvKiBH Uk9VUCBCWSBjbGF1c2VzICovCiAJYm9vbAkJZ3JvdXBEaXN0aW5jdDsJLyogSXMgdGhpcyBHUk9V UCBCWSBESVNUSU5DVD8gKi8KKwlib29sCQlncm91cEJ5QWxsOwkJLyogSXMgdGhpcyBHUk9VUCBC WSBBTEw/ICovCiAJTm9kZQkgICAqaGF2aW5nQ2xhdXNlOwkvKiBIQVZJTkcgY29uZGl0aW9uYWwt ZXhwcmVzc2lvbiAqLwogCUxpc3QJICAgKndpbmRvd0NsYXVzZTsJLyogV0lORE9XIHdpbmRvd19u YW1lIEFTICguLi4pLCAuLi4gKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3Bh cnNlX2NsYXVzZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NsYXVzZS5oCmluZGV4IDNl OTg5NDkyNmRlLi5lZGUzOTAzZDFkZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3Bh cnNlX2NsYXVzZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9jbGF1c2UuaApAQCAt MjYsNiArMjYsNyBAQCBleHRlcm4gTm9kZSAqdHJhbnNmb3JtTGltaXRDbGF1c2UoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBOb2RlICpjbGF1c2UsCiAJCQkJCQkJCSAgUGFyc2VFeHByS2luZCBleHByS2lu ZCwgY29uc3QgY2hhciAqY29uc3RydWN0TmFtZSwKIAkJCQkJCQkJICBMaW1pdE9wdGlvbiBsaW1p dE9wdGlvbik7CiBleHRlcm4gTGlzdCAqdHJhbnNmb3JtR3JvdXBDbGF1c2UoUGFyc2VTdGF0ZSAq cHN0YXRlLCBMaXN0ICpncm91cGxpc3QsCisJCQkJCQkJCSAgYm9vbCBncm91cEJ5QWxsLAogCQkJ CQkJCQkgIExpc3QgKipncm91cGluZ1NldHMsCiAJCQkJCQkJCSAgTGlzdCAqKnRhcmdldGxpc3Qs IExpc3QgKnNvcnRDbGF1c2UsCiAJCQkJCQkJCSAgUGFyc2VFeHByS2luZCBleHByS2luZCwgYm9v bCB1c2VTUUw5OSk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FnZ3Jl Z2F0ZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hZ2dyZWdhdGVzLm91dAppbmRl eCAxZjI0ZjZmZmQxZi4uMGQ2MzQxMjM5OWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvYWdncmVnYXRlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9h Z2dyZWdhdGVzLm91dApAQCAtMTU1Nyw2ICsxNTU3LDEyOCBAQCBkcm9wIHRhYmxlIHQyOwogZHJv cCB0YWJsZSB0MzsKIGRyb3AgdGFibGUgcF90MTsKIC0tCistLSBUZXN0IEdST1VQIEJZIEFMTAor LS0KKy0tIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGRhdGEgaGVyZSwganVzdCB0aGUgcHJvcGVy IHRyYW5zZm9ybWF0aW9uIG9mIHRoZQorLS0gR1JPVVAgQlkgY2xhdXNlLCBzbyB0ZXN0IHNvbWUg cXVlcmllcyBhbmQgdmVyaWZ5IHRoZSBFWFBMQUlOIHBsYW5zLgorLS0KK0NSRUFURSBURU1QIFRB QkxFIHQxICgKKyAgYSBpbnQsCisgIGIgaW50LAorICBjIGludAorKTsKKy0tIGJhc2ljIGV4YW1w bGUKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGIsIENPVU5UKCopIEZST00gdDEgR1JPVVAg QlkgQUxMOworICAgICAgUVVFUlkgUExBTiAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IEhhc2hBZ2dyZWdhdGUKKyAgIEdyb3VwIEtleTogYgorICAgLT4gIFNlcSBTY2FuIG9uIHQxCiso MyByb3dzKQorCistLSBtdWx0aXBsZSBjb2x1bW5zLCBub24tY29uc2VjdXRpdmUgb3JkZXIKK0VY UExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGEsIFNVTShiKSwgYiBGUk9NIHQxIEdST1VQIEJZIEFM TDsKKyAgICAgIFFVRVJZIFBMQU4gICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBIYXNo QWdncmVnYXRlCisgICBHcm91cCBLZXk6IGEsIGIKKyAgIC0+ICBTZXEgU2NhbiBvbiB0MQorKDMg cm93cykKKworLS0gbXVsdGkgY29sdW1ucywgbm8gYWdncmVnYXRlCitFWFBMQUlOIChDT1NUUyBP RkYpIFNFTEVDVCBhICsgYiBGUk9NIHQxIEdST1VQIEJZIEFMTDsKKyAgICAgIFFVRVJZIFBMQU4g ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBIYXNoQWdncmVnYXRlCisgICBHcm91cCBL ZXk6IChhICsgYikKKyAgIC0+ICBTZXEgU2NhbiBvbiB0MQorKDMgcm93cykKKworLS0gY2hlY2sg d2UgZGV0ZWN0IGEgbm9uLXRvcC1sZXZlbCBhZ2dyZWdhdGUKK0VYUExBSU4gKENPU1RTIE9GRikg U0VMRUNUIGEsIFNVTShiKSArIDQgRlJPTSB0MSBHUk9VUCBCWSBBTEw7CisgICAgICBRVUVSWSBQ TEFOICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSGFzaEFnZ3JlZ2F0ZQorICAgR3Jv dXAgS2V5OiBhCisgICAtPiAgU2VxIFNjYW4gb24gdDEKKygzIHJvd3MpCisKKy0tIGluY2x1ZGlu ZyBncm91cGVkIGNvbHVtbiBpcyBva2F5CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBhLCBT VU0oYikgKyBhIEZST00gdDEgR1JPVVAgQlkgQUxMOworICAgICAgUVVFUlkgUExBTiAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEhhc2hBZ2dyZWdhdGUKKyAgIEdyb3VwIEtleTogYQor ICAgLT4gIFNlcSBTY2FuIG9uIHQxCisoMyByb3dzKQorCistLSBpbmNsdWRpbmcgbm9uLWdyb3Vw ZWQgY29sdW1uLCBub3Qgc28gbXVjaAorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgYSwgU1VN KGIpICsgYyBGUk9NIHQxIEdST1VQIEJZIEFMTDsKK0VSUk9SOiAgY29sdW1uICJ0MS5jIiBtdXN0 IGFwcGVhciBpbiB0aGUgR1JPVVAgQlkgY2xhdXNlIG9yIGJlIHVzZWQgaW4gYW4gYWdncmVnYXRl IGZ1bmN0aW9uCitMSU5FIDE6IEVYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGEsIFNVTShiKSAr IGMgRlJPTSB0MSBHUk9VUCBCWSBBTC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCistLSBhbGwgYWdncmVnYXRlcywgc2hvdWxkIHJlZHVjZSB0byBH Uk9VUCBCWSAoKQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgQ09VTlQoYSksIFNVTShiKSBG Uk9NIHQxIEdST1VQIEJZIEFMTDsKKyAgICAgIFFVRVJZIFBMQU4gICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIEdyb3VwIEtleTogKCkKKyAgIC0+ICBTZXEgU2Nh biBvbiB0MQorKDMgcm93cykKKworLS0gbGlrZXdpc2Ugd2l0aCBlbXB0eSB0YXJnZXQgbGlzdAor RVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgRlJPTSB0MSBHUk9VUCBCWSBBTEw7CisgICAgICBR VUVSWSBQTEFOICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIFJl cGxhY2VzOiBBZ2dyZWdhdGUKKygyIHJvd3MpCisKKy0tIHdpbmRvdyBmdW5jdGlvbnMgYXJlIG5v dCB0byBiZSBpbmNsdWRlZCBpbiBHUk9VUCBCWSwgZWl0aGVyCitFWFBMQUlOIChDT1NUUyBPRkYp IFNFTEVDVCBhLCBDT1VOVChhKSBPVkVSIChQQVJUSVRJT04gQlkgYSkgRlJPTSB0MSBHUk9VUCBC WSBBTEw7CisgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcxIEFTIChQQVJU SVRJT04gQlkgYSkKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogYQorICAgICAgICAg LT4gIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogYQorICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHQxCisoNyByb3dzKQorCistLSBhbGwgY29scworRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiwgY291bnQoKikgRlJPTSB0MSBHUk9VUCBCWSBBTEw7Cisg ICAgICBRVUVSWSBQTEFOICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSGFzaEFnZ3Jl Z2F0ZQorICAgR3JvdXAgS2V5OiBhLCBiLCBjCisgICAtPiAgU2VxIFNjYW4gb24gdDEKKygzIHJv d3MpCisKKy0tIGdyb3VwIGJ5IGFsbCBidXQgd2l0aCBjb2x1bW4gbGlzdHMgKGVxdWl2YWxlbnQg dG8gR1JPVVAgQlkgZGVmYXVsdCBiZWhhdmlvciwgZXhwbGljaXQgYW50aXRoZXNpcyB0byBHUk9V UCBCWSBESVNUSU5DVCkKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGEsIGNvdW50KCopIEZS T00gdDEgR1JPVVAgQlkgQUxMIGE7CisgICAgICBRVUVSWSBQTEFOICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgSGFzaEFnZ3JlZ2F0ZQorICAgR3JvdXAgS2V5OiBhCisgICAtPiAgU2Vx IFNjYW4gb24gdDEKKygzIHJvd3MpCisKKy0tIHZlcmlmeSBkZXBhcnNpbmcgb2YgR1JPVVAgQlkg QUxMCitDUkVBVEUgVEVNUCBWSUVXIHYxIEFTIFNFTEVDVCBiLCBDT1VOVCgqKSBGUk9NIHQxIEdS T1VQIEJZIEFMTDsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigndjEnOjpyZWdjbGFzcyk7CisgICAg cGdfZ2V0X3ZpZXdkZWYgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGIs ICAgICAgICAgICArCisgICAgIGNvdW50KCopIEFTIGNvdW50KworICAgIEZST00gdDEgICAgICAg ICAgICsKKyAgIEdST1VQIEJZIEFMTDsKKygxIHJvdykKKworRFJPUCBWSUVXIHYxOworRFJPUCBU QUJMRSB0MTsKKy0tCiAtLSBUZXN0IEdST1VQIEJZIG1hdGNoaW5nIG9mIGpvaW4gY29sdW1ucyB0 aGF0IGFyZSB0eXBlLWNvZXJjZWQgZHVlIHRvIFVTSU5HCiAtLQogY3JlYXRlIHRlbXAgdGFibGUg dDEoZjEgaW50LCBmMiBpbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWdn cmVnYXRlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVzLnNxbAppbmRleCA2 MjU0MGIxZmZhNC4uZmMzMjU3ODMwYzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2FnZ3JlZ2F0ZXMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FnZ3JlZ2F0ZXMuc3Fs CkBAIC01NDksNiArNTQ5LDYwIEBAIGRyb3AgdGFibGUgdDI7CiBkcm9wIHRhYmxlIHQzOwogZHJv cCB0YWJsZSBwX3QxOwogCistLQorLS0gVGVzdCBHUk9VUCBCWSBBTEwKKy0tCistLSBXZSBkb24n dCBjYXJlIGFib3V0IHRoZSBkYXRhIGhlcmUsIGp1c3QgdGhlIHByb3BlciB0cmFuc2Zvcm1hdGlv biBvZiB0aGUKKy0tIEdST1VQIEJZIGNsYXVzZSwgc28gdGVzdCBzb21lIHF1ZXJpZXMgYW5kIHZl cmlmeSB0aGUgRVhQTEFJTiBwbGFucy4KKy0tCisKK0NSRUFURSBURU1QIFRBQkxFIHQxICgKKyAg YSBpbnQsCisgIGIgaW50LAorICBjIGludAorKTsKKworLS0gYmFzaWMgZXhhbXBsZQorRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgYiwgQ09VTlQoKikgRlJPTSB0MSBHUk9VUCBCWSBBTEw7CisK Ky0tIG11bHRpcGxlIGNvbHVtbnMsIG5vbi1jb25zZWN1dGl2ZSBvcmRlcgorRVhQTEFJTiAoQ09T VFMgT0ZGKSBTRUxFQ1QgYSwgU1VNKGIpLCBiIEZST00gdDEgR1JPVVAgQlkgQUxMOworCistLSBt dWx0aSBjb2x1bW5zLCBubyBhZ2dyZWdhdGUKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGEg KyBiIEZST00gdDEgR1JPVVAgQlkgQUxMOworCistLSBjaGVjayB3ZSBkZXRlY3QgYSBub24tdG9w LWxldmVsIGFnZ3JlZ2F0ZQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgYSwgU1VNKGIpICsg NCBGUk9NIHQxIEdST1VQIEJZIEFMTDsKKworLS0gaW5jbHVkaW5nIGdyb3VwZWQgY29sdW1uIGlz IG9rYXkKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGEsIFNVTShiKSArIGEgRlJPTSB0MSBH Uk9VUCBCWSBBTEw7CisKKy0tIGluY2x1ZGluZyBub24tZ3JvdXBlZCBjb2x1bW4sIG5vdCBzbyBt dWNoCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBhLCBTVU0oYikgKyBjIEZST00gdDEgR1JP VVAgQlkgQUxMOworCistLSBhbGwgYWdncmVnYXRlcywgc2hvdWxkIHJlZHVjZSB0byBHUk9VUCBC WSAoKQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgQ09VTlQoYSksIFNVTShiKSBGUk9NIHQx IEdST1VQIEJZIEFMTDsKKworLS0gbGlrZXdpc2Ugd2l0aCBlbXB0eSB0YXJnZXQgbGlzdAorRVhQ TEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgRlJPTSB0MSBHUk9VUCBCWSBBTEw7CisKKy0tIHdpbmRv dyBmdW5jdGlvbnMgYXJlIG5vdCB0byBiZSBpbmNsdWRlZCBpbiBHUk9VUCBCWSwgZWl0aGVyCitF WFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBhLCBDT1VOVChhKSBPVkVSIChQQVJUSVRJT04gQlkg YSkgRlJPTSB0MSBHUk9VUCBCWSBBTEw7CisKKy0tIGFsbCBjb2xzCitFWFBMQUlOIChDT1NUUyBP RkYpIFNFTEVDVCAqLCBjb3VudCgqKSBGUk9NIHQxIEdST1VQIEJZIEFMTDsKKworLS0gZ3JvdXAg YnkgYWxsIGJ1dCB3aXRoIGNvbHVtbiBsaXN0cyAoZXF1aXZhbGVudCB0byBHUk9VUCBCWSBkZWZh dWx0IGJlaGF2aW9yLCBleHBsaWNpdCBhbnRpdGhlc2lzIHRvIEdST1VQIEJZIERJU1RJTkNUKQor CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBhLCBjb3VudCgqKSBGUk9NIHQxIEdST1VQIEJZ IEFMTCBhOworCistLSB2ZXJpZnkgZGVwYXJzaW5nIG9mIEdST1VQIEJZIEFMTAorQ1JFQVRFIFRF TVAgVklFVyB2MSBBUyBTRUxFQ1QgYiwgQ09VTlQoKikgRlJPTSB0MSBHUk9VUCBCWSBBTEw7CitT RUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3YxJzo6cmVnY2xhc3MpOworCitEUk9QIFZJRVcgdjE7CitE Uk9QIFRBQkxFIHQxOworCiAtLQogLS0gVGVzdCBHUk9VUCBCWSBtYXRjaGluZyBvZiBqb2luIGNv bHVtbnMgdGhhdCBhcmUgdHlwZS1jb2VyY2VkIGR1ZSB0byBVU0lORwogLS0KLS0gCjIuNDkuMAoK --000000000000b6f58d063fe27245--