<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>236057</bug_id>
          
          <creation_ts>2022-02-02 19:56:31 -0800</creation_ts>
          <short_desc>AXIsolatedTree::updateChildren removes subtrees that should instead be moved</short_desc>
          <delta_ts>2022-02-03 18:23:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1836755</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-02-02 19:56:31 -0800</bug_when>
    <thetext>In AXIsolatedTree::updateChildren, we can sometimes remove subtrees that are queued to be added somewhere else in the tree. Specifically, this can happen when:

  1. Object 123 is slated considered to be a new child based on the live AX tree, and we collect node changes for it.
  2. Object 123 is currently a member of a subtree of some other object in oldChildrenIDs.
  3. Because of 2, Object 123 is removed from the node map in removeSubtreeFromNodeMap and added to m_pendingSubtreeRemovals
  4. We try to queue the addition of this node somewhere in tree in queueChange, but ASSERT because Object 123 is not in the node map anymore.

This causes ASSERT(m_nodeMap.contains(objectID) in AXIsolatedTree::queueChange(const NodeChange&amp;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836756</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-02 19:56:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/88415084&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836760</commentid>
    <comment_count>2</comment_count>
      <attachid>450732</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-02-02 20:07:24 -0800</bug_when>
    <thetext>Created attachment 450732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836909</commentid>
    <comment_count>3</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-02-03 06:08:58 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #2)
&gt; Created attachment 450732 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
+++ a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp

-        ASSERT(m_nodeMap.contains(parentID));
+        ASSERT_WITH_MESSAGE(m_nodeMap.contains(parentID), &quot;node map should&apos;ve contained parentID: %llu&quot;, parentID.toUInt64());

We have been using primarily loggingString() to log ObjectIdentifiers instead toUInt64(). Can we stick to one?

+    // Don&apos;t remove subtrees for objects that are part of the to-be-queued node changes.
+    // Doing this is important when a node moves to a different part of the tree rather than being deleted -- for example:
+    //   1. Object 123 is slated to be a child of this object (i.e. in newChildren), and we collect node changes for it.
+    //   2. Object 123 is currently a member of a subtree of some other object in oldChildrenIDs.
+    //   3. Thus, we don&apos;t want to delete Object 123 from the isolated tree, instead allowing it to be moved.
+    for (auto id : idsBeingChanged)
+        oldChildrenIDs.removeAll(id);
+
     // What is left in oldChildrenIDs are the IDs that are no longer children of axObject.
     // Thus, remove them from m_nodeMap and queue them to be removed from the tree.
     for (AXID&amp; axID : oldChildrenIDs)
-        removeSubtreeFromNodeMap(axID);
+        removeSubtreeFromNodeMap(axID, idsBeingChanged);

Why do we need to pass idsBeingChanged to removeSubtreeFromNodeMap since all IDs on it were already removed from oldChildrenIDs?

Furthermore, the only case I can think of this happening is if the one that we are removing is added to the ancestry. If that is the case, this can be simplified.

On the other hand, how do we know that the subtree that is being re-parenting is exactly the same as before?

It would be good to have an HTML/JS construct that reproduce this scenario, although I realize the difficulty of that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836940</commentid>
    <comment_count>4</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-02-03 07:56:25 -0800</bug_when>
    <thetext>&gt;      for (AXID&amp; axID : oldChildrenIDs)
&gt; -        removeSubtreeFromNodeMap(axID);
&gt; +        removeSubtreeFromNodeMap(axID, idsBeingChanged);
&gt; 
&gt; Why do we need to pass idsBeingChanged to removeSubtreeFromNodeMap since all
&gt; IDs on it were already removed from oldChildrenIDs?
Because the IDs we want to protect from being removed may not directly be a member of oldChildrenIDs, but instead a child of an element in oldChildrenIDs.

&gt; Furthermore, the only case I can think of this happening is if the one that
&gt; we are removing is added to the ancestry. If that is the case, this can be
&gt; simplified.
Yeah, I think that&apos;s what&apos;s happening here. A subtree (or at least the root object of the subtree) is being moved elsewhere.

&gt; On the other hand, how do we know that the subtree that is being
&gt; re-parenting is exactly the same as before?
It might be the same, but it doesn&apos;t have to be. Its children will be whatever we computed for it in collectNodeChangesForSubtree (which is when we m_nodeMap.set(ID, children)), which in turn is based on the state of the live-tree children(). So I guess the important part of this patch is preventing the root of this subtree from being destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836997</commentid>
    <comment_count>5</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-02-03 10:34:15 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #4)
&gt; &gt;      for (AXID&amp; axID : oldChildrenIDs)
&gt; &gt; -        removeSubtreeFromNodeMap(axID);
&gt; &gt; +        removeSubtreeFromNodeMap(axID, idsBeingChanged);
&gt; &gt; 
&gt; &gt; Why do we need to pass idsBeingChanged to removeSubtreeFromNodeMap since all
&gt; &gt; IDs on it were already removed from oldChildrenIDs?
&gt; Because the IDs we want to protect from being removed may not directly be a
&gt; member of oldChildrenIDs, but instead a child of an element in
&gt; oldChildrenIDs.

Right, then I think we don&apos;t need this:

+    for (auto id : idsBeingChanged)
+        oldChildrenIDs.removeAll(id);

and let removeSubtreeFromNodeMap do the filtering as you are doing now:

-        if (!axID.isValid())
+        if (!axID.isValid() || idsToKeep.contains(axID))
             continue;

&gt; 
&gt; &gt; Furthermore, the only case I can think of this happening is if the one that
&gt; &gt; we are removing is added to the ancestry. If that is the case, this can be
&gt; &gt; simplified.
&gt; Yeah, I think that&apos;s what&apos;s happening here. A subtree (or at least the root
&gt; object of the subtree) is being moved elsewhere.
&gt; 
&gt; &gt; On the other hand, how do we know that the subtree that is being
&gt; &gt; re-parenting is exactly the same as before?
&gt; It might be the same, but it doesn&apos;t have to be. Its children will be
&gt; whatever we computed for it in collectNodeChangesForSubtree (which is when
&gt; we m_nodeMap.set(ID, children)), which in turn is based on the state of the
&gt; live-tree children(). So I guess the important part of this patch is
&gt; preventing the root of this subtree from being destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837016</commentid>
    <comment_count>6</comment_count>
      <attachid>450799</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-02-03 11:01:34 -0800</bug_when>
    <thetext>Created attachment 450799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837019</commentid>
    <comment_count>7</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-02-03 11:02:39 -0800</bug_when>
    <thetext>
&gt; Right, then I think we don&apos;t need this:
&gt; 
&gt; +    for (auto id : idsBeingChanged)
&gt; +        oldChildrenIDs.removeAll(id);
&gt; 
&gt; and let removeSubtreeFromNodeMap do the filtering as you are doing now:
&gt; 
&gt; -        if (!axID.isValid())
&gt; +        if (!axID.isValid() || idsToKeep.contains(axID))
&gt;              continue;
You&apos;re right. Fixed.

&gt; We have been using primarily loggingString() to log ObjectIdentifiers instead toUInt64(). Can we stick to one?
Fixed this as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837029</commentid>
    <comment_count>8</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-02-03 11:36:28 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #6)
&gt; Created attachment 450799 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
+++ a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp

-        changes.append(nodeChangeForObject(*axObject, axParentID, true, updateNodeMap));
+        auto change = nodeChangeForObject(*axObject, axParentID, true, updateNodeMap);
+        changes.append(change);

I think this does an extra copy of change. The compiler may be smart and optimize it, but I wouldn&apos;t count on that.

--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
+++ a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h

+    void collectNodeChangesForSubtree(AXCoreObject&amp; object, AXID parentID, bool attachWrapper, Vector&lt;NodeChange&gt;&amp; changes)
+    {
+        HashSet&lt;AXID&gt; idsBeingChanged;
+        collectNodeChangesForSubtree(object, parentID, attachWrapper, changes, idsBeingChanged);
+    }
+    void collectNodeChangesForSubtree(AXCoreObject&amp;, AXID parentID, bool attachWrapper, Vector&lt;NodeChange&gt;&amp;, HashSet&lt;AXID&gt;&amp;);

Instead make collectNodeChangesForSubtree to take an std::optional&lt;HashSet&lt;AXID&gt;&gt; that default to nullopt, and then you can call it with or without that param.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837052</commentid>
    <comment_count>9</comment_count>
      <attachid>450804</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-02-03 12:24:18 -0800</bug_when>
    <thetext>Created attachment 450804
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837073</commentid>
    <comment_count>10</comment_count>
      <attachid>450808</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-02-03 13:16:48 -0800</bug_when>
    <thetext>Created attachment 450808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837076</commentid>
    <comment_count>11</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-02-03 13:19:58 -0800</bug_when>
    <thetext>&gt; -        changes.append(nodeChangeForObject(*axObject, axParentID, true,
&gt; updateNodeMap));
&gt; +        auto change = nodeChangeForObject(*axObject, axParentID, true,
&gt; updateNodeMap);
&gt; +        changes.append(change);
&gt; 
&gt; I think this does an extra copy of change. The compiler may be smart and
&gt; optimize it, but I wouldn&apos;t count on that.
Good point. The newest patch copies just the ID and moves the NodeChange into the Vector rather than copying it into the Vector.

&gt; --- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
&gt; +++ a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
&gt; 
&gt; +    void collectNodeChangesForSubtree(AXCoreObject&amp; object, AXID parentID,
&gt; bool attachWrapper, Vector&lt;NodeChange&gt;&amp; changes)
&gt; +    {
&gt; +        HashSet&lt;AXID&gt; idsBeingChanged;
&gt; +        collectNodeChangesForSubtree(object, parentID, attachWrapper,
&gt; changes, idsBeingChanged);
&gt; +    }
&gt; +    void collectNodeChangesForSubtree(AXCoreObject&amp;, AXID parentID, bool
&gt; attachWrapper, Vector&lt;NodeChange&gt;&amp;, HashSet&lt;AXID&gt;&amp;);
&gt; 
&gt; Instead make collectNodeChangesForSubtree to take an
&gt; std::optional&lt;HashSet&lt;AXID&gt;&gt; that default to nullopt, and then you can call
&gt; it with or without that param.
Presumably you meant std::optional&lt;HashSet&lt;AXID&gt;&amp;&gt; (since we want a reference of the HashSet, not our own copy), and references can&apos;t be passed inside optionals. I made this a raw HashSet&lt;AXID&gt;* pointer instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837097</commentid>
    <comment_count>12</comment_count>
      <attachid>450815</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-02-03 13:52:27 -0800</bug_when>
    <thetext>Created attachment 450815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837202</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-03 18:23:42 -0800</bug_when>
    <thetext>Committed r289097 (246794@main): &lt;https://commits.webkit.org/246794@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450815.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450732</attachid>
            <date>2022-02-02 20:07:24 -0800</date>
            <delta_ts>2022-02-03 11:01:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236057-20220202220723.patch</filename>
            <type>text/plain</type>
            <size>11890</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5YjJjYWIxYzRmZDc0
MGMyMmYyYWY2YTczY2E1YjdiOWMyOTBlYS4uMGZmNmJmYzczMjY5NmZlZGFlZWU0YzE0NzgxOTUw
MDc0MjMwZTk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIyLTAyLTAyICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVhJc29sYXRlZFRyZWU6
OnVwZGF0ZUNoaWxkcmVuIHJlbW92ZXMgc3VidHJlZXMgdGhhdCBzaG91bGQgaW5zdGVhZCBiZSBt
b3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
MDU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4g
QVhJc29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuLCB3ZSBjYW4gc29tZXRpbWVzIHJlbW92ZSBz
dWJ0cmVlcyB0aGF0IGFyZQorICAgICAgICBxdWV1ZWQgdG8gYmUgYWRkZWQgc29tZXdoZXJlIGVs
c2UgaW4gdGhlIHRyZWUuIFNwZWNpZmljYWxseSwgdGhpcyBjYW4gaGFwcGVuIHdoZW46CisKKyAg
ICAgICAgICAxLiBPYmplY3QgMTIzIGlzIGNvbnNpZGVyZWQgdG8gYmUgYSBuZXcgY2hpbGQgYmFz
ZWQgb24gdGhlIGxpdmUgQVggdHJlZSwgYW5kIHdlIGNvbGxlY3Qgbm9kZSBjaGFuZ2VzIGZvciBp
dC4KKyAgICAgICAgICAyLiBPYmplY3QgMTIzIGlzIGN1cnJlbnRseSBhIG1lbWJlciBvZiBhIHN1
YnRyZWUgb2Ygc29tZSBvdGhlciBvYmplY3QgaW4gb2xkQ2hpbGRyZW5JRHMuCisgICAgICAgICAg
My4gQmVjYXVzZSBvZiAyLCBPYmplY3QgMTIzIGlzIHJlbW92ZWQgZnJvbSB0aGUgbm9kZSBtYXAg
aW4gcmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwIGFuZCBhZGRlZCB0byBtX3BlbmRpbmdTdWJ0cmVl
UmVtb3ZhbHMKKyAgICAgICAgICA0LiBXZSB0cnkgdG8gcXVldWUgdGhlIGFkZGl0aW9uIG9mIHRo
aXMgbm9kZSBzb21ld2hlcmUgaW4gdHJlZSBpbiBxdWV1ZUNoYW5nZSwgYnV0IEFTU0VSVCBiZWNh
dXNlIE9iamVjdCAxMjMgaXMgbm90IGluIHRoZSBub2RlIG1hcCBhbnltb3JlLgorCisgICAgICAg
IFRoaXMgY2F1c2VzIHVzIHRvIGhpdCBBU1NFUlQobV9ub2RlTWFwLmNvbnRhaW5zKG9iamVjdElE
KSBpbiBBWElzb2xhdGVkVHJlZTo6cXVldWVDaGFuZ2UoY29uc3QgTm9kZUNoYW5nZSYpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBwcm9ibGVtIGJ5IGtlZXBpbmcgdHJhY2sgb2Yg
dGhlIElEcyB3ZSBhcmUgcXVldWluZyBmb3IgYWRkaXRpb24KKyAgICAgICAgdG8gdGhlIHRyZWUg
YW5kIG1ha2luZyBzdXJlIHdlIGRvbid0IHJlbW92ZSB0aG9zZSBJRHMuCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cXVldWVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZFRyZWU6OmNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6Om5vZGVBbmNlc3RyeUNoYW5nZXMpOgorICAgICAgICBL
ZWVwIHRyYWNrIG9mIElEcyB3ZSBhcmUgcXVldWVpbmcgY2hhbmdlcyBmb3IuCisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6dXBkYXRlQ2hpbGRyZW4pOgorICAgICAgICBLZWVwIHRy
YWNrIG9mIElEcyB3ZSBhcmUgcXVldWVpbmcgY2hhbmdlcyBmb3IgYW5kIGRvbid0IHJlbW92ZSB0
aGVtLAorICAgICAgICBldmVuIGlmIHRoZXkgYXJlIHBhcnQgb2Ygb2xkQ2hpbGRyZW5JRHMuCisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFw
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5o
OgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRyZWVGcm9tTm9k
ZU1hcCk6CisgICAgICAgIEFjY2VwdCBhbm90aGVyIHBhcmFtdGVyIGxpc3RpbmcgSURzIHRvIGtl
ZXAuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2Vz
Rm9yU3VidHJlZSk6CisgICAgICAgIEtlZXAgdHJhY2sgb2YgSURzIHdlIGFyZSBxdWV1ZWluZyBj
aGFuZ2VzIGZvci4KKwogMjAyMi0wMi0wMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxl
LmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFJlbW92ZSBEaXNwbGF5TGlzdDo6UmVwbGF5
ZXI6OkRlbGVnYXRlIGFuZCBEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpEZWxlZ2F0ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuY3BwCmluZGV4IDdmOTg2ODM3OTE2NjgyMmE3ZDBiMjYzNDFhNTA4MDA2
OGViNjJmMGIuLmY2OTRhNjU4N2QyM2I2OGM3NWRlZWIyYjhmMTBjOGMxZTkxNDY4NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTIzMSwxNCArMjMxLDE0IEBAIHZvaWQgQVhJc29sYXRl
ZFRyZWU6OnF1ZXVlQ2hhbmdlKGNvbnN0IE5vZGVDaGFuZ2UmIG5vZGVDaGFuZ2UpCiAKICAgICBB
WElEIHBhcmVudElEID0gbm9kZUNoYW5nZS5pc29sYXRlZE9iamVjdC0+cGFyZW50KCk7CiAgICAg
aWYgKHBhcmVudElELmlzVmFsaWQoKSkgewotICAgICAgICBBU1NFUlQobV9ub2RlTWFwLmNvbnRh
aW5zKHBhcmVudElEKSk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9ub2RlTWFwLmNv
bnRhaW5zKHBhcmVudElEKSwgIm5vZGUgbWFwIHNob3VsZCd2ZSBjb250YWluZWQgcGFyZW50SUQ6
ICVsbHUiLCBwYXJlbnRJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgYXV0byBzaWJsaW5nc0lEcyA9
IG1fbm9kZU1hcC5nZXQocGFyZW50SUQpOwogICAgICAgICBtX3BlbmRpbmdDaGlsZHJlblVwZGF0
ZXMuYXBwZW5kKHsgcGFyZW50SUQsIFdURk1vdmUoc2libGluZ3NJRHMpIH0pOwogICAgIH0KIAog
ICAgIEFYSUQgb2JqZWN0SUQgPSBub2RlQ2hhbmdlLmlzb2xhdGVkT2JqZWN0LT5vYmplY3RJRCgp
OwotICAgIEFTU0VSVChvYmplY3RJRCAhPSBwYXJlbnRJRCk7Ci0gICAgQVNTRVJUKG1fbm9kZU1h
cC5jb250YWlucyhvYmplY3RJRCkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uob2JqZWN0SUQg
IT0gcGFyZW50SUQsICJvYmplY3QgSUQgd2FzIHRoZSBzYW1lIGFzIGl0cyBwYXJlbnQgSUQgKCVs
bHUpIHdoZW4gcXVldWVpbmcgYSBub2RlIGNoYW5nZSIsIG9iamVjdElELnRvVUludDY0KCkpOwor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9ub2RlTWFwLmNvbnRhaW5zKG9iamVjdElEKSwgIm5v
ZGUgbWFwIHNob3VsZCd2ZSBjb250YWluZWQgb2JqZWN0SUQ6ICVsbHUiLCBvYmplY3RJRC50b1VJ
bnQ2NCgpKTsKICAgICBhdXRvIGNoaWxkcmVuSURzID0gbV9ub2RlTWFwLmdldChvYmplY3RJRCk7
CiAgICAgbV9wZW5kaW5nQ2hpbGRyZW5VcGRhdGVzLmFwcGVuZCh7IG9iamVjdElELCBXVEZNb3Zl
KGNoaWxkcmVuSURzKSB9KTsKIH0KQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIEFYSXNvbGF0ZWRU
cmVlOjpxdWV1ZUNoYW5nZXNBbmRSZW1vdmFscyhjb25zdCBWZWN0b3I8Tm9kZUNoYW5nZT4mIGNo
YW5nZXMsCiAgICAgICAgIHF1ZXVlQ2hhbmdlKGNoYW5nZSk7CiB9CiAKLXZvaWQgQVhJc29sYXRl
ZFRyZWU6OmNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVj
dCwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyLCBWZWN0b3I8Tm9kZUNoYW5nZT4m
IGNoYW5nZXMpCit2b2lkIEFYSXNvbGF0ZWRUcmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0
cmVlKEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYSUQgcGFyZW50SUQsIGJvb2wgYXR0YWNoV3Jh
cHBlciwgVmVjdG9yPE5vZGVDaGFuZ2U+JiBjaGFuZ2VzLCBIYXNoU2V0PEFYSUQ+JiBpZHNCZWlu
Z0NoYW5nZWQpCiB7CiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OmNvbGxlY3ROb2RlQ2hh
bmdlc0ZvclN1YnRyZWUiKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMjY3LDEy
ICsyNjcsMTMgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9yU3Vi
dHJlZShBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWElEIHAKIAogICAgIGF1dG8gbm9kZUNoYW5n
ZSA9IG5vZGVDaGFuZ2VGb3JPYmplY3QoYXhPYmplY3QsIHBhcmVudElELCBhdHRhY2hXcmFwcGVy
KTsKICAgICBjaGFuZ2VzLmFwcGVuZChub2RlQ2hhbmdlKTsKKyAgICBpZHNCZWluZ0NoYW5nZWQu
YWRkKG5vZGVDaGFuZ2UuaXNvbGF0ZWRPYmplY3QtPm9iamVjdElEKCkpOwogCiAgICAgYXV0byBh
eENoaWxkcmVuID0gYXhPYmplY3QuY2hpbGRyZW4oKTsKICAgICBWZWN0b3I8QVhJRD4gYXhDaGls
ZHJlbklEczsKICAgICBheENoaWxkcmVuSURzLnJlc2VydmVDYXBhY2l0eShheENoaWxkcmVuLnNp
emUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBheENoaWxkIDogYXhDaGlsZHJlbikgewotICAg
ICAgICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpheENoaWxkLCBheE9iamVjdC5vYmpl
Y3RJRCgpLCBhdHRhY2hXcmFwcGVyLCBjaGFuZ2VzKTsKKyAgICAgICAgY29sbGVjdE5vZGVDaGFu
Z2VzRm9yU3VidHJlZSgqYXhDaGlsZCwgYXhPYmplY3Qub2JqZWN0SUQoKSwgYXR0YWNoV3JhcHBl
ciwgY2hhbmdlcywgaWRzQmVpbmdDaGFuZ2VkKTsKICAgICAgICAgYXhDaGlsZHJlbklEcy51bmNo
ZWNrZWRBcHBlbmQoYXhDaGlsZC0+b2JqZWN0SUQoKSk7CiAgICAgfQogCkBAIC0zMjcsNyArMzI4
LDcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3BlcnR5KGNvbnN0IEFYQ29y
ZU9iamVjdCYgYXhPYmplY3QsIEFYUHJvcGVydHkKICAgICBtX3BlbmRpbmdQcm9wZXJ0eUNoYW5n
ZXMuYXBwZW5kKHsgYXhPYmplY3Qub2JqZWN0SUQoKSwgcHJvcGVydHlNYXAgfSk7CiB9CiAKLVZl
Y3RvcjxBWElzb2xhdGVkVHJlZTo6Tm9kZUNoYW5nZT4gQVhJc29sYXRlZFRyZWU6Om5vZGVBbmNl
c3RyeUNoYW5nZXMoQVhDb3JlT2JqZWN0JiBheENvcmVPYmplY3QpCitWZWN0b3I8QVhJc29sYXRl
ZFRyZWU6Ok5vZGVDaGFuZ2U+IEFYSXNvbGF0ZWRUcmVlOjpub2RlQW5jZXN0cnlDaGFuZ2VzKEFY
Q29yZU9iamVjdCYgYXhDb3JlT2JqZWN0LCBIYXNoU2V0PEFYSUQ+JiBpZHNCZWluZ0NoYW5nZWQp
CiB7CiAgICAgVmVjdG9yPE5vZGVDaGFuZ2U+IGNoYW5nZXM7CiAKQEAgLTM0Myw3ICszNDQsOSBA
QCBWZWN0b3I8QVhJc29sYXRlZFRyZWU6Ok5vZGVDaGFuZ2U+IEFYSXNvbGF0ZWRUcmVlOjpub2Rl
QW5jZXN0cnlDaGFuZ2VzKEFYQ29yZU9iagogCiAgICAgICAgIC8vIElmIGF4T2JqZWN0IGlzIHRo
ZSBvcmlnaW5hbCBvYmplY3QgZm9yIHdoaWNoIHdlIGFyZSBhZGRpbmcgaXRzIGFuY2VzdHJ5LCBk
b24ndCB1cGRhdGUgdGhlIG5vZGVNYXAgc2luY2UgdXBkYXRlQ2hpbGRyZW4gbmVlZHMgdG8gY29t
cGFyZSBpdHMgcHJldmlvdXMgY2hpbGRyZW4gd2l0aCB0aGUgbmV3IG9uZXMuCiAgICAgICAgIGJv
b2wgdXBkYXRlTm9kZU1hcCA9IGF4T2JqZWN0ICE9ICZheENvcmVPYmplY3Q7Ci0gICAgICAgIGNo
YW5nZXMuYXBwZW5kKG5vZGVDaGFuZ2VGb3JPYmplY3QoKmF4T2JqZWN0LCBheFBhcmVudElELCB0
cnVlLCB1cGRhdGVOb2RlTWFwKSk7CisgICAgICAgIGF1dG8gY2hhbmdlID0gbm9kZUNoYW5nZUZv
ck9iamVjdCgqYXhPYmplY3QsIGF4UGFyZW50SUQsIHRydWUsIHVwZGF0ZU5vZGVNYXApOworICAg
ICAgICBjaGFuZ2VzLmFwcGVuZChjaGFuZ2UpOworICAgICAgICBpZHNCZWluZ0NoYW5nZWQuYWRk
KGNoYW5nZS5pc29sYXRlZE9iamVjdC0+b2JqZWN0SUQoKSk7CiAKICAgICAgICAgaWYgKGF4UGFy
ZW50KQogICAgICAgICAgICAgbV9ub2RlTWFwLnNldChheFBhcmVudC0+b2JqZWN0SUQoKSwgYXhQ
YXJlbnQtPmNoaWxkcmVuSURzKCkpOwpAQCAtMzcxLDM4ICszNzQsNDYgQEAgdm9pZCBBWElzb2xh
dGVkVHJlZTo6dXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0JiBheE9iamVjdCkKICAgICBpZiAo
IWF4T2JqZWN0LmRvY3VtZW50KCkgfHwgIWF4T2JqZWN0LmRvY3VtZW50KCktPmhhc0xpdmluZ1Jl
bmRlclRyZWUoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgSGFzaFNldDxBWElEPiBpZHNCZWlu
Z0NoYW5nZWQ7CiAgICAgLy8gdXBkYXRlQ2hpbGRyZW4gbWF5IGJlIGNhbGxlZCBhcyB0aGUgcmVz
dWx0IG9mIGEgY2hpbGRyZW4gY2hhbmdlZAogICAgIC8vIG5vdGlmaWNhdGlvbiBmb3IgYW4gYXhP
YmplY3QgdGhhdCBoYXMgbm8gYXNzb2NpYXRlZCBpc29sYXRlZCBvYmplY3QuCiAgICAgLy8gQW4g
ZXhhbXBsZSBvZiB0aGlzIGlzIHdoZW4gYW4gZW1wdHkgZWxlbWVudCBzdWNoIGFzIGEgPGNhbnZh
cz4gb3IgPGRpdj4KICAgICAvLyBpcyBhZGRlZCBhIG5ldyBjaGlsZC4gVGh1cyBhZGQgdGhlIGFu
Y2VzdHJ5IHRoYXQgY29ubmVjdHMgdGhlIGFzc29jaWF0ZWQKICAgICAvLyBpc29sYXRlZCBvYmpl
Y3QgdG8gdGhlIGNsb3Nlc3QgZXhpc3RpbmcgYW5jZXN0b3IuCi0gICAgVmVjdG9yPE5vZGVDaGFu
Z2U+IGNoYW5nZXMgPSBub2RlQW5jZXN0cnlDaGFuZ2VzKGF4T2JqZWN0KTsKKyAgICBWZWN0b3I8
Tm9kZUNoYW5nZT4gY2hhbmdlcyA9IG5vZGVBbmNlc3RyeUNoYW5nZXMoYXhPYmplY3QsIGlkc0Jl
aW5nQ2hhbmdlZCk7CiAKICAgICBhdXRvIG9sZENoaWxkcmVuSURzID0gbV9ub2RlTWFwLmdldChh
eE9iamVjdC5vYmplY3RJRCgpKTsKIAotICAgIGNvbnN0IGF1dG8mIGF4Q2hpbGRyZW4gPSBheE9i
amVjdC5jaGlsZHJlbigpOworICAgIGNvbnN0IGF1dG8mIG5ld0NoaWxkcmVuID0gYXhPYmplY3Qu
Y2hpbGRyZW4oKTsKICAgICBhdXRvIG5ld0NoaWxkcmVuSURzID0gYXhPYmplY3QuY2hpbGRyZW5J
RHMoZmFsc2UpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBheENoaWxkcmVuLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIEFTU0VSVChheENoaWxkcmVuW2ldLT5vYmplY3RJRCgpID09IG5l
d0NoaWxkcmVuSURzW2ldKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0NoaWxkcmVu
LnNpemUoKTsgKytpKSB7CisgICAgICAgIEFTU0VSVChuZXdDaGlsZHJlbltpXS0+b2JqZWN0SUQo
KSA9PSBuZXdDaGlsZHJlbklEc1tpXSk7CiAgICAgICAgIEFTU0VSVChuZXdDaGlsZHJlbklEc1tp
XS5pc1ZhbGlkKCkpOwogICAgICAgICBzaXplX3QgaW5kZXggPSBvbGRDaGlsZHJlbklEcy5maW5k
KG5ld0NoaWxkcmVuSURzW2ldKTsKICAgICAgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKQogICAg
ICAgICAgICAgb2xkQ2hpbGRyZW5JRHMucmVtb3ZlKGluZGV4KTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAvLyBUaGlzIGlzIGEgbmV3IGNoaWxkLCBhZGQgaXQgdG8gdGhlIHRyZWUuCi0g
ICAgICAgICAgICBBWExPRygiQWRkaW5nIGEgbmV3IGNoaWxkIGZvcjoiKTsKLSAgICAgICAgICAg
IEFYTE9HKGF4Q2hpbGRyZW5baV0pOwotICAgICAgICAgICAgY29sbGVjdE5vZGVDaGFuZ2VzRm9y
U3VidHJlZSgqYXhDaGlsZHJlbltpXSwgYXhPYmplY3Qub2JqZWN0SUQoKSwgdHJ1ZSwgY2hhbmdl
cyk7CisgICAgICAgICAgICBBWExPRyhtYWtlU3RyaW5nKCJBWElEICIsIGF4T2JqZWN0Lm9iamVj
dElEKCkubG9nZ2luZ1N0cmluZygpLCAiIGdhaW5pbmcgbmV3IHN1YnRyZWUsIHN0YXJ0aW5nIGF0
IElEICIsIG5ld0NoaWxkcmVuW2ldLT5vYmplY3RJRCgpLmxvZ2dpbmdTdHJpbmcoKSwgIjoiKSk7
CisgICAgICAgICAgICBBWExPRyhuZXdDaGlsZHJlbltpXSk7CisgICAgICAgICAgICBjb2xsZWN0
Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpuZXdDaGlsZHJlbltpXSwgYXhPYmplY3Qub2JqZWN0SUQo
KSwgdHJ1ZSwgY2hhbmdlcywgaWRzQmVpbmdDaGFuZ2VkKTsKICAgICAgICAgfQogICAgIH0KLQog
ICAgIG1fbm9kZU1hcC5zZXQoYXhPYmplY3Qub2JqZWN0SUQoKSwgbmV3Q2hpbGRyZW5JRHMpOwog
CisgICAgLy8gRG9uJ3QgcmVtb3ZlIHN1YnRyZWVzIGZvciBvYmplY3RzIHRoYXQgYXJlIHBhcnQg
b2YgdGhlIHRvLWJlLXF1ZXVlZCBub2RlIGNoYW5nZXMuCisgICAgLy8gRG9pbmcgdGhpcyBpcyBp
bXBvcnRhbnQgd2hlbiBhIG5vZGUgbW92ZXMgdG8gYSBkaWZmZXJlbnQgcGFydCBvZiB0aGUgdHJl
ZSByYXRoZXIgdGhhbiBiZWluZyBkZWxldGVkIC0tIGZvciBleGFtcGxlOgorICAgIC8vICAgMS4g
T2JqZWN0IDEyMyBpcyBzbGF0ZWQgdG8gYmUgYSBjaGlsZCBvZiB0aGlzIG9iamVjdCAoaS5lLiBp
biBuZXdDaGlsZHJlbiksIGFuZCB3ZSBjb2xsZWN0IG5vZGUgY2hhbmdlcyBmb3IgaXQuCisgICAg
Ly8gICAyLiBPYmplY3QgMTIzIGlzIGN1cnJlbnRseSBhIG1lbWJlciBvZiBhIHN1YnRyZWUgb2Yg
c29tZSBvdGhlciBvYmplY3QgaW4gb2xkQ2hpbGRyZW5JRHMuCisgICAgLy8gICAzLiBUaHVzLCB3
ZSBkb24ndCB3YW50IHRvIGRlbGV0ZSBPYmplY3QgMTIzIGZyb20gdGhlIGlzb2xhdGVkIHRyZWUs
IGluc3RlYWQgYWxsb3dpbmcgaXQgdG8gYmUgbW92ZWQuCisgICAgZm9yIChhdXRvIGlkIDogaWRz
QmVpbmdDaGFuZ2VkKQorICAgICAgICBvbGRDaGlsZHJlbklEcy5yZW1vdmVBbGwoaWQpOworCiAg
ICAgLy8gV2hhdCBpcyBsZWZ0IGluIG9sZENoaWxkcmVuSURzIGFyZSB0aGUgSURzIHRoYXQgYXJl
IG5vIGxvbmdlciBjaGlsZHJlbiBvZiBheE9iamVjdC4KICAgICAvLyBUaHVzLCByZW1vdmUgdGhl
bSBmcm9tIG1fbm9kZU1hcCBhbmQgcXVldWUgdGhlbSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHRy
ZWUuCiAgICAgZm9yIChBWElEJiBheElEIDogb2xkQ2hpbGRyZW5JRHMpCi0gICAgICAgIHJlbW92
ZVN1YnRyZWVGcm9tTm9kZU1hcChheElEKTsKKyAgICAgICAgcmVtb3ZlU3VidHJlZUZyb21Ob2Rl
TWFwKGF4SUQsIGlkc0JlaW5nQ2hhbmdlZCk7CiAgICAgcXVldWVDaGFuZ2VzQW5kUmVtb3ZhbHMo
Y2hhbmdlcywgb2xkQ2hpbGRyZW5JRHMpOwogfQogCkBAIC00NzEsNyArNDgyLDcgQEAgdm9pZCBB
WElzb2xhdGVkVHJlZTo6cmVtb3ZlTm9kZShBWElEIGF4SUQpCiAgICAgbV9wZW5kaW5nTm9kZVJl
bW92YWxzLmFwcGVuZChheElEKTsKIH0KIAotdm9pZCBBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3Vi
dHJlZUZyb21Ob2RlTWFwKEFYSUQgYXhJRCkKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1
YnRyZWVGcm9tTm9kZU1hcChBWElEIGF4SUQsIGNvbnN0IEhhc2hTZXQ8QVhJRD4mIGlkc1RvS2Vl
cCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZSIpOwogICAg
IEFYTE9HKG1ha2VTdHJpbmcoIlJlbW92aW5nIHN1YnRyZWUgZm9yIGF4SUQgIiwgYXhJRC5sb2dn
aW5nU3RyaW5nKCkpKTsKQEAgLTQ4MCw3ICs0OTEsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpy
ZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAoQVhJRCBheElEKQogICAgIFZlY3RvcjxBWElEPiByZW1v
dmFscyA9IHsgYXhJRCB9OwogICAgIHdoaWxlIChyZW1vdmFscy5zaXplKCkpIHsKICAgICAgICAg
QVhJRCBheElEID0gcmVtb3ZhbHMudGFrZUxhc3QoKTsKLSAgICAgICAgaWYgKCFheElELmlzVmFs
aWQoKSkKKyAgICAgICAgaWYgKCFheElELmlzVmFsaWQoKSB8fCBpZHNUb0tlZXAuY29udGFpbnMo
YXhJRCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvIGl0ID0gbV9ub2Rl
TWFwLmZpbmQoYXhJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAppbmRleCBjNGNlMWJkNGYzYmMxNjdi
NGI5ODM4ZDMzMzhiOWJlODNlYTIzMmUzLi5iZTBlMTgzMmNlYTQ2NTlkYTUwNzFhY2RkZDJmZjVh
N2JiY2IwNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTM2Miw3ICszNjIsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUmVtb3ZlcyB0aGUgZ2l2ZW4gbm9kZSBsZWF2aW5nIGFsbCBkZXNjZW5kYW50
cyBhbG9uZS4KICAgICB2b2lkIHJlbW92ZU5vZGUoQVhJRCk7CiAgICAgLy8gUmVtb3ZlcyB0aGUg
Z2l2ZW4gbm9kZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cy4KLSAgICB2b2lkIHJlbW92ZVN1YnRy
ZWVGcm9tTm9kZU1hcChBWElEKTsKKyAgICB2b2lkIHJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChB
WElELCBjb25zdCBIYXNoU2V0PEFYSUQ+JiA9IHsgfSk7CiAKICAgICAvLyBCb3RoIHNldFJvb3RO
b2RlSUQgYW5kIHNldEZvY3VzZWROb2RlSUQgYXJlIGNhbGxlZCBkdXJpbmcgdGhlIGdlbmVyYXRp
b24KICAgICAvLyBvZiB0aGUgSXNvbGF0ZWRUcmVlLgpAQCAtMzg2LDEwICszODYsMTUgQEAgcHJp
dmF0ZToKIAogICAgIC8vIENhbGxlZCBvbiBtYWluIHRocmVhZC4KICAgICBOb2RlQ2hhbmdlIG5v
ZGVDaGFuZ2VGb3JPYmplY3QoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRh
Y2hXcmFwcGVyID0gdHJ1ZSwgYm9vbCB1cGRhdGVOb2RlTWFwID0gdHJ1ZSk7Ci0gICAgdm9pZCBj
b2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKEFYQ29yZU9iamVjdCYsIEFYSUQgcGFyZW50SUQs
IGJvb2wgYXR0YWNoV3JhcHBlciwgVmVjdG9yPE5vZGVDaGFuZ2U+Jik7CisgICAgdm9pZCBjb2xs
ZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKEFYQ29yZU9iamVjdCYgb2JqZWN0LCBBWElEIHBhcmVu
dElELCBib29sIGF0dGFjaFdyYXBwZXIsIFZlY3RvcjxOb2RlQ2hhbmdlPiYgY2hhbmdlcykKKyAg
ICB7CisgICAgICAgIEhhc2hTZXQ8QVhJRD4gaWRzQmVpbmdDaGFuZ2VkOworICAgICAgICBjb2xs
ZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKG9iamVjdCwgcGFyZW50SUQsIGF0dGFjaFdyYXBwZXIs
IGNoYW5nZXMsIGlkc0JlaW5nQ2hhbmdlZCk7CisgICAgfQorICAgIHZvaWQgY29sbGVjdE5vZGVD
aGFuZ2VzRm9yU3VidHJlZShBWENvcmVPYmplY3QmLCBBWElEIHBhcmVudElELCBib29sIGF0dGFj
aFdyYXBwZXIsIFZlY3RvcjxOb2RlQ2hhbmdlPiYsIEhhc2hTZXQ8QVhJRD4mKTsKICAgICB2b2lk
IHF1ZXVlQ2hhbmdlKGNvbnN0IE5vZGVDaGFuZ2UmKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2NoYW5n
ZUxvZ0xvY2spOwogICAgIHZvaWQgcXVldWVDaGFuZ2VzQW5kUmVtb3ZhbHMoY29uc3QgVmVjdG9y
PE5vZGVDaGFuZ2U+JiwgY29uc3QgVmVjdG9yPEFYSUQ+JiA9IHsgfSk7Ci0gICAgVmVjdG9yPE5v
ZGVDaGFuZ2U+IG5vZGVBbmNlc3RyeUNoYW5nZXMoQVhDb3JlT2JqZWN0Jik7CisgICAgVmVjdG9y
PE5vZGVDaGFuZ2U+IG5vZGVBbmNlc3RyeUNoYW5nZXMoQVhDb3JlT2JqZWN0JiwgSGFzaFNldDxB
WElEPiYpOwogCiAgICAgQVhJc29sYXRlZFRyZWVJRCBtX3RyZWVJRDsKICAgICBBWE9iamVjdENh
Y2hlKiBtX2F4T2JqZWN0Q2FjaGUgeyBudWxscHRyIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450799</attachid>
            <date>2022-02-03 11:01:34 -0800</date>
            <delta_ts>2022-02-03 12:24:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236057-20220203130133.patch</filename>
            <type>text/plain</type>
            <size>11955</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5YjJjYWIxYzRmZDc0
MGMyMmYyYWY2YTczY2E1YjdiOWMyOTBlYS4uZWZhY2NmMGNhNDAyZWYxYjk4YzcwY2JkMjhlNzFi
NWVjYTdmZmJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIyLTAyLTAyICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVhJc29sYXRlZFRyZWU6
OnVwZGF0ZUNoaWxkcmVuIHJlbW92ZXMgc3VidHJlZXMgdGhhdCBzaG91bGQgaW5zdGVhZCBiZSBt
b3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
MDU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4g
QVhJc29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuLCB3ZSBjYW4gc29tZXRpbWVzIHJlbW92ZSBz
dWJ0cmVlcyBmcm9tIHRoZSBub2RlbWFwIHRoYXQgYXJlCisgICAgICAgIHF1ZXVlZCB0byBiZSBh
ZGRlZCBzb21ld2hlcmUgZWxzZSBpbiB0aGUgdHJlZS4gU3BlY2lmaWNhbGx5LCB0aGlzIGNhbiBo
YXBwZW4gd2hlbjoKKworICAgICAgICAgIDEuIE9iamVjdCAxMjMgaXMgY29uc2lkZXJlZCB0byBi
ZSBhIG5ldyBjaGlsZCBiYXNlZCBvbiB0aGUgbGl2ZSBBWCB0cmVlLCBhbmQgd2UgY29sbGVjdCBu
b2RlIGNoYW5nZXMgZm9yIGl0LgorICAgICAgICAgIDIuIE9iamVjdCAxMjMgaXMgY3VycmVudGx5
IGEgbWVtYmVyIG9mIGEgc3VidHJlZSBvZiBzb21lIG90aGVyIG9iamVjdCBpbiBvbGRDaGlsZHJl
bklEcy4KKyAgICAgICAgICAzLiBCZWNhdXNlIG9mIDIsIE9iamVjdCAxMjMgaXMgcmVtb3ZlZCBm
cm9tIHRoZSBub2RlIG1hcCBpbiByZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAKKyAgICAgICAgICA0
LiBXZSB0cnkgdG8gcXVldWUgdGhlIGFkZGl0aW9uIG9mIHRoaXMgbm9kZSBzb21ld2hlcmUgaW4g
dHJlZSBpbiBxdWV1ZUNoYW5nZSwgYnV0IEFTU0VSVCBiZWNhdXNlIE9iamVjdCAxMjMgaXMgbm90
IGluIHRoZSBub2RlbWFwIGFueW1vcmUuCisKKyAgICAgICAgVGhpcyBjYXVzZXMgdXMgdG8gaGl0
IEFTU0VSVChtX25vZGVNYXAuY29udGFpbnMob2JqZWN0SUQpIGluIEFYSXNvbGF0ZWRUcmVlOjpx
dWV1ZUNoYW5nZShjb25zdCBOb2RlQ2hhbmdlJikuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhl
cyB0aGlzIHByb2JsZW0gYnkga2VlcGluZyB0cmFjayBvZiB0aGUgSURzIHdlIGFyZSBxdWV1aW5n
IGZvciBhZGRpdGlvbgorICAgICAgICB0byB0aGUgdHJlZSBhbmQgbWFraW5nIHN1cmUgd2UgZG9u
J3QgcmVtb3ZlIHRob3NlIElEcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVl
OjpxdWV1ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Y29sbGVj
dE5vZGVDaGFuZ2VzRm9yU3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJl
ZTo6bm9kZUFuY2VzdHJ5Q2hhbmdlcyk6CisgICAgICAgIEtlZXAgdHJhY2sgb2YgSURzIHdlIGFy
ZSBxdWV1ZWluZyBjaGFuZ2VzIGZvci4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVl
Ojp1cGRhdGVDaGlsZHJlbik6CisgICAgICAgIEtlZXAgdHJhY2sgb2YgSURzIHdlIGFyZSBxdWV1
ZWluZyBjaGFuZ2VzIGZvciBhbmQgZG9uJ3QgcmVtb3ZlIHRoZW0sCisgICAgICAgIGV2ZW4gaWYg
dGhleSBhcmUgcGFydCBvZiBvbGRDaGlsZHJlbklEcy4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXApOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKToKKyAgICAgICAgQWNjZXB0
IGFub3RoZXIgcGFyYW10ZXIgbGlzdGluZyBJRHMgdG8ga2VlcC4KKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRUcmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKToKKyAgICAgICAg
S2VlcCB0cmFjayBvZiBJRHMgd2UgYXJlIHF1ZXVlaW5nIGNoYW5nZXMgZm9yLgorCiAyMDIyLTAy
LTAyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUg
UHJvY2Vzc10gUmVtb3ZlIERpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGUgYW5kIERpc3Bs
YXlMaXN0OjpSZWNvcmRlckltcGw6OkRlbGVnYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5k
ZXggN2Y5ODY4Mzc5MTY2ODIyYTdkMGIyNjM0MWE1MDgwMDY4ZWI2MmYwYi4uMTM0N2UyYWQyMmFj
YjBkNWY3MDE3Mjk3Y2U2ZjVmYTg4OWVlYmZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApA
QCAtMjMxLDE0ICsyMzEsMTQgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6cXVldWVDaGFuZ2UoY29u
c3QgTm9kZUNoYW5nZSYgbm9kZUNoYW5nZSkKIAogICAgIEFYSUQgcGFyZW50SUQgPSBub2RlQ2hh
bmdlLmlzb2xhdGVkT2JqZWN0LT5wYXJlbnQoKTsKICAgICBpZiAocGFyZW50SUQuaXNWYWxpZCgp
KSB7Ci0gICAgICAgIEFTU0VSVChtX25vZGVNYXAuY29udGFpbnMocGFyZW50SUQpKTsKKyAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX25vZGVNYXAuY29udGFpbnMocGFyZW50SUQpLCAibm9k
ZSBtYXAgc2hvdWxkJ3ZlIGNvbnRhaW5lZCBwYXJlbnRJRDogJXMiLCBwYXJlbnRJRC5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGF1dG8gc2libGluZ3NJRHMgPSBtX25v
ZGVNYXAuZ2V0KHBhcmVudElEKTsKICAgICAgICAgbV9wZW5kaW5nQ2hpbGRyZW5VcGRhdGVzLmFw
cGVuZCh7IHBhcmVudElELCBXVEZNb3ZlKHNpYmxpbmdzSURzKSB9KTsKICAgICB9CiAKICAgICBB
WElEIG9iamVjdElEID0gbm9kZUNoYW5nZS5pc29sYXRlZE9iamVjdC0+b2JqZWN0SUQoKTsKLSAg
ICBBU1NFUlQob2JqZWN0SUQgIT0gcGFyZW50SUQpOwotICAgIEFTU0VSVChtX25vZGVNYXAuY29u
dGFpbnMob2JqZWN0SUQpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG9iamVjdElEICE9IHBh
cmVudElELCAib2JqZWN0IElEIHdhcyB0aGUgc2FtZSBhcyBpdHMgcGFyZW50IElEICglcykgd2hl
biBxdWV1ZWluZyBhIG5vZGUgY2hhbmdlIiwgb2JqZWN0SUQubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9ub2RlTWFwLmNvbnRhaW5zKG9i
amVjdElEKSwgIm5vZGUgbWFwIHNob3VsZCd2ZSBjb250YWluZWQgb2JqZWN0SUQ6ICVzIiwgb2Jq
ZWN0SUQubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGF1dG8gY2hpbGRyZW5J
RHMgPSBtX25vZGVNYXAuZ2V0KG9iamVjdElEKTsKICAgICBtX3BlbmRpbmdDaGlsZHJlblVwZGF0
ZXMuYXBwZW5kKHsgb2JqZWN0SUQsIFdURk1vdmUoY2hpbGRyZW5JRHMpIH0pOwogfQpAQCAtMjU2
LDcgKzI1Niw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnF1ZXVlQ2hhbmdlc0FuZFJlbW92YWxz
KGNvbnN0IFZlY3RvcjxOb2RlQ2hhbmdlPiYgY2hhbmdlcywKICAgICAgICAgcXVldWVDaGFuZ2Uo
Y2hhbmdlKTsKIH0KIAotdm9pZCBBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9y
U3VidHJlZShBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWElEIHBhcmVudElELCBib29sIGF0dGFj
aFdyYXBwZXIsIFZlY3RvcjxOb2RlQ2hhbmdlPiYgY2hhbmdlcykKK3ZvaWQgQVhJc29sYXRlZFRy
ZWU6OmNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwg
QVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyLCBWZWN0b3I8Tm9kZUNoYW5nZT4mIGNo
YW5nZXMsIEhhc2hTZXQ8QVhJRD4mIGlkc0JlaW5nQ2hhbmdlZCkKIHsKICAgICBBWFRSQUNFKCJB
WElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9yU3VidHJlZSIpOwogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CkBAIC0yNjcsMTIgKzI2NywxMyBAQCB2b2lkIEFYSXNvbGF0ZWRU
cmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKEFYQ29yZU9iamVjdCYgYXhPYmplY3Qs
IEFYSUQgcAogCiAgICAgYXV0byBub2RlQ2hhbmdlID0gbm9kZUNoYW5nZUZvck9iamVjdChheE9i
amVjdCwgcGFyZW50SUQsIGF0dGFjaFdyYXBwZXIpOwogICAgIGNoYW5nZXMuYXBwZW5kKG5vZGVD
aGFuZ2UpOworICAgIGlkc0JlaW5nQ2hhbmdlZC5hZGQobm9kZUNoYW5nZS5pc29sYXRlZE9iamVj
dC0+b2JqZWN0SUQoKSk7CiAKICAgICBhdXRvIGF4Q2hpbGRyZW4gPSBheE9iamVjdC5jaGlsZHJl
bigpOwogICAgIFZlY3RvcjxBWElEPiBheENoaWxkcmVuSURzOwogICAgIGF4Q2hpbGRyZW5JRHMu
cmVzZXJ2ZUNhcGFjaXR5KGF4Q2hpbGRyZW4uc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGF4Q2hpbGQgOiBheENoaWxkcmVuKSB7Ci0gICAgICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1
YnRyZWUoKmF4Q2hpbGQsIGF4T2JqZWN0Lm9iamVjdElEKCksIGF0dGFjaFdyYXBwZXIsIGNoYW5n
ZXMpOworICAgICAgICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpheENoaWxkLCBheE9i
amVjdC5vYmplY3RJRCgpLCBhdHRhY2hXcmFwcGVyLCBjaGFuZ2VzLCBpZHNCZWluZ0NoYW5nZWQp
OwogICAgICAgICBheENoaWxkcmVuSURzLnVuY2hlY2tlZEFwcGVuZChheENoaWxkLT5vYmplY3RJ
RCgpKTsKICAgICB9CiAKQEAgLTMyNyw3ICszMjgsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1
cGRhdGVOb2RlUHJvcGVydHkoY29uc3QgQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhQcm9wZXJ0
eQogICAgIG1fcGVuZGluZ1Byb3BlcnR5Q2hhbmdlcy5hcHBlbmQoeyBheE9iamVjdC5vYmplY3RJ
RCgpLCBwcm9wZXJ0eU1hcCB9KTsKIH0KIAotVmVjdG9yPEFYSXNvbGF0ZWRUcmVlOjpOb2RlQ2hh
bmdlPiBBWElzb2xhdGVkVHJlZTo6bm9kZUFuY2VzdHJ5Q2hhbmdlcyhBWENvcmVPYmplY3QmIGF4
Q29yZU9iamVjdCkKK1ZlY3RvcjxBWElzb2xhdGVkVHJlZTo6Tm9kZUNoYW5nZT4gQVhJc29sYXRl
ZFRyZWU6Om5vZGVBbmNlc3RyeUNoYW5nZXMoQVhDb3JlT2JqZWN0JiBheENvcmVPYmplY3QsIEhh
c2hTZXQ8QVhJRD4mIGlkc0JlaW5nQ2hhbmdlZCkKIHsKICAgICBWZWN0b3I8Tm9kZUNoYW5nZT4g
Y2hhbmdlczsKIApAQCAtMzQzLDcgKzM0NCw5IEBAIFZlY3RvcjxBWElzb2xhdGVkVHJlZTo6Tm9k
ZUNoYW5nZT4gQVhJc29sYXRlZFRyZWU6Om5vZGVBbmNlc3RyeUNoYW5nZXMoQVhDb3JlT2JqCiAK
ICAgICAgICAgLy8gSWYgYXhPYmplY3QgaXMgdGhlIG9yaWdpbmFsIG9iamVjdCBmb3Igd2hpY2gg
d2UgYXJlIGFkZGluZyBpdHMgYW5jZXN0cnksIGRvbid0IHVwZGF0ZSB0aGUgbm9kZU1hcCBzaW5j
ZSB1cGRhdGVDaGlsZHJlbiBuZWVkcyB0byBjb21wYXJlIGl0cyBwcmV2aW91cyBjaGlsZHJlbiB3
aXRoIHRoZSBuZXcgb25lcy4KICAgICAgICAgYm9vbCB1cGRhdGVOb2RlTWFwID0gYXhPYmplY3Qg
IT0gJmF4Q29yZU9iamVjdDsKLSAgICAgICAgY2hhbmdlcy5hcHBlbmQobm9kZUNoYW5nZUZvck9i
amVjdCgqYXhPYmplY3QsIGF4UGFyZW50SUQsIHRydWUsIHVwZGF0ZU5vZGVNYXApKTsKKyAgICAg
ICAgYXV0byBjaGFuZ2UgPSBub2RlQ2hhbmdlRm9yT2JqZWN0KCpheE9iamVjdCwgYXhQYXJlbnRJ
RCwgdHJ1ZSwgdXBkYXRlTm9kZU1hcCk7CisgICAgICAgIGNoYW5nZXMuYXBwZW5kKGNoYW5nZSk7
CisgICAgICAgIGlkc0JlaW5nQ2hhbmdlZC5hZGQoY2hhbmdlLmlzb2xhdGVkT2JqZWN0LT5vYmpl
Y3RJRCgpKTsKIAogICAgICAgICBpZiAoYXhQYXJlbnQpCiAgICAgICAgICAgICBtX25vZGVNYXAu
c2V0KGF4UGFyZW50LT5vYmplY3RJRCgpLCBheFBhcmVudC0+Y2hpbGRyZW5JRHMoKSk7CkBAIC0z
NzEsMzggKzM3NCw0NCBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbihBWENv
cmVPYmplY3QmIGF4T2JqZWN0KQogICAgIGlmICghYXhPYmplY3QuZG9jdW1lbnQoKSB8fCAhYXhP
YmplY3QuZG9jdW1lbnQoKS0+aGFzTGl2aW5nUmVuZGVyVHJlZSgpKQogICAgICAgICByZXR1cm47
CiAKKyAgICBIYXNoU2V0PEFYSUQ+IGlkc0JlaW5nQ2hhbmdlZDsKICAgICAvLyB1cGRhdGVDaGls
ZHJlbiBtYXkgYmUgY2FsbGVkIGFzIHRoZSByZXN1bHQgb2YgYSBjaGlsZHJlbiBjaGFuZ2VkCiAg
ICAgLy8gbm90aWZpY2F0aW9uIGZvciBhbiBheE9iamVjdCB0aGF0IGhhcyBubyBhc3NvY2lhdGVk
IGlzb2xhdGVkIG9iamVjdC4KICAgICAvLyBBbiBleGFtcGxlIG9mIHRoaXMgaXMgd2hlbiBhbiBl
bXB0eSBlbGVtZW50IHN1Y2ggYXMgYSA8Y2FudmFzPiBvciA8ZGl2PgogICAgIC8vIGlzIGFkZGVk
IGEgbmV3IGNoaWxkLiBUaHVzIGFkZCB0aGUgYW5jZXN0cnkgdGhhdCBjb25uZWN0cyB0aGUgYXNz
b2NpYXRlZAogICAgIC8vIGlzb2xhdGVkIG9iamVjdCB0byB0aGUgY2xvc2VzdCBleGlzdGluZyBh
bmNlc3Rvci4KLSAgICBWZWN0b3I8Tm9kZUNoYW5nZT4gY2hhbmdlcyA9IG5vZGVBbmNlc3RyeUNo
YW5nZXMoYXhPYmplY3QpOworICAgIFZlY3RvcjxOb2RlQ2hhbmdlPiBjaGFuZ2VzID0gbm9kZUFu
Y2VzdHJ5Q2hhbmdlcyhheE9iamVjdCwgaWRzQmVpbmdDaGFuZ2VkKTsKIAogICAgIGF1dG8gb2xk
Q2hpbGRyZW5JRHMgPSBtX25vZGVNYXAuZ2V0KGF4T2JqZWN0Lm9iamVjdElEKCkpOwogCi0gICAg
Y29uc3QgYXV0byYgYXhDaGlsZHJlbiA9IGF4T2JqZWN0LmNoaWxkcmVuKCk7CisgICAgY29uc3Qg
YXV0byYgbmV3Q2hpbGRyZW4gPSBheE9iamVjdC5jaGlsZHJlbigpOwogICAgIGF1dG8gbmV3Q2hp
bGRyZW5JRHMgPSBheE9iamVjdC5jaGlsZHJlbklEcyhmYWxzZSk7CiAKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGF4Q2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgQVNTRVJUKGF4
Q2hpbGRyZW5baV0tPm9iamVjdElEKCkgPT0gbmV3Q2hpbGRyZW5JRHNbaV0pOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQVNT
RVJUKG5ld0NoaWxkcmVuW2ldLT5vYmplY3RJRCgpID09IG5ld0NoaWxkcmVuSURzW2ldKTsKICAg
ICAgICAgQVNTRVJUKG5ld0NoaWxkcmVuSURzW2ldLmlzVmFsaWQoKSk7CiAgICAgICAgIHNpemVf
dCBpbmRleCA9IG9sZENoaWxkcmVuSURzLmZpbmQobmV3Q2hpbGRyZW5JRHNbaV0pOwogICAgICAg
ICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBvbGRDaGlsZHJlbklEcy5yZW1v
dmUoaW5kZXgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcg
Y2hpbGQsIGFkZCBpdCB0byB0aGUgdHJlZS4KLSAgICAgICAgICAgIEFYTE9HKCJBZGRpbmcgYSBu
ZXcgY2hpbGQgZm9yOiIpOwotICAgICAgICAgICAgQVhMT0coYXhDaGlsZHJlbltpXSk7Ci0gICAg
ICAgICAgICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpheENoaWxkcmVuW2ldLCBheE9i
amVjdC5vYmplY3RJRCgpLCB0cnVlLCBjaGFuZ2VzKTsKKyAgICAgICAgICAgIEFYTE9HKG1ha2VT
dHJpbmcoIkFYSUQgIiwgYXhPYmplY3Qub2JqZWN0SUQoKS5sb2dnaW5nU3RyaW5nKCksICIgZ2Fp
bmluZyBuZXcgc3VidHJlZSwgc3RhcnRpbmcgYXQgSUQgIiwgbmV3Q2hpbGRyZW5baV0tPm9iamVj
dElEKCkubG9nZ2luZ1N0cmluZygpLCAiOiIpKTsKKyAgICAgICAgICAgIEFYTE9HKG5ld0NoaWxk
cmVuW2ldKTsKKyAgICAgICAgICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoKm5ld0No
aWxkcmVuW2ldLCBheE9iamVjdC5vYmplY3RJRCgpLCB0cnVlLCBjaGFuZ2VzLCBpZHNCZWluZ0No
YW5nZWQpOwogICAgICAgICB9CiAgICAgfQotCiAgICAgbV9ub2RlTWFwLnNldChheE9iamVjdC5v
YmplY3RJRCgpLCBuZXdDaGlsZHJlbklEcyk7CiAKICAgICAvLyBXaGF0IGlzIGxlZnQgaW4gb2xk
Q2hpbGRyZW5JRHMgYXJlIHRoZSBJRHMgdGhhdCBhcmUgbm8gbG9uZ2VyIGNoaWxkcmVuIG9mIGF4
T2JqZWN0LgogICAgIC8vIFRodXMsIHJlbW92ZSB0aGVtIGZyb20gbV9ub2RlTWFwIGFuZCBxdWV1
ZSB0aGVtIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgdHJlZS4KLSAgICBmb3IgKEFYSUQmIGF4SUQg
OiBvbGRDaGlsZHJlbklEcykKLSAgICAgICAgcmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKGF4SUQp
OworICAgIGZvciAoQVhJRCYgYXhJRCA6IG9sZENoaWxkcmVuSURzKSB7CisgICAgICAgIC8vIEhv
d2V2ZXIsIHdlIGRvbid0IHdhbnQgdG8gcmVtb3ZlIHN1YnRyZWVzIGZyb20gdGhlIG5vZGVtYXAg
dGhhdCBhcmUgcGFydCBvZiB0aGUgdG8tYmUtcXVldWVkIG5vZGUgY2hhbmdlcyAoaS5lIHRob3Nl
IGluIGBpZHNCZWluZ0NoYW5nZWRgKS4KKyAgICAgICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgd2hl
biBhIG5vZGUgbW92ZXMgdG8gYSBkaWZmZXJlbnQgcGFydCBvZiB0aGUgdHJlZSByYXRoZXIgdGhh
biBiZWluZyBkZWxldGVkIC0tIGZvciBleGFtcGxlOgorICAgICAgICAvLyAgIDEuIE9iamVjdCAx
MjMgaXMgc2xhdGVkIHRvIGJlIGEgY2hpbGQgb2YgdGhpcyBvYmplY3QgKGkuZS4gaW4gbmV3Q2hp
bGRyZW4pLCBhbmQgd2UgY29sbGVjdCBub2RlIGNoYW5nZXMgZm9yIGl0LgorICAgICAgICAvLyAg
IDIuIE9iamVjdCAxMjMgaXMgY3VycmVudGx5IGEgbWVtYmVyIG9mIGEgc3VidHJlZSBvZiBzb21l
IG90aGVyIG9iamVjdCBpbiBvbGRDaGlsZHJlbklEcy4KKyAgICAgICAgLy8gICAzLiBUaHVzLCB3
ZSBkb24ndCB3YW50IHRvIGRlbGV0ZSBPYmplY3QgMTIzIGZyb20gdGhlIG5vZGVtYXAsIGluc3Rl
YWQgYWxsb3dpbmcgaXQgdG8gYmUgbW92ZWQuCisgICAgICAgIHJlbW92ZVN1YnRyZWVGcm9tTm9k
ZU1hcChheElELCBpZHNCZWluZ0NoYW5nZWQpOworICAgIH0KICAgICBxdWV1ZUNoYW5nZXNBbmRS
ZW1vdmFscyhjaGFuZ2VzLCBvbGRDaGlsZHJlbklEcyk7CiB9CiAKQEAgLTQ3MSw3ICs0ODAsNyBA
QCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVOb2RlKEFYSUQgYXhJRCkKICAgICBtX3BlbmRp
bmdOb2RlUmVtb3ZhbHMuYXBwZW5kKGF4SUQpOwogfQogCi12b2lkIEFYSXNvbGF0ZWRUcmVlOjpy
ZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAoQVhJRCBheElEKQordm9pZCBBWElzb2xhdGVkVHJlZTo6
cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKEFYSUQgYXhJRCwgY29uc3QgSGFzaFNldDxBWElEPiYg
aWRzVG9LZWVwKQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVl
Iik7CiAgICAgQVhMT0cobWFrZVN0cmluZygiUmVtb3Zpbmcgc3VidHJlZSBmb3IgYXhJRCAiLCBh
eElELmxvZ2dpbmdTdHJpbmcoKSkpOwpAQCAtNDgwLDcgKzQ4OSw3IEBAIHZvaWQgQVhJc29sYXRl
ZFRyZWU6OnJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChBWElEIGF4SUQpCiAgICAgVmVjdG9yPEFY
SUQ+IHJlbW92YWxzID0geyBheElEIH07CiAgICAgd2hpbGUgKHJlbW92YWxzLnNpemUoKSkgewog
ICAgICAgICBBWElEIGF4SUQgPSByZW1vdmFscy50YWtlTGFzdCgpOwotICAgICAgICBpZiAoIWF4
SUQuaXNWYWxpZCgpKQorICAgICAgICBpZiAoIWF4SUQuaXNWYWxpZCgpIHx8IGlkc1RvS2VlcC5j
b250YWlucyhheElEKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8gaXQg
PSBtX25vZGVNYXAuZmluZChheElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGM0Y2UxYmQ0
ZjNiYzE2N2I0Yjk4MzhkMzMzOGI5YmU4M2VhMjMyZTMuLmJlMGUxODMyY2VhNDY1OWRhNTA3MWFj
ZGRkMmZmNWE3YmJjYjA0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMzYyLDcgKzM2Miw3
IEBAIHB1YmxpYzoKICAgICAvLyBSZW1vdmVzIHRoZSBnaXZlbiBub2RlIGxlYXZpbmcgYWxsIGRl
c2NlbmRhbnRzIGFsb25lLgogICAgIHZvaWQgcmVtb3ZlTm9kZShBWElEKTsKICAgICAvLyBSZW1v
dmVzIHRoZSBnaXZlbiBub2RlIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnRzLgotICAgIHZvaWQgcmVt
b3ZlU3VidHJlZUZyb21Ob2RlTWFwKEFYSUQpOworICAgIHZvaWQgcmVtb3ZlU3VidHJlZUZyb21O
b2RlTWFwKEFYSUQsIGNvbnN0IEhhc2hTZXQ8QVhJRD4mID0geyB9KTsKIAogICAgIC8vIEJvdGgg
c2V0Um9vdE5vZGVJRCBhbmQgc2V0Rm9jdXNlZE5vZGVJRCBhcmUgY2FsbGVkIGR1cmluZyB0aGUg
Z2VuZXJhdGlvbgogICAgIC8vIG9mIHRoZSBJc29sYXRlZFRyZWUuCkBAIC0zODYsMTAgKzM4Niwx
NSBAQCBwcml2YXRlOgogCiAgICAgLy8gQ2FsbGVkIG9uIG1haW4gdGhyZWFkLgogICAgIE5vZGVD
aGFuZ2Ugbm9kZUNoYW5nZUZvck9iamVjdChBWENvcmVPYmplY3QmLCBBWElEIHBhcmVudElELCBi
b29sIGF0dGFjaFdyYXBwZXIgPSB0cnVlLCBib29sIHVwZGF0ZU5vZGVNYXAgPSB0cnVlKTsKLSAg
ICB2b2lkIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhJRCBw
YXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyLCBWZWN0b3I8Tm9kZUNoYW5nZT4mKTsKKyAgICB2
b2lkIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiBvYmplY3QsIEFY
SUQgcGFyZW50SUQsIGJvb2wgYXR0YWNoV3JhcHBlciwgVmVjdG9yPE5vZGVDaGFuZ2U+JiBjaGFu
Z2VzKQorICAgIHsKKyAgICAgICAgSGFzaFNldDxBWElEPiBpZHNCZWluZ0NoYW5nZWQ7CisgICAg
ICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUob2JqZWN0LCBwYXJlbnRJRCwgYXR0YWNo
V3JhcHBlciwgY2hhbmdlcywgaWRzQmVpbmdDaGFuZ2VkKTsKKyAgICB9CisgICAgdm9pZCBjb2xs
ZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKEFYQ29yZU9iamVjdCYsIEFYSUQgcGFyZW50SUQsIGJv
b2wgYXR0YWNoV3JhcHBlciwgVmVjdG9yPE5vZGVDaGFuZ2U+JiwgSGFzaFNldDxBWElEPiYpOwog
ICAgIHZvaWQgcXVldWVDaGFuZ2UoY29uc3QgTm9kZUNoYW5nZSYpIFdURl9SRVFVSVJFU19MT0NL
KG1fY2hhbmdlTG9nTG9jayk7CiAgICAgdm9pZCBxdWV1ZUNoYW5nZXNBbmRSZW1vdmFscyhjb25z
dCBWZWN0b3I8Tm9kZUNoYW5nZT4mLCBjb25zdCBWZWN0b3I8QVhJRD4mID0geyB9KTsKLSAgICBW
ZWN0b3I8Tm9kZUNoYW5nZT4gbm9kZUFuY2VzdHJ5Q2hhbmdlcyhBWENvcmVPYmplY3QmKTsKKyAg
ICBWZWN0b3I8Tm9kZUNoYW5nZT4gbm9kZUFuY2VzdHJ5Q2hhbmdlcyhBWENvcmVPYmplY3QmLCBI
YXNoU2V0PEFYSUQ+Jik7CiAKICAgICBBWElzb2xhdGVkVHJlZUlEIG1fdHJlZUlEOwogICAgIEFY
T2JqZWN0Q2FjaGUqIG1fYXhPYmplY3RDYWNoZSB7IG51bGxwdHIgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450804</attachid>
            <date>2022-02-03 12:24:18 -0800</date>
            <delta_ts>2022-02-03 13:16:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236057-20220203142417.patch</filename>
            <type>text/plain</type>
            <size>11851</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5YjJjYWIxYzRmZDc0
MGMyMmYyYWY2YTczY2E1YjdiOWMyOTBlYS4uZWZhY2NmMGNhNDAyZWYxYjk4YzcwY2JkMjhlNzFi
NWVjYTdmZmJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIyLTAyLTAyICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVhJc29sYXRlZFRyZWU6
OnVwZGF0ZUNoaWxkcmVuIHJlbW92ZXMgc3VidHJlZXMgdGhhdCBzaG91bGQgaW5zdGVhZCBiZSBt
b3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
MDU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4g
QVhJc29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuLCB3ZSBjYW4gc29tZXRpbWVzIHJlbW92ZSBz
dWJ0cmVlcyBmcm9tIHRoZSBub2RlbWFwIHRoYXQgYXJlCisgICAgICAgIHF1ZXVlZCB0byBiZSBh
ZGRlZCBzb21ld2hlcmUgZWxzZSBpbiB0aGUgdHJlZS4gU3BlY2lmaWNhbGx5LCB0aGlzIGNhbiBo
YXBwZW4gd2hlbjoKKworICAgICAgICAgIDEuIE9iamVjdCAxMjMgaXMgY29uc2lkZXJlZCB0byBi
ZSBhIG5ldyBjaGlsZCBiYXNlZCBvbiB0aGUgbGl2ZSBBWCB0cmVlLCBhbmQgd2UgY29sbGVjdCBu
b2RlIGNoYW5nZXMgZm9yIGl0LgorICAgICAgICAgIDIuIE9iamVjdCAxMjMgaXMgY3VycmVudGx5
IGEgbWVtYmVyIG9mIGEgc3VidHJlZSBvZiBzb21lIG90aGVyIG9iamVjdCBpbiBvbGRDaGlsZHJl
bklEcy4KKyAgICAgICAgICAzLiBCZWNhdXNlIG9mIDIsIE9iamVjdCAxMjMgaXMgcmVtb3ZlZCBm
cm9tIHRoZSBub2RlIG1hcCBpbiByZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAKKyAgICAgICAgICA0
LiBXZSB0cnkgdG8gcXVldWUgdGhlIGFkZGl0aW9uIG9mIHRoaXMgbm9kZSBzb21ld2hlcmUgaW4g
dHJlZSBpbiBxdWV1ZUNoYW5nZSwgYnV0IEFTU0VSVCBiZWNhdXNlIE9iamVjdCAxMjMgaXMgbm90
IGluIHRoZSBub2RlbWFwIGFueW1vcmUuCisKKyAgICAgICAgVGhpcyBjYXVzZXMgdXMgdG8gaGl0
IEFTU0VSVChtX25vZGVNYXAuY29udGFpbnMob2JqZWN0SUQpIGluIEFYSXNvbGF0ZWRUcmVlOjpx
dWV1ZUNoYW5nZShjb25zdCBOb2RlQ2hhbmdlJikuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhl
cyB0aGlzIHByb2JsZW0gYnkga2VlcGluZyB0cmFjayBvZiB0aGUgSURzIHdlIGFyZSBxdWV1aW5n
IGZvciBhZGRpdGlvbgorICAgICAgICB0byB0aGUgdHJlZSBhbmQgbWFraW5nIHN1cmUgd2UgZG9u
J3QgcmVtb3ZlIHRob3NlIElEcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVl
OjpxdWV1ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Y29sbGVj
dE5vZGVDaGFuZ2VzRm9yU3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJl
ZTo6bm9kZUFuY2VzdHJ5Q2hhbmdlcyk6CisgICAgICAgIEtlZXAgdHJhY2sgb2YgSURzIHdlIGFy
ZSBxdWV1ZWluZyBjaGFuZ2VzIGZvci4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVl
Ojp1cGRhdGVDaGlsZHJlbik6CisgICAgICAgIEtlZXAgdHJhY2sgb2YgSURzIHdlIGFyZSBxdWV1
ZWluZyBjaGFuZ2VzIGZvciBhbmQgZG9uJ3QgcmVtb3ZlIHRoZW0sCisgICAgICAgIGV2ZW4gaWYg
dGhleSBhcmUgcGFydCBvZiBvbGRDaGlsZHJlbklEcy4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXApOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKToKKyAgICAgICAgQWNjZXB0
IGFub3RoZXIgcGFyYW10ZXIgbGlzdGluZyBJRHMgdG8ga2VlcC4KKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRUcmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKToKKyAgICAgICAg
S2VlcCB0cmFjayBvZiBJRHMgd2UgYXJlIHF1ZXVlaW5nIGNoYW5nZXMgZm9yLgorCiAyMDIyLTAy
LTAyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUg
UHJvY2Vzc10gUmVtb3ZlIERpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGUgYW5kIERpc3Bs
YXlMaXN0OjpSZWNvcmRlckltcGw6OkRlbGVnYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5k
ZXggN2Y5ODY4Mzc5MTY2ODIyYTdkMGIyNjM0MWE1MDgwMDY4ZWI2MmYwYi4uMGIyOGYxMmU2MzFm
YTI2ZTk4NDI5ZGQ1OTEzMmEyYmE0MTFmYTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApA
QCAtMjMxLDE0ICsyMzEsMTQgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6cXVldWVDaGFuZ2UoY29u
c3QgTm9kZUNoYW5nZSYgbm9kZUNoYW5nZSkKIAogICAgIEFYSUQgcGFyZW50SUQgPSBub2RlQ2hh
bmdlLmlzb2xhdGVkT2JqZWN0LT5wYXJlbnQoKTsKICAgICBpZiAocGFyZW50SUQuaXNWYWxpZCgp
KSB7Ci0gICAgICAgIEFTU0VSVChtX25vZGVNYXAuY29udGFpbnMocGFyZW50SUQpKTsKKyAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX25vZGVNYXAuY29udGFpbnMocGFyZW50SUQpLCAibm9k
ZSBtYXAgc2hvdWxkJ3ZlIGNvbnRhaW5lZCBwYXJlbnRJRDogJXMiLCBwYXJlbnRJRC5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGF1dG8gc2libGluZ3NJRHMgPSBtX25v
ZGVNYXAuZ2V0KHBhcmVudElEKTsKICAgICAgICAgbV9wZW5kaW5nQ2hpbGRyZW5VcGRhdGVzLmFw
cGVuZCh7IHBhcmVudElELCBXVEZNb3ZlKHNpYmxpbmdzSURzKSB9KTsKICAgICB9CiAKICAgICBB
WElEIG9iamVjdElEID0gbm9kZUNoYW5nZS5pc29sYXRlZE9iamVjdC0+b2JqZWN0SUQoKTsKLSAg
ICBBU1NFUlQob2JqZWN0SUQgIT0gcGFyZW50SUQpOwotICAgIEFTU0VSVChtX25vZGVNYXAuY29u
dGFpbnMob2JqZWN0SUQpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG9iamVjdElEICE9IHBh
cmVudElELCAib2JqZWN0IElEIHdhcyB0aGUgc2FtZSBhcyBpdHMgcGFyZW50IElEICglcykgd2hl
biBxdWV1ZWluZyBhIG5vZGUgY2hhbmdlIiwgb2JqZWN0SUQubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9ub2RlTWFwLmNvbnRhaW5zKG9i
amVjdElEKSwgIm5vZGUgbWFwIHNob3VsZCd2ZSBjb250YWluZWQgb2JqZWN0SUQ6ICVzIiwgb2Jq
ZWN0SUQubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGF1dG8gY2hpbGRyZW5J
RHMgPSBtX25vZGVNYXAuZ2V0KG9iamVjdElEKTsKICAgICBtX3BlbmRpbmdDaGlsZHJlblVwZGF0
ZXMuYXBwZW5kKHsgb2JqZWN0SUQsIFdURk1vdmUoY2hpbGRyZW5JRHMpIH0pOwogfQpAQCAtMjU2
LDcgKzI1Niw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnF1ZXVlQ2hhbmdlc0FuZFJlbW92YWxz
KGNvbnN0IFZlY3RvcjxOb2RlQ2hhbmdlPiYgY2hhbmdlcywKICAgICAgICAgcXVldWVDaGFuZ2Uo
Y2hhbmdlKTsKIH0KIAotdm9pZCBBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9y
U3VidHJlZShBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWElEIHBhcmVudElELCBib29sIGF0dGFj
aFdyYXBwZXIsIFZlY3RvcjxOb2RlQ2hhbmdlPiYgY2hhbmdlcykKK3ZvaWQgQVhJc29sYXRlZFRy
ZWU6OmNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwg
QVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyLCBWZWN0b3I8Tm9kZUNoYW5nZT4mIGNo
YW5nZXMsIHN0ZDo6b3B0aW9uYWw8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxIYXNoU2V0PEFYSUQ+
Pj4gaWRzQmVpbmdDaGFuZ2VkKQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpjb2xs
ZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlIik7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
QEAgLTI2NywxMiArMjY3LDE0IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmNvbGxlY3ROb2RlQ2hh
bmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhJRCBwCiAKICAgICBhdXRv
IG5vZGVDaGFuZ2UgPSBub2RlQ2hhbmdlRm9yT2JqZWN0KGF4T2JqZWN0LCBwYXJlbnRJRCwgYXR0
YWNoV3JhcHBlcik7CiAgICAgY2hhbmdlcy5hcHBlbmQobm9kZUNoYW5nZSk7CisgICAgaWYgKGlk
c0JlaW5nQ2hhbmdlZCkKKyAgICAgICAgaWRzQmVpbmdDaGFuZ2VkLT5nZXQoKS5hZGQobm9kZUNo
YW5nZS5pc29sYXRlZE9iamVjdC0+b2JqZWN0SUQoKSk7CiAKICAgICBhdXRvIGF4Q2hpbGRyZW4g
PSBheE9iamVjdC5jaGlsZHJlbigpOwogICAgIFZlY3RvcjxBWElEPiBheENoaWxkcmVuSURzOwog
ICAgIGF4Q2hpbGRyZW5JRHMucmVzZXJ2ZUNhcGFjaXR5KGF4Q2hpbGRyZW4uc2l6ZSgpKTsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGF4Q2hpbGQgOiBheENoaWxkcmVuKSB7Ci0gICAgICAgIGNvbGxl
Y3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoKmF4Q2hpbGQsIGF4T2JqZWN0Lm9iamVjdElEKCksIGF0
dGFjaFdyYXBwZXIsIGNoYW5nZXMpOworICAgICAgICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0
cmVlKCpheENoaWxkLCBheE9iamVjdC5vYmplY3RJRCgpLCBhdHRhY2hXcmFwcGVyLCBjaGFuZ2Vz
LCBpZHNCZWluZ0NoYW5nZWQpOwogICAgICAgICBheENoaWxkcmVuSURzLnVuY2hlY2tlZEFwcGVu
ZChheENoaWxkLT5vYmplY3RJRCgpKTsKICAgICB9CiAKQEAgLTMyNyw3ICszMjksNyBAQCB2b2lk
IEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydHkoY29uc3QgQVhDb3JlT2JqZWN0JiBh
eE9iamVjdCwgQVhQcm9wZXJ0eQogICAgIG1fcGVuZGluZ1Byb3BlcnR5Q2hhbmdlcy5hcHBlbmQo
eyBheE9iamVjdC5vYmplY3RJRCgpLCBwcm9wZXJ0eU1hcCB9KTsKIH0KIAotVmVjdG9yPEFYSXNv
bGF0ZWRUcmVlOjpOb2RlQ2hhbmdlPiBBWElzb2xhdGVkVHJlZTo6bm9kZUFuY2VzdHJ5Q2hhbmdl
cyhBWENvcmVPYmplY3QmIGF4Q29yZU9iamVjdCkKK1ZlY3RvcjxBWElzb2xhdGVkVHJlZTo6Tm9k
ZUNoYW5nZT4gQVhJc29sYXRlZFRyZWU6Om5vZGVBbmNlc3RyeUNoYW5nZXMoQVhDb3JlT2JqZWN0
JiBheENvcmVPYmplY3QsIEhhc2hTZXQ8QVhJRD4mIGlkc0JlaW5nQ2hhbmdlZCkKIHsKICAgICBW
ZWN0b3I8Tm9kZUNoYW5nZT4gY2hhbmdlczsKIApAQCAtMzQzLDcgKzM0NSwxMCBAQCBWZWN0b3I8
QVhJc29sYXRlZFRyZWU6Ok5vZGVDaGFuZ2U+IEFYSXNvbGF0ZWRUcmVlOjpub2RlQW5jZXN0cnlD
aGFuZ2VzKEFYQ29yZU9iagogCiAgICAgICAgIC8vIElmIGF4T2JqZWN0IGlzIHRoZSBvcmlnaW5h
bCBvYmplY3QgZm9yIHdoaWNoIHdlIGFyZSBhZGRpbmcgaXRzIGFuY2VzdHJ5LCBkb24ndCB1cGRh
dGUgdGhlIG5vZGVNYXAgc2luY2UgdXBkYXRlQ2hpbGRyZW4gbmVlZHMgdG8gY29tcGFyZSBpdHMg
cHJldmlvdXMgY2hpbGRyZW4gd2l0aCB0aGUgbmV3IG9uZXMuCiAgICAgICAgIGJvb2wgdXBkYXRl
Tm9kZU1hcCA9IGF4T2JqZWN0ICE9ICZheENvcmVPYmplY3Q7Ci0gICAgICAgIGNoYW5nZXMuYXBw
ZW5kKG5vZGVDaGFuZ2VGb3JPYmplY3QoKmF4T2JqZWN0LCBheFBhcmVudElELCB0cnVlLCB1cGRh
dGVOb2RlTWFwKSk7CisgICAgICAgIGF1dG8gY2hhbmdlID0gbm9kZUNoYW5nZUZvck9iamVjdCgq
YXhPYmplY3QsIGF4UGFyZW50SUQsIHRydWUsIHVwZGF0ZU5vZGVNYXApOworICAgICAgICBhdXRv
IGNoYW5nZUlEID0gY2hhbmdlLmlzb2xhdGVkT2JqZWN0LT5vYmplY3RJRCgpOworICAgICAgICBj
aGFuZ2VzLmFwcGVuZChXVEZNb3ZlKGNoYW5nZSkpOworICAgICAgICBpZHNCZWluZ0NoYW5nZWQu
YWRkKGNoYW5nZUlEKTsKIAogICAgICAgICBpZiAoYXhQYXJlbnQpCiAgICAgICAgICAgICBtX25v
ZGVNYXAuc2V0KGF4UGFyZW50LT5vYmplY3RJRCgpLCBheFBhcmVudC0+Y2hpbGRyZW5JRHMoKSk7
CkBAIC0zNzEsMzggKzM3Niw0NCBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJl
bihBWENvcmVPYmplY3QmIGF4T2JqZWN0KQogICAgIGlmICghYXhPYmplY3QuZG9jdW1lbnQoKSB8
fCAhYXhPYmplY3QuZG9jdW1lbnQoKS0+aGFzTGl2aW5nUmVuZGVyVHJlZSgpKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBIYXNoU2V0PEFYSUQ+IGlkc0JlaW5nQ2hhbmdlZDsKICAgICAvLyB1cGRh
dGVDaGlsZHJlbiBtYXkgYmUgY2FsbGVkIGFzIHRoZSByZXN1bHQgb2YgYSBjaGlsZHJlbiBjaGFu
Z2VkCiAgICAgLy8gbm90aWZpY2F0aW9uIGZvciBhbiBheE9iamVjdCB0aGF0IGhhcyBubyBhc3Nv
Y2lhdGVkIGlzb2xhdGVkIG9iamVjdC4KICAgICAvLyBBbiBleGFtcGxlIG9mIHRoaXMgaXMgd2hl
biBhbiBlbXB0eSBlbGVtZW50IHN1Y2ggYXMgYSA8Y2FudmFzPiBvciA8ZGl2PgogICAgIC8vIGlz
IGFkZGVkIGEgbmV3IGNoaWxkLiBUaHVzIGFkZCB0aGUgYW5jZXN0cnkgdGhhdCBjb25uZWN0cyB0
aGUgYXNzb2NpYXRlZAogICAgIC8vIGlzb2xhdGVkIG9iamVjdCB0byB0aGUgY2xvc2VzdCBleGlz
dGluZyBhbmNlc3Rvci4KLSAgICBWZWN0b3I8Tm9kZUNoYW5nZT4gY2hhbmdlcyA9IG5vZGVBbmNl
c3RyeUNoYW5nZXMoYXhPYmplY3QpOworICAgIFZlY3RvcjxOb2RlQ2hhbmdlPiBjaGFuZ2VzID0g
bm9kZUFuY2VzdHJ5Q2hhbmdlcyhheE9iamVjdCwgaWRzQmVpbmdDaGFuZ2VkKTsKIAogICAgIGF1
dG8gb2xkQ2hpbGRyZW5JRHMgPSBtX25vZGVNYXAuZ2V0KGF4T2JqZWN0Lm9iamVjdElEKCkpOwog
Ci0gICAgY29uc3QgYXV0byYgYXhDaGlsZHJlbiA9IGF4T2JqZWN0LmNoaWxkcmVuKCk7CisgICAg
Y29uc3QgYXV0byYgbmV3Q2hpbGRyZW4gPSBheE9iamVjdC5jaGlsZHJlbigpOwogICAgIGF1dG8g
bmV3Q2hpbGRyZW5JRHMgPSBheE9iamVjdC5jaGlsZHJlbklEcyhmYWxzZSk7CiAKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGF4Q2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgQVNT
RVJUKGF4Q2hpbGRyZW5baV0tPm9iamVjdElEKCkgPT0gbmV3Q2hpbGRyZW5JRHNbaV0pOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgQVNTRVJUKG5ld0NoaWxkcmVuW2ldLT5vYmplY3RJRCgpID09IG5ld0NoaWxkcmVuSURzW2ld
KTsKICAgICAgICAgQVNTRVJUKG5ld0NoaWxkcmVuSURzW2ldLmlzVmFsaWQoKSk7CiAgICAgICAg
IHNpemVfdCBpbmRleCA9IG9sZENoaWxkcmVuSURzLmZpbmQobmV3Q2hpbGRyZW5JRHNbaV0pOwog
ICAgICAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBvbGRDaGlsZHJlbklE
cy5yZW1vdmUoaW5kZXgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMg
YSBuZXcgY2hpbGQsIGFkZCBpdCB0byB0aGUgdHJlZS4KLSAgICAgICAgICAgIEFYTE9HKCJBZGRp
bmcgYSBuZXcgY2hpbGQgZm9yOiIpOwotICAgICAgICAgICAgQVhMT0coYXhDaGlsZHJlbltpXSk7
Ci0gICAgICAgICAgICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpheENoaWxkcmVuW2ld
LCBheE9iamVjdC5vYmplY3RJRCgpLCB0cnVlLCBjaGFuZ2VzKTsKKyAgICAgICAgICAgIEFYTE9H
KG1ha2VTdHJpbmcoIkFYSUQgIiwgYXhPYmplY3Qub2JqZWN0SUQoKS5sb2dnaW5nU3RyaW5nKCks
ICIgZ2FpbmluZyBuZXcgc3VidHJlZSwgc3RhcnRpbmcgYXQgSUQgIiwgbmV3Q2hpbGRyZW5baV0t
Pm9iamVjdElEKCkubG9nZ2luZ1N0cmluZygpLCAiOiIpKTsKKyAgICAgICAgICAgIEFYTE9HKG5l
d0NoaWxkcmVuW2ldKTsKKyAgICAgICAgICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUo
Km5ld0NoaWxkcmVuW2ldLCBheE9iamVjdC5vYmplY3RJRCgpLCB0cnVlLCBjaGFuZ2VzLCBpZHNC
ZWluZ0NoYW5nZWQpOwogICAgICAgICB9CiAgICAgfQotCiAgICAgbV9ub2RlTWFwLnNldChheE9i
amVjdC5vYmplY3RJRCgpLCBuZXdDaGlsZHJlbklEcyk7CiAKICAgICAvLyBXaGF0IGlzIGxlZnQg
aW4gb2xkQ2hpbGRyZW5JRHMgYXJlIHRoZSBJRHMgdGhhdCBhcmUgbm8gbG9uZ2VyIGNoaWxkcmVu
IG9mIGF4T2JqZWN0LgogICAgIC8vIFRodXMsIHJlbW92ZSB0aGVtIGZyb20gbV9ub2RlTWFwIGFu
ZCBxdWV1ZSB0aGVtIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgdHJlZS4KLSAgICBmb3IgKEFYSUQm
IGF4SUQgOiBvbGRDaGlsZHJlbklEcykKLSAgICAgICAgcmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFw
KGF4SUQpOworICAgIGZvciAoQVhJRCYgYXhJRCA6IG9sZENoaWxkcmVuSURzKSB7CisgICAgICAg
IC8vIEhvd2V2ZXIsIHdlIGRvbid0IHdhbnQgdG8gcmVtb3ZlIHN1YnRyZWVzIGZyb20gdGhlIG5v
ZGVtYXAgdGhhdCBhcmUgcGFydCBvZiB0aGUgdG8tYmUtcXVldWVkIG5vZGUgY2hhbmdlcyAoaS5l
IHRob3NlIGluIGBpZHNCZWluZ0NoYW5nZWRgKS4KKyAgICAgICAgLy8gVGhpcyBpcyBpbXBvcnRh
bnQgd2hlbiBhIG5vZGUgbW92ZXMgdG8gYSBkaWZmZXJlbnQgcGFydCBvZiB0aGUgdHJlZSByYXRo
ZXIgdGhhbiBiZWluZyBkZWxldGVkIC0tIGZvciBleGFtcGxlOgorICAgICAgICAvLyAgIDEuIE9i
amVjdCAxMjMgaXMgc2xhdGVkIHRvIGJlIGEgY2hpbGQgb2YgdGhpcyBvYmplY3QgKGkuZS4gaW4g
bmV3Q2hpbGRyZW4pLCBhbmQgd2UgY29sbGVjdCBub2RlIGNoYW5nZXMgZm9yIGl0LgorICAgICAg
ICAvLyAgIDIuIE9iamVjdCAxMjMgaXMgY3VycmVudGx5IGEgbWVtYmVyIG9mIGEgc3VidHJlZSBv
ZiBzb21lIG90aGVyIG9iamVjdCBpbiBvbGRDaGlsZHJlbklEcy4KKyAgICAgICAgLy8gICAzLiBU
aHVzLCB3ZSBkb24ndCB3YW50IHRvIGRlbGV0ZSBPYmplY3QgMTIzIGZyb20gdGhlIG5vZGVtYXAs
IGluc3RlYWQgYWxsb3dpbmcgaXQgdG8gYmUgbW92ZWQuCisgICAgICAgIHJlbW92ZVN1YnRyZWVG
cm9tTm9kZU1hcChheElELCBpZHNCZWluZ0NoYW5nZWQpOworICAgIH0KICAgICBxdWV1ZUNoYW5n
ZXNBbmRSZW1vdmFscyhjaGFuZ2VzLCBvbGRDaGlsZHJlbklEcyk7CiB9CiAKQEAgLTQ3MSw3ICs0
ODIsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVOb2RlKEFYSUQgYXhJRCkKICAgICBt
X3BlbmRpbmdOb2RlUmVtb3ZhbHMuYXBwZW5kKGF4SUQpOwogfQogCi12b2lkIEFYSXNvbGF0ZWRU
cmVlOjpyZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAoQVhJRCBheElEKQordm9pZCBBWElzb2xhdGVk
VHJlZTo6cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKEFYSUQgYXhJRCwgY29uc3QgSGFzaFNldDxB
WElEPiYgaWRzVG9LZWVwKQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVT
dWJ0cmVlIik7CiAgICAgQVhMT0cobWFrZVN0cmluZygiUmVtb3Zpbmcgc3VidHJlZSBmb3IgYXhJ
RCAiLCBheElELmxvZ2dpbmdTdHJpbmcoKSkpOwpAQCAtNDgwLDcgKzQ5MSw3IEBAIHZvaWQgQVhJ
c29sYXRlZFRyZWU6OnJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChBWElEIGF4SUQpCiAgICAgVmVj
dG9yPEFYSUQ+IHJlbW92YWxzID0geyBheElEIH07CiAgICAgd2hpbGUgKHJlbW92YWxzLnNpemUo
KSkgewogICAgICAgICBBWElEIGF4SUQgPSByZW1vdmFscy50YWtlTGFzdCgpOwotICAgICAgICBp
ZiAoIWF4SUQuaXNWYWxpZCgpKQorICAgICAgICBpZiAoIWF4SUQuaXNWYWxpZCgpIHx8IGlkc1Rv
S2VlcC5jb250YWlucyhheElEKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1
dG8gaXQgPSBtX25vZGVNYXAuZmluZChheElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGM0
Y2UxYmQ0ZjNiYzE2N2I0Yjk4MzhkMzMzOGI5YmU4M2VhMjMyZTMuLjU4MzkzMzAxMWNiZGIyYjIx
YWY5NGNhMmViNTg5OTI3OGJlOWJlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMzYyLDcg
KzM2Miw3IEBAIHB1YmxpYzoKICAgICAvLyBSZW1vdmVzIHRoZSBnaXZlbiBub2RlIGxlYXZpbmcg
YWxsIGRlc2NlbmRhbnRzIGFsb25lLgogICAgIHZvaWQgcmVtb3ZlTm9kZShBWElEKTsKICAgICAv
LyBSZW1vdmVzIHRoZSBnaXZlbiBub2RlIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnRzLgotICAgIHZv
aWQgcmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKEFYSUQpOworICAgIHZvaWQgcmVtb3ZlU3VidHJl
ZUZyb21Ob2RlTWFwKEFYSUQsIGNvbnN0IEhhc2hTZXQ8QVhJRD4mID0geyB9KTsKIAogICAgIC8v
IEJvdGggc2V0Um9vdE5vZGVJRCBhbmQgc2V0Rm9jdXNlZE5vZGVJRCBhcmUgY2FsbGVkIGR1cmlu
ZyB0aGUgZ2VuZXJhdGlvbgogICAgIC8vIG9mIHRoZSBJc29sYXRlZFRyZWUuCkBAIC0zODYsMTAg
KzM4NiwxMCBAQCBwcml2YXRlOgogCiAgICAgLy8gQ2FsbGVkIG9uIG1haW4gdGhyZWFkLgogICAg
IE5vZGVDaGFuZ2Ugbm9kZUNoYW5nZUZvck9iamVjdChBWENvcmVPYmplY3QmLCBBWElEIHBhcmVu
dElELCBib29sIGF0dGFjaFdyYXBwZXIgPSB0cnVlLCBib29sIHVwZGF0ZU5vZGVNYXAgPSB0cnVl
KTsKLSAgICB2b2lkIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0Jiwg
QVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyLCBWZWN0b3I8Tm9kZUNoYW5nZT4mKTsK
KyAgICB2b2lkIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhJ
RCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyLCBWZWN0b3I8Tm9kZUNoYW5nZT4mLCBzdGQ6
Om9wdGlvbmFsPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8SGFzaFNldDxBWElEPj4+ID0gc3RkOjpu
dWxsb3B0KTsKICAgICB2b2lkIHF1ZXVlQ2hhbmdlKGNvbnN0IE5vZGVDaGFuZ2UmKSBXVEZfUkVR
VUlSRVNfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOwogICAgIHZvaWQgcXVldWVDaGFuZ2VzQW5kUmVt
b3ZhbHMoY29uc3QgVmVjdG9yPE5vZGVDaGFuZ2U+JiwgY29uc3QgVmVjdG9yPEFYSUQ+JiA9IHsg
fSk7Ci0gICAgVmVjdG9yPE5vZGVDaGFuZ2U+IG5vZGVBbmNlc3RyeUNoYW5nZXMoQVhDb3JlT2Jq
ZWN0Jik7CisgICAgVmVjdG9yPE5vZGVDaGFuZ2U+IG5vZGVBbmNlc3RyeUNoYW5nZXMoQVhDb3Jl
T2JqZWN0JiwgSGFzaFNldDxBWElEPiYpOwogCiAgICAgQVhJc29sYXRlZFRyZWVJRCBtX3RyZWVJ
RDsKICAgICBBWE9iamVjdENhY2hlKiBtX2F4T2JqZWN0Q2FjaGUgeyBudWxscHRyIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450808</attachid>
            <date>2022-02-03 13:16:48 -0800</date>
            <delta_ts>2022-02-03 13:52:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236057-20220203151647.patch</filename>
            <type>text/plain</type>
            <size>11965</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5YjJjYWIxYzRmZDc0
MGMyMmYyYWY2YTczY2E1YjdiOWMyOTBlYS4uZWZhY2NmMGNhNDAyZWYxYjk4YzcwY2JkMjhlNzFi
NWVjYTdmZmJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIyLTAyLTAyICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVhJc29sYXRlZFRyZWU6
OnVwZGF0ZUNoaWxkcmVuIHJlbW92ZXMgc3VidHJlZXMgdGhhdCBzaG91bGQgaW5zdGVhZCBiZSBt
b3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
MDU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4g
QVhJc29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuLCB3ZSBjYW4gc29tZXRpbWVzIHJlbW92ZSBz
dWJ0cmVlcyBmcm9tIHRoZSBub2RlbWFwIHRoYXQgYXJlCisgICAgICAgIHF1ZXVlZCB0byBiZSBh
ZGRlZCBzb21ld2hlcmUgZWxzZSBpbiB0aGUgdHJlZS4gU3BlY2lmaWNhbGx5LCB0aGlzIGNhbiBo
YXBwZW4gd2hlbjoKKworICAgICAgICAgIDEuIE9iamVjdCAxMjMgaXMgY29uc2lkZXJlZCB0byBi
ZSBhIG5ldyBjaGlsZCBiYXNlZCBvbiB0aGUgbGl2ZSBBWCB0cmVlLCBhbmQgd2UgY29sbGVjdCBu
b2RlIGNoYW5nZXMgZm9yIGl0LgorICAgICAgICAgIDIuIE9iamVjdCAxMjMgaXMgY3VycmVudGx5
IGEgbWVtYmVyIG9mIGEgc3VidHJlZSBvZiBzb21lIG90aGVyIG9iamVjdCBpbiBvbGRDaGlsZHJl
bklEcy4KKyAgICAgICAgICAzLiBCZWNhdXNlIG9mIDIsIE9iamVjdCAxMjMgaXMgcmVtb3ZlZCBm
cm9tIHRoZSBub2RlIG1hcCBpbiByZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAKKyAgICAgICAgICA0
LiBXZSB0cnkgdG8gcXVldWUgdGhlIGFkZGl0aW9uIG9mIHRoaXMgbm9kZSBzb21ld2hlcmUgaW4g
dHJlZSBpbiBxdWV1ZUNoYW5nZSwgYnV0IEFTU0VSVCBiZWNhdXNlIE9iamVjdCAxMjMgaXMgbm90
IGluIHRoZSBub2RlbWFwIGFueW1vcmUuCisKKyAgICAgICAgVGhpcyBjYXVzZXMgdXMgdG8gaGl0
IEFTU0VSVChtX25vZGVNYXAuY29udGFpbnMob2JqZWN0SUQpIGluIEFYSXNvbGF0ZWRUcmVlOjpx
dWV1ZUNoYW5nZShjb25zdCBOb2RlQ2hhbmdlJikuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhl
cyB0aGlzIHByb2JsZW0gYnkga2VlcGluZyB0cmFjayBvZiB0aGUgSURzIHdlIGFyZSBxdWV1aW5n
IGZvciBhZGRpdGlvbgorICAgICAgICB0byB0aGUgdHJlZSBhbmQgbWFraW5nIHN1cmUgd2UgZG9u
J3QgcmVtb3ZlIHRob3NlIElEcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVl
OjpxdWV1ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Y29sbGVj
dE5vZGVDaGFuZ2VzRm9yU3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJl
ZTo6bm9kZUFuY2VzdHJ5Q2hhbmdlcyk6CisgICAgICAgIEtlZXAgdHJhY2sgb2YgSURzIHdlIGFy
ZSBxdWV1ZWluZyBjaGFuZ2VzIGZvci4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVl
Ojp1cGRhdGVDaGlsZHJlbik6CisgICAgICAgIEtlZXAgdHJhY2sgb2YgSURzIHdlIGFyZSBxdWV1
ZWluZyBjaGFuZ2VzIGZvciBhbmQgZG9uJ3QgcmVtb3ZlIHRoZW0sCisgICAgICAgIGV2ZW4gaWYg
dGhleSBhcmUgcGFydCBvZiBvbGRDaGlsZHJlbklEcy4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXApOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKToKKyAgICAgICAgQWNjZXB0
IGFub3RoZXIgcGFyYW10ZXIgbGlzdGluZyBJRHMgdG8ga2VlcC4KKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRUcmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKToKKyAgICAgICAg
S2VlcCB0cmFjayBvZiBJRHMgd2UgYXJlIHF1ZXVlaW5nIGNoYW5nZXMgZm9yLgorCiAyMDIyLTAy
LTAyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUg
UHJvY2Vzc10gUmVtb3ZlIERpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGUgYW5kIERpc3Bs
YXlMaXN0OjpSZWNvcmRlckltcGw6OkRlbGVnYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5k
ZXggN2Y5ODY4Mzc5MTY2ODIyYTdkMGIyNjM0MWE1MDgwMDY4ZWI2MmYwYi4uM2ZlM2MzYjc2ZWJh
ZGRkNzE2MzNlOWE5NzJiNjBmYzk4YjkxYzIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApA
QCAtMjMxLDE0ICsyMzEsMTQgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6cXVldWVDaGFuZ2UoY29u
c3QgTm9kZUNoYW5nZSYgbm9kZUNoYW5nZSkKIAogICAgIEFYSUQgcGFyZW50SUQgPSBub2RlQ2hh
bmdlLmlzb2xhdGVkT2JqZWN0LT5wYXJlbnQoKTsKICAgICBpZiAocGFyZW50SUQuaXNWYWxpZCgp
KSB7Ci0gICAgICAgIEFTU0VSVChtX25vZGVNYXAuY29udGFpbnMocGFyZW50SUQpKTsKKyAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX25vZGVNYXAuY29udGFpbnMocGFyZW50SUQpLCAibm9k
ZSBtYXAgc2hvdWxkJ3ZlIGNvbnRhaW5lZCBwYXJlbnRJRDogJXMiLCBwYXJlbnRJRC5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGF1dG8gc2libGluZ3NJRHMgPSBtX25v
ZGVNYXAuZ2V0KHBhcmVudElEKTsKICAgICAgICAgbV9wZW5kaW5nQ2hpbGRyZW5VcGRhdGVzLmFw
cGVuZCh7IHBhcmVudElELCBXVEZNb3ZlKHNpYmxpbmdzSURzKSB9KTsKICAgICB9CiAKICAgICBB
WElEIG9iamVjdElEID0gbm9kZUNoYW5nZS5pc29sYXRlZE9iamVjdC0+b2JqZWN0SUQoKTsKLSAg
ICBBU1NFUlQob2JqZWN0SUQgIT0gcGFyZW50SUQpOwotICAgIEFTU0VSVChtX25vZGVNYXAuY29u
dGFpbnMob2JqZWN0SUQpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG9iamVjdElEICE9IHBh
cmVudElELCAib2JqZWN0IElEIHdhcyB0aGUgc2FtZSBhcyBpdHMgcGFyZW50IElEICglcykgd2hl
biBxdWV1ZWluZyBhIG5vZGUgY2hhbmdlIiwgb2JqZWN0SUQubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9ub2RlTWFwLmNvbnRhaW5zKG9i
amVjdElEKSwgIm5vZGUgbWFwIHNob3VsZCd2ZSBjb250YWluZWQgb2JqZWN0SUQ6ICVzIiwgb2Jq
ZWN0SUQubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGF1dG8gY2hpbGRyZW5J
RHMgPSBtX25vZGVNYXAuZ2V0KG9iamVjdElEKTsKICAgICBtX3BlbmRpbmdDaGlsZHJlblVwZGF0
ZXMuYXBwZW5kKHsgb2JqZWN0SUQsIFdURk1vdmUoY2hpbGRyZW5JRHMpIH0pOwogfQpAQCAtMjU2
LDcgKzI1Niw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnF1ZXVlQ2hhbmdlc0FuZFJlbW92YWxz
KGNvbnN0IFZlY3RvcjxOb2RlQ2hhbmdlPiYgY2hhbmdlcywKICAgICAgICAgcXVldWVDaGFuZ2Uo
Y2hhbmdlKTsKIH0KIAotdm9pZCBBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9y
U3VidHJlZShBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWElEIHBhcmVudElELCBib29sIGF0dGFj
aFdyYXBwZXIsIFZlY3RvcjxOb2RlQ2hhbmdlPiYgY2hhbmdlcykKK3ZvaWQgQVhJc29sYXRlZFRy
ZWU6OmNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwg
QVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyLCBWZWN0b3I8Tm9kZUNoYW5nZT4mIGNo
YW5nZXMsIEhhc2hTZXQ8QVhJRD4qIGlkc0JlaW5nQ2hhbmdlZCkKIHsKICAgICBBWFRSQUNFKCJB
WElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9yU3VidHJlZSIpOwogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CkBAIC0yNjYsMTMgKzI2NiwxNiBAQCB2b2lkIEFYSXNvbGF0ZWRU
cmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKEFYQ29yZU9iamVjdCYgYXhPYmplY3Qs
IEFYSUQgcAogICAgIFNldEZvclNjb3BlPGJvb2w+IGNyZWF0aW5nU3VidHJlZShtX2NyZWF0aW5n
U3VidHJlZSwgdHJ1ZSk7CiAKICAgICBhdXRvIG5vZGVDaGFuZ2UgPSBub2RlQ2hhbmdlRm9yT2Jq
ZWN0KGF4T2JqZWN0LCBwYXJlbnRJRCwgYXR0YWNoV3JhcHBlcik7Ci0gICAgY2hhbmdlcy5hcHBl
bmQobm9kZUNoYW5nZSk7CisgICAgYXV0byBjaGFuZ2VJRCA9IG5vZGVDaGFuZ2UuaXNvbGF0ZWRP
YmplY3QtPm9iamVjdElEKCk7CisgICAgY2hhbmdlcy5hcHBlbmQoV1RGTW92ZShub2RlQ2hhbmdl
KSk7CisgICAgaWYgKGlkc0JlaW5nQ2hhbmdlZCkKKyAgICAgICAgaWRzQmVpbmdDaGFuZ2VkLT5h
ZGQoY2hhbmdlSUQpOwogCiAgICAgYXV0byBheENoaWxkcmVuID0gYXhPYmplY3QuY2hpbGRyZW4o
KTsKICAgICBWZWN0b3I8QVhJRD4gYXhDaGlsZHJlbklEczsKLSAgICBheENoaWxkcmVuSURzLnJl
c2VydmVDYXBhY2l0eShheENoaWxkcmVuLnNpemUoKSk7CisgICAgYXhDaGlsZHJlbklEcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGF4Q2hpbGRyZW4uc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIGF4Q2hpbGQgOiBheENoaWxkcmVuKSB7Ci0gICAgICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0Zv
clN1YnRyZWUoKmF4Q2hpbGQsIGF4T2JqZWN0Lm9iamVjdElEKCksIGF0dGFjaFdyYXBwZXIsIGNo
YW5nZXMpOworICAgICAgICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpheENoaWxkLCBh
eE9iamVjdC5vYmplY3RJRCgpLCBhdHRhY2hXcmFwcGVyLCBjaGFuZ2VzLCBpZHNCZWluZ0NoYW5n
ZWQpOwogICAgICAgICBheENoaWxkcmVuSURzLnVuY2hlY2tlZEFwcGVuZChheENoaWxkLT5vYmpl
Y3RJRCgpKTsKICAgICB9CiAKQEAgLTMyNyw3ICszMzAsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVl
Ojp1cGRhdGVOb2RlUHJvcGVydHkoY29uc3QgQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhQcm9w
ZXJ0eQogICAgIG1fcGVuZGluZ1Byb3BlcnR5Q2hhbmdlcy5hcHBlbmQoeyBheE9iamVjdC5vYmpl
Y3RJRCgpLCBwcm9wZXJ0eU1hcCB9KTsKIH0KIAotVmVjdG9yPEFYSXNvbGF0ZWRUcmVlOjpOb2Rl
Q2hhbmdlPiBBWElzb2xhdGVkVHJlZTo6bm9kZUFuY2VzdHJ5Q2hhbmdlcyhBWENvcmVPYmplY3Qm
IGF4Q29yZU9iamVjdCkKK1ZlY3RvcjxBWElzb2xhdGVkVHJlZTo6Tm9kZUNoYW5nZT4gQVhJc29s
YXRlZFRyZWU6Om5vZGVBbmNlc3RyeUNoYW5nZXMoQVhDb3JlT2JqZWN0JiBheENvcmVPYmplY3Qs
IEhhc2hTZXQ8QVhJRD4mIGlkc0JlaW5nQ2hhbmdlZCkKIHsKICAgICBWZWN0b3I8Tm9kZUNoYW5n
ZT4gY2hhbmdlczsKIApAQCAtMzQzLDcgKzM0NiwxMCBAQCBWZWN0b3I8QVhJc29sYXRlZFRyZWU6
Ok5vZGVDaGFuZ2U+IEFYSXNvbGF0ZWRUcmVlOjpub2RlQW5jZXN0cnlDaGFuZ2VzKEFYQ29yZU9i
agogCiAgICAgICAgIC8vIElmIGF4T2JqZWN0IGlzIHRoZSBvcmlnaW5hbCBvYmplY3QgZm9yIHdo
aWNoIHdlIGFyZSBhZGRpbmcgaXRzIGFuY2VzdHJ5LCBkb24ndCB1cGRhdGUgdGhlIG5vZGVNYXAg
c2luY2UgdXBkYXRlQ2hpbGRyZW4gbmVlZHMgdG8gY29tcGFyZSBpdHMgcHJldmlvdXMgY2hpbGRy
ZW4gd2l0aCB0aGUgbmV3IG9uZXMuCiAgICAgICAgIGJvb2wgdXBkYXRlTm9kZU1hcCA9IGF4T2Jq
ZWN0ICE9ICZheENvcmVPYmplY3Q7Ci0gICAgICAgIGNoYW5nZXMuYXBwZW5kKG5vZGVDaGFuZ2VG
b3JPYmplY3QoKmF4T2JqZWN0LCBheFBhcmVudElELCB0cnVlLCB1cGRhdGVOb2RlTWFwKSk7Cisg
ICAgICAgIGF1dG8gY2hhbmdlID0gbm9kZUNoYW5nZUZvck9iamVjdCgqYXhPYmplY3QsIGF4UGFy
ZW50SUQsIHRydWUsIHVwZGF0ZU5vZGVNYXApOworICAgICAgICBhdXRvIGNoYW5nZUlEID0gY2hh
bmdlLmlzb2xhdGVkT2JqZWN0LT5vYmplY3RJRCgpOworICAgICAgICBjaGFuZ2VzLmFwcGVuZChX
VEZNb3ZlKGNoYW5nZSkpOworICAgICAgICBpZHNCZWluZ0NoYW5nZWQuYWRkKGNoYW5nZUlEKTsK
IAogICAgICAgICBpZiAoYXhQYXJlbnQpCiAgICAgICAgICAgICBtX25vZGVNYXAuc2V0KGF4UGFy
ZW50LT5vYmplY3RJRCgpLCBheFBhcmVudC0+Y2hpbGRyZW5JRHMoKSk7CkBAIC0zNzEsMzggKzM3
Nyw0NCBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbihBWENvcmVPYmplY3Qm
IGF4T2JqZWN0KQogICAgIGlmICghYXhPYmplY3QuZG9jdW1lbnQoKSB8fCAhYXhPYmplY3QuZG9j
dW1lbnQoKS0+aGFzTGl2aW5nUmVuZGVyVHJlZSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBI
YXNoU2V0PEFYSUQ+IGlkc0JlaW5nQ2hhbmdlZDsKICAgICAvLyB1cGRhdGVDaGlsZHJlbiBtYXkg
YmUgY2FsbGVkIGFzIHRoZSByZXN1bHQgb2YgYSBjaGlsZHJlbiBjaGFuZ2VkCiAgICAgLy8gbm90
aWZpY2F0aW9uIGZvciBhbiBheE9iamVjdCB0aGF0IGhhcyBubyBhc3NvY2lhdGVkIGlzb2xhdGVk
IG9iamVjdC4KICAgICAvLyBBbiBleGFtcGxlIG9mIHRoaXMgaXMgd2hlbiBhbiBlbXB0eSBlbGVt
ZW50IHN1Y2ggYXMgYSA8Y2FudmFzPiBvciA8ZGl2PgogICAgIC8vIGlzIGFkZGVkIGEgbmV3IGNo
aWxkLiBUaHVzIGFkZCB0aGUgYW5jZXN0cnkgdGhhdCBjb25uZWN0cyB0aGUgYXNzb2NpYXRlZAog
ICAgIC8vIGlzb2xhdGVkIG9iamVjdCB0byB0aGUgY2xvc2VzdCBleGlzdGluZyBhbmNlc3Rvci4K
LSAgICBWZWN0b3I8Tm9kZUNoYW5nZT4gY2hhbmdlcyA9IG5vZGVBbmNlc3RyeUNoYW5nZXMoYXhP
YmplY3QpOworICAgIFZlY3RvcjxOb2RlQ2hhbmdlPiBjaGFuZ2VzID0gbm9kZUFuY2VzdHJ5Q2hh
bmdlcyhheE9iamVjdCwgaWRzQmVpbmdDaGFuZ2VkKTsKIAogICAgIGF1dG8gb2xkQ2hpbGRyZW5J
RHMgPSBtX25vZGVNYXAuZ2V0KGF4T2JqZWN0Lm9iamVjdElEKCkpOwogCi0gICAgY29uc3QgYXV0
byYgYXhDaGlsZHJlbiA9IGF4T2JqZWN0LmNoaWxkcmVuKCk7CisgICAgY29uc3QgYXV0byYgbmV3
Q2hpbGRyZW4gPSBheE9iamVjdC5jaGlsZHJlbigpOwogICAgIGF1dG8gbmV3Q2hpbGRyZW5JRHMg
PSBheE9iamVjdC5jaGlsZHJlbklEcyhmYWxzZSk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGF4Q2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgQVNTRVJUKGF4Q2hpbGRyZW5b
aV0tPm9iamVjdElEKCkgPT0gbmV3Q2hpbGRyZW5JRHNbaV0pOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbmV3Q2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKG5ld0No
aWxkcmVuW2ldLT5vYmplY3RJRCgpID09IG5ld0NoaWxkcmVuSURzW2ldKTsKICAgICAgICAgQVNT
RVJUKG5ld0NoaWxkcmVuSURzW2ldLmlzVmFsaWQoKSk7CiAgICAgICAgIHNpemVfdCBpbmRleCA9
IG9sZENoaWxkcmVuSURzLmZpbmQobmV3Q2hpbGRyZW5JRHNbaV0pOwogICAgICAgICBpZiAoaW5k
ZXggIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBvbGRDaGlsZHJlbklEcy5yZW1vdmUoaW5kZXgp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgY2hpbGQsIGFk
ZCBpdCB0byB0aGUgdHJlZS4KLSAgICAgICAgICAgIEFYTE9HKCJBZGRpbmcgYSBuZXcgY2hpbGQg
Zm9yOiIpOwotICAgICAgICAgICAgQVhMT0coYXhDaGlsZHJlbltpXSk7Ci0gICAgICAgICAgICBj
b2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpheENoaWxkcmVuW2ldLCBheE9iamVjdC5vYmpl
Y3RJRCgpLCB0cnVlLCBjaGFuZ2VzKTsKKyAgICAgICAgICAgIEFYTE9HKG1ha2VTdHJpbmcoIkFY
SUQgIiwgYXhPYmplY3Qub2JqZWN0SUQoKS5sb2dnaW5nU3RyaW5nKCksICIgZ2FpbmluZyBuZXcg
c3VidHJlZSwgc3RhcnRpbmcgYXQgSUQgIiwgbmV3Q2hpbGRyZW5baV0tPm9iamVjdElEKCkubG9n
Z2luZ1N0cmluZygpLCAiOiIpKTsKKyAgICAgICAgICAgIEFYTE9HKG5ld0NoaWxkcmVuW2ldKTsK
KyAgICAgICAgICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoKm5ld0NoaWxkcmVuW2ld
LCBheE9iamVjdC5vYmplY3RJRCgpLCB0cnVlLCBjaGFuZ2VzLCAmaWRzQmVpbmdDaGFuZ2VkKTsK
ICAgICAgICAgfQogICAgIH0KLQogICAgIG1fbm9kZU1hcC5zZXQoYXhPYmplY3Qub2JqZWN0SUQo
KSwgbmV3Q2hpbGRyZW5JRHMpOwogCiAgICAgLy8gV2hhdCBpcyBsZWZ0IGluIG9sZENoaWxkcmVu
SURzIGFyZSB0aGUgSURzIHRoYXQgYXJlIG5vIGxvbmdlciBjaGlsZHJlbiBvZiBheE9iamVjdC4K
ICAgICAvLyBUaHVzLCByZW1vdmUgdGhlbSBmcm9tIG1fbm9kZU1hcCBhbmQgcXVldWUgdGhlbSB0
byBiZSByZW1vdmVkIGZyb20gdGhlIHRyZWUuCi0gICAgZm9yIChBWElEJiBheElEIDogb2xkQ2hp
bGRyZW5JRHMpCi0gICAgICAgIHJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChheElEKTsKKyAgICBm
b3IgKEFYSUQmIGF4SUQgOiBvbGRDaGlsZHJlbklEcykgeworICAgICAgICAvLyBIb3dldmVyLCB3
ZSBkb24ndCB3YW50IHRvIHJlbW92ZSBzdWJ0cmVlcyBmcm9tIHRoZSBub2RlbWFwIHRoYXQgYXJl
IHBhcnQgb2YgdGhlIHRvLWJlLXF1ZXVlZCBub2RlIGNoYW5nZXMgKGkuZSB0aG9zZSBpbiBgaWRz
QmVpbmdDaGFuZ2VkYCkuCisgICAgICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IHdoZW4gYSBub2Rl
IG1vdmVzIHRvIGEgZGlmZmVyZW50IHBhcnQgb2YgdGhlIHRyZWUgcmF0aGVyIHRoYW4gYmVpbmcg
ZGVsZXRlZCAtLSBmb3IgZXhhbXBsZToKKyAgICAgICAgLy8gICAxLiBPYmplY3QgMTIzIGlzIHNs
YXRlZCB0byBiZSBhIGNoaWxkIG9mIHRoaXMgb2JqZWN0IChpLmUuIGluIG5ld0NoaWxkcmVuKSwg
YW5kIHdlIGNvbGxlY3Qgbm9kZSBjaGFuZ2VzIGZvciBpdC4KKyAgICAgICAgLy8gICAyLiBPYmpl
Y3QgMTIzIGlzIGN1cnJlbnRseSBhIG1lbWJlciBvZiBhIHN1YnRyZWUgb2Ygc29tZSBvdGhlciBv
YmplY3QgaW4gb2xkQ2hpbGRyZW5JRHMuCisgICAgICAgIC8vICAgMy4gVGh1cywgd2UgZG9uJ3Qg
d2FudCB0byBkZWxldGUgT2JqZWN0IDEyMyBmcm9tIHRoZSBub2RlbWFwLCBpbnN0ZWFkIGFsbG93
aW5nIGl0IHRvIGJlIG1vdmVkLgorICAgICAgICByZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAoYXhJ
RCwgaWRzQmVpbmdDaGFuZ2VkKTsKKyAgICB9CiAgICAgcXVldWVDaGFuZ2VzQW5kUmVtb3ZhbHMo
Y2hhbmdlcywgb2xkQ2hpbGRyZW5JRHMpOwogfQogCkBAIC00NzEsNyArNDgzLDcgQEAgdm9pZCBB
WElzb2xhdGVkVHJlZTo6cmVtb3ZlTm9kZShBWElEIGF4SUQpCiAgICAgbV9wZW5kaW5nTm9kZVJl
bW92YWxzLmFwcGVuZChheElEKTsKIH0KIAotdm9pZCBBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3Vi
dHJlZUZyb21Ob2RlTWFwKEFYSUQgYXhJRCkKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1
YnRyZWVGcm9tTm9kZU1hcChBWElEIGF4SUQsIGNvbnN0IEhhc2hTZXQ8QVhJRD4mIGlkc1RvS2Vl
cCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZSIpOwogICAg
IEFYTE9HKG1ha2VTdHJpbmcoIlJlbW92aW5nIHN1YnRyZWUgZm9yIGF4SUQgIiwgYXhJRC5sb2dn
aW5nU3RyaW5nKCkpKTsKQEAgLTQ4MCw3ICs0OTIsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpy
ZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAoQVhJRCBheElEKQogICAgIFZlY3RvcjxBWElEPiByZW1v
dmFscyA9IHsgYXhJRCB9OwogICAgIHdoaWxlIChyZW1vdmFscy5zaXplKCkpIHsKICAgICAgICAg
QVhJRCBheElEID0gcmVtb3ZhbHMudGFrZUxhc3QoKTsKLSAgICAgICAgaWYgKCFheElELmlzVmFs
aWQoKSkKKyAgICAgICAgaWYgKCFheElELmlzVmFsaWQoKSB8fCBpZHNUb0tlZXAuY29udGFpbnMo
YXhJRCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvIGl0ID0gbV9ub2Rl
TWFwLmZpbmQoYXhJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAppbmRleCBjNGNlMWJkNGYzYmMxNjdi
NGI5ODM4ZDMzMzhiOWJlODNlYTIzMmUzLi4wNTQ2MDRmZjAzN2FlMmY3ZDhlYTE1ZGU3ZmY1NTA3
Y2UzNmIxOTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTM2Miw3ICszNjIsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUmVtb3ZlcyB0aGUgZ2l2ZW4gbm9kZSBsZWF2aW5nIGFsbCBkZXNjZW5kYW50
cyBhbG9uZS4KICAgICB2b2lkIHJlbW92ZU5vZGUoQVhJRCk7CiAgICAgLy8gUmVtb3ZlcyB0aGUg
Z2l2ZW4gbm9kZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cy4KLSAgICB2b2lkIHJlbW92ZVN1YnRy
ZWVGcm9tTm9kZU1hcChBWElEKTsKKyAgICB2b2lkIHJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChB
WElELCBjb25zdCBIYXNoU2V0PEFYSUQ+JiA9IHsgfSk7CiAKICAgICAvLyBCb3RoIHNldFJvb3RO
b2RlSUQgYW5kIHNldEZvY3VzZWROb2RlSUQgYXJlIGNhbGxlZCBkdXJpbmcgdGhlIGdlbmVyYXRp
b24KICAgICAvLyBvZiB0aGUgSXNvbGF0ZWRUcmVlLgpAQCAtMzg2LDEwICszODYsMTAgQEAgcHJp
dmF0ZToKIAogICAgIC8vIENhbGxlZCBvbiBtYWluIHRocmVhZC4KICAgICBOb2RlQ2hhbmdlIG5v
ZGVDaGFuZ2VGb3JPYmplY3QoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRh
Y2hXcmFwcGVyID0gdHJ1ZSwgYm9vbCB1cGRhdGVOb2RlTWFwID0gdHJ1ZSk7Ci0gICAgdm9pZCBj
b2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKEFYQ29yZU9iamVjdCYsIEFYSUQgcGFyZW50SUQs
IGJvb2wgYXR0YWNoV3JhcHBlciwgVmVjdG9yPE5vZGVDaGFuZ2U+Jik7CisgICAgdm9pZCBjb2xs
ZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKEFYQ29yZU9iamVjdCYsIEFYSUQgcGFyZW50SUQsIGJv
b2wgYXR0YWNoV3JhcHBlciwgVmVjdG9yPE5vZGVDaGFuZ2U+JiwgSGFzaFNldDxBWElEPiogPSBu
dWxscHRyKTsKICAgICB2b2lkIHF1ZXVlQ2hhbmdlKGNvbnN0IE5vZGVDaGFuZ2UmKSBXVEZfUkVR
VUlSRVNfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOwogICAgIHZvaWQgcXVldWVDaGFuZ2VzQW5kUmVt
b3ZhbHMoY29uc3QgVmVjdG9yPE5vZGVDaGFuZ2U+JiwgY29uc3QgVmVjdG9yPEFYSUQ+JiA9IHsg
fSk7Ci0gICAgVmVjdG9yPE5vZGVDaGFuZ2U+IG5vZGVBbmNlc3RyeUNoYW5nZXMoQVhDb3JlT2Jq
ZWN0Jik7CisgICAgVmVjdG9yPE5vZGVDaGFuZ2U+IG5vZGVBbmNlc3RyeUNoYW5nZXMoQVhDb3Jl
T2JqZWN0JiwgSGFzaFNldDxBWElEPiYpOwogCiAgICAgQVhJc29sYXRlZFRyZWVJRCBtX3RyZWVJ
RDsKICAgICBBWE9iamVjdENhY2hlKiBtX2F4T2JqZWN0Q2FjaGUgeyBudWxscHRyIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450815</attachid>
            <date>2022-02-03 13:52:27 -0800</date>
            <delta_ts>2022-02-03 18:23:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236057-20220203155226.patch</filename>
            <type>text/plain</type>
            <size>11898</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5YjJjYWIxYzRmZDc0
MGMyMmYyYWY2YTczY2E1YjdiOWMyOTBlYS4uZWZhY2NmMGNhNDAyZWYxYjk4YzcwY2JkMjhlNzFi
NWVjYTdmZmJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIyLTAyLTAyICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVhJc29sYXRlZFRyZWU6
OnVwZGF0ZUNoaWxkcmVuIHJlbW92ZXMgc3VidHJlZXMgdGhhdCBzaG91bGQgaW5zdGVhZCBiZSBt
b3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
MDU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4g
QVhJc29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuLCB3ZSBjYW4gc29tZXRpbWVzIHJlbW92ZSBz
dWJ0cmVlcyBmcm9tIHRoZSBub2RlbWFwIHRoYXQgYXJlCisgICAgICAgIHF1ZXVlZCB0byBiZSBh
ZGRlZCBzb21ld2hlcmUgZWxzZSBpbiB0aGUgdHJlZS4gU3BlY2lmaWNhbGx5LCB0aGlzIGNhbiBo
YXBwZW4gd2hlbjoKKworICAgICAgICAgIDEuIE9iamVjdCAxMjMgaXMgY29uc2lkZXJlZCB0byBi
ZSBhIG5ldyBjaGlsZCBiYXNlZCBvbiB0aGUgbGl2ZSBBWCB0cmVlLCBhbmQgd2UgY29sbGVjdCBu
b2RlIGNoYW5nZXMgZm9yIGl0LgorICAgICAgICAgIDIuIE9iamVjdCAxMjMgaXMgY3VycmVudGx5
IGEgbWVtYmVyIG9mIGEgc3VidHJlZSBvZiBzb21lIG90aGVyIG9iamVjdCBpbiBvbGRDaGlsZHJl
bklEcy4KKyAgICAgICAgICAzLiBCZWNhdXNlIG9mIDIsIE9iamVjdCAxMjMgaXMgcmVtb3ZlZCBm
cm9tIHRoZSBub2RlIG1hcCBpbiByZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAKKyAgICAgICAgICA0
LiBXZSB0cnkgdG8gcXVldWUgdGhlIGFkZGl0aW9uIG9mIHRoaXMgbm9kZSBzb21ld2hlcmUgaW4g
dHJlZSBpbiBxdWV1ZUNoYW5nZSwgYnV0IEFTU0VSVCBiZWNhdXNlIE9iamVjdCAxMjMgaXMgbm90
IGluIHRoZSBub2RlbWFwIGFueW1vcmUuCisKKyAgICAgICAgVGhpcyBjYXVzZXMgdXMgdG8gaGl0
IEFTU0VSVChtX25vZGVNYXAuY29udGFpbnMob2JqZWN0SUQpIGluIEFYSXNvbGF0ZWRUcmVlOjpx
dWV1ZUNoYW5nZShjb25zdCBOb2RlQ2hhbmdlJikuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhl
cyB0aGlzIHByb2JsZW0gYnkga2VlcGluZyB0cmFjayBvZiB0aGUgSURzIHdlIGFyZSBxdWV1aW5n
IGZvciBhZGRpdGlvbgorICAgICAgICB0byB0aGUgdHJlZSBhbmQgbWFraW5nIHN1cmUgd2UgZG9u
J3QgcmVtb3ZlIHRob3NlIElEcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVl
OjpxdWV1ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Y29sbGVj
dE5vZGVDaGFuZ2VzRm9yU3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJl
ZTo6bm9kZUFuY2VzdHJ5Q2hhbmdlcyk6CisgICAgICAgIEtlZXAgdHJhY2sgb2YgSURzIHdlIGFy
ZSBxdWV1ZWluZyBjaGFuZ2VzIGZvci4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVl
Ojp1cGRhdGVDaGlsZHJlbik6CisgICAgICAgIEtlZXAgdHJhY2sgb2YgSURzIHdlIGFyZSBxdWV1
ZWluZyBjaGFuZ2VzIGZvciBhbmQgZG9uJ3QgcmVtb3ZlIHRoZW0sCisgICAgICAgIGV2ZW4gaWYg
dGhleSBhcmUgcGFydCBvZiBvbGRDaGlsZHJlbklEcy4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXApOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKToKKyAgICAgICAgQWNjZXB0
IGFub3RoZXIgcGFyYW10ZXIgbGlzdGluZyBJRHMgdG8ga2VlcC4KKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRUcmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKToKKyAgICAgICAg
S2VlcCB0cmFjayBvZiBJRHMgd2UgYXJlIHF1ZXVlaW5nIGNoYW5nZXMgZm9yLgorCiAyMDIyLTAy
LTAyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUg
UHJvY2Vzc10gUmVtb3ZlIERpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGUgYW5kIERpc3Bs
YXlMaXN0OjpSZWNvcmRlckltcGw6OkRlbGVnYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5k
ZXggN2Y5ODY4Mzc5MTY2ODIyYTdkMGIyNjM0MWE1MDgwMDY4ZWI2MmYwYi4uNWE4ZjJjOTI4YWNh
MGVhY2IzMzQwY2Q4Zjc3ODcxZDJlZTFlN2FkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApA
QCAtMjMxLDE0ICsyMzEsMTQgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6cXVldWVDaGFuZ2UoY29u
c3QgTm9kZUNoYW5nZSYgbm9kZUNoYW5nZSkKIAogICAgIEFYSUQgcGFyZW50SUQgPSBub2RlQ2hh
bmdlLmlzb2xhdGVkT2JqZWN0LT5wYXJlbnQoKTsKICAgICBpZiAocGFyZW50SUQuaXNWYWxpZCgp
KSB7Ci0gICAgICAgIEFTU0VSVChtX25vZGVNYXAuY29udGFpbnMocGFyZW50SUQpKTsKKyAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX25vZGVNYXAuY29udGFpbnMocGFyZW50SUQpLCAibm9k
ZSBtYXAgc2hvdWxkJ3ZlIGNvbnRhaW5lZCBwYXJlbnRJRDogJXMiLCBwYXJlbnRJRC5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGF1dG8gc2libGluZ3NJRHMgPSBtX25v
ZGVNYXAuZ2V0KHBhcmVudElEKTsKICAgICAgICAgbV9wZW5kaW5nQ2hpbGRyZW5VcGRhdGVzLmFw
cGVuZCh7IHBhcmVudElELCBXVEZNb3ZlKHNpYmxpbmdzSURzKSB9KTsKICAgICB9CiAKICAgICBB
WElEIG9iamVjdElEID0gbm9kZUNoYW5nZS5pc29sYXRlZE9iamVjdC0+b2JqZWN0SUQoKTsKLSAg
ICBBU1NFUlQob2JqZWN0SUQgIT0gcGFyZW50SUQpOwotICAgIEFTU0VSVChtX25vZGVNYXAuY29u
dGFpbnMob2JqZWN0SUQpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG9iamVjdElEICE9IHBh
cmVudElELCAib2JqZWN0IElEIHdhcyB0aGUgc2FtZSBhcyBpdHMgcGFyZW50IElEICglcykgd2hl
biBxdWV1ZWluZyBhIG5vZGUgY2hhbmdlIiwgb2JqZWN0SUQubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9ub2RlTWFwLmNvbnRhaW5zKG9i
amVjdElEKSwgIm5vZGUgbWFwIHNob3VsZCd2ZSBjb250YWluZWQgb2JqZWN0SUQ6ICVzIiwgb2Jq
ZWN0SUQubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGF1dG8gY2hpbGRyZW5J
RHMgPSBtX25vZGVNYXAuZ2V0KG9iamVjdElEKTsKICAgICBtX3BlbmRpbmdDaGlsZHJlblVwZGF0
ZXMuYXBwZW5kKHsgb2JqZWN0SUQsIFdURk1vdmUoY2hpbGRyZW5JRHMpIH0pOwogfQpAQCAtMjU2
LDcgKzI1Niw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnF1ZXVlQ2hhbmdlc0FuZFJlbW92YWxz
KGNvbnN0IFZlY3RvcjxOb2RlQ2hhbmdlPiYgY2hhbmdlcywKICAgICAgICAgcXVldWVDaGFuZ2Uo
Y2hhbmdlKTsKIH0KIAotdm9pZCBBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9y
U3VidHJlZShBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWElEIHBhcmVudElELCBib29sIGF0dGFj
aFdyYXBwZXIsIFZlY3RvcjxOb2RlQ2hhbmdlPiYgY2hhbmdlcykKK3ZvaWQgQVhJc29sYXRlZFRy
ZWU6OmNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwg
QVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyLCBWZWN0b3I8Tm9kZUNoYW5nZT4mIGNo
YW5nZXMsIEhhc2hTZXQ8QVhJRD4qIGlkc0JlaW5nQ2hhbmdlZCkKIHsKICAgICBBWFRSQUNFKCJB
WElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9yU3VidHJlZSIpOwogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CkBAIC0yNjYsMTMgKzI2NiwxNSBAQCB2b2lkIEFYSXNvbGF0ZWRU
cmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKEFYQ29yZU9iamVjdCYgYXhPYmplY3Qs
IEFYSUQgcAogICAgIFNldEZvclNjb3BlPGJvb2w+IGNyZWF0aW5nU3VidHJlZShtX2NyZWF0aW5n
U3VidHJlZSwgdHJ1ZSk7CiAKICAgICBhdXRvIG5vZGVDaGFuZ2UgPSBub2RlQ2hhbmdlRm9yT2Jq
ZWN0KGF4T2JqZWN0LCBwYXJlbnRJRCwgYXR0YWNoV3JhcHBlcik7Ci0gICAgY2hhbmdlcy5hcHBl
bmQobm9kZUNoYW5nZSk7CisgICAgaWYgKGlkc0JlaW5nQ2hhbmdlZCkKKyAgICAgICAgaWRzQmVp
bmdDaGFuZ2VkLT5hZGQobm9kZUNoYW5nZS5pc29sYXRlZE9iamVjdC0+b2JqZWN0SUQoKSk7Cisg
ICAgY2hhbmdlcy5hcHBlbmQoV1RGTW92ZShub2RlQ2hhbmdlKSk7CiAKICAgICBhdXRvIGF4Q2hp
bGRyZW4gPSBheE9iamVjdC5jaGlsZHJlbigpOwogICAgIFZlY3RvcjxBWElEPiBheENoaWxkcmVu
SURzOwotICAgIGF4Q2hpbGRyZW5JRHMucmVzZXJ2ZUNhcGFjaXR5KGF4Q2hpbGRyZW4uc2l6ZSgp
KTsKKyAgICBheENoaWxkcmVuSURzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXhDaGlsZHJlbi5z
aXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgYXhDaGlsZCA6IGF4Q2hpbGRyZW4pIHsKLSAg
ICAgICAgY29sbGVjdE5vZGVDaGFuZ2VzRm9yU3VidHJlZSgqYXhDaGlsZCwgYXhPYmplY3Qub2Jq
ZWN0SUQoKSwgYXR0YWNoV3JhcHBlciwgY2hhbmdlcyk7CisgICAgICAgIGNvbGxlY3ROb2RlQ2hh
bmdlc0ZvclN1YnRyZWUoKmF4Q2hpbGQsIGF4T2JqZWN0Lm9iamVjdElEKCksIGF0dGFjaFdyYXBw
ZXIsIGNoYW5nZXMsIGlkc0JlaW5nQ2hhbmdlZCk7CiAgICAgICAgIGF4Q2hpbGRyZW5JRHMudW5j
aGVja2VkQXBwZW5kKGF4Q2hpbGQtPm9iamVjdElEKCkpOwogICAgIH0KIApAQCAtMzI3LDcgKzMy
OSw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0eShjb25zdCBBWENv
cmVPYmplY3QmIGF4T2JqZWN0LCBBWFByb3BlcnR5CiAgICAgbV9wZW5kaW5nUHJvcGVydHlDaGFu
Z2VzLmFwcGVuZCh7IGF4T2JqZWN0Lm9iamVjdElEKCksIHByb3BlcnR5TWFwIH0pOwogfQogCi1W
ZWN0b3I8QVhJc29sYXRlZFRyZWU6Ok5vZGVDaGFuZ2U+IEFYSXNvbGF0ZWRUcmVlOjpub2RlQW5j
ZXN0cnlDaGFuZ2VzKEFYQ29yZU9iamVjdCYgYXhDb3JlT2JqZWN0KQorVmVjdG9yPEFYSXNvbGF0
ZWRUcmVlOjpOb2RlQ2hhbmdlPiBBWElzb2xhdGVkVHJlZTo6bm9kZUFuY2VzdHJ5Q2hhbmdlcyhB
WENvcmVPYmplY3QmIGF4Q29yZU9iamVjdCwgSGFzaFNldDxBWElEPiYgaWRzQmVpbmdDaGFuZ2Vk
KQogewogICAgIFZlY3RvcjxOb2RlQ2hhbmdlPiBjaGFuZ2VzOwogCkBAIC0zNDMsNyArMzQ1LDkg
QEAgVmVjdG9yPEFYSXNvbGF0ZWRUcmVlOjpOb2RlQ2hhbmdlPiBBWElzb2xhdGVkVHJlZTo6bm9k
ZUFuY2VzdHJ5Q2hhbmdlcyhBWENvcmVPYmoKIAogICAgICAgICAvLyBJZiBheE9iamVjdCBpcyB0
aGUgb3JpZ2luYWwgb2JqZWN0IGZvciB3aGljaCB3ZSBhcmUgYWRkaW5nIGl0cyBhbmNlc3RyeSwg
ZG9uJ3QgdXBkYXRlIHRoZSBub2RlTWFwIHNpbmNlIHVwZGF0ZUNoaWxkcmVuIG5lZWRzIHRvIGNv
bXBhcmUgaXRzIHByZXZpb3VzIGNoaWxkcmVuIHdpdGggdGhlIG5ldyBvbmVzLgogICAgICAgICBi
b29sIHVwZGF0ZU5vZGVNYXAgPSBheE9iamVjdCAhPSAmYXhDb3JlT2JqZWN0OwotICAgICAgICBj
aGFuZ2VzLmFwcGVuZChub2RlQ2hhbmdlRm9yT2JqZWN0KCpheE9iamVjdCwgYXhQYXJlbnRJRCwg
dHJ1ZSwgdXBkYXRlTm9kZU1hcCkpOworICAgICAgICBhdXRvIGNoYW5nZSA9IG5vZGVDaGFuZ2VG
b3JPYmplY3QoKmF4T2JqZWN0LCBheFBhcmVudElELCB0cnVlLCB1cGRhdGVOb2RlTWFwKTsKKyAg
ICAgICAgaWRzQmVpbmdDaGFuZ2VkLmFkZChjaGFuZ2UuaXNvbGF0ZWRPYmplY3QtPm9iamVjdElE
KCkpOworICAgICAgICBjaGFuZ2VzLmFwcGVuZChXVEZNb3ZlKGNoYW5nZSkpOwogCiAgICAgICAg
IGlmIChheFBhcmVudCkKICAgICAgICAgICAgIG1fbm9kZU1hcC5zZXQoYXhQYXJlbnQtPm9iamVj
dElEKCksIGF4UGFyZW50LT5jaGlsZHJlbklEcygpKTsKQEAgLTM3MSwzOCArMzc1LDQ0IEBAIHZv
aWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuKEFYQ29yZU9iamVjdCYgYXhPYmplY3Qp
CiAgICAgaWYgKCFheE9iamVjdC5kb2N1bWVudCgpIHx8ICFheE9iamVjdC5kb2N1bWVudCgpLT5o
YXNMaXZpbmdSZW5kZXJUcmVlKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEhhc2hTZXQ8QVhJ
RD4gaWRzQmVpbmdDaGFuZ2VkOwogICAgIC8vIHVwZGF0ZUNoaWxkcmVuIG1heSBiZSBjYWxsZWQg
YXMgdGhlIHJlc3VsdCBvZiBhIGNoaWxkcmVuIGNoYW5nZWQKICAgICAvLyBub3RpZmljYXRpb24g
Zm9yIGFuIGF4T2JqZWN0IHRoYXQgaGFzIG5vIGFzc29jaWF0ZWQgaXNvbGF0ZWQgb2JqZWN0Lgog
ICAgIC8vIEFuIGV4YW1wbGUgb2YgdGhpcyBpcyB3aGVuIGFuIGVtcHR5IGVsZW1lbnQgc3VjaCBh
cyBhIDxjYW52YXM+IG9yIDxkaXY+CiAgICAgLy8gaXMgYWRkZWQgYSBuZXcgY2hpbGQuIFRodXMg
YWRkIHRoZSBhbmNlc3RyeSB0aGF0IGNvbm5lY3RzIHRoZSBhc3NvY2lhdGVkCiAgICAgLy8gaXNv
bGF0ZWQgb2JqZWN0IHRvIHRoZSBjbG9zZXN0IGV4aXN0aW5nIGFuY2VzdG9yLgotICAgIFZlY3Rv
cjxOb2RlQ2hhbmdlPiBjaGFuZ2VzID0gbm9kZUFuY2VzdHJ5Q2hhbmdlcyhheE9iamVjdCk7Cisg
ICAgVmVjdG9yPE5vZGVDaGFuZ2U+IGNoYW5nZXMgPSBub2RlQW5jZXN0cnlDaGFuZ2VzKGF4T2Jq
ZWN0LCBpZHNCZWluZ0NoYW5nZWQpOwogCiAgICAgYXV0byBvbGRDaGlsZHJlbklEcyA9IG1fbm9k
ZU1hcC5nZXQoYXhPYmplY3Qub2JqZWN0SUQoKSk7CiAKLSAgICBjb25zdCBhdXRvJiBheENoaWxk
cmVuID0gYXhPYmplY3QuY2hpbGRyZW4oKTsKKyAgICBjb25zdCBhdXRvJiBuZXdDaGlsZHJlbiA9
IGF4T2JqZWN0LmNoaWxkcmVuKCk7CiAgICAgYXV0byBuZXdDaGlsZHJlbklEcyA9IGF4T2JqZWN0
LmNoaWxkcmVuSURzKGZhbHNlKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXhDaGls
ZHJlbi5zaXplKCk7ICsraSkgewotICAgICAgICBBU1NFUlQoYXhDaGlsZHJlbltpXS0+b2JqZWN0
SUQoKSA9PSBuZXdDaGlsZHJlbklEc1tpXSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
ZXdDaGlsZHJlbi5zaXplKCk7ICsraSkgeworICAgICAgICBBU1NFUlQobmV3Q2hpbGRyZW5baV0t
Pm9iamVjdElEKCkgPT0gbmV3Q2hpbGRyZW5JRHNbaV0pOwogICAgICAgICBBU1NFUlQobmV3Q2hp
bGRyZW5JRHNbaV0uaXNWYWxpZCgpKTsKICAgICAgICAgc2l6ZV90IGluZGV4ID0gb2xkQ2hpbGRy
ZW5JRHMuZmluZChuZXdDaGlsZHJlbklEc1tpXSk7CiAgICAgICAgIGlmIChpbmRleCAhPSBub3RG
b3VuZCkKICAgICAgICAgICAgIG9sZENoaWxkcmVuSURzLnJlbW92ZShpbmRleCk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgLy8gVGhpcyBpcyBhIG5ldyBjaGlsZCwgYWRkIGl0IHRvIHRo
ZSB0cmVlLgotICAgICAgICAgICAgQVhMT0coIkFkZGluZyBhIG5ldyBjaGlsZCBmb3I6Iik7Ci0g
ICAgICAgICAgICBBWExPRyhheENoaWxkcmVuW2ldKTsKLSAgICAgICAgICAgIGNvbGxlY3ROb2Rl
Q2hhbmdlc0ZvclN1YnRyZWUoKmF4Q2hpbGRyZW5baV0sIGF4T2JqZWN0Lm9iamVjdElEKCksIHRy
dWUsIGNoYW5nZXMpOworICAgICAgICAgICAgQVhMT0cobWFrZVN0cmluZygiQVhJRCAiLCBheE9i
amVjdC5vYmplY3RJRCgpLmxvZ2dpbmdTdHJpbmcoKSwgIiBnYWluaW5nIG5ldyBzdWJ0cmVlLCBz
dGFydGluZyBhdCBJRCAiLCBuZXdDaGlsZHJlbltpXS0+b2JqZWN0SUQoKS5sb2dnaW5nU3RyaW5n
KCksICI6IikpOworICAgICAgICAgICAgQVhMT0cobmV3Q2hpbGRyZW5baV0pOworICAgICAgICAg
ICAgY29sbGVjdE5vZGVDaGFuZ2VzRm9yU3VidHJlZSgqbmV3Q2hpbGRyZW5baV0sIGF4T2JqZWN0
Lm9iamVjdElEKCksIHRydWUsIGNoYW5nZXMsICZpZHNCZWluZ0NoYW5nZWQpOwogICAgICAgICB9
CiAgICAgfQotCiAgICAgbV9ub2RlTWFwLnNldChheE9iamVjdC5vYmplY3RJRCgpLCBuZXdDaGls
ZHJlbklEcyk7CiAKICAgICAvLyBXaGF0IGlzIGxlZnQgaW4gb2xkQ2hpbGRyZW5JRHMgYXJlIHRo
ZSBJRHMgdGhhdCBhcmUgbm8gbG9uZ2VyIGNoaWxkcmVuIG9mIGF4T2JqZWN0LgogICAgIC8vIFRo
dXMsIHJlbW92ZSB0aGVtIGZyb20gbV9ub2RlTWFwIGFuZCBxdWV1ZSB0aGVtIHRvIGJlIHJlbW92
ZWQgZnJvbSB0aGUgdHJlZS4KLSAgICBmb3IgKEFYSUQmIGF4SUQgOiBvbGRDaGlsZHJlbklEcykK
LSAgICAgICAgcmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKGF4SUQpOworICAgIGZvciAoQVhJRCYg
YXhJRCA6IG9sZENoaWxkcmVuSURzKSB7CisgICAgICAgIC8vIEhvd2V2ZXIsIHdlIGRvbid0IHdh
bnQgdG8gcmVtb3ZlIHN1YnRyZWVzIGZyb20gdGhlIG5vZGVtYXAgdGhhdCBhcmUgcGFydCBvZiB0
aGUgdG8tYmUtcXVldWVkIG5vZGUgY2hhbmdlcyAoaS5lIHRob3NlIGluIGBpZHNCZWluZ0NoYW5n
ZWRgKS4KKyAgICAgICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgd2hlbiBhIG5vZGUgbW92ZXMgdG8g
YSBkaWZmZXJlbnQgcGFydCBvZiB0aGUgdHJlZSByYXRoZXIgdGhhbiBiZWluZyBkZWxldGVkIC0t
IGZvciBleGFtcGxlOgorICAgICAgICAvLyAgIDEuIE9iamVjdCAxMjMgaXMgc2xhdGVkIHRvIGJl
IGEgY2hpbGQgb2YgdGhpcyBvYmplY3QgKGkuZS4gaW4gbmV3Q2hpbGRyZW4pLCBhbmQgd2UgY29s
bGVjdCBub2RlIGNoYW5nZXMgZm9yIGl0LgorICAgICAgICAvLyAgIDIuIE9iamVjdCAxMjMgaXMg
Y3VycmVudGx5IGEgbWVtYmVyIG9mIGEgc3VidHJlZSBvZiBzb21lIG90aGVyIG9iamVjdCBpbiBv
bGRDaGlsZHJlbklEcy4KKyAgICAgICAgLy8gICAzLiBUaHVzLCB3ZSBkb24ndCB3YW50IHRvIGRl
bGV0ZSBPYmplY3QgMTIzIGZyb20gdGhlIG5vZGVtYXAsIGluc3RlYWQgYWxsb3dpbmcgaXQgdG8g
YmUgbW92ZWQuCisgICAgICAgIHJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChheElELCBpZHNCZWlu
Z0NoYW5nZWQpOworICAgIH0KICAgICBxdWV1ZUNoYW5nZXNBbmRSZW1vdmFscyhjaGFuZ2VzLCBv
bGRDaGlsZHJlbklEcyk7CiB9CiAKQEAgLTQ3MSw3ICs0ODEsNyBAQCB2b2lkIEFYSXNvbGF0ZWRU
cmVlOjpyZW1vdmVOb2RlKEFYSUQgYXhJRCkKICAgICBtX3BlbmRpbmdOb2RlUmVtb3ZhbHMuYXBw
ZW5kKGF4SUQpOwogfQogCi12b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVlRnJvbU5v
ZGVNYXAoQVhJRCBheElEKQordm9pZCBBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21O
b2RlTWFwKEFYSUQgYXhJRCwgY29uc3QgSGFzaFNldDxBWElEPiYgaWRzVG9LZWVwKQogewogICAg
IEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVlIik7CiAgICAgQVhMT0cobWFr
ZVN0cmluZygiUmVtb3Zpbmcgc3VidHJlZSBmb3IgYXhJRCAiLCBheElELmxvZ2dpbmdTdHJpbmco
KSkpOwpAQCAtNDgwLDcgKzQ5MCw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRy
ZWVGcm9tTm9kZU1hcChBWElEIGF4SUQpCiAgICAgVmVjdG9yPEFYSUQ+IHJlbW92YWxzID0geyBh
eElEIH07CiAgICAgd2hpbGUgKHJlbW92YWxzLnNpemUoKSkgewogICAgICAgICBBWElEIGF4SUQg
PSByZW1vdmFscy50YWtlTGFzdCgpOwotICAgICAgICBpZiAoIWF4SUQuaXNWYWxpZCgpKQorICAg
ICAgICBpZiAoIWF4SUQuaXNWYWxpZCgpIHx8IGlkc1RvS2VlcC5jb250YWlucyhheElEKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8gaXQgPSBtX25vZGVNYXAuZmluZChh
eElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGM0Y2UxYmQ0ZjNiYzE2N2I0Yjk4MzhkMzMz
OGI5YmU4M2VhMjMyZTMuLjA1NDYwNGZmMDM3YWUyZjdkOGVhMTVkZTdmZjU1MDdjZTM2YjE5NmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMzYyLDcgKzM2Miw3IEBAIHB1YmxpYzoKICAgICAv
LyBSZW1vdmVzIHRoZSBnaXZlbiBub2RlIGxlYXZpbmcgYWxsIGRlc2NlbmRhbnRzIGFsb25lLgog
ICAgIHZvaWQgcmVtb3ZlTm9kZShBWElEKTsKICAgICAvLyBSZW1vdmVzIHRoZSBnaXZlbiBub2Rl
IGFuZCBhbGwgaXRzIGRlc2NlbmRhbnRzLgotICAgIHZvaWQgcmVtb3ZlU3VidHJlZUZyb21Ob2Rl
TWFwKEFYSUQpOworICAgIHZvaWQgcmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKEFYSUQsIGNvbnN0
IEhhc2hTZXQ8QVhJRD4mID0geyB9KTsKIAogICAgIC8vIEJvdGggc2V0Um9vdE5vZGVJRCBhbmQg
c2V0Rm9jdXNlZE5vZGVJRCBhcmUgY2FsbGVkIGR1cmluZyB0aGUgZ2VuZXJhdGlvbgogICAgIC8v
IG9mIHRoZSBJc29sYXRlZFRyZWUuCkBAIC0zODYsMTAgKzM4NiwxMCBAQCBwcml2YXRlOgogCiAg
ICAgLy8gQ2FsbGVkIG9uIG1haW4gdGhyZWFkLgogICAgIE5vZGVDaGFuZ2Ugbm9kZUNoYW5nZUZv
ck9iamVjdChBWENvcmVPYmplY3QmLCBBWElEIHBhcmVudElELCBib29sIGF0dGFjaFdyYXBwZXIg
PSB0cnVlLCBib29sIHVwZGF0ZU5vZGVNYXAgPSB0cnVlKTsKLSAgICB2b2lkIGNvbGxlY3ROb2Rl
Q2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRh
Y2hXcmFwcGVyLCBWZWN0b3I8Tm9kZUNoYW5nZT4mKTsKKyAgICB2b2lkIGNvbGxlY3ROb2RlQ2hh
bmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hX
cmFwcGVyLCBWZWN0b3I8Tm9kZUNoYW5nZT4mLCBIYXNoU2V0PEFYSUQ+KiA9IG51bGxwdHIpOwog
ICAgIHZvaWQgcXVldWVDaGFuZ2UoY29uc3QgTm9kZUNoYW5nZSYpIFdURl9SRVFVSVJFU19MT0NL
KG1fY2hhbmdlTG9nTG9jayk7CiAgICAgdm9pZCBxdWV1ZUNoYW5nZXNBbmRSZW1vdmFscyhjb25z
dCBWZWN0b3I8Tm9kZUNoYW5nZT4mLCBjb25zdCBWZWN0b3I8QVhJRD4mID0geyB9KTsKLSAgICBW
ZWN0b3I8Tm9kZUNoYW5nZT4gbm9kZUFuY2VzdHJ5Q2hhbmdlcyhBWENvcmVPYmplY3QmKTsKKyAg
ICBWZWN0b3I8Tm9kZUNoYW5nZT4gbm9kZUFuY2VzdHJ5Q2hhbmdlcyhBWENvcmVPYmplY3QmLCBI
YXNoU2V0PEFYSUQ+Jik7CiAKICAgICBBWElzb2xhdGVkVHJlZUlEIG1fdHJlZUlEOwogICAgIEFY
T2JqZWN0Q2FjaGUqIG1fYXhPYmplY3RDYWNoZSB7IG51bGxwdHIgfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>