From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Zachary Kanfer Newsgroups: gmane.emacs.bugs Subject: bug#62892: proposal to extend mark-sexp to go forward and backward on command Date: Mon, 8 May 2023 08:28:24 -0400 Message-ID: References: <86jzxwuedr.fsf@mail.linkov.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000000f699705fb2dc7ed" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="31973"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Ruijie Yu , Stefan Monnier , "62892@debbugs.gnu.org" <62892@debbugs.gnu.org>, Juri Linkov To: Drew Adams Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon May 08 14:29:38 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pvzzk-000811-Ml for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 08 May 2023 14:29:36 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pvzzG-00042K-MV; Mon, 08 May 2023 08:29:06 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pvzzD-00041T-Km for bug-gnu-emacs@gnu.org; Mon, 08 May 2023 08:29:04 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pvzzD-0003zt-4p for bug-gnu-emacs@gnu.org; Mon, 08 May 2023 08:29:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pvzzB-0003DA-Vw for bug-gnu-emacs@gnu.org; Mon, 08 May 2023 08:29:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Zachary Kanfer Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 08 May 2023 12:29:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62892 X-GNU-PR-Package: emacs Original-Received: via spool by 62892-submit@debbugs.gnu.org id=B62892.168354892712304 (code B ref 62892); Mon, 08 May 2023 12:29:01 +0000 Original-Received: (at 62892) by debbugs.gnu.org; 8 May 2023 12:28:47 +0000 Original-Received: from localhost ([127.0.0.1]:39541 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pvzyv-0003CL-I2 for submit@debbugs.gnu.org; Mon, 08 May 2023 08:28:47 -0400 Original-Received: from mail-oo1-f54.google.com ([209.85.161.54]:59792) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pvzyr-0003C5-2O for 62892@debbugs.gnu.org; Mon, 08 May 2023 08:28:43 -0400 Original-Received: by mail-oo1-f54.google.com with SMTP id 006d021491bc7-54cb8d72c0bso2361696eaf.3 for <62892@debbugs.gnu.org>; Mon, 08 May 2023 05:28:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683548915; x=1686140915; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ErxfZmXKt100Fvvl6tWGKQHdoLWD+I29zhjlQVdC+5o=; b=F1c1AbyEBciL5RQMnMlJ3nMv6fHhaHgh02qS8PEGaYu+dBL7e2bxgDrKE3IMwYhj+g TuBOGqF/+/InwylMTepnCwFZ4lIn7dlzqs9EdwE+Sc0jun8Cn8LK5cnaYQa2TSbtq677 G44DvEtgJ5wNNEvbojC8FyvrZchuIbgWDj3HASRMzl6X6MvnbmhG3XL5s6oDK4UBsVf9 X9VJ5RdH+jOJAMk6vEmGq6posbvIMl4hWNyeFg1FTwpxVNNkhAzuOiVhyssp77F6E/II TxSiJ0qwoqZraPjZwcXvrmLQ+JXEAxVR2T0I/Dpx/jTkA1nmx8Yjgi/k+aWgrqN7sLU6 QDew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683548915; x=1686140915; 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=ErxfZmXKt100Fvvl6tWGKQHdoLWD+I29zhjlQVdC+5o=; b=Ybrz3xNcpp0EDQTkVD32qCyx15w7bjzm5U9A/HpS9L7HBAI4wlOCapFAMXr6JO/Ccc eg+QHmox98spwkwkjO6bAV0Yqac6qugQ//owWA4ZwP1TOO1Ig5Z0GMRDge5p18eHTAK0 dcB9sU/HcW7gRBpxN/1aIk6XMhvNOhSZiVPKWyuuuRaEu2C3OH0ODfVFYKAg6QW6xkqH SouDkXeNtyDT1SQ3tu+l0APHlYCWzOM9upZxlrMMKIB0tqKLAdbGHBPSYFqyM/Nuscvo JD4kRgoSb4P7Z9THc021Mezb4T22HzYD8LDSQ4mYTGj/LhtE8vRkFrn5HhJ2ynvcYLdP pNHA== X-Gm-Message-State: AC+VfDxGLpoaGyddTQDv3iG7DqPPzg3vIFAA9xpXRpNPC/iSCd3qf74H TP2wBgGO7RFp0z3+KklRvJ7YTKtL1kufVI4Yj4I= X-Google-Smtp-Source: ACHHUZ5cF9KFkkdvMcpr4Ezs8n4ukJ7n14PXRcTO1F7Vv+42irPNBdIB6miFr2uJaEV/VkEsSOwreb5LRgVxZcueKnQ= X-Received: by 2002:a4a:9c17:0:b0:545:2420:2a77 with SMTP id y23-20020a4a9c17000000b0054524202a77mr4196533ooj.6.1683548915324; Mon, 08 May 2023 05:28:35 -0700 (PDT) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:261317 Archived-At: --0000000000000f699705fb2dc7ed Content-Type: multipart/alternative; boundary="0000000000000f699605fb2dc7eb" --0000000000000f699605fb2dc7eb Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Attached is a patch with the following changes: * Uses the helper function to create mark-foo-forward, mark-foo-backward for word, paragraph, sexp, page, and defun. * Adds tests for all of these. * Adds these new functions to etc/NEWS and various .texi files in doc/emacs/. On Thu, May 4, 2023 at 12:48=E2=80=AFAM Zachary Kanfer = wrote: > > Is it an "internal" function? Then its name should > > maybe use `--'. (But why should it be internal?) > > Hrm, I figured it would be an internal function because it's intended to > be wrapped by other code. But this describes a whole lot of functions. So > it can't be that. > > I suppose that if there are other types of things that are created that > one might want to mark, then a user could use this method to mark them. S= o > perhaps it shouldn't be internal -- it really could be used by other code= . > > > Is it a helper function? Then its name should maybe > > use a suffix that indicates that, such as `-helper' > > or `-1' (old-school Lisp, I suppose). > > It's certainly a helper function -- it's intended to be called by a bunch > of different functions we write. > > > `mark-thing' should be reserved for a function that > > takes a THING name as arg: `sexp', `page', etc., > > instead of a movement function such as `forward-sexp'. > > This makes a lot of sense to me. > > On Fri, Apr 28, 2023 at 3:28=E2=80=AFPM Drew Adams wrote: > >> > > +(defun mark--helper (move-fn number-of-things) >> > >> > A nicer name would be 'mark-thing' as a reference to thingatpt.el. >> >> FWIW, I have a different take on this. >> >> Is it an "internal" function? Then its name should >> maybe use `--'. (But why should it be internal?) >> >> Is it a helper function? Then its name should maybe >> use a suffix that indicates that, such as `-helper' >> or `-1' (old-school Lisp, I suppose). >> >> `mark-thing' should be reserved for a function that >> takes a THING name as arg: `sexp', `page', etc., >> instead of a movement function such as `forward-sexp'. >> ___ >> >> FWIW, I think MOVE-FN is a fine name for the argument. >> My own preference, and what I use in my code, is the >> name FORWARD-THING-FUNCTION. >> ___ >> >> FWIW, in my library isearch+.el), I use the arg name >> THING for a thing name, not a movement or other >> function. >> >> E.g.: Function `isearchp-in-thing-p' is a helper >> function for defining specific THING-type predicates, >> such as `isearch(-not)-in-email-address-p'. >> ___ >> >> FWIW, my library `thing-cmds.el' has a command named >> `mark-things', which prompts for a THING type as arg: >> >> mark-things is an alias for 'select-things' in 'thing-cmds.el'. >> >> (mark-things THING &optional ARG ALLOW-EXTEND) >> >> Set point at one end of THING and set mark ARG THINGs from point. >> THING is a symbol that names a type of thing. Interactively, you are >> prompted for it. Completion is available (lax). >> >> (If THING doesn't have an associated `forward-'THING operation then >> do nothing.) >> >> Put mark at the same place command `forward-'THING would move point >> with the same prefix argument. >> >> Put point at the beginning of THING, unless the prefix argument (ARG) >> is negative, in which case put it at the end of THING. >> >> If `select-things' is repeated or if the mark is active (in Transient >> Mark mode), then it marks the next ARG THINGs, after the ones already >> marked. In this case the type of THING used is whatever was used the >> last time `select-things' was called - you are not prompted for it. >> >> This region extension reusing the last type of THING happens even if >> the active region is empty. This means that you can, for instance, >> just use `C-SPC' to activate an empty region and then use >> `select-things' to select more THINGS of the last kind selected. >> >> If there is no THING at point, and `thgcmd-use-nearest-thing-flag' is >> non-nil, then select a THING near point. >> >> --0000000000000f699605fb2dc7eb Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Attached is a patch with the following changes:
=

* Uses the helper function to create mark-foo-forward, = mark-foo-backward for word, paragraph, sexp, page, and defun.
* A= dds tests for all of these.
* Adds these new functions to etc/NEW= S and various .texi files in doc/emacs/.

On Thu, May 4, 2023 at 12= :48=E2=80=AFAM Zachary Kanfer <zkan= fer@gmail.com> wrote:
>=20 Is it an "internal" function?=C2=A0 Then its name should
> maybe use `--'.=C2=A0 (But why should it be internal?)

Hrm, I figured it would be an internal=20 function because it's intended to be wrapped by other code. But this=20 describes a whole lot of functions. So it can't be that.

=
I suppose that if there are other types of things that are created that=20 one might want to mark, then a user could use this method to mark them.=20 So perhaps it shouldn't be internal -- it really could be used by other= =20 code.

> Is it a helper function?=C2= =A0 Then its name should maybe
> use a suffix that indicates that, such as `-helper'
> or `-1' (old-school Lisp, I suppose).

<= div>It's certainly a helper function -- it's intended to be called = by a bunch of different functions we write.

= > `mark-thing' should be reserved for a function that
> takes = a THING name as arg: `sexp', `page', etc.,
> instead of a mov= ement function such as `forward-sexp'.

= This makes a lot of sense to me.

=
On Fri, Apr 28, 2023 at 3:28=E2=80=AF= PM Drew Adams <drew.adams@oracle.com> wrote:
> > +(defun mark--helper (move-fn number-of-th= ings)
>
> A nicer name would be 'mark-thing' as a reference to thingatpt= .el.

FWIW, I have a different take on this.

Is it an "internal" function?=C2=A0 Then its name should
maybe use `--'.=C2=A0 (But why should it be internal?)

Is it a helper function?=C2=A0 Then its name should maybe
use a suffix that indicates that, such as `-helper'
or `-1' (old-school Lisp, I suppose).

`mark-thing' should be reserved for a function that
takes a THING name as arg: `sexp', `page', etc.,
instead of a movement function such as `forward-sexp'.
___

FWIW, I think MOVE-FN is a fine name for the argument.
My own preference, and what I use in my code, is the
name FORWARD-THING-FUNCTION.
___

FWIW, in my library isearch+.el), I use the arg name
THING for a thing name, not a movement or other
function.

E.g.: Function `isearchp-in-thing-p' is a helper
function for defining specific THING-type predicates,
such as `isearch(-not)-in-email-address-p'.
___

FWIW, my library `thing-cmds.el' has a command named
`mark-things', which prompts for a THING type as arg:

=C2=A0mark-things is an alias for 'select-things' in 'thing-cmd= s.el'.

=C2=A0(mark-things THING &optional ARG ALLOW-EXTEND)

=C2=A0Set point at one end of THING and set mark ARG THINGs from point.
=C2=A0THING is a symbol that names a type of thing.=C2=A0 Interactively, yo= u are
=C2=A0prompted for it.=C2=A0 Completion is available (lax).

=C2=A0(If THING doesn't have an associated `forward-'THING operatio= n then
=C2=A0do nothing.)

=C2=A0Put mark at the same place command `forward-'THING would move poi= nt
=C2=A0with the same prefix argument.

=C2=A0Put point at the beginning of THING, unless the prefix argument (ARG)=
=C2=A0is negative, in which case put it at the end of THING.

=C2=A0If `select-things' is repeated or if the mark is active (in Trans= ient
=C2=A0Mark mode), then it marks the next ARG THINGs, after the ones already=
=C2=A0marked.=C2=A0 In this case the type of THING used is whatever was use= d the
=C2=A0last time `select-things' was called - you are not prompted for i= t.

=C2=A0This region extension reusing the last type of THING happens even if<= br> =C2=A0the active region is empty.=C2=A0 This means that you can, for instan= ce,
=C2=A0just use `C-SPC' to activate an empty region and then use
=C2=A0`select-things' to select more THINGS of the last kind selected.<= br>
=C2=A0If there is no THING at point, and `thgcmd-use-nearest-thing-flag'= ; is
=C2=A0non-nil, then select a THING near point.

--0000000000000f699605fb2dc7eb-- --0000000000000f699705fb2dc7ed Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-foo-mark-forward-foo-mark-backward-for-various-f.patch" Content-Disposition: attachment; filename="0001-Add-foo-mark-forward-foo-mark-backward-for-various-f.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lhetjnpe0 RnJvbSAxNzM4NmJlNTcxMjE1OWFhMzhmODk0Yzk4M2ZjNDhiMjFhMjM0YWUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaYWNoYXJ5IEthbmZlciA8emthbmZlckBnbWFpbC5jb20+CkRh dGU6IFN1biwgMTYgQXByIDIwMjMgMjI6MTY6MzkgLTA0MDAKU3ViamVjdDogW1BBVENIXSBBZGQg Zm9vLW1hcmstZm9yd2FyZCwgZm9vLW1hcmstYmFja3dhcmQsIGZvciB2YXJpb3VzIGZvby4KClRo aXMgYWRkcyBtZXRob2RzIHRvIG1hcmsgZm9yd2FyZCBhbmQgYmFja3dhcmQgZm9yIHRoZSBnaXZl biBvYmplY3RzOgoKKiB3b3JkCiogc2V4cAoqIGRlZnVuCiogcGFyYWdyYXBoCiogcGFnZQotLS0K IGRvYy9lbWFjcy9tYXJrLnRleGkgICAgICAgICAgICAgICAgICAgICB8ICAxNyArKwogZG9jL2Vt YWNzL3Byb2dyYW1zLnRleGkgICAgICAgICAgICAgICAgIHwgICA4ICsKIGRvYy9lbWFjcy90ZXh0 LnRleGkgICAgICAgICAgICAgICAgICAgICB8ICAxOCArKwogZXRjL05FV1MgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDIwICsrCiBsaXNwL2VtYWNzLWxpc3AvbGlzcC5lbCAgICAg ICAgICAgICAgICAgfCAgNjAgKysrKysrCiBsaXNwL3NpbXBsZS5lbCAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgNDYgKysrKysKIGxpc3AvdGV4dG1vZGVzL3BhZ2UuZWwgICAgICAgICAgICAg ICAgICB8ICAxNCArKwogbGlzcC90ZXh0bW9kZXMvcGFyYWdyYXBocy5lbCAgICAgICAgICAgIHwg IDE0ICsrCiB0ZXN0L2xpc3AvZW1hY3MtbGlzcC9saXNwLXRlc3RzLmVsICAgICAgfCAyNjIgKysr KysrKysrKysrKysrKysrKysrKysrCiB0ZXN0L2xpc3Avc2ltcGxlLXRlc3RzLmVsICAgICAgICAg ICAgICAgfCAgMTQgKysKIHRlc3QvbGlzcC90ZXh0bW9kZXMvcGFnZS10ZXN0cy5lbCAgICAgICB8 ICAxMSArCiB0ZXN0L2xpc3AvdGV4dG1vZGVzL3BhcmFncmFwaHMtdGVzdHMuZWwgfCAgMzQgKysr CiAxMiBmaWxlcyBjaGFuZ2VkLCA1MTggaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RvYy9l bWFjcy9tYXJrLnRleGkgYi9kb2MvZW1hY3MvbWFyay50ZXhpCmluZGV4IDNmMWM3NmMxNTkxLi42 YWExMmI3ODE4MSAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL21hcmsudGV4aQorKysgYi9kb2MvZW1h Y3MvbWFyay50ZXhpCkBAIC0yMTYsNiArMjE2LDE1IEBAIE1hcmtpbmcgT2JqZWN0cwogdG8gYWR2 YW5jZSB0aGUgbWFyayBieSBAdmFye259IHdvcmRzLiAgQSBuZWdhdGl2ZSBhcmd1bWVudAogQG1p bnVze31AdmFye259IG1vdmVzIHRoZSBtYXJrIGJhY2sgYnkgQHZhcntufSB3b3Jkcy4KIAorQGZp bmRleCBtYXJrLXdvcmQtZm9yd2FyZAorICBAY29kZXttYXJrLXdvcmQtZm9yd2FyZH0gaXMgc2lt aWxhciB0byBAY29kZXttYXJrLXdvcmR9LCBidXQgb25seQorICBtb3ZlcyBmb3J3YXJkLgorCitA ZmluZGV4IG1hcmstd29yZC1iYWNrd2FyZAorICBAY29kZXttYXJrLXdvcmQtYmFja3dhcmR9IGlz IHNpbWlsYXIgdG8gQGNvZGV7bWFyay13b3JkfSwgYnV0IG9ubHkKKyAgbW92ZXMgYmFja3dhcmQu CisKKwogQGtpbmRleCBDLU0tQEAKIEBmaW5kZXggbWFyay1zZXhwCiAgIFNpbWlsYXJseSwgQGti ZHtDLU0tQEB9IChAY29kZXttYXJrLXNleHB9KSBwdXRzIHRoZSBtYXJrIGF0IHRoZSBlbmQKQEAg LTIyNCw2ICsyMzMsMTQgQEAgTWFya2luZyBPYmplY3RzCiBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBu dW1lcmljIGFyZ3VtZW50cyBtb3ZlIHRoZSBtYXJrIGZvcndhcmQgb3IKIGJhY2t3YXJkIGJ5IHRo ZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGV4cHJlc3Npb25zLgogCitAZmluZGV4IG1hcmstc2V4cC1m b3J3YXJkCisgIEBjb2Rle21hcmstc2V4cC1mb3J3YXJkfSBpcyBzaW1pbGFyIHRvIEBjb2Rle21h cmstc2V4cH0sIGJ1dCBvbmx5CisgIG1vdmVzIGZvcndhcmQuCisKK0BmaW5kZXggbWFyay1zZXhw LWJhY2t3YXJkCisgIEBjb2Rle21hcmstc2V4cC1iYWNrd2FyZH0gaXMgc2ltaWxhciB0byBAY29k ZXttYXJrLXNleHB9LCBidXQgb25seQorICBtb3ZlcyBiYWNrd2FyZC4KKwogICAgVGhlIG90aGVy IGNvbW1hbmRzIGluIHRoZSBhYm92ZSBsaXN0IHNldCBib3RoIHBvaW50IGFuZCBtYXJrLCBzbyBh cwogdG8gZGVsaW1pdCBhbiBvYmplY3QgaW4gdGhlIGJ1ZmZlci4gIEBrYmR7TS1ofSAoQGNvZGV7 bWFyay1wYXJhZ3JhcGh9KQogbWFya3MgcGFyYWdyYXBocyAoQHB4cmVme1BhcmFncmFwaHN9KSwg QGtiZHtDLU0taH0gKEBjb2Rle21hcmstZGVmdW59KQpkaWZmIC0tZ2l0IGEvZG9jL2VtYWNzL3By b2dyYW1zLnRleGkgYi9kb2MvZW1hY3MvcHJvZ3JhbXMudGV4aQppbmRleCA2MmRmODhhNzMxZS4u NGNkMjAwN2UyMjUgMTAwNjQ0Ci0tLSBhL2RvYy9lbWFjcy9wcm9ncmFtcy50ZXhpCisrKyBiL2Rv Yy9lbWFjcy9wcm9ncmFtcy50ZXhpCkBAIC0yMzAsNiArMjMwLDE0IEBAIE1vdmluZyBieSBEZWZ1 bnMKIG5lZ2F0aXZlIGFyZ3VtZW50IG1vdmVzIGJhY2sgdG8gYW4gZW5kIG9mIGEgZGVmdW4sIHdo aWNoIGlzIG5vdCBxdWl0ZQogdGhlIHNhbWUgYXMgQGtiZHtDLU0tYX0gd2l0aCBhIHBvc2l0aXZl IGFyZ3VtZW50LgogCitAZmluZGV4IG1hcmstZGVmdW4tZm9yd2FyZAorICBAY29kZXttYXJrLWRl ZnVuLWZvcndhcmR9IGlzIHNpbWlsYXIgdG8gQGNvZGV7bWFyay1kZWZ1bn0sIGJ1dCBvbmx5Cisg IG1vdmVzIGZvcndhcmQuCisKK0BmaW5kZXggbWFyay1kZWZ1bi1iYWNrd2FyZAorICBAY29kZXtt YXJrLWRlZnVuLWJhY2t3YXJkfSBpcyBzaW1pbGFyIHRvIEBjb2Rle21hcmstZGVmdW59LCBidXQg b25seQorICBtb3ZlcyBiYWNrd2FyZC4KKwogQGtpbmRleCBDLU0taCBAcnsoQyBtb2RlKX0KIEBm aW5kZXggYy1tYXJrLWZ1bmN0aW9uCiAgIFRvIG9wZXJhdGUgb24gdGhlIGN1cnJlbnQgZGVmdW4s IHVzZSBAa2Jke0MtTS1ofQpkaWZmIC0tZ2l0IGEvZG9jL2VtYWNzL3RleHQudGV4aSBiL2RvYy9l bWFjcy90ZXh0LnRleGkKaW5kZXggM2QzZjI1NjI2MTcuLmRjZGNmMThhZDkyIDEwMDY0NAotLS0g YS9kb2MvZW1hY3MvdGV4dC50ZXhpCisrKyBiL2RvYy9lbWFjcy90ZXh0LnRleGkKQEAgLTMxNCw2 ICszMTQsMTUgQEAgUGFyYWdyYXBocwogICBJZiB5b3Ugc2V0IGEgZmlsbCBwcmVmaXgsIHRoZW4g cGFyYWdyYXBocyBhcmUgZGVsaW1pdGVkIGJ5IGFsbCBsaW5lcwogd2hpY2ggZG9uJ3Qgc3RhcnQg d2l0aCB0aGUgZmlsbCBwcmVmaXguICBAeHJlZntGaWxsaW5nfS4KIAorQGZpbmRleCBtYXJrLXBh cmFncmFwaC1mb3J3YXJkCisgIEBjb2Rle21hcmstcGFyYWdyYXBoLWZvcndhcmR9IGlzIHNpbWls YXIgdG8gQGNvZGV7bWFyay1wYXJhZ3JhcGh9LAorICBidXQgb25seSBtb3ZlcyBmb3J3YXJkLgor CitAZmluZGV4IG1hcmstcGFyYWdyYXBoLWJhY2t3YXJkCisgIEBjb2Rle21hcmstcGFyYWdyYXBo LWJhY2t3YXJkfSBpcyBzaW1pbGFyIHRvIEBjb2Rle21hcmstcGFyYWdyYXBofSwKKyAgYnV0IG9u bHkgbW92ZXMgYmFja3dhcmQuCisKKwogQHZpbmRleCBwYXJhZ3JhcGgtc3RhcnQKIEB2aW5kZXgg cGFyYWdyYXBoLXNlcGFyYXRlCiAgIFRoZSBwcmVjaXNlIGRlZmluaXRpb24gb2YgYSBwYXJhZ3Jh cGggYm91bmRhcnkgaXMgY29udHJvbGxlZCBieSB0aGUKQEAgLTM5NCw2ICs0MDMsMTUgQEAgUGFn ZXMKIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IG9uZS4gIFplcm8gbWVhbnMgdGhlIGN1cnJlbnQg cGFnZSwgb25lIG1lYW5zCiB0aGUgbmV4dCBwYWdlLCBhbmQgQG1pbnVze30xIG1lYW5zIHRoZSBw cmV2aW91cyBvbmUuCiAKK0BmaW5kZXggbWFyay1wYWdlLWZvcndhcmQKKyAgQGNvZGV7bWFyay1w YWdlLWZvcndhcmR9IGlzIHNpbWlsYXIgdG8gQGNvZGV7bWFyay1wYWdlfSwgYnV0IG9ubHkKKyAg bW92ZXMgZm9yd2FyZC4KKworQGZpbmRleCBtYXJrLXBhZ2UtYmFja3dhcmQKKyAgQGNvZGV7bWFy ay1wYWdlLWJhY2t3YXJkfSBpcyBzaW1pbGFyIHRvIEBjb2Rle21hcmstcGFnZX0sIGJ1dCBvbmx5 CisgIG1vdmVzIGJhY2t3YXJkLgorCisKIEBraW5kZXggQy14IGwKIEBmaW5kZXggY291bnQtbGlu ZXMtcGFnZQogICBUaGUgQGtiZHtDLXggbH0gY29tbWFuZCAoQGNvZGV7Y291bnQtbGluZXMtcGFn ZX0pIGlzIGdvb2QgZm9yIGRlY2lkaW5nCmRpZmYgLS1naXQgYS9ldGMvTkVXUyBiL2V0Yy9ORVdT CmluZGV4IGM2MWE5ZWMzYzVmLi43NGI0ZjA1NjA5NSAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysr IGIvZXRjL05FV1MKQEAgLTgxLDYgKzgxLDI2IEBAIG1pc3Rha2VuIGNvbXBvc2l0aW9ucywgdGhp cyB3aWxsIG5vdyB3b3JrIGFzIHdlbGwuCiBUaGlzIHdvcmtzIGxpa2UgJ2tpbGwtbWF0Y2hpbmct YnVmZmVycycsIGJ1dCB3aXRob3V0IGFza2luZyBmb3IKIGNvbmZpcm1hdGlvbi4KIAorLS0tCisq KiBOZXcgY29tbWFuZHMgJ21hcmstc2V4cC1mb3J3YXJkJywgJ21hcmstc2V4cC1iYWNrd2FyZCcu CitUaGVzZSB3b3JrIGxpa2UgbWFyay1zZXhwLCBidXQgZXhwbGljaXRseSBhbGxvdyBzZXhwcyB0 byBiZSBtYXJrZWQgZm9yd2FyZCBhbmQgYmFja3dhcmQuCisKKy0tLQorKiogTmV3IGNvbW1hbmRz ICdtYXJrLXdvcmQtZm9yd2FyZCcsICdtYXJrLXdvcmQtYmFja3dhcmQnLgorVGhlc2Ugd29yayBs aWtlIG1hcmstd29yZCwgYnV0IGV4cGxpY2l0bHkgYWxsb3cgd29yZHMgdG8gYmUgbWFya2VkIGZv cndhcmQgYW5kIGJhY2t3YXJkLgorCistLS0KKyoqIE5ldyBjb21tYW5kcyAnbWFyay1kZWZ1bi1m b3J3YXJkJywgJ21hcmstZGVmdW4tYmFja3dhcmQnLgorVGhlc2Ugd29yayBsaWtlIG1hcmstZGVm dW4sIGJ1dCBleHBsaWNpdGx5IGFsbG93IGRlZnVucyB0byBiZSBtYXJrZWQgZm9yd2FyZCBhbmQg YmFja3dhcmQuCisKKy0tLQorKiogTmV3IGNvbW1hbmRzICdtYXJrLXBhcmFncmFwaC1mb3J3YXJk JywgJ21hcmstcGFyYWdyYXBoLWJhY2t3YXJkJy4KK1RoZXNlIHdvcmsgbGlrZSBtYXJrLXBhcmFn cmFwaCwgYnV0IGV4cGxpY2l0bHkgYWxsb3cgcGFyYWdyYXBocyB0byBiZSBtYXJrZWQgZm9yd2Fy ZCBhbmQgYmFja3dhcmQuCisKKy0tLQorKiogTmV3IGNvbW1hbmRzICdtYXJrLXBhZ2UtZm9yd2Fy ZCcsICdtYXJrLXBhZ2UtYmFja3dhcmQnLgorVGhlc2Ugd29yayBsaWtlIG1hcmstcGFnZSwgYnV0 IGV4cGxpY2l0bHkgYWxsb3cgcGFnZXMgdG8gYmUgbWFya2VkIGZvcndhcmQgYW5kIGJhY2t3YXJk LgorCiAMCiAqIENoYW5nZXMgaW4gU3BlY2lhbGl6ZWQgTW9kZXMgYW5kIFBhY2thZ2VzIGluIEVt YWNzIDMwLjEKIApkaWZmIC0tZ2l0IGEvbGlzcC9lbWFjcy1saXNwL2xpc3AuZWwgYi9saXNwL2Vt YWNzLWxpc3AvbGlzcC5lbAppbmRleCA0MTdjMjE4YzZkNy4uMzliZmU1ZDNlMDYgMTAwNjQ0Ci0t LSBhL2xpc3AvZW1hY3MtbGlzcC9saXNwLmVsCisrKyBiL2xpc3AvZW1hY3MtbGlzcC9saXNwLmVs CkBAIC0xMjksNiArMTI5LDUyIEBAIG1hcmstc2V4cAogCSAgICAocG9pbnQpKQogCSAgbmlsIHQp KSkpCiAKKyhkZWZ1biBtYXJrLS1oZWxwZXIgKG1vdmUtZm4gbnVtYmVyLW9mLXRoaW5ncykKKyAg IlVzZSBNT1ZFLUZOIHRvIG1vdmUgTlVNQkVSLU9GLVRISU5HUyB0aGluZ3MsIGV4dGVuZGluZyBy ZWdpb24gb3ZlciB0aGVtLgorCitUaGUgTU9WRS1GTiBzaG91bGQgdGFrZSBhIG51bWVyaWMgYXJn dW1lbnQsIGFuZCBtb3ZlIHRoYXQgbWFueQoraXRlbXMgZm9yd2FyZCAobmVnYXRpdmUgbWVhbnMg YmFja3dhcmQpLgorCitOVU1CRVItT0YtVEhJTkdTIGlzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25h bCB0aGluZ3MgdG8gbW92ZS4iCisgIChpZiAodXNlLXJlZ2lvbi1wKQorICAgICAgKGxldCogKChm b3J3YXJkICg+PSBudW1iZXItb2YtdGhpbmdzIDApKQorICAgICAgICAgICAgIChiZWdpbm5pbmct b2YtcmVnaW9uIChyZWdpb24tYmVnaW5uaW5nKSkKKyAgICAgICAgICAgICAoZW5kLW9mLXJlZ2lv biAocmVnaW9uLWVuZCkpCisgICAgICAgICAgICAgKGF0LWVuZC1vZi1yZWdpb24gKD0gZW5kLW9m LXJlZ2lvbiAocG9pbnQpKSkKKyAgICAgICAgICAgICAobmV3LWJvcmRlci1wb2ludAorICAgICAg ICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAoZ290by1jaGFyIChpZiBm b3J3YXJkIChyZWdpb24tZW5kKSAocmVnaW9uLWJlZ2lubmluZykpKQorICAgICAgICAgICAgICAg IChjb25kaXRpb24tY2FzZSBuaWwKKyAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgbW92ZS1m biBudW1iZXItb2YtdGhpbmdzKQorICAgICAgICAgICAgICAgICAgKHNjYW4tZXJyb3IgKHVzZXIt ZXJyb3IgIk5vIG1vcmUgaW4gdGhpcyBkaXJlY3Rpb24hIikpKQorICAgICAgICAgICAgICAgIChw b2ludCkpKQorICAgICAgICAgICAgIChuZXctYmVnaW5uaW5nLW9mLXJlZ2lvbiAobWluIGJlZ2lu bmluZy1vZi1yZWdpb24gbmV3LWJvcmRlci1wb2ludCkpCisgICAgICAgICAgICAgKG5ldy1lbmQt b2YtcmVnaW9uIChtYXggZW5kLW9mLXJlZ2lvbiBuZXctYm9yZGVyLXBvaW50KSkpCisgICAgICAg IChnb3RvLWNoYXIgKGlmIGF0LWVuZC1vZi1yZWdpb24KKyAgICAgICAgICAgICAgICAgICAgICAg bmV3LWVuZC1vZi1yZWdpb24KKyAgICAgICAgICAgICAgICAgICAgIG5ldy1iZWdpbm5pbmctb2Yt cmVnaW9uKSkKKyAgICAgICAgKHNldC1tYXJrIChpZiBhdC1lbmQtb2YtcmVnaW9uCisgICAgICAg ICAgICAgICAgICAgICAgbmV3LWJlZ2lubmluZy1vZi1yZWdpb24KKyAgICAgICAgICAgICAgICAg ICAgbmV3LWVuZC1vZi1yZWdpb24pKSkKKyAgICAocHJvZ24gKHB1c2gtbWFyayAoc2F2ZS1leGN1 cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIG1vdmUtZm4gbnVtYmVyLW9m LXRoaW5ncykKKyAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkpKQorICAgICAgICAgICAo YWN0aXZhdGUtbWFyaykpKSkKKworKGRlZnVuIG1hcmstc2V4cC1mb3J3YXJkICgmb3B0aW9uYWwg bnVtYmVyLW9mLWV4cHJlc3Npb25zKQorICAiTWFyayBOVU1CRVItT0YtRVhQUkVTU0lPTlMgcy1l eHByZXNzaW9ucyBmb3J3YXJkLgorCisgUmVwZWF0ZWQgY2FsbHMgdG8gdGhpcyBtYXJrIG1vcmUg cy1leHByZXNzaW9ucy4iCisgIChpbnRlcmFjdGl2ZSAicCIpCisgIChtYXJrLS1oZWxwZXIgIydm b3J3YXJkLXNleHAgKG9yIG51bWJlci1vZi1leHByZXNzaW9ucyAxKSkpCisKKyhkZWZ1biBtYXJr LXNleHAtYmFja3dhcmQgKCZvcHRpb25hbCBudW1iZXItb2YtZXhwcmVzc2lvbnMpCisgICJNYXJr IE5VTUJFUi1PRi1FWFBSRVNTSU9OUyBzLWV4cHJlc3Npb25zIGJhY2t3YXJkLgorCisgUmVwZWF0 ZWQgY2FsbHMgdG8gdGhpcyBtYXJrIG1vcmUgcy1leHByZXNzaW9ucy4iCisgIChpbnRlcmFjdGl2 ZSAicCIpCisgIChtYXJrLS1oZWxwZXIgIydmb3J3YXJkLXNleHAgKC0gKG9yIG51bWJlci1vZi1l eHByZXNzaW9ucyAxKSkpKQorCiAoZGVmdW4gZm9yd2FyZC1saXN0ICgmb3B0aW9uYWwgYXJnIGlu dGVyYWN0aXZlKQogICAiTW92ZSBmb3J3YXJkIGFjcm9zcyBvbmUgYmFsYW5jZWQgZ3JvdXAgb2Yg cGFyZW50aGVzZXMuCiBUaGlzIGNvbW1hbmQgd2lsbCBhbHNvIHdvcmsgb24gb3RoZXIgcGFyZW50 aGVzZXMtbGlrZSBleHByZXNzaW9ucwpAQCAtNjA0LDYgKzY1MCwyMCBAQCBlbmQtb2YtZGVmdW4K ICAgICAgICAgICAoZnVuY2FsbCBlbmQtb2YtZGVmdW4tZnVuY3Rpb24pCiAJICAoZnVuY2FsbCBz a2lwKSkpKSkpCiAKKyhkZWZ1biBtYXJrLWRlZnVuLWZvcndhcmQgKCZvcHRpb25hbCBudW1iZXIt b2YtZGVmdW5zKQorICAiTWFyayBOVU1CRVItT0YtREVGVU5TIGRlZnVucyBmb3J3YXJkLgorCisg UmVwZWF0ZWQgY2FsbHMgdG8gdGhpcyBtYXJrIG1vcmUgZGVmdW5zLiIKKyAgKGludGVyYWN0aXZl ICJwIikKKyAgKG1hcmstLWhlbHBlciAjJ2VuZC1vZi1kZWZ1biAob3IgbnVtYmVyLW9mLWRlZnVu cyAxKSkpCisKKyhkZWZ1biBtYXJrLWRlZnVuLWJhY2t3YXJkICgmb3B0aW9uYWwgbnVtYmVyLW9m LWRlZnVucykKKyAgIk1hcmsgTlVNQkVSLU9GLURFRlVOUyBkZWZ1bnMgYmFja3dhcmQuCisKKyBS ZXBlYXRlZCBjYWxscyB0byB0aGlzIG1hcmsgbW9yZSBkZWZ1bnMuIgorICAoaW50ZXJhY3RpdmUg InAiKQorICAobWFyay0taGVscGVyICMnZW5kLW9mLWRlZnVuICgtIChvciBudW1iZXItb2YtZGVm dW5zIDEpKSkpCisKIChkZWZ1biBtYXJrLWRlZnVuICgmb3B0aW9uYWwgYXJnIGludGVyYWN0aXZl KQogICAiUHV0IG1hcmsgYXQgZW5kIG9mIHRoaXMgZGVmdW4sIHBvaW50IGF0IGJlZ2lubmluZy4K IFRoZSBkZWZ1biBtYXJrZWQgaXMgdGhlIG9uZSB0aGF0IGNvbnRhaW5zIHBvaW50IG9yIGZvbGxv d3MgcG9pbnQuCmRpZmYgLS1naXQgYS9saXNwL3NpbXBsZS5lbCBiL2xpc3Avc2ltcGxlLmVsCmlu ZGV4IGI2MjFlMTYwM2JkLi40NmZmNzU1OWEyYyAxMDA2NDQKLS0tIGEvbGlzcC9zaW1wbGUuZWwK KysrIGIvbGlzcC9zaW1wbGUuZWwKQEAgLTg3MDEsNiArODcwMSw1MiBAQCBiYWNrd2FyZC13b3Jk CiAgIChpbnRlcmFjdGl2ZSAiXnAiKQogICAoZm9yd2FyZC13b3JkICgtIChvciBhcmcgMSkpKSkK IAorKGRlZnVuIG1hcmstLWhlbHBlciAobW92ZS1mbiBudW1iZXItb2YtdGhpbmdzKQorICAiVXNl IE1PVkUtRk4gdG8gbW92ZSBOVU1CRVItT0YtVEhJTkdTIHRoaW5ncywgZXh0ZW5kaW5nIHJlZ2lv biBvdmVyIHRoZW0uCisKK1RoZSBNT1ZFLUZOIHNob3VsZCB0YWtlIGEgbnVtZXJpYyBhcmd1bWVu dCwgYW5kIG1vdmUgdGhhdCBtYW55CitpdGVtcyBmb3J3YXJkIChuZWdhdGl2ZSBtZWFucyBiYWNr d2FyZCkuCisKK05VTUJFUi1PRi1USElOR1MgaXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsIHRo aW5ncyB0byBtb3ZlLiIKKyAgKGlmICh1c2UtcmVnaW9uLXApCisgICAgICAobGV0KiAoKGZvcndh cmQgKD49IG51bWJlci1vZi10aGluZ3MgMCkpCisgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1y ZWdpb24gKHJlZ2lvbi1iZWdpbm5pbmcpKQorICAgICAgICAgICAgIChlbmQtb2YtcmVnaW9uIChy ZWdpb24tZW5kKSkKKyAgICAgICAgICAgICAoYXQtZW5kLW9mLXJlZ2lvbiAoPSBlbmQtb2YtcmVn aW9uIChwb2ludCkpKQorICAgICAgICAgICAgIChuZXctYm9yZGVyLXBvaW50CisgICAgICAgICAg ICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKGlmIGZvcndh cmQgKHJlZ2lvbi1lbmQpIChyZWdpb24tYmVnaW5uaW5nKSkpCisgICAgICAgICAgICAgICAgKGNv bmRpdGlvbi1jYXNlIG5pbAorICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBtb3ZlLWZuIG51 bWJlci1vZi10aGluZ3MpCisgICAgICAgICAgICAgICAgICAoc2Nhbi1lcnJvciAodXNlci1lcnJv ciAiTm8gbW9yZSBpbiB0aGlzIGRpcmVjdGlvbiEiKSkpCisgICAgICAgICAgICAgICAgKHBvaW50 KSkpCisgICAgICAgICAgICAgKG5ldy1iZWdpbm5pbmctb2YtcmVnaW9uIChtaW4gYmVnaW5uaW5n LW9mLXJlZ2lvbiBuZXctYm9yZGVyLXBvaW50KSkKKyAgICAgICAgICAgICAobmV3LWVuZC1vZi1y ZWdpb24gKG1heCBlbmQtb2YtcmVnaW9uIG5ldy1ib3JkZXItcG9pbnQpKSkKKyAgICAgICAgKGdv dG8tY2hhciAoaWYgYXQtZW5kLW9mLXJlZ2lvbgorICAgICAgICAgICAgICAgICAgICAgICBuZXct ZW5kLW9mLXJlZ2lvbgorICAgICAgICAgICAgICAgICAgICAgbmV3LWJlZ2lubmluZy1vZi1yZWdp b24pKQorICAgICAgICAoc2V0LW1hcmsgKGlmIGF0LWVuZC1vZi1yZWdpb24KKyAgICAgICAgICAg ICAgICAgICAgICBuZXctYmVnaW5uaW5nLW9mLXJlZ2lvbgorICAgICAgICAgICAgICAgICAgICBu ZXctZW5kLW9mLXJlZ2lvbikpKQorICAgIChwcm9nbiAocHVzaC1tYXJrIChzYXZlLWV4Y3Vyc2lv bgorICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgbW92ZS1mbiBudW1iZXItb2YtdGhp bmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpCisgICAgICAgICAgIChhY3Rp dmF0ZS1tYXJrKSkpKQorCisoZGVmdW4gbWFyay13b3JkLWZvcndhcmQgKCZvcHRpb25hbCBudW1i ZXItb2Ytd29yZHMpCisgICJNYXJrIE5VTUJFUi1PRi1XT1JEUyB3b3JkcyBmb3J3YXJkLgorCisg UmVwZWF0ZWQgY2FsbHMgdG8gdGhpcyBtYXJrIG1vcmUgd29yZHMuIgorICAoaW50ZXJhY3RpdmUg InAiKQorICAobWFyay0taGVscGVyICMnZm9yd2FyZC13b3JkIChvciBudW1iZXItb2Ytd29yZHMg MSkpKQorCisoZGVmdW4gbWFyay13b3JkLWJhY2t3YXJkICgmb3B0aW9uYWwgbnVtYmVyLW9mLXdv cmRzKQorICAiTWFyayBOVU1CRVItT0YtV09SRFMgd29yZHMgYmFja3dhcmQuCisKKyBSZXBlYXRl ZCBjYWxscyB0byB0aGlzIG1hcmsgbW9yZSB3b3Jkcy4iCisgIChpbnRlcmFjdGl2ZSAicCIpCisg IChtYXJrLS1oZWxwZXIgIydmb3J3YXJkLXdvcmQgKC0gKG9yIG51bWJlci1vZi13b3JkcyAxKSkp KQorCiAoZGVmdW4gbWFyay13b3JkICgmb3B0aW9uYWwgYXJnIGFsbG93LWV4dGVuZCkKICAgIlNl dCBtYXJrIEFSRyB3b3JkcyBhd2F5IGZyb20gcG9pbnQuCiBUaGUgcGxhY2UgbWFyayBnb2VzIGlz IHRoZSBzYW1lIHBsYWNlIFxcW2ZvcndhcmQtd29yZF0gd291bGQKZGlmZiAtLWdpdCBhL2xpc3Av dGV4dG1vZGVzL3BhZ2UuZWwgYi9saXNwL3RleHRtb2Rlcy9wYWdlLmVsCmluZGV4IDg2YTI3NjJi MGVlLi5hZmViZDhmZGIyNSAxMDA2NDQKLS0tIGEvbGlzcC90ZXh0bW9kZXMvcGFnZS5lbAorKysg Yi9saXNwL3RleHRtb2Rlcy9wYWdlLmVsCkBAIC03MSw2ICs3MSwyMCBAQCBiYWNrd2FyZC1wYWdl CiAgIChvciBjb3VudCAoc2V0cSBjb3VudCAxKSkKICAgKGZvcndhcmQtcGFnZSAoLSBjb3VudCkp KQogCisoZGVmdW4gbWFyay1wYWdlLWZvcndhcmQgKCZvcHRpb25hbCBudW1iZXItb2YtcGFnZXMp CisgICJNYXJrIE5VTUJFUi1PRi1QQUdFUyBwYWdlcyBmb3J3YXJkLgorCisgUmVwZWF0ZWQgY2Fs bHMgdG8gdGhpcyBtYXJrIG1vcmUgcGFnZXMuIgorICAoaW50ZXJhY3RpdmUgInAiKQorICAobWFy ay0taGVscGVyICMnZm9yd2FyZC1wYWdlIChvciBudW1iZXItb2YtcGFnZXMgMSkpKQorCisoZGVm dW4gbWFyay1wYWdlLWJhY2t3YXJkICgmb3B0aW9uYWwgbnVtYmVyLW9mLXBhZ2VzKQorICAiTWFy ayBOVU1CRVItT0YtUEFHRVMgcGFnZXMgYmFja3dhcmQuCisKKyBSZXBlYXRlZCBjYWxscyB0byB0 aGlzIG1hcmsgbW9yZSBwYWdlcy4iCisgIChpbnRlcmFjdGl2ZSAicCIpCisgIChtYXJrLS1oZWxw ZXIgIydmb3J3YXJkLXBhZ2UgKC0gKG9yIG51bWJlci1vZi1wYWdlcyAxKSkpKQorCiAoZGVmdW4g bWFyay1wYWdlICgmb3B0aW9uYWwgYXJnKQogICAiUHV0IG1hcmsgYXQgZW5kIG9mIHBhZ2UsIHBv aW50IGF0IGJlZ2lubmluZy4KIEEgbnVtZXJpYyBhcmcgc3BlY2lmaWVzIHRvIG1vdmUgZm9yd2Fy ZCBvciBiYWNrd2FyZCBieSB0aGF0IG1hbnkgcGFnZXMsCmRpZmYgLS1naXQgYS9saXNwL3RleHRt b2Rlcy9wYXJhZ3JhcGhzLmVsIGIvbGlzcC90ZXh0bW9kZXMvcGFyYWdyYXBocy5lbAppbmRleCA2 YzMzMzgwYjZiZC4uYTI3OGQ0ODU2ODEgMTAwNjQ0Ci0tLSBhL2xpc3AvdGV4dG1vZGVzL3BhcmFn cmFwaHMuZWwKKysrIGIvbGlzcC90ZXh0bW9kZXMvcGFyYWdyYXBocy5lbApAQCAtMzYwLDYgKzM2 MCwyMCBAQCBiYWNrd2FyZC1wYXJhZ3JhcGgKICAgKG9yIGFyZyAoc2V0cSBhcmcgMSkpCiAgIChm b3J3YXJkLXBhcmFncmFwaCAoLSBhcmcpKSkKIAorKGRlZnVuIG1hcmstcGFyYWdyYXBoLWZvcndh cmQgKCZvcHRpb25hbCBudW1iZXItb2YtcGFyYWdyYXBocykKKyAgIk1hcmsgTlVNQkVSLU9GLVBB UkFHUkFQSFMgcGFyYWdyYXBocyBmb3J3YXJkLgorCisgUmVwZWF0ZWQgY2FsbHMgdG8gdGhpcyBt YXJrIG1vcmUgcGFyYWdyYXBocy4iCisgIChpbnRlcmFjdGl2ZSAicCIpCisgIChtYXJrLS1oZWxw ZXIgIydmb3J3YXJkLXBhcmFncmFwaCAob3IgbnVtYmVyLW9mLXBhcmFncmFwaHMgMSkpKQorCiso ZGVmdW4gbWFyay1wYXJhZ3JhcGgtYmFja3dhcmQgKCZvcHRpb25hbCBudW1iZXItb2YtcGFyYWdy YXBocykKKyAgIk1hcmsgTlVNQkVSLU9GLVBBUkFHUkFQSFMgcGFyYWdyYXBocyBiYWNrd2FyZC4K KworIFJlcGVhdGVkIGNhbGxzIHRvIHRoaXMgbWFyayBtb3JlIHBhcmFncmFwaHMuIgorICAoaW50 ZXJhY3RpdmUgInAiKQorICAobWFyay0taGVscGVyICMnZm9yd2FyZC1wYXJhZ3JhcGggKC0gKG9y IG51bWJlci1vZi1wYXJhZ3JhcGhzIDEpKSkpCisKIChkZWZ1biBtYXJrLXBhcmFncmFwaCAoJm9w dGlvbmFsIGFyZyBhbGxvdy1leHRlbmQpCiAgICJQdXQgcG9pbnQgYXQgYmVnaW5uaW5nIG9mIHRo aXMgcGFyYWdyYXBoLCBtYXJrIGF0IGVuZC4KIFRoZSBwYXJhZ3JhcGggbWFya2VkIGlzIHRoZSBv bmUgdGhhdCBjb250YWlucyBwb2ludCBvciBmb2xsb3dzIHBvaW50LgpkaWZmIC0tZ2l0IGEvdGVz dC9saXNwL2VtYWNzLWxpc3AvbGlzcC10ZXN0cy5lbCBiL3Rlc3QvbGlzcC9lbWFjcy1saXNwL2xp c3AtdGVzdHMuZWwKaW5kZXggMmU1ZTJhNzQwYjEuLjNlMjhmNzIzMmU1IDEwMDY0NAotLS0gYS90 ZXN0L2xpc3AvZW1hY3MtbGlzcC9saXNwLXRlc3RzLmVsCisrKyBiL3Rlc3QvbGlzcC9lbWFjcy1s aXNwL2xpc3AtdGVzdHMuZWwKQEAgLTExNiw2ICsxMTYsMjA3IEBAIGxpc3AtYmFja3dhcmQtc2V4 cC0yLWJvYnAtYW5kLXN1YnNlcXVlbnQKICAgICAoc2hvdWxkIChudWxsIDs7IChzaG91bGQtZXJy b3IgOzsgTm8sIHBlciAjMTM5OTQKICAgICAgKGZvcndhcmQtc2V4cCAtMSkpKSkpCiAKKyhlcnQt ZGVmdGVzdCBtYXJrLXNleHAtZm9yd2FyZC1vbmUtZm9yd2FyZC1jaGVjay1wb2ludCAoKQorICAo c2hvdWxkIChlcXVhbCAxNAorICAgICAgICAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlciAoaW5z ZXJ0ICIoMSAyKQorKDMgNCA1KQorKDYpCisoNyA4KSIpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChlbmQtb2YtbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG1hcmstc2V4cC1mb3J3YXJkKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAocG9pbnQpKSkpKQorCisoZXJ0LWRlZnRlc3QgbWFyay1zZXhwLWZv cndhcmQtb25lLWZvcndhcmQtcGFzcy12YWx1ZS1jaGVjay1wb2ludCAoKQorICAoc2hvdWxkIChl cXVhbCAxNAorICAgICAgICAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlciAoaW5zZXJ0ICIoMSAy KQorKDMgNCA1KQorKDYpCisoNyA4KSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChlbmQtb2YtbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG1hcmstc2V4cC1mb3J3YXJkIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChwb2ludCkpKSkpCisKKyhlcnQtZGVmdGVzdCBtYXJrLXNleHAtZm9yd2FyZC1v bmUtZm9yd2FyZC1jaGVjay1yZWdpb24gKCkKKyAgKHNob3VsZCAoZXF1YWwgIig2KSIKKyAgICAg ICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIgKGluc2VydCAiKDEgMikKKygzIDQgNSkKKyg2 KQorKDcgOCkiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFy IChwb2ludC1taW4pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yd2Fy ZC1saW5lIDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXJrLXNleHAt Zm9yd2FyZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJz dHJpbmctbm8tcHJvcGVydGllcyAocmVnaW9uLWJlZ2lubmluZykKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVnaW9u LWVuZCkpKSkpKQorCisoZXJ0LWRlZnRlc3QgbWFyay1zZXhwLWZvcndhcmQtb25lLWZvcndhcmQt cGFzcy12YWx1ZS1jaGVjay1yZWdpb24gKCkKKyAgKHNob3VsZCAoZXF1YWwgIig2KSIKKyAgICAg ICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIgKGluc2VydCAiKDEgMikKKygzIDQgNSkKKyg2 KQorKDcgOCkiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFy IChwb2ludC1taW4pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yd2Fy ZC1saW5lIDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXJrLXNleHAt Zm9yd2FyZCAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1 YnN0cmluZy1uby1wcm9wZXJ0aWVzIChyZWdpb24tYmVnaW5uaW5nKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWdp b24tZW5kKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBtYXJrLXNleHAtYmFja3dhcmQtb25lLWJhY2t3 YXJkLWNoZWNrLXBvaW50ICgpCisgIChzaG91bGQgKGVxdWFsIDE0CisgICAgICAgICAgICAgICAg ICh3aXRoLXRlbXAtYnVmZmVyIChpbnNlcnQgIigxIDIpCisoMyA0IDUpCisoNikKKyg3IDgpIikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWlu KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcndhcmQtbGluZSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZC1vZi1saW5lKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobWFyay1zZXhwLWJhY2t3YXJkKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkpKQorCisoZXJ0LWRlZnRlc3QgbWFy ay1zZXhwLWJhY2t3YXJkLW9uZS1iYWNrd2FyZC1jaGVjay1yZWdpb24gKCkKKyAgKHNob3VsZCAo ZXF1YWwgIigzIDQgNSkiCisgICAgICAgICAgICAgICAgICh3aXRoLXRlbXAtYnVmZmVyIChpbnNl cnQgIigxIDIpCisoMyA0IDUpCisoNikKKyg3IDgpIikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGZvcndhcmQtbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGVuZC1vZi1saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobWFyay1zZXhwLWJhY2t3YXJkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChyZWdpb24tYmVnaW5uaW5nKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChyZWdpb24tZW5kKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBtYXJrLXNleHAtb25lLWZv cndhcmQtdGhlbi1vbmUtYmFja3dhcmQtY2hlY2stcG9pbnQgKCkKKyAgKHNob3VsZCAoZXF1YWwg NworICAgICAgICAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlciAoaW5zZXJ0ICIoMSAyKQorKDMg NCA1KQorKDYpCisoNyA4KSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChn b3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChmb3J3YXJkLWxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmQt b2YtbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcmstc2V4cC1m b3J3YXJkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFyay1zZXhwLWJh Y2t3YXJkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkpKQor CisoZXJ0LWRlZnRlc3QgbWFyay1zZXhwLW9uZS1mb3J3YXJkLXRoZW4tb25lLWJhY2t3YXJkLWNo ZWNrLXJlZ2lvbiAoKQorICAoc2hvdWxkIChlcXVhbCAiKDMgNCA1KQorKDYpIgorICAgICAgICAg ICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlciAoaW5zZXJ0ICIoMSAyKQorKDMgNCA1KQorKDYpCiso NyA4KSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBv aW50LW1pbikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3J3YXJkLWxp bmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmQtb2YtbGluZSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcmstc2V4cC1mb3J3YXJkKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFyay1zZXhwLWJhY2t3YXJkKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9w ZXJ0aWVzIChyZWdpb24tYmVnaW5uaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWdpb24tZW5kKSkpKSkpCisK KyhlcnQtZGVmdGVzdCBtYXJrLXNleHAtb25lLWZvcndhcmQtdGhlbi1vbmUtYmFja3dhcmQtdGhl bi1vbmUtZm9yd2FyZC1jaGVjay1wb2ludCAoKQorICAoc2hvdWxkIChlcXVhbCA3CisgICAgICAg ICAgICAgICAgICh3aXRoLXRlbXAtYnVmZmVyIChpbnNlcnQgIigxIDIpCisoMyA0IDUpCisoNikK Kyg3IDgpIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAo cG9pbnQtbWluKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcndhcmQt bGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZC1vZi1saW5lKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFyay1zZXhwLWZvcndhcmQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXJrLXNleHAtYmFja3dhcmQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXJrLXNleHAtZm9yd2FyZCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpKSkKKworKGVydC1kZWZ0 ZXN0IG1hcmstc2V4cC1vbmUtZm9yd2FyZC10aGVuLW9uZS1iYWNrd2FyZC10aGVuLW9uZS1mb3J3 YXJkLWNoZWNrLXJlZ2lvbiAoKQorICAoc2hvdWxkIChlcXVhbCA3CisgICAgICAgICAgICAgICAg ICh3aXRoLXRlbXAtYnVmZmVyIChpbnNlcnQgIigxIDIpCisoMyA0IDUpCisoNikKKyg3IDgpIikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWlu KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcndhcmQtbGluZSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZC1vZi1saW5lKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobWFyay1zZXhwLWZvcndhcmQpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChtYXJrLXNleHAtYmFja3dhcmQpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChtYXJrLXNleHAtZm9yd2FyZCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpKSkKKworCisKKyhlcnQtZGVmdGVzdCBt YXJrLXNleHAtZm9yd2FyZC1vbmUtZm9yd2FyZC1vbmUtYmFjay1vbmUtZm9yd2FyZC1jaGVjay1y ZWdpb24gKCkKKyAgKHNob3VsZCAoZXF1YWwgIigzIDQgNSkKKyg2KQorKDcgOCkiCisgICAgICAg ICAgICAgICAgICh3aXRoLXRlbXAtYnVmZmVyIChpbnNlcnQgIigxIDIpCisoMyA0IDUpCisoNikK Kyg3IDgpIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAo cG9pbnQtbWluKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcndhcmQt bGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZC1vZi1saW5lKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFyay1zZXhwLWZvcndhcmQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXJrLXNleHAtYmFja3dhcmQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXJrLXNleHAtZm9yd2FyZCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJv cGVydGllcyAocmVnaW9uLWJlZ2lubmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVnaW9uLWVuZCkpKSkpKQor CisoZXJ0LWRlZnRlc3QgbWFyay1zZXhwLWZvcndhcmQtdHdvLWZvcndhcmQtY2hlY2stcG9pbnQg KCkKKyAgKHNob3VsZCAoZXF1YWwgMTQKKyAgICAgICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZm ZXIgKGluc2VydCAiKDEgMikKKygzIDQgNSkKKyg2KQorKDcgOCkiKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZW5kLW9mLWxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChtYXJrLXNleHAtZm9yd2FyZCAyKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAocG9pbnQpKSkpKQorCisoZXJ0LWRlZnRlc3QgbWFyay1zZXhwLWZvcndhcmQt dHdvLWZvcndhcmQtY2hlY2stcmVnaW9uICgpCisgIChzaG91bGQgKGVxdWFsICIKKyg2KQorKDcg OCkiCisgICAgICAgICAgICAgICAgICh3aXRoLXRlbXAtYnVmZmVyIChpbnNlcnQgIigxIDIpCiso MyA0IDUpCisoNikKKyg3IDgpIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGZvcndhcmQtbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVu ZC1vZi1saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFyay1zZXhw LWZvcndhcmQgMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1z dWJzdHJpbmctbm8tcHJvcGVydGllcyAocmVnaW9uLWJlZ2lubmluZykKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVn aW9uLWVuZCkpKSkpKQorCisoZXJ0LWRlZnRlc3QgbWFyay1zZXhwLWJhY2t3YXJkLXR3by1iYWNr d2FyZC1jaGVjay1wb2ludCAoKQorICAoc2hvdWxkIChlcXVhbCAxNAorICAgICAgICAgICAgICAg ICAod2l0aC10ZW1wLWJ1ZmZlciAoaW5zZXJ0ICIoMSAyKQorKDMgNCA1KQorKDYpCisoNyA4KSIp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1p bikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmQtb2YtbGluZSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcmstc2V4cC1iYWNrd2FyZCAyKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkpKQorCisoZXJ0LWRlZnRlc3Qg bWFyay1zZXhwLWJhY2t3YXJkLXR3by1iYWNrd2FyZC1jaGVjay1yZWdpb24gKCkKKyAgKHNob3Vs ZCAoZXF1YWwgIigxIDIpCisoMyA0IDUpIgorICAgICAgICAgICAgICAgICAod2l0aC10ZW1wLWJ1 ZmZlciAoaW5zZXJ0ICIoMSAyKQorKDMgNCA1KQorKDYpCisoNyA4KSIpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChlbmQtb2YtbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1hcmstc2V4cC1iYWNrd2FyZCAyKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChyZWdpb24tYmVn aW5uaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChyZWdpb24tZW5kKSkpKSkpCisKIChlcnQtZGVmdGVzdCBsaXNw LWRlbGV0ZS1wYWlyLXBhcmVucyAoKQogICAiVGVzdCBcXFtkZWxldGUtcGFpcl0gd2l0aCBwYXJl bnMuIgogICAod2l0aC10ZW1wLWJ1ZmZlcgpAQCAtMzY5LDYgKzU3MCw2NyBAQCBlbGlzcC10ZXN0 cy13aXRoLXRlbXAtYnVmZmVyCiAiCiAgICAgIlRlc3QgYnVmZmVyIGZvciBgbWFyay1kZWZ1bicu IikpCiAKKyhlcnQtZGVmdGVzdCBtYXJrLWRlZnVuLWZvcndhcmQtb25lLWZvcndhcmQtY2hlY2st cG9pbnQgKCkKKyAgKHNob3VsZCAoZXF1YWwgMTgKKyAgICAgICAgICAgICAgICAgKHdpdGgtdGVt cC1idWZmZXIgKGluc2VydCAiKGRlZnVuIGZvbyAoKSAyKQorCisoZGVmdW4gYmFyICgpIDMpIikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQt bWluKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcndhcmQtbGlu ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcmstZGVmdW4tZm9y d2FyZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpKSkK KworKGVydC1kZWZ0ZXN0IG1hcmstZGVmdW4tZm9yd2FyZC1vbmUtZm9yd2FyZC1jaGVjay1yZWdp b24gKCkKKyAgKHNob3VsZCAoZXF1YWwgIgorKGRlZnVuIGJhciAoKSAzKSIKKyAgICAgICAgICAg ICAgICAgKHdpdGgtdGVtcC1idWZmZXIgKGluc2VydCAiKGRlZnVuIGZvbyAoKSAyKQorCisoZGVm dW4gYmFyICgpIDMpIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdv dG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGZvcndhcmQtbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG1hcmstZGVmdW4tZm9yd2FyZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocmVnaW9uLWJlZ2lubmluZykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAocmVnaW9uLWVuZCkpKSkpKQorCisoZXJ0LWRlZnRlc3QgbWFyay1kZWZ1bi1i YWNrd2FyZC1vbmUtYmFja3dhcmQtY2hlY2stcG9pbnQgKCkKKyAgKHNob3VsZCAoZXF1YWwgMTgK KyAgICAgICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIgKGluc2VydCAiKGRlZnVuIGZvbyAo KSAyKQorCisoZGVmdW4gYmFyICgpIDMpIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGZvcndhcmQtbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1hcmstZGVmdW4tYmFja3dhcmQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChwb2ludCkpKSkpCisKKyhlcnQtZGVmdGVzdCBtYXJrLWRlZnVuLWJh Y2t3YXJkLW9uZS1iYWNrd2FyZC1jaGVjay1yZWdpb24gKCkKKyAgKHNob3VsZCAoZXF1YWwgIihk ZWZ1biBmb28gKCkgMikKKyIKKyAgICAgICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIgKGlu c2VydCAiKGRlZnVuIGZvbyAoKSAyKQorCisoZGVmdW4gYmFyICgpIDIpIikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcndhcmQtbGluZSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcmstZGVmdW4tYmFja3dhcmQpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItc3Vic3RyaW5nLW5vLXBy b3BlcnRpZXMgKHJlZ2lvbi1iZWdpbm5pbmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlZ2lvbi1lbmQpKSkp KSkKKworCisoZXJ0LWRlZnRlc3QgbWFyay1kZWZ1bi1iYWNrd2FyZC10d28tYmFja3dhcmQtY2hl Y2stcmVnaW9uICgpCisgIChzaG91bGQgKGVxdWFsICIoZGVmdW4gZm9vICgpIDIpCisoZGVmdW4g YmFyICgpIDMpIgorICAgICAgICAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlciAoaW5zZXJ0ICIo ZGVmdW4gZm9vICgpIDIpCisoZGVmdW4gYmFyICgpIDMpCisoZGVmdW4gYmF6ICgpIDUpCisoZGVm dW4gYmlmZiAoKSA3KSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChn b3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChmb3J3YXJkLWxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChlbmQtb2YtbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1h cmstZGVmdW4tYmFja3dhcmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChtYXJrLWRlZnVuLWJhY2t3YXJkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChyZWdpb24tYmVnaW5uaW5nKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChyZWdpb24tZW5kKSkpKSkpCisKKwogOzs7IGVuZC1vZi1kZWZ1bgogCiAo ZXJ0LWRlZnRlc3QgZW5kLW9mLWRlZnVuLXR3aWNlICgpCmRpZmYgLS1naXQgYS90ZXN0L2xpc3Av c2ltcGxlLXRlc3RzLmVsIGIvdGVzdC9saXNwL3NpbXBsZS10ZXN0cy5lbAppbmRleCAyOGQ4MTIw ZjE0My4uYmE0NjBkM2NjMDEgMTAwNjQ0Ci0tLSBhL3Rlc3QvbGlzcC9zaW1wbGUtdGVzdHMuZWwK KysrIGIvdGVzdC9saXNwL3NpbXBsZS10ZXN0cy5lbApAQCAtMTE1LDYgKzExNSwyMCBAQCBzaW1w bGUtdHJhbnNwb3NlLXN1YnIKICAgKHNob3VsZCAoZXF1YWwgKHNpbXBsZS10ZXN0LS10cmFuc3Bv c2l0aW9ucyAodHJhbnNwb3NlLXNleHBzIC0yKSkKICAgICAgICAgICAgICAgICAgJygiKHMxKSAo czQpIiAuICIgKHMyKSAoczMpIChzNSkiKSkpKQogCisMCis7OzsgYG1hcmstd29yZC1mb3J3YXJk JywgYG1hcmstd29yZC1iYWNrd2FyZCcKKyhlcnQtZGVmdGVzdCBtYXJrLXdvcmQtZm9yd2FyZC10 d28tYmFja3dhcmRzLWNoZWNrLXJlZ2lvbiAoKQorICAoc2hvdWxkIChlcXVhbCAiZGVmZyBoaSBq IgorICAgICAgICAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgICAgICAgICAgICAg IChpbnNlcnQgImFiYyBkZWZnIGhpIGoga2xtbm8iKQorICAgICAgICAgICAgICAgICAgIChnb3Rv LWNoYXIgKHBvaW50LW1pbikpCisgICAgICAgICAgICAgICAgICAgKGZvcndhcmQtY2hhciAxMSk7 O2FmdGVyICJoaSIKKyAgICAgICAgICAgICAgICAgICAobWFyay13b3JkLWZvcndhcmQpCisgICAg ICAgICAgICAgICAgICAgKG1hcmstd29yZC1iYWNrd2FyZCkKKyAgICAgICAgICAgICAgICAgICAo bWFyay13b3JkLWJhY2t3YXJkKQorICAgICAgICAgICAgICAgICAgIChidWZmZXItc3Vic3RyaW5n LW5vLXByb3BlcnRpZXMgKHJlZ2lvbi1iZWdpbm5pbmcpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVnaW9uLWVuZCkpKSkpKQorCiAMCiA7Ozsg YG5ld2xpbmUnCiAoZXJ0LWRlZnRlc3QgbmV3bGluZSAoKQpkaWZmIC0tZ2l0IGEvdGVzdC9saXNw L3RleHRtb2Rlcy9wYWdlLXRlc3RzLmVsIGIvdGVzdC9saXNwL3RleHRtb2Rlcy9wYWdlLXRlc3Rz LmVsCmluZGV4IDRiZmE4ZDk5NDFjLi4wZjE0MmVlNTA1YiAxMDA2NDQKLS0tIGEvdGVzdC9saXNw L3RleHRtb2Rlcy9wYWdlLXRlc3RzLmVsCisrKyBiL3Rlc3QvbGlzcC90ZXh0bW9kZXMvcGFnZS10 ZXN0cy5lbApAQCAtNTcsNiArNTcsMTcgQEAgcGFnZS10ZXN0cy1iYWNrd2FyZC1wYWdlCiAgICAg KGJhY2t3YXJkLXBhZ2UgLTIpCiAgICAgKHNob3VsZCAoPSAocG9pbnQpIChwb2ludC1tYXgpKSkp KQogCisoZXJ0LWRlZnRlc3QgbWFyay1wYWdlLWZvcndhcmQtdHdpY2UtYmFja3dhcmQtb25jZWNo ZWNrLXJlZ2lvbiAoKQorICAoc2hvdWxkIChlcXVhbCAiXG5iYXJcbgxcbmJhelxuDFxuYmlmZlxu DCIKKyAgICAgICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIgKGluc2VydCAiZm9vXG4MXG5i YXJcbgxcbmJhelxuDFxuYmlmZlxuDFxuYmFuZyIpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgMykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG1hcmstcGFnZS1mb3J3YXJkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobWFyay1wYWdlLWZvcndhcmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChtYXJrLXBhZ2UtYmFja3dhcmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgKHJlZ2lvbi1iZWdpbm5pbmcp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHJlZ2lvbi1lbmQpKSkpKSkKKwogKGRlZnVuIHBhZ2UtdGVzdHMtLXJlZ2lv bi1zdHJpbmcgKCkKICAgIlJldHVybiB0aGUgY29udGVudHMgb2YgdGhlIHJlZ2lvbiBhcyBhIHN0 cmluZy4iCiAgIChidWZmZXItc3Vic3RyaW5nIChyZWdpb24tYmVnaW5uaW5nKSAocmVnaW9uLWVu ZCkpKQpkaWZmIC0tZ2l0IGEvdGVzdC9saXNwL3RleHRtb2Rlcy9wYXJhZ3JhcGhzLXRlc3RzLmVs IGIvdGVzdC9saXNwL3RleHRtb2Rlcy9wYXJhZ3JhcGhzLXRlc3RzLmVsCmluZGV4IDgxZTg4MTEz YzJhLi43NWEwOTgxMWM3ZCAxMDA2NDQKLS0tIGEvdGVzdC9saXNwL3RleHRtb2Rlcy9wYXJhZ3Jh cGhzLXRlc3RzLmVsCisrKyBiL3Rlc3QvbGlzcC90ZXh0bW9kZXMvcGFyYWdyYXBocy10ZXN0cy5l bApAQCAtNTQsNiArNTQsNDAgQEAgcGFyYWdyYXBocy10ZXN0cy1tYXJrLXBhcmFncmFwaAogICAg IChzaG91bGQgKGVxdWFsIChtYXJrKSA3KSkpKQogOzs7ICAoc2hvdWxkLWVycm9yIChtYXJrLXBh cmFncmFwaCAwKSkpCiAKKyhlcnQtZGVmdGVzdCBwYXJhZ3JhcGhzLXRlc3RzLW1hcmstcGFyYWdy YXBoLWZvcndhcmQtdHdvLWJhY2t3YXJkLWNoZWNrLXJlZ2lvbiAoKQorICAoc2hvdWxkIChlcXVh bCAiCitBIHNlY29uZCBiZWdpbnMgaGVyZSwgYnV0IGlzCit3YXkgd2F5IGxvbmdlciwgYnV0IG9u IG11bHRpcGxlCitsaW5lcyBiZWNhdXNlIHRoZSBwYXJhZ3JhcGgKK2lzIGZpbGxlZC4uCisKK0Fu ZCBhIHRoaXJkIHBhcmFncmFwaC4gSXQncyBraW5kCitvZiBzaG9ydC4KKworUGFyYWdyYXBoIGZv dXIhIEl0J3Mgc2hvcnRlci4KKyIKKyAgICAgICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIK KyAgICAgICAgICAgICAgICAgICAoaW5zZXJ0ICJGaXJzdCBwYXJhZ3JhcGggaGVyZS4KKworQSBz ZWNvbmQgYmVnaW5zIGhlcmUsIGJ1dCBpcword2F5IHdheSBsb25nZXIsIGJ1dCBvbiBtdWx0aXBs ZQorbGluZXMgYmVjYXVzZSB0aGUgcGFyYWdyYXBoCitpcyBmaWxsZWQuLgorCitBbmQgYSB0aGly ZCBwYXJhZ3JhcGguIEl0J3Mga2luZAorb2Ygc2hvcnQuCisKK1BhcmFncmFwaCBmb3VyISBJdCdz IHNob3J0ZXIuCisKK1RoZSBzaG9ydGVzdCB5ZXQuIikKKyAgICAgICAgICAgICAgICAgICAoZ290 by1jaGFyIChwb2ludC1taW4pKQorICAgICAgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgOSkK KyAgICAgICAgICAgICAgICAgICAobWFyay1wYXJhZ3JhcGgtZm9yd2FyZCkKKyAgICAgICAgICAg ICAgICAgICAobWFyay1wYXJhZ3JhcGgtYmFja3dhcmQpCisgICAgICAgICAgICAgICAgICAgKG1h cmstcGFyYWdyYXBoLWJhY2t3YXJkKQorICAgICAgICAgICAgICAgICAgIChidWZmZXItc3Vic3Ry aW5nLW5vLXByb3BlcnRpZXMgKHJlZ2lvbi1iZWdpbm5pbmcpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVnaW9uLWVuZCkpKSkpKQorCiAoZXJ0 LWRlZnRlc3QgcGFyYWdyYXBocy10ZXN0cy1raWxsLXBhcmFncmFwaCAoKQogICAod2l0aC10ZW1w LWJ1ZmZlcgogICAgIChpbnNlcnQgIkFBXG5BQVxuXG5CQlxuQkJcbiIpCi0tIAoyLjM4LjQKCg== --0000000000000f699705fb2dc7ed--