From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Robert Burks Newsgroups: gmane.emacs.bugs Subject: bug#70185: [PATCH] Fix + ert for numerous bugs involving re-aliasing, uninterned symbols, and watchers (4 of 9) Date: Thu, 4 Apr 2024 04:45:40 -0400 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000ddb42b06154161fb" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="19904"; mail-complaints-to="usenet@ciao.gmane.io" To: 70185@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Apr 04 11:18:43 2024 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 1rsJF1-0004ug-Qn for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 04 Apr 2024 11:18:40 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rsJER-0007w8-4K; Thu, 04 Apr 2024 05:18:03 -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 1rsJEO-0007tV-SW for bug-gnu-emacs@gnu.org; Thu, 04 Apr 2024 05:18:00 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rsJEO-0000Cn-K2 for bug-gnu-emacs@gnu.org; Thu, 04 Apr 2024 05:18:00 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rsJET-0004nv-EL for bug-gnu-emacs@gnu.org; Thu, 04 Apr 2024 05:18:05 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Robert Burks Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 04 Apr 2024 09:18:05 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 70185 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: GNU BUGS Original-Received: via spool by submit@debbugs.gnu.org id=B.171222227618313 (code B ref -1); Thu, 04 Apr 2024 09:18:05 +0000 Original-Received: (at submit) by debbugs.gnu.org; 4 Apr 2024 09:17:56 +0000 Original-Received: from localhost ([127.0.0.1]:60537 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rsJEJ-0004lB-6H for submit@debbugs.gnu.org; Thu, 04 Apr 2024 05:17:56 -0400 Original-Received: from lists.gnu.org ([2001:470:142::17]:34636) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rsIkg-0001tK-5P for submit@debbugs.gnu.org; Thu, 04 Apr 2024 04:47:19 -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 1rsIkV-0002jB-Vz for bug-gnu-emacs@gnu.org; Thu, 04 Apr 2024 04:47:08 -0400 Original-Received: from mail-qv1-xf2e.google.com ([2607:f8b0:4864:20::f2e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rsIkP-0002D7-Dv for bug-gnu-emacs@gnu.org; Thu, 04 Apr 2024 04:47:07 -0400 Original-Received: by mail-qv1-xf2e.google.com with SMTP id 6a1803df08f44-69629b4ae2bso4521646d6.3 for ; Thu, 04 Apr 2024 01:47:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712220419; x=1712825219; darn=gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=ghwoLdhbaJVqAH0A78/ukTMiUKfSuwEM+jYq9+pttPY=; b=GJy9p4cIRMG+7P88I8tFQs/9ws46oi5h+5pi1aN0KUOkTSymp+jDw5CiUAUMavBsNR 9gQtKSdFrFUDwI21/cNTTo2ho3Pd7b2bbq0kFL5IHVCwVe3HaNuiOI+xaxS7DXh0CBwz zUU4+To/VKg9w9QWmfHIRqYKlAYydgLZubug3SXvwWy6HOgzeAsFuEqquMe3e44DGN+L S8PrNgaeZDiqJ6rnZs1AqUJrnRRTI55x131v+LG8bSW+AMa2w2oluMUjcqs4OUIR1ej7 +eEIyiLHGoaw8PPoxwvdtkMn05t1Ya9+5zxMP2V2qgmXajYX0ZHdxh0HmU7AKAQOhrwZ QEnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712220419; x=1712825219; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=ghwoLdhbaJVqAH0A78/ukTMiUKfSuwEM+jYq9+pttPY=; b=UsbXNRGiS/HNflH8fow6Ibnwq+PCIMOWnAbj92WVYc/5NvU8LKF7FFsyF3DKiIxOzb CB/VgT4d5dp/kCqgVZpFMLDJoEZNfza9Nr4W1c4EpRoSMyjFbyM2gJMFKWwDuE/kDjEy Vgv1T81HQC3PdcSFTD3zLTX4q2I+F9QG9KDuNY/T5R4uO++nxXpj8A6haEUI8RERwVrF aqqwJEHV01TWwciPEiezeEW8mCTSktoDmJVUYfHyVnQHMF6r/Pi3Kk1TaxdlTFfkSbTh 5uMT79OAVZb+zbmUb1t8NtzDrnU876z01GdUXYIXVDSWVykrUej0nMH740Th51mdL4Mx 1S+A== X-Gm-Message-State: AOJu0YwJz6hLVBQ2aJ3ZNwBUTvwX9l+ZDUwAsd5PcLxoUFBtx9sw2PXE mXvAzHsczP6OA7aade4sWlBwDX59jIZHleq1lJt3IvG+JX5Q5I+74pN+Eir1gAi8h1sPe0L2sk+ A247XYzD3AZUiXGSI1sKS67wwcE2wtWs= X-Google-Smtp-Source: AGHT+IGpxpXJcpEqzzq8LR/F9ScojzxC5qUxA2c1unLn519FoWoWkut1Jv8YQ6QFpilzgzzuql5IxpzSYVRhIIjXdgI= X-Received: by 2002:a05:6214:1d0d:b0:699:271b:26b with SMTP id e13-20020a0562141d0d00b00699271b026bmr2029304qvd.60.1712220419219; Thu, 04 Apr 2024 01:46:59 -0700 (PDT) Received-SPF: pass client-ip=2607:f8b0:4864:20::f2e; envelope-from=rburksdev@gmail.com; helo=mail-qv1-xf2e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Thu, 04 Apr 2024 05:17:46 -0400 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:282629 Archived-At: --000000000000ddb42b06154161fb Content-Type: multipart/alternative; boundary="000000000000ddb42a06154161f9" --000000000000ddb42a06154161f9 Content-Type: text/plain; charset="UTF-8" (4 of 9) Bug#00003a (Bypass watcher by adding an uninterned symbol as an alias before watcher.) Bug#00003b (re-aliasing the middle of a chain to a constant) Bug#00003c (re-aliasing the middle of a chain from an unwatched to a watched variable then writing from the end bypasses watching.) Bug#00003d (re-aliasing notifies the base variable watcher that it is becoming an alias) ** Bug recreations are at the end My patches for the three bugs prior essentially fix these bugs. The included patches are basically some clean up work and closing gaps when working with constants. That is, uninterned symbols would have worked as a side effect of the previous submissions. But some cleanup, flag management, and some small fixes for constants were left over. The last two bugs happen because 'trapped_write' is only "harmonized" across the obarray in the event of watcher adding and removing and not in the event of re-aliasing. I will show in testing that I was able to close up these bugs and also remove the need for "harmonizing". My previous patches fix the setting of the constant and the included patches enforce re-aliasing behavior. Oddly, existing testing calls 'defvar' on the alias prior to 'defvaralias' to seemingly side step the fact that they do not work with uninterned symbols. Maybe things have changed? As near as I can tell, the evaluation process (such as 'eval-sexp-add-defvars') seems to see that 'defvaralias' starts with 'def' and interns its arguments as part of evaluation. For now I was able to feed 'defvaralias' uninterned symbols using 'gensym' and 'make-symbol'. Should uninterned symbols be allowed to be a variable alias? Currently it is allowed and could be easily prevented in 'defvaralias'. Currently, the base variable being uninterned is also allowed, though as long as it is the only one and last in the chain the current system will work. Regardless of uninterned symbols being allowed the included patches apply as they remove the need to "harmonize" even for interned symbols (this "harmonizing" wasn't even occurring at all required times anyways). In regards to bug '3d' from above, if an alias of a watched variable gets re-aliased there should be no notification, the warning of losing value is all that should happen if the value is different. Currently, notification not only happens, it happens wrong (see example below). Consider a variable with a watcher function designed only to watch it. Then an alias is added and then re-aliased, suddenly the watcher function would receive notifications about symbols other than that which it was designed for. A watcher function should be able to assume that any notification if receives is for the operation applying to the base variable of any given alias chain. A base variable that has watchers and then becomes an alias is no longer a base variable. The only time a watcher should receive notifications for multiple symbols is if it is explicitly assigned to multiple variables/chains. That is a watcher function shouldn't gain additional symbols names being sent to it from a 'defvaralias' assignment happening somewhere along its alias chain. This allows one to write simple watchers for the general case without the need to anticipate future outside actions. Additionally, once a variable becomes an alias if it was watched those watchers should be removed (after notification that it is about to become an alias, which is questionable as to its actual value as a feature). We shouldn't save the watchers to fallback on in the event of re-aliasing as once a variable becomes an alias those watchers were made inaccessible (i.e. the user cannot add or remove watchers as those functions will follow the redirection). Notification should always be based on the 'base' variable only. When a watcher is assigned to an alias the assignment follows redirection and is applied to the base variable. Notifications when working properly use the base variable symbol name (this is existing behaviour and will continue). Ideally if one adds a watcher to a variable that will rely on the name of the symbol it should use 'Findirect_variable' on said variable to discover if it points elsewhere. Also, I have a missing feature(Fvaralias-p) ready to add after these nine emails. ---------------------------------------------------------------------------- Patch 0006: These functions were the only ones that checked for constant after the redirection loop, however, they were still using the original variable. I moved it to the top to make all these functions look alike and made them checking for constants along every step of redirection. Additionally, it eliminates an extra conversion that was occurring in the most common case. Patch 0007: makunbound was making an unneeded check for constant, it already happens after Fset called set_internal. Additionally, this check didn't follow redirection and the one in Fset will. Also, the very first thing set_internal does is call CHECK_SYMBOL. I eliminated the extra function call, call set_internal directly and let it do all the work. Patch 0008: Eliminated the usage of an enumeration as a boolean. Patch 0009: Eliminated the usage of an enumeration as a boolean. Additionally, the commentary had no mention of thread switching. This section of code and commentary mostly predates the addition of "SET_INTERNAL_THREAD_SWITCH" to the enumeration. Which points out a downside of using an enumeration as a boolean, someone can add to it or rearrange it and overlook its boolean usages. Patch 0010: Added commentary regarding input sanitation. Findirect_variable converts a Lisp_Object to Lisp_Symbol and then back to a Lisp_Object even when there is no alias redirection. I almost added brackets to make it go right through when there is no alias. However, I realized it had the added benefit that a calling function can use it to make sure their parameter is a bare symbol. Patch 0011: With all previous changes only 'TRAPPED_NOWRITE' will be copied to an alias that is explicitly aliased to a constant (or to another alias that was explicitly aliased to a constant). Other functions check for constant as they follow redirection all the way to the end. An alias set as constant cannot be re-aliased. I added checking in 'defvaralias' that will prevent any alias in the upstream of an alias that got re-aliased to a constant from being re-aliased itself (maybe we can allow them to be re-aliased, since they were not explicitly set? Though until then they are still perceived as constant to everything including 'defvaralias'). Because of previous bug fixes the other values of the flag along the chain are essentially ignored, so this is really just making the flag have a consistent value (i.e. SYMBOL_TRAPPED_WRITE only applies to non-aliases) and fixing gaps in re-aliasing. Patch 0012: This applies on top of the previous and is just to get rid of a needless conversion call. Patch 0013: Harmonizing is no longer required at all due to previous bug fixes. My testing attached along with all other regression tests passing proves this. Patch 0014: This is a full test showing that aliases and watchers now work with uninterned symbols (do we allow them is secondary). Using them allowed this test of aliases to not clutter up the global symbol space and have the test simply be garbage collected away (it's also repeatable interactively). Now that they work, maybe someone (me lol, I have testing applications for aliases themselves that could use this functionality) will find them to be a useful tool. But at least now they cannot be accidentally used and circumvent a watcher. (Please note the BUG# placeholder in three(3) places will need to be updated.) Patch 0015: Test for the specific chain breaking and re-aliasing bugs below. I placed this in data-tests.el because it involves watchers. (Please note the BUG# placeholder in seven(7) places will need to be updated.) Interestingly enough the uninterned symbols test actually stems from the very first test I attempted to write for the first bug. I often use uninterned symbols while testing as they make it easy to make tests that can be repeated without mucking up the symbol space. Bug Recreation------------------------------------------------------------------- This occurs because adding an uninterned alias before watchers are added makes them never get their 'trapped_write' flag set as they are never "harmonized". Bug#00003a (Bypass watcher by adding an uninterned symbol as alias before watcher) emacs -Q------------------------------------------------------------------------- (defvar results nil) results (defvar fake (gensym)) fake (defvar notsafe "I should be watched") notsafe (defvaralias fake 'notsafe) notsafe (add-variable-watcher 'notsafe (lambda (&rest args) (push args results))) nil (set fake "bypassed") "bypassed" notsafe "bypassed" results nil ;; There should be watch results Bug#00003a (Bypass watcher by adding an uninterned symbol as alias before watcher) emacs -Q------------------------------------------------------------------------- (defvar results nil) results (defvar fake (make-symbol "dummy")) fake (defvar notsafe "I should be watched") notsafe (defvaralias fake 'notsafe) notsafe (add-variable-watcher 'notsafe (lambda (&rest args) (push args results))) nil (set fake "bypassed") "bypassed" notsafe "bypassed" results nil Bug#00003b (re-aliasing the base/middle of a chain to a constant) emacs - Q------------------------------------------------------------------------ (defvar test 5) test (defvaralias 'testa1 'test) test (defvaralias 'testa2 'testa1) testa1 (defvaralias 'testa1 'nil) nil (set 'testa2 5) ;; makunbound works also 5 nil 5 ;; We just set a constant Bug#00003c (re-aliasing the middle of a chain from an unwatched to a watched variable then writing from the end bypasses watching.) emacs -Q------------------------------------------------------------------------- (defvar results nil) results ;; watched (defvar test 5) test ;; unwatched (defvar test2 100) test2 (add-variable-watcher 'test (lambda (&rest args) (push args results))) nil (defvaralias 'testa1 'test2) test2 (defvaralias 'testa2 'testa1) testa1 (defvaralias 'testa1 'test) test (set 'testa2 500) 500 test 500 results nil ;; There should be watch results Bug#00003d (re-aliasing notifies the base variable watcher that it is becoming an alias) emacs -Q------------------------------------------------------------------------- (defvar results nil) results (defvar test 5) test (defvar test2 10) test2 (add-variable-watcher 'test (lambda (&rest args) (push args results))) nil (defvaralias 'testa 'test) test (defvaralias 'testa 'test2) test2 results ((test test2 defvaralias nil)) test 5 testa 10 ;; 'test' is not becoming an alias of 'test2', 'testa' was re-aliased to 'test2'. ;; No notification should be made in this instance, the warning is sufficient. --000000000000ddb42a06154161f9 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
(4 of 9)

Bug#00003a (Bypass watcher by adding an un= interned symbol as an alias before watcher.)
Bug#00003b (re-aliasing the= middle of a chain to a constant)
Bug#00003c (re-aliasing the middle of = a chain from an unwatched to a watched
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 variable then writing from the end bypasses watching.)
Bug#00= 003d (re-aliasing notifies the base variable watcher that it is becoming an= alias)

** Bug recreations are at the end

My patches for the = three bugs prior essentially fix these bugs.=C2=A0 The
included patches = are basically some clean up work and closing gaps when working
with cons= tants.=C2=A0 That is, uninterned symbols would have worked as a side effect=
of the previous submissions.=C2=A0 But some cleanup, flag management, a= nd some small
fixes for constants were left over.

The last two bu= gs happen because 'trapped_write' is only "harmonized" ac= ross
the obarray in the event of watcher adding and removing and not in = the event
of re-aliasing.=C2=A0 I will show in testing that I was able t= o close up these bugs
and also remove the need for "harmonizing&quo= t;.=C2=A0 My previous patches fix the
setting of the constant and the i= ncluded patches enforce re-aliasing behavior.

Oddly, existing testin= g calls 'defvar' on the alias prior to 'defvaralias' to
= seemingly side step the fact that they do not work with uninterned symbols.=
Maybe things have changed?=C2=A0 As near as I can tell, the evaluation = process
(such as 'eval-sexp-add-defvars') seems to see that '= ;defvaralias' starts with
'def' and interns its arguments as= part of evaluation.=C2=A0 For now I was able to
feed 'defvaralias&#= 39; uninterned symbols using 'gensym' and 'make-symbol'.
Should uninterned symbols be allowed to be a variable alias?=C2=A0 Cur= rently it is
allowed and could be easily prevented in 'defvaralias&#= 39;.=C2=A0 Currently, the base
variable being uninterned is also allowed= , though as long as it is the only one
and last in the chain the current= system will work.=C2=A0 Regardless of uninterned
symbols being allowed = the included patches apply as they remove the need to
"harmonize&qu= ot; even for interned symbols (this "harmonizing" wasn't even= occurring
at all required times anyways).

In regards to bug '= ;3d' from above, if an alias of a watched variable gets
re-aliased t= here should be no notification, the warning of losing value is all
that = should happen if the value is different.=C2=A0 Currently, notification not = only
happens, it happens wrong (see example below).

Consider a va= riable with a watcher function designed only to watch it.=C2=A0 Then an
= alias is added and then re-aliased, suddenly the watcher function would rec= eive
notifications about symbols other than that which it was designed f= or. =C2=A0A
watcher function should be able to assume that any notificat= ion if receives is
for the operation applying to the base variable of an= y given alias chain. =C2=A0A
base variable that has watchers and then be= comes an alias is no longer a base
variable.=C2=A0 The only time a watch= er should receive notifications for multiple
symbols is if it is explici= tly assigned to multiple variables/chains.=C2=A0 That is a
watcher funct= ion shouldn't gain additional symbols names being sent to it from a
= 'defvaralias' assignment happening somewhere along its alias chain.= =C2=A0 This allows
one to write simple watchers for the general case wit= hout the need to anticipate
future outside actions.

Additionally,= once a variable becomes an alias if it was watched those watchers
shoul= d be removed (after notification that it is about to become an alias, which=
is questionable as to its actual value as a feature).=C2=A0 We shouldn&= #39;t save the
watchers to fallback on in the event of re-aliasing as on= ce a variable becomes
an alias those watchers were made inaccessible (i.= e. the user cannot add or
remove watchers as those functions will follow= the redirection).

Notification should always be based on the 'b= ase' variable only.=C2=A0 When a watcher is
assigned to an alias the= assignment follows redirection and is applied to the
base variable.=C2= =A0 Notifications when working properly use the base variable symbol
nam= e (this is existing behaviour and will continue).=C2=A0 Ideally if one adds=
a watcher to a variable that will rely on the name of the symbol it sho= uld use
'Findirect_variable' on said variable to discover if it = points elsewhere.
Also, I have a missing feature(Fvaralias-p) ready to a= dd after these nine emails.

----------------------------------------= ------------------------------------

Patch 0006: These functions wer= e the only ones that checked for constant
after the redirection loop, ho= wever, they were still using the original variable.
I moved it to the to= p to make all these functions look alike and made them
checking for cons= tants along every step of redirection.=C2=A0 Additionally, it
eliminates= an extra conversion that was occurring in the most common case.

Pat= ch 0007: makunbound was making an unneeded check for constant, it alreadyhappens after Fset called set_internal.=C2=A0 Additionally, this check di= dn't
follow redirection and the one in Fset will.=C2=A0 Also, the ve= ry first thing
set_internal does is call CHECK_SYMBOL.=C2=A0 I eliminate= d the extra function call,
call set_internal directly and let it do all = the work.

Patch 0008: Eliminated the usage of an enumeration as a bo= olean.

Patch 0009: Eliminated the usage of an enumeration as a boole= an. Additionally,
the commentary had no mention of thread switching. Thi= s section of code and
commentary mostly predates the addition of "S= ET_INTERNAL_THREAD_SWITCH" to the
enumeration.=C2=A0 Which points o= ut a downside of using an enumeration as a boolean,
someone can add to i= t or rearrange it and overlook its boolean usages.

Patch 0010: Added= commentary regarding input sanitation. Findirect_variable
converts a Li= sp_Object to Lisp_Symbol and then back to a Lisp_Object even when
there = is no alias redirection.=C2=A0 I almost added brackets to make it go right<= br>through when there is no alias.=C2=A0 However, I realized it had the add= ed benefit
that a calling function can use it to make sure their paramet= er is a bare symbol.

Patch 0011: With all previous changes only '= ;TRAPPED_NOWRITE' will be
copied to an alias that is explicitly alia= sed to a constant (or to another
alias that was explicitly aliased to a = constant).=C2=A0 Other functions check for constant
as they follow redir= ection all the way to the end.=C2=A0 An alias set as constant
cannot be = re-aliased.=C2=A0 I added checking in 'defvaralias' that will preve= nt any
alias in the upstream of an alias that got re-aliased to a consta= nt from being
re-aliased itself (maybe we can allow them to be re-aliase= d, since they were
not explicitly set? Though until then they are still = perceived as constant to
everything including 'defvaralias'). Be= cause of previous bug fixes the other
values of the flag along the chain= are essentially ignored, so this is really
just making the flag have a = consistent value (i.e. SYMBOL_TRAPPED_WRITE only
applies to non-aliases)= and fixing gaps in re-aliasing.

Patch 0012: This applies on top of= the previous and is just to get
rid of a needless conversion call.
<= br>Patch 0013: Harmonizing is no longer required at all due to previous bug= fixes.
My testing attached along with all other regression tests passin= g proves this.

Patch 0014: This is a full test showing that aliases = and watchers now
work with uninterned symbols (do we allow them is secon= dary). Using them
allowed this test of aliases to not clutter up the glo= bal symbol space
and have the test simply be garbage collected away (it&= #39;s also repeatable
interactively).=C2=A0 Now that they work, maybe so= meone (me lol, I have testing
applications for aliases themselves that c= ould use this functionality) will
find them to be a useful tool.=C2=A0 B= ut at least now they cannot be accidentally
used and circumvent a watche= r.
(Please note the BUG# placeholder in three(3) places will need to be = updated.)

Patch 0015: Test for the specific chain breaking and re-al= iasing bugs
below. I placed this in data-tests.el because it involves wa= tchers.
(Please note the BUG# placeholder in seven(7) places will need t= o be updated.)

Interestingly enough the uninterned symbols test actu= ally stems from the very
first test I attempted to write for the first b= ug.=C2=A0 I often use uninterned
symbols while testing as they make it e= asy to make tests that can be repeated
without mucking up the symbol spa= ce.


Bug Recreation----------------------------------------------= ---------------------

This occurs because adding an uninterned alias= before watchers are added
makes them never get their 'trapped_write= ' flag set as they are never
"harmonized".

Bug#0000= 3a (Bypass watcher by adding an uninterned symbol as alias before watcher)<= br>emacs -Q----------------------------------------------------------------= ---------
(defvar results nil)
results

(defvar fake (gensym))<= br>fake

(defvar notsafe "I should be watched")
notsafe<= br>
(defvaralias fake 'notsafe)
notsafe

(add-variable-watc= her 'notsafe (lambda (&rest args) (push args results)))
nil
<= br>(set fake "bypassed")
"bypassed"

notsafe"bypassed"

results
nil
;; There should be watch re= sults

Bug#00003a (Bypass watcher by adding an uninterned symbol as a= lias before watcher)
emacs -Q-------------------------------------------= ------------------------------
(defvar results nil)
results

(d= efvar fake (make-symbol "dummy"))
fake

(defvar notsafe = "I should be watched")
notsafe

(defvaralias fake 'n= otsafe)
notsafe

(add-variable-watcher 'notsafe (lambda (&= rest args) (push args results)))
nil

(set fake "bypassed&quo= t;)
"bypassed"

notsafe
"bypassed"

r= esults
nil


Bug#00003b (re-aliasing the base/middle of a chain= to a constant)
emacs - Q-----------------------------------------------= -------------------------

(defvar test 5)
test

(defvaralia= s 'testa1 'test)
test

(defvaralias 'testa2 'testa= 1)
testa1

(defvaralias 'testa1 'nil)
nil

(set &= #39;testa2 5) =C2=A0;; makunbound works also
5

nil
5
;; We = just set a constant

Bug#00003c (re-aliasing the middle of a chain fr= om an unwatched to a watched
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 v= ariable then writing from the end bypasses watching.)
emacs -Q----------= ---------------------------------------------------------------

(def= var results nil)
results

;; watched
(defvar test 5)
test
;; unwatched
(defvar test2 100)
test2

(add-variable-watch= er 'test (lambda (&rest args) (push args results)))
nil

(= defvaralias 'testa1 'test2)
test2

(defvaralias 'testa= 2 'testa1)
testa1

(defvaralias 'testa1 'test)
test=

(set 'testa2 500)
500

test
500

results
n= il
;; There should be watch results

Bug#00003d (re-aliasing notif= ies the base variable watcher that it is becoming an alias)
emacs -Q----= ---------------------------------------------------------------------
(d= efvar results nil)
results

(defvar test 5)
test

(defvar= test2 10)
test2

(add-variable-watcher 'test (lambda (&re= st args) (push args results)))
nil

(defvaralias 'testa 't= est)
test

(defvaralias 'testa 'test2)
test2

res= ults
((test test2 defvaralias nil))

test
5

testa
10<= br>
;; 'test' is not becoming an alias of 'test2', '= testa' was re-aliased to 'test2'.
;; No notification should = be made in this instance, the warning is sufficient.
--000000000000ddb42a06154161f9-- --000000000000ddb42b06154161fb Content-Type: application/x-patch; name="0014-Add-testing-for-variable-watchers-using-uninterned-s.patch" Content-Disposition: attachment; filename="0014-Add-testing-for-variable-watchers-using-uninterned-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lukvnhtc1 RnJvbSA0M2Y5M2U1ZTlhMDE2MzdmMmMwYTM5Y2QzZDI2ZDhmZWI0OGNhMjhlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUm9iZXJ0IEEuIEJ1cmtzIiA8cmJ1cmtzZGV2QGdtYWlsLmNv bT4KRGF0ZTogTW9uLCAxMSBNYXIgMjAyNCAyMjo0NjoyMCAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MTQvMzFdIEFkZCB0ZXN0aW5nIGZvciB2YXJpYWJsZSB3YXRjaGVycyB1c2luZyB1bmludGVybmVk CiBzeW1ib2xzIChCVUcjMDAwMDMpCgoqIHRlc3Qvc3JjL2RhdGEtdGVzdHMuZWwgKGRhdGEtdGVz dHMtd2F0Y2hlcnMtdW5pbnRlcm5lZC1zeW1ib2xzKToKQWRkZWQgdGVzdGluZyBvZiB2YXJpYWJs ZSB3YXRjaGVyIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGUgYWxpYXNpbmcKdXNpbmcgdW5pbnRlcm5l ZCBzeW1ib2xzLiAoQlVHIzAwMDAzKQotLS0KIHRlc3Qvc3JjL2RhdGEtdGVzdHMuZWwgfCA3NyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2Vk LCA3NyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvdGVzdC9zcmMvZGF0YS10ZXN0cy5lbCBi L3Rlc3Qvc3JjL2RhdGEtdGVzdHMuZWwKaW5kZXggN2IzMTczMGM0YzIuLmYzOTIxOWNhY2U3IDEw MDY0NAotLS0gYS90ZXN0L3NyYy9kYXRhLXRlc3RzLmVsCisrKyBiL3Rlc3Qvc3JjL2RhdGEtdGVz dHMuZWwKQEAgLTcwMCw2ICs3MDAsODMgQEAgZGF0YS10ZXN0cy12YXJhbGlhcy13YXRjaGVycy1i dWcwMDAwMgogICAgICAgICAgICAgKHNob3VsZCBgKGV2YWwgKD0gNSAsdjUgLGE1KSkpKQogICAg ICAgICAoYWR2aWNlLXJlbW92ZSAjJ2Rpc3BsYXktd2FybmluZyAjJ2J1Zy1hZHZpY2UpKSkpKQog Cis7OyBCVUcjMDAwMDMgVW5pbnRlcm5lZCBhbGlhc2VzIGJ5cGFzc2luZyB2YXJpYWJsZSB3YXRj aGVycy4KKzs7IFRoaXMgdGVzdHMgYGdldC12YXJpYWJsZS13YXRjaGVycycsIGBhZGQtdmFyaWFi bGUtd2F0Y2hlcnMnLAorOzsgYW5kIHRoZSB0cmlnZ2VyaW5nIG9mIHdhdGNoZXJzIHRocm91Z2gg bXVsdGktYWxpYXMgY2hhaW5zCis7OyBpbiB3aGljaCBib3RoIHRoZSBhbGlhcyBhbmQgYmFzZSB2 YXJpYWJsZSBhcmUgdW5pbnRlcm5lZCBzeW1ib2xzLgorOzsgSXQgYWxzbyB0ZXN0cyB0aGF0IHdh dGNoZXIgdHJpZ2dlcmluZyBkb2VzIG5vdCBkZXBlbmQgb24gbWFpbnRhaW5pbmcKKzs7IHRoZSAn dHJhcHBlZF93cml0ZScgZmxhZyBhbG9uZyB0aGUgYWxpYXMgY2hhaW4uCisoZXJ0LWRlZnRlc3Qg ZGF0YS10ZXN0cy13YXRjaGVycy11bmludGVybmVkLXN5bWJvbHMgKCkKKyAgOzsgdGVzdCBmb3Ig YWxpYXNlcyBhZGRlZCBhZnRlciAxc3Qgd2F0Y2hlcgorICAobGV0KiAoKGNvdW50IDApICAgICAg ICA7O2NvdW50ZXIKKyAgICAgICAgICh2MSAoZ2Vuc3ltKSkKKyAgICAgICAgIChhMSAoZ2Vuc3lt KSkKKyAgICAgICAgIChhMiAoZ2Vuc3ltKSkKKyAgICAgICAgIChmMSAobGFtYmRhIChfc3ltIHZh bCAmcmVzdCBfKQorICAgICAgICAgICAgICAgKHNldHEgY291bnQgKCsgY291bnQgKCogdmFsIDEp KSkpKQorICAgICAgICAgKGYyIChsYW1iZGEgKF9zeW0gdmFsICZyZXN0IF8pCisgICAgICAgICAg ICAgICAoc2V0cSBjb3VudCAoKyBjb3VudCAoKiB2YWwgMTAwKSkpKSkKKyAgICAgICAgIChmMyAo bGFtYmRhIChfc3ltIHZhbCAmcmVzdCBfKQorICAgICAgICAgICAgICAgKHNldHEgY291bnQgKCsg Y291bnQgKCogdmFsIDEwMDApKSkpKSkKKyAgICAoc2hvdWxkICg9IDAgKGxlbmd0aCAoZ2V0LXZh cmlhYmxlLXdhdGNoZXJzIHYxKSkKKyAgICAgICAgICAgICAgIChsZW5ndGggKGdldC12YXJpYWJs ZS13YXRjaGVycyBhMSkpCisgICAgICAgICAgICAgICAobGVuZ3RoIChnZXQtdmFyaWFibGUtd2F0 Y2hlcnMgYTIpKSkpCisgICAgKGFkZC12YXJpYWJsZS13YXRjaGVyIHYxIGYxKQorICAgIChkZWZ2 YXJhbGlhcyBhMSB2MSkKKyAgICAoZGVmdmFyYWxpYXMgYTIgYTEpCisgICAgKHNob3VsZCAoPSAx IChsZW5ndGggKGdldC12YXJpYWJsZS13YXRjaGVycyB2MSkpCisgICAgICAgICAgICAgICAobGVu Z3RoIChnZXQtdmFyaWFibGUtd2F0Y2hlcnMgYTEpKQorICAgICAgICAgICAgICAgKGxlbmd0aCAo Z2V0LXZhcmlhYmxlLXdhdGNoZXJzIGEyKSkpKQorICAgIChzZXQgYTIgMSkKKyAgICAoc2hvdWxk ICg9IGNvdW50IDEpKQorICAgIChhZGQtdmFyaWFibGUtd2F0Y2hlciB2MSBmMikKKyAgICAoc2hv dWxkICg9IDIgKGxlbmd0aCAoZ2V0LXZhcmlhYmxlLXdhdGNoZXJzIHYxKSkKKyAgICAgICAgICAg ICAgIChsZW5ndGggKGdldC12YXJpYWJsZS13YXRjaGVycyBhMSkpCisgICAgICAgICAgICAgICAo bGVuZ3RoIChnZXQtdmFyaWFibGUtd2F0Y2hlcnMgYTIpKSkpCisgICAgKHNldCBhMiAyKQorICAg IChzaG91bGQgKD0gY291bnQgMjAzKSkKKyAgICAoYWRkLXZhcmlhYmxlLXdhdGNoZXIgYTIgZjMp CisgICAgKHNob3VsZCAoPSAzIChsZW5ndGggKGdldC12YXJpYWJsZS13YXRjaGVycyB2MSkpCisg ICAgICAgICAgICAgICAobGVuZ3RoIChnZXQtdmFyaWFibGUtd2F0Y2hlcnMgYTEpKQorICAgICAg ICAgICAgICAgKGxlbmd0aCAoZ2V0LXZhcmlhYmxlLXdhdGNoZXJzIGEyKSkpKQorICAgIChzZXQg YTIgMykKKyAgICAoc2hvdWxkICg9IGNvdW50IDM1MDYpKSkKKworICA7OyB0ZXN0IGZvciAxc3Qg d2F0Y2hlciBhZGRlZCBhZnRlciBhbGlhc2VzCisgIChsZXQqICgoY291bnQgMCkgICAgICAgIDs7 Y291bnRlcgorICAgICAgICAgKHYxIChnZW5zeW0pKQorICAgICAgICAgKGExIChnZW5zeW0pKQor ICAgICAgICAgKGEyIChnZW5zeW0pKQorICAgICAgICAgKGEzIChnZW5zeW0pKQorICAgICAgICAg KGYxIChsYW1iZGEgKF9zeW0gdmFsICZyZXN0IF8pCisgICAgICAgICAgICAgICAoc2V0cSBjb3Vu dCAoKyBjb3VudCAoKiB2YWwgMSkpKSkpCisgICAgICAgICAoZjIgKGxhbWJkYSAoX3N5bSB2YWwg JnJlc3QgXykKKyAgICAgICAgICAgICAgIChzZXRxIGNvdW50ICgrIGNvdW50ICgqIHZhbCAxMDAp KSkpKQorICAgICAgICAgKGYzIChsYW1iZGEgKF9zeW0gdmFsICZyZXN0IF8pCisgICAgICAgICAg ICAgICAoc2V0cSBjb3VudCAoKyBjb3VudCAoKiB2YWwgMTAwMCkpKSkpKQorICAgIChkZWZ2YXJh bGlhcyBhMSB2MSkKKyAgICAoZGVmdmFyYWxpYXMgYTIgYTEpCisgICAgKGFkZC12YXJpYWJsZS13 YXRjaGVyIHYxIGYxKQorICAgIChzaG91bGQgKD0gMSAobGVuZ3RoIChnZXQtdmFyaWFibGUtd2F0 Y2hlcnMgdjEpKQorICAgICAgICAgICAgICAgKGxlbmd0aCAoZ2V0LXZhcmlhYmxlLXdhdGNoZXJz IGExKSkKKyAgICAgICAgICAgICAgIChsZW5ndGggKGdldC12YXJpYWJsZS13YXRjaGVycyBhMikp KSkKKyAgICAoc2V0IGEyIDEpCisgICAgKHNob3VsZCAoPSBjb3VudCAxKSkKKyAgICAoYWRkLXZh cmlhYmxlLXdhdGNoZXIgYTIgZjIpCisgICAgKHNob3VsZCAoPSAyIChsZW5ndGggKGdldC12YXJp YWJsZS13YXRjaGVycyB2MSkpCisgICAgICAgICAgICAgICAobGVuZ3RoIChnZXQtdmFyaWFibGUt d2F0Y2hlcnMgYTEpKQorICAgICAgICAgICAgICAgKGxlbmd0aCAoZ2V0LXZhcmlhYmxlLXdhdGNo ZXJzIGEyKSkpKQorICAgIChzZXQgYTIgMikKKyAgICAoc2hvdWxkICg9IGNvdW50IDIwMykpCisg ICAgKGRlZnZhcmFsaWFzIGEzIGEyKQorICAgIChhZGQtdmFyaWFibGUtd2F0Y2hlciBhMyBmMykK KyAgICAoc2hvdWxkICg9IDMgKGxlbmd0aCAoZ2V0LXZhcmlhYmxlLXdhdGNoZXJzIHYxKSkKKyAg ICAgICAgICAgICAgIChsZW5ndGggKGdldC12YXJpYWJsZS13YXRjaGVycyBhMSkpCisgICAgICAg ICAgICAgICAobGVuZ3RoIChnZXQtdmFyaWFibGUtd2F0Y2hlcnMgYTIpKQorICAgICAgICAgICAg ICAgKGxlbmd0aCAoZ2V0LXZhcmlhYmxlLXdhdGNoZXJzIGEzKSkpKQorICAgIChzZXQgYTMgMykK KyAgICAoc2hvdWxkICg9IGNvdW50IDM1MDYpKSkpCisKIChlcnQtZGVmdGVzdCBkYXRhLXRlc3Rz LWtpbGwtYWxsLWxvY2FsLXZhcmlhYmxlcyAoKSA7YnVnIzMwODQ2CiAgICh3aXRoLXRlbXAtYnVm ZmVyCiAgICAgKHNldHEtbG9jYWwgZGF0YS10ZXN0cy1mb28xIDEpCi0tIAoyLjM0LjEKCg== --000000000000ddb42b06154161fb Content-Type: application/x-patch; name="0012-src-eval.c-defvaralias-Removed-extra-inline-conversi.patch" Content-Disposition: attachment; filename="0012-src-eval.c-defvaralias-Removed-extra-inline-conversi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lukvnhtm3 RnJvbSAyZmViZmIzYTk5MGI4ZmVkYTY4OGZkZGVmMWM5MjFhMGIwMjczYzc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUm9iZXJ0IEEuIEJ1cmtzIiA8cmJ1cmtzZGV2QGdtYWlsLmNv bT4KRGF0ZTogRnJpLCA4IE1hciAyMDI0IDE3OjMyOjQ2IC0wNTAwClN1YmplY3Q6IFtQQVRDSCAx Mi8zMV0gOyAqIHNyYy9ldmFsLmMgKGRlZnZhcmFsaWFzKTogUmVtb3ZlZCBleHRyYSBpbmxpbmUK IGNvbnZlcnNpb24KCi0tLQogc3JjL2V2YWwuYyB8IDUgKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAz IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2V2YWwuYyBi L3NyYy9ldmFsLmMKaW5kZXggZjcxMzVlOGU4OTguLjRjZmUxOWJjMGUxIDEwMDY0NAotLS0gYS9z cmMvZXZhbC5jCisrKyBiL3NyYy9ldmFsLmMKQEAgLTY4NywxMCArNjg3LDExIEBAIERFRlVOICgi ZGVmdmFyYWxpYXMiLCBGZGVmdmFyYWxpYXMsIFNkZWZ2YXJhbGlhcywgMiwgMywgMCwKICAgZWxz ZQogICAgIHN5bS0+dS5zLnRyYXBwZWRfd3JpdGUgPSBTWU1CT0xfVU5UUkFQUEVEX1dSSVRFOwog CisgIHMgPSBYU1lNQk9MIChiYXNlX3ZhcmlhYmxlKTsKICAgc3ltLT51LnMuZGVjbGFyZWRfc3Bl Y2lhbCA9IHRydWU7Ci0gIFhTWU1CT0wgKGJhc2VfdmFyaWFibGUpLT51LnMuZGVjbGFyZWRfc3Bl Y2lhbCA9IHRydWU7CisgIHMtPnUucy5kZWNsYXJlZF9zcGVjaWFsID0gdHJ1ZTsKICAgc3ltLT51 LnMucmVkaXJlY3QgPSBTWU1CT0xfVkFSQUxJQVM7Ci0gIFNFVF9TWU1CT0xfQUxJQVMgKHN5bSwg WFNZTUJPTCAoYmFzZV92YXJpYWJsZSkpOworICBTRVRfU1lNQk9MX0FMSUFTIChzeW0sIHMpOwog ICBMT0FESElTVF9BVFRBQ0ggKG5ld19hbGlhcyk7CiAgIC8qIEV2ZW4gaWYgZG9jc3RyaW5nIGlz IG5pbDogcmVtb3ZlIG9sZCBkb2NzdHJpbmcuICAqLwogICBGcHV0IChuZXdfYWxpYXMsIFF2YXJp YWJsZV9kb2N1bWVudGF0aW9uLCBkb2NzdHJpbmcpOwotLSAKMi4zNC4xCgo= --000000000000ddb42b06154161fb Content-Type: application/x-patch; name="0011-Changed-trapped_write-flag-mechanics-and-added-exten.patch" Content-Disposition: attachment; filename="0011-Changed-trapped_write-flag-mechanics-and-added-exten.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lukvnhtp4 RnJvbSA0MTJjZmRjMjkyYzhhNDA4N2IzNjU2MTM4OTUzYjE3ZGY3MGUzODJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUm9iZXJ0IEEuIEJ1cmtzIiA8cmJ1cmtzZGV2QGdtYWlsLmNv bT4KRGF0ZTogVGh1LCA3IE1hciAyMDI0IDE4OjQ3OjM3IC0wNTAwClN1YmplY3Q6IFtQQVRDSCAx MS8zMV0gQ2hhbmdlZCAndHJhcHBlZF93cml0ZScgZmxhZyBtZWNoYW5pY3MgYW5kIGFkZGVkCiBl eHRlbnNpdmUgY29tbWVudGFyeQoKKiBzcmMvZXZhbC5jIChkZWZ2YXJhbGlhcyk6Cid0cmFwcGVk X3dyaXRlJyBubyBsb25nZXIgbmVlZHMgdG8gYmUgbWFpbnRhaW5lZCBhbG9uZyB2YXJpYWJsZSBh bGlhcwpjaGFpbnMgYXMgcHJldmlvdXMgY2hhbmdlcyBoYXZlIG1hZGUgY2hlY2tpbmcgb2NjdXIg YXQgdGhlIGNoYWluJ3MgZW5kLgotLS0KIHNyYy9ldmFsLmMgfCA1MCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQ1IGlu c2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2V2YWwuYyBiL3Ny Yy9ldmFsLmMKaW5kZXggNTQ5N2NjNjAzMWUuLmY3MTM1ZThlODk4IDEwMDY0NAotLS0gYS9zcmMv ZXZhbC5jCisrKyBiL3NyYy9ldmFsLmMKQEAgLTU3Niw4ICs1NzYsMTAgQEAgREVGVU4gKCJkZWZ2 YXJhbGlhcyIsIEZkZWZ2YXJhbGlhcywgU2RlZnZhcmFsaWFzLCAyLCAzLCAwLAogICBDSEVDS19T WU1CT0wgKG5ld19hbGlhcyk7CiAgIENIRUNLX1NZTUJPTCAoYmFzZV92YXJpYWJsZSk7CiAKLSAg aWYgKFNZTUJPTF9DT05TVEFOVF9QIChuZXdfYWxpYXMpKQotICAgIC8qIE1ha2luZyBpdCBhbiBh bGlhcyBlZmZlY3RpdmVseSBjaGFuZ2VzIGl0cyB2YWx1ZS4gICovCisgIGlmIChTWU1CT0xfQ09O U1RBTlRfUCAoRmluZGlyZWN0X3ZhcmlhYmxlIChuZXdfYWxpYXMpKSkKKyAgLyogTWFraW5nIGl0 IGFuIGFsaWFzIGVmZmVjdGl2ZWx5IGNoYW5nZXMgaXRzIHZhbHVlLgorICAgICBUaGlzIHByZXZl bnRzIHJlLWFsaWFzaW5nIGFueSBhbGlhc2VzIG9mIGEgY29uc3RhbnQgYW5kIHdpbGwKKyAgICAg ZGV0ZWN0IGlmIGFueSBhbGlhcyBpbiB0aGUgY2hhaW4gaXMgcmUtYWxpYXNlZCB0byBhIGNvbnN0 YW50LiAgKi8KICAgICBlcnJvciAoIkNhbm5vdCBtYWtlIGEgY29uc3RhbnQgYW4gYWxpYXM6ICVz IiwKIAkgICBTREFUQSAoU1lNQk9MX05BTUUgKG5ld19hbGlhcykpKTsKIApAQCAtNjAzLDcgKzYw NSw3IEBAIERFRlVOICgiZGVmdmFyYWxpYXMiLCBGZGVmdmFyYWxpYXMsIFNkZWZ2YXJhbGlhcywg MiwgMywgMCwKICAgICAgIGVycm9yICgiRG9uJ3Qga25vdyBob3cgdG8gbWFrZSBhIGJ1ZmZlci1s b2NhbCB2YXJpYWJsZSBhbiBhbGlhczogJXMiLAogCSAgICAgU0RBVEEgKFNZTUJPTF9OQU1FIChu ZXdfYWxpYXMpKSk7CiAgICAgY2FzZSBTWU1CT0xfUExBSU5WQUw6Ci0gICAgY2FzZSBTWU1CT0xf VkFSQUxJQVM6CisgICAgY2FzZSBTWU1CT0xfVkFSQUxJQVM6IC8qIEFsbG93IGFuIGFsaWFzIHRv IGJlIHJlLWFsaWFzZWQuICAqLwogICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIGVt YWNzX2Fib3J0ICgpOwpAQCAtNjQzLDE0ICs2NDUsNTIgQEAgREVGVU4gKCJkZWZ2YXJhbGlhcyIs IEZkZWZ2YXJhbGlhcywgU2RlZnZhcmFsaWFzLCAyLCAzLCAwLAogCSAgICAgICBTREFUQSAoU1lN Qk9MX05BTUUgKG5ld19hbGlhcykpKTsKICAgfQogCisgIC8qIElmIGFuIGFscmVhZHkgd2F0Y2hl ZCB2YXJpYWJsZSBpcyBiZWNvbWluZyBhbiBhbGlhcyBub3RpZnkgaXRzCisgICAgIHdhdGNoZXJz LCB0aGlzIGRvZXNuJ3QgYXBwbHkgdG8gcmUtYWxpYXNpbmcgaWYgdGhlIGN1cnJlbnQgYmFzZSBp cworICAgICB3YXRjaGVkLiAgV2hlbiBhIHN5bWJvbCBiZWNvbWVzIGFuIGFsaWFzIGl0IGNhbm5v dCBiZSB0cmFwcGVkCisgICAgIGFnYWluIGl0c2VsZi4gIFdhdGNoZXIgYWRkaW5nL3JlbW92aW5n IHdpbGwgb2NjdXIgYXQgdGhlIGVuZCBvZgorICAgICB0aGUgYWxpYXMgY2hhaW4uICBCb3RoIHN5 bWJvbHMgYXJlIGRlY2xhcmVkX3NwZWNpYWwgYW5kIHRoYXQgY2FuCisgICAgIG9ubHkgY2hhbmdl IHZpYSAnaW50ZXJuYWwtbWFrZS12YXItbm90LXNwZWNpYWwnLiBPbmNlIGEgdmFyaWFibGUKKyAg ICAgYmVjb21lcyBhbiBhbGlhcyBpdHMgcmVkaXJlY3QgZmxhZyBjYW5ub3QgYmUgY2hhbmdlZC4g IEF0IHRoaXMgcG9pbnQKKyAgICAgaXQgY2FuIG9ubHkgYmUgcmUtYWxpYXNlZC4gIFdlIGFyZSBj bGVhbmluZyB1cCB0aGUgcGxpc3QgaW4gY2FzZSBhCisgICAgIHVzZXIgdXNlcyBgc3ltYm9sLXBs aXN0JyBhbmQgaXMgY29uZnVzZWQgYnkgd2F0Y2hlciBmdW5jdGlvbnMgdGhhdAorICAgICBkb24n dCBydW4gYW5kIGNhbm5vdCBiZSByZW1vdmVkIGJ5IHRoZSB3YXRjaGVyIGZ1bmN0aW9ucy4gIEZ1 bmN0aW9ucworICAgICBzdWNoIGFzIGBwdXQnLCBgZ2V0JywgYW5kIGBzeW1ib2wtcGxpc3QnIGRv IG5vdCByZWRpcmVjdC4gICovCiAgIGlmIChzeW0tPnUucy50cmFwcGVkX3dyaXRlID09IFNZTUJP TF9UUkFQUEVEX1dSSVRFKQotICAgIG5vdGlmeV92YXJpYWJsZV93YXRjaGVycyAobmV3X2FsaWFz LCBiYXNlX3ZhcmlhYmxlLCBRZGVmdmFyYWxpYXMsIFFuaWwpOworICAgIHsKKyAgICAgIC8qIElm IGEgdmFyaWFibGUgYmVpbmcgbWFkZSBvYnNvbGV0ZSAoaS5lLiBuZXdfYWxpYXMpIGhhcyBhCisJ IGJyb2tlbiB3YXRjaGVyIGl0IGNhbiBmYWlsIGhlcmUgYW5kIHRoZSB2YXJpYWJsZSBhbGlhcyB3 aWxsCisJIG5vdCBiZSBjcmVhdGVkLiAgV2Ugc2hvdWxkIHBvdGVudGlhbGx5IGNvbmRpdGlvbi1j YXNlIGFuZCB0dXJuCisJIHRoZSBlcnJvciBpbnRvIGEgd2FybmluZyBhbmQgcHJvY2VlZCB3aXRo IGFsaWFzIGNyZWF0aW9uLiAgKi8KKyAgICAgIG5vdGlmeV92YXJpYWJsZV93YXRjaGVycyAobmV3 X2FsaWFzLCBiYXNlX3ZhcmlhYmxlLCBRZGVmdmFyYWxpYXMsIFFuaWwpOworCisgICAgICAvKiBJ ZiBuZXdfYWxpYXMgaGFzIGEgd2F0Y2hlciBsaXN0IGNsZWFyIGl0IG91dC4gICovCisgICAgICBM aXNwX09iamVjdCB3YXRjaGVycyA9IEZnZXQgKG5ld19hbGlhcywgUXdhdGNoZXJzKTsKKyAgICAg IGlmICghTklMUCAod2F0Y2hlcnMpKQorCXN5bS0+dS5zLnBsaXN0ID0gcGxpc3RfcHV0IChzeW0t PnUucy5wbGlzdCwgUXdhdGNoZXJzLCBRbmlsKTsKKyAgICB9CisgIC8qIFNZTUJPTF9OT1dSSVRF IChpLmUuIGNvbnN0YW50KSBpcyBjaGVja2VkIGZvciBpbiBvdGhlciBmdW5jdGlvbnMKKyAgICAg YXQgZXZlcnkgc3RlcCBvZiB2YXJpYWJsZSBhbGlhcyByZWRpcmVjdGlvbiwgaXQncyBvbmx5IHJl YWxseQorICAgICBuZWVkZWQgYXQgdGhlIGVuZC4gIENvbnN0YW50cyBjYW5ub3QgYmUgd2F0Y2hl ZCBhbmQgYW4gYWxpYXMgb2YgYQorICAgICBjb25zdGFudCBjYW5ub3QgYmUgcmUtYWxpYXNlZC4g IFRoZXJlZm9yZSwgaXQncyBhIHN0YXRlIHRoYXQKKyAgICAgY2Fubm90IGNoYW5nZSBvbmNlIGdh aW5lZCBzbyB3ZSBjYW4gYXNzaWduIGl0IGFsb25nIHRoZSBhbGlhcworICAgICBjaGFpbi4gSWYg YW4gYWxpYXMgaW4gdGhlIG1pZGRsZSBvZiBhIGNoYWluIGlzIHJlLWFsaWFzZWQgdG8gYQorICAg ICBjb25zdGFudCBpdHMgZmxhZyB3aWxsIGJlIHNldCBhbmQgaXRzIGFsaWFzZXMgd2lsbCBiZSBw cmV2ZW50ZWQKKyAgICAgZnJvbSBiZWluZyByZS1hbGlhc2VkLCBidXQgdGhlaXIgZmxhZ3Mgd2ls bCBub3QgYmUgZXhwbGljaXRseSBzZXQuCisgICAgIFNZTUJPTF8oVU4pVFJBUFBFRF9XUklURSAo aS5lLiB3YXRjaGVkKSBpcyB0byBvbmx5IGJlIGNoZWNrZWQgZm9yCisgICAgIGluIG90aGVyIGZ1 bmN0aW9ucyBhdCB0aGUgZW5kIG9mIHRoZSB2YXJpYWJsZSBhbGlhcyByZWRpcmVjdGlvbgorICAg ICBjaGFpbi4gIFRoZXJlZm9yZSwgaXQgd2lsbCBvbmx5IGJlICh1bilzZXQgdGhlcmUuIFRoaXMg bWFrZXMKKyAgICAgc2VhcmNoaW5nIG91dCBvYnNvbGV0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIHRo ZW0gdW5uZWVkZWQgYXMgd2F0Y2hlcgorICAgICBub3RpZmljYXRpb24gZGVwZW5kcyBvbmx5IG9u IHRoZSBlbmQgb2YgdGhlIGNoYWluLiAgKi8KKyAgaWYgKFNZTUJPTF9DT05TVEFOVF9QIChGaW5k aXJlY3RfdmFyaWFibGUgKGJhc2VfdmFyaWFibGUpKSkKKyAgICBzeW0tPnUucy50cmFwcGVkX3dy aXRlID0gU1lNQk9MX05PV1JJVEU7CisgIGVsc2UKKyAgICBzeW0tPnUucy50cmFwcGVkX3dyaXRl ID0gU1lNQk9MX1VOVFJBUFBFRF9XUklURTsKIAogICBzeW0tPnUucy5kZWNsYXJlZF9zcGVjaWFs ID0gdHJ1ZTsKICAgWFNZTUJPTCAoYmFzZV92YXJpYWJsZSktPnUucy5kZWNsYXJlZF9zcGVjaWFs ID0gdHJ1ZTsKICAgc3ltLT51LnMucmVkaXJlY3QgPSBTWU1CT0xfVkFSQUxJQVM7CiAgIFNFVF9T WU1CT0xfQUxJQVMgKHN5bSwgWFNZTUJPTCAoYmFzZV92YXJpYWJsZSkpOwotICBzeW0tPnUucy50 cmFwcGVkX3dyaXRlID0gWFNZTUJPTCAoYmFzZV92YXJpYWJsZSktPnUucy50cmFwcGVkX3dyaXRl OwogICBMT0FESElTVF9BVFRBQ0ggKG5ld19hbGlhcyk7CiAgIC8qIEV2ZW4gaWYgZG9jc3RyaW5n IGlzIG5pbDogcmVtb3ZlIG9sZCBkb2NzdHJpbmcuICAqLwogICBGcHV0IChuZXdfYWxpYXMsIFF2 YXJpYWJsZV9kb2N1bWVudGF0aW9uLCBkb2NzdHJpbmcpOwotLSAKMi4zNC4xCgo= --000000000000ddb42b06154161fb Content-Type: application/x-patch; name="0015-Added-ert-for-variable-alias-chain-and-re-aliasing-b.patch" Content-Disposition: attachment; filename="0015-Added-ert-for-variable-alias-chain-and-re-aliasing-b.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lukvnht70 RnJvbSBjYmUxMDkzNjRmOTQwN2I4NDgxOTYzNGU4YmY3YjI4NTk2ZjhjNzc1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUm9iZXJ0IEEuIEJ1cmtzIiA8cmJ1cmtzZGV2QGdtYWlsLmNv bT4KRGF0ZTogRnJpLCAxNSBNYXIgMjAyNCAxODoxODo1OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MTUvMzFdICogQWRkZWQgZXJ0IGZvciB2YXJpYWJsZSBhbGlhcyBjaGFpbiBhbmQgcmUtYWxpYXNp bmcKIGJ1Z3MgKEJVRyMwMDAwMykKCiogdGVzdC9zcmMvZGF0YS10ZXN0cy5lbCAoZGF0YS10ZXN0 cy12YXJhbGlhcy1yZS1hbGlhc2luZy1idWcwMDAwMykKKGRhdGEtdGVzdHMtdmFyYWxpYXMtY2hh aW5zLWJ1ZzAwMDAzKToKLS0tCiB0ZXN0L3NyYy9kYXRhLXRlc3RzLmVsIHwgNzUgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNzUgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3Rlc3Qvc3JjL2RhdGEtdGVzdHMuZWwgYi90ZXN0L3Ny Yy9kYXRhLXRlc3RzLmVsCmluZGV4IGYzOTIxOWNhY2U3Li42ZTBlNDVmMjdlYiAxMDA2NDQKLS0t IGEvdGVzdC9zcmMvZGF0YS10ZXN0cy5lbAorKysgYi90ZXN0L3NyYy9kYXRhLXRlc3RzLmVsCkBA IC03NzcsNiArNzc3LDgxIEBAIGRhdGEtdGVzdHMtd2F0Y2hlcnMtdW5pbnRlcm5lZC1zeW1ib2xz CiAgICAgKHNldCBhMyAzKQogICAgIChzaG91bGQgKD0gY291bnQgMzUwNikpKSkKIAorOzsgQlVH IzAwMDAzIFJlLWFsaWFzaW5nIGVycm9uZW91c2x5IGluZm9ybWluZyB0aGUgYmFzZSB2YXJpYWJs ZSB0aGF0Cis7OyBpdCBpcyBiZWNvbWluZyBhbiBhbGlhcyB3aGVuIGFuIGFsaWFzIGlzIHJlLWFs aWFzZWQuCis7OyBBZGRpdGlvbmFsbHksIHRoaXMgdGVzdCBmb3IgYnVncyBwcmlvci4gVGhvc2Ug YmVpbmcsIGRvdWJsZQorOzsgbm90aWZpY2F0aW9uIHdoZW4gdXNpbmcgc2V0LWRlZmF1bHQgYW5k IHdyb25nIG9wZXJhdGlvbiBhbmQvb3IKKzs7IGltcHJvcGVyIHNldHRpbmcgYW5kIG5vdGlmaWNh dGlvbiB3aGVuIGRlZmluaW5nIGFuIGFsaWFzLgorKGVydC1kZWZ0ZXN0IGRhdGEtdGVzdHMtdmFy YWxpYXMtcmUtYWxpYXNpbmctYnVnMDAwMDMgKCkKKyAgKGxldCAoKHIxIG5pbCkpCisgICAgKGNs LWZsZXQgKChidWctYWR2aWNlICgmcmVzdCBfKSAocHVzaCAid2Ugd2VyZSB3YXJuZWQiIHIxKSkp CisgICAgICAoYWR2aWNlLWFkZCAgIydkaXNwbGF5LXdhcm5pbmcgOm92ZXJyaWRlICMnYnVnLWFk dmljZSkKKyAgICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAgIChsZXQgKChhMSAoZ2Vuc3lt KSkKKyAgICAgICAgICAgICAgICAodjEgKGdlbnN5bSkpCisgICAgICAgICAgICAgICAgKHYyIChn ZW5zeW0pKSA7OyB3aWxsIGJlIHNldCBieSBhc3NpZ25pbmcgYWxpYXMKKyAgICAgICAgICAgICAg ICAodjMgKGdlbnN5bSkpIDs7IHdpbGwgd2FybiB3aGVuIHJlLWFsaWFzIHRvIGl0CisgICAgICAg ICAgICAgICAgKGYxIChsYW1iZGEgKCZyZXN0IGFyZ3MpIChwdXNoIGFyZ3MgcjEpKSkpCisgICAg ICAgICAgICAoc2V0IHYzIDMwMCkKKyAgICAgICAgICAgIChhZGQtdmFyaWFibGUtd2F0Y2hlciB2 MSBmMSkKKyAgICAgICAgICAgIChhZGQtdmFyaWFibGUtd2F0Y2hlciB2MiBmMSkKKyAgICAgICAg ICAgIChhZGQtdmFyaWFibGUtd2F0Y2hlciB2MyBmMSkKKyAgICAgICAgICAgIChkZWZ2YXJhbGlh cyBhMSB2MSkKKyAgICAgICAgICAgIChzZXQtZGVmYXVsdCBhMSAxMDApCisgICAgICAgICAgICAo c2hvdWxkIChlcXVhbCAocG9wIHIxKSBgKCx2MSAxMDAgc2V0IG5pbCkpKQorICAgICAgICAgICAg KHNob3VsZCAobnVsbCAgcjEpKQorICAgICAgICAgICAgKGRlZnZhcmFsaWFzIGExIHYyKQorICAg ICAgICAgICAgKHNldC1kZWZhdWx0IGExIDIwMCkKKyAgICAgICAgICAgIChzaG91bGQgKGVxdWFs IChwb3AgcjEpIGAoLHYyIDIwMCBzZXQgbmlsKSkpCisgICAgICAgICAgICAoc2hvdWxkIChlcXVh bCAocG9wIHIxKSBgKCx2MiAxMDAgc2V0IG5pbCkpKQorICAgICAgICAgICAgKHNob3VsZCAobnVs bCAgcjEpKQorICAgICAgICAgICAgKGRlZnZhcmFsaWFzIGExIHYzKQorICAgICAgICAgICAgKHNl dC1kZWZhdWx0IGExIDQwMCkKKyAgICAgICAgICAgIChzaG91bGQgKGVxdWFsIChwb3AgcjEpIGAo LHYzIDQwMCBzZXQgbmlsKSkpCisgICAgICAgICAgICAoc2hvdWxkIChlcXVhbCAocG9wIHIxKSAi d2Ugd2VyZSB3YXJuZWQiKSkKKyAgICAgICAgICAgIChzaG91bGQgKG51bGwgIHIxKSkpCisgICAg ICAgIChhZHZpY2UtcmVtb3ZlICMnZGlzcGxheS13YXJuaW5nICMnYnVnLWFkdmljZSkpKSkpCisK Kzs7IEJVRyMwMDAwMworKGVydC1kZWZ0ZXN0IGRhdGEtdGVzdHMtdmFyYWxpYXMtY2hhaW5zLWJ1 ZzAwMDAzICgpCisgIDs7IHJlLWFsaWFzaW5nIHRoZSBtaWRkbGUgb2YgY2hhaW4gdG8gY29uc3Rh bnQKKyAgKGxldCAoKHYxIChnZW5zeW0pKQorICAgICAgICAoYTEgKGdlbnN5bSkpCisgICAgICAg IChhMiAoZ2Vuc3ltKSkKKyAgICAgICAgKGEzIChnZW5zeW0pKSkKKyAgICAoZGVmdmFyYWxpYXMg YTEgdjEpCisgICAgKGRlZnZhcmFsaWFzIGEyIGExKQorICAgIChkZWZ2YXJhbGlhcyBhMyBhMikK KyAgICA7OyByZS1hbGlhcyBtaWRkbGUgYXMgY29uc3RhbnQKKyAgICAoZGVmdmFyYWxpYXMgYTIg OmJpbmQpCisgICAgOzsgQXR0ZW1wdCB0byB3cml0ZSB0byBjb25zdGFudAorICAgIChzaG91bGQt ZXJyb3IgKHNldCBhMiA1KSkKKyAgICAoc2hvdWxkLWVycm9yIChzZXQgYTMgNSkpCisgICAgOzsg QXR0ZW1wdCB0byByZS1hbGlhcyBhZnRlciBtYWRlIGNvbnN0YW50CisgICAgKHNob3VsZC1lcnJv ciAoZGVmdmFyYWxpYXMgYTIgYTEpKQorICAgIChzaG91bGQtZXJyb3IgKGRlZnZhcmFsaWFzIGEz IGExKSkpCisgIDs7IHJlLWFsaWFzaW5nIHRoZSBtaWRkbGUgb2YgY2hhaW4gZnJvbSB1bndhdGNo ZWQgdG8gd2F0Y2hlZAorICAobGV0KiAoKHIxIG5pbCkgICAgICA7OyByZXN1bHRzCisgICAgICAg ICAodjEgKGdlbnN5bSkpIDs7IHVud2F0Y2hlZAorICAgICAgICAgKHYyIChnZW5zeW0pKSA7OyB3 YXRjaGVkCisgICAgICAgICAoYTEgKGdlbnN5bSkpCisgICAgICAgICAoYTIgKGdlbnN5bSkpCisg ICAgICAgICAoYTMgKGdlbnN5bSkpCisgICAgICAgICAoZjEgKGxhbWJkYSAoJnJlc3QgYXJncykg KHB1c2ggYXJncyByMSkpKSkKKyAgICAoZGVmdmFyYWxpYXMgYTEgdjEpCisgICAgKGRlZnZhcmFs aWFzIGEyIGExKQorICAgIChkZWZ2YXJhbGlhcyBhMyBhMikKKyAgICAoYWRkLXZhcmlhYmxlLXdh dGNoZXIgdjIgZjEpCisgICAgOzsgcmUtYWxpYXMgbWlkZGxlIHRvIHdhdGNoZWQKKyAgICAoZGVm dmFyYWxpYXMgYTIgdjIpCisgICAgOzsgc2V0IGZyb20gZW5kIG9mIGNoYWluCisgICAgKHNldCBh MyAyMDAwKQorICAgIChzaG91bGQgKGVxdWFsIChwb3AgcjEpIGAoLHYyIDIwMDAgc2V0IG5pbCkp KQorICAgIChzaG91bGQgKG51bGwgcjEpKQorICAgIChzZXQgYTIgMTAwMCkKKyAgICAoc2hvdWxk IChlcXVhbCAocG9wIHIxKSBgKCx2MiAxMDAwIHNldCBuaWwpKSkKKyAgICAoc2hvdWxkIChudWxs IHIxKSkpKQorCiAoZXJ0LWRlZnRlc3QgZGF0YS10ZXN0cy1raWxsLWFsbC1sb2NhbC12YXJpYWJs ZXMgKCkgO2J1ZyMzMDg0NgogICAod2l0aC10ZW1wLWJ1ZmZlcgogICAgIChzZXRxLWxvY2FsIGRh dGEtdGVzdHMtZm9vMSAxKQotLSAKMi4zNC4xCgo= --000000000000ddb42b06154161fb Content-Type: application/x-patch; name="0013-trapped_write-no-longer-needs-to-be-harmonized-acros.patch" Content-Disposition: attachment; filename="0013-trapped_write-no-longer-needs-to-be-harmonized-acros.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lukvnhth2 RnJvbSAwMjBlZDVkY2MxNjY1MThhMGZiNDhlZTc1YzE1ZjQ2YWU3ZTJhY2VlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUm9iZXJ0IEEuIEJ1cmtzIiA8cmJ1cmtzZGV2QGdtYWlsLmNv bT4KRGF0ZTogVGh1LCA3IE1hciAyMDI0IDAyOjQwOjIyIC0wNTAwClN1YmplY3Q6IFtQQVRDSCAx My8zMV0gJ3RyYXBwZWRfd3JpdGUnIG5vIGxvbmdlciBuZWVkcyB0byBiZSAiaGFybW9uaXplZCIK IGFjcm9zcyB0aGUgJ29iYXJyYXknCgpEdWUgdG8gY2hhbmdlcyBpbiB0aGUgbWVjaGFuaWNzIG9m ICd0cmFwcGVkX3dyaXRlJyBmbGFnIGhhbmRsaW5nIGluCm90aGVyIGZ1bmN0aW9ucyB0aGVyZSBp cyBubyBsb25nZXIgdGhlIG5lZWQgdG8gc2VhcmNoIGV2ZXJ5IGludGVybmVkCnN5bWJvbCBhbmQg Zm9sbG93IGV2ZXJ5IHJlZGlyZWN0aW9uIHdoZW4gYWRkaW5nIGFuZCByZW1vdmluZyB2YXJpYWJs ZQp3YXRjaGVyIGZ1bmN0aW9ucy4KCiogc3JjL2RhdGEuYyAoaGFybW9uaXplX3ZhcmlhYmxlX3dh dGNoZXJzKToKUmVtb3ZlZCBmdW5jdGlvbiBhcyBpdCBpcyBubyBsb25nZXIgcmVxdWlyZWQuCihG YWRkX3ZhcmlhYmxlX3dhdGNoZXIpOiBSZW1vdmVkIGhhcm1vbml6aW5nLgooRnJlbW92ZV92YXJp YWJsZV93YXRjaGVyKTogUmVtb3ZlZCBoYXJtb25pemluZy4KLS0tCiBzcmMvZGF0YS5jIHwgMTYg Ky0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxNSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvZGF0YS5jIGIvc3JjL2RhdGEuYwppbmRleCA0M2Iy OTZmZjM0My4uZmU5ZDA5N2VjMzAgMTAwNjQ0Ci0tLSBhL3NyYy9kYXRhLmMKKysrIGIvc3JjL2Rh dGEuYwpAQCAtMTgzMCwxNSArMTgzMCw2IEBAIHJlc3RvcmVfc3ltYm9sX3RyYXBwZWRfd3JpdGUg KExpc3BfT2JqZWN0IHN5bWJvbCkKICAgc2V0X3N5bWJvbF90cmFwcGVkX3dyaXRlIChzeW1ib2ws IFNZTUJPTF9UUkFQUEVEX1dSSVRFKTsKIH0KIAotc3RhdGljIHZvaWQKLWhhcm1vbml6ZV92YXJp YWJsZV93YXRjaGVycyAoTGlzcF9PYmplY3QgYWxpYXMsIExpc3BfT2JqZWN0IGJhc2VfdmFyaWFi bGUpCi17Ci0gIGlmICghRVEgKGJhc2VfdmFyaWFibGUsIGFsaWFzKQotICAgICAgJiYgRVEgKGJh c2VfdmFyaWFibGUsIEZpbmRpcmVjdF92YXJpYWJsZSAoYWxpYXMpKSkKLSAgICBzZXRfc3ltYm9s X3RyYXBwZWRfd3JpdGUKLSAgICAgIChhbGlhcywgWFNZTUJPTCAoYmFzZV92YXJpYWJsZSktPnUu cy50cmFwcGVkX3dyaXRlKTsKLX0KLQogREVGVU4gKCJhZGQtdmFyaWFibGUtd2F0Y2hlciIsIEZh ZGRfdmFyaWFibGVfd2F0Y2hlciwgU2FkZF92YXJpYWJsZV93YXRjaGVyLAogICAgICAgIDIsIDIs IDAsCiAgICAgICAgZG9jOiAvKiBDYXVzZSBXQVRDSC1GVU5DVElPTiB0byBiZSBjYWxsZWQgd2hl biBTWU1CT0wgaXMgYWJvdXQgdG8gYmUgc2V0LgpAQCAtMTg1OCw4ICsxODQ5LDYgQEAgREVGVU4g KCJhZGQtdmFyaWFibGUtd2F0Y2hlciIsIEZhZGRfdmFyaWFibGVfd2F0Y2hlciwgU2FkZF92YXJp YWJsZV93YXRjaGVyLAogICBzeW1ib2wgPSBGaW5kaXJlY3RfdmFyaWFibGUgKHN5bWJvbCk7CiAg IENIRUNLX1NZTUJPTCAoc3ltYm9sKTsKICAgc2V0X3N5bWJvbF90cmFwcGVkX3dyaXRlIChzeW1i b2wsIFNZTUJPTF9UUkFQUEVEX1dSSVRFKTsKLSAgbWFwX29iYXJyYXkgKFZvYmFycmF5LCBoYXJt b25pemVfdmFyaWFibGVfd2F0Y2hlcnMsIHN5bWJvbCk7Ci0KICAgTGlzcF9PYmplY3Qgd2F0Y2hl cnMgPSBGZ2V0IChzeW1ib2wsIFF3YXRjaGVycyk7CiAgIExpc3BfT2JqZWN0IG1lbWJlciA9IEZt ZW1iZXIgKHdhdGNoX2Z1bmN0aW9uLCB3YXRjaGVycyk7CiAgIGlmIChOSUxQIChtZW1iZXIpKQpA QCAtMTg3OCwxMCArMTg2Nyw3IEBAIFNZTUJPTCAob3IgaXRzIGFsaWFzZXMpIGFyZSBzZXQuICAq LykKICAgTGlzcF9PYmplY3Qgd2F0Y2hlcnMgPSBGZ2V0IChzeW1ib2wsIFF3YXRjaGVycyk7IC8q IENIRUNLX1NZTUJPTCBpcyBpbiBGZ2V0ICovCiAgIHdhdGNoZXJzID0gRmRlbGV0ZSAod2F0Y2hf ZnVuY3Rpb24sIHdhdGNoZXJzKTsKICAgaWYgKE5JTFAgKHdhdGNoZXJzKSkKLSAgICB7Ci0gICAg ICBzZXRfc3ltYm9sX3RyYXBwZWRfd3JpdGUgKHN5bWJvbCwgU1lNQk9MX1VOVFJBUFBFRF9XUklU RSk7Ci0gICAgICBtYXBfb2JhcnJheSAoVm9iYXJyYXksIGhhcm1vbml6ZV92YXJpYWJsZV93YXRj aGVycywgc3ltYm9sKTsKLSAgICB9CisgICAgc2V0X3N5bWJvbF90cmFwcGVkX3dyaXRlIChzeW1i b2wsIFNZTUJPTF9VTlRSQVBQRURfV1JJVEUpOwogICBGcHV0IChzeW1ib2wsIFF3YXRjaGVycywg d2F0Y2hlcnMpOwogICByZXR1cm4gUW5pbDsKIH0KLS0gCjIuMzQuMQoK --000000000000ddb42b06154161fb Content-Type: application/x-patch; name="0008-src-eval.c-do_specbind-Avoid-using-enumeration-as-bo.patch" Content-Disposition: attachment; filename="0008-src-eval.c-do_specbind-Avoid-using-enumeration-as-bo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lukvnhu17 RnJvbSBkMGM5Y2M2ZDAxNWZjYzAxMGUyNDg1YWUyMTc5MTA4ZDMwYzVkN2RmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUm9iZXJ0IEEuIEJ1cmtzIiA8cmJ1cmtzZGV2QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAxMyBNYXIgMjAyNCAxODoyOTozMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDgvMzFdIDsgKiBzcmMvZXZhbC5jIChkb19zcGVjYmluZCk6IEF2b2lkIHVzaW5nIGVudW1lcmF0 aW9uCiBhcyBib29sZWFuCgotLS0KIHNyYy9ldmFsLmMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvZXZhbC5jIGIv c3JjL2V2YWwuYwppbmRleCAxZDI1MGI5OTVlOS4uNTQ5N2NjNjAzMWUgMTAwNjQ0Ci0tLSBhL3Ny Yy9ldmFsLmMKKysrIGIvc3JjL2V2YWwuYwpAQCAtMzQzNSw3ICszNDM1LDcgQEAgZG9fc3BlY2Jp bmQgKHN0cnVjdCBMaXNwX1N5bWJvbCAqc3ltLCB1bmlvbiBzcGVjYmluZGluZyAqYmluZCwKICAg c3dpdGNoIChzeW0tPnUucy5yZWRpcmVjdCkKICAgICB7CiAgICAgY2FzZSBTWU1CT0xfUExBSU5W QUw6Ci0gICAgICBpZiAoIXN5bS0+dS5zLnRyYXBwZWRfd3JpdGUpCisgICAgICBpZiAoc3ltLT51 LnMudHJhcHBlZF93cml0ZSA9PSBTWU1CT0xfVU5UUkFQUEVEX1dSSVRFKQogCVNFVF9TWU1CT0xf VkFMIChzeW0sIHZhbHVlKTsKICAgICAgIGVsc2UKICAgICAgICAgc2V0X2ludGVybmFsIChzcGVj cGRsX3N5bWJvbCAoYmluZCksIHZhbHVlLCBRbmlsLCBiaW5kZmxhZyk7Ci0tIAoyLjM0LjEKCg== --000000000000ddb42b06154161fb Content-Type: application/x-patch; name="0010-Added-commentary.patch" Content-Disposition: attachment; filename="0010-Added-commentary.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lukvnhtt5 RnJvbSA5ZjRiZTFlMGQzZjRlYWJjYjMzMWQwZmIxNGU2ZDk3YWFjNzcxMjgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUm9iZXJ0IEEuIEJ1cmtzIiA8cmJ1cmtzZGV2QGdtYWlsLmNv bT4KRGF0ZTogVGh1LCA3IE1hciAyMDI0IDAzOjQ3OjM4IC0wNTAwClN1YmplY3Q6IFtQQVRDSCAx MC8zMV0gOyAqIEFkZGVkIGNvbW1lbnRhcnkKCiogc3JjL2RhdGEuYyAoRmluZGlyZWN0X3Zhcmlh YmxlKShub3RpZnlfdmFyaWFibGVfd2F0Y2hlcnMpOgotLS0KIHNyYy9kYXRhLmMgfCA2ICsrKysr LQogMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyYy9kYXRhLmMgYi9zcmMvZGF0YS5jCmluZGV4IGM1ZWE3ZTZhODBjLi40M2IyOTZm ZjM0MyAxMDA2NDQKLS0tIGEvc3JjL2RhdGEuYworKysgYi9zcmMvZGF0YS5jCkBAIC0xMjg0LDYg KzEyODQsOCBAQCBERUZVTiAoImluZGlyZWN0LXZhcmlhYmxlIiwgRmluZGlyZWN0X3ZhcmlhYmxl LCBTaW5kaXJlY3RfdmFyaWFibGUsIDEsIDEsIDAsCiB7CiAgIGlmIChTWU1CT0xQIChvYmplY3Qp KQogICAgIHsKKyAgICAgIC8qIFRoaXMgd2lsbCBhbHNvIHNhbml0aXplIHRoZSBpbnB1dCBzeW1i b2wuICBUaGF0IGlzLCBldmVuIGlmIG5vCisJIGFsaWFzaW5nIGhhcyBvY2N1cnJlZCBpdCB3aWxs IHJldHVybiBhIGJhcmUgc3ltYm9sLiAgKi8KICAgICAgIHN0cnVjdCBMaXNwX1N5bWJvbCAqc3lt ID0gWFNZTUJPTCAob2JqZWN0KTsKICAgICAgIHdoaWxlIChzeW0tPnUucy5yZWRpcmVjdCA9PSBT WU1CT0xfVkFSQUxJQVMpCiAJc3ltID0gU1lNQk9MX0FMSUFTIChzeW0pOwpAQCAtMTI5Miw3ICsx Mjk0LDYgQEAgREVGVU4gKCJpbmRpcmVjdC12YXJpYWJsZSIsIEZpbmRpcmVjdF92YXJpYWJsZSwg U2luZGlyZWN0X3ZhcmlhYmxlLCAxLCAxLCAwLAogICByZXR1cm4gb2JqZWN0OwogfQogCi0KIC8q IEdpdmVuIHRoZSByYXcgY29udGVudHMgb2YgYSBzeW1ib2wgdmFsdWUgY2VsbCwKICAgIHJldHVy biB0aGUgTGlzcCB2YWx1ZSBvZiB0aGUgc3ltYm9sLgogICAgVGhpcyBkb2VzIG5vdCBoYW5kbGUg YnVmZmVyLWxvY2FsIHZhcmlhYmxlczsgdXNlCkBAIC0xOTAzLDYgKzE5MDQsOSBAQCBub3RpZnlf dmFyaWFibGVfd2F0Y2hlcnMgKExpc3BfT2JqZWN0IHN5bWJvbCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzcF9PYmplY3Qgb3BlcmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXNwX09iamVjdCB3aGVyZSkKIHsKKyAgLyogVGhpcyB3aWxsIGFsc28gc2FuaXRpemUgdGhl IGlucHV0IHN5bWJvbCBhbmQgZW5zdXJlIHdlIHBhc3MgYQorICAgICBiYXJlIHN5bWJvbCB0byB0 aGUgd2F0Y2hlciBmdW5jdGlvbi4gIFRoaXMgaXMgaW1wb3J0YW50IGFzIGl0IG1heQorICAgICBz dG9yZSB0aGF0IHN5bWJvbCBhbmQgYWNjZXNzIGl0IHdpdGggcG9zaXRpb25zIGRpc2FibGVkLiAg Ki8KICAgc3ltYm9sID0gRmluZGlyZWN0X3ZhcmlhYmxlIChzeW1ib2wpOwogCiAgIHNwZWNwZGxf cmVmIGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKLS0gCjIuMzQuMQoK --000000000000ddb42b06154161fb Content-Type: application/x-patch; name="0009-src-data.c-set_internal-Avoid-using-enumeration-as-b.patch" Content-Disposition: attachment; filename="0009-src-data.c-set_internal-Avoid-using-enumeration-as-b.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lukvnhtx6 RnJvbSAxMjE0YzA5ODk0MGYxNjgxNWM4ZWIyNjU1ZmQ3NjYwYTg3YjRlOGVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUm9iZXJ0IEEuIEJ1cmtzIiA8cmJ1cmtzZGV2QGdtYWlsLmNv bT4KRGF0ZTogVGh1LCAxNCBNYXIgMjAyNCAyMjowMTozOSAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDkvMzFdIDsgKiBzcmMvZGF0YS5jIChzZXRfaW50ZXJuYWwpOiBBdm9pZCB1c2luZyBlbnVtZXJh dGlvbgogYXMgYm9vbGVhbgoKQWRkZWQgY29tbWVudGFyeSBhY2tub3dsZWRnaW5nIHRoaXMgaXMg cHJvcGVyIHRocmVhZCBzd2l0Y2hpbmcgYmVoYXZpb3IuCi0tLQogc3JjL2RhdGEuYyB8IDcgKysr KystLQogMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvZGF0YS5jIGIvc3JjL2RhdGEuYwppbmRleCA2NzgzMzU3NTlmMC4uYzVl YTdlNmE4MGMgMTAwNjQ0Ci0tLSBhL3NyYy9kYXRhLmMKKysrIGIvc3JjL2RhdGEuYwpAQCAtMTcw OSw4ICsxNzA5LDExIEBAIHNldF9pbnRlcm5hbCAoTGlzcF9PYmplY3Qgc3ltYm9sLCBMaXNwX09i amVjdCBuZXd2YWwsIExpc3BfT2JqZWN0IHdoZXJlLAogCQkgICBtYWtlIENVUlJFTlQtQUxJU1Qt RUxFTUVOVCBwb2ludCB0byBpdHNlbGYsCiAJCSAgIGluZGljYXRpbmcgdGhhdCB3ZSdyZSBzZWVp bmcgdGhlIGRlZmF1bHQgdmFsdWUuCiAJCSAgIExpa2V3aXNlIGlmIHRoZSB2YXJpYWJsZSBoYXMg YmVlbiBsZXQtYm91bmQKLQkJICAgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLiAgKi8KLQkJaWYgKGJp bmRmbGFnIHx8ICFibHYtPmxvY2FsX2lmX3NldAorCQkgICBpbiB0aGUgY3VycmVudCBidWZmZXIu CisJCSAgIExpa2V3aXNlIGlmIHdlIGFyZSBzZXR0aW5nIHRoZSB2YXJpYWJsZSBkdWUgdG8KKwkJ ICAgdGhyZWFkIHN3aXRjaGluZy4gICovCisJCWlmIChiaW5kZmxhZyAhPSBTRVRfSU5URVJOQUxf U0VUCisJCSAgICB8fCAhYmx2LT5sb2NhbF9pZl9zZXQKIAkJICAgIHx8IGxldF9zaGFkb3dzX2J1 ZmZlcl9iaW5kaW5nX3AgKHN5bSkpCiAJCSAgewogCQkgICAgYmx2LT5mb3VuZCA9IGZhbHNlOwot LSAKMi4zNC4xCgo= --000000000000ddb42b06154161fb Content-Type: application/x-patch; name="0007-src-data.c-Fmakunbound-Now-calls-set_internal-direct.patch" Content-Disposition: attachment; filename="0007-src-data.c-Fmakunbound-Now-calls-set_internal-direct.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lukvnhu48 RnJvbSA3M2NmZGMxMTY5YTg5MTNlZmFlNmQzZGQxODJkMDY4Mzg1YjllMGFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUm9iZXJ0IEEuIEJ1cmtzIiA8cmJ1cmtzZGV2QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAxMyBNYXIgMjAyNCAxODoyODoyMiAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDcvMzFdICogc3JjL2RhdGEuYyAoRm1ha3VuYm91bmQpOiBOb3cgY2FsbHMgJ3NldF9pbnRlcm5h bCcKIGRpcmVjdGx5LgoKVmFsaWRhdGluZyBpbnB1dCBzeW1ib2wsIGFsaWFzIHJlZGlyZWN0aW9u LCBhbmQgY2hlY2tpbmcgZm9yIGNvbnN0YW50CndpbGwgaGFwcGVuIGluICdzZXRfaW50ZXJuYWwn LgotLS0KIHNyYy9kYXRhLmMgfCA3ICsrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlv bnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2RhdGEuYyBiL3NyYy9kYXRh LmMKaW5kZXggNTAxYzExZmNjYmEuLjY3ODMzNTc1OWYwIDEwMDY0NAotLS0gYS9zcmMvZGF0YS5j CisrKyBiL3NyYy9kYXRhLmMKQEAgLTc1NywxMCArNzU3LDkgQEAgREVGVU4gKCJtYWt1bmJvdW5k IiwgRm1ha3VuYm91bmQsIFNtYWt1bmJvdW5kLCAxLCAxLCAwLAogU2VlIGFsc28gYGZtYWt1bmJv dW5kJy4gICovKQogICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qgc3ltYm9sKQogewotICBDSEVDS19T WU1CT0wgKHN5bWJvbCk7Ci0gIGlmIChTWU1CT0xfQ09OU1RBTlRfUCAoc3ltYm9sKSkKLSAgICB4 c2lnbmFsMSAoUXNldHRpbmdfY29uc3RhbnQsIHN5bWJvbCk7Ci0gIEZzZXQgKHN5bWJvbCwgUXVu Ym91bmQpOworICAvKiAnc2V0X2ludGVybmFsJyB3aWxsICdDSEVDS19TWU1CT0wnLCBmb2xsb3cg YWxpYXMgcmVkaXJlY3Rpb24sIGFuZAorICAgICBjaGVjayBmb3Igc2V0dGluZyBjb25zdGFudC4g ICovCisgIHNldF9pbnRlcm5hbCAoc3ltYm9sLCBRdW5ib3VuZCwgUW5pbCwgU0VUX0lOVEVSTkFM X1NFVCk7CiAgIHJldHVybiBzeW1ib2w7CiB9CiAKLS0gCjIuMzQuMQoK --000000000000ddb42b06154161fb Content-Type: application/x-patch; name="0006-Make-checking-for-constant-occur-along-redirection.patch" Content-Disposition: attachment; filename="0006-Make-checking-for-constant-occur-along-redirection.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lukvnhu79 RnJvbSBiYWQ2MWEyYzM5NzA3YzI4ZTFlYjQwODU1YjI2ZmFiYWRmNWUwYTk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUm9iZXJ0IEEuIEJ1cmtzIiA8cmJ1cmtzZGV2QGdtYWlsLmNv bT4KRGF0ZTogRnJpLCA4IE1hciAyMDI0IDE3OjI3OjIzIC0wNTAwClN1YmplY3Q6IFtQQVRDSCAw Ni8zMV0gTWFrZSBjaGVja2luZyBmb3IgY29uc3RhbnQgb2NjdXIgYWxvbmcgcmVkaXJlY3Rpb24K CkFsbCBvdGhlciBmdW5jdGlvbnMgZm9sbG93IGEgcGF0dGVybiBvZiBjaGVja2luZyBmb3IgY29u c3RhbnQgYWJvdmUKdGhlIHJlZGlyZWN0IGNhc2Ugc3RhdGVtZW50LCB0aGVzZSBub3cgbWF0Y2gu ICBBbHNvLCB0aGlzIGVsaW1pbmF0ZXMKYW4gZXh0cmEgJ1hTWU1CT0wnIGNvbnZlcnNpb24gdGhh dCB3YXMgdGFraW5nIHBsYWNlIHdoZW4gdGhlc2Ugd2VyZQpjYWxsZWQuICBFdmVyeSB0aW1lIHRo ZXNlIHdlcmUgY2FsbGVkIG9uIGEgbm9uLWFsaWFzICh0aGUgY29tbW9uIGNhc2UpCmEgY29udmVy c2lvbiB3YXMgaGFwcGVuaW5nIHRvIGFzc2lnbiAnc3ltJyBhbmQgYWdhaW4gYnVyaWVkIGluc2lk ZSBvZgonU1lNQk9MX0NPTlNUQU5UX1AnLgoKKiBzcmMvZGF0YS5jIChtYWtlLXZhcmlhYmxlLWJ1 ZmZlci1sb2NhbCkgKG1ha2UtbG9jYWwtdmFyaWFibGUpOgpDaGVja2luZyBmb3IgY29uc3RhbnRz IG5vdyBvY2N1cnMgd2hlbiBmb2xsb3dpbmcgYWxpYXMgcmVkaXJlY3Rpb24uCi0tLQogc3JjL2Rh dGEuYyB8IDEyICsrKysrKy0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwg NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvZGF0YS5jIGIvc3JjL2RhdGEuYwppbmRl eCBlNTBhZGI5NDYxOS4uNTAxYzExZmNjYmEgMTAwNjQ0Ci0tLSBhL3NyYy9kYXRhLmMKKysrIGIv c3JjL2RhdGEuYwpAQCAtMjE5Miw2ICsyMTkyLDkgQEAgREVGVU4gKCJtYWtlLXZhcmlhYmxlLWJ1 ZmZlci1sb2NhbCIsIEZtYWtlX3ZhcmlhYmxlX2J1ZmZlcl9sb2NhbCwKICAgc3ltID0gWFNZTUJP TCAodmFyaWFibGUpOwogCiAgc3RhcnQ6CisgIGlmIChzeW0tPnUucy50cmFwcGVkX3dyaXRlID09 IFNZTUJPTF9OT1dSSVRFKQorICAgICAgeHNpZ25hbDEgKFFzZXR0aW5nX2NvbnN0YW50LCB2YXJp YWJsZSk7CisKICAgc3dpdGNoIChzeW0tPnUucy5yZWRpcmVjdCkKICAgICB7CiAgICAgY2FzZSBT WU1CT0xfVkFSQUxJQVM6IHN5bSA9IFNZTUJPTF9BTElBUyAoc3ltKTsgZ290byBzdGFydDsKQEAg LTIyMTQsOSArMjIxNyw2IEBAIERFRlVOICgibWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwiLCBG bWFrZV92YXJpYWJsZV9idWZmZXJfbG9jYWwsCiAgICAgZGVmYXVsdDogZW1hY3NfYWJvcnQgKCk7 CiAgICAgfQogCi0gIGlmIChTWU1CT0xfQ09OU1RBTlRfUCAodmFyaWFibGUpKQotICAgIHhzaWdu YWwxIChRc2V0dGluZ19jb25zdGFudCwgdmFyaWFibGUpOwotCiAgIGlmICghYmx2KQogICAgIHsK ICAgICAgIGJsdiA9IG1ha2VfYmx2IChzeW0sIGZvcndhcmRlZCwgdmFsY29udGVudHMpOwpAQCAt MjI2MCw2ICsyMjYwLDkgQEAgREVGVU4gKCJtYWtlLWxvY2FsLXZhcmlhYmxlIiwgRm1ha2VfbG9j YWxfdmFyaWFibGUsIFNtYWtlX2xvY2FsX3ZhcmlhYmxlLAogICBzeW0gPSBYU1lNQk9MICh2YXJp YWJsZSk7CiAKICBzdGFydDoKKyAgaWYgKHN5bS0+dS5zLnRyYXBwZWRfd3JpdGUgPT0gU1lNQk9M X05PV1JJVEUpCisgICAgeHNpZ25hbDEgKFFzZXR0aW5nX2NvbnN0YW50LCB2YXJpYWJsZSk7CisK ICAgc3dpdGNoIChzeW0tPnUucy5yZWRpcmVjdCkKICAgICB7CiAgICAgY2FzZSBTWU1CT0xfVkFS QUxJQVM6IHN5bSA9IFNZTUJPTF9BTElBUyAoc3ltKTsgZ290byBzdGFydDsKQEAgLTIyNzcsOSAr MjI4MCw2IEBAIERFRlVOICgibWFrZS1sb2NhbC12YXJpYWJsZSIsIEZtYWtlX2xvY2FsX3Zhcmlh YmxlLCBTbWFrZV9sb2NhbF92YXJpYWJsZSwKICAgICBkZWZhdWx0OiBlbWFjc19hYm9ydCAoKTsK ICAgICB9CiAKLSAgaWYgKHN5bS0+dS5zLnRyYXBwZWRfd3JpdGUgPT0gU1lNQk9MX05PV1JJVEUp Ci0gICAgeHNpZ25hbDEgKFFzZXR0aW5nX2NvbnN0YW50LCB2YXJpYWJsZSk7Ci0KICAgaWYgKCFi bHYpCiAgICAgewogICAgICAgaWYgKGZvcndhcmRlZCAmJiBCVUZGRVJfT0JKRldEUCAodmFsY29u dGVudHMuZndkKSkKLS0gCjIuMzQuMQoK --000000000000ddb42b06154161fb--