<?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>217093</bug_id>
          
          <creation_ts>2020-09-29 10:21:24 -0700</creation_ts>
          <short_desc>Fix for multiple layout tests in accessibility isolated tree mode.</short_desc>
          <delta_ts>2020-09-30 09:41:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Andres Gonzalez">andresg_22</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>darin</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>1692989</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-09-29 10:21:24 -0700</bug_when>
    <thetext>Fix for multiple layout tests in accessibility isolated tree mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693013</commentid>
    <comment_count>1</comment_count>
      <attachid>410018</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-09-29 10:58:09 -0700</bug_when>
    <thetext>Created attachment 410018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693031</commentid>
    <comment_count>2</comment_count>
      <attachid>410018</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-09-29 11:17:38 -0700</bug_when>
    <thetext>Comment on attachment 410018
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=410018&amp;action=review

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:212
&gt; +        nodeChange.m_wrapper = axObject.wrapper();

I feel like accessing the internal m_wrapper variable directly is a bit of bad form. can we add a setter method to set this value?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693038</commentid>
    <comment_count>3</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-09-29 11:28:20 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #2)
&gt; Comment on attachment 410018 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=410018&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:212
&gt; &gt; +        nodeChange.m_wrapper = axObject.wrapper();
&gt; 
&gt; I feel like accessing the internal m_wrapper variable directly is a bit of
&gt; bad form. can we add a setter method to set this value?

Actually I was going the opposite direction based on a comment by Darin Adler in another review that we don&apos;t use m_ prefix for structure member variables. I don&apos;t think it is common either to have setters/getters for structure variables which are public. Unless you feel strongly about this, I think we don&apos;t need to make this structure any less transparent, after all it is just an object and its wrapper, it could even be a pair.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693074</commentid>
    <comment_count>4</comment_count>
      <attachid>410018</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-09-29 12:18:21 -0700</bug_when>
    <thetext>Comment on attachment 410018
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=410018&amp;action=review

&gt;&gt;&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:212
&gt;&gt;&gt; +        nodeChange.m_wrapper = axObject.wrapper();
&gt;&gt; 
&gt;&gt; I feel like accessing the internal m_wrapper variable directly is a bit of bad form. can we add a setter method to set this value?
&gt; 
&gt; Actually I was going the opposite direction based on a comment by Darin Adler in another review that we don&apos;t use m_ prefix for structure member variables. I don&apos;t think it is common either to have setters/getters for structure variables which are public. Unless you feel strongly about this, I think we don&apos;t need to make this structure any less transparent, after all it is just an object and its wrapper, it could even be a pair.

ok yea, we should just rename m_wrapper to wrapper</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693133</commentid>
    <comment_count>5</comment_count>
      <attachid>410018</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-29 13:52:04 -0700</bug_when>
    <thetext>Comment on attachment 410018
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=410018&amp;action=review

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:200
&gt; -    setProperty(AXPropertyName::ComputedRoleString, object.computedRoleString());
&gt; +    setProperty(AXPropertyName::ComputedRoleString, object.computedRoleString().isolatedCopy());

We keep getting this wrong. What can we do to make this easier to get right?

&gt;&gt;&gt;&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:212
&gt;&gt;&gt;&gt; +        nodeChange.m_wrapper = axObject.wrapper();
&gt;&gt;&gt; 
&gt;&gt;&gt; I feel like accessing the internal m_wrapper variable directly is a bit of bad form. can we add a setter method to set this value?
&gt;&gt; 
&gt;&gt; Actually I was going the opposite direction based on a comment by Darin Adler in another review that we don&apos;t use m_ prefix for structure member variables. I don&apos;t think it is common either to have setters/getters for structure variables which are public. Unless you feel strongly about this, I think we don&apos;t need to make this structure any less transparent, after all it is just an object and its wrapper, it could even be a pair.
&gt; 
&gt; ok yea, we should just rename m_wrapper to wrapper

In fact, this brief discussion/misunderstanding demonstrates the value of leaving &quot;m_&quot; out of the names of public data members.

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:345
&gt; +        NodeChange(AXIsolatedObject&amp;);
&gt;          NodeChange(AXIsolatedObject&amp;, AccessibilityObjectWrapper*);
&gt;          NodeChange(const NodeChange&amp;);

Do we really need these? I’d rather we use aggregate style initialization rather than constructors, and let the copy constructor get generated for us (and a move constructor too). We should give that a try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693244</commentid>
    <comment_count>6</comment_count>
      <attachid>410074</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-09-29 17:46:41 -0700</bug_when>
    <thetext>Created attachment 410074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693246</commentid>
    <comment_count>7</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-09-29 17:49:13 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #4)
&gt; Comment on attachment 410018 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=410018&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:212
&gt; &gt;&gt;&gt; +        nodeChange.m_wrapper = axObject.wrapper();
&gt; &gt;&gt; 
&gt; &gt;&gt; I feel like accessing the internal m_wrapper variable directly is a bit of bad form. can we add a setter method to set this value?
&gt; &gt; 
&gt; &gt; Actually I was going the opposite direction based on a comment by Darin Adler in another review that we don&apos;t use m_ prefix for structure member variables. I don&apos;t think it is common either to have setters/getters for structure variables which are public. Unless you feel strongly about this, I think we don&apos;t need to make this structure any less transparent, after all it is just an object and its wrapper, it could even be a pair.
&gt; 
&gt; ok yea, we should just rename m_wrapper to wrapper

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693249</commentid>
    <comment_count>8</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-09-29 17:53:01 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 410018 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=410018&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:200
&gt; &gt; -    setProperty(AXPropertyName::ComputedRoleString, object.computedRoleString());
&gt; &gt; +    setProperty(AXPropertyName::ComputedRoleString, object.computedRoleString().isolatedCopy());
&gt; 
&gt; We keep getting this wrong. What can we do to make this easier to get right?

I will try the suggestion you gave me some time ago about using a template class to do this instead of having to isolatedCopy each individual string. I just put it in the back burner for more pressing issues, but it&apos;s time I try that to avoid these errors.

&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:212
&gt; &gt;&gt;&gt;&gt; +        nodeChange.m_wrapper = axObject.wrapper();
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; I feel like accessing the internal m_wrapper variable directly is a bit of bad form. can we add a setter method to set this value?
&gt; &gt;&gt; 
&gt; &gt;&gt; Actually I was going the opposite direction based on a comment by Darin Adler in another review that we don&apos;t use m_ prefix for structure member variables. I don&apos;t think it is common either to have setters/getters for structure variables which are public. Unless you feel strongly about this, I think we don&apos;t need to make this structure any less transparent, after all it is just an object and its wrapper, it could even be a pair.
&gt; &gt; 
&gt; &gt; ok yea, we should just rename m_wrapper to wrapper
&gt; 
&gt; In fact, this brief discussion/misunderstanding demonstrates the value of
&gt; leaving &quot;m_&quot; out of the names of public data members.

Done, removed the m_ prefix.
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:345
&gt; &gt; +        NodeChange(AXIsolatedObject&amp;);
&gt; &gt;          NodeChange(AXIsolatedObject&amp;, AccessibilityObjectWrapper*);
&gt; &gt;          NodeChange(const NodeChange&amp;);
&gt; 
&gt; Do we really need these? I’d rather we use aggregate style initialization
&gt; rather than constructors, and let the copy constructor get generated for us
&gt; (and a move constructor too). We should give that a try.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693408</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-30 09:40:32 -0700</bug_when>
    <thetext>Committed r267794: &lt;https://trac.webkit.org/changeset/267794&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410074.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693409</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-30 09:41:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/69795437&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410018</attachid>
            <date>2020-09-29 10:58:09 -0700</date>
            <delta_ts>2020-09-29 17:46:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217093-20200929135808.patch</filename>
            <type>text/plain</type>
            <size>15066</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc0YmVjMmJiMjQxNjhh
N2FkMDIxMDc4YTUwOWJiZmE3NGJjYjA5NS4uZWE4Njk2ZGIzZDlhOGIyM2IxZDA4YWQ5MWYzZDI1
NDY1NDE4ZDdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA5LTI5ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggZm9yIG11
bHRpcGxlIGxheW91dCB0ZXN0cyBpbiBhY2Nlc3NpYmlsaXR5IGlzb2xhdGVkIHRyZWUgbW9kZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzA5Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3Ig
dGhlIGZvbGxvd2luZyBsYXlvdXQgdGVzdHMgaW4gYWNjZXNzaWJpbGl0eSBpc29sYXRlZCB0cmVl
IG1vZGU6CisgICAgICAgIGFjY2Vzc2liaWxpdHkvYXJpYS1tZW51YmFyLW1lbnVpdGVtcy5odG1s
CisgICAgICAgIGFjY2Vzc2liaWxpdHkvYXJpYS1vcmllbnRhdGlvbi5odG1sCisgICAgICAgIGFj
Y2Vzc2liaWxpdHkvc2V0LXNlbGVjdGVkLWVkaXRhYmxlLmh0bWwKKyAgICAgICAgYWNjZXNzaWJp
bGl0eS9yZW1vdmVkLWNvbnRpbnVhdGlvbi1lbGVtZW50LWNhdXNlcy1jcmFzaC5odG1sCisKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlKToKKyAgICAgICAgVXBkYXRl
IHRoZSBpc29sYXRlZCB0cmVlIHdoZW4gdGhlIGlkIGF0dHJpYnV0ZSBpcyBtb2RpZmllZC4gVGhp
cyBpcworICAgICAgICBuZWVkZWQgZm9yIGFsbCB0ZXN0cyB0aGF0IGFzc2lnbiBhbiBpZCBhdHRy
aWJ1dGUgdG8gYW4gZWxlbWVudCBpbiBKUywKKyAgICAgICAgaW4gb3JkZXIgdG8gcmV0cmlldmUg
aXRzIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHZpYSBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNj
ZXNzaWJsZUVsZW1lbnRCeUlkLgorICAgICAgICBJbiBhZGRpdGlvbiwgY2hhbmdlZCB0aGUgaGFu
ZGxpbmcgb2YgdGhlIGxhbmcgYXR0cmlidXRlIHRvIGp1c3QgdXBkYXRlCisgICAgICAgIHRoZSBp
c29sYXRlZCB0cmVlIGluc3RlYWQgb2YgcG9zdGluZyBhIG5vdGlmaWNhdGlvbiB3aGljaCBpcyBu
b3QgdXNlZC4KKworICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6dXBkYXRlSXNvbGF0
ZWRUcmVlKToKKyAgICAgICAgVXBkYXRlIHRoZSBBWElzb2xhdGVkT2JqZWN0IElkZW50aWZpZXJB
dHRyaWJ1dGUuCisgICAgICAgIFJlcGxhY2VkIHRoZSB1cGRhdGVOb2RlQ2hlY2tlZFN0YXRlIG1l
dGhvZCB3aXRoIHRoZSBtb3JlIGdlbmVyYWwgdXBkYXRlTm9kZVByb3BlcnR5LgorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YSk6CisgICAgICAgIFRoZSBD
b21wdXRlZFJvbGVTdHJpbmcgcHJvcGVydHkgbmVlZHMgdG8gYmUgaXNvbGF0ZWRDb3BpZWQuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Tm9kZUNoYW5nZTo6Tm9kZUNoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKToK
KyAgICAgICAgSW5zdGVhZCBvZiBoYXZpbmcgYW4gb3V0IHBhcmFtZXRlciBpbiBjcmVhdGVTdWJ0
cmVlIHRvIGNvbGxlY3QgdGhlIE5vZGVDaGFuZ2VzCisgICAgICAgIHRoYXQgbmVlZCB0byBiZSBh
ZGRlZCB0byB0aGUgdHJlZSwgd2Ugbm93IGFkZCBlYWNoIGluZGl2aWR1YWwgcGVuZGluZworICAg
ICAgICBhcHBlbmQgYXMgdGhlIGxpdmUgdHJlZSBpcyB0cmF2ZXJzZWQuIFRoaXMgc29sdmVzIHRo
ZSBpc3N1ZSBtYW5pZmVzdCBpbgorICAgICAgICBzb21lIHRlc3RzIHdoZXJlIGR1cmluZyB0aGUg
Y3JlYXRpb24gb2YgdGhlIHN1YnRyZWUsIGFwcGx5UGVuZGluZ0NoYW5nZXMKKyAgICAgICAgd2Fz
IGNhbGxlZCBhbmQgbm9kZSBwcm9wZXJ0aWVzIHdlcmUgbm90IHVwZGF0ZWQgYmVjYXVzZSB0aGUg
bm9kZXMgd2VyZQorICAgICAgICBub3QgYWRkZWQgdG8gdGhlIHRyZWUgeWV0LgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmNyZWF0ZVN1YnRyZWUpOiBTZWUgYWJvdmUgY29tbWVu
dCBmb3IgZ2VuZXJhdGVTdWJ0cmVlLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6
OnVwZGF0ZU5vZGVQcm9wZXJ0eSk6IFJlcGxhY2VzIHVwZGF0ZU5vZGVDaGVja2VkU3RhdGUKKyAg
ICAgICAgYW5kIGFsbG93cyB0byB1cGRhdGUgYW55IGluZGl2aWR1YWwgcHJvcGVydHkuCisgICAg
ICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cmVtb3ZlTm9kZSk6IEFsc28gcmVtb3ZlIHRo
ZSBlbnRyeSBmcm9tIG1fbm9kZU1hcC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVl
OjpyZW1vdmVTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRh
dGVOb2RlQ2hlY2tlZFN0YXRlKTogQmVjYW1lIHVwZGF0ZU5vZGVQcm9wZXJ0eS4KKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjphcHBlbmROb2RlQ2hhbmdlcyk6IERlbGV0ZWQsIG5v
dCBuZWVkZWQgYW55IGxvbmdlci4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5oOgorCiAyMDIwLTA5LTI1ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdA
aWdhbGlhLmNvbT4KIAogICAgICAgICBCdWcgMjE2NzAyIC0gSW1wbGVtZW50IHRoZSBDU1MgbWF0
aC1zdHlsZSBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAKaW5kZXggMTNlZWMyYTM1NTM2MmMxM2I4MjVmNTgzYzUzYjM3ZWFlMDE5NmJk
Yi4uZGYzZmY0YmNkZjFiZTM4ZWJmOTNiOWNjYmEyYWJhNzYxMDllNDAzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xNzE1LDggKzE3
MTUsMTIgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIEVsZW1lbnQKICAgICAgICAgbGFiZWxDaGFuZ2VkKGVs
ZW1lbnQpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IHRhYmluZGV4QXR0cikKICAgICAgICAg
Y2hpbGRyZW5DaGFuZ2VkKGVsZW1lbnQtPnBhcmVudE5vZGUoKSwgZWxlbWVudCk7CisjaWYgRU5B
QkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9
PSBsYW5nQXR0cikKLSAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWE9iamVjdENh
Y2hlOjpBWExhbmd1YWdlQ2hhbmdlZCk7CisgICAgICAgIHVwZGF0ZUlzb2xhdGVkVHJlZShnZXQo
ZWxlbWVudCksIEFYT2JqZWN0Q2FjaGU6OkFYTGFuZ3VhZ2VDaGFuZ2VkKTsKKyAgICBlbHNlIGlm
IChhdHRyTmFtZSA9PSBpZEF0dHIpCisgICAgICAgIHVwZGF0ZUlzb2xhdGVkVHJlZShnZXQoZWxl
bWVudCksIEFYT2JqZWN0Q2FjaGU6OkFYSWRBdHRyaWJ1dGVDaGFuZ2VkKTsKKyNlbmRpZgogCiAg
ICAgaWYgKCFhdHRyTmFtZS5sb2NhbE5hbWUoKS5zdHJpbmcoKS5zdGFydHNXaXRoKCJhcmlhLSIp
KQogICAgICAgICByZXR1cm47CkBAIC0zMTgwLDcgKzMxODQsMTAgQEAgdm9pZCBBWE9iamVjdENh
Y2hlOjp1cGRhdGVJc29sYXRlZFRyZWUoQVhDb3JlT2JqZWN0JiBvYmplY3QsIEFYTm90aWZpY2F0
aW9uIG5vdGkKIAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2FzZSBBWENoZWNr
ZWRTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIHRyZWUtPnVwZGF0ZU5vZGVDaGVja2VkU3RhdGUob2Jq
ZWN0KTsKKyAgICAgICAgdHJlZS0+dXBkYXRlTm9kZVByb3BlcnR5KG9iamVjdCwgQVhQcm9wZXJ0
eU5hbWU6OklzQ2hlY2tlZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVhJZEF0dHJpYnV0
ZUNoYW5nZWQ6CisgICAgICAgIHRyZWUtPnVwZGF0ZU5vZGVQcm9wZXJ0eShvYmplY3QsIEFYUHJv
cGVydHlOYW1lOjpJZGVudGlmaWVyQXR0cmlidXRlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAgIGNhc2UgQVhTZWxlY3RlZENoaWxkcmVu
Q2hhbmdlZDoKQEAgLTMyMDEsNiArMzIwOCwxMiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnVwZGF0
ZUlzb2xhdGVkVHJlZShBWENvcmVPYmplY3QmIG9iamVjdCwgQVhOb3RpZmljYXRpb24gbm90aQog
ICAgIH0KIH0KIAordm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUoQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKK3sKKyAgICBpZiAo
b2JqZWN0KQorICAgICAgICB1cGRhdGVJc29sYXRlZFRyZWUoKm9iamVjdCwgbm90aWZpY2F0aW9u
KTsKK30KKwogdm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUoQVhDb3JlT2Jq
ZWN0JiBvYmplY3QsIEFYTG9hZGluZ0V2ZW50IG5vdGlmaWNhdGlvbikKIHsKICAgICBBWFRSQUNF
KCJBWE9iamVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUiKTsKQEAgLTMyNDQsNyArMzI1Nywx
MCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUlzb2xhdGVkVHJlZShjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPFJlZlB0cjxBWENvcmVPYmplYwogCiAgICAgICAgIHN3aXRjaCAobm90aWZpY2F0
aW9uLnNlY29uZCkgewogICAgICAgICBjYXNlIEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKLSAgICAg
ICAgICAgIHRyZWUtPnVwZGF0ZU5vZGVDaGVja2VkU3RhdGUoKm5vdGlmaWNhdGlvbi5maXJzdCk7
CisgICAgICAgICAgICB0cmVlLT51cGRhdGVOb2RlUHJvcGVydHkoKm5vdGlmaWNhdGlvbi5maXJz
dCwgQVhQcm9wZXJ0eU5hbWU6OklzQ2hlY2tlZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBBWElkQXR0cmlidXRlQ2hhbmdlZDoKKyAgICAgICAgICAgIHRyZWUtPnVwZGF0ZU5v
ZGVQcm9wZXJ0eSgqbm90aWZpY2F0aW9uLmZpcnN0LCBBWFByb3BlcnR5TmFtZTo6SWRlbnRpZmll
ckF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBWEFjdGl2ZURl
c2NlbmRhbnRDaGFuZ2VkOgogICAgICAgICBjYXNlIEFYU2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDdm
ZTJlYzE5NTFjNjI1NmFkZTYwM2FjNmRkNTQyMjlkOTIzMzMxNzQuLmNiM2NjODlmOTI5ODAwZmE4
ODY2YzIxZDJjMzEzZDlmOThmZDhiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oCkBAIC0yNzYsNiArMjc2LDcgQEAgcHVibGljOgogICAgICAgICBB
WEN1cnJlbnRDaGFuZ2VkLAogICAgICAgICBBWERpc2FibGVkU3RhdGVDaGFuZ2VkLAogICAgICAg
ICBBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkLAorICAgICAgICBBWElkQXR0cmlidXRlQ2hhbmdl
ZCwKICAgICAgICAgQVhMYW5ndWFnZUNoYW5nZWQsCiAgICAgICAgIEFYTGF5b3V0Q29tcGxldGUs
CiAgICAgICAgIEFYTG9hZENvbXBsZXRlLApAQCAtMzY5LDYgKzM3MCw3IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gZ2VuZXJhdGVJc29sYXRlZFRyZWUoUGFnZUlk
ZW50aWZpZXIsIERvY3VtZW50Jik7CiAgICAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBnZXRPckNy
ZWF0ZUlzb2xhdGVkVHJlZSgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlSXNvbGF0ZWRUcmVlKEFY
Q29yZU9iamVjdCYsIEFYTm90aWZpY2F0aW9uKTsKKyAgICB2b2lkIHVwZGF0ZUlzb2xhdGVkVHJl
ZShBWENvcmVPYmplY3QqLCBBWE5vdGlmaWNhdGlvbik7CiAgICAgdm9pZCB1cGRhdGVJc29sYXRl
ZFRyZWUoQVhDb3JlT2JqZWN0JiwgQVhMb2FkaW5nRXZlbnQpOwogICAgIHZvaWQgdXBkYXRlSXNv
bGF0ZWRUcmVlKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPEFYQ29yZU9iamVjdD4sIEFY
Tm90aWZpY2F0aW9uPj4mKTsKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplU2Vjb25kYXJ5QVhU
aHJlYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggM2E4ZTJmNGEyYmIzNjFl
YmE1MzAxMDAwZjQyZTU3ZmRkMmIzM2FlMi4uODI1NmRhZTJjODk1ZTZmZWUzYzc0MWI2NGQ3MDMx
YmMxYzgyM2FmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAgLTE5Nyw3ICsxOTcs
NyBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKEFYQ29y
ZU9iamVjdCYgb2JqZWN0LCBib29sIGlzUm9vdAogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpTdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlLCBvYmplY3Quc3VwcG9ydHNFeHBhbmRlZFRl
eHRWYWx1ZSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNQcmVz
c0FjdGlvbiwgb2JqZWN0LnN1cHBvcnRzUHJlc3NBY3Rpb24oKSk7CiAgICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OkNsaWNrUG9pbnQsIG9iamVjdC5jbGlja1BvaW50KCkpOwotICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDb21wdXRlZFJvbGVTdHJpbmcsIG9iamVjdC5jb21w
dXRlZFJvbGVTdHJpbmcoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbXB1
dGVkUm9sZVN0cmluZywgb2JqZWN0LmNvbXB1dGVkUm9sZVN0cmluZygpLmlzb2xhdGVkQ29weSgp
KTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VmFsdWVBdXRvZmlsbEJ1dHRvblR5
cGUsIHN0YXRpY19jYXN0PGludD4ob2JqZWN0LnZhbHVlQXV0b2ZpbGxCdXR0b25UeXBlKCkpKTsK
ICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VVJMLCBvYmplY3QudXJsKCkuaXNvbGF0
ZWRDb3B5KCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBY2Nlc3NLZXksIG9i
amVjdC5hY2Nlc3NLZXkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXggNTJjNjNjNTQ1
ZGM0OWUyNDYxZjk4NjRiNzU5NDc2NjU5MmI4OWI2OS4uZjY4YTEyNjIzNGY3NzA1ZjFhOTRhZDA1
NzkwMGNiNDcyMTk3Y2I4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtNDMsNiArNDMs
MTEgQEAgc3RhdGljIHVuc2lnbmVkIG5ld1RyZWVJRCgpCiAgICAgcmV0dXJuICsrc19jdXJyZW50
VHJlZUlEOwogfQogCitBWElzb2xhdGVkVHJlZTo6Tm9kZUNoYW5nZTo6Tm9kZUNoYW5nZShBWElz
b2xhdGVkT2JqZWN0JiBpc29sYXRlZE9iamVjdCkKKyAgICA6IG1faXNvbGF0ZWRPYmplY3QoaXNv
bGF0ZWRPYmplY3QpCit7Cit9CisKIEFYSXNvbGF0ZWRUcmVlOjpOb2RlQ2hhbmdlOjpOb2RlQ2hh
bmdlKEFYSXNvbGF0ZWRPYmplY3QmIGlzb2xhdGVkT2JqZWN0LCBBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciogd3JhcHBlcikKICAgICA6IG1faXNvbGF0ZWRPYmplY3QoaXNvbGF0ZWRPYmplY3Qp
CiAgICAgLCBtX3dyYXBwZXIod3JhcHBlcikKQEAgLTE3NiwxOCArMTgxLDE4IEBAIHZvaWQgQVhJ
c29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZShBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWENv
cmVPYmplY3QqIGF4UGFyCiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3Vi
dHJlZSIpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBWZWN0b3I8Tm9kZUNo
YW5nZT4gbm9kZUNoYW5nZXM7Ci0gICAgYXV0byBvYmplY3QgPSBjcmVhdGVTdWJ0cmVlKGF4T2Jq
ZWN0LCBheFBhcmVudCA/IGF4UGFyZW50LT5vYmplY3RJRCgpIDogSW52YWxpZEFYSUQsIGF0dGFj
aFdyYXBwZXIsIG5vZGVDaGFuZ2VzKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1fY2hhbmdl
TG9nTG9jayB9OwotICAgIGFwcGVuZE5vZGVDaGFuZ2VzKFdURk1vdmUobm9kZUNoYW5nZXMpKTsK
KyAgICBpZiAoYXhPYmplY3Qub2JqZWN0SUQoKSA9PSBJbnZhbGlkQVhJRCkKKyAgICAgICAgcmV0
dXJuOwogCisgICAgYXV0byBvYmplY3QgPSBjcmVhdGVTdWJ0cmVlKGF4T2JqZWN0LCBheFBhcmVu
dCA/IGF4UGFyZW50LT5vYmplY3RJRCgpIDogSW52YWxpZEFYSUQsIGF0dGFjaFdyYXBwZXIpOwor
ICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAgICAgaWYgKCFheFBh
cmVudCkKICAgICAgICAgc2V0Um9vdE5vZGUob2JqZWN0LnB0cigpKTsKICAgICBlbHNlIGlmIChh
eFBhcmVudC0+b2JqZWN0SUQoKSAhPSBJbnZhbGlkQVhJRCkgLy8gTmVlZCB0byBjaGVjayBmb3Ig
dGhlIG9iamVjdElEIG9mIGF4UGFyZW50IGFnYWluIGJlY2F1c2UgaXQgbWF5IGhhdmUgYmVlbiBk
ZXRhY2hlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSB0cmVlLgogICAgICAgICB1cGRhdGVDaGlsZHJl
bklEcyhheFBhcmVudC0+b2JqZWN0SUQoKSwgYXhQYXJlbnQtPmNoaWxkcmVuSURzKCkpOwogfQog
Ci1SZWY8QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZVN1YnRyZWUoQVhD
b3JlT2JqZWN0JiBheE9iamVjdCwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyLCBW
ZWN0b3I8Tm9kZUNoYW5nZT4mIG5vZGVDaGFuZ2VzKQorUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IEFY
SXNvbGF0ZWRUcmVlOjpjcmVhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYSUQg
cGFyZW50SUQsIGJvb2wgYXR0YWNoV3JhcHBlcikKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVk
VHJlZTo6Y3JlYXRlU3VidHJlZSIpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC0x
OTksMjQgKzIwNCwyNSBAQCBSZWY8QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRlZFRyZWU6OmNy
ZWF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhJRAogICAgICAgICByZXR1cm4g
b2JqZWN0OwogICAgIH0KIAotICAgIGlmIChhdHRhY2hXcmFwcGVyKSB7CisgICAgTm9kZUNoYW5n
ZSBub2RlQ2hhbmdlKG9iamVjdCk7CisgICAgaWYgKGF0dGFjaFdyYXBwZXIpCiAgICAgICAgIG9i
amVjdC0+YXR0YWNoUGxhdGZvcm1XcmFwcGVyKGF4T2JqZWN0LndyYXBwZXIoKSk7Ci0gICAgICAg
IC8vIFNpbmNlIHRoaXMgb2JqZWN0IGhhcyBhbHJlYWR5IGFuIGF0dGFjaGVkIHdyYXBwZXIsIHNl
dCB0aGUgd3JhcHBlcgotICAgICAgICAvLyBpbiB0aGUgTm9kZUNoYW5nZSB0byBudWxsIHNvIHRo
YXQgaXQgaXMgbm90IHJlLWF0dGFjaGVkLgotICAgICAgICBub2RlQ2hhbmdlcy5hcHBlbmQoTm9k
ZUNoYW5nZShvYmplY3QsIG51bGxwdHIpKTsKLSAgICB9IGVsc2UgeworICAgIGVsc2UgewogICAg
ICAgICAvLyBTZXQgdGhlIHdyYXBwZXIgaW4gdGhlIE5vZGVDaGFuZ2Ugc28gdGhhdCBpdCBpcyBz
ZXQgb24gdGhlIEFYIHRocmVhZC4KLSAgICAgICAgbm9kZUNoYW5nZXMuYXBwZW5kKE5vZGVDaGFu
Z2Uob2JqZWN0LCBheE9iamVjdC53cmFwcGVyKCkpKTsKKyAgICAgICAgbm9kZUNoYW5nZS5tX3dy
YXBwZXIgPSBheE9iamVjdC53cmFwcGVyKCk7CiAgICAgfQogCisgICAgYXV0byBheENoaWxkcmVu
ID0gYXhPYmplY3QuY2hpbGRyZW4oKTsKICAgICBWZWN0b3I8QVhJRD4gY2hpbGRyZW5JRHM7Ci0g
ICAgZm9yIChjb25zdCBhdXRvJiBheENoaWxkIDogYXhPYmplY3QuY2hpbGRyZW4oKSkgewotICAg
ICAgICBhdXRvIGNoaWxkID0gY3JlYXRlU3VidHJlZSgqYXhDaGlsZCwgYXhPYmplY3Qub2JqZWN0
SUQoKSwgYXR0YWNoV3JhcHBlciwgbm9kZUNoYW5nZXMpOwotICAgICAgICBjaGlsZHJlbklEcy5h
cHBlbmQoY2hpbGQtPm9iamVjdElEKCkpOworICAgIGNoaWxkcmVuSURzLnJlc2VydmVDYXBhY2l0
eShheENoaWxkcmVuLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBheENoaWxkIDogYXhD
aGlsZHJlbikgeworICAgICAgICBhdXRvIGNoaWxkID0gY3JlYXRlU3VidHJlZSgqYXhDaGlsZCwg
YXhPYmplY3Qub2JqZWN0SUQoKSwgYXR0YWNoV3JhcHBlcik7CisgICAgICAgIGNoaWxkcmVuSURz
LnVuY2hlY2tlZEFwcGVuZChjaGlsZC0+b2JqZWN0SUQoKSk7CiAgICAgfQogCiAgICAgewogICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgICAgICBtX3Bl
bmRpbmdBcHBlbmRzLmFwcGVuZChXVEZNb3ZlKG5vZGVDaGFuZ2UpKTsKICAgICAgICAgdXBkYXRl
Q2hpbGRyZW5JRHMob2JqZWN0LT5vYmplY3RJRCgpLCBXVEZNb3ZlKGNoaWxkcmVuSURzKSk7CiAg
ICAgfQogCkBAIC0yNDIsMTMgKzI0OCwyMyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVO
b2RlKEFYQ29yZU9iamVjdCYgYXhPYmplY3QpCiAgICAgbV9wZW5kaW5nQXBwZW5kcy5hcHBlbmQo
Tm9kZUNoYW5nZShuZXdPYmplY3QsIGF4T2JqZWN0LndyYXBwZXIoKSkpOwogfQogCi12b2lkIEFY
SXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlQ2hlY2tlZFN0YXRlKGNvbnN0IEFYQ29yZU9iamVjdCYg
YXhPYmplY3QpCit2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydHkoY29uc3Qg
QVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHkpCiB7Ci0gICAg
QVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVDaGVja2VkU3RhdGUiKTsKKyAgICBB
WFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3BlcnR5Iik7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKIAogICAgIEFYUHJvcGVydHlNYXAgcHJvcGVydHlNYXA7Ci0gICAg
cHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpJc0NoZWNrZWQsIGF4T2JqZWN0LmlzQ2hl
Y2tlZCgpKTsKKyAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgY2FzZSBBWFByb3BlcnR5TmFt
ZTo6SXNDaGVja2VkOgorICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6Oklz
Q2hlY2tlZCwgYXhPYmplY3QuaXNDaGVja2VkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEFYUHJvcGVydHlOYW1lOjpJZGVudGlmaWVyQXR0cmlidXRlOgorICAgICAgICBwcm9wZXJ0eU1h
cC5zZXQoQVhQcm9wZXJ0eU5hbWU6OklkZW50aWZpZXJBdHRyaWJ1dGUsIGF4T2JqZWN0LmlkZW50
aWZpZXJBdHRyaWJ1dGUoKS5pc29sYXRlZENvcHkoKSk7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBMb2NrSG9sZGVyIGxvY2tlciB7
IG1fY2hhbmdlTG9nTG9jayB9OwogICAgIG1fcGVuZGluZ1Byb3BlcnR5Q2hhbmdlcy5hcHBlbmQo
eyBheE9iamVjdC5vYmplY3RJRCgpLCBwcm9wZXJ0eU1hcCB9KTsKIH0KQEAgLTM3MSw3ICszODcs
OSBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVOb2RlKEFYSUQgYXhJRCkKIHsKICAgICBB
WFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6cmVtb3ZlTm9kZSIpOwogICAgIEFYTE9HKG1ha2VTdHJp
bmcoIkFYSUQgIiwgYXhJRCkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKKyAgICBt
X25vZGVNYXAucmVtb3ZlKGF4SUQpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VM
b2dMb2NrIH07CiAgICAgbV9wZW5kaW5nTm9kZVJlbW92YWxzLmFwcGVuZChheElEKTsKIH0KQEAg
LTM4NSw2ICs0MDMsOSBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVlKEFYSUQg
YXhJRCkKICAgICBWZWN0b3I8QVhJRD4gcmVtb3ZhbHMgPSB7IGF4SUQgfTsKICAgICB3aGlsZSAo
cmVtb3ZhbHMuc2l6ZSgpKSB7CiAgICAgICAgIEFYSUQgYXhJRCA9IHJlbW92YWxzLnRha2VMYXN0
KCk7CisgICAgICAgIGlmIChheElEID09IEludmFsaWRBWElEKQorICAgICAgICAgICAgY29udGlu
dWU7CisKICAgICAgICAgYXV0byBpdCA9IG1fbm9kZU1hcC5maW5kKGF4SUQpOwogICAgICAgICBp
ZiAoaXQgIT0gbV9ub2RlTWFwLmVuZCgpKSB7CiAgICAgICAgICAgICByZW1vdmFscy5hcHBlbmRW
ZWN0b3IoaXQtPnZhbHVlKTsKQEAgLTM5NiwxNSArNDE3LDYgQEAgdm9pZCBBWElzb2xhdGVkVHJl
ZTo6cmVtb3ZlU3VidHJlZShBWElEIGF4SUQpCiAgICAgbV9wZW5kaW5nU3VidHJlZVJlbW92YWxz
LmFwcGVuZChheElEKTsKIH0KIAotdm9pZCBBWElzb2xhdGVkVHJlZTo6YXBwZW5kTm9kZUNoYW5n
ZXMoVmVjdG9yPE5vZGVDaGFuZ2U+JiYgY2hhbmdlcykKLXsKLSAgICBBWFRSQUNFKCJBWElzb2xh
dGVkVHJlZTo6YXBwZW5kTm9kZUNoYW5nZXMiKTsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIEFTU0VSVChtX2NoYW5nZUxvZ0xvY2suaXNMb2NrZWQoKSk7Ci0KLSAgICBtX3BlbmRp
bmdBcHBlbmRzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGNoYW5nZXMpKTsKLX0KLQogdm9pZCBBWElz
b2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcygpCiB7CiAgICAgQVhUUkFDRSgiQVhJc29s
YXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4
IDUxOGM0MWZkMGU0ZTExM2Q0MTcwNWIzZjAwZGViOTA4NmIyZmVhZDYuLjA2YmM1NzU4ZjU5ODU3
YzgzMDIxMDAwNjRhMjhlZGVkOGVlMDIwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMzM5
LDEzICszMzksMTUgQEAgcHVibGljOgogICAgIHN0cnVjdCBOb2RlQ2hhbmdlIHsKICAgICAgICAg
UmVmPEFYSXNvbGF0ZWRPYmplY3Q+IG1faXNvbGF0ZWRPYmplY3Q7CiAgICAgICAgIFJldGFpblB0
cjxBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4gbV93cmFwcGVyOworCisgICAgICAgIE5vZGVD
aGFuZ2UoQVhJc29sYXRlZE9iamVjdCYpOwogICAgICAgICBOb2RlQ2hhbmdlKEFYSXNvbGF0ZWRP
YmplY3QmLCBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopOwogICAgICAgICBOb2RlQ2hhbmdl
KGNvbnN0IE5vZGVDaGFuZ2UmKTsKICAgICB9OwogCiAgICAgdm9pZCBnZW5lcmF0ZVN1YnRyZWUo
QVhDb3JlT2JqZWN0JiwgQVhDb3JlT2JqZWN0KiwgYm9vbCBhdHRhY2hXcmFwcGVyKTsKICAgICB2
b2lkIHVwZGF0ZU5vZGUoQVhDb3JlT2JqZWN0Jik7Ci0gICAgdm9pZCB1cGRhdGVOb2RlQ2hlY2tl
ZFN0YXRlKGNvbnN0IEFYQ29yZU9iamVjdCYpOworICAgIHZvaWQgdXBkYXRlTm9kZVByb3BlcnR5
KGNvbnN0IEFYQ29yZU9iamVjdCYsIEFYUHJvcGVydHlOYW1lKTsKICAgICB2b2lkIHVwZGF0ZVN1
YnRyZWUoQVhDb3JlT2JqZWN0Jik7CiAgICAgdm9pZCB1cGRhdGVDaGlsZHJlbihBWENvcmVPYmpl
Y3QmKTsKIApAQCAtMzc0LDkgKzM3Niw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEhhc2hNYXA8
UGFnZUlkZW50aWZpZXIsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVlUGFnZUNhY2hlKCk7CiAK
ICAgICAvLyBDYWxsIG9uIG1haW4gdGhyZWFkCi0gICAgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IGNy
ZWF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFw
cGVyLCBWZWN0b3I8Tm9kZUNoYW5nZT4mKTsKLSAgICAvLyBRdWV1ZXMgYWxsIHBlbmRpbmcgYWRk
aXRpb25zIHRvIHRoZSB0cmVlIGFzIHRoZSByZXN1bHQgb2YgYSBzdWJ0cmVlIGdlbmVyYXRpb24u
Ci0gICAgdm9pZCBhcHBlbmROb2RlQ2hhbmdlcyhWZWN0b3I8Tm9kZUNoYW5nZT4mJik7CisgICAg
UmVmPEFYSXNvbGF0ZWRPYmplY3Q+IGNyZWF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhJRCBw
YXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyKTsKICAgICAvLyBDYWxsZWQgb24gbWFpbiB0aHJl
YWQgdG8gdXBkYXRlIGJvdGggbV9ub2RlTWFwIGFuZCBtX3BlbmRpbmdDaGlsZHJlblVwZGF0ZXMu
CiAgICAgdm9pZCB1cGRhdGVDaGlsZHJlbklEcyhBWElEIHBhcmVudElELCBWZWN0b3I8QVhJRD4m
JiBjaGlsZHJlbklEcyk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410074</attachid>
            <date>2020-09-29 17:46:41 -0700</date>
            <delta_ts>2020-09-30 09:40:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217093-20200929204640.patch</filename>
            <type>text/plain</type>
            <size>17896</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc0YmVjMmJiMjQxNjhh
N2FkMDIxMDc4YTUwOWJiZmE3NGJjYjA5NS4uM2Y3Mzc5NTk1Y2FjZjQxZTAwYjc4YTg1MjU3ZTg4
ZDhiNjE4YTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIwLTA5LTI5ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggZm9yIG11
bHRpcGxlIGxheW91dCB0ZXN0cyBpbiBhY2Nlc3NpYmlsaXR5IGlzb2xhdGVkIHRyZWUgbW9kZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzA5Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoIGFuZCBEYXJpbiBBZGxlci4KKwor
ICAgICAgICBGaXggZm9yIHRoZSBmb2xsb3dpbmcgbGF5b3V0IHRlc3RzIGluIGFjY2Vzc2liaWxp
dHkgaXNvbGF0ZWQgdHJlZSBtb2RlOgorICAgICAgICBhY2Nlc3NpYmlsaXR5L2FyaWEtbWVudWJh
ci1tZW51aXRlbXMuaHRtbAorICAgICAgICBhY2Nlc3NpYmlsaXR5L2FyaWEtb3JpZW50YXRpb24u
aHRtbAorICAgICAgICBhY2Nlc3NpYmlsaXR5L3NldC1zZWxlY3RlZC1lZGl0YWJsZS5odG1sCisg
ICAgICAgIGFjY2Vzc2liaWxpdHkvcmVtb3ZlZC1jb250aW51YXRpb24tZWxlbWVudC1jYXVzZXMt
Y3Jhc2guaHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZSk6
CisgICAgICAgIFVwZGF0ZSB0aGUgaXNvbGF0ZWQgdHJlZSB3aGVuIHRoZSBpZCBhdHRyaWJ1dGUg
aXMgbW9kaWZpZWQuIFRoaXMgaXMKKyAgICAgICAgbmVlZGVkIGZvciBhbGwgdGVzdHMgdGhhdCBh
c3NpZ24gYW4gaWQgYXR0cmlidXRlIHRvIGFuIGVsZW1lbnQgaW4gSlMsCisgICAgICAgIGluIG9y
ZGVyIHRvIHJldHJpZXZlIGl0cyBhY2Nlc3NpYmlsaXR5IG9iamVjdCB2aWEgQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZC4KKyAgICAgICAgSW4gYWRkaXRpb24s
IGNoYW5nZWQgdGhlIGhhbmRsaW5nIG9mIHRoZSBsYW5nIGF0dHJpYnV0ZSB0byBqdXN0IHVwZGF0
ZQorICAgICAgICB0aGUgaXNvbGF0ZWQgdHJlZSBpbnN0ZWFkIG9mIHBvc3RpbmcgYSBub3RpZmlj
YXRpb24gd2hpY2ggaXMgbm90IHVzZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OnVwZGF0ZUlzb2xhdGVkVHJlZSk6CisgICAgICAgIFVwZGF0ZSB0aGUgQVhJc29sYXRlZE9i
amVjdCBJZGVudGlmaWVyQXR0cmlidXRlIHByb3BlcnR5LgorICAgICAgICBSZXBsYWNlZCB0aGUg
dXBkYXRlTm9kZUNoZWNrZWRTdGF0ZSBtZXRob2Qgd2l0aCB0aGUgbW9yZSBnZW5lcmFsIHVwZGF0
ZU5vZGVQcm9wZXJ0eS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5o
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJp
YnV0ZURhdGEpOgorICAgICAgICBUaGUgQ29tcHV0ZWRSb2xlU3RyaW5nIHByb3BlcnR5IG5lZWRz
IHRvIGJlIGlzb2xhdGVkQ29waWVkLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRy
ZWU6OmdlbmVyYXRlU3VidHJlZSk6CisgICAgICAgIEluc3RlYWQgb2YgaGF2aW5nIGFuIG91dCBw
YXJhbWV0ZXIgaW4gY3JlYXRlU3VidHJlZSB0byBjb2xsZWN0IHRoZSBOb2RlQ2hhbmdlcworICAg
ICAgICB0aGF0IG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIHRyZWUsIHdlIG5vdyBhZGQgZWFjaCBp
bmRpdmlkdWFsIHBlbmRpbmcKKyAgICAgICAgYXBwZW5kIGFzIHRoZSBsaXZlIHRyZWUgaXMgdHJh
dmVyc2VkLiBUaGlzIHNvbHZlcyB0aGUgaXNzdWUgbWFuaWZlc3QgaW4KKyAgICAgICAgc29tZSB0
ZXN0cyB3aGVyZSBkdXJpbmcgdGhlIGNyZWF0aW9uIG9mIHRoZSBzdWJ0cmVlLCBhcHBseVBlbmRp
bmdDaGFuZ2VzCisgICAgICAgIHdhcyBjYWxsZWQgYW5kIG5vZGUgcHJvcGVydGllcyB3ZXJlIG5v
dCB1cGRhdGVkIGJlY2F1c2UgdGhlIG5vZGVzIHdlcmUKKyAgICAgICAgbm90IGFkZGVkIHRvIHRo
ZSB0cmVlIHlldC4KKworICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmNyZWF0ZVN1
YnRyZWUpOiBTZWUgYWJvdmUgY29tbWVudCBmb3IgZ2VuZXJhdGVTdWJ0cmVlLgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0eSk6CisgICAgICAgIFJlcGxhY2VzIHVw
ZGF0ZU5vZGVDaGVja2VkU3RhdGUgdG8gYWxsb3cgdXBkYXRlIG9mIGFueSBpbmRpdmlkdWFsIHBy
b3BlcnR5LgorCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cmVtb3ZlTm9kZSk6
IEFsc28gcmVtb3ZlIHRoZSBlbnRyeSBmcm9tIG1fbm9kZU1hcC4KKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRUcmVlOjpOb2RlQ2hhbmdlOjpOb2RlQ2hhbmdlKToKKyAgICAgICAgRGVsZXRlZCwgdXNp
bmcgYWdncmVnYXRlIGluaXRpYWxpemF0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xh
dGVkVHJlZTo6dXBkYXRlTm9kZUNoZWNrZWRTdGF0ZSk6IEJlY2FtZSB1cGRhdGVOb2RlUHJvcGVy
dHkuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6YXBwZW5kTm9kZUNoYW5nZXMp
OiBEZWxldGVkLCBub3QgbmVlZGVkIGFueSBsb25nZXIuCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKKwogMjAyMC0wOS0yNSAgRnJlZGVyaWMg
V2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgQnVnIDIxNjcwMiAtIEltcGxlbWVu
dCB0aGUgQ1NTIG1hdGgtc3R5bGUgcHJvcGVydHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDEzZWVjMmEzNTUzNjJjMTNiODI1ZjU4M2M1
M2IzN2VhZTAxOTZiZGIuLmRmM2ZmNGJjZGYxYmUzOGViZjkzYjljY2JhMmFiYTc2MTA5ZTQwMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApA
QCAtMTcxNSw4ICsxNzE1LDEyIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRl
Q2hhbmdlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBFbGVtZW50CiAgICAgICAgIGxh
YmVsQ2hhbmdlZChlbGVtZW50KTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSB0YWJpbmRleEF0
dHIpCiAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZChlbGVtZW50LT5wYXJlbnROb2RlKCksIGVsZW1l
bnQpOworI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgZWxzZSBp
ZiAoYXR0ck5hbWUgPT0gbGFuZ0F0dHIpCi0gICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVu
dCwgQVhPYmplY3RDYWNoZTo6QVhMYW5ndWFnZUNoYW5nZWQpOworICAgICAgICB1cGRhdGVJc29s
YXRlZFRyZWUoZ2V0KGVsZW1lbnQpLCBBWE9iamVjdENhY2hlOjpBWExhbmd1YWdlQ2hhbmdlZCk7
CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gaWRBdHRyKQorICAgICAgICB1cGRhdGVJc29sYXRl
ZFRyZWUoZ2V0KGVsZW1lbnQpLCBBWE9iamVjdENhY2hlOjpBWElkQXR0cmlidXRlQ2hhbmdlZCk7
CisjZW5kaWYKIAogICAgIGlmICghYXR0ck5hbWUubG9jYWxOYW1lKCkuc3RyaW5nKCkuc3RhcnRz
V2l0aCgiYXJpYS0iKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzE4MCw3ICszMTg0LDEwIEBAIHZv
aWQgQVhPYmplY3RDYWNoZTo6dXBkYXRlSXNvbGF0ZWRUcmVlKEFYQ29yZU9iamVjdCYgb2JqZWN0
LCBBWE5vdGlmaWNhdGlvbiBub3RpCiAKICAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAg
IGNhc2UgQVhDaGVja2VkU3RhdGVDaGFuZ2VkOgotICAgICAgICB0cmVlLT51cGRhdGVOb2RlQ2hl
Y2tlZFN0YXRlKG9iamVjdCk7CisgICAgICAgIHRyZWUtPnVwZGF0ZU5vZGVQcm9wZXJ0eShvYmpl
Y3QsIEFYUHJvcGVydHlOYW1lOjpJc0NoZWNrZWQpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEFYSWRBdHRyaWJ1dGVDaGFuZ2VkOgorICAgICAgICB0cmVlLT51cGRhdGVOb2RlUHJvcGVydHko
b2JqZWN0LCBBWFByb3BlcnR5TmFtZTo6SWRlbnRpZmllckF0dHJpYnV0ZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZDoKICAgICBjYXNlIEFYU2Vs
ZWN0ZWRDaGlsZHJlbkNoYW5nZWQ6CkBAIC0zMjAxLDYgKzMyMDgsMTIgQEAgdm9pZCBBWE9iamVj
dENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUoQVhDb3JlT2JqZWN0JiBvYmplY3QsIEFYTm90aWZp
Y2F0aW9uIG5vdGkKICAgICB9CiB9CiAKK3ZvaWQgQVhPYmplY3RDYWNoZTo6dXBkYXRlSXNvbGF0
ZWRUcmVlKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24p
Cit7CisgICAgaWYgKG9iamVjdCkKKyAgICAgICAgdXBkYXRlSXNvbGF0ZWRUcmVlKCpvYmplY3Qs
IG5vdGlmaWNhdGlvbik7Cit9CisKIHZvaWQgQVhPYmplY3RDYWNoZTo6dXBkYXRlSXNvbGF0ZWRU
cmVlKEFYQ29yZU9iamVjdCYgb2JqZWN0LCBBWExvYWRpbmdFdmVudCBub3RpZmljYXRpb24pCiB7
CiAgICAgQVhUUkFDRSgiQVhPYmplY3RDYWNoZTo6dXBkYXRlSXNvbGF0ZWRUcmVlIik7CkBAIC0z
MjQ0LDcgKzMyNTcsMTAgQEAgdm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUo
Y29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8QVhDb3JlT2JqZWMKIAogICAgICAgICBzd2l0
Y2ggKG5vdGlmaWNhdGlvbi5zZWNvbmQpIHsKICAgICAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNo
YW5nZWQ6Ci0gICAgICAgICAgICB0cmVlLT51cGRhdGVOb2RlQ2hlY2tlZFN0YXRlKCpub3RpZmlj
YXRpb24uZmlyc3QpOworICAgICAgICAgICAgdHJlZS0+dXBkYXRlTm9kZVByb3BlcnR5KCpub3Rp
ZmljYXRpb24uZmlyc3QsIEFYUHJvcGVydHlOYW1lOjpJc0NoZWNrZWQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQVhJZEF0dHJpYnV0ZUNoYW5nZWQ6CisgICAgICAgICAgICB0
cmVlLT51cGRhdGVOb2RlUHJvcGVydHkoKm5vdGlmaWNhdGlvbi5maXJzdCwgQVhQcm9wZXJ0eU5h
bWU6OklkZW50aWZpZXJBdHRyaWJ1dGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZDoKICAgICAgICAgY2FzZSBBWFNlbGVjdGVkQ2hp
bGRyZW5DaGFuZ2VkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaAppbmRleCA3ZmUyZWMxOTUxYzYyNTZhZGU2MDNhYzZkZDU0MjI5ZDkyMzMzMTc0Li5jYjNj
Yzg5ZjkyOTgwMGZhODg2NmMyMWQyYzMxM2Q5Zjk4ZmQ4YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtMjc2LDYgKzI3Niw3IEBAIHB1Ymxp
YzoKICAgICAgICAgQVhDdXJyZW50Q2hhbmdlZCwKICAgICAgICAgQVhEaXNhYmxlZFN0YXRlQ2hh
bmdlZCwKICAgICAgICAgQVhGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCwKKyAgICAgICAgQVhJZEF0
dHJpYnV0ZUNoYW5nZWQsCiAgICAgICAgIEFYTGFuZ3VhZ2VDaGFuZ2VkLAogICAgICAgICBBWExh
eW91dENvbXBsZXRlLAogICAgICAgICBBWExvYWRDb21wbGV0ZSwKQEAgLTM2OSw2ICszNzAsNyBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRyZWU+IGdlbmVyYXRlSXNvbGF0
ZWRUcmVlKFBhZ2VJZGVudGlmaWVyLCBEb2N1bWVudCYpOwogICAgIFJlZlB0cjxBWElzb2xhdGVk
VHJlZT4gZ2V0T3JDcmVhdGVJc29sYXRlZFRyZWUoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUlz
b2xhdGVkVHJlZShBWENvcmVPYmplY3QmLCBBWE5vdGlmaWNhdGlvbik7CisgICAgdm9pZCB1cGRh
dGVJc29sYXRlZFRyZWUoQVhDb3JlT2JqZWN0KiwgQVhOb3RpZmljYXRpb24pOwogICAgIHZvaWQg
dXBkYXRlSXNvbGF0ZWRUcmVlKEFYQ29yZU9iamVjdCYsIEFYTG9hZGluZ0V2ZW50KTsKICAgICB2
b2lkIHVwZGF0ZUlzb2xhdGVkVHJlZShjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxBWENv
cmVPYmplY3Q+LCBBWE5vdGlmaWNhdGlvbj4+Jik7CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZVNlY29uZGFyeUFYVGhyZWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IDNh
OGUyZjRhMmJiMzYxZWJhNTMwMTAwMGY0MmU1N2ZkZDJiMzNhZTIuLjgyNTZkYWUyYzg5NWU2ZmVl
M2M3NDFiNjRkNzAzMWJjMWM4MjNhZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBA
IC0xOTcsNyArMTk3LDcgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmli
dXRlRGF0YShBWENvcmVPYmplY3QmIG9iamVjdCwgYm9vbCBpc1Jvb3QKICAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSwgb2JqZWN0LnN1cHBv
cnRzRXhwYW5kZWRUZXh0VmFsdWUoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OlN1cHBvcnRzUHJlc3NBY3Rpb24sIG9iamVjdC5zdXBwb3J0c1ByZXNzQWN0aW9uKCkpOwogICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDbGlja1BvaW50LCBvYmplY3QuY2xpY2tQb2lu
dCgpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29tcHV0ZWRSb2xlU3RyaW5n
LCBvYmplY3QuY29tcHV0ZWRSb2xlU3RyaW5nKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpDb21wdXRlZFJvbGVTdHJpbmcsIG9iamVjdC5jb21wdXRlZFJvbGVTdHJpbmcoKS5p
c29sYXRlZENvcHkoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlZhbHVlQXV0
b2ZpbGxCdXR0b25UeXBlLCBzdGF0aWNfY2FzdDxpbnQ+KG9iamVjdC52YWx1ZUF1dG9maWxsQnV0
dG9uVHlwZSgpKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlVSTCwgb2JqZWN0
LnVybCgpLmlzb2xhdGVkQ29weSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
QWNjZXNzS2V5LCBvYmplY3QuYWNjZXNzS2V5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmlu
ZGV4IDUyYzYzYzU0NWRjNDllMjQ2MWY5ODY0Yjc1OTQ3NjY1OTJiODliNjkuLmFlZTYyM2IzNGI1
OTUxNDIxMmEzY2U5YWYyNGE0MjUzZmQ4MTdiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAK
QEAgLTQzLDE4ICs0Myw2IEBAIHN0YXRpYyB1bnNpZ25lZCBuZXdUcmVlSUQoKQogICAgIHJldHVy
biArK3NfY3VycmVudFRyZWVJRDsKIH0KIAotQVhJc29sYXRlZFRyZWU6Ok5vZGVDaGFuZ2U6Ok5v
ZGVDaGFuZ2UoQVhJc29sYXRlZE9iamVjdCYgaXNvbGF0ZWRPYmplY3QsIEFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyKiB3cmFwcGVyKQotICAgIDogbV9pc29sYXRlZE9iamVjdChpc29sYXRlZE9i
amVjdCkKLSAgICAsIG1fd3JhcHBlcih3cmFwcGVyKQotewotfQotCi1BWElzb2xhdGVkVHJlZTo6
Tm9kZUNoYW5nZTo6Tm9kZUNoYW5nZShjb25zdCBOb2RlQ2hhbmdlJiBvdGhlcikKLSAgICA6IG1f
aXNvbGF0ZWRPYmplY3Qob3RoZXIubV9pc29sYXRlZE9iamVjdC5nZXQoKSkKLSAgICAsIG1fd3Jh
cHBlcihvdGhlci5tX3dyYXBwZXIpCi17Ci19Ci0KIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJl
ZjxBWElzb2xhdGVkVHJlZT4+JiBBWElzb2xhdGVkVHJlZTo6dHJlZVBhZ2VDYWNoZSgpCiB7CiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZjxBWElz
b2xhdGVkVHJlZT4+PiBtYXA7CkBAIC0xNzYsMTggKzE2NCwxOCBAQCB2b2lkIEFYSXNvbGF0ZWRU
cmVlOjpnZW5lcmF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhDb3JlT2JqZWN0
KiBheFBhcgogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUiKTsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgVmVjdG9yPE5vZGVDaGFuZ2U+IG5v
ZGVDaGFuZ2VzOwotICAgIGF1dG8gb2JqZWN0ID0gY3JlYXRlU3VidHJlZShheE9iamVjdCwgYXhQ
YXJlbnQgPyBheFBhcmVudC0+b2JqZWN0SUQoKSA6IEludmFsaWRBWElELCBhdHRhY2hXcmFwcGVy
LCBub2RlQ2hhbmdlcyk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sg
fTsKLSAgICBhcHBlbmROb2RlQ2hhbmdlcyhXVEZNb3ZlKG5vZGVDaGFuZ2VzKSk7CisgICAgaWYg
KGF4T2JqZWN0Lm9iamVjdElEKCkgPT0gSW52YWxpZEFYSUQpCisgICAgICAgIHJldHVybjsKIAor
ICAgIGF1dG8gb2JqZWN0ID0gY3JlYXRlU3VidHJlZShheE9iamVjdCwgYXhQYXJlbnQgPyBheFBh
cmVudC0+b2JqZWN0SUQoKSA6IEludmFsaWRBWElELCBhdHRhY2hXcmFwcGVyKTsKKyAgICBMb2Nr
SG9sZGVyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgIGlmICghYXhQYXJlbnQpCiAg
ICAgICAgIHNldFJvb3ROb2RlKG9iamVjdC5wdHIoKSk7CiAgICAgZWxzZSBpZiAoYXhQYXJlbnQt
Pm9iamVjdElEKCkgIT0gSW52YWxpZEFYSUQpIC8vIE5lZWQgdG8gY2hlY2sgZm9yIHRoZSBvYmpl
Y3RJRCBvZiBheFBhcmVudCBhZ2FpbiBiZWNhdXNlIGl0IG1heSBoYXZlIGJlZW4gZGV0YWNoZWQg
d2hpbGUgdHJhdmVyc2luZyB0aGUgdHJlZS4KICAgICAgICAgdXBkYXRlQ2hpbGRyZW5JRHMoYXhQ
YXJlbnQtPm9iamVjdElEKCksIGF4UGFyZW50LT5jaGlsZHJlbklEcygpKTsKIH0KIAotUmVmPEFY
SXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVTdWJ0cmVlKEFYQ29yZU9iamVj
dCYgYXhPYmplY3QsIEFYSUQgcGFyZW50SUQsIGJvb2wgYXR0YWNoV3JhcHBlciwgVmVjdG9yPE5v
ZGVDaGFuZ2U+JiBub2RlQ2hhbmdlcykKK1JlZjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVk
VHJlZTo6Y3JlYXRlU3VidHJlZShBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWElEIHBhcmVudElE
LCBib29sIGF0dGFjaFdyYXBwZXIpCiB7CiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OmNy
ZWF0ZVN1YnRyZWUiKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMTk5LDI0ICsx
ODcsMjUgQEAgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVTdWJ0
cmVlKEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYSUQKICAgICAgICAgcmV0dXJuIG9iamVjdDsK
ICAgICB9CiAKLSAgICBpZiAoYXR0YWNoV3JhcHBlcikgeworICAgIE5vZGVDaGFuZ2Ugbm9kZUNo
YW5nZSB7IG9iamVjdCwgbnVsbHB0ciB9OworICAgIGlmIChhdHRhY2hXcmFwcGVyKQogICAgICAg
ICBvYmplY3QtPmF0dGFjaFBsYXRmb3JtV3JhcHBlcihheE9iamVjdC53cmFwcGVyKCkpOwotICAg
ICAgICAvLyBTaW5jZSB0aGlzIG9iamVjdCBoYXMgYWxyZWFkeSBhbiBhdHRhY2hlZCB3cmFwcGVy
LCBzZXQgdGhlIHdyYXBwZXIKLSAgICAgICAgLy8gaW4gdGhlIE5vZGVDaGFuZ2UgdG8gbnVsbCBz
byB0aGF0IGl0IGlzIG5vdCByZS1hdHRhY2hlZC4KLSAgICAgICAgbm9kZUNoYW5nZXMuYXBwZW5k
KE5vZGVDaGFuZ2Uob2JqZWN0LCBudWxscHRyKSk7Ci0gICAgfSBlbHNlIHsKKyAgICBlbHNlIHsK
ICAgICAgICAgLy8gU2V0IHRoZSB3cmFwcGVyIGluIHRoZSBOb2RlQ2hhbmdlIHNvIHRoYXQgaXQg
aXMgc2V0IG9uIHRoZSBBWCB0aHJlYWQuCi0gICAgICAgIG5vZGVDaGFuZ2VzLmFwcGVuZChOb2Rl
Q2hhbmdlKG9iamVjdCwgYXhPYmplY3Qud3JhcHBlcigpKSk7CisgICAgICAgIG5vZGVDaGFuZ2Uu
d3JhcHBlciA9IGF4T2JqZWN0LndyYXBwZXIoKTsKICAgICB9CiAKKyAgICBhdXRvIGF4Q2hpbGRy
ZW4gPSBheE9iamVjdC5jaGlsZHJlbigpOwogICAgIFZlY3RvcjxBWElEPiBjaGlsZHJlbklEczsK
LSAgICBmb3IgKGNvbnN0IGF1dG8mIGF4Q2hpbGQgOiBheE9iamVjdC5jaGlsZHJlbigpKSB7Ci0g
ICAgICAgIGF1dG8gY2hpbGQgPSBjcmVhdGVTdWJ0cmVlKCpheENoaWxkLCBheE9iamVjdC5vYmpl
Y3RJRCgpLCBhdHRhY2hXcmFwcGVyLCBub2RlQ2hhbmdlcyk7Ci0gICAgICAgIGNoaWxkcmVuSURz
LmFwcGVuZChjaGlsZC0+b2JqZWN0SUQoKSk7CisgICAgY2hpbGRyZW5JRHMucmVzZXJ2ZUNhcGFj
aXR5KGF4Q2hpbGRyZW4uc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGF4Q2hpbGQgOiBh
eENoaWxkcmVuKSB7CisgICAgICAgIGF1dG8gY2hpbGQgPSBjcmVhdGVTdWJ0cmVlKCpheENoaWxk
LCBheE9iamVjdC5vYmplY3RJRCgpLCBhdHRhY2hXcmFwcGVyKTsKKyAgICAgICAgY2hpbGRyZW5J
RHMudW5jaGVja2VkQXBwZW5kKGNoaWxkLT5vYmplY3RJRCgpKTsKICAgICB9CiAKICAgICB7CiAg
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CisgICAgICAgIG1f
cGVuZGluZ0FwcGVuZHMuYXBwZW5kKFdURk1vdmUobm9kZUNoYW5nZSkpOwogICAgICAgICB1cGRh
dGVDaGlsZHJlbklEcyhvYmplY3QtPm9iamVjdElEKCksIFdURk1vdmUoY2hpbGRyZW5JRHMpKTsK
ICAgICB9CiAKQEAgLTIzOSwxNiArMjI4LDI2IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0
ZU5vZGUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCkKICAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1f
Y2hhbmdlTG9nTG9jayB9OwogICAgIC8vIFJlbW92ZSB0aGUgb2xkIG9iamVjdCBhbmQgc2V0IHRo
ZSBuZXcgb25lIHRvIGJlIHVwZGF0ZWQgb24gdGhlIEFYIHRocmVhZC4KICAgICBtX3BlbmRpbmdO
b2RlUmVtb3ZhbHMuYXBwZW5kKGF4SUQpOwotICAgIG1fcGVuZGluZ0FwcGVuZHMuYXBwZW5kKE5v
ZGVDaGFuZ2UobmV3T2JqZWN0LCBheE9iamVjdC53cmFwcGVyKCkpKTsKKyAgICBtX3BlbmRpbmdB
cHBlbmRzLmFwcGVuZCh7IG5ld09iamVjdCwgYXhPYmplY3Qud3JhcHBlcigpIH0pOwogfQogCi12
b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlQ2hlY2tlZFN0YXRlKGNvbnN0IEFYQ29yZU9i
amVjdCYgYXhPYmplY3QpCit2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydHko
Y29uc3QgQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHkpCiB7
Ci0gICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVDaGVja2VkU3RhdGUiKTsK
KyAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3BlcnR5Iik7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIEFYUHJvcGVydHlNYXAgcHJvcGVydHlNYXA7
Ci0gICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpJc0NoZWNrZWQsIGF4T2JqZWN0
LmlzQ2hlY2tlZCgpKTsKKyAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgY2FzZSBBWFByb3Bl
cnR5TmFtZTo6SXNDaGVja2VkOgorICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5h
bWU6OklzQ2hlY2tlZCwgYXhPYmplY3QuaXNDaGVja2VkKCkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEFYUHJvcGVydHlOYW1lOjpJZGVudGlmaWVyQXR0cmlidXRlOgorICAgICAgICBwcm9w
ZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OklkZW50aWZpZXJBdHRyaWJ1dGUsIGF4T2JqZWN0
LmlkZW50aWZpZXJBdHRyaWJ1dGUoKS5pc29sYXRlZENvcHkoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBMb2NrSG9sZGVyIGxv
Y2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgIG1fcGVuZGluZ1Byb3BlcnR5Q2hhbmdlcy5h
cHBlbmQoeyBheE9iamVjdC5vYmplY3RJRCgpLCBwcm9wZXJ0eU1hcCB9KTsKIH0KQEAgLTM3MSw3
ICszNzAsOSBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVOb2RlKEFYSUQgYXhJRCkKIHsK
ICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6cmVtb3ZlTm9kZSIpOwogICAgIEFYTE9HKG1h
a2VTdHJpbmcoIkFYSUQgIiwgYXhJRCkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAK
KyAgICBtX25vZGVNYXAucmVtb3ZlKGF4SUQpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9j
aGFuZ2VMb2dMb2NrIH07CiAgICAgbV9wZW5kaW5nTm9kZVJlbW92YWxzLmFwcGVuZChheElEKTsK
IH0KQEAgLTM4NSw2ICszODYsOSBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVl
KEFYSUQgYXhJRCkKICAgICBWZWN0b3I8QVhJRD4gcmVtb3ZhbHMgPSB7IGF4SUQgfTsKICAgICB3
aGlsZSAocmVtb3ZhbHMuc2l6ZSgpKSB7CiAgICAgICAgIEFYSUQgYXhJRCA9IHJlbW92YWxzLnRh
a2VMYXN0KCk7CisgICAgICAgIGlmIChheElEID09IEludmFsaWRBWElEKQorICAgICAgICAgICAg
Y29udGludWU7CisKICAgICAgICAgYXV0byBpdCA9IG1fbm9kZU1hcC5maW5kKGF4SUQpOwogICAg
ICAgICBpZiAoaXQgIT0gbV9ub2RlTWFwLmVuZCgpKSB7CiAgICAgICAgICAgICByZW1vdmFscy5h
cHBlbmRWZWN0b3IoaXQtPnZhbHVlKTsKQEAgLTM5NiwxNSArNDAwLDYgQEAgdm9pZCBBWElzb2xh
dGVkVHJlZTo6cmVtb3ZlU3VidHJlZShBWElEIGF4SUQpCiAgICAgbV9wZW5kaW5nU3VidHJlZVJl
bW92YWxzLmFwcGVuZChheElEKTsKIH0KIAotdm9pZCBBWElzb2xhdGVkVHJlZTo6YXBwZW5kTm9k
ZUNoYW5nZXMoVmVjdG9yPE5vZGVDaGFuZ2U+JiYgY2hhbmdlcykKLXsKLSAgICBBWFRSQUNFKCJB
WElzb2xhdGVkVHJlZTo6YXBwZW5kTm9kZUNoYW5nZXMiKTsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIEFTU0VSVChtX2NoYW5nZUxvZ0xvY2suaXNMb2NrZWQoKSk7Ci0KLSAgICBt
X3BlbmRpbmdBcHBlbmRzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGNoYW5nZXMpKTsKLX0KLQogdm9p
ZCBBWElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcygpCiB7CiAgICAgQVhUUkFDRSgi
QVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMiKTsKQEAgLTQzOCwzMyArNDMzLDMz
IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMoKQogICAgIH0KIAog
ICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IG1fcGVuZGluZ0FwcGVuZHMpIHsKLSAgICAgICAg
QVhJRCBheElEID0gaXRlbS5tX2lzb2xhdGVkT2JqZWN0LT5vYmplY3RJRCgpOworICAgICAgICBB
WElEIGF4SUQgPSBpdGVtLmlzb2xhdGVkT2JqZWN0LT5vYmplY3RJRCgpOwogICAgICAgICBBWExP
RyhtYWtlU3RyaW5nKCJhcHBlbmRpbmcgYXhJRCAiLCBheElEKSk7CiAgICAgICAgIGlmIChheElE
ID09IEludmFsaWRBWElEKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byYg
d3JhcHBlciA9IGl0ZW0ubV93cmFwcGVyID8gaXRlbS5tX3dyYXBwZXIgOiBpdGVtLm1faXNvbGF0
ZWRPYmplY3QtPndyYXBwZXIoKTsKKyAgICAgICAgYXV0byYgd3JhcHBlciA9IGl0ZW0ud3JhcHBl
ciA/IGl0ZW0ud3JhcHBlciA6IGl0ZW0uaXNvbGF0ZWRPYmplY3QtPndyYXBwZXIoKTsKICAgICAg
ICAgaWYgKCF3cmFwcGVyKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGF1
dG8gb2JqZWN0ID0gbV9yZWFkZXJUaHJlYWROb2RlTWFwLmdldChheElEKSkgewotICAgICAgICAg
ICAgaWYgKG9iamVjdCAhPSAmaXRlbS5tX2lzb2xhdGVkT2JqZWN0LmdldCgpCisgICAgICAgICAg
ICBpZiAob2JqZWN0ICE9ICZpdGVtLmlzb2xhdGVkT2JqZWN0LmdldCgpCiAgICAgICAgICAgICAg
ICAgJiYgb2JqZWN0LT53cmFwcGVyKCkgPT0gd3JhcHBlci5nZXQoKSkgewogICAgICAgICAgICAg
ICAgIC8vIFRoZSBuZXcgSXNvbGF0ZWRPYmplY3QgaXMgYSByZXBsYWNlbWVudCBmb3IgYW4gZXhp
c3Rpbmcgb2JqZWN0CiAgICAgICAgICAgICAgICAgLy8gYXMgdGhlIHJlc3VsdCBvZiBhbiB1cGRh
dGUuIFRodXMgZGV0YWNoIHRoZSB3cmFwcGVyIGZyb20gdGhlCiAgICAgICAgICAgICAgICAgLy8g
ZXhpc3Rpbmcgb2JqZWN0IGFuZCBhdHRhY2ggaXQgdG8gdGhlIG5ldyBvbmUuCiAgICAgICAgICAg
ICAgICAgb2JqZWN0LT5kZXRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6
RWxlbWVudENoYW5nZWQpOwotICAgICAgICAgICAgICAgIGl0ZW0ubV9pc29sYXRlZE9iamVjdC0+
YXR0YWNoUGxhdGZvcm1XcmFwcGVyKHdyYXBwZXIuZ2V0KCkpOworICAgICAgICAgICAgICAgIGl0
ZW0uaXNvbGF0ZWRPYmplY3QtPmF0dGFjaFBsYXRmb3JtV3JhcHBlcih3cmFwcGVyLmdldCgpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5yZW1vdmUo
YXhJRCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWl0ZW0ubV9pc29sYXRlZE9iamVjdC0+
d3JhcHBlcigpKSB7CisgICAgICAgIGlmICghaXRlbS5pc29sYXRlZE9iamVjdC0+d3JhcHBlcigp
KSB7CiAgICAgICAgICAgICAvLyBUaGUgbmV3IG9iamVjdCBoYXNuJ3QgYmVlbiBhdHRhY2hlZCBh
IHdyYXBwZXIgeWV0LCBzbyBhdHRhY2ggaXQuCi0gICAgICAgICAgICBpdGVtLm1faXNvbGF0ZWRP
YmplY3QtPmF0dGFjaFBsYXRmb3JtV3JhcHBlcih3cmFwcGVyLmdldCgpKTsKKyAgICAgICAgICAg
IGl0ZW0uaXNvbGF0ZWRPYmplY3QtPmF0dGFjaFBsYXRmb3JtV3JhcHBlcih3cmFwcGVyLmdldCgp
KTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZWFkZXJUaHJlYWRO
b2RlTWFwLmFkZChheElELCBpdGVtLm1faXNvbGF0ZWRPYmplY3QuZ2V0KCkpOworICAgICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5hZGQoYXhJRCwgaXRlbS5pc29s
YXRlZE9iamVjdC5nZXQoKSk7CiAgICAgICAgIC8vIFRoZSBuZXdseSBhZGRlZCBvYmplY3QgbXVz
dCBoYXZlIGEgd3JhcHBlci4KICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUtPndyYXBwZXIoKSk7CiAgICAgICAgIC8vIFRoZSByZWZlcmVu
Y2UgY291bnQgb2YgdGhlIGp1c3QgYWRkZWQgSXNvbGF0ZWRPYmplY3QgbXVzdCBiZSAyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuaAppbmRleCA1MThjNDFmZDBlNGUxMTNkNDE3MDViM2YwMGRlYjkwODZiMmZl
YWQ2Li45NjlhZGIxZTc0NTZjYmI2MDBlMTdkZjE3ZDEwMjJmZjVkMDkxZjUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmgKQEAgLTMzNywxNSArMzM3LDEzIEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVm
UHRyPEFYQ29yZU9iamVjdD4+IG9iamVjdHNGb3JJRHMoVmVjdG9yPEFYSUQ+KSBjb25zdDsKIAog
ICAgIHN0cnVjdCBOb2RlQ2hhbmdlIHsKLSAgICAgICAgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IG1f
aXNvbGF0ZWRPYmplY3Q7Ci0gICAgICAgIFJldGFpblB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcj4gbV93cmFwcGVyOwotICAgICAgICBOb2RlQ2hhbmdlKEFYSXNvbGF0ZWRPYmplY3QmLCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopOwotICAgICAgICBOb2RlQ2hhbmdlKGNvbnN0IE5v
ZGVDaGFuZ2UmKTsKKyAgICAgICAgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IGlzb2xhdGVkT2JqZWN0
OworICAgICAgICBSZXRhaW5QdHI8QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+IHdyYXBwZXI7
CiAgICAgfTsKIAogICAgIHZvaWQgZ2VuZXJhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYsIEFYQ29y
ZU9iamVjdCosIGJvb2wgYXR0YWNoV3JhcHBlcik7CiAgICAgdm9pZCB1cGRhdGVOb2RlKEFYQ29y
ZU9iamVjdCYpOwotICAgIHZvaWQgdXBkYXRlTm9kZUNoZWNrZWRTdGF0ZShjb25zdCBBWENvcmVP
YmplY3QmKTsKKyAgICB2b2lkIHVwZGF0ZU5vZGVQcm9wZXJ0eShjb25zdCBBWENvcmVPYmplY3Qm
LCBBWFByb3BlcnR5TmFtZSk7CiAgICAgdm9pZCB1cGRhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYp
OwogICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0Jik7CiAKQEAgLTM3NCw5ICsz
NzIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWY8
QVhJc29sYXRlZFRyZWU+PiYgdHJlZVBhZ2VDYWNoZSgpOwogCiAgICAgLy8gQ2FsbCBvbiBtYWlu
IHRocmVhZAotICAgIFJlZjxBWElzb2xhdGVkT2JqZWN0PiBjcmVhdGVTdWJ0cmVlKEFYQ29yZU9i
amVjdCYsIEFYSUQgcGFyZW50SUQsIGJvb2wgYXR0YWNoV3JhcHBlciwgVmVjdG9yPE5vZGVDaGFu
Z2U+Jik7Ci0gICAgLy8gUXVldWVzIGFsbCBwZW5kaW5nIGFkZGl0aW9ucyB0byB0aGUgdHJlZSBh
cyB0aGUgcmVzdWx0IG9mIGEgc3VidHJlZSBnZW5lcmF0aW9uLgotICAgIHZvaWQgYXBwZW5kTm9k
ZUNoYW5nZXMoVmVjdG9yPE5vZGVDaGFuZ2U+JiYpOworICAgIFJlZjxBWElzb2xhdGVkT2JqZWN0
PiBjcmVhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYsIEFYSUQgcGFyZW50SUQsIGJvb2wgYXR0YWNo
V3JhcHBlcik7CiAgICAgLy8gQ2FsbGVkIG9uIG1haW4gdGhyZWFkIHRvIHVwZGF0ZSBib3RoIG1f
bm9kZU1hcCBhbmQgbV9wZW5kaW5nQ2hpbGRyZW5VcGRhdGVzLgogICAgIHZvaWQgdXBkYXRlQ2hp
bGRyZW5JRHMoQVhJRCBwYXJlbnRJRCwgVmVjdG9yPEFYSUQ+JiYgY2hpbGRyZW5JRHMpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>