<?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>230755</bug_id>
          
          <creation_ts>2021-09-24 09:36:50 -0700</creation_ts>
          <short_desc>[css-flexbox] Improve &amp; simplify the flex-basis computation</short_desc>
          <delta_ts>2022-05-04 08:59:57 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=240068</see_also>
          <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>
          <dependson>232481</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rbuis</cc>
    
    <cc>rego</cc>
    
    <cc>rniwa</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1796915</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-09-24 09:36:50 -0700</bug_when>
    <thetext>[css-flexbox] Improve &amp; simplify the flex-basis computation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796931</commentid>
    <comment_count>1</comment_count>
      <attachid>439157</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-09-24 10:09:42 -0700</bug_when>
    <thetext>Created attachment 439157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799230</commentid>
    <comment_count>2</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-10-01 04:39:56 -0700</bug_when>
    <thetext>Gentle ping for reviewers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799349</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-01 09:39:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/83769781&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800427</commentid>
    <comment_count>4</comment_count>
      <attachid>439157</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-10-05 00:20:31 -0700</bug_when>
    <thetext>Comment on attachment 439157
Patch

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

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:1016
&gt; +            m_child.mutableStyle().setLogicalWidth(Length(m_originalMainAxisLength));

Temp Length not needed.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:1018
&gt; +            m_child.mutableStyle().setLogicalHeight(Length(m_originalMainAxisLength));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801140</commentid>
    <comment_count>5</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-10-06 09:39:37 -0700</bug_when>
    <thetext>Any other comment regarding this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802051</commentid>
    <comment_count>6</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-10-08 07:48:00 -0700</bug_when>
    <thetext>(In reply to Rob Buis from comment #4)
&gt; Comment on attachment 439157 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=439157&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:1016
&gt; &gt; +            m_child.mutableStyle().setLogicalWidth(Length(m_originalMainAxisLength));
&gt; 
&gt; Temp Length not needed.

You actually need that or a WTFMove</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802059</commentid>
    <comment_count>7</comment_count>
      <attachid>439157</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-10-08 08:04:35 -0700</bug_when>
    <thetext>Comment on attachment 439157
Patch

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

&gt;&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:1016
&gt;&gt;&gt; +            m_child.mutableStyle().setLogicalWidth(Length(m_originalMainAxisLength));
&gt;&gt; 
&gt;&gt; Temp Length not needed.
&gt; 
&gt; You actually need that or a WTFMove

Ah I see! WTFMove would be more efficient here, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803703</commentid>
    <comment_count>8</comment_count>
      <attachid>439157</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2021-10-13 04:34:56 -0700</bug_when>
    <thetext>Comment on attachment 439157
Patch

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

Nice patch, I have some comments and questions inline.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:999
&gt; +class ScopedFlexBasisAsMainSize {

Wow, this is quite a hack I guess we don&apos;t have a better alternative though. :-(

I&apos;m not really sure about the class name, would be better ScopedFlexBasisAsChildSize? Or something else, not sure...

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:1007
&gt; +            m_child.mutableStyle().setLogicalWidth(Length(flexBasis));

Does this works fine if the element has something like &quot;max-width: 100px;&quot; or &quot;min-width: 1000px;&quot;.
Not sure if preferred widths are recomputed or not after this call.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:1023
&gt; +    Length m_originalMainAxisLength;

Why not just &quot;m_originalSize&quot; or &quot;m_originalChildSize&quot;?

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:1040
&gt; +    // 9.3.2 E. Otherwise, size the item into the available space using its used flex basis in place of its main size.

I miss C) and D) before getting to E). Maybe we could add a comment.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:1047
&gt; +        if (childHasIntrinsicMainAxisSize(child))
&gt; +            child.setNeedsLayout(MarkOnlyThis);

Why we need this?

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:1048
&gt; +        child.layoutIfNeeded();

Ditto about this like, do we need this if we haven&apos;t gone through the previous if statement?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803710</commentid>
    <comment_count>9</comment_count>
      <attachid>439157</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-10-13 05:11:07 -0700</bug_when>
    <thetext>Comment on attachment 439157
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:1007
&gt;&gt; +            m_child.mutableStyle().setLogicalWidth(Length(flexBasis));
&gt; 
&gt; Does this works fine if the element has something like &quot;max-width: 100px;&quot; or &quot;min-width: 1000px;&quot;.
&gt; Not sure if preferred widths are recomputed or not after this call.

This is a nice question. When computing the flex-base size the min|max constrains should not apply. We are not doing that at the moment, however that is properly addressed in https://bugs.webkit.org/show_bug.cgi?id=225590. That bug landed and caused some regression, I have a local patch that implements https://bugs.webkit.org/show_bug.cgi?id=225590 on top of this patch and that does not regress anything.

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:1023
&gt;&gt; +    Length m_originalMainAxisLength;
&gt; 
&gt; Why not just &quot;m_originalSize&quot; or &quot;m_originalChildSize&quot;?

OK, I don&apos;t have a strong opinion here.

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:1040
&gt;&gt; +    // 9.3.2 E. Otherwise, size the item into the available space using its used flex basis in place of its main size.
&gt; 
&gt; I miss C) and D) before getting to E). Maybe we could add a comment.

They&apos;ve not been implemented yet.

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:1047
&gt;&gt; +            child.setNeedsLayout(MarkOnlyThis);
&gt; 
&gt; Why we need this?

We were already doing this in the code that was removed from constructFlexItem(). At this point we know that we need to return the logical height of the item so we must ensure that we have an updated value for the height before. The only way to do that is laying out the item

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:1048
&gt;&gt; +        child.layoutIfNeeded();
&gt; 
&gt; Ditto about this like, do we need this if we haven&apos;t gone through the previous if statement?

Yep, because you don&apos;t have the height until you layout the item.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804220</commentid>
    <comment_count>10</comment_count>
      <attachid>439157</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2021-10-14 04:48:41 -0700</bug_when>
    <thetext>Comment on attachment 439157
Patch

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

r=me

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:999
&gt;&gt; +class ScopedFlexBasisAsMainSize {
&gt; 
&gt; Wow, this is quite a hack I guess we don&apos;t have a better alternative though. :-(
&gt; 
&gt; I&apos;m not really sure about the class name, would be better ScopedFlexBasisAsChildSize? Or something else, not sure...

Could we add some brief documentation about this class? Is it not very big, but it&apos;s a kind of very special case, so it&apos;s worth explaining it for the future.

&gt;&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:1040
&gt;&gt;&gt; +    // 9.3.2 E. Otherwise, size the item into the available space using its used flex basis in place of its main size.
&gt;&gt; 
&gt;&gt; I miss C) and D) before getting to E). Maybe we could add a comment.
&gt; 
&gt; They&apos;ve not been implemented yet.

I&apos;d add a comment for clarity, otherwise it&apos;s kind of confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804664</commentid>
    <comment_count>11</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-10-14 19:49:23 -0700</bug_when>
    <thetext>👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804737</commentid>
    <comment_count>12</comment_count>
      <attachid>441350</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-10-15 01:39:59 -0700</bug_when>
    <thetext>Created attachment 441350
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805505</commentid>
    <comment_count>13</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-10-18 03:08:03 -0700</bug_when>
    <thetext>Committed r284359 (243144@main): &lt;https://commits.webkit.org/243144@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810204</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-29 13:18:59 -0700</bug_when>
    <thetext>Reverted in https://trac.webkit.org/changeset/285045/webkit
This patch makes Twitter CPU usage 100%.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811426</commentid>
    <comment_count>15</comment_count>
      <attachid>441350</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-11-03 02:54:32 -0700</bug_when>
    <thetext>Comment on attachment 441350
Patch for landing

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

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:1012
&gt; +        m_child.mutableStyle().setLogicalHeight(Length(flexBasis));

This sort of hacks are not ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813516</commentid>
    <comment_count>16</comment_count>
      <attachid>443788</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-11-10 02:35:38 -0800</bug_when>
    <thetext>Created attachment 443788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813951</commentid>
    <comment_count>17</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-11-11 01:42:26 -0800</bug_when>
    <thetext>Committed r285623 (244124@main): &lt;https://commits.webkit.org/244124@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866482</commentid>
    <comment_count>18</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-05-04 08:59:57 -0700</bug_when>
    <thetext>This broke the IRS payment page. see bug 240068.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439157</attachid>
            <date>2021-09-24 10:09:42 -0700</date>
            <delta_ts>2021-11-10 02:35:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230755-20210924190941.patch</filename>
            <type>text/plain</type>
            <size>17471</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDEzYzkyZDEwOWEzMmQ1
OTIyYTEzNTI5MGJlNGM2NDJhMGU3YTUxZC4uZTVhZGUxNjgyNzEwZmM4MzYxYTU0YjdlMzYzOTlm
NmUyNWY4YTFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTA5LTI0ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtjc3MtZmxl
eGJveF0gSW1wcm92ZSAmIHNpbXBsaWZ5IHRoZSBmbGV4LWJhc2lzIGNvbXB1dGF0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3NTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZmxleC1iYXNp
cyBjb21wdXRhdGlvbiBjb2RlIHdhcyBhIGJpdCBjb252b2x1dGVkLiBJdCBoYWQgc29tZSBwcmUt
Y29tcHV0YXRpb25zIGZvciBpdGVtcworICAgICAgICB3aXRoIGludHJpbnNpYyBtYWluIHNpemUg
dGhhdCB3ZXJlIGNhdXNpbmcgc2V2ZXJhbCBpc3N1ZXMgZHVlIHRvIHJlZW50cmFuY3kuIEFjdHVh
bGx5IHRob3NlCisgICAgICAgIGNvbXB1dGF0aW9ucyB3aGVyZSBub3QgbmVlZGVkIGF0IGFsbCBm
b3IgdGhlIGZsZXggYmFzaXMgY29tcHV0YXRpb24gYnV0IGZvciBhIGxhdGVyIHN0YWdlLCB0aGUK
KyAgICAgICAgY29tcHV0YXRpb24gb2YgdGhlIGh5cGhvdGV0aWNhbCBtYWluIHNpemUgaW4gd2hp
Y2ggd2UgbmVlZCB0byBjb21wdXRlICdtaW4te3dpZHRofGhlaWdodH06IGF1dG8nLgorCisgICAg
ICAgIFRoYXQncyB3aHkgdGhlIGNvZGUgdGhhdCB3YXMgZXhlY3V0ZWQgYmVmb3JlIHRoZSBmbGV4
LWJhc2lzIGNvbXB1dGF0aW9uIGlzIG5vdyBwYXJ0IG9mCisgICAgICAgIGNvbXB1dGVGbGV4SXRl
bU1pbk1heFNpemVzKCkuIEFzIHdlIGFyZSBubyBsb25nZXIgZG9pbmcgYSBsYXlvdXQgYmVmb3Jl
IGNvbXB1dGluZyB0aGUgZmxleC1iYXNpcywKKyAgICAgICAgYSBsYXlvdXQgaGFzIHRvIGJlIGFk
ZGVkIHRvIHRob3NlIGNhc2VzIGluIHdoaWNoIHRoZSBtYWluIHNpemUgaXMgdGhlIGJsb2NrIHNp
emUgb2YgdGhlIGNoaWxkLiBBcGFydAorICAgICAgICBmcm9tIHRoYXQgdGhlIGZsZXgtYmFzaXMg
Y29tcHV0YXRpb24gdXNlcyBhIG5ld2x5IGRlZmluZWQgUkFJSSBjbGFzcyB0byBzZXQgdGhlIG1h
aW4gc2l6ZSBvZiB0aGUgaXRlbQorICAgICAgICB0byB0aGUgdmFsdWUgc3BlY2lmaWVkIGJ5IGZs
ZXgtYmFzaXMgd2hpY2ggaXMgd2hhdCB0aGUgc3BlY3MgbWFuZGF0ZS4KKworICAgICAgICBMYXN0
IGJ1dCBub3QgbGVhc3QsIHRoZSBjb21wdXRlSW5uZXJGbGV4QmFzZVNpemVGb3JDaGlsZCgpIG1l
dGhvZCB3YXMgcmVuYW1lZCB0byBjb21wdXRlRmxleEJhc2VTaXplRm9yQ2hpbGQoKQorICAgICAg
ICB3aGljaCBmaXRzIGJldHRlciB3aXRoIHRoZSB0ZXJtaW5vbG9neSB1c2VkIGluIHRoZSBzcGVj
cy4KKworICAgICAgICBGbGV4IGJhc2lzIGNvbXB1dGF0aW9uIGlzIGFscmVhZHkgY292ZXJlZCBi
eSB0aGUgV1BUIHRlc3Qgc3VpdGUsIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGV4dHJhIHRlc3RzLiBU
aGlzIHBhdGNoCisgICAgICAgIGZpeGVzIHRoZSBvbmx5IGZsZXgtYmFzaXMtKiB0ZXN0IGNhc2Ug
dGhhdCB3YXMgbm90IHBhc3NpbmcuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVN
YWluQXhpc0V4dGVudEZvckNoaWxkKTogUmVtb3ZlZCBvYnNvbGV0ZSBjb21tZW50LiBBZGRlZAor
ICAgICAgICBhIGxheW91dElmTmVlZGVkKCkgYXMgd2UgY2Fubm90IGJlIHN1cmUgdGhhdCB0aGUg
aXRlbSB3YXMgYWxyZWFkeSBsYWlkIG91dCBhbnkgbW9yZS4KKyAgICAgICAgKFdlYkNvcmU6OlNj
b3BlZEZsZXhCYXNpc0FzTWFpblNpemU6OlNjb3BlZEZsZXhCYXNpc0FzTWFpblNpemUpOiBOZXcg
UkFJSSBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZsZXhCYXNpc0FzTWFpblNpemU6
On5TY29wZWRGbGV4QmFzaXNBc01haW5TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZs
ZXhpYmxlQm94Ojpjb21wdXRlRmxleEJhc2VTaXplRm9yQ2hpbGQpOiBSZW5hbWVkIGZyb20gY29t
cHV0ZUlubmVyRmxleEJhc2VTaXplRm9yQ2hpbGQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bGV4aWJsZUJveDo6Y29tcHV0ZUZsZXhJdGVtTWluTWF4U2l6ZXMpOiBBZGRlZCByZWxheW91dENo
aWxkcmVuIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpj
b25zdHJ1Y3RGbGV4SXRlbSk6IE1vdmVkIGNvZGUgdG8gY29tcHV0ZUZsZXhJdGVtTWluTWF4U2l6
ZXMoKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRBbmRQbGFj
ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRl
SW5uZXJGbGV4QmFzZVNpemVGb3JDaGlsZCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94Lmg6CisKIDIwMjEtMDktMjQgIEFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gTGluZTo6UnVuIG9ubHkgbmVlZHMgYSBo
YW5kZnVsIG9mIHN0eWxlIHByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IDEwNDVkMDk2YzRkNmJhMWViYWI4MDFlY2Y0OTI5
Yjg1YjAyNWNhZDkuLjAzOTkwYjU3ODFiZTUxNDc1NjBmMmY5YzkyYzA2MDdiODIzMGI2OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAt
MzQsOSArMzQsMTEgQEAKICNpbmNsdWRlICJGbGV4aWJsZUJveEFsZ29yaXRobS5oIgogI2luY2x1
ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKKyNpbmNs
dWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXlvdXRTdGF0ZS5oIgorI2lu
Y2x1ZGUgIlJlbmRlck9iamVjdEVudW1zLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFu
dHMuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiV3JpdGluZ01vZGUuaCIK
QEAgLTYyOCwxMyArNjMwLDcgQEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJGbGV4
aWJsZUJveDo6Y29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoUmVuZGUKICAgICAvLyBob3Jp
em9udGFsIGZsb3cgYW5kIGhvcml6b250YWwgd3JpdGluZyBtb2RlLCBvciB2ZXJ0aWNhbCBmbG93
IGFuZCB2ZXJ0aWNhbAogICAgIC8vIHdyaXRpbmcgbW9kZS4gT3RoZXJ3aXNlIHdlIG5lZWQgdGhl
IGxvZ2ljYWwgaGVpZ2h0LgogICAgIGlmICghbWFpbkF4aXNJc0NoaWxkSW5saW5lQXhpcyhjaGls
ZCkpIHsKLSAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBmb3IgImF1dG8iIGhlcmUg
LSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQKLSAgICAgICAgLy8gd2lsbCBqdXN0IHJldHVy
biBhIG51bGwgT3B0aW9uYWwgZm9yIHRoYXQgY2FzZSBhbnl3YXkuIEl0J3Mgc2FmZSB0byBhY2Nl
c3MKLSAgICAgICAgLy8gc2Nyb2xsYmFyTG9naWNhbEhlaWdodCBoZXJlIGJlY2F1c2UgQ29tcHV0
ZU5leHRGbGV4TGluZSB3aWxsIGhhdmUKLSAgICAgICAgLy8gYWxyZWFkeSBmb3JjZWQgbGF5b3V0
IG9uIHRoZSBjaGlsZC4gV2UgcHJldmlvdXNseSBkaWQgYSBsYXlvdXQgb3V0IHRoZSBjaGlsZAot
ICAgICAgICAvLyBpZiBuZWNlc3NhcnkgKHNlZSBDb21wdXRlTmV4dEZsZXhMaW5lIGFuZCB0aGUg
Y2FsbCB0bwotICAgICAgICAvLyBjaGlsZEhhc0ludHJpbnNpY01haW5BeGlzU2l6ZSkgc28gd2Ug
Y2FuIGJlIHN1cmUgdGhhdCB0aGUgdHdvIGhlaWdodAotICAgICAgICAvLyBjYWxscyBoZXJlIHdp
bGwgcmV0dXJuIHVwLXRvLWRhdGUgZGF0YS4KKyAgICAgICAgY2hpbGQubGF5b3V0SWZOZWVkZWQo
KTsKICAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQgPSBjaGlsZC5jb21w
dXRlQ29udGVudExvZ2ljYWxIZWlnaHQoc2l6ZVR5cGUsIHNpemUsIGNhY2hlZENoaWxkSW50cmlu
c2ljQ29udGVudExvZ2ljYWxIZWlnaHQoY2hpbGQpKTsKICAgICAgICAgaWYgKCFoZWlnaHQpCiAg
ICAgICAgICAgICByZXR1cm4gaGVpZ2h0OwpAQCAtMTAwMCwyOSArOTk2LDU4IEBAIHZvaWQgUmVu
ZGVyRmxleGlibGVCb3g6OmNsZWFyQ2FjaGVkTWFpblNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJC
b3gmIGNoaWxkKQogICAgIG1faW50cmluc2ljU2l6ZUFsb25nTWFpbkF4aXMucmVtb3ZlKCZjaGls
ZCk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVJbm5lckZsZXhC
YXNlU2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaXQgbWFpbkF4aXNCb3Jk
ZXJBbmRQYWRkaW5nKQorY2xhc3MgU2NvcGVkRmxleEJhc2lzQXNNYWluU2l6ZSB7CitwdWJsaWM6
CisgICAgU2NvcGVkRmxleEJhc2lzQXNNYWluU2l6ZShSZW5kZXJCb3gmIGNoaWxkLCBMZW5ndGgg
ZmxleEJhc2lzLCBib29sIG1haW5BeGlzSXNJbmxpbmVBeGlzKQorICAgICAgICA6IG1fY2hpbGQo
Y2hpbGQpCisgICAgICAgICwgbV9tYWluQXhpc0lzSW5saW5lQXhpcyhtYWluQXhpc0lzSW5saW5l
QXhpcykKKyAgICB7CisgICAgICAgIGlmIChtX21haW5BeGlzSXNJbmxpbmVBeGlzKSB7CisgICAg
ICAgICAgICBtX29yaWdpbmFsTWFpbkF4aXNMZW5ndGggPSBtX2NoaWxkLnN0eWxlKCkubG9naWNh
bFdpZHRoKCk7CisgICAgICAgICAgICBtX2NoaWxkLm11dGFibGVTdHlsZSgpLnNldExvZ2ljYWxX
aWR0aChMZW5ndGgoZmxleEJhc2lzKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgbV9vcmlnaW5hbE1haW5BeGlzTGVuZ3RoID0gbV9jaGlsZC5zdHlsZSgpLmxvZ2lj
YWxIZWlnaHQoKTsKKyAgICAgICAgbV9jaGlsZC5tdXRhYmxlU3R5bGUoKS5zZXRMb2dpY2FsSGVp
Z2h0KExlbmd0aChmbGV4QmFzaXMpKTsKKyAgICB9CisgICAgflNjb3BlZEZsZXhCYXNpc0FzTWFp
blNpemUoKQorICAgIHsKKyAgICAgICAgaWYgKG1fbWFpbkF4aXNJc0lubGluZUF4aXMpCisgICAg
ICAgICAgICBtX2NoaWxkLm11dGFibGVTdHlsZSgpLnNldExvZ2ljYWxXaWR0aChMZW5ndGgobV9v
cmlnaW5hbE1haW5BeGlzTGVuZ3RoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fY2hp
bGQubXV0YWJsZVN0eWxlKCkuc2V0TG9naWNhbEhlaWdodChMZW5ndGgobV9vcmlnaW5hbE1haW5B
eGlzTGVuZ3RoKSk7CisgICAgfQorcHJpdmF0ZToKKyAgICBSZW5kZXJCb3gmIG1fY2hpbGQ7Cisg
ICAgYm9vbCBtX21haW5BeGlzSXNJbmxpbmVBeGlzOworICAgIExlbmd0aCBtX29yaWdpbmFsTWFp
bkF4aXNMZW5ndGg7Cit9OworCisvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWZsZXhi
b3gvI2FsZ28tbWFpbi1pdGVtCitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRl
RmxleEJhc2VTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBtYWluQXhp
c0JvcmRlckFuZFBhZGRpbmcpCiB7CiAgICAgTGVuZ3RoIGZsZXhCYXNpcyA9IGZsZXhCYXNpc0Zv
ckNoaWxkKGNoaWxkKTsKKyAgICAvLyA5LjMuMiBBCiAgICAgaWYgKGNoaWxkTWFpblNpemVJc0Rl
ZmluaXRlKGNoaWxkLCBmbGV4QmFzaXMpKQogICAgICAgICByZXR1cm4gc3RkOjptYXgoMF9sdSwg
Y29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1haW5PclByZWZlcnJlZFNpemUs
IGZsZXhCYXNpcykudmFsdWUoKSk7CiAKKyAgICAvLyA5LjMuMiBCCiAgICAgaWYgKGNoaWxkSGFz
Q29tcHV0YWJsZUFzcGVjdFJhdGlvQW5kQ3Jvc3NTaXplSXNDb25zaWRlcmVkRGVmaW5pdGUoY2hp
bGQpKSB7CiAgICAgICAgIGNvbnN0IExlbmd0aCYgY3Jvc3NTaXplTGVuZ3RoID0gY3Jvc3NTaXpl
TGVuZ3RoRm9yQ2hpbGQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgY2hpbGQpOwogICAgICAgICByZXR1
cm4gYWRqdXN0Q2hpbGRTaXplRm9yQXNwZWN0UmF0aW9Dcm9zc0F4aXNNaW5BbmRNYXgoY2hpbGQs
IGNvbXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nKGNoaWxkLCBjcm9zc1NpemVMZW5n
dGgpKTsKICAgICB9CiAKLSAgICAvLyBUaGUgZmxleCBiYXNpcyBpcyBpbmRlZmluaXRlICg9YXV0
byksIHNvIHdlIG5lZWQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsIHdpZHRoIG9mIHRoZSBjaGlsZC4K
LSAgICBMYXlvdXRVbml0IG1haW5BeGlzRXh0ZW50OwotICAgIGlmICghbWFpbkF4aXNJc0NoaWxk
SW5saW5lQXhpcyhjaGlsZCkpIHsKLSAgICAgICAgQVNTRVJUKCFjaGlsZC5uZWVkc0xheW91dCgp
KTsKLSAgICAgICAgQVNTRVJUKG1faW50cmluc2ljU2l6ZUFsb25nTWFpbkF4aXMuY29udGFpbnMo
JmNoaWxkKSk7Ci0gICAgICAgIG1haW5BeGlzRXh0ZW50ID0gbV9pbnRyaW5zaWNTaXplQWxvbmdN
YWluQXhpcy5nZXQoJmNoaWxkKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBXZSBkb24ndCBu
ZWVkIHRvIGFkZCBzY3JvbGxiYXJMb2dpY2FsV2lkdGggaGVyZSBiZWNhdXNlIHRoZSBwcmVmZXJy
ZWQKLSAgICAgICAgLy8gd2lkdGggaW5jbHVkZXMgdGhlIHNjcm9sbGJhciwgZXZlbiBmb3Igb3Zl
cmZsb3c6IGF1dG8uCi0gICAgICAgIG1haW5BeGlzRXh0ZW50ID0gY2hpbGQubWF4UHJlZmVycmVk
TG9naWNhbFdpZHRoKCk7CisgICAgLy8gOS4zLjIgRS4gT3RoZXJ3aXNlLCBzaXplIHRoZSBpdGVt
IGludG8gdGhlIGF2YWlsYWJsZSBzcGFjZSB1c2luZyBpdHMgdXNlZCBmbGV4IGJhc2lzIGluIHBs
YWNlIG9mIGl0cyBtYWluIHNpemUuCisgICAgeworICAgICAgICBTY29wZWRGbGV4QmFzaXNBc01h
aW5TaXplIGZsZXhCYXNpc1Njb3BlKGNoaWxkLCBmbGV4QmFzaXMsIG1haW5BeGlzSXNDaGlsZElu
bGluZUF4aXMoY2hpbGQpKTsKKyAgICAgICAgaWYgKG1haW5BeGlzSXNDaGlsZElubGluZUF4aXMo
Y2hpbGQpKQorICAgICAgICAgICAgcmV0dXJuIGNoaWxkLm1heFByZWZlcnJlZExvZ2ljYWxXaWR0
aCgpIC0gbWFpbkF4aXNCb3JkZXJBbmRQYWRkaW5nOworCisgICAgICAgIGlmIChjaGlsZEhhc0lu
dHJpbnNpY01haW5BeGlzU2l6ZShjaGlsZCkpCisgICAgICAgICAgICBjaGlsZC5zZXROZWVkc0xh
eW91dChNYXJrT25seVRoaXMpOworICAgICAgICBjaGlsZC5sYXlvdXRJZk5lZWRlZCgpOworICAg
ICAgICByZXR1cm4gY2hpbGQubG9naWNhbEhlaWdodCgpIC0gbWFpbkF4aXNCb3JkZXJBbmRQYWRk
aW5nOwogICAgIH0KLSAgICByZXR1cm4gbWFpbkF4aXNFeHRlbnQgLSBtYWluQXhpc0JvcmRlckFu
ZFBhZGRpbmc7CiB9CiAKIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEZsZXhJdGVtcyhi
b29sIHJlbGF5b3V0Q2hpbGRyZW4pCkBAIC0xMjYwLDcgKzEyODUsNyBAQCB2b2lkIFJlbmRlckZs
ZXhpYmxlQm94OjpwcmVwYXJlT3JkZXJJdGVyYXRvckFuZE1hcmdpbnMoKQogICAgIH0KIH0KIAot
c3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94Ojpjb21w
dXRlRmxleEl0ZW1NaW5NYXhTaXplcyhSZW5kZXJCb3gmIGNoaWxkKQorc3RkOjpwYWlyPExheW91
dFVuaXQsIExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlRmxleEl0ZW1NaW5N
YXhTaXplcyhSZW5kZXJCb3gmIGNoaWxkLCBib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiB7CiAgICAg
TGVuZ3RoIG1heCA9IG1haW5TaXplTGVuZ3RoRm9yQ2hpbGQoTWF4U2l6ZSwgY2hpbGQpOwogICAg
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbWF4RXh0ZW50ID0gc3RkOjpudWxsb3B0OwpAQCAt
MTI3OSw4ICsxMzA0LDMwIEBAIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBMYXlvdXRVbml0PiBSZW5k
ZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUZsZXhJdGVtTWluTWF4U2l6ZXMoCiAgICAgICAgIExlbmd0
aCBjaGlsZENyb3NzU2l6ZUxlbmd0aCA9IGNyb3NzU2l6ZUxlbmd0aEZvckNoaWxkKE1haW5PclBy
ZWZlcnJlZFNpemUsIGNoaWxkKTsKICAgICAgICAgaWYgKGNoaWxkLmlzUmVuZGVyUmVwbGFjZWQo
KSAmJiBjaGlsZEhhc0NvbXB1dGFibGVBc3BlY3RSYXRpbyhjaGlsZCkgJiYgY2hpbGRDcm9zc1Np
emVJc0RlZmluaXRlKGNoaWxkLCBjaGlsZENyb3NzU2l6ZUxlbmd0aCkpCiAgICAgICAgICAgICBj
b250ZW50U2l6ZSA9IGNvbXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nKGNoaWxkLCBj
aGlsZENyb3NzU2l6ZUxlbmd0aCk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBpZiAoY2hpbGRIYXNJbnRyaW5zaWNNYWluQXhpc1NpemUoY2hpbGQpKSB7CisgICAg
ICAgICAgICAgICAgLy8gSWYgdGhpcyBjb25kaXRpb24gaXMgdHJ1ZSwgdGhlbiBjb21wdXRlTWFp
bkF4aXNFeHRlbnRGb3JDaGlsZCB3aWxsIGNhbGwKKyAgICAgICAgICAgICAgICAvLyBjaGlsZC5p
bnRyaW5zaWNDb250ZW50TG9naWNhbEhlaWdodCgpIGFuZCBjaGlsZC5zY3JvbGxiYXJMb2dpY2Fs
SGVpZ2h0KCksCisgICAgICAgICAgICAgICAgLy8gc28gaWYgdGhlIGNoaWxkIGhhcyBpbnRyaW5z
aWMgbWluL21heC9wcmVmZXJyZWQgc2l6ZSwgcnVuIGxheW91dCBvbiBpdCBub3cgdG8gbWFrZSBz
dXJlCisgICAgICAgICAgICAgICAgLy8gaXRzIGxvZ2ljYWwgaGVpZ2h0IGFuZCBzY3JvbGwgYmFy
cyBhcmUgdXAgdG8gZGF0ZS4KKyAgICAgICAgICAgICAgICB1cGRhdGVCbG9ja0NoaWxkRGlydHlC
aXRzQmVmb3JlTGF5b3V0KHJlbGF5b3V0Q2hpbGRyZW4sIGNoaWxkKTsKKyAgICAgICAgICAgICAg
ICAvLyBEb24ndCByZXNvbHZlIHBlcmNlbnRhZ2VzIGluIGNoaWxkcmVuLiBUaGlzIGlzIGVzcGVj
aWFsbHkgaW1wb3J0YW50IGZvciB0aGUgbWluLWhlaWdodCBjYWxjdWxhdGlvbiwKKyAgICAgICAg
ICAgICAgICAvLyB3aGVyZSB3ZSB3YW50IHBlcmNlbnRhZ2VzIHRvIGJlIHRyZWF0ZWQgYXMgYXV0
by4KKyAgICAgICAgICAgICAgICBpZiAoY2hpbGQubmVlZHNMYXlvdXQoKSB8fCAhbV9pbnRyaW5z
aWNTaXplQWxvbmdNYWluQXhpcy5jb250YWlucygmY2hpbGQpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID09IGNoaWxkLmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5zZXRPdmVycmlkaW5n
Q29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoc3RkOjpudWxsb3B0KTsKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuc2V0T3Zl
cnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoc3RkOjpudWxsb3B0KTsK
KworICAgICAgICAgICAgICAgICAgICBjaGlsZC5jbGVhck92ZXJyaWRpbmdDb250ZW50U2l6ZSgp
OworICAgICAgICAgICAgICAgICAgICBjaGlsZC5zZXRDaGlsZE5lZWRzTGF5b3V0KE1hcmtPbmx5
VGhpcyk7CisgICAgICAgICAgICAgICAgICAgIGNoaWxkLmxheW91dElmTmVlZGVkKCk7CisgICAg
ICAgICAgICAgICAgICAgIGNhY2hlQ2hpbGRNYWluU2l6ZShjaGlsZCk7CisgICAgICAgICAgICAg
ICAgICAgIGNoaWxkLmNsZWFyT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplKCk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgY29udGVudFNp
emUgPSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWluU2l6ZSwgTGVuZ3Ro
KExlbmd0aFR5cGU6Ok1pbkNvbnRlbnQpKS52YWx1ZV9vcigwKTsKKyAgICAgICAgfQogICAgICAg
ICBpZiAoY2hpbGQuaGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSAmJiBjaGlsZC5pbnRyaW5zaWNT
aXplKCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICBjb250ZW50U2l6ZSA9IGFkanVzdENoaWxkU2l6
ZUZvckFzcGVjdFJhdGlvQ3Jvc3NBeGlzTWluQW5kTWF4KGNoaWxkLCBjb250ZW50U2l6ZSk7CiAg
ICAgICAgIEFTU0VSVChjb250ZW50U2l6ZSA+PSAwKTsKQEAgLTEzNjcsMzIgKzE0MTQsMTAgQEAg
RmxleEl0ZW0gUmVuZGVyRmxleGlibGVCb3g6OmNvbnN0cnVjdEZsZXhJdGVtKFJlbmRlckJveCYg
Y2hpbGQsIGJvb2wgcmVsYXlvdXRDaGkKIHsKICAgICBhdXRvIGNoaWxkSGFkTGF5b3V0ID0gY2hp
bGQuZXZlckhhZExheW91dCgpOwogICAgIGNoaWxkLmNsZWFyT3ZlcnJpZGluZ0NvbnRlbnRTaXpl
KCk7Ci0gICAgaWYgKGNoaWxkSGFzSW50cmluc2ljTWFpbkF4aXNTaXplKGNoaWxkKSkgewotICAg
ICAgICAvLyBJZiB0aGlzIGNvbmRpdGlvbiBpcyB0cnVlLCB0aGVuIGNvbXB1dGVNYWluQXhpc0V4
dGVudEZvckNoaWxkIHdpbGwgY2FsbAotICAgICAgICAvLyBjaGlsZC5pbnRyaW5zaWNDb250ZW50
TG9naWNhbEhlaWdodCgpIGFuZCBjaGlsZC5zY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCksCi0gICAg
ICAgIC8vIHNvIGlmIHRoZSBjaGlsZCBoYXMgaW50cmluc2ljIG1pbi9tYXgvcHJlZmVycmVkIHNp
emUsIHJ1biBsYXlvdXQgb24gaXQgbm93IHRvIG1ha2Ugc3VyZQotICAgICAgICAvLyBpdHMgbG9n
aWNhbCBoZWlnaHQgYW5kIHNjcm9sbCBiYXJzIGFyZSB1cCB0byBkYXRlLgotICAgICAgICB1cGRh
dGVCbG9ja0NoaWxkRGlydHlCaXRzQmVmb3JlTGF5b3V0KHJlbGF5b3V0Q2hpbGRyZW4sIGNoaWxk
KTsKLSAgICAgICAgLy8gRG9uJ3QgcmVzb2x2ZSBwZXJjZW50YWdlcyBpbiBjaGlsZHJlbi4gVGhp
cyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBmb3IgdGhlIG1pbi1oZWlnaHQgY2FsY3VsYXRpb24s
Ci0gICAgICAgIC8vIHdoZXJlIHdlIHdhbnQgcGVyY2VudGFnZXMgdG8gYmUgdHJlYXRlZCBhcyBh
dXRvLiBGb3IgZmxleC1iYXNpcyBpdHNlbGYsIHRoaXMgaXMgbm90IGEgcHJvYmxlbSBiZWNhdXNl
Ci0gICAgICAgIC8vIGJ5IGRlZmluaXRpb24gd2UgaGF2ZSBhbiBpbmRlZmluaXRlIGZsZXggYmFz
aXMgaGVyZSBhbmQgdGh1cyBwZXJjZW50YWdlcyBzaG91bGQgbm90IHJlc29sdmUuCi0gICAgICAg
IGlmIChjaGlsZC5uZWVkc0xheW91dCgpIHx8ICFtX2ludHJpbnNpY1NpemVBbG9uZ01haW5BeGlz
LmNvbnRhaW5zKCZjaGlsZCkpIHsKLSAgICAgICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5n
TW9kZSgpID09IGNoaWxkLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICAg
ICAgY2hpbGQuc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0
KHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY2hpbGQu
c2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoc3RkOjpudWxs
b3B0KTsKLSAgICAgICAgICAgIGNoaWxkLmNsZWFyT3ZlcnJpZGluZ0NvbnRlbnRTaXplKCk7Ci0g
ICAgICAgICAgICBjaGlsZC5zZXRDaGlsZE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7Ci0gICAg
ICAgICAgICBjaGlsZC5sYXlvdXRJZk5lZWRlZCgpOwotICAgICAgICAgICAgY2FjaGVDaGlsZE1h
aW5TaXplKGNoaWxkKTsKLSAgICAgICAgICAgIGNoaWxkLmNsZWFyT3ZlcnJpZGluZ0NvbnRhaW5p
bmdCbG9ja0NvbnRlbnRTaXplKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCiAgICAgTGF5b3V0
VW5pdCBib3JkZXJBbmRQYWRkaW5nID0gaXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQuaG9yaXpv
bnRhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSA6IGNoaWxkLnZlcnRpY2FsQm9yZGVyQW5kUGFk
ZGluZ0V4dGVudCgpOwotICAgIExheW91dFVuaXQgY2hpbGRJbm5lckZsZXhCYXNlU2l6ZSA9IGNv
bXB1dGVJbm5lckZsZXhCYXNlU2l6ZUZvckNoaWxkKGNoaWxkLCBib3JkZXJBbmRQYWRkaW5nKTsK
KyAgICBMYXlvdXRVbml0IGNoaWxkRmxleEJhc2VTaXplID0gY29tcHV0ZUZsZXhCYXNlU2l6ZUZv
ckNoaWxkKGNoaWxkLCBib3JkZXJBbmRQYWRkaW5nKTsKICAgICBMYXlvdXRVbml0IG1hcmdpbiA9
IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLmhvcml6b250YWxNYXJnaW5FeHRlbnQoKSA6IGNo
aWxkLnZlcnRpY2FsTWFyZ2luRXh0ZW50KCk7Ci0gICAgcmV0dXJuIEZsZXhJdGVtKGNoaWxkLCBj
aGlsZElubmVyRmxleEJhc2VTaXplLCBib3JkZXJBbmRQYWRkaW5nLCBtYXJnaW4sIGNvbXB1dGVG
bGV4SXRlbU1pbk1heFNpemVzKGNoaWxkKSwgY2hpbGRIYWRMYXlvdXQpOworICAgIHJldHVybiBG
bGV4SXRlbShjaGlsZCwgY2hpbGRGbGV4QmFzZVNpemUsIGJvcmRlckFuZFBhZGRpbmcsIG1hcmdp
biwgY29tcHV0ZUZsZXhJdGVtTWluTWF4U2l6ZXMoY2hpbGQsIHJlbGF5b3V0Q2hpbGRyZW4pLCBj
aGlsZEhhZExheW91dCk7CiB9CiAgICAgCiB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpmcmVlemVW
aW9sYXRpb25zKFZlY3RvcjxGbGV4SXRlbSo+JiB2aW9sYXRpb25zLCBMYXlvdXRVbml0JiBhdmFp
bGFibGVGcmVlU3BhY2UsIGRvdWJsZSYgdG90YWxGbGV4R3JvdywgZG91YmxlJiB0b3RhbEZsZXhT
aHJpbmssIGRvdWJsZSYgdG90YWxXZWlnaHRlZEZsZXhTaHJpbmspCkBAIC0xODg4LDcgKzE5MTMs
NyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRBbmRQbGFjZUNoaWxkcmVuKExheW91
dFVuaXQmIGNyb3NzQXhpc09mZnNldCwgVmVjdAogICAgICAgICAgICAgcmVzZXRBdXRvTWFyZ2lu
c0FuZExvZ2ljYWxUb3BJbkNyb3NzQXhpcyhjaGlsZCk7CiAgICAgICAgIH0KICAgICAgICAgLy8g
V2UgbWF5IGhhdmUgYWxyZWFkeSBmb3JjZWQgcmVsYXlvdXQgZm9yIG9ydGhvZ29uYWwgZmxvd2lu
ZyBjaGlsZHJlbiBpbgotICAgICAgICAvLyBjb21wdXRlSW5uZXJGbGV4QmFzZVNpemVGb3JDaGls
ZC4KKyAgICAgICAgLy8gY29tcHV0ZUZsZXhCYXNlU2l6ZUZvckNoaWxkLgogICAgICAgICBib29s
IGZvcmNlQ2hpbGRSZWxheW91dCA9IHJlbGF5b3V0Q2hpbGRyZW4gJiYgIW1fcmVsYWlkT3V0Q2hp
bGRyZW4uY29udGFpbnMoJmNoaWxkKTsKICAgICAgICAgaWYgKCFmb3JjZUNoaWxkUmVsYXlvdXQg
JiYgY2hpbGRIYXNQZXJjZW50SGVpZ2h0RGVzY2VuZGFudHMoY2hpbGQpKSB7CiAgICAgICAgICAg
ICAvLyBIYXZlIHRvIGZvcmNlIGFub3RoZXIgcmVsYXlvdXQgZXZlbiB0aG91Z2ggdGhlIGNoaWxk
IGlzIHNpemVkCkBAIC0yMTQzLDcgKzIxNjgsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojph
cHBseVN0cmV0Y2hBbGlnbm1lbnRUb0NoaWxkKFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaQog
ICAgIH0gZWxzZSBpZiAoIW1haW5BeGlzSXNDaGlsZElubGluZUF4aXMoY2hpbGQpICYmIGNoaWxk
LnN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNBdXRvKCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBj
aGlsZFdpZHRoID0gc3RkOjptYXgoMF9sdSwgbGluZUNyb3NzQXhpc0V4dGVudCAtIGNyb3NzQXhp
c01hcmdpbkV4dGVudEZvckNoaWxkKGNoaWxkKSk7CiAgICAgICAgIGNoaWxkV2lkdGggPSBjaGls
ZC5jb25zdHJhaW5Mb2dpY2FsV2lkdGhJbkZyYWdtZW50QnlNaW5NYXgoY2hpbGRXaWR0aCwgY3Jv
c3NBeGlzQ29udGVudEV4dGVudCgpLCAqdGhpcywgbnVsbHB0cik7Ci0gICAgICAgIAorCiAgICAg
ICAgIGlmIChjaGlsZFdpZHRoICE9IGNoaWxkLmxvZ2ljYWxXaWR0aCgpKSB7CiAgICAgICAgICAg
ICBjaGlsZC5zZXRPdmVycmlkaW5nTG9naWNhbFdpZHRoKGNoaWxkV2lkdGgpOwogICAgICAgICAg
ICAgY2hpbGQuc2V0Q2hpbGROZWVkc0xheW91dChNYXJrT25seVRoaXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAppbmRleCAxODYzZDM3NGU1MzE2YzMx
ZTIxNjk4NzdkZTNhZGJkMTc3OTcxM2VjLi5jZmFlMzVjN2I4ZDA1MGRmNDQwOTE4NjIyMDg3MmIw
NGUzNmNkYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guaApAQCAtMTUwLDcgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlQ2hpbGRJ
bnRyaW5zaWNMb2dpY2FsV2lkdGhzKFJlbmRlck9iamVjdCYsIExheW91dFVuaXQmIG1pbkxvZ2lj
YWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBMYXlvdXRVbml0IGNvbXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nKGNvbnN0IFJl
bmRlckJveCYgY2hpbGQsIExlbmd0aCBjcm9zc1NpemVMZW5ndGgpIGNvbnN0OwogICAgIHZvaWQg
c2V0Rmxvd0F3YXJlTG9jYXRpb25Gb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBjb25zdCBMYXlv
dXRQb2ludCYpOwotICAgIExheW91dFVuaXQgY29tcHV0ZUlubmVyRmxleEJhc2VTaXplRm9yQ2hp
bGQoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBtYWluQXhpc0JvcmRlckFuZFBhZGRpbmcp
OworICAgIExheW91dFVuaXQgY29tcHV0ZUZsZXhCYXNlU2l6ZUZvckNoaWxkKFJlbmRlckJveCYg
Y2hpbGQsIExheW91dFVuaXQgbWFpbkF4aXNCb3JkZXJBbmRQYWRkaW5nKTsKICAgICB2b2lkIGFk
anVzdEFsaWdubWVudEZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaXQpOwogICAg
IEl0ZW1Qb3NpdGlvbiBhbGlnbm1lbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkKSBj
b25zdDsKICAgICBib29sIGNhbkNvbXB1dGVQZXJjZW50YWdlRmxleEJhc2lzKGNvbnN0IFJlbmRl
ckJveCYgY2hpbGQsIGNvbnN0IExlbmd0aCYgZmxleEJhc2lzLCBVcGRhdGVQZXJjZW50YWdlSGVp
Z2h0RGVzY2VuZGFudHMpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAg
TGF5b3V0VW5pdCBjb21wdXRlQ2hpbGRNYXJnaW5WYWx1ZShMZW5ndGggbWFyZ2luKTsKICAgICB2
b2lkIHByZXBhcmVPcmRlckl0ZXJhdG9yQW5kTWFyZ2lucygpOwotICAgIHN0ZDo6cGFpcjxMYXlv
dXRVbml0LCBMYXlvdXRVbml0PiBjb21wdXRlRmxleEl0ZW1NaW5NYXhTaXplcyhSZW5kZXJCb3gm
IGNoaWxkKTsKKyAgICBzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gY29tcHV0ZUZs
ZXhJdGVtTWluTWF4U2l6ZXMoUmVuZGVyQm94JiBjaGlsZCwgYm9vbCByZWxheW91dENoaWxkcmVu
KTsKICAgICBMYXlvdXRVbml0IGFkanVzdENoaWxkU2l6ZUZvckFzcGVjdFJhdGlvQ3Jvc3NBeGlz
TWluQW5kTWF4KGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaXQgY2hpbGRTaXplKTsK
ICAgICBGbGV4SXRlbSBjb25zdHJ1Y3RGbGV4SXRlbShSZW5kZXJCb3gmLCBib29sIHJlbGF5b3V0
Q2hpbGRyZW4pOwogICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY1ZjhhYzNmNmE1OGE5MTZmMzViZTM3YTFjMGVhMjcy
MjE5ZjhjZGYuLjFlMTlmNzBlNDI5MDM0NjQ5M2Q4MGJiOTUzNWY2NjRiOWNhNjdkOTcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAyMS0wOS0yNCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxs
YXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbY3NzLWZsZXhib3hdIEltcHJvdmUgJiBzaW1wbGlm
eSB0aGUgZmxleC1iYXNpcyBjb21wdXRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOiBVbnNraXBwZWQgZmxleC1i
YXNpcy0wMTEuaHRtbCB3aGljaCBpcyBub3cgd29ya2luZyBmaW5lLgorCiAyMDIxLTA5LTI0ICBF
cmljIEh1dGNoaXNvbiAgPGVodXRjaGlzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFsgQ2F0YWxp
bmEgRGVidWcgd2sxIEVXUyBdIHN2Zy9kb20vU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2Zm
LWNyYXNoLTIuaHRtbCBpcyBhIGZsYWt5IGNyYXNoLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTJj
YWE0NDQzNmM2YTI5ZjM1ZjNkZmI1ODM0YzQ1ZTdiZGZiN2UzNy4uMDQ5NmM3ZTkyMTU3ZTMxMWJh
MDMxNmFmMWU2YzRhZmVkMmI5MGM1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC00Mzk2LDkgKzQz
OTYsNiBAQCB3ZWJraXQub3JnL2IvMjIxNDc5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1mbGV4Ym94L2ZsZXhib3gtZmxleAogd2Via2l0Lm9yZy9iLzIyMTQ3OSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9mbGV4Ym94LWZsZXgt
YmFzaXMtY29udGVudC0wMDNhLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8yMjE0NzkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gv
ZmxleGJveC1mbGV4LWJhc2lzLWNvbnRlbnQtMDA0YS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiAKLSMgZmxleC1iYXNpcyB3aXRoICUuCi13ZWJraXQub3JnL2IvIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2ZsZXgtYmFzaXMtMDExLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLQogIyBGbGV4IGl0ZW0ncyBtaW58bWF4IGNvbnRlbnQgY29udHJpYnV0
aW9ucwogd2Via2l0Lm9yZy9iLzIzMDc0NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZmxleGJveC9mbGV4LWNvbnRhaW5lci1tYXgtY29udGVudC0wMDEuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDc0NyBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9mbGV4LWNvbnRhaW5lci1taW4tY29udGVudC0w
MDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441350</attachid>
            <date>2021-10-15 01:39:59 -0700</date>
            <delta_ts>2021-11-10 02:35:31 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-230755-20211015103957.patch</filename>
            <type>text/plain</type>
            <size>17642</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJkZjgzNTNhN2ZiYzJi
MGU5ZDU4MWZlNTBhMTM4Nzk2MTcxYTVmNi4uZTVhYTViMzBiYmIwMzVhYmE4NjRlZTQ2ZTVhNWRk
ZTVkODc1ZGVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTA5LTI0ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtjc3MtZmxl
eGJveF0gSW1wcm92ZSAmIHNpbXBsaWZ5IHRoZSBmbGV4LWJhc2lzIGNvbXB1dGF0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3NTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBNYW51ZWwgUmVnbyBDYXNhc25vdmFzLgorCisgICAgICAgIFRoZSBm
bGV4LWJhc2lzIGNvbXB1dGF0aW9uIGNvZGUgd2FzIGEgYml0IGNvbnZvbHV0ZWQuIEl0IGhhZCBz
b21lIHByZS1jb21wdXRhdGlvbnMgZm9yIGl0ZW1zCisgICAgICAgIHdpdGggaW50cmluc2ljIG1h
aW4gc2l6ZSB0aGF0IHdlcmUgY2F1c2luZyBzZXZlcmFsIGlzc3VlcyBkdWUgdG8gcmVlbnRyYW5j
eS4gQWN0dWFsbHkgdGhvc2UKKyAgICAgICAgY29tcHV0YXRpb25zIHdoZXJlIG5vdCBuZWVkZWQg
YXQgYWxsIGZvciB0aGUgZmxleCBiYXNpcyBjb21wdXRhdGlvbiBidXQgZm9yIGEgbGF0ZXIgc3Rh
Z2UsIHRoZQorICAgICAgICBjb21wdXRhdGlvbiBvZiB0aGUgaHlwaG90ZXRpY2FsIG1haW4gc2l6
ZSBpbiB3aGljaCB3ZSBuZWVkIHRvIGNvbXB1dGUgJ21pbi17d2lkdGh8aGVpZ2h0fTogYXV0bycu
CisKKyAgICAgICAgVGhhdCdzIHdoeSB0aGUgY29kZSB0aGF0IHdhcyBleGVjdXRlZCBiZWZvcmUg
dGhlIGZsZXgtYmFzaXMgY29tcHV0YXRpb24gaXMgbm93IHBhcnQgb2YKKyAgICAgICAgY29tcHV0
ZUZsZXhJdGVtTWluTWF4U2l6ZXMoKS4gQXMgd2UgYXJlIG5vIGxvbmdlciBkb2luZyBhIGxheW91
dCBiZWZvcmUgY29tcHV0aW5nIHRoZSBmbGV4LWJhc2lzLAorICAgICAgICBhIGxheW91dCBoYXMg
dG8gYmUgYWRkZWQgdG8gdGhvc2UgY2FzZXMgaW4gd2hpY2ggdGhlIG1haW4gc2l6ZSBpcyB0aGUg
YmxvY2sgc2l6ZSBvZiB0aGUgY2hpbGQuIEFwYXJ0CisgICAgICAgIGZyb20gdGhhdCB0aGUgZmxl
eC1iYXNpcyBjb21wdXRhdGlvbiB1c2VzIGEgbmV3bHkgZGVmaW5lZCBSQUlJIGNsYXNzIHRvIHNl
dCB0aGUgbWFpbiBzaXplIG9mIHRoZSBpdGVtCisgICAgICAgIHRvIHRoZSB2YWx1ZSBzcGVjaWZp
ZWQgYnkgZmxleC1iYXNpcyB3aGljaCBpcyB3aGF0IHRoZSBzcGVjcyBtYW5kYXRlLgorCisgICAg
ICAgIExhc3QgYnV0IG5vdCBsZWFzdCwgdGhlIGNvbXB1dGVJbm5lckZsZXhCYXNlU2l6ZUZvckNo
aWxkKCkgbWV0aG9kIHdhcyByZW5hbWVkIHRvIGNvbXB1dGVGbGV4QmFzZVNpemVGb3JDaGlsZCgp
CisgICAgICAgIHdoaWNoIGZpdHMgYmV0dGVyIHdpdGggdGhlIHRlcm1pbm9sb2d5IHVzZWQgaW4g
dGhlIHNwZWNzLgorCisgICAgICAgIEZsZXggYmFzaXMgY29tcHV0YXRpb24gaXMgYWxyZWFkeSBj
b3ZlcmVkIGJ5IHRoZSBXUFQgdGVzdCBzdWl0ZSwgdGhlcmUgaXMgbm8gbmVlZCBmb3IgZXh0cmEg
dGVzdHMuIFRoaXMgcGF0Y2gKKyAgICAgICAgZml4ZXMgdGhlIG9ubHkgZmxleC1iYXNpcy0qIHRl
c3QgY2FzZSB0aGF0IHdhcyBub3QgcGFzc2luZy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6
Y29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQpOiBSZW1vdmVkIG9ic29sZXRlIGNvbW1lbnQu
IEFkZGVkCisgICAgICAgIGEgbGF5b3V0SWZOZWVkZWQoKSBhcyB3ZSBjYW5ub3QgYmUgc3VyZSB0
aGF0IHRoZSBpdGVtIHdhcyBhbHJlYWR5IGxhaWQgb3V0IGFueSBtb3JlLgorICAgICAgICAoV2Vi
Q29yZTo6U2NvcGVkRmxleEJhc2lzQXNNYWluU2l6ZTo6U2NvcGVkRmxleEJhc2lzQXNDaGlsZE1h
aW5TaXplKTogTmV3IFJBSUkgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpTY29wZWRGbGV4QmFz
aXNBc01haW5TaXplOjp+U2NvcGVkRmxleEJhc2lzQXNDaGlsZE1haW5TaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlRmxleEJhc2VTaXplRm9yQ2hpbGQp
OiBSZW5hbWVkIGZyb20gY29tcHV0ZUlubmVyRmxleEJhc2VTaXplRm9yQ2hpbGQuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUZsZXhJdGVtTWluTWF4U2l6ZXMp
OiBBZGRlZCByZWxheW91dENoaWxkcmVuIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsZXhpYmxlQm94Ojpjb25zdHJ1Y3RGbGV4SXRlbSk6IE1vdmVkIGNvZGUgdG8gY29tcHV0
ZUZsZXhJdGVtTWluTWF4U2l6ZXMoKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxl
Qm94OjpsYXlvdXRBbmRQbGFjZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZs
ZXhpYmxlQm94Ojpjb21wdXRlSW5uZXJGbGV4QmFzZVNpemVGb3JDaGlsZCk6IERlbGV0ZWQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94Lmg6CisKIDIwMjEtMTAtMTUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgcjI4
NDIzMCwgbXkgbGFzdCBmaXhlcyB0byB0aGUgd2F0Y2ggYnVpbGQgbWFrZSBpdCBicmVhayB0ZXN0
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5k
ZXggMTA0NWQwOTZjNGQ2YmExZWJhYjgwMWVjZjQ5MjliODViMDI1Y2FkOS4uNzRlMzc2NjIxNTMy
MmFlNzFmYjhiZjQzNTE2OGMwZjM3YWNjZWQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0zNCw5ICszNCwxMSBAQAogI2luY2x1ZGUg
IkZsZXhpYmxlQm94QWxnb3JpdGhtLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIkxheW91dFJlcGFpbnRlci5oIgorI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1
ZGUgIlJlbmRlckNoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2lu
Y2x1ZGUgIlJlbmRlckxheW91dFN0YXRlLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0RW51bXMu
aCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlJlbmRlclZp
ZXcuaCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgpAQCAtNjI4LDEzICs2MzAsNyBAQCBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlTWFpbkF4aXNF
eHRlbnRGb3JDaGlsZChSZW5kZQogICAgIC8vIGhvcml6b250YWwgZmxvdyBhbmQgaG9yaXpvbnRh
bCB3cml0aW5nIG1vZGUsIG9yIHZlcnRpY2FsIGZsb3cgYW5kIHZlcnRpY2FsCiAgICAgLy8gd3Jp
dGluZyBtb2RlLiBPdGhlcndpc2Ugd2UgbmVlZCB0aGUgbG9naWNhbCBoZWlnaHQuCiAgICAgaWYg
KCFtYWluQXhpc0lzQ2hpbGRJbmxpbmVBeGlzKGNoaWxkKSkgewotICAgICAgICAvLyBXZSBkb24n
dCBoYXZlIHRvIGNoZWNrIGZvciAiYXV0byIgaGVyZSAtIGNvbXB1dGVDb250ZW50TG9naWNhbEhl
aWdodAotICAgICAgICAvLyB3aWxsIGp1c3QgcmV0dXJuIGEgbnVsbCBPcHRpb25hbCBmb3IgdGhh
dCBjYXNlIGFueXdheS4gSXQncyBzYWZlIHRvIGFjY2VzcwotICAgICAgICAvLyBzY3JvbGxiYXJM
b2dpY2FsSGVpZ2h0IGhlcmUgYmVjYXVzZSBDb21wdXRlTmV4dEZsZXhMaW5lIHdpbGwgaGF2ZQot
ICAgICAgICAvLyBhbHJlYWR5IGZvcmNlZCBsYXlvdXQgb24gdGhlIGNoaWxkLiBXZSBwcmV2aW91
c2x5IGRpZCBhIGxheW91dCBvdXQgdGhlIGNoaWxkCi0gICAgICAgIC8vIGlmIG5lY2Vzc2FyeSAo
c2VlIENvbXB1dGVOZXh0RmxleExpbmUgYW5kIHRoZSBjYWxsIHRvCi0gICAgICAgIC8vIGNoaWxk
SGFzSW50cmluc2ljTWFpbkF4aXNTaXplKSBzbyB3ZSBjYW4gYmUgc3VyZSB0aGF0IHRoZSB0d28g
aGVpZ2h0Ci0gICAgICAgIC8vIGNhbGxzIGhlcmUgd2lsbCByZXR1cm4gdXAtdG8tZGF0ZSBkYXRh
LgorICAgICAgICBjaGlsZC5sYXlvdXRJZk5lZWRlZCgpOwogICAgICAgICBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IGhlaWdodCA9IGNoaWxkLmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChz
aXplVHlwZSwgc2l6ZSwgY2FjaGVkQ2hpbGRJbnRyaW5zaWNDb250ZW50TG9naWNhbEhlaWdodChj
aGlsZCkpOwogICAgICAgICBpZiAoIWhlaWdodCkKICAgICAgICAgICAgIHJldHVybiBoZWlnaHQ7
CkBAIC0xMDAwLDI5ICs5OTYsNjIgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6Y2xlYXJDYWNo
ZWRNYWluU2l6ZUZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpCiAgICAgbV9pbnRyaW5z
aWNTaXplQWxvbmdNYWluQXhpcy5yZW1vdmUoJmNoaWxkKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5k
ZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUlubmVyRmxleEJhc2VTaXplRm9yQ2hpbGQoUmVuZGVyQm94
JiBjaGlsZCwgTGF5b3V0VW5pdCBtYWluQXhpc0JvcmRlckFuZFBhZGRpbmcpCisvLyBUaGlzIGlz
IGEgUkFJSSBjbGFzcyB0aGF0IGlzIHVzZWQgdG8gdGVtcG9yYXJpbHkgc2V0IHRoZSBmbGV4IGJh
c2lzIGFzIHRoZSBjaGlsZCBzaXplIGluIHRoZSBtYWluIGF4aXMuCitjbGFzcyBTY29wZWRGbGV4
QmFzaXNBc0NoaWxkTWFpblNpemUgeworcHVibGljOgorICAgIFNjb3BlZEZsZXhCYXNpc0FzQ2hp
bGRNYWluU2l6ZShSZW5kZXJCb3gmIGNoaWxkLCBMZW5ndGggZmxleEJhc2lzLCBib29sIG1haW5B
eGlzSXNJbmxpbmVBeGlzKQorICAgICAgICA6IG1fY2hpbGQoY2hpbGQpCisgICAgICAgICwgbV9t
YWluQXhpc0lzSW5saW5lQXhpcyhtYWluQXhpc0lzSW5saW5lQXhpcykKKyAgICB7CisgICAgICAg
IGlmIChtX21haW5BeGlzSXNJbmxpbmVBeGlzKSB7CisgICAgICAgICAgICBtX29yaWdpbmFsTGVu
Z3RoID0gbV9jaGlsZC5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpOworICAgICAgICAgICAgbV9jaGls
ZC5tdXRhYmxlU3R5bGUoKS5zZXRMb2dpY2FsV2lkdGgoTGVuZ3RoKGZsZXhCYXNpcykpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1fb3JpZ2luYWxMZW5ndGggPSBt
X2NoaWxkLnN0eWxlKCkubG9naWNhbEhlaWdodCgpOworICAgICAgICBtX2NoaWxkLm11dGFibGVT
dHlsZSgpLnNldExvZ2ljYWxIZWlnaHQoTGVuZ3RoKGZsZXhCYXNpcykpOworICAgIH0KKyAgICB+
U2NvcGVkRmxleEJhc2lzQXNDaGlsZE1haW5TaXplKCkKKyAgICB7CisgICAgICAgIGlmIChtX21h
aW5BeGlzSXNJbmxpbmVBeGlzKQorICAgICAgICAgICAgbV9jaGlsZC5tdXRhYmxlU3R5bGUoKS5z
ZXRMb2dpY2FsV2lkdGgoTGVuZ3RoKG1fb3JpZ2luYWxMZW5ndGgpKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbV9jaGlsZC5tdXRhYmxlU3R5bGUoKS5zZXRMb2dpY2FsSGVpZ2h0KExlbmd0
aChtX29yaWdpbmFsTGVuZ3RoKSk7CisgICAgfQorcHJpdmF0ZToKKyAgICBSZW5kZXJCb3gmIG1f
Y2hpbGQ7CisgICAgYm9vbCBtX21haW5BeGlzSXNJbmxpbmVBeGlzOworICAgIExlbmd0aCBtX29y
aWdpbmFsTGVuZ3RoOworfTsKKworLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1mbGV4
Ym94LyNhbGdvLW1haW4taXRlbQorTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0
ZUZsZXhCYXNlU2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaXQgbWFpbkF4
aXNCb3JkZXJBbmRQYWRkaW5nKQogewogICAgIExlbmd0aCBmbGV4QmFzaXMgPSBmbGV4QmFzaXNG
b3JDaGlsZChjaGlsZCk7CisgICAgLy8gOS4zLjIgQS4KICAgICBpZiAoY2hpbGRNYWluU2l6ZUlz
RGVmaW5pdGUoY2hpbGQsIGZsZXhCYXNpcykpCiAgICAgICAgIHJldHVybiBzdGQ6Om1heCgwX2x1
LCBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWFpbk9yUHJlZmVycmVkU2l6
ZSwgZmxleEJhc2lzKS52YWx1ZSgpKTsKIAorICAgIC8vIDkuMy4yIEIuCiAgICAgaWYgKGNoaWxk
SGFzQ29tcHV0YWJsZUFzcGVjdFJhdGlvQW5kQ3Jvc3NTaXplSXNDb25zaWRlcmVkRGVmaW5pdGUo
Y2hpbGQpKSB7CiAgICAgICAgIGNvbnN0IExlbmd0aCYgY3Jvc3NTaXplTGVuZ3RoID0gY3Jvc3NT
aXplTGVuZ3RoRm9yQ2hpbGQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgY2hpbGQpOwogICAgICAgICBy
ZXR1cm4gYWRqdXN0Q2hpbGRTaXplRm9yQXNwZWN0UmF0aW9Dcm9zc0F4aXNNaW5BbmRNYXgoY2hp
bGQsIGNvbXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nKGNoaWxkLCBjcm9zc1NpemVM
ZW5ndGgpKTsKICAgICB9CiAKLSAgICAvLyBUaGUgZmxleCBiYXNpcyBpcyBpbmRlZmluaXRlICg9
YXV0byksIHNvIHdlIG5lZWQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsIHdpZHRoIG9mIHRoZSBjaGls
ZC4KLSAgICBMYXlvdXRVbml0IG1haW5BeGlzRXh0ZW50OwotICAgIGlmICghbWFpbkF4aXNJc0No
aWxkSW5saW5lQXhpcyhjaGlsZCkpIHsKLSAgICAgICAgQVNTRVJUKCFjaGlsZC5uZWVkc0xheW91
dCgpKTsKLSAgICAgICAgQVNTRVJUKG1faW50cmluc2ljU2l6ZUFsb25nTWFpbkF4aXMuY29udGFp
bnMoJmNoaWxkKSk7Ci0gICAgICAgIG1haW5BeGlzRXh0ZW50ID0gbV9pbnRyaW5zaWNTaXplQWxv
bmdNYWluQXhpcy5nZXQoJmNoaWxkKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBXZSBkb24n
dCBuZWVkIHRvIGFkZCBzY3JvbGxiYXJMb2dpY2FsV2lkdGggaGVyZSBiZWNhdXNlIHRoZSBwcmVm
ZXJyZWQKLSAgICAgICAgLy8gd2lkdGggaW5jbHVkZXMgdGhlIHNjcm9sbGJhciwgZXZlbiBmb3Ig
b3ZlcmZsb3c6IGF1dG8uCi0gICAgICAgIG1haW5BeGlzRXh0ZW50ID0gY2hpbGQubWF4UHJlZmVy
cmVkTG9naWNhbFdpZHRoKCk7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCA5LjMuMiBDLgorICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQgOS4zLjIgRC4KKworICAgIC8vIDkuMy4yIEUuIE90aGVyd2lz
ZSwgc2l6ZSB0aGUgaXRlbSBpbnRvIHRoZSBhdmFpbGFibGUgc3BhY2UgdXNpbmcgaXRzIHVzZWQg
ZmxleCBiYXNpcyBpbiBwbGFjZSBvZiBpdHMgbWFpbiBzaXplLgorICAgIHsKKyAgICAgICAgU2Nv
cGVkRmxleEJhc2lzQXNDaGlsZE1haW5TaXplIGZsZXhCYXNpc1Njb3BlKGNoaWxkLCBmbGV4QmFz
aXMsIG1haW5BeGlzSXNDaGlsZElubGluZUF4aXMoY2hpbGQpKTsKKyAgICAgICAgaWYgKG1haW5B
eGlzSXNDaGlsZElubGluZUF4aXMoY2hpbGQpKQorICAgICAgICAgICAgcmV0dXJuIGNoaWxkLm1h
eFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIC0gbWFpbkF4aXNCb3JkZXJBbmRQYWRkaW5nOworCisg
ICAgICAgIGlmIChjaGlsZEhhc0ludHJpbnNpY01haW5BeGlzU2l6ZShjaGlsZCkpCisgICAgICAg
ICAgICBjaGlsZC5zZXROZWVkc0xheW91dChNYXJrT25seVRoaXMpOworICAgICAgICBjaGlsZC5s
YXlvdXRJZk5lZWRlZCgpOworICAgICAgICByZXR1cm4gY2hpbGQubG9naWNhbEhlaWdodCgpIC0g
bWFpbkF4aXNCb3JkZXJBbmRQYWRkaW5nOwogICAgIH0KLSAgICByZXR1cm4gbWFpbkF4aXNFeHRl
bnQgLSBtYWluQXhpc0JvcmRlckFuZFBhZGRpbmc7CiB9CiAKIHZvaWQgUmVuZGVyRmxleGlibGVC
b3g6OmxheW91dEZsZXhJdGVtcyhib29sIHJlbGF5b3V0Q2hpbGRyZW4pCkBAIC0xMjYwLDcgKzEy
ODksNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpwcmVwYXJlT3JkZXJJdGVyYXRvckFuZE1h
cmdpbnMoKQogICAgIH0KIH0KIAotc3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IFJl
bmRlckZsZXhpYmxlQm94Ojpjb21wdXRlRmxleEl0ZW1NaW5NYXhTaXplcyhSZW5kZXJCb3gmIGNo
aWxkKQorc3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94
Ojpjb21wdXRlRmxleEl0ZW1NaW5NYXhTaXplcyhSZW5kZXJCb3gmIGNoaWxkLCBib29sIHJlbGF5
b3V0Q2hpbGRyZW4pCiB7CiAgICAgTGVuZ3RoIG1heCA9IG1haW5TaXplTGVuZ3RoRm9yQ2hpbGQo
TWF4U2l6ZSwgY2hpbGQpOwogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbWF4RXh0ZW50
ID0gc3RkOjpudWxsb3B0OwpAQCAtMTI3OSw4ICsxMzA4LDMwIEBAIHN0ZDo6cGFpcjxMYXlvdXRV
bml0LCBMYXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUZsZXhJdGVtTWluTWF4
U2l6ZXMoCiAgICAgICAgIExlbmd0aCBjaGlsZENyb3NzU2l6ZUxlbmd0aCA9IGNyb3NzU2l6ZUxl
bmd0aEZvckNoaWxkKE1haW5PclByZWZlcnJlZFNpemUsIGNoaWxkKTsKICAgICAgICAgaWYgKGNo
aWxkLmlzUmVuZGVyUmVwbGFjZWQoKSAmJiBjaGlsZEhhc0NvbXB1dGFibGVBc3BlY3RSYXRpbyhj
aGlsZCkgJiYgY2hpbGRDcm9zc1NpemVJc0RlZmluaXRlKGNoaWxkLCBjaGlsZENyb3NzU2l6ZUxl
bmd0aCkpCiAgICAgICAgICAgICBjb250ZW50U2l6ZSA9IGNvbXB1dGVNYWluU2l6ZUZyb21Bc3Bl
Y3RSYXRpb1VzaW5nKGNoaWxkLCBjaGlsZENyb3NzU2l6ZUxlbmd0aCk7Ci0gICAgICAgIGVsc2UK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoY2hpbGRIYXNJbnRyaW5zaWNNYWluQXhp
c1NpemUoY2hpbGQpKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBjb25kaXRpb24gaXMg
dHJ1ZSwgdGhlbiBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZCB3aWxsIGNhbGwKKyAgICAg
ICAgICAgICAgICAvLyBjaGlsZC5pbnRyaW5zaWNDb250ZW50TG9naWNhbEhlaWdodCgpIGFuZCBj
aGlsZC5zY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCksCisgICAgICAgICAgICAgICAgLy8gc28gaWYg
dGhlIGNoaWxkIGhhcyBpbnRyaW5zaWMgbWluL21heC9wcmVmZXJyZWQgc2l6ZSwgcnVuIGxheW91
dCBvbiBpdCBub3cgdG8gbWFrZSBzdXJlCisgICAgICAgICAgICAgICAgLy8gaXRzIGxvZ2ljYWwg
aGVpZ2h0IGFuZCBzY3JvbGwgYmFycyBhcmUgdXAgdG8gZGF0ZS4KKyAgICAgICAgICAgICAgICB1
cGRhdGVCbG9ja0NoaWxkRGlydHlCaXRzQmVmb3JlTGF5b3V0KHJlbGF5b3V0Q2hpbGRyZW4sIGNo
aWxkKTsKKyAgICAgICAgICAgICAgICAvLyBEb24ndCByZXNvbHZlIHBlcmNlbnRhZ2VzIGluIGNo
aWxkcmVuLiBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGZvciB0aGUgbWluLWhlaWdodCBj
YWxjdWxhdGlvbiwKKyAgICAgICAgICAgICAgICAvLyB3aGVyZSB3ZSB3YW50IHBlcmNlbnRhZ2Vz
IHRvIGJlIHRyZWF0ZWQgYXMgYXV0by4KKyAgICAgICAgICAgICAgICBpZiAoY2hpbGQubmVlZHNM
YXlvdXQoKSB8fCAhbV9pbnRyaW5zaWNTaXplQWxvbmdNYWluQXhpcy5jb250YWlucygmY2hpbGQp
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID09
IGNoaWxkLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBjaGlsZC5zZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQo
c3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2Fs
V2lkdGgoc3RkOjpudWxsb3B0KTsKKworICAgICAgICAgICAgICAgICAgICBjaGlsZC5jbGVhck92
ZXJyaWRpbmdDb250ZW50U2l6ZSgpOworICAgICAgICAgICAgICAgICAgICBjaGlsZC5zZXRDaGls
ZE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CisgICAgICAgICAgICAgICAgICAgIGNoaWxkLmxh
eW91dElmTmVlZGVkKCk7CisgICAgICAgICAgICAgICAgICAgIGNhY2hlQ2hpbGRNYWluU2l6ZShj
aGlsZCk7CisgICAgICAgICAgICAgICAgICAgIGNoaWxkLmNsZWFyT3ZlcnJpZGluZ0NvbnRhaW5p
bmdCbG9ja0NvbnRlbnRTaXplKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQog
ICAgICAgICAgICAgY29udGVudFNpemUgPSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChj
aGlsZCwgTWluU2l6ZSwgTGVuZ3RoKExlbmd0aFR5cGU6Ok1pbkNvbnRlbnQpKS52YWx1ZV9vcigw
KTsKKyAgICAgICAgfQogICAgICAgICBpZiAoY2hpbGQuaGFzSW50cmluc2ljQXNwZWN0UmF0aW8o
KSAmJiBjaGlsZC5pbnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICBjb250ZW50
U2l6ZSA9IGFkanVzdENoaWxkU2l6ZUZvckFzcGVjdFJhdGlvQ3Jvc3NBeGlzTWluQW5kTWF4KGNo
aWxkLCBjb250ZW50U2l6ZSk7CiAgICAgICAgIEFTU0VSVChjb250ZW50U2l6ZSA+PSAwKTsKQEAg
LTEzNjcsMzIgKzE0MTgsMTAgQEAgRmxleEl0ZW0gUmVuZGVyRmxleGlibGVCb3g6OmNvbnN0cnVj
dEZsZXhJdGVtKFJlbmRlckJveCYgY2hpbGQsIGJvb2wgcmVsYXlvdXRDaGkKIHsKICAgICBhdXRv
IGNoaWxkSGFkTGF5b3V0ID0gY2hpbGQuZXZlckhhZExheW91dCgpOwogICAgIGNoaWxkLmNsZWFy
T3ZlcnJpZGluZ0NvbnRlbnRTaXplKCk7Ci0gICAgaWYgKGNoaWxkSGFzSW50cmluc2ljTWFpbkF4
aXNTaXplKGNoaWxkKSkgewotICAgICAgICAvLyBJZiB0aGlzIGNvbmRpdGlvbiBpcyB0cnVlLCB0
aGVuIGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkIHdpbGwgY2FsbAotICAgICAgICAvLyBj
aGlsZC5pbnRyaW5zaWNDb250ZW50TG9naWNhbEhlaWdodCgpIGFuZCBjaGlsZC5zY3JvbGxiYXJM
b2dpY2FsSGVpZ2h0KCksCi0gICAgICAgIC8vIHNvIGlmIHRoZSBjaGlsZCBoYXMgaW50cmluc2lj
IG1pbi9tYXgvcHJlZmVycmVkIHNpemUsIHJ1biBsYXlvdXQgb24gaXQgbm93IHRvIG1ha2Ugc3Vy
ZQotICAgICAgICAvLyBpdHMgbG9naWNhbCBoZWlnaHQgYW5kIHNjcm9sbCBiYXJzIGFyZSB1cCB0
byBkYXRlLgotICAgICAgICB1cGRhdGVCbG9ja0NoaWxkRGlydHlCaXRzQmVmb3JlTGF5b3V0KHJl
bGF5b3V0Q2hpbGRyZW4sIGNoaWxkKTsKLSAgICAgICAgLy8gRG9uJ3QgcmVzb2x2ZSBwZXJjZW50
YWdlcyBpbiBjaGlsZHJlbi4gVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBmb3IgdGhlIG1p
bi1oZWlnaHQgY2FsY3VsYXRpb24sCi0gICAgICAgIC8vIHdoZXJlIHdlIHdhbnQgcGVyY2VudGFn
ZXMgdG8gYmUgdHJlYXRlZCBhcyBhdXRvLiBGb3IgZmxleC1iYXNpcyBpdHNlbGYsIHRoaXMgaXMg
bm90IGEgcHJvYmxlbSBiZWNhdXNlCi0gICAgICAgIC8vIGJ5IGRlZmluaXRpb24gd2UgaGF2ZSBh
biBpbmRlZmluaXRlIGZsZXggYmFzaXMgaGVyZSBhbmQgdGh1cyBwZXJjZW50YWdlcyBzaG91bGQg
bm90IHJlc29sdmUuCi0gICAgICAgIGlmIChjaGlsZC5uZWVkc0xheW91dCgpIHx8ICFtX2ludHJp
bnNpY1NpemVBbG9uZ01haW5BeGlzLmNvbnRhaW5zKCZjaGlsZCkpIHsKLSAgICAgICAgICAgIGlm
IChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID09IGNoaWxkLmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkpCi0gICAgICAgICAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9j
a0NvbnRlbnRMb2dpY2FsSGVpZ2h0KHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRM
b2dpY2FsV2lkdGgoc3RkOjpudWxsb3B0KTsKLSAgICAgICAgICAgIGNoaWxkLmNsZWFyT3ZlcnJp
ZGluZ0NvbnRlbnRTaXplKCk7Ci0gICAgICAgICAgICBjaGlsZC5zZXRDaGlsZE5lZWRzTGF5b3V0
KE1hcmtPbmx5VGhpcyk7Ci0gICAgICAgICAgICBjaGlsZC5sYXlvdXRJZk5lZWRlZCgpOwotICAg
ICAgICAgICAgY2FjaGVDaGlsZE1haW5TaXplKGNoaWxkKTsKLSAgICAgICAgICAgIGNoaWxkLmNs
ZWFyT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplKCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgCiAgICAgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nID0gaXNIb3Jpem9udGFs
RmxvdygpID8gY2hpbGQuaG9yaXpvbnRhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSA6IGNoaWxk
LnZlcnRpY2FsQm9yZGVyQW5kUGFkZGluZ0V4dGVudCgpOwotICAgIExheW91dFVuaXQgY2hpbGRJ
bm5lckZsZXhCYXNlU2l6ZSA9IGNvbXB1dGVJbm5lckZsZXhCYXNlU2l6ZUZvckNoaWxkKGNoaWxk
LCBib3JkZXJBbmRQYWRkaW5nKTsKKyAgICBMYXlvdXRVbml0IGNoaWxkRmxleEJhc2VTaXplID0g
Y29tcHV0ZUZsZXhCYXNlU2l6ZUZvckNoaWxkKGNoaWxkLCBib3JkZXJBbmRQYWRkaW5nKTsKICAg
ICBMYXlvdXRVbml0IG1hcmdpbiA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLmhvcml6b250
YWxNYXJnaW5FeHRlbnQoKSA6IGNoaWxkLnZlcnRpY2FsTWFyZ2luRXh0ZW50KCk7Ci0gICAgcmV0
dXJuIEZsZXhJdGVtKGNoaWxkLCBjaGlsZElubmVyRmxleEJhc2VTaXplLCBib3JkZXJBbmRQYWRk
aW5nLCBtYXJnaW4sIGNvbXB1dGVGbGV4SXRlbU1pbk1heFNpemVzKGNoaWxkKSwgY2hpbGRIYWRM
YXlvdXQpOworICAgIHJldHVybiBGbGV4SXRlbShjaGlsZCwgY2hpbGRGbGV4QmFzZVNpemUsIGJv
cmRlckFuZFBhZGRpbmcsIG1hcmdpbiwgY29tcHV0ZUZsZXhJdGVtTWluTWF4U2l6ZXMoY2hpbGQs
IHJlbGF5b3V0Q2hpbGRyZW4pLCBjaGlsZEhhZExheW91dCk7CiB9CiAgICAgCiB2b2lkIFJlbmRl
ckZsZXhpYmxlQm94OjpmcmVlemVWaW9sYXRpb25zKFZlY3RvcjxGbGV4SXRlbSo+JiB2aW9sYXRp
b25zLCBMYXlvdXRVbml0JiBhdmFpbGFibGVGcmVlU3BhY2UsIGRvdWJsZSYgdG90YWxGbGV4R3Jv
dywgZG91YmxlJiB0b3RhbEZsZXhTaHJpbmssIGRvdWJsZSYgdG90YWxXZWlnaHRlZEZsZXhTaHJp
bmspCkBAIC0xODg4LDcgKzE5MTcsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRB
bmRQbGFjZUNoaWxkcmVuKExheW91dFVuaXQmIGNyb3NzQXhpc09mZnNldCwgVmVjdAogICAgICAg
ICAgICAgcmVzZXRBdXRvTWFyZ2luc0FuZExvZ2ljYWxUb3BJbkNyb3NzQXhpcyhjaGlsZCk7CiAg
ICAgICAgIH0KICAgICAgICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBmb3JjZWQgcmVsYXlvdXQg
Zm9yIG9ydGhvZ29uYWwgZmxvd2luZyBjaGlsZHJlbiBpbgotICAgICAgICAvLyBjb21wdXRlSW5u
ZXJGbGV4QmFzZVNpemVGb3JDaGlsZC4KKyAgICAgICAgLy8gY29tcHV0ZUZsZXhCYXNlU2l6ZUZv
ckNoaWxkLgogICAgICAgICBib29sIGZvcmNlQ2hpbGRSZWxheW91dCA9IHJlbGF5b3V0Q2hpbGRy
ZW4gJiYgIW1fcmVsYWlkT3V0Q2hpbGRyZW4uY29udGFpbnMoJmNoaWxkKTsKICAgICAgICAgaWYg
KCFmb3JjZUNoaWxkUmVsYXlvdXQgJiYgY2hpbGRIYXNQZXJjZW50SGVpZ2h0RGVzY2VuZGFudHMo
Y2hpbGQpKSB7CiAgICAgICAgICAgICAvLyBIYXZlIHRvIGZvcmNlIGFub3RoZXIgcmVsYXlvdXQg
ZXZlbiB0aG91Z2ggdGhlIGNoaWxkIGlzIHNpemVkCkBAIC0yMTQzLDcgKzIxNzIsNyBAQCB2b2lk
IFJlbmRlckZsZXhpYmxlQm94OjphcHBseVN0cmV0Y2hBbGlnbm1lbnRUb0NoaWxkKFJlbmRlckJv
eCYgY2hpbGQsIExheW91dFVuaQogICAgIH0gZWxzZSBpZiAoIW1haW5BeGlzSXNDaGlsZElubGlu
ZUF4aXMoY2hpbGQpICYmIGNoaWxkLnN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNBdXRvKCkpIHsK
ICAgICAgICAgTGF5b3V0VW5pdCBjaGlsZFdpZHRoID0gc3RkOjptYXgoMF9sdSwgbGluZUNyb3Nz
QXhpc0V4dGVudCAtIGNyb3NzQXhpc01hcmdpbkV4dGVudEZvckNoaWxkKGNoaWxkKSk7CiAgICAg
ICAgIGNoaWxkV2lkdGggPSBjaGlsZC5jb25zdHJhaW5Mb2dpY2FsV2lkdGhJbkZyYWdtZW50QnlN
aW5NYXgoY2hpbGRXaWR0aCwgY3Jvc3NBeGlzQ29udGVudEV4dGVudCgpLCAqdGhpcywgbnVsbHB0
cik7Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChjaGlsZFdpZHRoICE9IGNoaWxkLmxvZ2ljYWxX
aWR0aCgpKSB7CiAgICAgICAgICAgICBjaGlsZC5zZXRPdmVycmlkaW5nTG9naWNhbFdpZHRoKGNo
aWxkV2lkdGgpOwogICAgICAgICAgICAgY2hpbGQuc2V0Q2hpbGROZWVkc0xheW91dChNYXJrT25s
eVRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApp
bmRleCAxODYzZDM3NGU1MzE2YzMxZTIxNjk4NzdkZTNhZGJkMTc3OTcxM2VjLi5jZmFlMzVjN2I4
ZDA1MGRmNDQwOTE4NjIyMDg3MmIwNGUzNmNkYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApAQCAtMTUwLDcgKzE1MCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb21wdXRlQ2hpbGRJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKFJlbmRlck9iamVjdCYs
IExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRo
KSBjb25zdCBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVNYWluU2l6ZUZyb21Bc3Bl
Y3RSYXRpb1VzaW5nKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIExlbmd0aCBjcm9zc1NpemVMZW5n
dGgpIGNvbnN0OwogICAgIHZvaWQgc2V0Rmxvd0F3YXJlTG9jYXRpb25Gb3JDaGlsZChSZW5kZXJC
b3gmIGNoaWxkLCBjb25zdCBMYXlvdXRQb2ludCYpOwotICAgIExheW91dFVuaXQgY29tcHV0ZUlu
bmVyRmxleEJhc2VTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBtYWlu
QXhpc0JvcmRlckFuZFBhZGRpbmcpOworICAgIExheW91dFVuaXQgY29tcHV0ZUZsZXhCYXNlU2l6
ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaXQgbWFpbkF4aXNCb3JkZXJBbmRQ
YWRkaW5nKTsKICAgICB2b2lkIGFkanVzdEFsaWdubWVudEZvckNoaWxkKFJlbmRlckJveCYgY2hp
bGQsIExheW91dFVuaXQpOwogICAgIEl0ZW1Qb3NpdGlvbiBhbGlnbm1lbnRGb3JDaGlsZChjb25z
dCBSZW5kZXJCb3gmIGNoaWxkKSBjb25zdDsKICAgICBib29sIGNhbkNvbXB1dGVQZXJjZW50YWdl
RmxleEJhc2lzKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIGNvbnN0IExlbmd0aCYgZmxleEJhc2lz
LCBVcGRhdGVQZXJjZW50YWdlSGVpZ2h0RGVzY2VuZGFudHMpOwpAQCAtMTc2LDcgKzE3Niw3IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgTGF5b3V0VW5pdCBjb21wdXRlQ2hpbGRNYXJnaW5WYWx1ZShM
ZW5ndGggbWFyZ2luKTsKICAgICB2b2lkIHByZXBhcmVPcmRlckl0ZXJhdG9yQW5kTWFyZ2lucygp
OwotICAgIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBMYXlvdXRVbml0PiBjb21wdXRlRmxleEl0ZW1N
aW5NYXhTaXplcyhSZW5kZXJCb3gmIGNoaWxkKTsKKyAgICBzdGQ6OnBhaXI8TGF5b3V0VW5pdCwg
TGF5b3V0VW5pdD4gY29tcHV0ZUZsZXhJdGVtTWluTWF4U2l6ZXMoUmVuZGVyQm94JiBjaGlsZCwg
Ym9vbCByZWxheW91dENoaWxkcmVuKTsKICAgICBMYXlvdXRVbml0IGFkanVzdENoaWxkU2l6ZUZv
ckFzcGVjdFJhdGlvQ3Jvc3NBeGlzTWluQW5kTWF4KGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIExh
eW91dFVuaXQgY2hpbGRTaXplKTsKICAgICBGbGV4SXRlbSBjb25zdHJ1Y3RGbGV4SXRlbShSZW5k
ZXJCb3gmLCBib29sIHJlbGF5b3V0Q2hpbGRyZW4pOwogICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZlMTkwNGJhNDA3
NDJjNTM3YmNlMmY3NmNhOGU1MzU0NjU2MjFkM2IuLmQ2OTI3ODU1OWM0NGQ0Mzg4NjM1YjE1ZDQ5
NDRhODhmNjRjNjVmODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wOS0yNCAgU2VyZ2lv
IFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbY3NzLWZsZXhi
b3hdIEltcHJvdmUgJiBzaW1wbGlmeSB0aGUgZmxleC1iYXNpcyBjb21wdXRhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNzU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTWFudWVsIFJlZ28gQ2FzYXNub3Zhcy4KKworICAgICAgICAqIFRlc3RF
eHBlY3RhdGlvbnM6IFVuc2tpcHBlZCBmbGV4LWJhc2lzLTAxMS5odG1sIHdoaWNoIGlzIG5vdyB3
b3JraW5nIGZpbmUuCisKIDIwMjEtMTAtMTUgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgcjI4NDIzMCwgbXkgbGFzdCBmaXhlcyB0byB0aGUg
d2F0Y2ggYnVpbGQgbWFrZSBpdCBicmVhayB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNjI5
ZGU4ODc0NmE3ZDdiMjgzZTZhNDI3ZDFkM2MxMTRlOGVhOGFhMS4uNDk2OWU2MmY1MjkyYWQxMmZi
ZTg4YzYyY2VlYzJlYTllMWY1ZmYxMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC00MjIwLDkgKzQy
MjAsNiBAQCB3ZWJraXQub3JnL2IvMjIxNDc5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1mbGV4Ym94L2ZsZXhib3gtZmxleAogd2Via2l0Lm9yZy9iLzIyMTQ3OSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9mbGV4Ym94LWZsZXgt
YmFzaXMtY29udGVudC0wMDNhLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8yMjE0NzkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gv
ZmxleGJveC1mbGV4LWJhc2lzLWNvbnRlbnQtMDA0YS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiAKLSMgZmxleC1iYXNpcyB3aXRoICUuCi13ZWJraXQub3JnL2IvIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2ZsZXgtYmFzaXMtMDExLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLQogIyBGbGV4IGl0ZW0ncyBtaW58bWF4IGNvbnRlbnQgY29udHJpYnV0
aW9ucwogd2Via2l0Lm9yZy9iLzIzMDc0NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZmxleGJveC9mbGV4LWNvbnRhaW5lci1tYXgtY29udGVudC0wMDEuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDc0NyBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9mbGV4LWNvbnRhaW5lci1taW4tY29udGVudC0w
MDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443788</attachid>
            <date>2021-11-10 02:35:38 -0800</date>
            <delta_ts>2021-11-10 19:00:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230755-20211110113536.patch</filename>
            <type>text/plain</type>
            <size>26221</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdlMWE3OTk5YmM0NjIx
OTQwYzM0MjY4YWVkYTljMzljZGYwZmE4MS4uZDE4MjgwNDc4MDM4OWEwOTk1MjY0YjAxYjFiZTE2
NjgyYjBkNzBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTExLTEwICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtjc3MtZmxl
eGJveF0gSW1wcm92ZSAmIHNpbXBsaWZ5IHRoZSBmbGV4LWJhc2lzIGNvbXB1dGF0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3NTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZmxleCBiYXNp
cyBjb21wdXRhdGlvbiBoYXMgc29tZSBzcGVjaWFsIGNhc2VzIHRoYXQgcmVxdWlyZSB1cyB0byBz
aXplIHRoZSBmbGV4IGl0ZW1zICJhcyBpZiIgdGhleSBoYWQgdGhlCisgICAgICAgIGxlbmd0aCBz
cGVjaWZpZWQgYnkgZmxleC1iYXNpcyBwcm9wZXJ0eSBhcyB0aGVpciBtYWluIHNpemUgKGVpdGhl
ciB3aWR0aCBvciBoZWlnaHQgZGVwZW5kaW5nIG9uIHRoZSBmbGV4IGRpcmVjdGlvbikuCisgICAg
ICAgIEluIG9yZGVyIHRvIGRvIHRoYXQgYSBtZWNoYW5pc20gc2ltaWxhciB0byB0aGUgb3ZlcnJp
ZGluZyBzaXplcyB3YXMgaW1wbGVtZW50ZWQsIGJ1dCBpbiB0aGlzIGNhc2UsIHdlJ3JlIGRvaW5n
CisgICAgICAgIGFuIG92ZXJyaWRpbmcgb2YgdGhlIHN0eWxlLiBUaGF0IG92ZXJyaWRpbmcgc3R5
bGUgaXMgdXNlZCBkdXJpbmcgYm90aCBsYXlvdXQgYW5kIHByZWZlcnJlZCB3aWR0aCBjb21wdXRh
dGlvbnMgaWYKKyAgICAgICAgcHJlc2VudC4KKworICAgICAgICBBIG5ldyBSQUlJIGNsYXNzIGNh
bGxlZCBTY29wZWRGbGV4QmFzaXNBc0NoaWxkTWFpblNpemUgc2V0cyB0aGUgb3ZlcnJpZGluZyBi
ZWZvcmUgY29tcHV0aW5nIHRoZSBmbGV4IGJhc2Ugc2l6ZSBhbmQKKyAgICAgICAgY2xlYXJzIGl0
IGp1c3QgYWZ0ZXIgdGhlIGNhbGN1bGF0aW9ucy4gVGhpcyBpcyBkb25lIGluIHRoZSBjb21wdXRl
RmxleEJhc2VTaXplRm9yQ2hpbGQoKSBtZXRob2QgdGhhdCB3YXMgcmVuYW1lZAorICAgICAgICBm
cm9tIGNvbXB1dGVJbm5lckZsZXhCYXNlU2l6ZUZvckNoaWxkKCkgYXMgaXQgZml0cyBiZXR0ZXIg
d2l0aCB0aGUgdGVybWlub2xvZ3kgdXNlZCBpbiB0aGUgc3BlY3MuCisKKyAgICAgICAgRmxleCBi
YXNpcyBjb21wdXRhdGlvbiBpcyBhbHJlYWR5IGNvdmVyZWQgYnkgdGhlIFdQVCB0ZXN0IHN1aXRl
LCB0aGVyZSBpcyBubyBuZWVkIGZvciBleHRyYSB0ZXN0cy4gVGhpcyBwYXRjaAorICAgICAgICBm
aXhlcyB0aGUgb25seSBmbGV4LWJhc2lzLSogdGVzdCBjYXNlIHRoYXQgd2FzIG5vdCBwYXNzaW5n
IGFwYXJ0IGZyb20gYW5vdGhlciBvbmUuCisKKyAgICAgICAgVGhlIG9yaWdpbmFsIHBhdGNoIHdh
cyBjYXVzaW5nIHNldmVyZSByZWdyZXNzaW9ucyBpbiBzaXRlcyBkb2luZyBoZWF2eSB1c2FnZSBv
ZiBuZXN0ZWQgZmxleGJveGVzIGxpa2UgdHdpdHRlci5jb20gb3IKKyAgICAgICAgZ21haWwuY29t
IGJlY2F1c2UgaXQgd2FzIHJlbW92aW5nIHNvbWUgY2FjaGluZyB0aGF0IGlzIG5lZWRlZCBpbiBv
cmRlciBub3QgdG8gZG8gd2F5IHRvbyBtYW55IGxheW91dHMuIFRoZSBuZXcgb25lIGRvZXMKKyAg
ICAgICAgbm90IGhhdmUgdGhpcyBpc3N1ZS4gQSBuZXcgcGVyZiB0ZXN0IHdhcyBhZGRlZCBpbiBv
cmRlciB0byBkZXRlY3QgdGhvc2UgZXZlbnR1YWwgcmVncmVzc2lvbnMuIEluIG15IGxhcHRvcCB0
aGUgdGVzdAorICAgICAgICBhY2hpZXZlcyAxMy41ayBydW5zL3Mgd2hpbGUgd2l0aCB0aGUgb3Jp
Z2luYWwgcGF0Y2ggaXMgb25seSBjYXBhYmxlIG9mIGRvaW5nIDZrIHJ1bnMvcy4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOiBVc2UgdGhlIG92ZXJyaWRpbmcg
c3R5bGUgaWYgcHJlc2VudC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRMZW5ndGgg
Y29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2V0T3ZlcnJpZGlu
Z0xvZ2ljYWxIZWlnaHRMZW5ndGgpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6aGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRMZW5ndGggY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2xlYXJPdmVycmlkaW5nTG9naWNhbEhlaWdodExlbmd0
aCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpvdmVycmlkaW5nTG9naWNh
bFdpZHRoTGVuZ3RoIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OnNldE92ZXJyaWRpbmdMb2dpY2FsV2lkdGhMZW5ndGgpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6aGFzT3ZlcnJpZGluZ0xvZ2ljYWxXaWR0aExlbmd0aCBjb25zdCk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjbGVhck92ZXJyaWRpbmdMb2dpY2Fs
V2lkdGhMZW5ndGgpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0
ZUxvZ2ljYWxXaWR0aEluRnJhZ21lbnQgY29uc3QpOiBVc2UgdGhlIG92ZXJyaWRpbmcgc3R5bGUg
aWYgcHJlc2VudC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxI
ZWlnaHQgY29uc3QpOiBVc2UgdGhlIG92ZXJyaWRpbmcgc3R5bGUgaWYgcHJlc2VudC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZs
ZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZsZXhCYXNpc0FzQ2hpbGRN
YWluU2l6ZTo6U2NvcGVkRmxleEJhc2lzQXNDaGlsZE1haW5TaXplKTogU2V0cyB0aGUgb3ZlcnJp
ZGluZyBzdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZsZXhCYXNpc0FzQ2hpbGRNYWlu
U2l6ZTo6flNjb3BlZEZsZXhCYXNpc0FzQ2hpbGRNYWluU2l6ZSk6IENsZWFycyB0aGUgb3ZlcnJp
ZGluZyBzdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRl
RmxleEJhc2VTaXplRm9yQ2hpbGQpOiBSZW5hbWVkIGZyb20gY29tcHV0ZUlubmVyRmxleEJhc2VT
aXplRm9yQ2hpbGQoKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjptYXli
ZUNhY2hlQ2hpbGRNYWluSW50cmluc2ljU2l6ZSk6IFJlZmFjdG9yZWQgZnJvbSBjb2RlIGZyb20K
KyAgICAgICAgY29tcHV0ZUlubmVyRmxleEJhc2VTaXplRm9yQ2hpbGQoKS4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb25zdHJ1Y3RGbGV4SXRlbSk6IE1vdmVkIGNvZGUg
dG8gbWF5YmVDYWNoZUNoaWxkTWFpbkludHJpbnNpY1NpemUoKS4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlSW5uZXJGbGV4QmFzZVNpemVGb3JDaGlsZCk6IERl
bGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94Lmg6CisKIDIwMjEt
MTEtMDkgIFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICBSZS11c2UgaXND
U1NXaWRlS2V5d29yZCBpbiBDU1NWYXJpYWJsZVBhcnNlci5jcHAgJiBDU1NQcm9wZXJ0eVBhcnNl
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGQwNTAy
ZjNlMDhhN2FmZTZkZTZkZmViN2Q0ODA1MzQxNTI3ZDAyYmQuLmZkNDJhNTZhYTYyZjI4OWEzZjdk
MDhjZTMyNTA3MzE5ZjI5Zjc0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcApAQCAtMjI1Niw5ICsyMjU2LDEwIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9
IDA7CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVUb1VzZSA9IHN0eWxlKCk7Ci0gICAg
aWYgKCFpc1RhYmxlQ2VsbCgpICYmIHN0eWxlVG9Vc2UubG9naWNhbFdpZHRoKCkuaXNGaXhlZCgp
ICYmIHN0eWxlVG9Vc2UubG9naWNhbFdpZHRoKCkudmFsdWUoKSA+PSAwCi0gICAgICAgICYmICEo
aXNEZXByZWNhdGVkRmxleEl0ZW0oKSAmJiAhc3R5bGVUb1VzZS5sb2dpY2FsV2lkdGgoKS5pbnRW
YWx1ZSgpKSkKLSAgICAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtX21heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCA9IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXpp
bmcoc3R5bGVUb1VzZS5sb2dpY2FsV2lkdGgoKSk7CisgICAgYXV0byYgbGVuZ3RoVG9Vc2UgPSBo
YXNPdmVycmlkaW5nTG9naWNhbFdpZHRoTGVuZ3RoKCkgPyBvdmVycmlkaW5nTG9naWNhbFdpZHRo
TGVuZ3RoKCkgOiBzdHlsZVRvVXNlLmxvZ2ljYWxXaWR0aCgpOworICAgIGlmICghaXNUYWJsZUNl
bGwoKSAmJiBsZW5ndGhUb1VzZS5pc0ZpeGVkKCkgJiYgbGVuZ3RoVG9Vc2UudmFsdWUoKSA+PSAw
CisgICAgICAgICYmICEoaXNEZXByZWNhdGVkRmxleEl0ZW0oKSAmJiAhbGVuZ3RoVG9Vc2UuaW50
VmFsdWUoKSkpCisgICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gbV9tYXhQcmVm
ZXJyZWRMb2dpY2FsV2lkdGggPSBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6
aW5nKGxlbmd0aFRvVXNlKTsKICAgICBlbHNlIGlmIChzaG91bGRDb21wdXRlTG9naWNhbFdpZHRo
RnJvbUFzcGVjdFJhdGlvKCkpCiAgICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0g
bV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBjb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVj
dFJhdGlvKCk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApp
bmRleCBiMTIwMjEyMDc1OTRiODQ3ZjJiYzJlMTYyZGIxN2NiYjBjYjg2ZWQ5Li4zYmYzZjMzMDEw
MDM0NDc1YjA1YjZhZDRmODc3YjcyOTk3MWMxNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtMTA2LDYgKzEwNiwxMCBAQCB0eXBlZGVmIEhhc2hNYXA8Y29uc3Qg
UmVuZGVyQm94KiwgTGF5b3V0VW5pdD4gT3ZlcnJpZGVTaXplTWFwOwogc3RhdGljIE92ZXJyaWRl
U2l6ZU1hcCogZ092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0TWFwID0gbnVsbHB0cjsKIHN0YXRpYyBP
dmVycmlkZVNpemVNYXAqIGdPdmVycmlkaW5nTG9naWNhbFdpZHRoTWFwID0gbnVsbHB0cjsKIAor
dHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlckJveCosIExlbmd0aD4gT3ZlcnJpZGluZ0xlbmd0
aE1hcDsKK3N0YXRpYyBPdmVycmlkaW5nTGVuZ3RoTWFwKiBnT3ZlcnJpZGluZ0xvZ2ljYWxIZWln
aHRMZW5ndGhNYXAgPSBudWxscHRyOworc3RhdGljIE92ZXJyaWRpbmdMZW5ndGhNYXAqIGdPdmVy
cmlkaW5nTG9naWNhbFdpZHRoTGVuZ3RoTWFwID0gbnVsbHB0cjsKKwogLy8gRklYTUU6IFdlIHNo
b3VsZCBzdG9yZSB0aGVzZSBiYXNlZCBvbiBwaHlzaWNhbCBkaXJlY3Rpb24uCiB0eXBlZGVmIEhh
c2hNYXA8Y29uc3QgUmVuZGVyQm94Kiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0Pj4gT3ZlcnJp
ZGVPcHRpb25hbFNpemVNYXA7CiBzdGF0aWMgT3ZlcnJpZGVPcHRpb25hbFNpemVNYXAqIGdPdmVy
cmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHRNYXAgPSBudWxscHRyOwpA
QCAtMTMxNSw2ICsxMzE5LDU0IEBAIHZvaWQgUmVuZGVyQm94OjpjbGVhck92ZXJyaWRpbmdDb250
YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpCiAgICAgICAgIGdPdmVycmlkaW5nQ29u
dGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHRNYXAtPnJlbW92ZSh0aGlzKTsKIH0KIAor
TGVuZ3RoIFJlbmRlckJveDo6b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRMZW5ndGgoKSBjb25zdAor
eworICAgIEFTU0VSVChoYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodExlbmd0aCgpKTsKKyAgICBy
ZXR1cm4gZ092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0TGVuZ3RoTWFwLT5nZXQodGhpcyk7Cit9CisK
K3ZvaWQgUmVuZGVyQm94OjpzZXRPdmVycmlkaW5nTG9naWNhbEhlaWdodExlbmd0aChjb25zdCBM
ZW5ndGgmIGhlaWdodCkKK3sKKyAgICBpZiAoIWdPdmVycmlkaW5nTG9naWNhbEhlaWdodExlbmd0
aE1hcCkKKyAgICAgICAgZ092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0TGVuZ3RoTWFwID0gbmV3IE92
ZXJyaWRpbmdMZW5ndGhNYXAoKTsKKyAgICBnT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRMZW5ndGhN
YXAtPnNldCh0aGlzLCBoZWlnaHQpOworfQorCitib29sIFJlbmRlckJveDo6aGFzT3ZlcnJpZGlu
Z0xvZ2ljYWxIZWlnaHRMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBnT3ZlcnJpZGluZ0xv
Z2ljYWxIZWlnaHRMZW5ndGhNYXAgJiYgZ092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0TGVuZ3RoTWFw
LT5jb250YWlucyh0aGlzKTsKK30KKwordm9pZCBSZW5kZXJCb3g6OmNsZWFyT3ZlcnJpZGluZ0xv
Z2ljYWxIZWlnaHRMZW5ndGgoKQoreworICAgIGlmIChnT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRM
ZW5ndGhNYXApCisgICAgICAgIGdPdmVycmlkaW5nTG9naWNhbEhlaWdodExlbmd0aE1hcC0+cmVt
b3ZlKHRoaXMpOworfQorCitMZW5ndGggUmVuZGVyQm94OjpvdmVycmlkaW5nTG9naWNhbFdpZHRo
TGVuZ3RoKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaGFzT3ZlcnJpZGluZ0xvZ2ljYWxXaWR0aExl
bmd0aCgpKTsKKyAgICByZXR1cm4gZ092ZXJyaWRpbmdMb2dpY2FsV2lkdGhMZW5ndGhNYXAtPmdl
dCh0aGlzKTsKK30KKwordm9pZCBSZW5kZXJCb3g6OnNldE92ZXJyaWRpbmdMb2dpY2FsV2lkdGhM
ZW5ndGgoY29uc3QgTGVuZ3RoJiBoZWlnaHQpCit7CisgICAgaWYgKCFnT3ZlcnJpZGluZ0xvZ2lj
YWxXaWR0aExlbmd0aE1hcCkKKyAgICAgICAgZ092ZXJyaWRpbmdMb2dpY2FsV2lkdGhMZW5ndGhN
YXAgPSBuZXcgT3ZlcnJpZGluZ0xlbmd0aE1hcCgpOworICAgIGdPdmVycmlkaW5nTG9naWNhbFdp
ZHRoTGVuZ3RoTWFwLT5zZXQodGhpcywgaGVpZ2h0KTsKK30KKworYm9vbCBSZW5kZXJCb3g6Omhh
c092ZXJyaWRpbmdMb2dpY2FsV2lkdGhMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBnT3Zl
cnJpZGluZ0xvZ2ljYWxXaWR0aExlbmd0aE1hcCAmJiBnT3ZlcnJpZGluZ0xvZ2ljYWxXaWR0aExl
bmd0aE1hcC0+Y29udGFpbnModGhpcyk7Cit9CisKK3ZvaWQgUmVuZGVyQm94OjpjbGVhck92ZXJy
aWRpbmdMb2dpY2FsV2lkdGhMZW5ndGgoKQoreworICAgIGlmIChnT3ZlcnJpZGluZ0xvZ2ljYWxX
aWR0aExlbmd0aE1hcCkKKyAgICAgICAgZ092ZXJyaWRpbmdMb2dpY2FsV2lkdGhMZW5ndGhNYXAt
PnJlbW92ZSh0aGlzKTsKK30KKwogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmFkanVzdEJvcmRlckJv
eExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhjb25zdCBMZW5ndGgmIGxvZ2ljYWxXaWR0aCkgY29u
c3QKIHsKICAgICBhdXRvIHdpZHRoID0gTGF5b3V0VW5pdCB7IGxvZ2ljYWxXaWR0aC52YWx1ZSgp
IH07CkBAIC0yNjI1LDcgKzI2NzcsMTEgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2Fs
V2lkdGhJbkZyYWdtZW50KExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYgY29tcHUKICAgICB0
cmVhdEFzUmVwbGFjZWQgPSB0cmVhdEFzUmVwbGFjZWQgJiYgKCFpc0dyaWRJdGVtKCkgfHwgIWhh
c1N0cmV0Y2hlZExvZ2ljYWxXaWR0aCgpKTsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZVRvVXNlID0gc3R5bGUoKTsKLSAgICBMZW5ndGggbG9naWNhbFdpZHRoTGVuZ3RoID0gdHJlYXRB
c1JlcGxhY2VkID8gTGVuZ3RoKGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aCgpLCBMZW5ndGhU
eXBlOjpGaXhlZCkgOiBzdHlsZVRvVXNlLmxvZ2ljYWxXaWR0aCgpOworICAgIExlbmd0aCBsb2dp
Y2FsV2lkdGhMZW5ndGg7CisgICAgaWYgKGhhc092ZXJyaWRpbmdMb2dpY2FsV2lkdGhMZW5ndGgo
KSkKKyAgICAgICAgbG9naWNhbFdpZHRoTGVuZ3RoID0gb3ZlcnJpZGluZ0xvZ2ljYWxXaWR0aExl
bmd0aCgpOworICAgIGVsc2UKKyAgICAgICAgbG9naWNhbFdpZHRoTGVuZ3RoID0gdHJlYXRBc1Jl
cGxhY2VkID8gTGVuZ3RoKGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aCgpLCBMZW5ndGhUeXBl
OjpGaXhlZCkgOiBzdHlsZVRvVXNlLmxvZ2ljYWxXaWR0aCgpOwogCiAgICAgUmVuZGVyQmxvY2sm
IGNiID0gKmNvbnRhaW5pbmdCbG9jaygpOwogICAgIExheW91dFVuaXQgY29udGFpbmVyTG9naWNh
bFdpZHRoID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgY29udGFpbmluZ0Jsb2NrTG9naWNhbFdp
ZHRoRm9yQ29udGVudEluRnJhZ21lbnQoZnJhZ21lbnQpKTsKQEAgLTI2NTAsNyArMjcwNiw3IEBA
IHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5GcmFnbWVudChMb2dpY2FsRXh0
ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1CiAgICAgfSBlbHNlIGlmIChzaG91bGRDb21wdXRlTG9n
aWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvKCkgJiYgc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5pc0F1
dG8oKSkgewogICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IGNvbXB1dGVMb2dpY2Fs
V2lkdGhGcm9tQXNwZWN0UmF0aW8oZnJhZ21lbnQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIExh
eW91dFVuaXQgcHJlZmVycmVkV2lkdGggPSBjb21wdXRlTG9naWNhbFdpZHRoSW5GcmFnbWVudFVz
aW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlVG9Vc2UubG9naWNhbFdpZHRoKCksIGNvbnRh
aW5lcldpZHRoSW5JbmxpbmVEaXJlY3Rpb24sIGNiLCBmcmFnbWVudCk7CisgICAgICAgIExheW91
dFVuaXQgcHJlZmVycmVkV2lkdGggPSBjb21wdXRlTG9naWNhbFdpZHRoSW5GcmFnbWVudFVzaW5n
KE1haW5PclByZWZlcnJlZFNpemUsIGhhc092ZXJyaWRpbmdMb2dpY2FsV2lkdGhMZW5ndGgoKSA/
IGxvZ2ljYWxXaWR0aExlbmd0aCA6IHN0eWxlVG9Vc2UubG9naWNhbFdpZHRoKCksIGNvbnRhaW5l
cldpZHRoSW5JbmxpbmVEaXJlY3Rpb24sIGNiLCBmcmFnbWVudCk7CiAgICAgICAgIGNvbXB1dGVk
VmFsdWVzLm1fZXh0ZW50ID0gY29uc3RyYWluTG9naWNhbFdpZHRoSW5GcmFnbWVudEJ5TWluTWF4
KHByZWZlcnJlZFdpZHRoLCBjb250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0aW9uLCBjYiwgZnJh
Z21lbnQpOwogICAgIH0KIApAQCAtMzA1NCw2ICszMTEwLDcgQEAgUmVuZGVyQm94OjpMb2dpY2Fs
RXh0ZW50Q29tcHV0ZWRWYWx1ZXMgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlv
dXRVbmkKICAgICAgICAgYm9vbCBzdHJldGNoaW5nID0gcGFyZW50KCktPnN0eWxlKCkuYm94QWxp
Z24oKSA9PSBCb3hBbGlnbm1lbnQ6OlN0cmV0Y2g7CiAgICAgICAgIGJvb2wgdHJlYXRBc1JlcGxh
Y2VkID0gc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2VkKCkgJiYgKCFpbkhvcml6b250YWxCb3gg
fHwgIXN0cmV0Y2hpbmcpOwogICAgICAgICBib29sIGNoZWNrTWluTWF4SGVpZ2h0ID0gZmFsc2U7
CisgICAgICAgIGF1dG8mIGxvZ2ljYWxIZWlnaHRJblVzZSA9IGhhc092ZXJyaWRpbmdMb2dpY2Fs
SGVpZ2h0TGVuZ3RoKCkgPyBvdmVycmlkaW5nTG9naWNhbEhlaWdodExlbmd0aCgpIDogc3R5bGUo
KS5sb2dpY2FsSGVpZ2h0KCk7CiAKICAgICAgICAgLy8gVGhlIHBhcmVudCBib3ggaXMgZmxleGlu
ZyB1cywgc28gaXQgaGFzIGluY3JlYXNlZCBvciBkZWNyZWFzZWQgb3VyIGhlaWdodC4gIFdlIGhh
dmUgdG8KICAgICAgICAgLy8gZ3JhYiBvdXIgY2FjaGVkIGZsZXhpYmxlIGhlaWdodC4KQEAgLTMw
NjQsNyArMzEyMSw3IEBAIFJlbmRlckJveDo6TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIFJl
bmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pCiAgICAgICAgIH0gZWxzZSBp
ZiAodHJlYXRBc1JlcGxhY2VkKQogICAgICAgICAgICAgaCA9IExlbmd0aChjb21wdXRlUmVwbGFj
ZWRMb2dpY2FsSGVpZ2h0KCkgKyBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpLCBMZW5n
dGhUeXBlOjpGaXhlZCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaCA9IHN0eWxlKCku
bG9naWNhbEhlaWdodCgpOworICAgICAgICAgICAgaCA9IGxvZ2ljYWxIZWlnaHRJblVzZTsKICAg
ICAgICAgICAgIGNoZWNrTWluTWF4SGVpZ2h0ID0gdHJ1ZTsKICAgICAgICAgfQogCkBAIC0zMDkx
LDcgKzMxNDgsNyBAQCBSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBSZW5k
ZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaQogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICBpZiAoaW50cmluc2ljSGVpZ2h0KQogICAgICAgICAgICAgICAg
ICAgICAqaW50cmluc2ljSGVpZ2h0IC09IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCk7
Ci0gICAgICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2lu
ZyhNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKSwgaW50cmluc2lj
SGVpZ2h0KS52YWx1ZV9vcihjb21wdXRlZFZhbHVlcy5tX2V4dGVudCk7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0UmVzdWx0ID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJy
ZWRTaXplLCBsb2dpY2FsSGVpZ2h0SW5Vc2UsIGludHJpbnNpY0hlaWdodCkudmFsdWVfb3IoY29t
cHV0ZWRWYWx1ZXMubV9leHRlbnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaGVpZ2h0
UmVzdWx0ID0gY29uc3RyYWluTG9naWNhbEhlaWdodEJ5TWluTWF4KGhlaWdodFJlc3VsdCwgaW50
cmluc2ljSGVpZ2h0KTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaAppbmRleCBkNDhmMDNjNGY0MDQ1ZjdjODJjNzkxNDZhMTRiNDQxNThlYTIwYjkyLi44
ZjA4NjM1YzU0ZDMyMjQzZGEzOTg4NzY0ZWU0M2ViNGYzNmNjMmRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCkBAIC0zNDQsNiArMzQ0LDE4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsZWFyT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplKCk7CiAgICAgdm9pZCBj
bGVhck92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpOwogCisg
ICAgLy8gVGhlc2UgYXJlIGN1cnJlbnRseSBvbmx5IHVzZWQgYnkgRmxleGJveCBjb2RlLiBJbiBz
b21lIGNhc2VzIHdlIG11c3QgbGF5b3V0IGZsZXggaXRlbXMgd2l0aCBhIGRpZmZlcmVudCBtYWlu
IHNpemUKKyAgICAvLyAodGhlIHNpemUgaW4gdGhlIG1haW4gZGlyZWN0aW9uKSB0aGFuIHRoZSBv
bmUgc3BlY2lmaWVkIGJ5IHRoZSBpdGVtIGluIG9yZGVyIHRvIGNvbXB1dGUgdGhlIHZhbHVlIG9m
IGZsZXggYmFzaXMsIGkuZS4sCisgICAgLy8gdGhlIGluaXRpYWwgbWFpbiBzaXplIG9mIHRoZSBm
bGV4IGl0ZW0gYmVmb3JlIHRoZSBmcmVlIHNwYWNlIGlzIGRpc3RyaWJ1dGVkLgorICAgIExlbmd0
aCBvdmVycmlkaW5nTG9naWNhbEhlaWdodExlbmd0aCgpIGNvbnN0OworICAgIExlbmd0aCBvdmVy
cmlkaW5nTG9naWNhbFdpZHRoTGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRPdmVycmlkaW5n
TG9naWNhbEhlaWdodExlbmd0aChjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lkIHNldE92ZXJyaWRp
bmdMb2dpY2FsV2lkdGhMZW5ndGgoY29uc3QgTGVuZ3RoJik7CisgICAgYm9vbCBoYXNPdmVycmlk
aW5nTG9naWNhbEhlaWdodExlbmd0aCgpIGNvbnN0OworICAgIGJvb2wgaGFzT3ZlcnJpZGluZ0xv
Z2ljYWxXaWR0aExlbmd0aCgpIGNvbnN0OworICAgIHZvaWQgY2xlYXJPdmVycmlkaW5nTG9naWNh
bEhlaWdodExlbmd0aCgpOworICAgIHZvaWQgY2xlYXJPdmVycmlkaW5nTG9naWNhbFdpZHRoTGVu
Z3RoKCk7CisKICAgICBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyRWxlbWVu
dCYsIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSBudWxs
cHRyKSBjb25zdCBvdmVycmlkZTsKICAgICAKICAgICBMYXlvdXRVbml0IGFkanVzdEJvcmRlckJv
eExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhjb25zdCBMZW5ndGgmIGxvZ2ljYWxXaWR0aCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApp
bmRleCAxMDQ1ZDA5NmM0ZDZiYTFlYmFiODAxZWNmNDkyOWI4NWIwMjVjYWQ5Li4yZTI4OTRlY2Nj
Y2I2Y2IyZjc4Y2JmYTlhMzUyYzgwMDA1MGI4MDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTEwMDAsMTggKzEwMDAsNTMgQEAgdm9p
ZCBSZW5kZXJGbGV4aWJsZUJveDo6Y2xlYXJDYWNoZWRNYWluU2l6ZUZvckNoaWxkKGNvbnN0IFJl
bmRlckJveCYgY2hpbGQpCiAgICAgbV9pbnRyaW5zaWNTaXplQWxvbmdNYWluQXhpcy5yZW1vdmUo
JmNoaWxkKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUlubmVy
RmxleEJhc2VTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBtYWluQXhp
c0JvcmRlckFuZFBhZGRpbmcpCisvLyBUaGlzIGlzIGEgUkFJSSBjbGFzcyB0aGF0IGlzIHVzZWQg
dG8gdGVtcG9yYXJpbHkgc2V0IHRoZSBmbGV4IGJhc2lzIGFzIHRoZSBjaGlsZCBzaXplIGluIHRo
ZSBtYWluIGF4aXMuCitjbGFzcyBTY29wZWRGbGV4QmFzaXNBc0NoaWxkTWFpblNpemUgeworcHVi
bGljOgorICAgIFNjb3BlZEZsZXhCYXNpc0FzQ2hpbGRNYWluU2l6ZShSZW5kZXJCb3gmIGNoaWxk
LCBMZW5ndGggZmxleEJhc2lzLCBib29sIG1haW5BeGlzSXNJbmxpbmVBeGlzKQorICAgICAgICA6
IG1fY2hpbGQoY2hpbGQpCisgICAgICAgICwgbV9tYWluQXhpc0lzSW5saW5lQXhpcyhtYWluQXhp
c0lzSW5saW5lQXhpcykKKyAgICB7CisgICAgICAgIGlmIChtX21haW5BeGlzSXNJbmxpbmVBeGlz
KQorICAgICAgICAgICAgbV9jaGlsZC5zZXRPdmVycmlkaW5nTG9naWNhbFdpZHRoTGVuZ3RoKGZs
ZXhCYXNpcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fY2hpbGQuc2V0T3ZlcnJpZGlu
Z0xvZ2ljYWxIZWlnaHRMZW5ndGgoZmxleEJhc2lzKTsKKyAgICB9CisgICAgflNjb3BlZEZsZXhC
YXNpc0FzQ2hpbGRNYWluU2l6ZSgpCisgICAgeworICAgICAgICBpZiAobV9tYWluQXhpc0lzSW5s
aW5lQXhpcykKKyAgICAgICAgICAgIG1fY2hpbGQuY2xlYXJPdmVycmlkaW5nTG9naWNhbFdpZHRo
TGVuZ3RoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fY2hpbGQuY2xlYXJPdmVycmlk
aW5nTG9naWNhbEhlaWdodExlbmd0aCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZW5kZXJC
b3gmIG1fY2hpbGQ7CisgICAgYm9vbCBtX21haW5BeGlzSXNJbmxpbmVBeGlzOworfTsKKworLy8g
aHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1mbGV4Ym94LyNhbGdvLW1haW4taXRlbQorTGF5
b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUZsZXhCYXNlU2l6ZUZvckNoaWxkKFJl
bmRlckJveCYgY2hpbGQsIExheW91dFVuaXQgbWFpbkF4aXNCb3JkZXJBbmRQYWRkaW5nLCBib29s
IHJlbGF5b3V0Q2hpbGRyZW4pCiB7CiAgICAgTGVuZ3RoIGZsZXhCYXNpcyA9IGZsZXhCYXNpc0Zv
ckNoaWxkKGNoaWxkKTsKKyAgICBTY29wZWRGbGV4QmFzaXNBc0NoaWxkTWFpblNpemUgc2NvcGVk
KGNoaWxkLCBmbGV4QmFzaXNGb3JDaGlsZChjaGlsZCksIG1haW5BeGlzSXNDaGlsZElubGluZUF4
aXMoY2hpbGQpKTsKKworICAgIG1heWJlQ2FjaGVDaGlsZE1haW5JbnRyaW5zaWNTaXplKGNoaWxk
LCByZWxheW91dENoaWxkcmVuKTsKKworICAgIC8vIDkuMi4zIEEuCiAgICAgaWYgKGNoaWxkTWFp
blNpemVJc0RlZmluaXRlKGNoaWxkLCBmbGV4QmFzaXMpKQogICAgICAgICByZXR1cm4gc3RkOjpt
YXgoMF9sdSwgY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1haW5PclByZWZl
cnJlZFNpemUsIGZsZXhCYXNpcykudmFsdWUoKSk7CiAKKyAgICAvLyA5LjIuMyBCLgogICAgIGlm
IChjaGlsZEhhc0NvbXB1dGFibGVBc3BlY3RSYXRpb0FuZENyb3NzU2l6ZUlzQ29uc2lkZXJlZERl
ZmluaXRlKGNoaWxkKSkgewogICAgICAgICBjb25zdCBMZW5ndGgmIGNyb3NzU2l6ZUxlbmd0aCA9
IGNyb3NzU2l6ZUxlbmd0aEZvckNoaWxkKE1haW5PclByZWZlcnJlZFNpemUsIGNoaWxkKTsKICAg
ICAgICAgcmV0dXJuIGFkanVzdENoaWxkU2l6ZUZvckFzcGVjdFJhdGlvQ3Jvc3NBeGlzTWluQW5k
TWF4KGNoaWxkLCBjb21wdXRlTWFpblNpemVGcm9tQXNwZWN0UmF0aW9Vc2luZyhjaGlsZCwgY3Jv
c3NTaXplTGVuZ3RoKSk7CiAgICAgfQogCi0gICAgLy8gVGhlIGZsZXggYmFzaXMgaXMgaW5kZWZp
bml0ZSAoPWF1dG8pLCBzbyB3ZSBuZWVkIHRvIGNvbXB1dGUgdGhlIGFjdHVhbCB3aWR0aCBvZiB0
aGUgY2hpbGQuCisgICAgLy8gRklYTUU6IDkuMi4zIEMuCisgICAgLy8gRklYTUU6IDkuMi4zIEQu
CisKKyAgICAvLyA5LjIuMyBFLgogICAgIExheW91dFVuaXQgbWFpbkF4aXNFeHRlbnQ7CiAgICAg
aWYgKCFtYWluQXhpc0lzQ2hpbGRJbmxpbmVBeGlzKGNoaWxkKSkgewogICAgICAgICBBU1NFUlQo
IWNoaWxkLm5lZWRzTGF5b3V0KCkpOwpAQCAtMTM2MywzNCArMTM5OCwzOCBAQCBMYXlvdXRVbml0
IFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JBc3BlY3RSYXRpb0Nyb3NzQXhp
c01pbkFuZE1heChjbwogICAgIHJldHVybiBjaGlsZFNpemU7CiB9CiAKK3ZvaWQgUmVuZGVyRmxl
eGlibGVCb3g6Om1heWJlQ2FjaGVDaGlsZE1haW5JbnRyaW5zaWNTaXplKFJlbmRlckJveCYgY2hp
bGQsIGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKK3sKKyAgICBpZiAoIWNoaWxkSGFzSW50cmluc2lj
TWFpbkF4aXNTaXplKGNoaWxkKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSWYgdGhpcyBj
b25kaXRpb24gaXMgdHJ1ZSwgdGhlbiBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZCB3aWxs
IGNhbGwKKyAgICAvLyBjaGlsZC5pbnRyaW5zaWNDb250ZW50TG9naWNhbEhlaWdodCgpIGFuZCBj
aGlsZC5zY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCksCisgICAgLy8gc28gaWYgdGhlIGNoaWxkIGhh
cyBpbnRyaW5zaWMgbWluL21heC9wcmVmZXJyZWQgc2l6ZSwgcnVuIGxheW91dCBvbiBpdCBub3cg
dG8gbWFrZSBzdXJlCisgICAgLy8gaXRzIGxvZ2ljYWwgaGVpZ2h0IGFuZCBzY3JvbGwgYmFycyBh
cmUgdXAgdG8gZGF0ZS4KKyAgICB1cGRhdGVCbG9ja0NoaWxkRGlydHlCaXRzQmVmb3JlTGF5b3V0
KHJlbGF5b3V0Q2hpbGRyZW4sIGNoaWxkKTsKKyAgICAvLyBEb24ndCByZXNvbHZlIHBlcmNlbnRh
Z2VzIGluIGNoaWxkcmVuLiBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGZvciB0aGUgbWlu
LWhlaWdodCBjYWxjdWxhdGlvbiwKKyAgICAvLyB3aGVyZSB3ZSB3YW50IHBlcmNlbnRhZ2VzIHRv
IGJlIHRyZWF0ZWQgYXMgYXV0by4gRm9yIGZsZXgtYmFzaXMgaXRzZWxmLCB0aGlzIGlzIG5vdCBh
IHByb2JsZW0gYmVjYXVzZQorICAgIC8vIGJ5IGRlZmluaXRpb24gd2UgaGF2ZSBhbiBpbmRlZmlu
aXRlIGZsZXggYmFzaXMgaGVyZSBhbmQgdGh1cyBwZXJjZW50YWdlcyBzaG91bGQgbm90IHJlc29s
dmUuCisgICAgaWYgKGNoaWxkLm5lZWRzTGF5b3V0KCkgfHwgIW1faW50cmluc2ljU2l6ZUFsb25n
TWFpbkF4aXMuY29udGFpbnMoJmNoaWxkKSkgeworICAgICAgICBpZiAoaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSA9PSBjaGlsZC5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICAg
ICAgY2hpbGQuc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0
KHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNoaWxkLnNldE92ZXJy
aWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKHN0ZDo6bnVsbG9wdCk7Cisg
ICAgICAgIGNoaWxkLnNldENoaWxkTmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKKyAgICAgICAg
Y2hpbGQubGF5b3V0SWZOZWVkZWQoKTsKKyAgICAgICAgY2FjaGVDaGlsZE1haW5TaXplKGNoaWxk
KTsKKyAgICAgICAgY2hpbGQuY2xlYXJPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNp
emUoKTsKKyAgICB9Cit9CisKIEZsZXhJdGVtIFJlbmRlckZsZXhpYmxlQm94Ojpjb25zdHJ1Y3RG
bGV4SXRlbShSZW5kZXJCb3gmIGNoaWxkLCBib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiB7CiAgICAg
YXV0byBjaGlsZEhhZExheW91dCA9IGNoaWxkLmV2ZXJIYWRMYXlvdXQoKTsKICAgICBjaGlsZC5j
bGVhck92ZXJyaWRpbmdDb250ZW50U2l6ZSgpOwotICAgIGlmIChjaGlsZEhhc0ludHJpbnNpY01h
aW5BeGlzU2l6ZShjaGlsZCkpIHsKLSAgICAgICAgLy8gSWYgdGhpcyBjb25kaXRpb24gaXMgdHJ1
ZSwgdGhlbiBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZCB3aWxsIGNhbGwKLSAgICAgICAg
Ly8gY2hpbGQuaW50cmluc2ljQ29udGVudExvZ2ljYWxIZWlnaHQoKSBhbmQgY2hpbGQuc2Nyb2xs
YmFyTG9naWNhbEhlaWdodCgpLAotICAgICAgICAvLyBzbyBpZiB0aGUgY2hpbGQgaGFzIGludHJp
bnNpYyBtaW4vbWF4L3ByZWZlcnJlZCBzaXplLCBydW4gbGF5b3V0IG9uIGl0IG5vdyB0byBtYWtl
IHN1cmUKLSAgICAgICAgLy8gaXRzIGxvZ2ljYWwgaGVpZ2h0IGFuZCBzY3JvbGwgYmFycyBhcmUg
dXAgdG8gZGF0ZS4KLSAgICAgICAgdXBkYXRlQmxvY2tDaGlsZERpcnR5Qml0c0JlZm9yZUxheW91
dChyZWxheW91dENoaWxkcmVuLCBjaGlsZCk7Ci0gICAgICAgIC8vIERvbid0IHJlc29sdmUgcGVy
Y2VudGFnZXMgaW4gY2hpbGRyZW4uIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yIHRo
ZSBtaW4taGVpZ2h0IGNhbGN1bGF0aW9uLAotICAgICAgICAvLyB3aGVyZSB3ZSB3YW50IHBlcmNl
bnRhZ2VzIHRvIGJlIHRyZWF0ZWQgYXMgYXV0by4gRm9yIGZsZXgtYmFzaXMgaXRzZWxmLCB0aGlz
IGlzIG5vdCBhIHByb2JsZW0gYmVjYXVzZQotICAgICAgICAvLyBieSBkZWZpbml0aW9uIHdlIGhh
dmUgYW4gaW5kZWZpbml0ZSBmbGV4IGJhc2lzIGhlcmUgYW5kIHRodXMgcGVyY2VudGFnZXMgc2hv
dWxkIG5vdCByZXNvbHZlLgotICAgICAgICBpZiAoY2hpbGQubmVlZHNMYXlvdXQoKSB8fCAhbV9p
bnRyaW5zaWNTaXplQWxvbmdNYWluQXhpcy5jb250YWlucygmY2hpbGQpKSB7Ci0gICAgICAgICAg
ICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA9PSBjaGlsZC5pc0hvcml6b250YWxXcml0
aW5nTW9kZSgpKQotICAgICAgICAgICAgICAgIGNoaWxkLnNldE92ZXJyaWRpbmdDb250YWluaW5n
QmxvY2tDb250ZW50TG9naWNhbEhlaWdodChzdGQ6Om51bGxvcHQpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGNoaWxkLnNldE92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250
ZW50TG9naWNhbFdpZHRoKHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAgICAgICBjaGlsZC5jbGVhck92
ZXJyaWRpbmdDb250ZW50U2l6ZSgpOwotICAgICAgICAgICAgY2hpbGQuc2V0Q2hpbGROZWVkc0xh
eW91dChNYXJrT25seVRoaXMpOwotICAgICAgICAgICAgY2hpbGQubGF5b3V0SWZOZWVkZWQoKTsK
LSAgICAgICAgICAgIGNhY2hlQ2hpbGRNYWluU2l6ZShjaGlsZCk7Ci0gICAgICAgICAgICBjaGls
ZC5jbGVhck92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZSgpOwotICAgICAgICB9
Ci0gICAgfQogICAgIAogICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZyA9IGlzSG9yaXpv
bnRhbEZsb3coKSA/IGNoaWxkLmhvcml6b250YWxCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCkgOiBj
aGlsZC52ZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKTsKLSAgICBMYXlvdXRVbml0IGNo
aWxkSW5uZXJGbGV4QmFzZVNpemUgPSBjb21wdXRlSW5uZXJGbGV4QmFzZVNpemVGb3JDaGlsZChj
aGlsZCwgYm9yZGVyQW5kUGFkZGluZyk7CisgICAgTGF5b3V0VW5pdCBjaGlsZElubmVyRmxleEJh
c2VTaXplID0gY29tcHV0ZUZsZXhCYXNlU2l6ZUZvckNoaWxkKGNoaWxkLCBib3JkZXJBbmRQYWRk
aW5nLCByZWxheW91dENoaWxkcmVuKTsKICAgICBMYXlvdXRVbml0IG1hcmdpbiA9IGlzSG9yaXpv
bnRhbEZsb3coKSA/IGNoaWxkLmhvcml6b250YWxNYXJnaW5FeHRlbnQoKSA6IGNoaWxkLnZlcnRp
Y2FsTWFyZ2luRXh0ZW50KCk7CiAgICAgcmV0dXJuIEZsZXhJdGVtKGNoaWxkLCBjaGlsZElubmVy
RmxleEJhc2VTaXplLCBib3JkZXJBbmRQYWRkaW5nLCBtYXJnaW4sIGNvbXB1dGVGbGV4SXRlbU1p
bk1heFNpemVzKGNoaWxkKSwgY2hpbGRIYWRMYXlvdXQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAppbmRleCAxODYzZDM3NGU1MzE2YzMxZTIxNjk4
NzdkZTNhZGJkMTc3OTcxM2VjLi44NThhYjk4ZjkyMTQxNmNjNGYxZmI0ZDBiMjk4MzBjZDY1M2Qy
NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApA
QCAtMTUwLDcgKzE1MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlQ2hpbGRJbnRyaW5z
aWNMb2dpY2FsV2lkdGhzKFJlbmRlck9iamVjdCYsIExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0
aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICBMYXlv
dXRVbml0IGNvbXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nKGNvbnN0IFJlbmRlckJv
eCYgY2hpbGQsIExlbmd0aCBjcm9zc1NpemVMZW5ndGgpIGNvbnN0OwogICAgIHZvaWQgc2V0Rmxv
d0F3YXJlTG9jYXRpb25Gb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBjb25zdCBMYXlvdXRQb2lu
dCYpOwotICAgIExheW91dFVuaXQgY29tcHV0ZUlubmVyRmxleEJhc2VTaXplRm9yQ2hpbGQoUmVu
ZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBtYWluQXhpc0JvcmRlckFuZFBhZGRpbmcpOworICAg
IExheW91dFVuaXQgY29tcHV0ZUZsZXhCYXNlU2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQs
IExheW91dFVuaXQgbWFpbkF4aXNCb3JkZXJBbmRQYWRkaW5nLCBib29sIHJlbGF5b3V0Q2hpbGRy
ZW4pOworICAgIHZvaWQgbWF5YmVDYWNoZUNoaWxkTWFpbkludHJpbnNpY1NpemUoUmVuZGVyQm94
JiBjaGlsZCwgYm9vbCByZWxheW91dENoaWxkcmVuKTsKICAgICB2b2lkIGFkanVzdEFsaWdubWVu
dEZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaXQpOwogICAgIEl0ZW1Qb3NpdGlv
biBhbGlnbm1lbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkKSBjb25zdDsKICAgICBi
b29sIGNhbkNvbXB1dGVQZXJjZW50YWdlRmxleEJhc2lzKGNvbnN0IFJlbmRlckJveCYgY2hpbGQs
IGNvbnN0IExlbmd0aCYgZmxleEJhc2lzLCBVcGRhdGVQZXJjZW50YWdlSGVpZ2h0RGVzY2VuZGFu
dHMpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGMwMjA2OTg4MGYwZWVjYWEyNDE1NjkwZDI3MWU1MDJmNjQ4MTVlMWIuLjNj
NmFhNGM3YWVjMGFlMDE2YjJmNmUxOWI5MmEwMmJkMGMwYjNhMjAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAyMS0xMS0xMCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNv
bT4KKworICAgICAgICBbY3NzLWZsZXhib3hdIEltcHJvdmUgJiBzaW1wbGlmeSB0aGUgZmxleC1i
YXNpcyBjb21wdXRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMwNzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOiBVbnNraXBwZWQgYSBjb3VwbGUgb2YgdGVzdHMg
dGhhdCB3b3JrIGZpbmUgbm93LgorCiAyMDIxLTExLTA5ICBBcmNhZHkgR29sZG1pbnRzLU9ybG92
ICA8YWdvbGRtaW50c0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBVcGRhdGUgdGVzdCBl
eHBlY3RhdGlvbnMgYW5kIGJhc2VsaW5lcy4gVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IGFmZDdiOTMyN2U1MjNiYmJhNmI2MWE0ZjdkNTc1MDQ4NDNkMmRh
ODguLjM5NjRjZmRkMDU1M2IzNjY2Y2VmNTQ5NTE5ZDlkNWExMjhhNDhiYzggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtNDI3Niw5ICs0Mjc2LDYgQEAgd2Via2l0Lm9yZy9iLzIyMTQ3OSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9mbGV4Ym94LWZsZXgKIHdl
YmtpdC5vcmcvYi8yMjE0NzkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWZsZXhib3gvZmxleGJveC1mbGV4LWJhc2lzLWNvbnRlbnQtMDAzYS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjIxNDc5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2ZsZXhib3gtZmxleC1iYXNpcy1jb250ZW50LTAwNGEuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogCi0jIGZsZXgtYmFzaXMgd2l0aCAlLgotd2Via2l0Lm9y
Zy9iLyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9mbGV4
LWJhc2lzLTAxMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KICMgRmxleCBpdGVtJ3MgbWlu
fG1heCBjb250ZW50IGNvbnRyaWJ1dGlvbnMKIHdlYmtpdC5vcmcvYi8yMzA3NDcgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZmxleC1jb250YWluZXItbWF4
LWNvbnRlbnQtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzA3
NDcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZmxleC1j
b250YWluZXItbWluLWNvbnRlbnQtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTQy
OTAsNyArNDI4Nyw2IEBAIHdlYmtpdC5vcmcvYi8yMjE0ODAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZmxleGJveC1icmVhCiB3ZWJraXQub3JnL2IvMjIx
NDgwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2ZsZXhi
b3gtYnJlYWstcmVxdWVzdC12ZXJ0LTAwMWIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAj
IG1pbi1zaXplOmF1dG8gaW4gZmxleGJveC4KLXdlYmtpdC5vcmcvYi8yMjE0ODEgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZmxleC1taW5pbXVtLWhlaWdo
dC1mbGV4LWl0ZW1zLTAyNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2Iv
MjIxNDgxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2Zs
ZXgtbWluaW11bS1oZWlnaHQtZmxleC1pdGVtcy0wMjkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQogd2Via2l0Lm9yZy9iLzIyMTQ4MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZmxleGJveC9mbGV4LW1pbmltdW0td2lkdGgtZmxleC1pdGVtcy0wMTUuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxv
ZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM1ZTJkYjgyMjIwNWI5ZTIyODY0
NTVhMmIyYjE4Mzc3M2E3N2VjMTYuLmUwYjdlOTBjOGY5NjMyZmE1MTQzZTZlYmU0NWIyNTBmODk5
NjQ5MWEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTEtMTAgIFNlcmdp
byBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1mbGV4
Ym94XSBJbXByb3ZlICYgc2ltcGxpZnkgdGhlIGZsZXgtYmFzaXMgY29tcHV0YXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDc1NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0IGNhc2Ug
dG8gY2F0Y2ggcGVyZm9ybWFuY2UgcmVncmVzc2lvbnMgd2l0aCBsb3RzIG9mIG5lc3RlZCAoc3Bl
Y2lhbGx5IGNvbHVtbikgZmxleGJveGVzLgorCisgICAgICAgICogTGF5b3V0L25lc3RlZC1mbGV4
Ym94Lmh0bWw6IEFkZGVkLgorCiAyMDIxLTEwLTE0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsIHRoZSBTREtWYXJpYW50LnhjY29uZmlnIGZp
bGVzIHNob3VsZCBtYXRjaApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQvbmVz
dGVkLWZsZXhib3guaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvTGF5b3V0L25lc3RlZC1mbGV4Ym94
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGZlNTk0ZTY0NWY5OGMwMmVhZDU4YWY1MjJhMTVhZDY2OWQ4N2U4
MwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvTGF5b3V0L25lc3RlZC1mbGV4
Ym94Lmh0bWwKQEAgLTAsMCArMSw2NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+CitodG1s
LCBib2R5IHsKKyAgICBtYXJnaW46IDA7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIHdpZHRoOiA1
MDBweDsKK30KKy5mbGV4IHsgZGlzcGxheTogZmxleDsgfQorLmNvbHVtbiB7IGZsZXgtZGlyZWN0
aW9uOiBjb2x1bW47IH0KKy5yb3cgeyBmbGV4LWRpcmVjdGlvbjogcm93OyB9CisuZmxleC1pdGVt
IHsgZmxleC1iYXNpczogYXV0bzsgZmxleC1zaHJpbms6IDA7IH0KKworPC9zdHlsZT4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVubmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5j
dGlvbiBzdGFydFRlc3QoKSB7CisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CisgICAg
dmFyIGluZGV4ID0gMDsKKyAgICBQZXJmVGVzdFJ1bm5lci5tZWFzdXJlUnVuc1BlclNlY29uZCh7
CisgICAgICAgIHJ1bjogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIHdyYXAgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgid3JhcCIpOworICAgICAgICAgICAgd3JhcC5zdHlsZS53aWR0
aCA9ICsraW5kZXggJSAyID8gIjk5JSIgOiAiOTglIjsKKyAgICAgICAgICAgIGRvY3VtZW50LmJv
ZHkub2Zmc2V0SGVpZ2h0OworICAgICAgICB9CisgICAgfSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKworPGJvZHkgb25sb2FkPSJzdGFydFRlc3QoKSI+Cis8ZGl2IGlkPSJ3cmFwIiBjbGFzcz0i
ZmxleCBjb2x1bW4iPgorICAgIDxkaXYgY2xhc3M9ImZsZXggY29sdW1uIGZsZXgtaXRlbSI+Cisg
ICAgICAgIDxkaXYgY2xhc3M9ImZsZXggY29sdW1uIGZsZXgtaXRlbSI+CisgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJmbGV4IGNvbHVtbiBmbGV4LWl0ZW0iPgorICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImZsZXggY29sdW1uIGZsZXgtaXRlbSI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImZsZXggcm93IGZsZXgtaXRlbSI+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJmbGV4IGNvbHVtbiBmbGV4LWl0ZW0iPgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImZsZXggY29sdW1uIGZsZXgtaXRlbSI+CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggY29sdW1uIGZsZXgtaXRlbSI+CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGNvbHVtbiBm
bGV4LWl0ZW0iPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImZsZXggcm93IGZsZXgtaXRlbSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggY29sdW1uIGZsZXgtaXRlbSI+CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJm
bGV4IGNvbHVtbiBmbGV4LWl0ZW0iPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggY29sdW1uIGZsZXgtaXRlbSI+Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImZsZXggY29sdW1uIGZsZXgtaXRlbSI+CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IHJv
dyBmbGV4LWl0ZW0iPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtZmxleCI+
WFhYPC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Cisg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAg
ICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+Cis8L2JvZHk+
Cg==
</data>
<flag name="review"
          id="468589"
          type_id="1"
          status="+"
          setter="zalan"
    />
    <flag name="commit-queue"
          id="468621"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>