<?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>222368</bug_id>
          
          <creation_ts>2021-02-24 11:04:37 -0800</creation_ts>
          <short_desc>RFE: Implement width/height attributes on source elements of &lt;picture&gt;</short_desc>
          <delta_ts>2021-06-22 10:49:11 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Christian Biesinger">cbiesinger</reporter>
          <assigned_to name="cathiechen">cathiechen</assigned_to>
          <cc>cathiechen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>nicolas</cc>
    
    <cc>philipj</cc>
    
    <cc>rbuis</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1732969</commentid>
    <comment_count>0</comment_count>
    <who name="Christian Biesinger">cbiesinger</who>
    <bug_when>2021-02-24 11:04:37 -0800</bug_when>
    <thetext>As described in https://github.com/whatwg/html/pull/5894/files

Maps width/height attributes on the &lt;source&gt; element in a &lt;picture&gt; to the width/height/aspect-ratio properties on the &lt;img&gt; element</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735386</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-03 11:05:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/74993565&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770562</commentid>
    <comment_count>2</comment_count>
      <attachid>431642</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-06-17 02:28:23 -0700</bug_when>
    <thetext>Created attachment 431642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770610</commentid>
    <comment_count>3</comment_count>
      <attachid>431642</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-06-17 06:33:29 -0700</bug_when>
    <thetext>Comment on attachment 431642
Patch

Hi,
I think this patch is ready for review now:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770626</commentid>
    <comment_count>4</comment_count>
      <attachid>431642</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-06-17 07:43:29 -0700</bug_when>
    <thetext>Comment on attachment 431642
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        This patch implement

Implement what? :)

&gt; Source/WebCore/ChangeLog:12
&gt; +        is selected. Also add invalidateAttributeMapping() to synchronous the changes of source&apos;s attributes

Synchronize with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770663</commentid>
    <comment_count>5</comment_count>
      <attachid>431642</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-06-17 09:10:22 -0700</bug_when>
    <thetext>Comment on attachment 431642
Patch

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

Thanks, Rob:)

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        This patch implement
&gt; 
&gt; Implement what? :)

Ah, I should remove it!

&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt; +        is selected. Also add invalidateAttributeMapping() to synchronous the changes of source&apos;s attributes
&gt; 
&gt; Synchronize with.

Done, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770667</commentid>
    <comment_count>6</comment_count>
      <attachid>431676</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-06-17 09:11:57 -0700</bug_when>
    <thetext>Created attachment 431676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770913</commentid>
    <comment_count>7</comment_count>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-06-17 17:47:50 -0700</bug_when>
    <thetext>The specification https://html.spec.whatwg.org/#the-source-element</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771117</commentid>
    <comment_count>8</comment_count>
      <attachid>431676</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-19 13:28:45 -0700</bug_when>
    <thetext>Comment on attachment 431676
Patch

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

&gt; Source/WebCore/dom/StyledElement.cpp:299
&gt;      for (const Attribute&amp; attribute : attributesIterator())
&gt;          collectPresentationalHintsForAttribute(attribute.name(), attribute.value(), static_cast&lt;MutableStyleProperties&amp;&gt;(*style));
&gt;  
&gt; +    collectExtraStyleForPresentationalHints(static_cast&lt;MutableStyleProperties&amp;&gt;(*style));

This cast is not good, neither in the old call nor the new. I suggest we change the local variable style to be a Ref instead of a RefPtr to another class.

    Ref style = MutableStyleProperties::create(isSVGElement() ? SVGAttributeMode : HTMLQuirksMode);

Then we can write &quot;style&quot; instead of &quot;static_cast&lt;MutableStyleProperties&amp;&gt;(*style)&quot;. Is it really OK to call another virtual function every time? I guess probably, but I am a little sad to see it.

&gt; Source/WebCore/html/HTMLImageElement.cpp:145
&gt; +    auto widthAttrFromSource = sourceElement()-&gt;attributeWithoutSynchronization(widthAttr);
&gt; +    auto heightAttrFromSource = sourceElement()-&gt;attributeWithoutSynchronization(heightAttr);

Could do this with a little bit less reference count churn by writing auto&amp; instead of auto.

&gt; Source/WebCore/html/HTMLImageElement.cpp:837
&gt; +    if (m_sourceElement.get() == sourceElement)

Should not need a &quot;.get()&quot; here because == is overloaded for WeakPtr and raw pointers.

&gt; Source/WebCore/html/HTMLImageElement.h:204
&gt; +    // The source element that selected to provide the source url.

Should write &quot;URL&quot;, not &quot;url&quot;.

Not sure what &quot;that selected to&quot; means here. Maybe &quot;that was selected to&quot; is what we mean?

&gt; Source/WebCore/html/HTMLPictureElement.h:39
&gt; +    void sourceAttributeChanged(const HTMLSourceElement&amp;);

This function is specifically called only when the source element&apos;s width and height attributes change. That is not so clear from the function name. Might want to choose a name that makes that clearer.

&gt; Source/WebCore/html/HTMLSourceElement.cpp:210
&gt; +    HTMLElement::attributeChanged(name, oldValue, newValue, reason);

Usually it’s best to call through to the base class at the end of the function; such &quot;tail calls&quot; can be better optimized.

&gt; Source/WebCore/html/HTMLSourceElement.cpp:213
&gt; +        RefPtr&lt;Element&gt; parent = parentElement();
&gt; +        if (parent &amp;&amp; is&lt;HTMLPictureElement&gt;(*parent))

Can just write RefPtr here, don’t need to write RefPtr&lt;Element&gt;. Since we are doing type checking and only want an HTMLPictureElement, we don’t need to use parentElement, can just use parent or parentNode. Also the is function takes pointers and can handle null checking, so we don’t need to both null check and call is&lt;&gt;.

    if (RefPtr parent = parentNode(); is&lt;HTMLPictureElement&gt;(parent.get()))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771250</commentid>
    <comment_count>9</comment_count>
      <attachid>431676</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-06-21 03:48:54 -0700</bug_when>
    <thetext>Comment on attachment 431676
Patch

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

Hi Darin,
Thanks for the review!

&gt;&gt; Source/WebCore/dom/StyledElement.cpp:299
&gt;&gt; +    collectExtraStyleForPresentationalHints(static_cast&lt;MutableStyleProperties&amp;&gt;(*style));
&gt; 
&gt; This cast is not good, neither in the old call nor the new. I suggest we change the local variable style to be a Ref instead of a RefPtr to another class.
&gt; 
&gt;     Ref style = MutableStyleProperties::create(isSVGElement() ? SVGAttributeMode : HTMLQuirksMode);
&gt; 
&gt; Then we can write &quot;style&quot; instead of &quot;static_cast&lt;MutableStyleProperties&amp;&gt;(*style)&quot;. Is it really OK to call another virtual function every time? I guess probably, but I am a little sad to see it.

Done, thanks!
I will add an element type check before collectExtraStyleForPresentationalHints.

&gt;&gt; Source/WebCore/html/HTMLImageElement.cpp:145
&gt;&gt; +    auto heightAttrFromSource = sourceElement()-&gt;attributeWithoutSynchronization(heightAttr);
&gt; 
&gt; Could do this with a little bit less reference count churn by writing auto&amp; instead of auto.

Done, thanks!

&gt;&gt; Source/WebCore/html/HTMLImageElement.cpp:837
&gt;&gt; +    if (m_sourceElement.get() == sourceElement)
&gt; 
&gt; Should not need a &quot;.get()&quot; here because == is overloaded for WeakPtr and raw pointers.

Done!

&gt;&gt; Source/WebCore/html/HTMLImageElement.h:204
&gt;&gt; +    // The source element that selected to provide the source url.
&gt; 
&gt; Should write &quot;URL&quot;, not &quot;url&quot;.
&gt; 
&gt; Not sure what &quot;that selected to&quot; means here. Maybe &quot;that was selected to&quot; is what we mean?

Done, thanks!
Yeah, this should be &quot;that was selected to&quot; :)

&gt;&gt; Source/WebCore/html/HTMLPictureElement.h:39
&gt;&gt; +    void sourceAttributeChanged(const HTMLSourceElement&amp;);
&gt; 
&gt; This function is specifically called only when the source element&apos;s width and height attributes change. That is not so clear from the function name. Might want to choose a name that makes that clearer.

Done, I will change the function name to sourceDimensionAttributesChanged

&gt;&gt; Source/WebCore/html/HTMLSourceElement.cpp:210
&gt;&gt; +    HTMLElement::attributeChanged(name, oldValue, newValue, reason);
&gt; 
&gt; Usually it’s best to call through to the base class at the end of the function; such &quot;tail calls&quot; can be better optimized.

Done!

&gt;&gt; Source/WebCore/html/HTMLSourceElement.cpp:213
&gt;&gt; +        if (parent &amp;&amp; is&lt;HTMLPictureElement&gt;(*parent))
&gt; 
&gt; Can just write RefPtr here, don’t need to write RefPtr&lt;Element&gt;. Since we are doing type checking and only want an HTMLPictureElement, we don’t need to use parentElement, can just use parent or parentNode. Also the is function takes pointers and can handle null checking, so we don’t need to both null check and call is&lt;&gt;.
&gt; 
&gt;     if (RefPtr parent = parentNode(); is&lt;HTMLPictureElement&gt;(parent.get()))

Done! Use auto here instead, for parentNode() returns ContainerNode*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771251</commentid>
    <comment_count>10</comment_count>
      <attachid>431845</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-06-21 03:58:26 -0700</bug_when>
    <thetext>Created attachment 431845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771318</commentid>
    <comment_count>11</comment_count>
      <attachid>431845</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-21 09:39:20 -0700</bug_when>
    <thetext>Comment on attachment 431845
Patch

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

Looks good; still have a tiny set of comments but none are mandatory.

&gt; Source/WebCore/dom/StyledElement.cpp:296
&gt; +    Ref style = MutableStyleProperties::create(isSVGElement() ? SVGAttributeMode : HTMLQuirksMode);

This could be auto instead of Ref, by the way; I think Ref is just fine, but auto does the same in this case.

&gt; Source/WebCore/dom/StyledElement.cpp:298
&gt; +        collectPresentationalHintsForAttribute(attribute.name(), attribute.value(), style.get());

You might be able to use &quot;style&quot; here instead of &quot;style.get()&quot; because Ref can convert itself when passed to a function expecting a reference (strangely, unlike passing RefPtr to a function expecting a pointer).

&gt; Source/WebCore/dom/StyledElement.cpp:300
&gt; +    if (is&lt;HTMLImageElement&gt;(this))

Should use *this here.

&gt; Source/WebCore/dom/StyledElement.cpp:301
&gt; +        collectExtraStyleForPresentationalHints(style.get());

You might be able to use &quot;style&quot; here instead of &quot;style.get()&quot; because Ref can convert itself.

&gt; Source/WebCore/html/HTMLImageElement.cpp:152
&gt; +        addPropertyToPresentationalHintStyle(style, CSSPropertyWidth, CSSValueAuto);

Is this necessary? If it is necessary, then I don’t understand why it’s OK to skip if both attributes are null.

&gt; Source/WebCore/html/HTMLImageElement.cpp:157
&gt; +        addPropertyToPresentationalHintStyle(style, CSSPropertyHeight, CSSValueAuto);

Is this necessary? If it is necessary, then I don’t understand why it’s OK to skip if both attributes are null.

&gt; Source/WebCore/html/HTMLImageElement.cpp:159
&gt; +    if (!widthAttrFromSource.isNull() &amp;&amp; !heightAttrFromSource.isNull())

This if statement will always be true. Earlier in the function we do an early return if both attributes are null.

&gt; Source/WebCore/html/HTMLSourceElement.cpp:211
&gt; +        if (auto parent = parentNode(); is&lt;HTMLPictureElement&gt;(parent))

This local variable type should probably be RefPtr, not auto. We want to hold a reference to the object when calling sourceDimensionAttributesChanged on it. Yes, it will be RefPtr&lt;ContainerNode&gt;, but we should be able to just write RefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771586</commentid>
    <comment_count>12</comment_count>
      <attachid>431845</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-06-21 20:40:03 -0700</bug_when>
    <thetext>Comment on attachment 431845
Patch

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

Thanks, Darin!

&gt;&gt; Source/WebCore/dom/StyledElement.cpp:296
&gt;&gt; +    Ref style = MutableStyleProperties::create(isSVGElement() ? SVGAttributeMode : HTMLQuirksMode);
&gt; 
&gt; This could be auto instead of Ref, by the way; I think Ref is just fine, but auto does the same in this case.

Done!

&gt;&gt; Source/WebCore/dom/StyledElement.cpp:298
&gt;&gt; +        collectPresentationalHintsForAttribute(attribute.name(), attribute.value(), style.get());
&gt; 
&gt; You might be able to use &quot;style&quot; here instead of &quot;style.get()&quot; because Ref can convert itself when passed to a function expecting a reference (strangely, unlike passing RefPtr to a function expecting a pointer).

Done!

&gt;&gt; Source/WebCore/dom/StyledElement.cpp:300
&gt;&gt; +    if (is&lt;HTMLImageElement&gt;(this))
&gt; 
&gt; Should use *this here.

Done!

&gt;&gt; Source/WebCore/dom/StyledElement.cpp:301
&gt;&gt; +        collectExtraStyleForPresentationalHints(style.get());
&gt; 
&gt; You might be able to use &quot;style&quot; here instead of &quot;style.get()&quot; because Ref can convert itself.

Done, thanks!

&gt;&gt; Source/WebCore/html/HTMLImageElement.cpp:152
&gt;&gt; +        addPropertyToPresentationalHintStyle(style, CSSPropertyWidth, CSSValueAuto);
&gt; 
&gt; Is this necessary? If it is necessary, then I don’t understand why it’s OK to skip if both attributes are null.

Yeah, this is necessary. I think this is to avoid get one attribute from &lt;source&gt; and get the other attribute from &lt;img&gt;.
We have some cases to test this scenario in LayoutTests/imported/w3c/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/picture-aspect-ratio.html
I think it&apos;s necessary to add a comment to explain this:)

&gt;&gt; Source/WebCore/html/HTMLImageElement.cpp:157
&gt;&gt; +        addPropertyToPresentationalHintStyle(style, CSSPropertyHeight, CSSValueAuto);
&gt; 
&gt; Is this necessary? If it is necessary, then I don’t understand why it’s OK to skip if both attributes are null.

Ditto.

&gt;&gt; Source/WebCore/html/HTMLImageElement.cpp:159
&gt;&gt; +    if (!widthAttrFromSource.isNull() &amp;&amp; !heightAttrFromSource.isNull())
&gt; 
&gt; This if statement will always be true. Earlier in the function we do an early return if both attributes are null.

I think this is to distinguish the scenarios that both attributes are set and the one only single attribute is set.
Anyway, I will add a comment to explain it too:)

&gt;&gt; Source/WebCore/html/HTMLSourceElement.cpp:211
&gt;&gt; +        if (auto parent = parentNode(); is&lt;HTMLPictureElement&gt;(parent))
&gt; 
&gt; This local variable type should probably be RefPtr, not auto. We want to hold a reference to the object when calling sourceDimensionAttributesChanged on it. Yes, it will be RefPtr&lt;ContainerNode&gt;, but we should be able to just write RefPtr.

Done, thanks for the explanation:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771604</commentid>
    <comment_count>13</comment_count>
      <attachid>431946</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-06-21 22:07:22 -0700</bug_when>
    <thetext>Created attachment 431946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771619</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-22 01:06:12 -0700</bug_when>
    <thetext>Committed r279108 (239025@main): &lt;https://commits.webkit.org/239025@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431946.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431642</attachid>
            <date>2021-06-17 02:28:23 -0700</date>
            <delta_ts>2021-06-17 09:11:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222368-20210617172821.patch</filename>
            <type>text/plain</type>
            <size>25872</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg4MDRhZWQyZWI1MzQ4
YTVjMDdkNmE5ZTdkZjYxM2JiNTNmMjQ2NC4uZWU4ODZiMDhkNjA2MzAwZTRkNDcwM2ZmMDI3Y2Rh
MGU5YTQwOWI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTA2LTE3ICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgd2lk
dGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzIG9uIHNvdXJjZSBlbGVtZW50cyBvZiA8cGljdHVyZT4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjM2OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggaW1wbGVtZW50CisgICAgICAgIEFjY29yZGluZyB0byBbMV0sIHRoZSBzb3VyY2UgZWxlbWVu
dCBzdXBwb3J0cyBkaW1lbnNpb24gYXR0cmlidXRlcy4gVGhlIGltZyBlbGVtZW50IGNhbiB1c2Ug
dGhlIHdpZHRoCisgICAgICAgIGFuZCBoZWlnaHQgYXR0cmlidXRlcyBvZiB0aGUgc291cmNlIGVs
ZW1lbnQgdG8gZGV0ZXJtaW5lIGl0cyByZW5kZXJlZCBkaW1lbnNpb25zIGFuZCBhc3BlY3QtcmF0
aW8uCisgICAgICAgIEluIG9yZGVyIHRvIGltcGxlbWVudCB0aGlzLCBhZGQgbV9zb3VyY2VFbGVt
ZW50IHRvIEhUTUxJbWFnZUVsZW1lbnQgdG8gaW5kaWNhdGUgdGhlIHNvdXJjZSBlbGVtZW50IHRo
YXQKKyAgICAgICAgaXMgc2VsZWN0ZWQuIEFsc28gYWRkIGludmFsaWRhdGVBdHRyaWJ1dGVNYXBw
aW5nKCkgdG8gc3luY2hyb25vdXMgdGhlIGNoYW5nZXMgb2Ygc291cmNlJ3MgYXR0cmlidXRlcwor
ICAgICAgICB0byB0aGUgaW1nIGVsZW1lbnQuIFRoZW4gYWRkIGNvbGxlY3RFeHRyYVN0eWxlRm9y
UHJlc2VudGF0aW9uYWxIaW50cygpIHRvIGNvbGxlY3Qgc3R5bGUgZnJvbSBzb3VyY2UgYXR0cmli
dXRlcy4KKworICAgICAgICBbMV0gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdGhlLXNv
dXJjZS1lbGVtZW50CisKKyAgICAgICAgKiBkb20vRWxlbWVudERhdGEuaDoKKyAgICAgICAgKiBk
b20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50Ojpy
ZWJ1aWxkUHJlc2VudGF0aW9uYWxIaW50U3R5bGUpOiBjb2xsZWN0RXh0cmFTdHlsZUZvclByZXNl
bnRhdGlvbmFsSGludHMoKSB3aGVuIHJlYnVpbGQuCisgICAgICAgICogZG9tL1N0eWxlZEVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmNvbGxlY3RFeHRyYVN0eWxl
Rm9yUHJlc2VudGF0aW9uYWxIaW50cyk6IEFkZCBhbiBpbnRlcmZhY2UgdG8gY29sbGVjdCBleHRy
YSBzdHlsZSBmcm9tIG90aGVyIGVsZW1lbnRzLgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmFwcGx5QXNwZWN0UmF0aW9Gcm9t
V2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZSk6IEFkZCB3aWR0aCBhbmQgaGVpZ2h0IGF0
dHJpYnV0ZXMgYXMgaW5wdXQgdmFyaWFibGVzLgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEltYWdlRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6Y29sbGVjdEV4dHJhU3R5
bGVGb3JQcmVzZW50YXRpb25hbEhpbnRzKTogSWYgc291cmNlIGVsZW1lbnQgaGFzIHdpZHRoIG9y
IGhlaWdodCBhdHRyaWJ1dGVzLCBhcHBseSB0aGVtCisgICAgICAgIHRvIHdpZHRoLCBoZWlnaHQg
YW5kIGFzcGVjdC1yYXRpbyBvZiB0aGUgc3R5bGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1h
Z2VFbGVtZW50OjpiZXN0Rml0U291cmNlRnJvbVBpY3R1cmVFbGVtZW50KTogS2VlcCB0aGUgc291
cmNlIGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpzZWxlY3RJ
bWFnZVNvdXJjZSk6IFJlc2V0IHRoZSBzb3VyY2UgZWxlbWVudCB0byBudWxsIGlmIG5vIGNhbmRp
ZGF0ZSBpcyBmb3VuZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnNvdXJj
ZUVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6c2V0
U291cmNlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjppbnZh
bGlkYXRlQXR0cmlidXRlTWFwcGluZyk6IEludmFsaWRhdGUgdGhlIHByZXNlbnRhdGlvbmFsSGlu
dFN0eWxlLgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZSk6CisgICAgICAgICog
aHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBpY3R1
cmVFbGVtZW50Ojpzb3VyY2VBdHRyaWJ1dGVDaGFuZ2VkKTogQ2FsbCBpbnZhbGlkYXRlQXR0cmli
dXRlTWFwcGluZyBpZiBzb3VyY2UgZWxlbWVudCdzIGF0dHJpYnV0ZXMgYXJlIGNoYW5nZWQuCisg
ICAgICAgICogaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxT
b3VyY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VFbGVtZW50Ojph
dHRyaWJ1dGVDaGFuZ2VkKTogQ2FsbCBzb3VyY2VBdHRyaWJ1dGVDaGFuZ2VkIGlmIHdpZHRoIG9y
IGhlaWdodCBhdHRyaWJ1dGVzIGFyZSBjaGFuZ2VkLgorICAgICAgICAqIGh0bWwvSFRNTFNvdXJj
ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTb3VyY2VFbGVtZW50LmlkbDoKKyAgICAg
ICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUpOgorCiAy
MDIxLTA2LTExICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVuYW1lIEFwcEhpZ2hsaWdodCBncm91cCB0byBRdWlja05vdGUgdG8gY29ycmVjdGx5
IHJlZmxlY3QgZmVhdHVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRhLmgKaW5kZXggMTA1NDA5ZmQ5
ODQxMDM5NzY1ZGJlMjAzZjYzMmQxMTgyNWNkODBlNy4uNTExNmUzMjA4OTdmOGRiNTI4YmIxMTRi
Nzk2ODJlOWRlNmNkY2Y4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRhLmgKQEAgLTE3MCw2ICsx
NzAsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTaGFyZWFibGVFbGVtZW50RGF0YTsK
ICAgICBmcmllbmQgY2xhc3MgVW5pcXVlRWxlbWVudERhdGE7CiAgICAgZnJpZW5kIGNsYXNzIFNW
R0VsZW1lbnQ7CisgICAgZnJpZW5kIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiAKICAgICB2b2lk
IGRlc3Ryb3koKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IDM5NGEw
YTdjZjIwNjZmODg5NWI3YWE1OTY3Nzg1NGJhNTc5MTU2NjIuLjg4ZWUxYmQyYTY0NTNiNzVmNmQ5
YzdmM2RiZmVjNzMwYjJkNmMyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHls
ZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAK
QEAgLTI5Niw2ICsyOTYsOCBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnJlYnVpbGRQcmVzZW50YXRp
b25hbEhpbnRTdHlsZSgpCiAgICAgZm9yIChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA6IGF0
dHJpYnV0ZXNJdGVyYXRvcigpKQogICAgICAgICBjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0Zv
ckF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSgpLCBhdHRyaWJ1dGUudmFsdWUoKSwgc3RhdGljX2Nh
c3Q8TXV0YWJsZVN0eWxlUHJvcGVydGllcyY+KCpzdHlsZSkpOwogCisgICAgY29sbGVjdEV4dHJh
U3R5bGVGb3JQcmVzZW50YXRpb25hbEhpbnRzKHN0YXRpY19jYXN0PE11dGFibGVTdHlsZVByb3Bl
cnRpZXMmPigqc3R5bGUpKTsKKwogICAgIC8vIFNoYXJlYWJsZUVsZW1lbnREYXRhIGRvZXNuJ3Qg
c3RvcmUgcHJlc2VudGF0aW9uIGF0dHJpYnV0ZSBzdHlsZSwgc28gbWFrZSBzdXJlIHdlIGhhdmUg
YSBVbmlxdWVFbGVtZW50RGF0YS4KICAgICBVbmlxdWVFbGVtZW50RGF0YSYgZWxlbWVudERhdGEg
PSBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3R5bGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQu
aAppbmRleCAyNmFhZWIyNDYyNjEzMzI5NDNlZDU0MTMzYTNhNWFjYmU3MWFhYjg0Li4wZDM2YWY2
MDdiZDkxOThmZWI4ZDE3NjdjYmY5ZTczOTAzMWZkZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3R5bGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRF
bGVtZW50LmgKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0eWxlUHJvcGVy
dGllcyogcHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21TdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgeyB9CiAgICAg
dmlydHVhbCBjb25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxQcmVzZW50YXRpb25hbEhp
bnRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29s
bGVjdEV4dHJhU3R5bGVGb3JQcmVzZW50YXRpb25hbEhpbnRzKE11dGFibGVTdHlsZVByb3BlcnRp
ZXMmKSB7IH0KIAogcHJvdGVjdGVkOgogICAgIFN0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDMyZmFmMWI2MmU0NjM3MmJiOWIwOWVm
MjBhMGVkNDBkZmVkNzAxMGMuLjY3ZmY1OGNhNTUwNjEwOWVkYjlhYzQ2ODYxYTMzNzljZWI1NDdl
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC02MjUsMTUgKzYyNSwxNSBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MRWxlbWVudDo6c2V0T3V0ZXJUZXh0KGNvbnN0IFN0cmlu
ZyYgdGV4dCkKICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEhUTUxFbGVtZW50OjphcHBseUFz
cGVjdFJhdGlvRnJvbVdpZHRoQW5kSGVpZ2h0QXR0cmlidXRlc1RvU3R5bGUoTXV0YWJsZVN0eWxl
UHJvcGVydGllcyYgc3R5bGUpCit2b2lkIEhUTUxFbGVtZW50OjphcHBseUFzcGVjdFJhdGlvRnJv
bVdpZHRoQW5kSGVpZ2h0QXR0cmlidXRlc1RvU3R5bGUoU3RyaW5nVmlldyB3aWR0aEF0dHJpYnV0
ZSwgU3RyaW5nVmlldyBoZWlnaHRBdHRyaWJ1dGUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0
eWxlKQogewogICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFzcGVjdFJhdGlvT2ZJbWdG
cm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
ZGltZW5zaW9uV2lkdGggPSBwYXJzZUhUTUxEaW1lbnNpb24oYXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbih3aWR0aEF0dHIpKTsKKyAgICBhdXRvIGRpbWVuc2lvbldpZHRoID0gcGFyc2VI
VE1MRGltZW5zaW9uKHdpZHRoQXR0cmlidXRlKTsKICAgICBpZiAoIWRpbWVuc2lvbldpZHRoIHx8
IGRpbWVuc2lvbldpZHRoLT50eXBlICE9IEhUTUxEaW1lbnNpb246OlR5cGU6OlBpeGVsKQogICAg
ICAgICByZXR1cm47Ci0gICAgYXV0byBkaW1lbnNpb25IZWlnaHQgPSBwYXJzZUhUTUxEaW1lbnNp
b24oYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihoZWlnaHRBdHRyKSk7CisgICAgYXV0
byBkaW1lbnNpb25IZWlnaHQgPSBwYXJzZUhUTUxEaW1lbnNpb24oaGVpZ2h0QXR0cmlidXRlKTsK
ICAgICBpZiAoIWRpbWVuc2lvbkhlaWdodCB8fCBkaW1lbnNpb25IZWlnaHQtPnR5cGUgIT0gSFRN
TERpbWVuc2lvbjo6VHlwZTo6UGl4ZWwpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5oCmluZGV4IDgwYzc4NzA0MDA4ZjFiZmY4YmQxZTc3ODFiMDgxOWQ2MTcwMzNi
ODMuLjQ2M2UxNmNlN2FiMjgyOTg4ZWY5YmRiY2IyM2IyOTZlNzgxOTNmNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmgKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2
b2lkIGFkZEhUTUxDb2xvclRvU3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYsIENTU1Byb3Bl
cnR5SUQsIGNvbnN0IFN0cmluZyYgY29sb3IpOwogCi0gICAgdm9pZCBhcHBseUFzcGVjdFJhdGlv
RnJvbVdpZHRoQW5kSGVpZ2h0QXR0cmlidXRlc1RvU3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydGll
cyYpOworICAgIHZvaWQgYXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0
ZXNUb1N0eWxlKFN0cmluZ1ZpZXcgd2lkdGhBdHRyaWJ1dGUsIFN0cmluZ1ZpZXcgaGVpZ2h0QXR0
cmlidXRlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJik7CiAgICAgdm9pZCBhcHBseUFsaWdubWVu
dEF0dHJpYnV0ZVRvU3R5bGUoY29uc3QgQXRvbVN0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRp
ZXMmKTsKICAgICB2b2lkIGFwcGx5Qm9yZGVyQXR0cmlidXRlVG9TdHlsZShjb25zdCBBdG9tU3Ry
aW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcAppbmRleCA2MGFmY2Y1MDAzNDJiMGZjYTM1NmQ2NWMyMjgyZGY1MGYy
YjZkYTJjLi4yN2E1NDBmYzYxMDU0YWJlNTVhNzE0ODEzY2VmY2I5NmExYzAxOWQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTM3LDkgKzM3LDkgQEAKICNp
bmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MSW1hZ2VMb2FkZXIuaCIKKyNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MUGljdHVyZUVsZW1l
bnQuaCIKLSNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTb3VyY2VF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFNyY3NldFBhcnNlci5oIgogI2luY2x1ZGUgIkxhenlM
b2FkSW1hZ2VPYnNlcnZlci5oIgpAQCAtMTE3LDEwICsxMTcsMTAgQEAgdm9pZCBIVE1MSW1hZ2VF
bGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW0KIHsKICAgICBpZiAobmFtZSA9PSB3aWR0aEF0dHIpIHsKICAgICAgICAgYWRkSFRN
TE11bHRpTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgdmFsdWUpOwotICAg
ICAgICBhcHBseUFzcGVjdFJhdGlvRnJvbVdpZHRoQW5kSGVpZ2h0QXR0cmlidXRlc1RvU3R5bGUo
c3R5bGUpOworICAgICAgICBhcHBseUFzcGVjdFJhdGlvRnJvbVdpZHRoQW5kSGVpZ2h0QXR0cmli
dXRlc1RvU3R5bGUodmFsdWUsIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oaGVpZ2h0
QXR0ciksIHN0eWxlKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gaGVpZ2h0QXR0cikgewogICAg
ICAgICBhZGRIVE1MTXVsdGlMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhlaWdodCwg
dmFsdWUpOwotICAgICAgICBhcHBseUFzcGVjdFJhdGlvRnJvbVdpZHRoQW5kSGVpZ2h0QXR0cmli
dXRlc1RvU3R5bGUoc3R5bGUpOworICAgICAgICBhcHBseUFzcGVjdFJhdGlvRnJvbVdpZHRoQW5k
SGVpZ2h0QXR0cmlidXRlc1RvU3R5bGUoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3
aWR0aEF0dHIpLCB2YWx1ZSwgc3R5bGUpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBib3JkZXJB
dHRyKQogICAgICAgICBhcHBseUJvcmRlckF0dHJpYnV0ZVRvU3R5bGUodmFsdWUsIHN0eWxlKTsK
ICAgICBlbHNlIGlmIChuYW1lID09IHZzcGFjZUF0dHIpIHsKQEAgLTEzNyw2ICsxMzcsMzEgQEAg
dm9pZCBIVE1MSW1hZ2VFbGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW0KICAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RQcmVz
ZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKG5hbWUsIHZhbHVlLCBzdHlsZSk7CiB9CiAKK3Zv
aWQgSFRNTEltYWdlRWxlbWVudDo6Y29sbGVjdEV4dHJhU3R5bGVGb3JQcmVzZW50YXRpb25hbEhp
bnRzKE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQoreworICAgIGlmICghc291cmNlRWxl
bWVudCgpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byB3aWR0aEF0dHJGcm9tU291cmNlID0g
c291cmNlRWxlbWVudCgpLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHdpZHRoQXR0
cik7CisgICAgYXV0byBoZWlnaHRBdHRyRnJvbVNvdXJjZSA9IHNvdXJjZUVsZW1lbnQoKS0+YXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihoZWlnaHRBdHRyKTsKKyAgICBpZiAod2lkdGhB
dHRyRnJvbVNvdXJjZS5pc051bGwoKSAmJiBoZWlnaHRBdHRyRnJvbVNvdXJjZS5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCF3aWR0aEF0dHJGcm9tU291cmNlLmlzTnVsbCgp
KQorICAgICAgICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwg
d2lkdGhBdHRyRnJvbVNvdXJjZSk7CisgICAgZWxzZQorICAgICAgICBhZGRQcm9wZXJ0eVRvUHJl
c2VudGF0aW9uYWxIaW50U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIENTU1ZhbHVlQXV0
byk7CisKKyAgICBpZiAoIWhlaWdodEF0dHJGcm9tU291cmNlLmlzTnVsbCgpKQorICAgICAgICBh
ZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIGhlaWdodEF0dHJG
cm9tU291cmNlKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25h
bEhpbnRTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIENTU1ZhbHVlQXV0byk7CisKKyAg
ICBpZiAoIXdpZHRoQXR0ckZyb21Tb3VyY2UuaXNOdWxsKCkgJiYgIWhlaWdodEF0dHJGcm9tU291
cmNlLmlzTnVsbCgpKQorICAgICAgICBhcHBseUFzcGVjdFJhdGlvRnJvbVdpZHRoQW5kSGVpZ2h0
QXR0cmlidXRlc1RvU3R5bGUod2lkdGhBdHRyRnJvbVNvdXJjZSwgaGVpZ2h0QXR0ckZyb21Tb3Vy
Y2UsIHN0eWxlKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25h
bEhpbnRTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlBc3BlY3RSYXRpbywgQ1NTVmFsdWVBdXRvKTsK
K30KKwogY29uc3QgQXRvbVN0cmluZyYgSFRNTEltYWdlRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwo
KSBjb25zdAogewogICAgIHJldHVybiBtX2Jlc3RGaXRJbWFnZVVSTC5pc0VtcHR5KCkgPyBhdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIpIDogbV9iZXN0Rml0SW1hZ2VVUkw7
CkBAIC0xOTEsOCArMjE2LDEwIEBAIEltYWdlQ2FuZGlkYXRlIEhUTUxJbWFnZUVsZW1lbnQ6OmJl
c3RGaXRTb3VyY2VGcm9tUGljdHVyZUVsZW1lbnQoKQogICAgICAgICBhdXRvIHNvdXJjZVNpemUg
PSBzaXplc1BhcnNlci5sZW5ndGgoKTsKIAogICAgICAgICBjYW5kaWRhdGUgPSBiZXN0Rml0U291
cmNlRm9ySW1hZ2VBdHRyaWJ1dGVzKGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgbnVs
bEF0b20oKSwgc3Jjc2V0LCBzb3VyY2VTaXplKTsKLSAgICAgICAgaWYgKCFjYW5kaWRhdGUuaXNF
bXB0eSgpKQorICAgICAgICBpZiAoIWNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IHNldFNvdXJjZUVsZW1lbnQoJnNvdXJjZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIHJldHVybiBjYW5kaWRhdGU7CkBAIC0yMTcsNiArMjQ0LDcgQEAgdm9p
ZCBIVE1MSW1hZ2VFbGVtZW50OjpzZWxlY3RJbWFnZVNvdXJjZShSZWxldmFudE11dGF0aW9uIHJl
bGV2YW50TXV0YXRpb24pCiAgICAgLy8gRmlyc3QgbG9vayBmb3IgdGhlIGJlc3QgZml0IHNvdXJj
ZSBmcm9tIG91ciA8cGljdHVyZT4gcGFyZW50IGlmIHdlIGhhdmUgb25lLgogICAgIEltYWdlQ2Fu
ZGlkYXRlIGNhbmRpZGF0ZSA9IGJlc3RGaXRTb3VyY2VGcm9tUGljdHVyZUVsZW1lbnQoKTsKICAg
ICBpZiAoY2FuZGlkYXRlLmlzRW1wdHkoKSkgeworICAgICAgICBzZXRTb3VyY2VFbGVtZW50KG51
bGxwdHIpOwogICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgPHBpY3R1cmU+IG9yIGRpZG4n
dCBmaW5kIGEgc291cmNlLCB0aGVuIHdlIHVzZSBvdXIgb3duIGF0dHJpYnV0ZXMuCiAgICAgICAg
IFNpemVzQXR0cmlidXRlUGFyc2VyIHNpemVzUGFyc2VyKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oc2l6ZXNBdHRyKS5zdHJpbmcoKSwgZG9jdW1lbnQoKSwgJm1fbWVkaWFRdWVyeUR5
bmFtaWNSZXN1bHRzKTsKICAgICAgICAgYXV0byBzb3VyY2VTaXplID0gc2l6ZXNQYXJzZXIubGVu
Z3RoKCk7CkBAIC03OTksNCArODI3LDIzIEBAIFJlZmVycmVyUG9saWN5IEhUTUxJbWFnZUVsZW1l
bnQ6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKICAgICByZXR1cm4gUmVmZXJyZXJQb2xpY3k6OkVt
cHR5U3RyaW5nOwogfQogCitIVE1MU291cmNlRWxlbWVudCogSFRNTEltYWdlRWxlbWVudDo6c291
cmNlRWxlbWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc291cmNlRWxlbWVudC5nZXQoKTsK
K30KKwordm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRTb3VyY2VFbGVtZW50KEhUTUxTb3VyY2VF
bGVtZW50KiBzb3VyY2VFbGVtZW50KQoreworICAgIGlmIChtX3NvdXJjZUVsZW1lbnQuZ2V0KCkg
PT0gc291cmNlRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc291cmNlRWxlbWVudCA9
IG1ha2VXZWFrUHRyKHNvdXJjZUVsZW1lbnQpOworICAgIGludmFsaWRhdGVBdHRyaWJ1dGVNYXBw
aW5nKCk7Cit9CisKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6aW52YWxpZGF0ZUF0dHJpYnV0ZU1h
cHBpbmcoKQoreworICAgIGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCkuc2V0UHJlc2VudGF0aW9u
YWxIaW50U3R5bGVJc0RpcnR5KHRydWUpOworICAgIGludmFsaWRhdGVTdHlsZSgpOworfQorCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IGYxYTAzMGM0ZTc4YjQz
OGIwMWNiM2M0MzExMzU1NzZlMTAxMmE4ZWYuLmU4ZDVjZWNlYWQxZDc4ZDQ0NzQ5ZGRkNjg3Y2Rh
NTUxMzUwZmQ0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCkBAIC0x
NTAsNiArMTUwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNQ
cmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dCBvdmVycmlkZTsKICAgICB2b2lkIGNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJiwgTXV0YWJsZVN0eWxl
UHJvcGVydGllcyYpIG92ZXJyaWRlOworICAgIHZvaWQgY29sbGVjdEV4dHJhU3R5bGVGb3JQcmVz
ZW50YXRpb25hbEhpbnRzKE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGludmFsaWRhdGVBdHRyaWJ1dGVNYXBwaW5nKCk7CiAKICAgICB2b2lkIGRpZEF0dGFjaFJl
bmRlcmVycygpIG92ZXJyaWRlOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikg
b3ZlcnJpZGU7CkBAIC0xODMsNiArMTg1LDkgQEAgcHJpdmF0ZToKIAogICAgIGZsb2F0IGVmZmVj
dGl2ZUltYWdlRGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0OwogCisgICAgSFRNTFNvdXJjZUVsZW1l
bnQqIHNvdXJjZUVsZW1lbnQoKSBjb25zdDsKKyAgICB2b2lkIHNldFNvdXJjZUVsZW1lbnQoSFRN
TFNvdXJjZUVsZW1lbnQqKTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxIVE1MSW1hZ2VMb2FkZXI+
IG1faW1hZ2VMb2FkZXI7CiAgICAgV2Vha1B0cjxIVE1MRm9ybUVsZW1lbnQ+IG1fZm9ybTsKICAg
ICBXZWFrUHRyPEhUTUxGb3JtRWxlbWVudD4gbV9mb3JtU2V0QnlQYXJzZXI7CkBAIC0xOTYsNiAr
MjAxLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlciB7
IGZhbHNlIH07CiAKICAgICBXZWFrUHRyPEhUTUxQaWN0dXJlRWxlbWVudD4gbV9waWN0dXJlRWxl
bWVudDsKKyAgICAvLyBUaGUgc291cmNlIGVsZW1lbnQgdGhhdCBzZWxlY3RlZCB0byBwcm92aWRl
IHRoZSBzb3VyY2UgdXJsLgorICAgIFdlYWtQdHI8SFRNTFNvdXJjZUVsZW1lbnQ+IG1fc291cmNl
RWxlbWVudDsKICAgICBNZWRpYVF1ZXJ5RHluYW1pY1Jlc3VsdHMgbV9tZWRpYVF1ZXJ5RHluYW1p
Y1Jlc3VsdHM7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMGRmMTlkZWMwMDI3YjNjNGVmY2UxZTk1
ZWU0YjRiZTA4ZTNhYmJkNi4uMmZiZjNmZGVjMjRmNzFkZTY3MzRkZTI1YmE2ZmVhY2U0N2JkYjcy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC03MDgsMTIg
KzcwOCwxMiBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhp
bnRzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbQogICAgICAgICBpZiAobV9pbnB1dFR5
cGUtPnNob3VsZFJlc3BlY3RIZWlnaHRBbmRXaWR0aEF0dHJpYnV0ZXMoKSkKICAgICAgICAgICAg
IGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCB2YWx1ZSk7CiAg
ICAgICAgIGlmIChpc0ltYWdlQnV0dG9uKCkpCi0gICAgICAgICAgICBhcHBseUFzcGVjdFJhdGlv
RnJvbVdpZHRoQW5kSGVpZ2h0QXR0cmlidXRlc1RvU3R5bGUoc3R5bGUpOworICAgICAgICAgICAg
YXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxlKHZhbHVl
LCBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhlaWdodEF0dHIpLCBzdHlsZSk7CiAg
ICAgfSBlbHNlIGlmIChuYW1lID09IGhlaWdodEF0dHIpIHsKICAgICAgICAgaWYgKG1faW5wdXRU
eXBlLT5zaG91bGRSZXNwZWN0SGVpZ2h0QW5kV2lkdGhBdHRyaWJ1dGVzKCkpCiAgICAgICAgICAg
ICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIHZhbHVlKTsK
ICAgICAgICAgaWYgKGlzSW1hZ2VCdXR0b24oKSkKLSAgICAgICAgICAgIGFwcGx5QXNwZWN0UmF0
aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZShzdHlsZSk7CisgICAgICAgICAg
ICBhcHBseUFzcGVjdFJhdGlvRnJvbVdpZHRoQW5kSGVpZ2h0QXR0cmlidXRlc1RvU3R5bGUoYXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3aWR0aEF0dHIpLCB2YWx1ZSwgc3R5bGUpOwog
ICAgIH0gZWxzZSBpZiAobmFtZSA9PSBib3JkZXJBdHRyICYmIGlzSW1hZ2VCdXR0b24oKSkKICAg
ICAgICAgYXBwbHlCb3JkZXJBdHRyaWJ1dGVUb1N0eWxlKHZhbHVlLCBzdHlsZSk7CiAgICAgZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuY3BwCmluZGV4IDBlYTc3
NGQ3YTZmNTQ1NjQ1NmM1ZGFhNzk5NzQwMmM4OTY1OGI1Y2MuLjQyZGMyMGViM2VlNGI0MDI2NDBi
MTZlMWVjNGZjMGMyNTg0NjAyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBpY3R1cmVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQaWN0dXJl
RWxlbWVudC5jcHAKQEAgLTY0LDYgKzY0LDE0IEBAIHZvaWQgSFRNTFBpY3R1cmVFbGVtZW50Ojpz
b3VyY2VzQ2hhbmdlZCgpCiAgICAgICAgIGVsZW1lbnQuc2VsZWN0SW1hZ2VTb3VyY2UoUmVsZXZh
bnRNdXRhdGlvbjo6WWVzKTsKIH0KIAordm9pZCBIVE1MUGljdHVyZUVsZW1lbnQ6OnNvdXJjZUF0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgSFRNTFNvdXJjZUVsZW1lbnQmIHNvdXJjZUVsZW1lbnQpCit7
CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8SFRNTEltYWdlRWxlbWVu
dD4oKnRoaXMpKSB7CisgICAgICAgIGlmICgmc291cmNlRWxlbWVudCA9PSBlbGVtZW50LnNvdXJj
ZUVsZW1lbnQoKSkKKyAgICAgICAgICAgIGVsZW1lbnQuaW52YWxpZGF0ZUF0dHJpYnV0ZU1hcHBp
bmcoKTsKKyAgICB9Cit9CisKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiBib29sIEhUTUxQaWN0
dXJlRWxlbWVudDo6aXNTeXN0ZW1QcmV2aWV3SW1hZ2UoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBpY3R1cmVFbGVtZW50LmgKaW5kZXggNTUyZjYyMjhiYjRiMmY1MDkzNWNmODI5ZTkxYTYw
YTdmZGI3NjM1Ni4uZGRmMmZkNzZmMDU5MzFkZDZhN2EyMjg0NDgwOTlmOGU4Y2Q3MzdlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQaWN0dXJlRWxlbWVudC5oCkBAIC0zNiw2ICszNiw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5IVE1MUGljdHVyZUVsZW1lbnQoKTsKIAogICAgIHZvaWQg
c291cmNlc0NoYW5nZWQoKTsKKyAgICB2b2lkIHNvdXJjZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
SFRNTFNvdXJjZUVsZW1lbnQmKTsKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGlzU3lzdGVtUHJldmlld0ltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCmluZGV4IGFjNDI0ZGU2ZGYzNWFiYzMzMWQ3YTUxOGY0
ZjEzYzIzODgxMzk5ODAuLjFmODA5M2Y1N2E1ZDY4MzQ0ZGNlNWIyNDkxY2YwZWYyMjc0YzcxNmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCkBAIC0yMDUsNCAr
MjA1LDE0IEBAIGNvbnN0IE1lZGlhUXVlcnlTZXQqIEhUTUxTb3VyY2VFbGVtZW50OjpwYXJzZWRN
ZWRpYUF0dHJpYnV0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgcmV0dXJuIG1fY2FjaGVkUGFy
c2VkTWVkaWFBdHRyaWJ1dGUudmFsdWUoKS5nZXQoKTsKIH0KIAordm9pZCBIVE1MU291cmNlRWxl
bWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9tU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0
ZU1vZGlmaWNhdGlvblJlYXNvbiByZWFzb24pCit7CisgICAgSFRNTEVsZW1lbnQ6OmF0dHJpYnV0
ZUNoYW5nZWQobmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCByZWFzb24pOworICAgIGlmIChuYW1l
ID09IHdpZHRoQXR0ciB8fCBuYW1lID09IGhlaWdodEF0dHIpIHsKKyAgICAgICAgUmVmUHRyPEVs
ZW1lbnQ+IHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgaWYgKHBhcmVudCAmJiBp
czxIVE1MUGljdHVyZUVsZW1lbnQ+KCpwYXJlbnQpKQorICAgICAgICAgICAgZG93bmNhc3Q8SFRN
TFBpY3R1cmVFbGVtZW50PigqcGFyZW50KS5zb3VyY2VBdHRyaWJ1dGVDaGFuZ2VkKCp0aGlzKTsK
KyAgICB9Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJj
ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaAppbmRl
eCAxYWI2NmMwYjQwYWEyM2U0OGQ3ZDAzYTA3OTllMzYyNmE4MTRmNzZmLi41MzA4MzA3YWM1NTI4
NTU3NTIwMDdhMDc1NDdmZmFiNGM3YWI4MTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTb3VyY2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291
cmNlRWxlbWVudC5oCkBAIC01OCw2ICs1OCw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7
CiAKKyAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmli
dXRlTW9kaWZpY2F0aW9uUmVhc29uKSBmaW5hbDsKKwogICAgIHZvaWQgZXJyb3JFdmVudFRpbWVy
RmlyZWQoKTsKIAogICAgIFRpbWVyIG1fZXJyb3JFdmVudFRpbWVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTb3VyY2VFbGVtZW50LmlkbAppbmRleCBlMjZmMmVlMjA3N2RlMDUxMmQ4YjY1YTE2
YWQ2MTMxMzYwNzg2NDQwLi4xMzVhMjUxMzIyMzgwNmUyMWViMjRlYTUyNTcwMjQ1YTk0NGQ0Mzg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmlkbApAQCAtMzIsNCAr
MzIsNiBAQAogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBV
U1ZTdHJpbmcgc3Jjc2V0OwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0
dHJpYnV0ZSBET01TdHJpbmcgc2l6ZXM7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVm
bGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBtZWRpYTsKKyAgICBbQ0VSZWFjdGlvbnM9Tm90TmVl
ZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0aDsKKyAgICBbQ0VSZWFj
dGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBoZWlnaHQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggYTdhZWJl
MzdiODFiMjdjODI3ZWNiMDZlY2JlM2U1ODg4Yjc1MGRjOC4uZGExYzRlZmI0NmZjMDRkNjQxZjBi
YzkwMzA3NTdlNzc2MTQ5MGUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCkBAIC0xMTUsMTAgKzExNSwxMCBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmNvbGxl
Y3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbQogewog
ICAgIGlmIChuYW1lID09IHdpZHRoQXR0cikgewogICAgICAgICBhZGRIVE1MTGVuZ3RoVG9TdHls
ZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgdmFsdWUpOwotICAgICAgICBhcHBseUFzcGVjdFJh
dGlvRnJvbVdpZHRoQW5kSGVpZ2h0QXR0cmlidXRlc1RvU3R5bGUoc3R5bGUpOworICAgICAgICBh
cHBseUFzcGVjdFJhdGlvRnJvbVdpZHRoQW5kSGVpZ2h0QXR0cmlidXRlc1RvU3R5bGUodmFsdWUs
IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oaGVpZ2h0QXR0ciksIHN0eWxlKTsKICAg
ICB9IGVsc2UgaWYgKG5hbWUgPT0gaGVpZ2h0QXR0cikgewogICAgICAgICBhZGRIVE1MTGVuZ3Ro
VG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIHZhbHVlKTsKLSAgICAgICAgYXBwbHlB
c3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxlKHN0eWxlKTsKKyAg
ICAgICAgYXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxl
KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyKSwgdmFsdWUsIHN0eWxl
KTsKICAgICB9IGVsc2UKICAgICAgICAgSFRNTE1lZGlhRWxlbWVudDo6Y29sbGVjdFByZXNlbnRh
dGlvbmFsSGludHNGb3JBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBk
YzcxMWNiY2NiMDViZmJhZDhiYmYxZWEzY2QwMjg2ZTZhYzM1MjhmLi5jZGI1YjFjM2UwMzUwZTYw
NDE2Yzk4MTkyZGY2YmZmY2Y1MGI4NDNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDYt
MTcgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxl
bWVudCB3aWR0aCBhbmQgaGVpZ2h0IGF0dHJpYnV0ZXMgb24gc291cmNlIGVsZW1lbnRzIG9mIDxw
aWN0dXJlPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIyMzY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTA2LTExICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNo
ZW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBVc2UgSFRNTERpbWVuc2lvbiB0byBwYXJzZSBkaWZm
ZXJlbnQgSFRNTCBhdHRyaWJ1dGUgbGVuZ3RoIHZhbHVlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKaW5kZXggYTViN2VkNjk4MTI4MTQyMjUwZDFhYWM3Mzk5ODE0ZjUxZTBkNjNjMS4uNzQw
ZTNjMDU0YzVjM2VhMzA1NWZiNzIzYmI3ZjZkNDU4NTBlZTJiNSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDYtMTcgIENhdGhpZSBDaGVuICA8
Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVudCB3aWR0aCBhbmQgaGVp
Z2h0IGF0dHJpYnV0ZXMgb24gc291cmNlIGVsZW1lbnRzIG9mIDxwaWN0dXJlPgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMzY4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMvYXR0cmlidXRlcy1mb3ItZW1iZWRk
ZWQtY29udGVudC1hbmQtaW1hZ2VzL3BpY3R1cmUtYXNwZWN0LXJhdGlvLWV4cGVjdGVkLnR4dDoK
KwogMjAyMS0wNi0xMSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgVXNlIEhUTUxEaW1lbnNpb24gdG8gcGFyc2UgZGlmZmVyZW50IEhUTUwgYXR0cmlidXRl
IGxlbmd0aCB2YWx1ZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDg0YThjNGIxMzU5NTllNWM0YmY0
OGJiZDRiZGYxMjY1NTYxMTU3MjkuLmRhMGRhZDBmMzUxYmRlODNhYzg4YmM2OWE0ZWI4MDczNWZk
YTQwNDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTQzNCw5ICsxNDM0LDYgQEAgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3Ro
ZS1pbWctZWxlbWVudC8KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtaW1nLWVsZW1lbnQvc2l6ZXMvcGFyc2UtYS1zaXpl
cy1hdHRyaWJ1dGUtc3RhbmRhcmRzLW1vZGUuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
dGhlLW9iamVjdC1lbGVtZW50L29iamVjdC1mYWxsYmFjay1mYWlsZWQtY3Jvc3Mtb3JpZ2luLW5h
dmlnYXRpb24uc3ViLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogCi0jIE5ld2x5IGltcG9ydGluZyBh
c3BlY3QgcmF0aW8gdGVzdCBpcyBmbGFreS4KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMvYXR0cmlidXRlcy1mb3ItZW1iZWRk
ZWQtY29udGVudC1hbmQtaW1hZ2VzL3BpY3R1cmUtYXNwZWN0LXJhdGlvLmh0bWwgWyBGYWlsdXJl
IFBhc3MgXQotCiAjIE5ld2x5IGltcG9ydGluZyBXM0MgdGVzdHMgbmVlZGVkIHN1cHBvcnQgZm9y
IHJlZnRlc3Qtd2FpdC4KIHdlYmtpdC5vcmcvYi8xODYwNDUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L3RyYWNrL3RyYWNrLWVsZW1lbnQvdHJhY2stY3VlLXJlbmRlcmluZy1hZnRlci1jb250cm9scy1h
ZGRlZC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTg2MDQ1IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy90cmFjay90cmFjay1lbGVtZW50L3RyYWNrLWN1ZS1yZW5kZXJpbmctYWZ0ZXItY29udHJv
bHMtcmVtb3ZlZC5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL3JlcGxhY2VkLWVsZW1lbnRz
L2F0dHJpYnV0ZXMtZm9yLWVtYmVkZGVkLWNvbnRlbnQtYW5kLWltYWdlcy9waWN0dXJlLWFzcGVj
dC1yYXRpby1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL3JlcGxhY2VkLWVsZW1lbnRzL2F0dHJpYnV0ZXMtZm9y
LWVtYmVkZGVkLWNvbnRlbnQtYW5kLWltYWdlcy9waWN0dXJlLWFzcGVjdC1yYXRpby1leHBlY3Rl
ZC50eHQKaW5kZXggNjQ3M2ViNzhiMmYyNzNlNzcwNjQ0N2M1MzEyNjE1ODcxOTUxMjA5YS4uZTcz
Y2EzYjYzN2FiNjYwNTI2OWUzOTI2Y2I3M2Y5Y2JkNzJjNWE2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9yZXBs
YWNlZC1lbGVtZW50cy9hdHRyaWJ1dGVzLWZvci1lbWJlZGRlZC1jb250ZW50LWFuZC1pbWFnZXMv
cGljdHVyZS1hc3BlY3QtcmF0aW8tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVu
dHMvYXR0cmlidXRlcy1mb3ItZW1iZWRkZWQtY29udGVudC1hbmQtaW1hZ2VzL3BpY3R1cmUtYXNw
ZWN0LXJhdGlvLWV4cGVjdGVkLnR4dApAQCAtMSwyMCArMSwxOCBAQAogCiAKLQotCiBQQVNTIHNv
dXJjZSB3aWR0aCBhbmQgaGVpZ2h0IGF0dHJpYnV0ZXMgYXJlIHVzZWQgdG8gaW5mZXIgYXNwZWN0
LXJhdGlvIGluIDxwaWN0dXJlPgotRkFJTCBDb21wdXRlZCBzdHlsZSBmb3Igd2lkdGgvaGVpZ2h0
L2FzcGVjdC1yYXRpbyBhc3NlcnRfYXBwcm94X2VxdWFsczogZXhwZWN0ZWQgMSArLy0gMC4wMDEg
YnV0IGdvdCBJbmZpbml0eQotRkFJTCBTb3VyY2Ugd2lkdGgvaGVpZ2h0IHNob3VsZCB0YWtlIHBy
ZWNlZGVuY2Ugb3ZlciBpbWcgYXR0cmlidXRlcy4gYXNzZXJ0X2FwcHJveF9lcXVhbHM6IGV4cGVj
dGVkIDIgKy8tIDAuMDAxIGJ1dCBnb3QgNQotRkFJTCBNYWtlIHN1cmUgc3R5bGUgZ2V0cyBpbnZh
bGlkYXRlZCBjb3JyZWN0bHkgd2hlbiB0aGUgc291cmNlIGdldHMgcmVtb3ZlZC4gYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgImF1dG8gMjUwIC8gNTAiIGJ1dCBnb3QgImF1dG8iCi1GQUlMIElmIHRo
ZSA8c291cmNlPiBoYXMgb25seSBvbmUgb2Ygd2lkdGgvaGVpZ2h0LCB3ZSBkb24ndCBnZXQgYW4g
YXNwZWN0IHJhdGlvLCBldmVuIGlmIHRoZSA8aW1nPiBoYXMgYm90aC4gYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgIjEwMHB4IiBidXQgZ290ICIyMDBweCIKLUZBSUwgSWYgd2UgZG9uJ3QgaGF2ZSB3
aWR0aC9oZWlnaHQgb24gdGhlIHNvdXJjZSwgd2UgZmFsbCBiYWNrIHRvIHdpZHRoL2hlaWdodCBv
biB0aGUgPGltZz4uIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhdXRvIDIwMCAvIDEwMCIgYnV0
IGdvdCAiYXV0byIKLUZBSUwgSWYgd2Ugb25seSBoYXZlIG9uZSB3aWR0aCBhdHRyaWJ1dGUsIHdl
IHNob3VsZCBnZXQgd2lkdGggbWFwcGVkIGJ1dCBubyBhc3BlY3QgcmF0aW8sIGV2ZW4gaWYgPGlt
Zz4gaGFzIGF0dHJpYnV0ZXMuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxMDBweCIgYnV0IGdv
dCAiMjAwcHgiCi1GQUlMIElmIHdlIG9ubHkgaGF2ZSBoZWlnaHQgYXR0cmlidXRlLCB3ZSBzaG91
bGQgZ2V0IGhlaWdodCBtYXBwZWQgYnV0IG5vIGFzcGVjdCByYXRpbywgZXZlbiBpZiA8aW1nPiBo
YXMgYXR0cmlidXRlcy4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1dG8iIGJ1dCBnb3QgIjIw
MHB4IgotRkFJTCBEeW5hbWljYWxseSBjaGFuZ2luZyB3aWR0aC9oZWlnaHQgc2hvdWxkIGNoYW5n
ZSBjb21wdXRlZCBzdHlsZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYXV0byAxMDAgLyAxMDAi
IGJ1dCBnb3QgImF1dG8iCi1GQUlMIENoYW5naW5nIHdoaWNoIDxzb3VyY2U+IG1hdGNoZXMgc2hv
dWxkIGNoYW5nZSBjb21wdXRlZCBzdHlsZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYXV0byAx
MDAgLyAxMDAiIGJ1dCBnb3QgImF1dG8iCi1GQUlMIFBlcmNlbnRhZ2VzIG9uIHNvdXJjZSBzaG91
bGQgYmUgaWdub3JlZCBmb3IgYXNwZWN0LXJhdGlvIGJ1dCB1c2VkIGZvciB3aWR0aC9oZWlnaHQu
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDEwMCBidXQgZ290IDAKLUZBSUwgVHJhaWxpbmcgZ2Fy
YmFnZSBzaG91bGQgYmUgaWdub3JlZCBidXQgbm90IG1ha2UgdGhlIGF0dHJpYnV0ZSBpbnZhbGlk
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDEwMCBidXQgZ290IDAKK1BBU1MgQ29tcHV0ZWQgc3R5
bGUgZm9yIHdpZHRoL2hlaWdodC9hc3BlY3QtcmF0aW8KK1BBU1MgU291cmNlIHdpZHRoL2hlaWdo
dCBzaG91bGQgdGFrZSBwcmVjZWRlbmNlIG92ZXIgaW1nIGF0dHJpYnV0ZXMuCitQQVNTIE1ha2Ug
c3VyZSBzdHlsZSBnZXRzIGludmFsaWRhdGVkIGNvcnJlY3RseSB3aGVuIHRoZSBzb3VyY2UgZ2V0
cyByZW1vdmVkLgorUEFTUyBJZiB0aGUgPHNvdXJjZT4gaGFzIG9ubHkgb25lIG9mIHdpZHRoL2hl
aWdodCwgd2UgZG9uJ3QgZ2V0IGFuIGFzcGVjdCByYXRpbywgZXZlbiBpZiB0aGUgPGltZz4gaGFz
IGJvdGguCitQQVNTIElmIHdlIGRvbid0IGhhdmUgd2lkdGgvaGVpZ2h0IG9uIHRoZSBzb3VyY2Us
IHdlIGZhbGwgYmFjayB0byB3aWR0aC9oZWlnaHQgb24gdGhlIDxpbWc+LgorUEFTUyBJZiB3ZSBv
bmx5IGhhdmUgb25lIHdpZHRoIGF0dHJpYnV0ZSwgd2Ugc2hvdWxkIGdldCB3aWR0aCBtYXBwZWQg
YnV0IG5vIGFzcGVjdCByYXRpbywgZXZlbiBpZiA8aW1nPiBoYXMgYXR0cmlidXRlcy4KK1BBU1Mg
SWYgd2Ugb25seSBoYXZlIGhlaWdodCBhdHRyaWJ1dGUsIHdlIHNob3VsZCBnZXQgaGVpZ2h0IG1h
cHBlZCBidXQgbm8gYXNwZWN0IHJhdGlvLCBldmVuIGlmIDxpbWc+IGhhcyBhdHRyaWJ1dGVzLgor
UEFTUyBEeW5hbWljYWxseSBjaGFuZ2luZyB3aWR0aC9oZWlnaHQgc2hvdWxkIGNoYW5nZSBjb21w
dXRlZCBzdHlsZQorUEFTUyBDaGFuZ2luZyB3aGljaCA8c291cmNlPiBtYXRjaGVzIHNob3VsZCBj
aGFuZ2UgY29tcHV0ZWQgc3R5bGUKK1BBU1MgUGVyY2VudGFnZXMgb24gc291cmNlIHNob3VsZCBi
ZSBpZ25vcmVkIGZvciBhc3BlY3QtcmF0aW8gYnV0IHVzZWQgZm9yIHdpZHRoL2hlaWdodC4KK1BB
U1MgVHJhaWxpbmcgZ2FyYmFnZSBzaG91bGQgYmUgaWdub3JlZCBidXQgbm90IG1ha2UgdGhlIGF0
dHJpYnV0ZSBpbnZhbGlkCiBQQVNTIExvYWRlZCBwaWN0dXJlIHRlc3Q6IEJvdGggPHNvdXJjZT4g
YW5kIDxpbWc+IGFyZSB3aXRob3V0IHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlcwotRkFJTCBM
b2FkZWQgcGljdHVyZSB0ZXN0OiA8c291cmNlPiB3aXRoIHdpZHRoIGFuZCBoZWlnaHQgYXR0cmli
dXRlcywgPGltZz4gd2l0aG91dCB3aWR0aCBhbmQgaGVpZ2h0IGF0dHJpYnV0ZXMgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgImF1dG8gMTAwIC8gMTAwIiBidXQgZ290ICJhdXRvIgotRkFJTCBMb2Fk
ZWQgcGljdHVyZSB0ZXN0OiBCb3RoIDxzb3VyY2U+IGFuZCA8aW1nPiBhcmUgd2l0aCB3aWR0aCBh
bmQgaGVpZ2h0IGF0dHJpYnV0ZXMgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1dG8gMTAwIC8g
MTAwIiBidXQgZ290ICJhdXRvIgorUEFTUyBMb2FkZWQgcGljdHVyZSB0ZXN0OiA8c291cmNlPiB3
aXRoIHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlcywgPGltZz4gd2l0aG91dCB3aWR0aCBhbmQg
aGVpZ2h0IGF0dHJpYnV0ZXMKK1BBU1MgTG9hZGVkIHBpY3R1cmUgdGVzdDogQm90aCA8c291cmNl
PiBhbmQgPGltZz4gYXJlIHdpdGggd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431676</attachid>
            <date>2021-06-17 09:11:57 -0700</date>
            <delta_ts>2021-06-21 03:58:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222368-20210618001154.patch</filename>
            <type>text/plain</type>
            <size>25847</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg4MDRhZWQyZWI1MzQ4
YTVjMDdkNmE5ZTdkZjYxM2JiNTNmMjQ2NC4uNzY1NmI1ZDMzZDRhNmJmNmZjYmUwOTFkZDczYzgx
MjgyZmEyNzZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIxLTA2LTE3ICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgd2lk
dGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzIG9uIHNvdXJjZSBlbGVtZW50cyBvZiA8cGljdHVyZT4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjM2OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY29yZGlu
ZyB0byBbMV0sIHRoZSBzb3VyY2UgZWxlbWVudCBzdXBwb3J0cyBkaW1lbnNpb24gYXR0cmlidXRl
cy4gVGhlIGltZyBlbGVtZW50IGNhbiB1c2UgdGhlIHdpZHRoCisgICAgICAgIGFuZCBoZWlnaHQg
YXR0cmlidXRlcyBvZiB0aGUgc291cmNlIGVsZW1lbnQgdG8gZGV0ZXJtaW5lIGl0cyByZW5kZXJl
ZCBkaW1lbnNpb25zIGFuZCBhc3BlY3QtcmF0aW8uCisgICAgICAgIEluIG9yZGVyIHRvIGltcGxl
bWVudCB0aGlzLCBhZGQgbV9zb3VyY2VFbGVtZW50IHRvIEhUTUxJbWFnZUVsZW1lbnQgdG8gaW5k
aWNhdGUgdGhlIHNvdXJjZSBlbGVtZW50IHRoYXQKKyAgICAgICAgaXMgc2VsZWN0ZWQuIEFsc28g
YWRkIGludmFsaWRhdGVBdHRyaWJ1dGVNYXBwaW5nKCkgdG8gc3luY2hyb25pemUgd2l0aCB0aGUg
Y2hhbmdlcyBvZiBzb3VyY2UncyBhdHRyaWJ1dGVzCisgICAgICAgIHRvIHRoZSBpbWcgZWxlbWVu
dC4gVGhlbiBhZGQgY29sbGVjdEV4dHJhU3R5bGVGb3JQcmVzZW50YXRpb25hbEhpbnRzKCkgdG8g
Y29sbGVjdCBzdHlsZSBmcm9tIHNvdXJjZSBhdHRyaWJ1dGVzLgorCisgICAgICAgIFsxXSBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN0aGUtc291cmNlLWVsZW1lbnQKKworICAgICAgICAq
IGRvbS9FbGVtZW50RGF0YS5oOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnJlYnVpbGRQcmVzZW50YXRpb25hbEhpbnRT
dHlsZSk6IGNvbGxlY3RFeHRyYVN0eWxlRm9yUHJlc2VudGF0aW9uYWxIaW50cygpIHdoZW4gcmVi
dWlsZC4KKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVkRWxlbWVudDo6Y29sbGVjdEV4dHJhU3R5bGVGb3JQcmVzZW50YXRpb25hbEhpbnRzKTog
QWRkIGFuIGludGVyZmFjZSB0byBjb2xsZWN0IGV4dHJhIHN0eWxlIGZyb20gb3RoZXIgZWxlbWVu
dHMuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRWxlbWVudDo6YXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNU
b1N0eWxlKTogQWRkIHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlcyBhcyBpbnB1dCB2YXJpYWJs
ZXMuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojpjb2xs
ZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW1hZ2VFbGVtZW50Ojpjb2xsZWN0RXh0cmFTdHlsZUZvclByZXNlbnRhdGlvbmFsSGludHMp
OiBJZiBzb3VyY2UgZWxlbWVudCBoYXMgd2lkdGggb3IgaGVpZ2h0IGF0dHJpYnV0ZXMsIGFwcGx5
IHRoZW0KKyAgICAgICAgdG8gd2lkdGgsIGhlaWdodCBhbmQgYXNwZWN0LXJhdGlvIG9mIHRoZSBz
dHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmJlc3RGaXRTb3VyY2VG
cm9tUGljdHVyZUVsZW1lbnQpOiBLZWVwIHRoZSBzb3VyY2UgZWxlbWVudC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnNlbGVjdEltYWdlU291cmNlKTogUmVzZXQgdGhlIHNv
dXJjZSBlbGVtZW50IHRvIG51bGwgaWYgbm8gY2FuZGlkYXRlIGlzIGZvdW5kLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6c291cmNlRWxlbWVudCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpzZXRTb3VyY2VFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmludmFsaWRhdGVBdHRyaWJ1dGVNYXBwaW5nKTog
SW52YWxpZGF0ZSB0aGUgcHJlc2VudGF0aW9uYWxIaW50U3R5bGUuCisgICAgICAgICogaHRtbC9I
VE1MSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNvbGxlY3RQcmVzZW50YXRpb25h
bEhpbnRzRm9yQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxQaWN0dXJlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGljdHVyZUVsZW1lbnQ6OnNvdXJjZUF0dHJpYnV0
ZUNoYW5nZWQpOiBDYWxsIGludmFsaWRhdGVBdHRyaWJ1dGVNYXBwaW5nIGlmIHNvdXJjZSBlbGVt
ZW50J3MgYXR0cmlidXRlcyBhcmUgY2hhbmdlZC4KKyAgICAgICAgKiBodG1sL0hUTUxQaWN0dXJl
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNvdXJjZUVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOiBDYWxsIHNv
dXJjZUF0dHJpYnV0ZUNoYW5nZWQgaWYgd2lkdGggb3IgaGVpZ2h0IGF0dHJpYnV0ZXMgYXJlIGNo
YW5nZWQuCisgICAgICAgICogaHRtbC9IVE1MU291cmNlRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTFNvdXJjZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Ojpjb2xsZWN0UHJlc2Vu
dGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZSk6CisKIDIwMjEtMDYtMTEgIE1lZ2FuIEdhcmRuZXIg
IDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgQXBwSGlnaGxpZ2h0
IGdyb3VwIHRvIFF1aWNrTm90ZSB0byBjb3JyZWN0bHkgcmVmbGVjdCBmZWF0dXJlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudERhdGEuaAppbmRleCAxMDU0MDlmZDk4NDEwMzk3NjVkYmUyMDNmNjMyZDExODI1
Y2Q4MGU3Li41MTE2ZTMyMDg5N2Y4ZGI1MjhiYjExNGI3OTY4MmU5ZGU2Y2RjZjhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudERhdGEuaApAQCAtMTcwLDYgKzE3MCw3IEBAIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIFNoYXJlYWJsZUVsZW1lbnREYXRhOwogICAgIGZyaWVuZCBjbGFzcyBVbmlxdWVF
bGVtZW50RGF0YTsKICAgICBmcmllbmQgY2xhc3MgU1ZHRWxlbWVudDsKKyAgICBmcmllbmQgY2xh
c3MgSFRNTEltYWdlRWxlbWVudDsKIAogICAgIHZvaWQgZGVzdHJveSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggMzk0YTBhN2NmMjA2NmY4ODk1YjdhYTU5Njc3ODU0
YmE1NzkxNTY2Mi4uODhlZTFiZDJhNjQ1M2I3NWY2ZDljN2YzZGJmZWM3MzBiMmQ2YzI5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAtMjk2LDYgKzI5Niw4IEBAIHZvaWQg
U3R5bGVkRWxlbWVudDo6cmVidWlsZFByZXNlbnRhdGlvbmFsSGludFN0eWxlKCkKICAgICBmb3Ig
KGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogYXR0cmlidXRlc0l0ZXJhdG9yKCkpCiAgICAg
ICAgIGNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1l
KCksIGF0dHJpYnV0ZS52YWx1ZSgpLCBzdGF0aWNfY2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
Jj4oKnN0eWxlKSk7CiAKKyAgICBjb2xsZWN0RXh0cmFTdHlsZUZvclByZXNlbnRhdGlvbmFsSGlu
dHMoc3RhdGljX2Nhc3Q8TXV0YWJsZVN0eWxlUHJvcGVydGllcyY+KCpzdHlsZSkpOworCiAgICAg
Ly8gU2hhcmVhYmxlRWxlbWVudERhdGEgZG9lc24ndCBzdG9yZSBwcmVzZW50YXRpb24gYXR0cmli
dXRlIHN0eWxlLCBzbyBtYWtlIHN1cmUgd2UgaGF2ZSBhIFVuaXF1ZUVsZW1lbnREYXRhLgogICAg
IFVuaXF1ZUVsZW1lbnREYXRhJiBlbGVtZW50RGF0YSA9IGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRh
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCmluZGV4IDI2YWFlYjI0NjI2MTMzMjk0
M2VkNTQxMzNhM2E1YWNiZTcxYWFiODQuLjBkMzZhZjYwN2JkOTE5OGZlYjhkMTc2N2NiZjllNzM5
MDMxZmRlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaApAQCAtNjQsNiArNjQsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBwcmVzZW50YXRpb25hbEhpbnRT
dHlsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50
c0ZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYsIE11
dGFibGVTdHlsZVByb3BlcnRpZXMmKSB7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFN0eWxlUHJvcGVy
dGllcyogYWRkaXRpb25hbFByZXNlbnRhdGlvbmFsSGludFN0eWxlKCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0RXh0cmFTdHlsZUZvclByZXNlbnRh
dGlvbmFsSGludHMoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIHsgfQogCiBwcm90ZWN0ZWQ6CiAg
ICAgU3R5bGVkRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKaW5kZXggMzJmYWYxYjYyZTQ2MzcyYmI5YjA5ZWYyMGEwZWQ0MGRmZWQ3MDEwYy4uNjdmZjU4
Y2E1NTA2MTA5ZWRiOWFjNDY4NjFhMzM3OWNlYjU0N2VkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAKQEAgLTYyNSwxNSArNjI1LDE1IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxF
bGVtZW50OjpzZXRPdXRlclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiB7IH07
CiB9CiAKLXZvaWQgSFRNTEVsZW1lbnQ6OmFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWln
aHRBdHRyaWJ1dGVzVG9TdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKK3ZvaWQg
SFRNTEVsZW1lbnQ6OmFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVz
VG9TdHlsZShTdHJpbmdWaWV3IHdpZHRoQXR0cmlidXRlLCBTdHJpbmdWaWV3IGhlaWdodEF0dHJp
YnV0ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7CiAgICAgaWYgKCFkb2N1bWVu
dCgpLnNldHRpbmdzKCkuYXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBkaW1lbnNpb25XaWR0aCA9IHBhcnNlSFRN
TERpbWVuc2lvbihhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHdpZHRoQXR0cikpOwor
ICAgIGF1dG8gZGltZW5zaW9uV2lkdGggPSBwYXJzZUhUTUxEaW1lbnNpb24od2lkdGhBdHRyaWJ1
dGUpOwogICAgIGlmICghZGltZW5zaW9uV2lkdGggfHwgZGltZW5zaW9uV2lkdGgtPnR5cGUgIT0g
SFRNTERpbWVuc2lvbjo6VHlwZTo6UGl4ZWwpCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvIGRp
bWVuc2lvbkhlaWdodCA9IHBhcnNlSFRNTERpbWVuc2lvbihhdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGhlaWdodEF0dHIpKTsKKyAgICBhdXRvIGRpbWVuc2lvbkhlaWdodCA9IHBhcnNl
SFRNTERpbWVuc2lvbihoZWlnaHRBdHRyaWJ1dGUpOwogICAgIGlmICghZGltZW5zaW9uSGVpZ2h0
IHx8IGRpbWVuc2lvbkhlaWdodC0+dHlwZSAhPSBIVE1MRGltZW5zaW9uOjpUeXBlOjpQaXhlbCkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggODBjNzg3
MDQwMDhmMWJmZjhiZDFlNzc4MWIwODE5ZDYxNzAzM2I4My4uNDYzZTE2Y2U3YWIyODI5ODhlZjli
ZGJjYjIzYjI5NmU3ODE5M2Y3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtMTU3
LDcgKzE1Nyw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgYWRkSFRNTENvbG9yVG9TdHlsZShN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBjb2xv
cik7CiAKLSAgICB2b2lkIGFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1
dGVzVG9TdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJik7CisgICAgdm9pZCBhcHBseUFzcGVj
dFJhdGlvRnJvbVdpZHRoQW5kSGVpZ2h0QXR0cmlidXRlc1RvU3R5bGUoU3RyaW5nVmlldyB3aWR0
aEF0dHJpYnV0ZSwgU3RyaW5nVmlldyBoZWlnaHRBdHRyaWJ1dGUsIE11dGFibGVTdHlsZVByb3Bl
cnRpZXMmKTsKICAgICB2b2lkIGFwcGx5QWxpZ25tZW50QXR0cmlidXRlVG9TdHlsZShjb25zdCBB
dG9tU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpOwogICAgIHZvaWQgYXBwbHlCb3Jk
ZXJBdHRyaWJ1dGVUb1N0eWxlKGNvbnN0IEF0b21TdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDYw
YWZjZjUwMDM0MmIwZmNhMzU2ZDY1YzIyODJkZjUwZjJiNmRhMmMuLjI3YTU0MGZjNjEwNTRhYmU1
NWE3MTQ4MTNjZWZjYjk2YTFjMDE5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcApAQCAtMzcsOSArMzcsOSBAQAogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUxvYWRlci5o
IgorI2luY2x1ZGUgIkhUTUxNYXBFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9t
cy5oIgogI2luY2x1ZGUgIkhUTUxQaWN0dXJlRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxNYXBF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFNvdXJjZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
U3Jjc2V0UGFyc2VyLmgiCiAjaW5jbHVkZSAiTGF6eUxvYWRJbWFnZU9ic2VydmVyLmgiCkBAIC0x
MTcsMTAgKzExNywxMCBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbGxlY3RQcmVzZW50YXRp
b25hbEhpbnRzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbQogewogICAgIGlmIChuYW1l
ID09IHdpZHRoQXR0cikgewogICAgICAgICBhZGRIVE1MTXVsdGlMZW5ndGhUb1N0eWxlKHN0eWxl
LCBDU1NQcm9wZXJ0eVdpZHRoLCB2YWx1ZSk7Ci0gICAgICAgIGFwcGx5QXNwZWN0UmF0aW9Gcm9t
V2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZShzdHlsZSk7CisgICAgICAgIGFwcGx5QXNw
ZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZSh2YWx1ZSwgYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihoZWlnaHRBdHRyKSwgc3R5bGUpOwogICAgIH0gZWxz
ZSBpZiAobmFtZSA9PSBoZWlnaHRBdHRyKSB7CiAgICAgICAgIGFkZEhUTUxNdWx0aUxlbmd0aFRv
U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5SGVpZ2h0LCB2YWx1ZSk7Ci0gICAgICAgIGFwcGx5QXNw
ZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZShzdHlsZSk7CisgICAg
ICAgIGFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZShh
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHdpZHRoQXR0ciksIHZhbHVlLCBzdHlsZSk7
CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGJvcmRlckF0dHIpCiAgICAgICAgIGFwcGx5Qm9yZGVy
QXR0cmlidXRlVG9TdHlsZSh2YWx1ZSwgc3R5bGUpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gdnNw
YWNlQXR0cikgewpAQCAtMTM3LDYgKzEzNywzMSBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmNv
bGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbQog
ICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1
dGUobmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0KIAordm9pZCBIVE1MSW1hZ2VFbGVtZW50Ojpjb2xs
ZWN0RXh0cmFTdHlsZUZvclByZXNlbnRhdGlvbmFsSGludHMoTXV0YWJsZVN0eWxlUHJvcGVydGll
cyYgc3R5bGUpCit7CisgICAgaWYgKCFzb3VyY2VFbGVtZW50KCkpCisgICAgICAgIHJldHVybjsK
KyAgICBhdXRvIHdpZHRoQXR0ckZyb21Tb3VyY2UgPSBzb3VyY2VFbGVtZW50KCktPmF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyKTsKKyAgICBhdXRvIGhlaWdodEF0dHJG
cm9tU291cmNlID0gc291cmNlRWxlbWVudCgpLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKGhlaWdodEF0dHIpOworICAgIGlmICh3aWR0aEF0dHJGcm9tU291cmNlLmlzTnVsbCgpICYm
IGhlaWdodEF0dHJGcm9tU291cmNlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIXdpZHRoQXR0ckZyb21Tb3VyY2UuaXNOdWxsKCkpCisgICAgICAgIGFkZEhUTUxMZW5ndGhU
b1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCB3aWR0aEF0dHJGcm9tU291cmNlKTsKKyAg
ICBlbHNlCisgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25hbEhpbnRTdHlsZShzdHls
ZSwgQ1NTUHJvcGVydHlXaWR0aCwgQ1NTVmFsdWVBdXRvKTsKKworICAgIGlmICghaGVpZ2h0QXR0
ckZyb21Tb3VyY2UuaXNOdWxsKCkpCisgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxl
LCBDU1NQcm9wZXJ0eUhlaWdodCwgaGVpZ2h0QXR0ckZyb21Tb3VyY2UpOworICAgIGVsc2UKKyAg
ICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBDU1NQcm9w
ZXJ0eUhlaWdodCwgQ1NTVmFsdWVBdXRvKTsKKworICAgIGlmICghd2lkdGhBdHRyRnJvbVNvdXJj
ZS5pc051bGwoKSAmJiAhaGVpZ2h0QXR0ckZyb21Tb3VyY2UuaXNOdWxsKCkpCisgICAgICAgIGFw
cGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZSh3aWR0aEF0
dHJGcm9tU291cmNlLCBoZWlnaHRBdHRyRnJvbVNvdXJjZSwgc3R5bGUpOworICAgIGVsc2UKKyAg
ICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBDU1NQcm9w
ZXJ0eUFzcGVjdFJhdGlvLCBDU1NWYWx1ZUF1dG8pOworfQorCiBjb25zdCBBdG9tU3RyaW5nJiBI
VE1MSW1hZ2VFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
YmVzdEZpdEltYWdlVVJMLmlzRW1wdHkoKSA/IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oc3JjQXR0cikgOiBtX2Jlc3RGaXRJbWFnZVVSTDsKQEAgLTE5MSw4ICsyMTYsMTAgQEAgSW1h
Z2VDYW5kaWRhdGUgSFRNTEltYWdlRWxlbWVudDo6YmVzdEZpdFNvdXJjZUZyb21QaWN0dXJlRWxl
bWVudCgpCiAgICAgICAgIGF1dG8gc291cmNlU2l6ZSA9IHNpemVzUGFyc2VyLmxlbmd0aCgpOwog
CiAgICAgICAgIGNhbmRpZGF0ZSA9IGJlc3RGaXRTb3VyY2VGb3JJbWFnZUF0dHJpYnV0ZXMoZG9j
dW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBudWxsQXRvbSgpLCBzcmNzZXQsIHNvdXJjZVNp
emUpOwotICAgICAgICBpZiAoIWNhbmRpZGF0ZS5pc0VtcHR5KCkpCisgICAgICAgIGlmICghY2Fu
ZGlkYXRlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgc2V0U291cmNlRWxlbWVudCgmc291cmNl
KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGNh
bmRpZGF0ZTsKQEAgLTIxNyw2ICsyNDQsNyBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnNlbGVj
dEltYWdlU291cmNlKFJlbGV2YW50TXV0YXRpb24gcmVsZXZhbnRNdXRhdGlvbikKICAgICAvLyBG
aXJzdCBsb29rIGZvciB0aGUgYmVzdCBmaXQgc291cmNlIGZyb20gb3VyIDxwaWN0dXJlPiBwYXJl
bnQgaWYgd2UgaGF2ZSBvbmUuCiAgICAgSW1hZ2VDYW5kaWRhdGUgY2FuZGlkYXRlID0gYmVzdEZp
dFNvdXJjZUZyb21QaWN0dXJlRWxlbWVudCgpOwogICAgIGlmIChjYW5kaWRhdGUuaXNFbXB0eSgp
KSB7CisgICAgICAgIHNldFNvdXJjZUVsZW1lbnQobnVsbHB0cik7CiAgICAgICAgIC8vIElmIHdl
IGRvbid0IGhhdmUgYSA8cGljdHVyZT4gb3IgZGlkbid0IGZpbmQgYSBzb3VyY2UsIHRoZW4gd2Ug
dXNlIG91ciBvd24gYXR0cmlidXRlcy4KICAgICAgICAgU2l6ZXNBdHRyaWJ1dGVQYXJzZXIgc2l6
ZXNQYXJzZXIoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzaXplc0F0dHIpLnN0cmlu
ZygpLCBkb2N1bWVudCgpLCAmbV9tZWRpYVF1ZXJ5RHluYW1pY1Jlc3VsdHMpOwogICAgICAgICBh
dXRvIHNvdXJjZVNpemUgPSBzaXplc1BhcnNlci5sZW5ndGgoKTsKQEAgLTc5OSw0ICs4MjcsMjMg
QEAgUmVmZXJyZXJQb2xpY3kgSFRNTEltYWdlRWxlbWVudDo6cmVmZXJyZXJQb2xpY3koKSBjb25z
dAogICAgIHJldHVybiBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmc7CiB9CiAKK0hUTUxTb3Vy
Y2VFbGVtZW50KiBIVE1MSW1hZ2VFbGVtZW50Ojpzb3VyY2VFbGVtZW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zb3VyY2VFbGVtZW50LmdldCgpOworfQorCit2b2lkIEhUTUxJbWFnZUVsZW1l
bnQ6OnNldFNvdXJjZUVsZW1lbnQoSFRNTFNvdXJjZUVsZW1lbnQqIHNvdXJjZUVsZW1lbnQpCit7
CisgICAgaWYgKG1fc291cmNlRWxlbWVudC5nZXQoKSA9PSBzb3VyY2VFbGVtZW50KQorICAgICAg
ICByZXR1cm47CisgICAgbV9zb3VyY2VFbGVtZW50ID0gbWFrZVdlYWtQdHIoc291cmNlRWxlbWVu
dCk7CisgICAgaW52YWxpZGF0ZUF0dHJpYnV0ZU1hcHBpbmcoKTsKK30KKwordm9pZCBIVE1MSW1h
Z2VFbGVtZW50OjppbnZhbGlkYXRlQXR0cmlidXRlTWFwcGluZygpCit7CisgICAgZW5zdXJlVW5p
cXVlRWxlbWVudERhdGEoKS5zZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkodHJ1ZSk7
CisgICAgaW52YWxpZGF0ZVN0eWxlKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmgKaW5kZXggZjFhMDMwYzRlNzhiNDM4YjAxY2IzYzQzMTEzNTU3NmUxMDEyYThl
Zi4uZThkNWNlY2VhZDFkNzhkNDQ3NDlkZGQ2ODdjZGE1NTEzNTBmZDQ5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTE1MCw2ICsxNTAsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21T
dHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIGhhc1ByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgY29s
bGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21TdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBjb2xsZWN0RXh0cmFTdHlsZUZvclByZXNlbnRhdGlvbmFsSGludHMoTXV0YWJsZVN0
eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxpZGF0ZUF0dHJpYnV0ZU1h
cHBpbmcoKTsKIAogICAgIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7CiAgICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKQEAgLTE4Myw2ICsxODUs
OSBAQCBwcml2YXRlOgogCiAgICAgZmxvYXQgZWZmZWN0aXZlSW1hZ2VEZXZpY2VQaXhlbFJhdGlv
KCkgY29uc3Q7CiAKKyAgICBIVE1MU291cmNlRWxlbWVudCogc291cmNlRWxlbWVudCgpIGNvbnN0
OworICAgIHZvaWQgc2V0U291cmNlRWxlbWVudChIVE1MU291cmNlRWxlbWVudCopOworCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEhUTUxJbWFnZUxvYWRlcj4gbV9pbWFnZUxvYWRlcjsKICAgICBXZWFr
UHRyPEhUTUxGb3JtRWxlbWVudD4gbV9mb3JtOwogICAgIFdlYWtQdHI8SFRNTEZvcm1FbGVtZW50
PiBtX2Zvcm1TZXRCeVBhcnNlcjsKQEAgLTE5Niw2ICsyMDEsOCBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9pc0Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyIHsgZmFsc2UgfTsKIAogICAgIFdlYWtQdHI8
SFRNTFBpY3R1cmVFbGVtZW50PiBtX3BpY3R1cmVFbGVtZW50OworICAgIC8vIFRoZSBzb3VyY2Ug
ZWxlbWVudCB0aGF0IHNlbGVjdGVkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSB1cmwuCisgICAgV2Vh
a1B0cjxIVE1MU291cmNlRWxlbWVudD4gbV9zb3VyY2VFbGVtZW50OwogICAgIE1lZGlhUXVlcnlE
eW5hbWljUmVzdWx0cyBtX21lZGlhUXVlcnlEeW5hbWljUmVzdWx0czsKIAogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAppbmRleCAwZGYxOWRlYzAwMjdiM2M0ZWZjZTFlOTVlZTRiNGJlMDhlM2FiYmQ2Li4yZmJmM2Zk
ZWMyNGY3MWRlNjczNGRlMjViYTZmZWFjZTQ3YmRiNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTcwOCwxMiArNzA4LDEyIEBAIHZvaWQgSFRNTElucHV0
RWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtCiAgICAgICAgIGlmIChtX2lucHV0VHlwZS0+c2hvdWxkUmVzcGVjdEhlaWdodEFu
ZFdpZHRoQXR0cmlidXRlcygpKQogICAgICAgICAgICAgYWRkSFRNTExlbmd0aFRvU3R5bGUoc3R5
bGUsIENTU1Byb3BlcnR5V2lkdGgsIHZhbHVlKTsKICAgICAgICAgaWYgKGlzSW1hZ2VCdXR0b24o
KSkKLSAgICAgICAgICAgIGFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1
dGVzVG9TdHlsZShzdHlsZSk7CisgICAgICAgICAgICBhcHBseUFzcGVjdFJhdGlvRnJvbVdpZHRo
QW5kSGVpZ2h0QXR0cmlidXRlc1RvU3R5bGUodmFsdWUsIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oaGVpZ2h0QXR0ciksIHN0eWxlKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gaGVp
Z2h0QXR0cikgewogICAgICAgICBpZiAobV9pbnB1dFR5cGUtPnNob3VsZFJlc3BlY3RIZWlnaHRB
bmRXaWR0aEF0dHJpYnV0ZXMoKSkKICAgICAgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0
eWxlLCBDU1NQcm9wZXJ0eUhlaWdodCwgdmFsdWUpOwogICAgICAgICBpZiAoaXNJbWFnZUJ1dHRv
bigpKQotICAgICAgICAgICAgYXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJp
YnV0ZXNUb1N0eWxlKHN0eWxlKTsKKyAgICAgICAgICAgIGFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lk
dGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHdpZHRoQXR0ciksIHZhbHVlLCBzdHlsZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGJv
cmRlckF0dHIgJiYgaXNJbWFnZUJ1dHRvbigpKQogICAgICAgICBhcHBseUJvcmRlckF0dHJpYnV0
ZVRvU3R5bGUodmFsdWUsIHN0eWxlKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQaWN0dXJlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQaWN0dXJlRWxlbWVudC5jcHAKaW5kZXggMGVhNzc0ZDdhNmY1NDU2NDU2YzVkYWE3OTk3NDAy
Yzg5NjU4YjVjYy4uNDJkYzIwZWIzZWU0YjQwMjY0MGIxNmUxZWM0ZmMwYzI1ODQ2MDJmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBpY3R1cmVFbGVtZW50LmNwcApAQCAtNjQsNiArNjQs
MTQgQEAgdm9pZCBIVE1MUGljdHVyZUVsZW1lbnQ6OnNvdXJjZXNDaGFuZ2VkKCkKICAgICAgICAg
ZWxlbWVudC5zZWxlY3RJbWFnZVNvdXJjZShSZWxldmFudE11dGF0aW9uOjpZZXMpOwogfQogCit2
b2lkIEhUTUxQaWN0dXJlRWxlbWVudDo6c291cmNlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBIVE1M
U291cmNlRWxlbWVudCYgc291cmNlRWxlbWVudCkKK3sKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQg
OiBjaGlsZHJlbk9mVHlwZTxIVE1MSW1hZ2VFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYg
KCZzb3VyY2VFbGVtZW50ID09IGVsZW1lbnQuc291cmNlRWxlbWVudCgpKQorICAgICAgICAgICAg
ZWxlbWVudC5pbnZhbGlkYXRlQXR0cmlidXRlTWFwcGluZygpOworICAgIH0KK30KKwogI2lmIFVT
RShTWVNURU1fUFJFVklFVykKIGJvb2wgSFRNTFBpY3R1cmVFbGVtZW50Ojppc1N5c3RlbVByZXZp
ZXdJbWFnZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQaWN0dXJl
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuaAppbmRl
eCA1NTJmNjIyOGJiNGIyZjUwOTM1Y2Y4MjllOTFhNjBhN2ZkYjc2MzU2Li5kZGYyZmQ3NmYwNTkz
MWRkNmE3YTIyODQ0ODA5OWY4ZThjZDczN2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQaWN0dXJlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBp
Y3R1cmVFbGVtZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkhU
TUxQaWN0dXJlRWxlbWVudCgpOwogCiAgICAgdm9pZCBzb3VyY2VzQ2hhbmdlZCgpOworICAgIHZv
aWQgc291cmNlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBIVE1MU291cmNlRWxlbWVudCYpOwogCiAj
aWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNTeXN0ZW1Q
cmV2aWV3SW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJj
ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAK
aW5kZXggYWM0MjRkZTZkZjM1YWJjMzMxZDdhNTE4ZjRmMTNjMjM4ODEzOTk4MC4uMWY4MDkzZjU3
YTVkNjgzNDRkY2U1YjI0OTFjZjBlZjIyNzRjNzE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU291cmNlRWxlbWVudC5jcHAKQEAgLTIwNSw0ICsyMDUsMTQgQEAgY29uc3QgTWVkaWFRdWVy
eVNldCogSFRNTFNvdXJjZUVsZW1lbnQ6OnBhcnNlZE1lZGlhQXR0cmlidXRlKERvY3VtZW50JiBk
b2N1bWVudCkKICAgICByZXR1cm4gbV9jYWNoZWRQYXJzZWRNZWRpYUF0dHJpYnV0ZS52YWx1ZSgp
LmdldCgpOwogfQogCit2b2lkIEhUTUxTb3VyY2VFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBjb25z
dCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uIHJlYXNv
bikKK3sKKyAgICBIVE1MRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChuYW1lLCBvbGRWYWx1ZSwg
bmV3VmFsdWUsIHJlYXNvbik7CisgICAgaWYgKG5hbWUgPT0gd2lkdGhBdHRyIHx8IG5hbWUgPT0g
aGVpZ2h0QXR0cikgeworICAgICAgICBSZWZQdHI8RWxlbWVudD4gcGFyZW50ID0gcGFyZW50RWxl
bWVudCgpOworICAgICAgICBpZiAocGFyZW50ICYmIGlzPEhUTUxQaWN0dXJlRWxlbWVudD4oKnBh
cmVudCkpCisgICAgICAgICAgICBkb3duY2FzdDxIVE1MUGljdHVyZUVsZW1lbnQ+KCpwYXJlbnQp
LnNvdXJjZUF0dHJpYnV0ZUNoYW5nZWQoKnRoaXMpOworICAgIH0KK30KKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5oCmluZGV4IDFhYjY2YzBiNDBhYTIzZTQ4ZDdkMDNh
MDc5OWUzNjI2YTgxNGY3NmYuLjUzMDgzMDdhYzU1Mjg1NTc1MjAwN2EwNzU0N2ZmYWI0YzdhYjgx
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmgKQEAgLTU4LDYgKzU4
LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKIAorICAgIHZvaWQgYXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNv
bnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24pIGZp
bmFsOworCiAgICAgdm9pZCBlcnJvckV2ZW50VGltZXJGaXJlZCgpOwogCiAgICAgVGltZXIgbV9l
cnJvckV2ZW50VGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3Vy
Y2VFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaWRs
CmluZGV4IGUyNmYyZWUyMDc3ZGUwNTEyZDhiNjVhMTZhZDYxMzEzNjA3ODY0NDAuLjEzNWEyNTEz
MjIzODA2ZTIxZWIyNGVhNTI1NzAyNDVhOTQ0ZDQzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNvdXJjZUVsZW1lbnQuaWRsCkBAIC0zMiw0ICszMiw2IEBACiAgICAgW0NFUmVhY3Rpb25z
PU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFVTVlN0cmluZyBzcmNzZXQ7CiAgICAgW0NF
UmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBzaXplczsK
ICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IG1lZGlhOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIHdpZHRoOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Rd
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGhlaWdodDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBhN2FlYmUzN2I4MWIyN2M4MjdlY2IwNmVjYmUzZTU4
ODhiNzUwZGM4Li5kYTFjNGVmYjQ2ZmMwNGQ2NDFmMGJjOTAzMDc1N2U3NzYxNDkwZTM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTExNSwxMCArMTE1LDEw
IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtCiB7CiAgICAgaWYgKG5hbWUgPT0gd2lkdGhBdHRy
KSB7CiAgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRo
LCB2YWx1ZSk7Ci0gICAgICAgIGFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRy
aWJ1dGVzVG9TdHlsZShzdHlsZSk7CisgICAgICAgIGFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhB
bmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZSh2YWx1ZSwgYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihoZWlnaHRBdHRyKSwgc3R5bGUpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBoZWln
aHRBdHRyKSB7CiAgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0
eUhlaWdodCwgdmFsdWUpOwotICAgICAgICBhcHBseUFzcGVjdFJhdGlvRnJvbVdpZHRoQW5kSGVp
Z2h0QXR0cmlidXRlc1RvU3R5bGUoc3R5bGUpOworICAgICAgICBhcHBseUFzcGVjdFJhdGlvRnJv
bVdpZHRoQW5kSGVpZ2h0QXR0cmlidXRlc1RvU3R5bGUoYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbih3aWR0aEF0dHIpLCB2YWx1ZSwgc3R5bGUpOwogICAgIH0gZWxzZQogICAgICAgICBI
VE1MTWVkaWFFbGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSwgc3R5bGUpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRjNzExY2JjY2IwNWJmYmFkOGJiZjFlYTNj
ZDAyODZlNmFjMzUyOGYuLmNkYjViMWMzZTAzNTBlNjA0MTZjOTgxOTJkZjZiZmZjZjUwYjg0M2Qg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wNi0xNyAgQ2F0aGllIENoZW4gIDxjYXRoaWVj
aGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHdpZHRoIGFuZCBoZWlnaHQgYXR0
cmlidXRlcyBvbiBzb3VyY2UgZWxlbWVudHMgb2YgPHBpY3R1cmU+CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIzNjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisKIDIw
MjEtMDYtMTEgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVzZSBIVE1MRGltZW5zaW9uIHRvIHBhcnNlIGRpZmZlcmVudCBIVE1MIGF0dHJpYnV0ZSBsZW5n
dGggdmFsdWVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBhNWI3ZWQ2OTgxMjgx
NDIyNTBkMWFhYzczOTk4MTRmNTFlMGQ2M2MxLi43NDBlM2MwNTRjNWMzZWEzMDU1ZmI3MjNiYjdm
NmQ0NTg1MGVlMmI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAyMS0wNi0xNyAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlcyBvbiBzb3VyY2Ug
ZWxlbWVudHMgb2YgPHBpY3R1cmU+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjIzNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9yZXBsYWNl
ZC1lbGVtZW50cy9hdHRyaWJ1dGVzLWZvci1lbWJlZGRlZC1jb250ZW50LWFuZC1pbWFnZXMvcGlj
dHVyZS1hc3BlY3QtcmF0aW8tZXhwZWN0ZWQudHh0OgorCiAyMDIxLTA2LTExICBDYXRoaWUgQ2hl
biAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBVc2UgSFRNTERpbWVuc2lvbiB0
byBwYXJzZSBkaWZmZXJlbnQgSFRNTCBhdHRyaWJ1dGUgbGVuZ3RoIHZhbHVlcwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggODRhOGM0YjEzNTk1OWU1YzRiZjQ4YmJkNGJkZjEyNjU1NjExNTcyOS4uZGEw
ZGFkMGYzNTFiZGU4M2FjODhiYzY5YTRlYjgwNzM1ZmRhNDA0OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CkBAIC0xNDM0LDkgKzE0MzQsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWltZy1lbGVtZW50LwogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3Ro
ZS1pbWctZWxlbWVudC9zaXplcy9wYXJzZS1hLXNpemVzLWF0dHJpYnV0ZS1zdGFuZGFyZHMtbW9k
ZS5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtb2JqZWN0LWVsZW1lbnQvb2JqZWN0
LWZhbGxiYWNrLWZhaWxlZC1jcm9zcy1vcmlnaW4tbmF2aWdhdGlvbi5zdWIuaHRtbCBbIEZhaWx1
cmUgUGFzcyBdCiAKLSMgTmV3bHkgaW1wb3J0aW5nIGFzcGVjdCByYXRpbyB0ZXN0IGlzIGZsYWt5
LgotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9yZXBsYWNl
ZC1lbGVtZW50cy9hdHRyaWJ1dGVzLWZvci1lbWJlZGRlZC1jb250ZW50LWFuZC1pbWFnZXMvcGlj
dHVyZS1hc3BlY3QtcmF0aW8uaHRtbCBbIEZhaWx1cmUgUGFzcyBdCi0KICMgTmV3bHkgaW1wb3J0
aW5nIFczQyB0ZXN0cyBuZWVkZWQgc3VwcG9ydCBmb3IgcmVmdGVzdC13YWl0Lgogd2Via2l0Lm9y
Zy9iLzE4NjA0NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvdHJhY2svdHJhY2stZWxlbWVudC90cmFj
ay1jdWUtcmVuZGVyaW5nLWFmdGVyLWNvbnRyb2xzLWFkZGVkLmh0bWwgWyBTa2lwIF0KIHdlYmtp
dC5vcmcvYi8xODYwNDUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL3RyYWNrLWVsZW1lbnQv
dHJhY2stY3VlLXJlbmRlcmluZy1hZnRlci1jb250cm9scy1yZW1vdmVkLmh0bWwgWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMvYXR0cmlidXRlcy1mb3ItZW1iZWRkZWQt
Y29udGVudC1hbmQtaW1hZ2VzL3BpY3R1cmUtYXNwZWN0LXJhdGlvLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcv
cmVwbGFjZWQtZWxlbWVudHMvYXR0cmlidXRlcy1mb3ItZW1iZWRkZWQtY29udGVudC1hbmQtaW1h
Z2VzL3BpY3R1cmUtYXNwZWN0LXJhdGlvLWV4cGVjdGVkLnR4dAppbmRleCA2NDczZWI3OGIyZjI3
M2U3NzA2NDQ3YzUzMTI2MTU4NzE5NTEyMDlhLi5lNzNjYTNiNjM3YWI2NjA1MjY5ZTM5MjZjYjcz
ZjljYmQ3MmM1YTZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL3JlcGxhY2VkLWVsZW1lbnRzL2F0dHJpYnV0ZXMt
Zm9yLWVtYmVkZGVkLWNvbnRlbnQtYW5kLWltYWdlcy9waWN0dXJlLWFzcGVjdC1yYXRpby1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3JlbmRlcmluZy9yZXBsYWNlZC1lbGVtZW50cy9hdHRyaWJ1dGVzLWZvci1lbWJlZGRl
ZC1jb250ZW50LWFuZC1pbWFnZXMvcGljdHVyZS1hc3BlY3QtcmF0aW8tZXhwZWN0ZWQudHh0CkBA
IC0xLDIwICsxLDE4IEBACiAKIAotCi0KIFBBU1Mgc291cmNlIHdpZHRoIGFuZCBoZWlnaHQgYXR0
cmlidXRlcyBhcmUgdXNlZCB0byBpbmZlciBhc3BlY3QtcmF0aW8gaW4gPHBpY3R1cmU+Ci1GQUlM
IENvbXB1dGVkIHN0eWxlIGZvciB3aWR0aC9oZWlnaHQvYXNwZWN0LXJhdGlvIGFzc2VydF9hcHBy
b3hfZXF1YWxzOiBleHBlY3RlZCAxICsvLSAwLjAwMSBidXQgZ290IEluZmluaXR5Ci1GQUlMIFNv
dXJjZSB3aWR0aC9oZWlnaHQgc2hvdWxkIHRha2UgcHJlY2VkZW5jZSBvdmVyIGltZyBhdHRyaWJ1
dGVzLiBhc3NlcnRfYXBwcm94X2VxdWFsczogZXhwZWN0ZWQgMiArLy0gMC4wMDEgYnV0IGdvdCA1
Ci1GQUlMIE1ha2Ugc3VyZSBzdHlsZSBnZXRzIGludmFsaWRhdGVkIGNvcnJlY3RseSB3aGVuIHRo
ZSBzb3VyY2UgZ2V0cyByZW1vdmVkLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYXV0byAyNTAg
LyA1MCIgYnV0IGdvdCAiYXV0byIKLUZBSUwgSWYgdGhlIDxzb3VyY2U+IGhhcyBvbmx5IG9uZSBv
ZiB3aWR0aC9oZWlnaHQsIHdlIGRvbid0IGdldCBhbiBhc3BlY3QgcmF0aW8sIGV2ZW4gaWYgdGhl
IDxpbWc+IGhhcyBib3RoLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiMTAwcHgiIGJ1dCBnb3Qg
IjIwMHB4IgotRkFJTCBJZiB3ZSBkb24ndCBoYXZlIHdpZHRoL2hlaWdodCBvbiB0aGUgc291cmNl
LCB3ZSBmYWxsIGJhY2sgdG8gd2lkdGgvaGVpZ2h0IG9uIHRoZSA8aW1nPi4gYXNzZXJ0X2VxdWFs
czogZXhwZWN0ZWQgImF1dG8gMjAwIC8gMTAwIiBidXQgZ290ICJhdXRvIgotRkFJTCBJZiB3ZSBv
bmx5IGhhdmUgb25lIHdpZHRoIGF0dHJpYnV0ZSwgd2Ugc2hvdWxkIGdldCB3aWR0aCBtYXBwZWQg
YnV0IG5vIGFzcGVjdCByYXRpbywgZXZlbiBpZiA8aW1nPiBoYXMgYXR0cmlidXRlcy4gYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgIjEwMHB4IiBidXQgZ290ICIyMDBweCIKLUZBSUwgSWYgd2Ugb25s
eSBoYXZlIGhlaWdodCBhdHRyaWJ1dGUsIHdlIHNob3VsZCBnZXQgaGVpZ2h0IG1hcHBlZCBidXQg
bm8gYXNwZWN0IHJhdGlvLCBldmVuIGlmIDxpbWc+IGhhcyBhdHRyaWJ1dGVzLiBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiYXV0byIgYnV0IGdvdCAiMjAwcHgiCi1GQUlMIER5bmFtaWNhbGx5IGNo
YW5naW5nIHdpZHRoL2hlaWdodCBzaG91bGQgY2hhbmdlIGNvbXB1dGVkIHN0eWxlIGFzc2VydF9l
cXVhbHM6IGV4cGVjdGVkICJhdXRvIDEwMCAvIDEwMCIgYnV0IGdvdCAiYXV0byIKLUZBSUwgQ2hh
bmdpbmcgd2hpY2ggPHNvdXJjZT4gbWF0Y2hlcyBzaG91bGQgY2hhbmdlIGNvbXB1dGVkIHN0eWxl
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhdXRvIDEwMCAvIDEwMCIgYnV0IGdvdCAiYXV0byIK
LUZBSUwgUGVyY2VudGFnZXMgb24gc291cmNlIHNob3VsZCBiZSBpZ25vcmVkIGZvciBhc3BlY3Qt
cmF0aW8gYnV0IHVzZWQgZm9yIHdpZHRoL2hlaWdodC4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
MTAwIGJ1dCBnb3QgMAotRkFJTCBUcmFpbGluZyBnYXJiYWdlIHNob3VsZCBiZSBpZ25vcmVkIGJ1
dCBub3QgbWFrZSB0aGUgYXR0cmlidXRlIGludmFsaWQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
MTAwIGJ1dCBnb3QgMAorUEFTUyBDb21wdXRlZCBzdHlsZSBmb3Igd2lkdGgvaGVpZ2h0L2FzcGVj
dC1yYXRpbworUEFTUyBTb3VyY2Ugd2lkdGgvaGVpZ2h0IHNob3VsZCB0YWtlIHByZWNlZGVuY2Ug
b3ZlciBpbWcgYXR0cmlidXRlcy4KK1BBU1MgTWFrZSBzdXJlIHN0eWxlIGdldHMgaW52YWxpZGF0
ZWQgY29ycmVjdGx5IHdoZW4gdGhlIHNvdXJjZSBnZXRzIHJlbW92ZWQuCitQQVNTIElmIHRoZSA8
c291cmNlPiBoYXMgb25seSBvbmUgb2Ygd2lkdGgvaGVpZ2h0LCB3ZSBkb24ndCBnZXQgYW4gYXNw
ZWN0IHJhdGlvLCBldmVuIGlmIHRoZSA8aW1nPiBoYXMgYm90aC4KK1BBU1MgSWYgd2UgZG9uJ3Qg
aGF2ZSB3aWR0aC9oZWlnaHQgb24gdGhlIHNvdXJjZSwgd2UgZmFsbCBiYWNrIHRvIHdpZHRoL2hl
aWdodCBvbiB0aGUgPGltZz4uCitQQVNTIElmIHdlIG9ubHkgaGF2ZSBvbmUgd2lkdGggYXR0cmli
dXRlLCB3ZSBzaG91bGQgZ2V0IHdpZHRoIG1hcHBlZCBidXQgbm8gYXNwZWN0IHJhdGlvLCBldmVu
IGlmIDxpbWc+IGhhcyBhdHRyaWJ1dGVzLgorUEFTUyBJZiB3ZSBvbmx5IGhhdmUgaGVpZ2h0IGF0
dHJpYnV0ZSwgd2Ugc2hvdWxkIGdldCBoZWlnaHQgbWFwcGVkIGJ1dCBubyBhc3BlY3QgcmF0aW8s
IGV2ZW4gaWYgPGltZz4gaGFzIGF0dHJpYnV0ZXMuCitQQVNTIER5bmFtaWNhbGx5IGNoYW5naW5n
IHdpZHRoL2hlaWdodCBzaG91bGQgY2hhbmdlIGNvbXB1dGVkIHN0eWxlCitQQVNTIENoYW5naW5n
IHdoaWNoIDxzb3VyY2U+IG1hdGNoZXMgc2hvdWxkIGNoYW5nZSBjb21wdXRlZCBzdHlsZQorUEFT
UyBQZXJjZW50YWdlcyBvbiBzb3VyY2Ugc2hvdWxkIGJlIGlnbm9yZWQgZm9yIGFzcGVjdC1yYXRp
byBidXQgdXNlZCBmb3Igd2lkdGgvaGVpZ2h0LgorUEFTUyBUcmFpbGluZyBnYXJiYWdlIHNob3Vs
ZCBiZSBpZ25vcmVkIGJ1dCBub3QgbWFrZSB0aGUgYXR0cmlidXRlIGludmFsaWQKIFBBU1MgTG9h
ZGVkIHBpY3R1cmUgdGVzdDogQm90aCA8c291cmNlPiBhbmQgPGltZz4gYXJlIHdpdGhvdXQgd2lk
dGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzCi1GQUlMIExvYWRlZCBwaWN0dXJlIHRlc3Q6IDxzb3Vy
Y2U+IHdpdGggd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzLCA8aW1nPiB3aXRob3V0IHdpZHRo
IGFuZCBoZWlnaHQgYXR0cmlidXRlcyBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYXV0byAxMDAg
LyAxMDAiIGJ1dCBnb3QgImF1dG8iCi1GQUlMIExvYWRlZCBwaWN0dXJlIHRlc3Q6IEJvdGggPHNv
dXJjZT4gYW5kIDxpbWc+IGFyZSB3aXRoIHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlcyBhc3Nl
cnRfZXF1YWxzOiBleHBlY3RlZCAiYXV0byAxMDAgLyAxMDAiIGJ1dCBnb3QgImF1dG8iCitQQVNT
IExvYWRlZCBwaWN0dXJlIHRlc3Q6IDxzb3VyY2U+IHdpdGggd2lkdGggYW5kIGhlaWdodCBhdHRy
aWJ1dGVzLCA8aW1nPiB3aXRob3V0IHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlcworUEFTUyBM
b2FkZWQgcGljdHVyZSB0ZXN0OiBCb3RoIDxzb3VyY2U+IGFuZCA8aW1nPiBhcmUgd2l0aCB3aWR0
aCBhbmQgaGVpZ2h0IGF0dHJpYnV0ZXMKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431845</attachid>
            <date>2021-06-21 03:58:26 -0700</date>
            <delta_ts>2021-06-21 22:07:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222368-20210621185824.patch</filename>
            <type>text/plain</type>
            <size>26968</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg4MDRhZWQyZWI1MzQ4
YTVjMDdkNmE5ZTdkZjYxM2JiNTNmMjQ2NC4uMWVkMWQ0ZjBhZWQ0ODBiNWNjMmUzNTQ3ZjAwNmU4
OTlhMjliMzVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIxLTA2LTE3ICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgd2lk
dGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzIG9uIHNvdXJjZSBlbGVtZW50cyBvZiA8cGljdHVyZT4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjM2OAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFjY29yZGluZyB0
byBbMV0sIHRoZSBzb3VyY2UgZWxlbWVudCBzdXBwb3J0cyBkaW1lbnNpb24gYXR0cmlidXRlcy4g
VGhlIGltZyBlbGVtZW50IGNhbiB1c2UgdGhlIHdpZHRoCisgICAgICAgIGFuZCBoZWlnaHQgYXR0
cmlidXRlcyBvZiB0aGUgc291cmNlIGVsZW1lbnQgdG8gZGV0ZXJtaW5lIGl0cyByZW5kZXJlZCBk
aW1lbnNpb25zIGFuZCBhc3BlY3QtcmF0aW8uCisgICAgICAgIEluIG9yZGVyIHRvIGltcGxlbWVu
dCB0aGlzLCBhZGQgbV9zb3VyY2VFbGVtZW50IHRvIEhUTUxJbWFnZUVsZW1lbnQgdG8gaW5kaWNh
dGUgdGhlIHNvdXJjZSBlbGVtZW50IHRoYXQKKyAgICAgICAgaXMgc2VsZWN0ZWQuIEFsc28gYWRk
IGludmFsaWRhdGVBdHRyaWJ1dGVNYXBwaW5nKCkgdG8gc3luY2hyb25pemUgd2l0aCB0aGUgY2hh
bmdlcyBvZiBzb3VyY2UncyBhdHRyaWJ1dGVzCisgICAgICAgIHRvIHRoZSBpbWcgZWxlbWVudC4g
VGhlbiBhZGQgY29sbGVjdEV4dHJhU3R5bGVGb3JQcmVzZW50YXRpb25hbEhpbnRzKCkgdG8gY29s
bGVjdCBzdHlsZSBmcm9tIHNvdXJjZSBhdHRyaWJ1dGVzLgorCisgICAgICAgIFsxXSBodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnLyN0aGUtc291cmNlLWVsZW1lbnQKKworICAgICAgICAqIGRv
bS9FbGVtZW50RGF0YS5oOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnJlYnVpbGRQcmVzZW50YXRpb25hbEhpbnRTdHls
ZSk6IGNvbGxlY3RFeHRyYVN0eWxlRm9yUHJlc2VudGF0aW9uYWxIaW50cygpIHdoZW4gcmVidWls
ZC4KKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVkRWxlbWVudDo6Y29sbGVjdEV4dHJhU3R5bGVGb3JQcmVzZW50YXRpb25hbEhpbnRzKTogQWRk
IGFuIGludGVyZmFjZSB0byBjb2xsZWN0IGV4dHJhIHN0eWxlIGZyb20gb3RoZXIgZWxlbWVudHMu
CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RWxlbWVudDo6YXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0
eWxlKTogQWRkIHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlcyBhcyBpbnB1dCB2YXJpYWJsZXMu
CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojpjb2xsZWN0
UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW1hZ2VFbGVtZW50Ojpjb2xsZWN0RXh0cmFTdHlsZUZvclByZXNlbnRhdGlvbmFsSGludHMpOiBJ
ZiBzb3VyY2UgZWxlbWVudCBoYXMgd2lkdGggb3IgaGVpZ2h0IGF0dHJpYnV0ZXMsIGFwcGx5IHRo
ZW0KKyAgICAgICAgdG8gd2lkdGgsIGhlaWdodCBhbmQgYXNwZWN0LXJhdGlvIG9mIHRoZSBzdHls
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmJlc3RGaXRTb3VyY2VGcm9t
UGljdHVyZUVsZW1lbnQpOiBLZWVwIHRoZSBzb3VyY2UgZWxlbWVudC4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnNlbGVjdEltYWdlU291cmNlKTogUmVzZXQgdGhlIHNvdXJj
ZSBlbGVtZW50IHRvIG51bGwgaWYgbm8gY2FuZGlkYXRlIGlzIGZvdW5kLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEltYWdlRWxlbWVudDo6c291cmNlRWxlbWVudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpzZXRTb3VyY2VFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmludmFsaWRhdGVBdHRyaWJ1dGVNYXBwaW5nKTogSW52
YWxpZGF0ZSB0aGUgcHJlc2VudGF0aW9uYWxIaW50U3R5bGUuCisgICAgICAgICogaHRtbC9IVE1M
SW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhp
bnRzRm9yQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxQaWN0dXJlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGljdHVyZUVsZW1lbnQ6OnNvdXJjZURpbWVuc2lvbkF0
dHJpYnV0ZXNDaGFuZ2VkKTogQ2FsbCBpbnZhbGlkYXRlQXR0cmlidXRlTWFwcGluZyBpZiBzb3Vy
Y2UgZWxlbWVudCdzIGF0dHJpYnV0ZXMgYXJlIGNoYW5nZWQuCisgICAgICAgICogaHRtbC9IVE1M
UGljdHVyZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKTog
Q2FsbCBzb3VyY2VEaW1lbnNpb25BdHRyaWJ1dGVzQ2hhbmdlZCBpZiB3aWR0aCBvciBoZWlnaHQg
YXR0cmlidXRlcyBhcmUgY2hhbmdlZC4KKyAgICAgICAgKiBodG1sL0hUTUxTb3VyY2VFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MU291cmNlRWxlbWVudC5pZGw6CisgICAgICAgICogaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1l
bnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKToKKwogMjAyMS0wNi0x
MSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bmFtZSBBcHBIaWdobGlnaHQgZ3JvdXAgdG8gUXVpY2tOb3RlIHRvIGNvcnJlY3RseSByZWZsZWN0
IGZlYXR1cmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCmluZGV4IDEwNTQwOWZkOTg0MTAzOTc2
NWRiZTIwM2Y2MzJkMTE4MjVjZDgwZTcuLjUxMTZlMzIwODk3ZjhkYjUyOGJiMTE0Yjc5NjgyZTlk
ZTZjZGNmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCkBAIC0xNzAsNiArMTcwLDcgQEAg
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlRWxlbWVudERhdGE7CiAgICAgZnJp
ZW5kIGNsYXNzIFVuaXF1ZUVsZW1lbnREYXRhOwogICAgIGZyaWVuZCBjbGFzcyBTVkdFbGVtZW50
OworICAgIGZyaWVuZCBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogCiAgICAgdm9pZCBkZXN0cm95
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRleCAzOTRhMGE3Y2YyMDY2
Zjg4OTViN2FhNTk2Nzc4NTRiYTU3OTE1NjYyLi5hZmE3OGUzN2Q1M2Q2ZmZlM2FmNGIzNzIwNDRk
MmIwMDRlNDgwZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRWxlbWVudFJh
cmVEYXRhLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSW1hZ2VF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbi5oIgpAQCAtMjkyLDE1ICsyOTMsMjEgQEAgdm9pZCBTdHlsZWRFbGVtZW50OjphZGRT
dWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QKIAog
dm9pZCBTdHlsZWRFbGVtZW50OjpyZWJ1aWxkUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKQogewot
ICAgIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGll
czo6Y3JlYXRlKGlzU1ZHRWxlbWVudCgpID8gU1ZHQXR0cmlidXRlTW9kZSA6IEhUTUxRdWlya3NN
b2RlKTsKKyAgICBSZWYgc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoaXNT
VkdFbGVtZW50KCkgPyBTVkdBdHRyaWJ1dGVNb2RlIDogSFRNTFF1aXJrc01vZGUpOwogICAgIGZv
ciAoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGVzSXRlcmF0b3IoKSkKLSAg
ICAgICAgY29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUoYXR0cmlidXRlLm5h
bWUoKSwgYXR0cmlidXRlLnZhbHVlKCksIHN0YXRpY19jYXN0PE11dGFibGVTdHlsZVByb3BlcnRp
ZXMmPigqc3R5bGUpKTsKKyAgICAgICAgY29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRy
aWJ1dGUoYXR0cmlidXRlLm5hbWUoKSwgYXR0cmlidXRlLnZhbHVlKCksIHN0eWxlLmdldCgpKTsK
KworICAgIGlmIChpczxIVE1MSW1hZ2VFbGVtZW50Pih0aGlzKSkKKyAgICAgICAgY29sbGVjdEV4
dHJhU3R5bGVGb3JQcmVzZW50YXRpb25hbEhpbnRzKHN0eWxlLmdldCgpKTsKIAogICAgIC8vIFNo
YXJlYWJsZUVsZW1lbnREYXRhIGRvZXNuJ3Qgc3RvcmUgcHJlc2VudGF0aW9uIGF0dHJpYnV0ZSBz
dHlsZSwgc28gbWFrZSBzdXJlIHdlIGhhdmUgYSBVbmlxdWVFbGVtZW50RGF0YS4KICAgICBVbmlx
dWVFbGVtZW50RGF0YSYgZWxlbWVudERhdGEgPSBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpOwog
CiAgICAgZWxlbWVudERhdGEuc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KGZhbHNl
KTsKLSAgICBlbGVtZW50RGF0YS5tX3ByZXNlbnRhdGlvbmFsSGludFN0eWxlID0gc3R5bGUtPmlz
RW1wdHkoKSA/IG51bGxwdHIgOiBXVEZNb3ZlKHN0eWxlKTsKKyAgICBpZiAoc3R5bGUtPmlzRW1w
dHkoKSkKKyAgICAgICAgZWxlbWVudERhdGEubV9wcmVzZW50YXRpb25hbEhpbnRTdHlsZSA9IG51
bGxwdHI7CisgICAgZWxzZQorICAgICAgICBlbGVtZW50RGF0YS5tX3ByZXNlbnRhdGlvbmFsSGlu
dFN0eWxlID0gV1RGTW92ZShzdHlsZSk7CiB9CiAKIHZvaWQgU3R5bGVkRWxlbWVudDo6YWRkUHJv
cGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0
eWxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIENTU1ZhbHVlSUQgaWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3R5bGVkRWxlbWVudC5oCmluZGV4IDI2YWFlYjI0NjI2MTMzMjk0M2VkNTQxMzNh
M2E1YWNiZTcxYWFiODQuLjBkMzZhZjYwN2JkOTE5OGZlYjhkMTc2N2NiZjllNzM5MDMxZmRlOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaApAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBwcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYsIE11dGFibGVTdHls
ZVByb3BlcnRpZXMmKSB7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFN0eWxlUHJvcGVydGllcyogYWRk
aXRpb25hbFByZXNlbnRhdGlvbmFsSGludFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0RXh0cmFTdHlsZUZvclByZXNlbnRhdGlvbmFsSGlu
dHMoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIHsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3R5bGVk
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIENv
bnN0cnVjdGlvblR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXgg
MzJmYWYxYjYyZTQ2MzcyYmI5YjA5ZWYyMGEwZWQ0MGRmZWQ3MDEwYy4uNjdmZjU4Y2E1NTA2MTA5
ZWRiOWFjNDY4NjFhMzM3OWNlYjU0N2VkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKQEAgLTYyNSwxNSArNjI1LDE1IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxFbGVtZW50Ojpz
ZXRPdXRlclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiB7IH07CiB9CiAKLXZv
aWQgSFRNTEVsZW1lbnQ6OmFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1
dGVzVG9TdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKK3ZvaWQgSFRNTEVsZW1l
bnQ6OmFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZShT
dHJpbmdWaWV3IHdpZHRoQXR0cmlidXRlLCBTdHJpbmdWaWV3IGhlaWdodEF0dHJpYnV0ZSwgTXV0
YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7CiAgICAgaWYgKCFkb2N1bWVudCgpLnNldHRp
bmdzKCkuYXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byBkaW1lbnNpb25XaWR0aCA9IHBhcnNlSFRNTERpbWVuc2lv
bihhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHdpZHRoQXR0cikpOworICAgIGF1dG8g
ZGltZW5zaW9uV2lkdGggPSBwYXJzZUhUTUxEaW1lbnNpb24od2lkdGhBdHRyaWJ1dGUpOwogICAg
IGlmICghZGltZW5zaW9uV2lkdGggfHwgZGltZW5zaW9uV2lkdGgtPnR5cGUgIT0gSFRNTERpbWVu
c2lvbjo6VHlwZTo6UGl4ZWwpCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvIGRpbWVuc2lvbkhl
aWdodCA9IHBhcnNlSFRNTERpbWVuc2lvbihhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KGhlaWdodEF0dHIpKTsKKyAgICBhdXRvIGRpbWVuc2lvbkhlaWdodCA9IHBhcnNlSFRNTERpbWVu
c2lvbihoZWlnaHRBdHRyaWJ1dGUpOwogICAgIGlmICghZGltZW5zaW9uSGVpZ2h0IHx8IGRpbWVu
c2lvbkhlaWdodC0+dHlwZSAhPSBIVE1MRGltZW5zaW9uOjpUeXBlOjpQaXhlbCkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggODBjNzg3MDQwMDhmMWJm
ZjhiZDFlNzc4MWIwODE5ZDYxNzAzM2I4My4uNDYzZTE2Y2U3YWIyODI5ODhlZjliZGJjYjIzYjI5
NmU3ODE5M2Y3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtMTU3LDcgKzE1Nyw3
IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgYWRkSFRNTENvbG9yVG9TdHlsZShNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzJiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBjb2xvcik7CiAKLSAg
ICB2b2lkIGFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHls
ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJik7CisgICAgdm9pZCBhcHBseUFzcGVjdFJhdGlvRnJv
bVdpZHRoQW5kSGVpZ2h0QXR0cmlidXRlc1RvU3R5bGUoU3RyaW5nVmlldyB3aWR0aEF0dHJpYnV0
ZSwgU3RyaW5nVmlldyBoZWlnaHRBdHRyaWJ1dGUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKTsK
ICAgICB2b2lkIGFwcGx5QWxpZ25tZW50QXR0cmlidXRlVG9TdHlsZShjb25zdCBBdG9tU3RyaW5n
JiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpOwogICAgIHZvaWQgYXBwbHlCb3JkZXJBdHRyaWJ1
dGVUb1N0eWxlKGNvbnN0IEF0b21TdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDYwYWZjZjUwMDM0
MmIwZmNhMzU2ZDY1YzIyODJkZjUwZjJiNmRhMmMuLmYyNDQ5ZmY1YjE1OTU0YTlkZTYzMzc0MWRl
MmZkNzU5OTBhYzM0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cApAQCAtMzcsOSArMzcsOSBAQAogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUxvYWRlci5oIgorI2luY2x1
ZGUgIkhUTUxNYXBFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2lu
Y2x1ZGUgIkhUTUxQaWN0dXJlRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxNYXBFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTFNvdXJjZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU3Jjc2V0UGFy
c2VyLmgiCiAjaW5jbHVkZSAiTGF6eUxvYWRJbWFnZU9ic2VydmVyLmgiCkBAIC0xMTcsMTAgKzEx
NywxMCBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRz
Rm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbQogewogICAgIGlmIChuYW1lID09IHdpZHRo
QXR0cikgewogICAgICAgICBhZGRIVE1MTXVsdGlMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9w
ZXJ0eVdpZHRoLCB2YWx1ZSk7Ci0gICAgICAgIGFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRI
ZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZShzdHlsZSk7CisgICAgICAgIGFwcGx5QXNwZWN0UmF0aW9G
cm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZSh2YWx1ZSwgYXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihoZWlnaHRBdHRyKSwgc3R5bGUpOwogICAgIH0gZWxzZSBpZiAobmFt
ZSA9PSBoZWlnaHRBdHRyKSB7CiAgICAgICAgIGFkZEhUTUxNdWx0aUxlbmd0aFRvU3R5bGUoc3R5
bGUsIENTU1Byb3BlcnR5SGVpZ2h0LCB2YWx1ZSk7Ci0gICAgICAgIGFwcGx5QXNwZWN0UmF0aW9G
cm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZShzdHlsZSk7CisgICAgICAgIGFwcGx5
QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZShhdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKHdpZHRoQXR0ciksIHZhbHVlLCBzdHlsZSk7CiAgICAgfSBl
bHNlIGlmIChuYW1lID09IGJvcmRlckF0dHIpCiAgICAgICAgIGFwcGx5Qm9yZGVyQXR0cmlidXRl
VG9TdHlsZSh2YWx1ZSwgc3R5bGUpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gdnNwYWNlQXR0cikg
ewpAQCAtMTM3LDYgKzEzNywzMSBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbGxlY3RQcmVz
ZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbQogICAgICAgICBI
VE1MRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUobmFtZSwg
dmFsdWUsIHN0eWxlKTsKIH0KIAordm9pZCBIVE1MSW1hZ2VFbGVtZW50Ojpjb2xsZWN0RXh0cmFT
dHlsZUZvclByZXNlbnRhdGlvbmFsSGludHMoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUp
Cit7CisgICAgaWYgKCFzb3VyY2VFbGVtZW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRv
JiB3aWR0aEF0dHJGcm9tU291cmNlID0gc291cmNlRWxlbWVudCgpLT5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKHdpZHRoQXR0cik7CisgICAgYXV0byYgaGVpZ2h0QXR0ckZyb21Tb3Vy
Y2UgPSBzb3VyY2VFbGVtZW50KCktPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oaGVp
Z2h0QXR0cik7CisgICAgaWYgKHdpZHRoQXR0ckZyb21Tb3VyY2UuaXNOdWxsKCkgJiYgaGVpZ2h0
QXR0ckZyb21Tb3VyY2UuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghd2lk
dGhBdHRyRnJvbVNvdXJjZS5pc051bGwoKSkKKyAgICAgICAgYWRkSFRNTExlbmd0aFRvU3R5bGUo
c3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIHdpZHRoQXR0ckZyb21Tb3VyY2UpOworICAgIGVsc2UK
KyAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBDU1NQ
cm9wZXJ0eVdpZHRoLCBDU1NWYWx1ZUF1dG8pOworCisgICAgaWYgKCFoZWlnaHRBdHRyRnJvbVNv
dXJjZS5pc051bGwoKSkKKyAgICAgICAgYWRkSFRNTExlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1By
b3BlcnR5SGVpZ2h0LCBoZWlnaHRBdHRyRnJvbVNvdXJjZSk7CisgICAgZWxzZQorICAgICAgICBh
ZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5SGVp
Z2h0LCBDU1NWYWx1ZUF1dG8pOworCisgICAgaWYgKCF3aWR0aEF0dHJGcm9tU291cmNlLmlzTnVs
bCgpICYmICFoZWlnaHRBdHRyRnJvbVNvdXJjZS5pc051bGwoKSkKKyAgICAgICAgYXBwbHlBc3Bl
Y3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxlKHdpZHRoQXR0ckZyb21T
b3VyY2UsIGhlaWdodEF0dHJGcm9tU291cmNlLCBzdHlsZSk7CisgICAgZWxzZQorICAgICAgICBh
ZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5QXNw
ZWN0UmF0aW8sIENTU1ZhbHVlQXV0byk7Cit9CisKIGNvbnN0IEF0b21TdHJpbmcmIEhUTUxJbWFn
ZUVsZW1lbnQ6OmltYWdlU291cmNlVVJMKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9iZXN0Rml0
SW1hZ2VVUkwuaXNFbXB0eSgpID8gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNB
dHRyKSA6IG1fYmVzdEZpdEltYWdlVVJMOwpAQCAtMTkxLDggKzIxNiwxMCBAQCBJbWFnZUNhbmRp
ZGF0ZSBIVE1MSW1hZ2VFbGVtZW50OjpiZXN0Rml0U291cmNlRnJvbVBpY3R1cmVFbGVtZW50KCkK
ICAgICAgICAgYXV0byBzb3VyY2VTaXplID0gc2l6ZXNQYXJzZXIubGVuZ3RoKCk7CiAKICAgICAg
ICAgY2FuZGlkYXRlID0gYmVzdEZpdFNvdXJjZUZvckltYWdlQXR0cmlidXRlcyhkb2N1bWVudCgp
LmRldmljZVNjYWxlRmFjdG9yKCksIG51bGxBdG9tKCksIHNyY3NldCwgc291cmNlU2l6ZSk7Ci0g
ICAgICAgIGlmICghY2FuZGlkYXRlLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKCFjYW5kaWRhdGUu
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBzZXRTb3VyY2VFbGVtZW50KCZzb3VyY2UpOwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gY2FuZGlkYXRl
OwpAQCAtMjE3LDYgKzI0NCw3IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2VsZWN0SW1hZ2VT
b3VyY2UoUmVsZXZhbnRNdXRhdGlvbiByZWxldmFudE11dGF0aW9uKQogICAgIC8vIEZpcnN0IGxv
b2sgZm9yIHRoZSBiZXN0IGZpdCBzb3VyY2UgZnJvbSBvdXIgPHBpY3R1cmU+IHBhcmVudCBpZiB3
ZSBoYXZlIG9uZS4KICAgICBJbWFnZUNhbmRpZGF0ZSBjYW5kaWRhdGUgPSBiZXN0Rml0U291cmNl
RnJvbVBpY3R1cmVFbGVtZW50KCk7CiAgICAgaWYgKGNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgc2V0U291cmNlRWxlbWVudChudWxscHRyKTsKICAgICAgICAgLy8gSWYgd2UgZG9uJ3Qg
aGF2ZSBhIDxwaWN0dXJlPiBvciBkaWRuJ3QgZmluZCBhIHNvdXJjZSwgdGhlbiB3ZSB1c2Ugb3Vy
IG93biBhdHRyaWJ1dGVzLgogICAgICAgICBTaXplc0F0dHJpYnV0ZVBhcnNlciBzaXplc1BhcnNl
cihhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNpemVzQXR0cikuc3RyaW5nKCksIGRv
Y3VtZW50KCksICZtX21lZGlhUXVlcnlEeW5hbWljUmVzdWx0cyk7CiAgICAgICAgIGF1dG8gc291
cmNlU2l6ZSA9IHNpemVzUGFyc2VyLmxlbmd0aCgpOwpAQCAtNzk5LDQgKzgyNywyMyBAQCBSZWZl
cnJlclBvbGljeSBIVE1MSW1hZ2VFbGVtZW50OjpyZWZlcnJlclBvbGljeSgpIGNvbnN0CiAgICAg
cmV0dXJuIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZzsKIH0KIAorSFRNTFNvdXJjZUVsZW1l
bnQqIEhUTUxJbWFnZUVsZW1lbnQ6OnNvdXJjZUVsZW1lbnQoKSBjb25zdAoreworICAgIHJldHVy
biBtX3NvdXJjZUVsZW1lbnQuZ2V0KCk7Cit9CisKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0
U291cmNlRWxlbWVudChIVE1MU291cmNlRWxlbWVudCogc291cmNlRWxlbWVudCkKK3sKKyAgICBp
ZiAobV9zb3VyY2VFbGVtZW50ID09IHNvdXJjZUVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX3NvdXJjZUVsZW1lbnQgPSBtYWtlV2Vha1B0cihzb3VyY2VFbGVtZW50KTsKKyAgICBpbnZh
bGlkYXRlQXR0cmlidXRlTWFwcGluZygpOworfQorCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6Omlu
dmFsaWRhdGVBdHRyaWJ1dGVNYXBwaW5nKCkKK3sKKyAgICBlbnN1cmVVbmlxdWVFbGVtZW50RGF0
YSgpLnNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSh0cnVlKTsKKyAgICBpbnZhbGlk
YXRlU3R5bGUoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApp
bmRleCBmMWEwMzBjNGU3OGI0MzhiMDFjYjNjNDMxMTM1NTc2ZTEwMTJhOGVmLi5hOWVhNTRmMjFj
NTA4YzE2NmVhMzk1MDBhYmY1NTdhNGEzNzU5ZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuaApAQCAtMTUwLDYgKzE1MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJy
aWRlOwogICAgIGJvb2wgaGFzUHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb2xsZWN0UHJlc2VudGF0
aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0
cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbGxl
Y3RFeHRyYVN0eWxlRm9yUHJlc2VudGF0aW9uYWxIaW50cyhNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnZhbGlkYXRlQXR0cmlidXRlTWFwcGluZygpOwogCiAg
ICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKICAgICBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwpAQCAtMTgzLDYgKzE4NSw5IEBAIHByaXZhdGU6
CiAKICAgICBmbG9hdCBlZmZlY3RpdmVJbWFnZURldmljZVBpeGVsUmF0aW8oKSBjb25zdDsKIAor
ICAgIEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2VFbGVtZW50KCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRTb3VyY2VFbGVtZW50KEhUTUxTb3VyY2VFbGVtZW50Kik7CisKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SFRNTEltYWdlTG9hZGVyPiBtX2ltYWdlTG9hZGVyOwogICAgIFdlYWtQdHI8SFRNTEZvcm1F
bGVtZW50PiBtX2Zvcm07CiAgICAgV2Vha1B0cjxIVE1MRm9ybUVsZW1lbnQ+IG1fZm9ybVNldEJ5
UGFyc2VyOwpAQCAtMTk2LDYgKzIwMSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRHJvcHBl
ZEltYWdlUGxhY2Vob2xkZXIgeyBmYWxzZSB9OwogCiAgICAgV2Vha1B0cjxIVE1MUGljdHVyZUVs
ZW1lbnQ+IG1fcGljdHVyZUVsZW1lbnQ7CisgICAgLy8gVGhlIHNvdXJjZSBlbGVtZW50IHRoYXQg
d2FzIHNlbGVjdGVkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBVUkwuCisgICAgV2Vha1B0cjxIVE1M
U291cmNlRWxlbWVudD4gbV9zb3VyY2VFbGVtZW50OwogICAgIE1lZGlhUXVlcnlEeW5hbWljUmVz
dWx0cyBtX21lZGlhUXVlcnlEeW5hbWljUmVzdWx0czsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAw
ZGYxOWRlYzAwMjdiM2M0ZWZjZTFlOTVlZTRiNGJlMDhlM2FiYmQ2Li4yZmJmM2ZkZWMyNGY3MWRl
NjczNGRlMjViYTZmZWFjZTQ3YmRiNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKQEAgLTcwOCwxMiArNzA4LDEyIEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6
Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
CiAgICAgICAgIGlmIChtX2lucHV0VHlwZS0+c2hvdWxkUmVzcGVjdEhlaWdodEFuZFdpZHRoQXR0
cmlidXRlcygpKQogICAgICAgICAgICAgYWRkSFRNTExlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1By
b3BlcnR5V2lkdGgsIHZhbHVlKTsKICAgICAgICAgaWYgKGlzSW1hZ2VCdXR0b24oKSkKLSAgICAg
ICAgICAgIGFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHls
ZShzdHlsZSk7CisgICAgICAgICAgICBhcHBseUFzcGVjdFJhdGlvRnJvbVdpZHRoQW5kSGVpZ2h0
QXR0cmlidXRlc1RvU3R5bGUodmFsdWUsIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
aGVpZ2h0QXR0ciksIHN0eWxlKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gaGVpZ2h0QXR0cikg
ewogICAgICAgICBpZiAobV9pbnB1dFR5cGUtPnNob3VsZFJlc3BlY3RIZWlnaHRBbmRXaWR0aEF0
dHJpYnV0ZXMoKSkKICAgICAgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQ
cm9wZXJ0eUhlaWdodCwgdmFsdWUpOwogICAgICAgICBpZiAoaXNJbWFnZUJ1dHRvbigpKQotICAg
ICAgICAgICAgYXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0
eWxlKHN0eWxlKTsKKyAgICAgICAgICAgIGFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWln
aHRBdHRyaWJ1dGVzVG9TdHlsZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHdpZHRo
QXR0ciksIHZhbHVlLCBzdHlsZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGJvcmRlckF0dHIg
JiYgaXNJbWFnZUJ1dHRvbigpKQogICAgICAgICBhcHBseUJvcmRlckF0dHJpYnV0ZVRvU3R5bGUo
dmFsdWUsIHN0eWxlKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQaWN0dXJlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQaWN0dXJl
RWxlbWVudC5jcHAKaW5kZXggMGVhNzc0ZDdhNmY1NDU2NDU2YzVkYWE3OTk3NDAyYzg5NjU4YjVj
Yy4uMTRkOTI2Y2M1MTEzYmQxODczZGQzNThmOTUwZTEwNGY1MzE3YTA5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBpY3R1cmVFbGVtZW50LmNwcApAQCAtNjQsNiArNjQsMTQgQEAgdm9p
ZCBIVE1MUGljdHVyZUVsZW1lbnQ6OnNvdXJjZXNDaGFuZ2VkKCkKICAgICAgICAgZWxlbWVudC5z
ZWxlY3RJbWFnZVNvdXJjZShSZWxldmFudE11dGF0aW9uOjpZZXMpOwogfQogCit2b2lkIEhUTUxQ
aWN0dXJlRWxlbWVudDo6c291cmNlRGltZW5zaW9uQXR0cmlidXRlc0NoYW5nZWQoY29uc3QgSFRN
TFNvdXJjZUVsZW1lbnQmIHNvdXJjZUVsZW1lbnQpCit7CisgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogY2hpbGRyZW5PZlR5cGU8SFRNTEltYWdlRWxlbWVudD4oKnRoaXMpKSB7CisgICAgICAgIGlm
ICgmc291cmNlRWxlbWVudCA9PSBlbGVtZW50LnNvdXJjZUVsZW1lbnQoKSkKKyAgICAgICAgICAg
IGVsZW1lbnQuaW52YWxpZGF0ZUF0dHJpYnV0ZU1hcHBpbmcoKTsKKyAgICB9Cit9CisKICNpZiBV
U0UoU1lTVEVNX1BSRVZJRVcpCiBib29sIEhUTUxQaWN0dXJlRWxlbWVudDo6aXNTeXN0ZW1QcmV2
aWV3SW1hZ2UoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGljdHVy
ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBpY3R1cmVFbGVtZW50LmgKaW5k
ZXggNTUyZjYyMjhiYjRiMmY1MDkzNWNmODI5ZTkxYTYwYTdmZGI3NjM1Ni4uMTc1NTk0MTY2MjMx
N2NmZGFlZWQ5MGYyYjE3YzQ1N2Q1OTU5MjBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
aWN0dXJlRWxlbWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5I
VE1MUGljdHVyZUVsZW1lbnQoKTsKIAogICAgIHZvaWQgc291cmNlc0NoYW5nZWQoKTsKKyAgICB2
b2lkIHNvdXJjZURpbWVuc2lvbkF0dHJpYnV0ZXNDaGFuZ2VkKGNvbnN0IEhUTUxTb3VyY2VFbGVt
ZW50Jik7CiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc1N5c3RlbVByZXZpZXdJbWFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU291cmNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VF
bGVtZW50LmNwcAppbmRleCBhYzQyNGRlNmRmMzVhYmMzMzFkN2E1MThmNGYxM2MyMzg4MTM5OTgw
Li4xMjYxNzM3MTZkNmExZDNiYzVkZjQ4MWFhZmI3YWQyNmJiYTU1ZDI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcApAQCAtMjA1LDQgKzIwNSwxMyBAQCBjb25z
dCBNZWRpYVF1ZXJ5U2V0KiBIVE1MU291cmNlRWxlbWVudDo6cGFyc2VkTWVkaWFBdHRyaWJ1dGUo
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiBtX2NhY2hlZFBhcnNlZE1lZGlhQXR0cmli
dXRlLnZhbHVlKCkuZ2V0KCk7CiB9CiAKK3ZvaWQgSFRNTFNvdXJjZUVsZW1lbnQ6OmF0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgb2xk
VmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25S
ZWFzb24gcmVhc29uKQoreworICAgIGlmIChuYW1lID09IHdpZHRoQXR0ciB8fCBuYW1lID09IGhl
aWdodEF0dHIpIHsKKyAgICAgICAgaWYgKGF1dG8gcGFyZW50ID0gcGFyZW50Tm9kZSgpOyBpczxI
VE1MUGljdHVyZUVsZW1lbnQ+KHBhcmVudCkpCisgICAgICAgICAgICBkb3duY2FzdDxIVE1MUGlj
dHVyZUVsZW1lbnQ+KCpwYXJlbnQpLnNvdXJjZURpbWVuc2lvbkF0dHJpYnV0ZXNDaGFuZ2VkKCp0
aGlzKTsKKyAgICB9CisgICAgSFRNTEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgb2xk
VmFsdWUsIG5ld1ZhbHVlLCByZWFzb24pOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
b3VyY2VFbGVtZW50LmgKaW5kZXggMWFiNjZjMGI0MGFhMjNlNDhkN2QwM2EwNzk5ZTM2MjZhODE0
Zjc2Zi4uNTMwODMwN2FjNTUyODU1NzUyMDA3YTA3NTQ3ZmZhYjRjN2FiODE0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaApAQCAtNTgsNiArNTgsOCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbVN0cmluZyYpIGZpbmFsOwogCisgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmlu
ZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbikgZmluYWw7CisKICAgICB2
b2lkIGVycm9yRXZlbnRUaW1lckZpcmVkKCk7CiAKICAgICBUaW1lciBtX2Vycm9yRXZlbnRUaW1l
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaWRs
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5pZGwKaW5kZXggZTI2ZjJl
ZTIwNzdkZTA1MTJkOGI2NWExNmFkNjEzMTM2MDc4NjQ0MC4uMTM1YTI1MTMyMjM4MDZlMjFlYjI0
ZWE1MjU3MDI0NWE5NDRkNDM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U291cmNlRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxl
bWVudC5pZGwKQEAgLTMyLDQgKzMyLDYgQEAKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBS
ZWZsZWN0XSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHNyY3NldDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90
TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNpemVzOwogICAgIFtDRVJlYWN0
aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgbWVkaWE7CisgICAg
W0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
d2lkdGg7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgaGVpZ2h0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCmluZGV4IGE3YWViZTM3YjgxYjI3YzgyN2VjYjA2ZWNiZTNlNTg4OGI3NTBkYzguLmRh
MWM0ZWZiNDZmYzA0ZDY0MWYwYmM5MDMwNzU3ZTc3NjE0OTBlMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMTE1LDEwICsxMTUsMTAgQEAgdm9pZCBIVE1M
VmlkZW9FbGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW0KIHsKICAgICBpZiAobmFtZSA9PSB3aWR0aEF0dHIpIHsKICAgICAgICAg
YWRkSFRNTExlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIHZhbHVlKTsKLSAg
ICAgICAgYXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxl
KHN0eWxlKTsKKyAgICAgICAgYXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJp
YnV0ZXNUb1N0eWxlKHZhbHVlLCBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhlaWdo
dEF0dHIpLCBzdHlsZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGhlaWdodEF0dHIpIHsKICAg
ICAgICAgYWRkSFRNTExlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5SGVpZ2h0LCB2YWx1
ZSk7Ci0gICAgICAgIGFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVz
VG9TdHlsZShzdHlsZSk7CisgICAgICAgIGFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWln
aHRBdHRyaWJ1dGVzVG9TdHlsZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHdpZHRo
QXR0ciksIHZhbHVlLCBzdHlsZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxNZWRpYUVsZW1l
bnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKG5hbWUsIHZhbHVlLCBz
dHlsZSk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZGM3MTFjYmNjYjA1YmZiYWQ4YmJmMWVhM2NkMDI4NmU2YWMzNTI4
Zi4uZGU4ZDdhMTAxZTA4OGRhODIzNmE1YzgwYmI1NjFiZTAxNjVkM2FjYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDIxLTA2LTE3ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzIG9uIHNv
dXJjZSBlbGVtZW50cyBvZiA8cGljdHVyZT4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMjM2OAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wNi0xMSAgQ2F0aGll
IENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CiAKICAgICAgICAgVXNlIEhUTUxEaW1lbnNp
b24gdG8gcGFyc2UgZGlmZmVyZW50IEhUTUwgYXR0cmlidXRlIGxlbmd0aCB2YWx1ZXMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGE1YjdlZDY5ODEyODE0MjI1MGQxYWFjNzM5OTgx
NGY1MWUwZDYzYzEuLjUzZTBlNmFiOTNkZWZhODJhZTk0ZTYyZmQzMWY4OTNkNzIwNzkyYjEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA2LTE3
ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzIG9uIHNvdXJjZSBlbGVtZW50cyBvZiA8cGlj
dHVyZT4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MjM2OAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL3JlcGxhY2VkLWVsZW1lbnRzL2F0dHJpYnV0
ZXMtZm9yLWVtYmVkZGVkLWNvbnRlbnQtYW5kLWltYWdlcy9waWN0dXJlLWFzcGVjdC1yYXRpby1l
eHBlY3RlZC50eHQ6CisKIDIwMjEtMDYtMTEgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVzZSBIVE1MRGltZW5zaW9uIHRvIHBhcnNlIGRpZmZlcmVudCBI
VE1MIGF0dHJpYnV0ZSBsZW5ndGggdmFsdWVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4NGE4YzRi
MTM1OTU5ZTVjNGJmNDhiYmQ0YmRmMTI2NTU2MTE1NzI5Li5kYTBkYWQwZjM1MWJkZTgzYWM4OGJj
NjlhNGViODA3MzVmZGE0MDQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0MzQsOSArMTQzNCw2
IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC90aGUtaW1nLWVsZW1lbnQvCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWltZy1lbGVtZW50L3NpemVz
L3BhcnNlLWEtc2l6ZXMtYXR0cmlidXRlLXN0YW5kYXJkcy1tb2RlLmh0bWwgWyBGYWlsdXJlIFBh
c3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L3RoZS1vYmplY3QtZWxlbWVudC9vYmplY3QtZmFsbGJhY2stZmFpbGVkLWNy
b3NzLW9yaWdpbi1uYXZpZ2F0aW9uLnN1Yi5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIAotIyBOZXds
eSBpbXBvcnRpbmcgYXNwZWN0IHJhdGlvIHRlc3QgaXMgZmxha3kuCi1pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL3JlcGxhY2VkLWVsZW1lbnRzL2F0dHJpYnV0
ZXMtZm9yLWVtYmVkZGVkLWNvbnRlbnQtYW5kLWltYWdlcy9waWN0dXJlLWFzcGVjdC1yYXRpby5o
dG1sIFsgRmFpbHVyZSBQYXNzIF0KLQogIyBOZXdseSBpbXBvcnRpbmcgVzNDIHRlc3RzIG5lZWRl
ZCBzdXBwb3J0IGZvciByZWZ0ZXN0LXdhaXQuCiB3ZWJraXQub3JnL2IvMTg2MDQ1IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy90cmFjay90cmFjay1lbGVtZW50L3RyYWNrLWN1ZS1yZW5kZXJpbmctYWZ0
ZXItY29udHJvbHMtYWRkZWQuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE4NjA0NSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvdHJhY2svdHJhY2stZWxlbWVudC90cmFjay1jdWUtcmVuZGVyaW5n
LWFmdGVyLWNvbnRyb2xzLXJlbW92ZWQuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9yZXBs
YWNlZC1lbGVtZW50cy9hdHRyaWJ1dGVzLWZvci1lbWJlZGRlZC1jb250ZW50LWFuZC1pbWFnZXMv
cGljdHVyZS1hc3BlY3QtcmF0aW8tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9yZXBsYWNlZC1lbGVtZW50cy9h
dHRyaWJ1dGVzLWZvci1lbWJlZGRlZC1jb250ZW50LWFuZC1pbWFnZXMvcGljdHVyZS1hc3BlY3Qt
cmF0aW8tZXhwZWN0ZWQudHh0CmluZGV4IDY0NzNlYjc4YjJmMjczZTc3MDY0NDdjNTMxMjYxNTg3
MTk1MTIwOWEuLmU3M2NhM2I2MzdhYjY2MDUyNjllMzkyNmNiNzNmOWNiZDcyYzVhNmQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9y
ZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMvYXR0cmlidXRlcy1mb3ItZW1iZWRkZWQtY29udGVu
dC1hbmQtaW1hZ2VzL3BpY3R1cmUtYXNwZWN0LXJhdGlvLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL3Jl
cGxhY2VkLWVsZW1lbnRzL2F0dHJpYnV0ZXMtZm9yLWVtYmVkZGVkLWNvbnRlbnQtYW5kLWltYWdl
cy9waWN0dXJlLWFzcGVjdC1yYXRpby1leHBlY3RlZC50eHQKQEAgLTEsMjAgKzEsMTggQEAKIAog
Ci0KLQogUEFTUyBzb3VyY2Ugd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzIGFyZSB1c2VkIHRv
IGluZmVyIGFzcGVjdC1yYXRpbyBpbiA8cGljdHVyZT4KLUZBSUwgQ29tcHV0ZWQgc3R5bGUgZm9y
IHdpZHRoL2hlaWdodC9hc3BlY3QtcmF0aW8gYXNzZXJ0X2FwcHJveF9lcXVhbHM6IGV4cGVjdGVk
IDEgKy8tIDAuMDAxIGJ1dCBnb3QgSW5maW5pdHkKLUZBSUwgU291cmNlIHdpZHRoL2hlaWdodCBz
aG91bGQgdGFrZSBwcmVjZWRlbmNlIG92ZXIgaW1nIGF0dHJpYnV0ZXMuIGFzc2VydF9hcHByb3hf
ZXF1YWxzOiBleHBlY3RlZCAyICsvLSAwLjAwMSBidXQgZ290IDUKLUZBSUwgTWFrZSBzdXJlIHN0
eWxlIGdldHMgaW52YWxpZGF0ZWQgY29ycmVjdGx5IHdoZW4gdGhlIHNvdXJjZSBnZXRzIHJlbW92
ZWQuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhdXRvIDI1MCAvIDUwIiBidXQgZ290ICJhdXRv
IgotRkFJTCBJZiB0aGUgPHNvdXJjZT4gaGFzIG9ubHkgb25lIG9mIHdpZHRoL2hlaWdodCwgd2Ug
ZG9uJ3QgZ2V0IGFuIGFzcGVjdCByYXRpbywgZXZlbiBpZiB0aGUgPGltZz4gaGFzIGJvdGguIGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkICIxMDBweCIgYnV0IGdvdCAiMjAwcHgiCi1GQUlMIElmIHdl
IGRvbid0IGhhdmUgd2lkdGgvaGVpZ2h0IG9uIHRoZSBzb3VyY2UsIHdlIGZhbGwgYmFjayB0byB3
aWR0aC9oZWlnaHQgb24gdGhlIDxpbWc+LiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYXV0byAy
MDAgLyAxMDAiIGJ1dCBnb3QgImF1dG8iCi1GQUlMIElmIHdlIG9ubHkgaGF2ZSBvbmUgd2lkdGgg
YXR0cmlidXRlLCB3ZSBzaG91bGQgZ2V0IHdpZHRoIG1hcHBlZCBidXQgbm8gYXNwZWN0IHJhdGlv
LCBldmVuIGlmIDxpbWc+IGhhcyBhdHRyaWJ1dGVzLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAi
MTAwcHgiIGJ1dCBnb3QgIjIwMHB4IgotRkFJTCBJZiB3ZSBvbmx5IGhhdmUgaGVpZ2h0IGF0dHJp
YnV0ZSwgd2Ugc2hvdWxkIGdldCBoZWlnaHQgbWFwcGVkIGJ1dCBubyBhc3BlY3QgcmF0aW8sIGV2
ZW4gaWYgPGltZz4gaGFzIGF0dHJpYnV0ZXMuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhdXRv
IiBidXQgZ290ICIyMDBweCIKLUZBSUwgRHluYW1pY2FsbHkgY2hhbmdpbmcgd2lkdGgvaGVpZ2h0
IHNob3VsZCBjaGFuZ2UgY29tcHV0ZWQgc3R5bGUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1
dG8gMTAwIC8gMTAwIiBidXQgZ290ICJhdXRvIgotRkFJTCBDaGFuZ2luZyB3aGljaCA8c291cmNl
PiBtYXRjaGVzIHNob3VsZCBjaGFuZ2UgY29tcHV0ZWQgc3R5bGUgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgImF1dG8gMTAwIC8gMTAwIiBidXQgZ290ICJhdXRvIgotRkFJTCBQZXJjZW50YWdlcyBv
biBzb3VyY2Ugc2hvdWxkIGJlIGlnbm9yZWQgZm9yIGFzcGVjdC1yYXRpbyBidXQgdXNlZCBmb3Ig
d2lkdGgvaGVpZ2h0LiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAxMDAgYnV0IGdvdCAwCi1GQUlM
IFRyYWlsaW5nIGdhcmJhZ2Ugc2hvdWxkIGJlIGlnbm9yZWQgYnV0IG5vdCBtYWtlIHRoZSBhdHRy
aWJ1dGUgaW52YWxpZCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAxMDAgYnV0IGdvdCAwCitQQVNT
IENvbXB1dGVkIHN0eWxlIGZvciB3aWR0aC9oZWlnaHQvYXNwZWN0LXJhdGlvCitQQVNTIFNvdXJj
ZSB3aWR0aC9oZWlnaHQgc2hvdWxkIHRha2UgcHJlY2VkZW5jZSBvdmVyIGltZyBhdHRyaWJ1dGVz
LgorUEFTUyBNYWtlIHN1cmUgc3R5bGUgZ2V0cyBpbnZhbGlkYXRlZCBjb3JyZWN0bHkgd2hlbiB0
aGUgc291cmNlIGdldHMgcmVtb3ZlZC4KK1BBU1MgSWYgdGhlIDxzb3VyY2U+IGhhcyBvbmx5IG9u
ZSBvZiB3aWR0aC9oZWlnaHQsIHdlIGRvbid0IGdldCBhbiBhc3BlY3QgcmF0aW8sIGV2ZW4gaWYg
dGhlIDxpbWc+IGhhcyBib3RoLgorUEFTUyBJZiB3ZSBkb24ndCBoYXZlIHdpZHRoL2hlaWdodCBv
biB0aGUgc291cmNlLCB3ZSBmYWxsIGJhY2sgdG8gd2lkdGgvaGVpZ2h0IG9uIHRoZSA8aW1nPi4K
K1BBU1MgSWYgd2Ugb25seSBoYXZlIG9uZSB3aWR0aCBhdHRyaWJ1dGUsIHdlIHNob3VsZCBnZXQg
d2lkdGggbWFwcGVkIGJ1dCBubyBhc3BlY3QgcmF0aW8sIGV2ZW4gaWYgPGltZz4gaGFzIGF0dHJp
YnV0ZXMuCitQQVNTIElmIHdlIG9ubHkgaGF2ZSBoZWlnaHQgYXR0cmlidXRlLCB3ZSBzaG91bGQg
Z2V0IGhlaWdodCBtYXBwZWQgYnV0IG5vIGFzcGVjdCByYXRpbywgZXZlbiBpZiA8aW1nPiBoYXMg
YXR0cmlidXRlcy4KK1BBU1MgRHluYW1pY2FsbHkgY2hhbmdpbmcgd2lkdGgvaGVpZ2h0IHNob3Vs
ZCBjaGFuZ2UgY29tcHV0ZWQgc3R5bGUKK1BBU1MgQ2hhbmdpbmcgd2hpY2ggPHNvdXJjZT4gbWF0
Y2hlcyBzaG91bGQgY2hhbmdlIGNvbXB1dGVkIHN0eWxlCitQQVNTIFBlcmNlbnRhZ2VzIG9uIHNv
dXJjZSBzaG91bGQgYmUgaWdub3JlZCBmb3IgYXNwZWN0LXJhdGlvIGJ1dCB1c2VkIGZvciB3aWR0
aC9oZWlnaHQuCitQQVNTIFRyYWlsaW5nIGdhcmJhZ2Ugc2hvdWxkIGJlIGlnbm9yZWQgYnV0IG5v
dCBtYWtlIHRoZSBhdHRyaWJ1dGUgaW52YWxpZAogUEFTUyBMb2FkZWQgcGljdHVyZSB0ZXN0OiBC
b3RoIDxzb3VyY2U+IGFuZCA8aW1nPiBhcmUgd2l0aG91dCB3aWR0aCBhbmQgaGVpZ2h0IGF0dHJp
YnV0ZXMKLUZBSUwgTG9hZGVkIHBpY3R1cmUgdGVzdDogPHNvdXJjZT4gd2l0aCB3aWR0aCBhbmQg
aGVpZ2h0IGF0dHJpYnV0ZXMsIDxpbWc+IHdpdGhvdXQgd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1
dGVzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhdXRvIDEwMCAvIDEwMCIgYnV0IGdvdCAiYXV0
byIKLUZBSUwgTG9hZGVkIHBpY3R1cmUgdGVzdDogQm90aCA8c291cmNlPiBhbmQgPGltZz4gYXJl
IHdpdGggd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
ICJhdXRvIDEwMCAvIDEwMCIgYnV0IGdvdCAiYXV0byIKK1BBU1MgTG9hZGVkIHBpY3R1cmUgdGVz
dDogPHNvdXJjZT4gd2l0aCB3aWR0aCBhbmQgaGVpZ2h0IGF0dHJpYnV0ZXMsIDxpbWc+IHdpdGhv
dXQgd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzCitQQVNTIExvYWRlZCBwaWN0dXJlIHRlc3Q6
IEJvdGggPHNvdXJjZT4gYW5kIDxpbWc+IGFyZSB3aXRoIHdpZHRoIGFuZCBoZWlnaHQgYXR0cmli
dXRlcwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431946</attachid>
            <date>2021-06-21 22:07:22 -0700</date>
            <delta_ts>2021-06-22 01:06:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222368-20210622130720.patch</filename>
            <type>text/plain</type>
            <size>27236</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg4MDRhZWQyZWI1MzQ4
YTVjMDdkNmE5ZTdkZjYxM2JiNTNmMjQ2NC4uMWVkMWQ0ZjBhZWQ0ODBiNWNjMmUzNTQ3ZjAwNmU4
OTlhMjliMzVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIxLTA2LTE3ICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgd2lk
dGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzIG9uIHNvdXJjZSBlbGVtZW50cyBvZiA8cGljdHVyZT4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjM2OAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFjY29yZGluZyB0
byBbMV0sIHRoZSBzb3VyY2UgZWxlbWVudCBzdXBwb3J0cyBkaW1lbnNpb24gYXR0cmlidXRlcy4g
VGhlIGltZyBlbGVtZW50IGNhbiB1c2UgdGhlIHdpZHRoCisgICAgICAgIGFuZCBoZWlnaHQgYXR0
cmlidXRlcyBvZiB0aGUgc291cmNlIGVsZW1lbnQgdG8gZGV0ZXJtaW5lIGl0cyByZW5kZXJlZCBk
aW1lbnNpb25zIGFuZCBhc3BlY3QtcmF0aW8uCisgICAgICAgIEluIG9yZGVyIHRvIGltcGxlbWVu
dCB0aGlzLCBhZGQgbV9zb3VyY2VFbGVtZW50IHRvIEhUTUxJbWFnZUVsZW1lbnQgdG8gaW5kaWNh
dGUgdGhlIHNvdXJjZSBlbGVtZW50IHRoYXQKKyAgICAgICAgaXMgc2VsZWN0ZWQuIEFsc28gYWRk
IGludmFsaWRhdGVBdHRyaWJ1dGVNYXBwaW5nKCkgdG8gc3luY2hyb25pemUgd2l0aCB0aGUgY2hh
bmdlcyBvZiBzb3VyY2UncyBhdHRyaWJ1dGVzCisgICAgICAgIHRvIHRoZSBpbWcgZWxlbWVudC4g
VGhlbiBhZGQgY29sbGVjdEV4dHJhU3R5bGVGb3JQcmVzZW50YXRpb25hbEhpbnRzKCkgdG8gY29s
bGVjdCBzdHlsZSBmcm9tIHNvdXJjZSBhdHRyaWJ1dGVzLgorCisgICAgICAgIFsxXSBodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnLyN0aGUtc291cmNlLWVsZW1lbnQKKworICAgICAgICAqIGRv
bS9FbGVtZW50RGF0YS5oOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnJlYnVpbGRQcmVzZW50YXRpb25hbEhpbnRTdHls
ZSk6IGNvbGxlY3RFeHRyYVN0eWxlRm9yUHJlc2VudGF0aW9uYWxIaW50cygpIHdoZW4gcmVidWls
ZC4KKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVkRWxlbWVudDo6Y29sbGVjdEV4dHJhU3R5bGVGb3JQcmVzZW50YXRpb25hbEhpbnRzKTogQWRk
IGFuIGludGVyZmFjZSB0byBjb2xsZWN0IGV4dHJhIHN0eWxlIGZyb20gb3RoZXIgZWxlbWVudHMu
CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RWxlbWVudDo6YXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0
eWxlKTogQWRkIHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlcyBhcyBpbnB1dCB2YXJpYWJsZXMu
CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojpjb2xsZWN0
UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW1hZ2VFbGVtZW50Ojpjb2xsZWN0RXh0cmFTdHlsZUZvclByZXNlbnRhdGlvbmFsSGludHMpOiBJ
ZiBzb3VyY2UgZWxlbWVudCBoYXMgd2lkdGggb3IgaGVpZ2h0IGF0dHJpYnV0ZXMsIGFwcGx5IHRo
ZW0KKyAgICAgICAgdG8gd2lkdGgsIGhlaWdodCBhbmQgYXNwZWN0LXJhdGlvIG9mIHRoZSBzdHls
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmJlc3RGaXRTb3VyY2VGcm9t
UGljdHVyZUVsZW1lbnQpOiBLZWVwIHRoZSBzb3VyY2UgZWxlbWVudC4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnNlbGVjdEltYWdlU291cmNlKTogUmVzZXQgdGhlIHNvdXJj
ZSBlbGVtZW50IHRvIG51bGwgaWYgbm8gY2FuZGlkYXRlIGlzIGZvdW5kLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEltYWdlRWxlbWVudDo6c291cmNlRWxlbWVudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpzZXRTb3VyY2VFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmludmFsaWRhdGVBdHRyaWJ1dGVNYXBwaW5nKTogSW52
YWxpZGF0ZSB0aGUgcHJlc2VudGF0aW9uYWxIaW50U3R5bGUuCisgICAgICAgICogaHRtbC9IVE1M
SW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhp
bnRzRm9yQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxQaWN0dXJlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGljdHVyZUVsZW1lbnQ6OnNvdXJjZURpbWVuc2lvbkF0
dHJpYnV0ZXNDaGFuZ2VkKTogQ2FsbCBpbnZhbGlkYXRlQXR0cmlidXRlTWFwcGluZyBpZiBzb3Vy
Y2UgZWxlbWVudCdzIGF0dHJpYnV0ZXMgYXJlIGNoYW5nZWQuCisgICAgICAgICogaHRtbC9IVE1M
UGljdHVyZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKTog
Q2FsbCBzb3VyY2VEaW1lbnNpb25BdHRyaWJ1dGVzQ2hhbmdlZCBpZiB3aWR0aCBvciBoZWlnaHQg
YXR0cmlidXRlcyBhcmUgY2hhbmdlZC4KKyAgICAgICAgKiBodG1sL0hUTUxTb3VyY2VFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MU291cmNlRWxlbWVudC5pZGw6CisgICAgICAgICogaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1l
bnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKToKKwogMjAyMS0wNi0x
MSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bmFtZSBBcHBIaWdobGlnaHQgZ3JvdXAgdG8gUXVpY2tOb3RlIHRvIGNvcnJlY3RseSByZWZsZWN0
IGZlYXR1cmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCmluZGV4IDEwNTQwOWZkOTg0MTAzOTc2
NWRiZTIwM2Y2MzJkMTE4MjVjZDgwZTcuLjUxMTZlMzIwODk3ZjhkYjUyOGJiMTE0Yjc5NjgyZTlk
ZTZjZGNmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCkBAIC0xNzAsNiArMTcwLDcgQEAg
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlRWxlbWVudERhdGE7CiAgICAgZnJp
ZW5kIGNsYXNzIFVuaXF1ZUVsZW1lbnREYXRhOwogICAgIGZyaWVuZCBjbGFzcyBTVkdFbGVtZW50
OworICAgIGZyaWVuZCBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogCiAgICAgdm9pZCBkZXN0cm95
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRleCAzOTRhMGE3Y2YyMDY2
Zjg4OTViN2FhNTk2Nzc4NTRiYTU3OTE1NjYyLi45MWViZjIxM2RkY2MxN2Q2MjI4OGYzYTMxMDk4
MzE4OGM4NGU1NDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRWxlbWVudFJh
cmVEYXRhLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSW1hZ2VF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbi5oIgpAQCAtMjkyLDE1ICsyOTMsMjEgQEAgdm9pZCBTdHlsZWRFbGVtZW50OjphZGRT
dWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QKIAog
dm9pZCBTdHlsZWRFbGVtZW50OjpyZWJ1aWxkUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKQogewot
ICAgIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGll
czo6Y3JlYXRlKGlzU1ZHRWxlbWVudCgpID8gU1ZHQXR0cmlidXRlTW9kZSA6IEhUTUxRdWlya3NN
b2RlKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKGlz
U1ZHRWxlbWVudCgpID8gU1ZHQXR0cmlidXRlTW9kZSA6IEhUTUxRdWlya3NNb2RlKTsKICAgICBm
b3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogYXR0cmlidXRlc0l0ZXJhdG9yKCkpCi0g
ICAgICAgIGNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKGF0dHJpYnV0ZS5u
YW1lKCksIGF0dHJpYnV0ZS52YWx1ZSgpLCBzdGF0aWNfY2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzJj4oKnN0eWxlKSk7CisgICAgICAgIGNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0
cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCksIGF0dHJpYnV0ZS52YWx1ZSgpLCBzdHlsZSk7CisKKyAg
ICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oKnRoaXMpKQorICAgICAgICBjb2xsZWN0RXh0cmFT
dHlsZUZvclByZXNlbnRhdGlvbmFsSGludHMoc3R5bGUpOwogCiAgICAgLy8gU2hhcmVhYmxlRWxl
bWVudERhdGEgZG9lc24ndCBzdG9yZSBwcmVzZW50YXRpb24gYXR0cmlidXRlIHN0eWxlLCBzbyBt
YWtlIHN1cmUgd2UgaGF2ZSBhIFVuaXF1ZUVsZW1lbnREYXRhLgogICAgIFVuaXF1ZUVsZW1lbnRE
YXRhJiBlbGVtZW50RGF0YSA9IGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCk7CiAKICAgICBlbGVt
ZW50RGF0YS5zZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoZmFsc2UpOwotICAgIGVs
ZW1lbnREYXRhLm1fcHJlc2VudGF0aW9uYWxIaW50U3R5bGUgPSBzdHlsZS0+aXNFbXB0eSgpID8g
bnVsbHB0ciA6IFdURk1vdmUoc3R5bGUpOworICAgIGlmIChzdHlsZS0+aXNFbXB0eSgpKQorICAg
ICAgICBlbGVtZW50RGF0YS5tX3ByZXNlbnRhdGlvbmFsSGludFN0eWxlID0gbnVsbHB0cjsKKyAg
ICBlbHNlCisgICAgICAgIGVsZW1lbnREYXRhLm1fcHJlc2VudGF0aW9uYWxIaW50U3R5bGUgPSBX
VEZNb3ZlKHN0eWxlKTsKIH0KIAogdm9pZCBTdHlsZWRFbGVtZW50OjphZGRQcm9wZXJ0eVRvUHJl
c2VudGF0aW9uYWxIaW50U3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUsIENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwgQ1NTVmFsdWVJRCBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmgKaW5kZXggMjZhYWViMjQ2MjYxMzMyOTQzZWQ1NDEzM2EzYTVhY2JlNzFh
YWI4NC4uMGQzNmFmNjA3YmQ5MTk4ZmViOGQxNzY3Y2JmOWU3MzkwMzFmZGU4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3R5bGVkRWxlbWVudC5oCkBAIC02NCw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBTdHlsZVByb3BlcnRpZXMqIHByZXNlbnRhdGlvbmFsSGludFN0eWxlKCkgY29uc3Q7CiAgICAg
dmlydHVhbCB2b2lkIGNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGll
cyYpIHsgfQogICAgIHZpcnR1YWwgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFsUHJl
c2VudGF0aW9uYWxIaW50U3R5bGUoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmly
dHVhbCB2b2lkIGNvbGxlY3RFeHRyYVN0eWxlRm9yUHJlc2VudGF0aW9uYWxIaW50cyhNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzJikgeyB9CiAKIHByb3RlY3RlZDoKICAgICBTdHlsZWRFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgQ29uc3RydWN0aW9u
VHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCAzMmZhZjFiNjJl
NDYzNzJiYjliMDllZjIwYTBlZDQwZGZlZDcwMTBjLi42N2ZmNThjYTU1MDYxMDllZGI5YWM0Njg2
MWEzMzc5Y2ViNTQ3ZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtNjI1
LDE1ICs2MjUsMTUgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNldE91dGVyVGV4
dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBIVE1MRWxl
bWVudDo6YXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxl
KE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQordm9pZCBIVE1MRWxlbWVudDo6YXBwbHlB
c3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxlKFN0cmluZ1ZpZXcg
d2lkdGhBdHRyaWJ1dGUsIFN0cmluZ1ZpZXcgaGVpZ2h0QXR0cmlidXRlLCBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzJiBzdHlsZSkKIHsKICAgICBpZiAoIWRvY3VtZW50KCkuc2V0dGluZ3MoKS5hc3Bl
Y3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIGRpbWVuc2lvbldpZHRoID0gcGFyc2VIVE1MRGltZW5zaW9uKGF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyKSk7CisgICAgYXV0byBkaW1lbnNpb25X
aWR0aCA9IHBhcnNlSFRNTERpbWVuc2lvbih3aWR0aEF0dHJpYnV0ZSk7CiAgICAgaWYgKCFkaW1l
bnNpb25XaWR0aCB8fCBkaW1lbnNpb25XaWR0aC0+dHlwZSAhPSBIVE1MRGltZW5zaW9uOjpUeXBl
OjpQaXhlbCkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gZGltZW5zaW9uSGVpZ2h0ID0gcGFy
c2VIVE1MRGltZW5zaW9uKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oaGVpZ2h0QXR0
cikpOworICAgIGF1dG8gZGltZW5zaW9uSGVpZ2h0ID0gcGFyc2VIVE1MRGltZW5zaW9uKGhlaWdo
dEF0dHJpYnV0ZSk7CiAgICAgaWYgKCFkaW1lbnNpb25IZWlnaHQgfHwgZGltZW5zaW9uSGVpZ2h0
LT50eXBlICE9IEhUTUxEaW1lbnNpb246OlR5cGU6OlBpeGVsKQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCA4MGM3ODcwNDAwOGYxYmZmOGJkMWU3Nzgx
YjA4MTlkNjE3MDMzYjgzLi40NjNlMTZjZTdhYjI4Mjk4OGVmOWJkYmNiMjNiMjk2ZTc4MTkzZjc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC0xNTcsNyArMTU3LDcgQEAgcHJvdGVj
dGVkOgogCiAgICAgdm9pZCBhZGRIVE1MQ29sb3JUb1N0eWxlKE11dGFibGVTdHlsZVByb3BlcnRp
ZXMmLCBDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGNvbG9yKTsKIAotICAgIHZvaWQgYXBw
bHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxlKE11dGFibGVT
dHlsZVByb3BlcnRpZXMmKTsKKyAgICB2b2lkIGFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRI
ZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZShTdHJpbmdWaWV3IHdpZHRoQXR0cmlidXRlLCBTdHJpbmdW
aWV3IGhlaWdodEF0dHJpYnV0ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpOwogICAgIHZvaWQg
YXBwbHlBbGlnbm1lbnRBdHRyaWJ1dGVUb1N0eWxlKGNvbnN0IEF0b21TdHJpbmcmLCBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzJik7CiAgICAgdm9pZCBhcHBseUJvcmRlckF0dHJpYnV0ZVRvU3R5bGUo
Y29uc3QgQXRvbVN0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggNjBhZmNmNTAwMzQyYjBmY2EzNTZk
NjVjMjI4MmRmNTBmMmI2ZGEyYy4uN2QxMmQ5YmU1YTQ2ZjEwMTlhMTUxM2MyOTAxZmM3ODg1ZjUz
ZDIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0zNyw5
ICszNyw5IEBACiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1F
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlTG9hZGVyLmgiCisjaW5jbHVkZSAiSFRNTE1h
cEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRN
TFBpY3R1cmVFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE1hcEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MU291cmNlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTcmNzZXRQYXJzZXIuaCIKICNp
bmNsdWRlICJMYXp5TG9hZEltYWdlT2JzZXJ2ZXIuaCIKQEAgLTExNywxMCArMTE3LDEwIEBAIHZv
aWQgSFRNTEltYWdlRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtCiB7CiAgICAgaWYgKG5hbWUgPT0gd2lkdGhBdHRyKSB7CiAg
ICAgICAgIGFkZEhUTUxNdWx0aUxlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgs
IHZhbHVlKTsKLSAgICAgICAgYXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJp
YnV0ZXNUb1N0eWxlKHN0eWxlKTsKKyAgICAgICAgYXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFu
ZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxlKHZhbHVlLCBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGhlaWdodEF0dHIpLCBzdHlsZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGhlaWdo
dEF0dHIpIHsKICAgICAgICAgYWRkSFRNTE11bHRpTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJv
cGVydHlIZWlnaHQsIHZhbHVlKTsKLSAgICAgICAgYXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFu
ZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxlKHN0eWxlKTsKKyAgICAgICAgYXBwbHlBc3BlY3RSYXRp
b0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxlKGF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24od2lkdGhBdHRyKSwgdmFsdWUsIHN0eWxlKTsKICAgICB9IGVsc2UgaWYgKG5h
bWUgPT0gYm9yZGVyQXR0cikKICAgICAgICAgYXBwbHlCb3JkZXJBdHRyaWJ1dGVUb1N0eWxlKHZh
bHVlLCBzdHlsZSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSB2c3BhY2VBdHRyKSB7CkBAIC0xMzcs
NiArMTM3LDM0IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFs
SGludHNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtCiAgICAgICAgIEhUTUxFbGVtZW50
Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5
bGUpOwogfQogCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbGxlY3RFeHRyYVN0eWxlRm9yUHJl
c2VudGF0aW9uYWxIaW50cyhNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKK3sKKyAgICBp
ZiAoIXNvdXJjZUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8mIHdpZHRoQXR0
ckZyb21Tb3VyY2UgPSBzb3VyY2VFbGVtZW50KCktPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24od2lkdGhBdHRyKTsKKyAgICBhdXRvJiBoZWlnaHRBdHRyRnJvbVNvdXJjZSA9IHNvdXJj
ZUVsZW1lbnQoKS0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihoZWlnaHRBdHRyKTsK
KyAgICAvLyBJZiBib3RoIHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlcyBvZiA8c291cmNlPiBp
cyB1bmRlZmluZWQsIHRoZSBzdHlsZSdzIHZhbHVlIHNob3VsZCBub3QKKyAgICAvLyBiZSBvdmVy
d3JpdHRlbi4gT3RoZXJ3aXNlLCA8c291Y2U+IHdpbGwgb3ZlcndyaXRlIGl0LiBJLmUuLCBpZiA8
c291cmNlPiBvbmx5IGhhcyBvbmUgYXR0cmlidXRlCisgICAgLy8gZGVmaW5lZCwgdGhlIG90aGVy
IG9uZSBhbmQgYXNwZWN0LXJhdGlvIHNob3VsZG4ndCBiZSBzZXQgdG8gYXV0by4KKyAgICBpZiAo
d2lkdGhBdHRyRnJvbVNvdXJjZS5pc051bGwoKSAmJiBoZWlnaHRBdHRyRnJvbVNvdXJjZS5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCF3aWR0aEF0dHJGcm9tU291cmNlLmlz
TnVsbCgpKQorICAgICAgICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlX
aWR0aCwgd2lkdGhBdHRyRnJvbVNvdXJjZSk7CisgICAgZWxzZQorICAgICAgICBhZGRQcm9wZXJ0
eVRvUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIENTU1Zh
bHVlQXV0byk7CisKKyAgICBpZiAoIWhlaWdodEF0dHJGcm9tU291cmNlLmlzTnVsbCgpKQorICAg
ICAgICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIGhlaWdo
dEF0dHJGcm9tU291cmNlKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50
YXRpb25hbEhpbnRTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIENTU1ZhbHVlQXV0byk7
CisKKyAgICBpZiAoIXdpZHRoQXR0ckZyb21Tb3VyY2UuaXNOdWxsKCkgJiYgIWhlaWdodEF0dHJG
cm9tU291cmNlLmlzTnVsbCgpKQorICAgICAgICBhcHBseUFzcGVjdFJhdGlvRnJvbVdpZHRoQW5k
SGVpZ2h0QXR0cmlidXRlc1RvU3R5bGUod2lkdGhBdHRyRnJvbVNvdXJjZSwgaGVpZ2h0QXR0ckZy
b21Tb3VyY2UsIHN0eWxlKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50
YXRpb25hbEhpbnRTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlBc3BlY3RSYXRpbywgQ1NTVmFsdWVB
dXRvKTsKK30KKwogY29uc3QgQXRvbVN0cmluZyYgSFRNTEltYWdlRWxlbWVudDo6aW1hZ2VTb3Vy
Y2VVUkwoKSBjb25zdAogewogICAgIHJldHVybiBtX2Jlc3RGaXRJbWFnZVVSTC5pc0VtcHR5KCkg
PyBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIpIDogbV9iZXN0Rml0SW1h
Z2VVUkw7CkBAIC0xOTEsOCArMjE5LDEwIEBAIEltYWdlQ2FuZGlkYXRlIEhUTUxJbWFnZUVsZW1l
bnQ6OmJlc3RGaXRTb3VyY2VGcm9tUGljdHVyZUVsZW1lbnQoKQogICAgICAgICBhdXRvIHNvdXJj
ZVNpemUgPSBzaXplc1BhcnNlci5sZW5ndGgoKTsKIAogICAgICAgICBjYW5kaWRhdGUgPSBiZXN0
Rml0U291cmNlRm9ySW1hZ2VBdHRyaWJ1dGVzKGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KSwgbnVsbEF0b20oKSwgc3Jjc2V0LCBzb3VyY2VTaXplKTsKLSAgICAgICAgaWYgKCFjYW5kaWRh
dGUuaXNFbXB0eSgpKQorICAgICAgICBpZiAoIWNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIHNldFNvdXJjZUVsZW1lbnQoJnNvdXJjZSk7CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBjYW5kaWRhdGU7CkBAIC0yMTcsNiArMjQ3LDcg
QEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZWxlY3RJbWFnZVNvdXJjZShSZWxldmFudE11dGF0
aW9uIHJlbGV2YW50TXV0YXRpb24pCiAgICAgLy8gRmlyc3QgbG9vayBmb3IgdGhlIGJlc3QgZml0
IHNvdXJjZSBmcm9tIG91ciA8cGljdHVyZT4gcGFyZW50IGlmIHdlIGhhdmUgb25lLgogICAgIElt
YWdlQ2FuZGlkYXRlIGNhbmRpZGF0ZSA9IGJlc3RGaXRTb3VyY2VGcm9tUGljdHVyZUVsZW1lbnQo
KTsKICAgICBpZiAoY2FuZGlkYXRlLmlzRW1wdHkoKSkgeworICAgICAgICBzZXRTb3VyY2VFbGVt
ZW50KG51bGxwdHIpOwogICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgPHBpY3R1cmU+IG9y
IGRpZG4ndCBmaW5kIGEgc291cmNlLCB0aGVuIHdlIHVzZSBvdXIgb3duIGF0dHJpYnV0ZXMuCiAg
ICAgICAgIFNpemVzQXR0cmlidXRlUGFyc2VyIHNpemVzUGFyc2VyKGF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oc2l6ZXNBdHRyKS5zdHJpbmcoKSwgZG9jdW1lbnQoKSwgJm1fbWVkaWFR
dWVyeUR5bmFtaWNSZXN1bHRzKTsKICAgICAgICAgYXV0byBzb3VyY2VTaXplID0gc2l6ZXNQYXJz
ZXIubGVuZ3RoKCk7CkBAIC03OTksNCArODMwLDIzIEBAIFJlZmVycmVyUG9saWN5IEhUTUxJbWFn
ZUVsZW1lbnQ6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKICAgICByZXR1cm4gUmVmZXJyZXJQb2xp
Y3k6OkVtcHR5U3RyaW5nOwogfQogCitIVE1MU291cmNlRWxlbWVudCogSFRNTEltYWdlRWxlbWVu
dDo6c291cmNlRWxlbWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc291cmNlRWxlbWVudC5n
ZXQoKTsKK30KKwordm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRTb3VyY2VFbGVtZW50KEhUTUxT
b3VyY2VFbGVtZW50KiBzb3VyY2VFbGVtZW50KQoreworICAgIGlmIChtX3NvdXJjZUVsZW1lbnQg
PT0gc291cmNlRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc291cmNlRWxlbWVudCA9
IG1ha2VXZWFrUHRyKHNvdXJjZUVsZW1lbnQpOworICAgIGludmFsaWRhdGVBdHRyaWJ1dGVNYXBw
aW5nKCk7Cit9CisKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6aW52YWxpZGF0ZUF0dHJpYnV0ZU1h
cHBpbmcoKQoreworICAgIGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCkuc2V0UHJlc2VudGF0aW9u
YWxIaW50U3R5bGVJc0RpcnR5KHRydWUpOworICAgIGludmFsaWRhdGVTdHlsZSgpOworfQorCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IGYxYTAzMGM0ZTc4YjQz
OGIwMWNiM2M0MzExMzU1NzZlMTAxMmE4ZWYuLmE5ZWE1NGYyMWM1MDhjMTY2ZWEzOTUwMGFiZjU1
N2E0YTM3NTlkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCkBAIC0x
NTAsNiArMTUwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNQ
cmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dCBvdmVycmlkZTsKICAgICB2b2lkIGNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJiwgTXV0YWJsZVN0eWxl
UHJvcGVydGllcyYpIG92ZXJyaWRlOworICAgIHZvaWQgY29sbGVjdEV4dHJhU3R5bGVGb3JQcmVz
ZW50YXRpb25hbEhpbnRzKE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGludmFsaWRhdGVBdHRyaWJ1dGVNYXBwaW5nKCk7CiAKICAgICB2b2lkIGRpZEF0dGFjaFJl
bmRlcmVycygpIG92ZXJyaWRlOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikg
b3ZlcnJpZGU7CkBAIC0xODMsNiArMTg1LDkgQEAgcHJpdmF0ZToKIAogICAgIGZsb2F0IGVmZmVj
dGl2ZUltYWdlRGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0OwogCisgICAgSFRNTFNvdXJjZUVsZW1l
bnQqIHNvdXJjZUVsZW1lbnQoKSBjb25zdDsKKyAgICB2b2lkIHNldFNvdXJjZUVsZW1lbnQoSFRN
TFNvdXJjZUVsZW1lbnQqKTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxIVE1MSW1hZ2VMb2FkZXI+
IG1faW1hZ2VMb2FkZXI7CiAgICAgV2Vha1B0cjxIVE1MRm9ybUVsZW1lbnQ+IG1fZm9ybTsKICAg
ICBXZWFrUHRyPEhUTUxGb3JtRWxlbWVudD4gbV9mb3JtU2V0QnlQYXJzZXI7CkBAIC0xOTYsNiAr
MjAxLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlciB7
IGZhbHNlIH07CiAKICAgICBXZWFrUHRyPEhUTUxQaWN0dXJlRWxlbWVudD4gbV9waWN0dXJlRWxl
bWVudDsKKyAgICAvLyBUaGUgc291cmNlIGVsZW1lbnQgdGhhdCB3YXMgc2VsZWN0ZWQgdG8gcHJv
dmlkZSB0aGUgc291cmNlIFVSTC4KKyAgICBXZWFrUHRyPEhUTUxTb3VyY2VFbGVtZW50PiBtX3Nv
dXJjZUVsZW1lbnQ7CiAgICAgTWVkaWFRdWVyeUR5bmFtaWNSZXN1bHRzIG1fbWVkaWFRdWVyeUR5
bmFtaWNSZXN1bHRzOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDBkZjE5ZGVjMDAyN2IzYzRlZmNl
MWU5NWVlNGI0YmUwOGUzYWJiZDYuLjJmYmYzZmRlYzI0ZjcxZGU2NzM0ZGUyNWJhNmZlYWNlNDdi
ZGI3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNzA4
LDEyICs3MDgsMTIgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9u
YWxIaW50c0ZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW0KICAgICAgICAgaWYgKG1faW5w
dXRUeXBlLT5zaG91bGRSZXNwZWN0SGVpZ2h0QW5kV2lkdGhBdHRyaWJ1dGVzKCkpCiAgICAgICAg
ICAgICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgdmFsdWUp
OwogICAgICAgICBpZiAoaXNJbWFnZUJ1dHRvbigpKQotICAgICAgICAgICAgYXBwbHlBc3BlY3RS
YXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxlKHN0eWxlKTsKKyAgICAgICAg
ICAgIGFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZSh2
YWx1ZSwgYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihoZWlnaHRBdHRyKSwgc3R5bGUp
OwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBoZWlnaHRBdHRyKSB7CiAgICAgICAgIGlmIChtX2lu
cHV0VHlwZS0+c2hvdWxkUmVzcGVjdEhlaWdodEFuZFdpZHRoQXR0cmlidXRlcygpKQogICAgICAg
ICAgICAgYWRkSFRNTExlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5SGVpZ2h0LCB2YWx1
ZSk7CiAgICAgICAgIGlmIChpc0ltYWdlQnV0dG9uKCkpCi0gICAgICAgICAgICBhcHBseUFzcGVj
dFJhdGlvRnJvbVdpZHRoQW5kSGVpZ2h0QXR0cmlidXRlc1RvU3R5bGUoc3R5bGUpOworICAgICAg
ICAgICAgYXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxl
KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyKSwgdmFsdWUsIHN0eWxl
KTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gYm9yZGVyQXR0ciAmJiBpc0ltYWdlQnV0dG9uKCkp
CiAgICAgICAgIGFwcGx5Qm9yZGVyQXR0cmlidXRlVG9TdHlsZSh2YWx1ZSwgc3R5bGUpOwogICAg
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBpY3R1cmVFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBpY3R1cmVFbGVtZW50LmNwcAppbmRleCAw
ZWE3NzRkN2E2ZjU0NTY0NTZjNWRhYTc5OTc0MDJjODk2NThiNWNjLi4xNGQ5MjZjYzUxMTNiZDE4
NzNkZDM1OGY5NTBlMTA0ZjUzMTdhMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQaWN0dXJlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGlj
dHVyZUVsZW1lbnQuY3BwCkBAIC02NCw2ICs2NCwxNCBAQCB2b2lkIEhUTUxQaWN0dXJlRWxlbWVu
dDo6c291cmNlc0NoYW5nZWQoKQogICAgICAgICBlbGVtZW50LnNlbGVjdEltYWdlU291cmNlKFJl
bGV2YW50TXV0YXRpb246Olllcyk7CiB9CiAKK3ZvaWQgSFRNTFBpY3R1cmVFbGVtZW50Ojpzb3Vy
Y2VEaW1lbnNpb25BdHRyaWJ1dGVzQ2hhbmdlZChjb25zdCBIVE1MU291cmNlRWxlbWVudCYgc291
cmNlRWxlbWVudCkKK3sKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBjaGlsZHJlbk9mVHlwZTxI
VE1MSW1hZ2VFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKCZzb3VyY2VFbGVtZW50ID09
IGVsZW1lbnQuc291cmNlRWxlbWVudCgpKQorICAgICAgICAgICAgZWxlbWVudC5pbnZhbGlkYXRl
QXR0cmlidXRlTWFwcGluZygpOworICAgIH0KK30KKwogI2lmIFVTRShTWVNURU1fUFJFVklFVykK
IGJvb2wgSFRNTFBpY3R1cmVFbGVtZW50Ojppc1N5c3RlbVByZXZpZXdJbWFnZSgpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQaWN0dXJlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuaAppbmRleCA1NTJmNjIyOGJiNGIyZjUw
OTM1Y2Y4MjllOTFhNjBhN2ZkYjc2MzU2Li4xNzU1OTQxNjYyMzE3Y2ZkYWVlZDkwZjJiMTdjNDU3
ZDU5NTkyMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQaWN0dXJlRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBpY3R1cmVFbGVtZW50LmgKQEAg
LTM2LDYgKzM2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkhUTUxQaWN0dXJlRWxlbWVudCgp
OwogCiAgICAgdm9pZCBzb3VyY2VzQ2hhbmdlZCgpOworICAgIHZvaWQgc291cmNlRGltZW5zaW9u
QXR0cmlidXRlc0NoYW5nZWQoY29uc3QgSFRNTFNvdXJjZUVsZW1lbnQmKTsKIAogI2lmIFVTRShT
WVNURU1fUFJFVklFVykKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzU3lzdGVtUHJldmlld0lt
YWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCmluZGV4IGFj
NDI0ZGU2ZGYzNWFiYzMzMWQ3YTUxOGY0ZjEzYzIzODgxMzk5ODAuLjYxYWMyYjVhZmJhMGRmMDBk
MWZkYTRjZmE5YWUzYjE1Yjg0NmRhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNvdXJjZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJj
ZUVsZW1lbnQuY3BwCkBAIC0yMDUsNCArMjA1LDEzIEBAIGNvbnN0IE1lZGlhUXVlcnlTZXQqIEhU
TUxTb3VyY2VFbGVtZW50OjpwYXJzZWRNZWRpYUF0dHJpYnV0ZShEb2N1bWVudCYgZG9jdW1lbnQp
CiAgICAgcmV0dXJuIG1fY2FjaGVkUGFyc2VkTWVkaWFBdHRyaWJ1dGUudmFsdWUoKS5nZXQoKTsK
IH0KIAordm9pZCBIVE1MU291cmNlRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0
cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbiByZWFzb24pCit7Cisg
ICAgaWYgKG5hbWUgPT0gd2lkdGhBdHRyIHx8IG5hbWUgPT0gaGVpZ2h0QXR0cikgeworICAgICAg
ICBpZiAoUmVmUHRyIHBhcmVudCA9IHBhcmVudE5vZGUoKTsgaXM8SFRNTFBpY3R1cmVFbGVtZW50
PihwYXJlbnQpKQorICAgICAgICAgICAgZG93bmNhc3Q8SFRNTFBpY3R1cmVFbGVtZW50PigqcGFy
ZW50KS5zb3VyY2VEaW1lbnNpb25BdHRyaWJ1dGVzQ2hhbmdlZCgqdGhpcyk7CisgICAgfQorICAg
IEhUTUxFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSwg
cmVhc29uKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291
cmNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5oCmlu
ZGV4IDFhYjY2YzBiNDBhYTIzZTQ4ZDdkMDNhMDc5OWUzNjI2YTgxNGY3NmYuLjUzMDgzMDdhYzU1
Mjg1NTc1MjAwN2EwNzU0N2ZmYWI0YzdhYjgxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
b3VyY2VFbGVtZW50LmgKQEAgLTU4LDYgKzU4LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5h
bDsKIAorICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlLCBBdHRy
aWJ1dGVNb2RpZmljYXRpb25SZWFzb24pIGZpbmFsOworCiAgICAgdm9pZCBlcnJvckV2ZW50VGlt
ZXJGaXJlZCgpOwogCiAgICAgVGltZXIgbV9lcnJvckV2ZW50VGltZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaWRsCmluZGV4IGUyNmYyZWUyMDc3ZGUwNTEyZDhiNjVh
MTZhZDYxMzEzNjA3ODY0NDAuLjEzNWEyNTEzMjIzODA2ZTIxZWIyNGVhNTI1NzAyNDVhOTQ0ZDQz
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaWRsCkBAIC0zMiw0
ICszMiw2IEBACiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRl
IFVTVlN0cmluZyBzcmNzZXQ7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0g
YXR0cmlidXRlIERPTVN0cmluZyBzaXplczsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBS
ZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1lZGlhOworICAgIFtDRVJlYWN0aW9ucz1Ob3RO
ZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOworICAgIFtDRVJl
YWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGhlaWdo
dDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBhN2Fl
YmUzN2I4MWIyN2M4MjdlY2IwNmVjYmUzZTU4ODhiNzUwZGM4Li5kYTFjNGVmYjQ2ZmMwNGQ2NDFm
MGJjOTAzMDc1N2U3NzYxNDkwZTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHAKQEAgLTExNSwxMCArMTE1LDEwIEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6Y29s
bGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtCiB7
CiAgICAgaWYgKG5hbWUgPT0gd2lkdGhBdHRyKSB7CiAgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0
eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCB2YWx1ZSk7Ci0gICAgICAgIGFwcGx5QXNwZWN0
UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZShzdHlsZSk7CisgICAgICAg
IGFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZSh2YWx1
ZSwgYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihoZWlnaHRBdHRyKSwgc3R5bGUpOwog
ICAgIH0gZWxzZSBpZiAobmFtZSA9PSBoZWlnaHRBdHRyKSB7CiAgICAgICAgIGFkZEhUTUxMZW5n
dGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhlaWdodCwgdmFsdWUpOwotICAgICAgICBhcHBs
eUFzcGVjdFJhdGlvRnJvbVdpZHRoQW5kSGVpZ2h0QXR0cmlidXRlc1RvU3R5bGUoc3R5bGUpOwor
ICAgICAgICBhcHBseUFzcGVjdFJhdGlvRnJvbVdpZHRoQW5kSGVpZ2h0QXR0cmlidXRlc1RvU3R5
bGUoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3aWR0aEF0dHIpLCB2YWx1ZSwgc3R5
bGUpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MTWVkaWFFbGVtZW50Ojpjb2xsZWN0UHJlc2Vu
dGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwogfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGRjNzExY2JjY2IwNWJmYmFkOGJiZjFlYTNjZDAyODZlNmFjMzUyOGYuLmRlOGQ3YTEwMWUwODhk
YTgyMzZhNWM4MGJiNTYxYmUwMTY1ZDNhY2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0w
Ni0xNyAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1w
bGVtZW50IHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlcyBvbiBzb3VyY2UgZWxlbWVudHMgb2Yg
PHBpY3R1cmU+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjIzNjgKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAq
IFRlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDYtMTEgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hl
bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVzZSBIVE1MRGltZW5zaW9uIHRvIHBhcnNlIGRpZmZl
cmVudCBIVE1MIGF0dHJpYnV0ZSBsZW5ndGggdmFsdWVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZwppbmRleCBhNWI3ZWQ2OTgxMjgxNDIyNTBkMWFhYzczOTk4MTRmNTFlMGQ2M2MxLi41M2Uw
ZTZhYjkzZGVmYTgyYWU5NGU2MmZkMzFmODkzZDcyMDc5MmIxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wNi0xNyAgQ2F0aGllIENoZW4gIDxj
YXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHdpZHRoIGFuZCBoZWln
aHQgYXR0cmlidXRlcyBvbiBzb3VyY2UgZWxlbWVudHMgb2YgPHBpY3R1cmU+CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIzNjgKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3JlbmRlcmluZy9yZXBsYWNlZC1lbGVtZW50cy9hdHRyaWJ1dGVzLWZvci1lbWJlZGRlZC1j
b250ZW50LWFuZC1pbWFnZXMvcGljdHVyZS1hc3BlY3QtcmF0aW8tZXhwZWN0ZWQudHh0OgorCiAy
MDIxLTA2LTExICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBVc2UgSFRNTERpbWVuc2lvbiB0byBwYXJzZSBkaWZmZXJlbnQgSFRNTCBhdHRyaWJ1dGUgbGVu
Z3RoIHZhbHVlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODRhOGM0YjEzNTk1OWU1YzRiZjQ4YmJk
NGJkZjEyNjU1NjExNTcyOS4uZGEwZGFkMGYzNTFiZGU4M2FjODhiYzY5YTRlYjgwNzM1ZmRhNDA0
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNDM0LDkgKzE0MzQsNiBAQCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWlt
Zy1lbGVtZW50LwogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L3RoZS1pbWctZWxlbWVudC9zaXplcy9wYXJzZS1hLXNpemVzLWF0
dHJpYnV0ZS1zdGFuZGFyZHMtbW9kZS5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUt
b2JqZWN0LWVsZW1lbnQvb2JqZWN0LWZhbGxiYWNrLWZhaWxlZC1jcm9zcy1vcmlnaW4tbmF2aWdh
dGlvbi5zdWIuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiAKLSMgTmV3bHkgaW1wb3J0aW5nIGFzcGVj
dCByYXRpbyB0ZXN0IGlzIGZsYWt5LgotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3JlbmRlcmluZy9yZXBsYWNlZC1lbGVtZW50cy9hdHRyaWJ1dGVzLWZvci1lbWJlZGRlZC1j
b250ZW50LWFuZC1pbWFnZXMvcGljdHVyZS1hc3BlY3QtcmF0aW8uaHRtbCBbIEZhaWx1cmUgUGFz
cyBdCi0KICMgTmV3bHkgaW1wb3J0aW5nIFczQyB0ZXN0cyBuZWVkZWQgc3VwcG9ydCBmb3IgcmVm
dGVzdC13YWl0Lgogd2Via2l0Lm9yZy9iLzE4NjA0NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvdHJh
Y2svdHJhY2stZWxlbWVudC90cmFjay1jdWUtcmVuZGVyaW5nLWFmdGVyLWNvbnRyb2xzLWFkZGVk
Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xODYwNDUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L3RyYWNrL3RyYWNrLWVsZW1lbnQvdHJhY2stY3VlLXJlbmRlcmluZy1hZnRlci1jb250cm9scy1y
ZW1vdmVkLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMvYXR0
cmlidXRlcy1mb3ItZW1iZWRkZWQtY29udGVudC1hbmQtaW1hZ2VzL3BpY3R1cmUtYXNwZWN0LXJh
dGlvLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMvYXR0cmlidXRlcy1mb3ItZW1i
ZWRkZWQtY29udGVudC1hbmQtaW1hZ2VzL3BpY3R1cmUtYXNwZWN0LXJhdGlvLWV4cGVjdGVkLnR4
dAppbmRleCA2NDczZWI3OGIyZjI3M2U3NzA2NDQ3YzUzMTI2MTU4NzE5NTEyMDlhLi5lNzNjYTNi
NjM3YWI2NjA1MjY5ZTM5MjZjYjczZjljYmQ3MmM1YTZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL3JlcGxhY2Vk
LWVsZW1lbnRzL2F0dHJpYnV0ZXMtZm9yLWVtYmVkZGVkLWNvbnRlbnQtYW5kLWltYWdlcy9waWN0
dXJlLWFzcGVjdC1yYXRpby1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9yZXBsYWNlZC1lbGVtZW50cy9h
dHRyaWJ1dGVzLWZvci1lbWJlZGRlZC1jb250ZW50LWFuZC1pbWFnZXMvcGljdHVyZS1hc3BlY3Qt
cmF0aW8tZXhwZWN0ZWQudHh0CkBAIC0xLDIwICsxLDE4IEBACiAKIAotCi0KIFBBU1Mgc291cmNl
IHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlcyBhcmUgdXNlZCB0byBpbmZlciBhc3BlY3QtcmF0
aW8gaW4gPHBpY3R1cmU+Ci1GQUlMIENvbXB1dGVkIHN0eWxlIGZvciB3aWR0aC9oZWlnaHQvYXNw
ZWN0LXJhdGlvIGFzc2VydF9hcHByb3hfZXF1YWxzOiBleHBlY3RlZCAxICsvLSAwLjAwMSBidXQg
Z290IEluZmluaXR5Ci1GQUlMIFNvdXJjZSB3aWR0aC9oZWlnaHQgc2hvdWxkIHRha2UgcHJlY2Vk
ZW5jZSBvdmVyIGltZyBhdHRyaWJ1dGVzLiBhc3NlcnRfYXBwcm94X2VxdWFsczogZXhwZWN0ZWQg
MiArLy0gMC4wMDEgYnV0IGdvdCA1Ci1GQUlMIE1ha2Ugc3VyZSBzdHlsZSBnZXRzIGludmFsaWRh
dGVkIGNvcnJlY3RseSB3aGVuIHRoZSBzb3VyY2UgZ2V0cyByZW1vdmVkLiBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAiYXV0byAyNTAgLyA1MCIgYnV0IGdvdCAiYXV0byIKLUZBSUwgSWYgdGhlIDxz
b3VyY2U+IGhhcyBvbmx5IG9uZSBvZiB3aWR0aC9oZWlnaHQsIHdlIGRvbid0IGdldCBhbiBhc3Bl
Y3QgcmF0aW8sIGV2ZW4gaWYgdGhlIDxpbWc+IGhhcyBib3RoLiBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiMTAwcHgiIGJ1dCBnb3QgIjIwMHB4IgotRkFJTCBJZiB3ZSBkb24ndCBoYXZlIHdpZHRo
L2hlaWdodCBvbiB0aGUgc291cmNlLCB3ZSBmYWxsIGJhY2sgdG8gd2lkdGgvaGVpZ2h0IG9uIHRo
ZSA8aW1nPi4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1dG8gMjAwIC8gMTAwIiBidXQgZ290
ICJhdXRvIgotRkFJTCBJZiB3ZSBvbmx5IGhhdmUgb25lIHdpZHRoIGF0dHJpYnV0ZSwgd2Ugc2hv
dWxkIGdldCB3aWR0aCBtYXBwZWQgYnV0IG5vIGFzcGVjdCByYXRpbywgZXZlbiBpZiA8aW1nPiBo
YXMgYXR0cmlidXRlcy4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEwMHB4IiBidXQgZ290ICIy
MDBweCIKLUZBSUwgSWYgd2Ugb25seSBoYXZlIGhlaWdodCBhdHRyaWJ1dGUsIHdlIHNob3VsZCBn
ZXQgaGVpZ2h0IG1hcHBlZCBidXQgbm8gYXNwZWN0IHJhdGlvLCBldmVuIGlmIDxpbWc+IGhhcyBh
dHRyaWJ1dGVzLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYXV0byIgYnV0IGdvdCAiMjAwcHgi
Ci1GQUlMIER5bmFtaWNhbGx5IGNoYW5naW5nIHdpZHRoL2hlaWdodCBzaG91bGQgY2hhbmdlIGNv
bXB1dGVkIHN0eWxlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhdXRvIDEwMCAvIDEwMCIgYnV0
IGdvdCAiYXV0byIKLUZBSUwgQ2hhbmdpbmcgd2hpY2ggPHNvdXJjZT4gbWF0Y2hlcyBzaG91bGQg
Y2hhbmdlIGNvbXB1dGVkIHN0eWxlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhdXRvIDEwMCAv
IDEwMCIgYnV0IGdvdCAiYXV0byIKLUZBSUwgUGVyY2VudGFnZXMgb24gc291cmNlIHNob3VsZCBi
ZSBpZ25vcmVkIGZvciBhc3BlY3QtcmF0aW8gYnV0IHVzZWQgZm9yIHdpZHRoL2hlaWdodC4gYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgMTAwIGJ1dCBnb3QgMAotRkFJTCBUcmFpbGluZyBnYXJiYWdl
IHNob3VsZCBiZSBpZ25vcmVkIGJ1dCBub3QgbWFrZSB0aGUgYXR0cmlidXRlIGludmFsaWQgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgMTAwIGJ1dCBnb3QgMAorUEFTUyBDb21wdXRlZCBzdHlsZSBm
b3Igd2lkdGgvaGVpZ2h0L2FzcGVjdC1yYXRpbworUEFTUyBTb3VyY2Ugd2lkdGgvaGVpZ2h0IHNo
b3VsZCB0YWtlIHByZWNlZGVuY2Ugb3ZlciBpbWcgYXR0cmlidXRlcy4KK1BBU1MgTWFrZSBzdXJl
IHN0eWxlIGdldHMgaW52YWxpZGF0ZWQgY29ycmVjdGx5IHdoZW4gdGhlIHNvdXJjZSBnZXRzIHJl
bW92ZWQuCitQQVNTIElmIHRoZSA8c291cmNlPiBoYXMgb25seSBvbmUgb2Ygd2lkdGgvaGVpZ2h0
LCB3ZSBkb24ndCBnZXQgYW4gYXNwZWN0IHJhdGlvLCBldmVuIGlmIHRoZSA8aW1nPiBoYXMgYm90
aC4KK1BBU1MgSWYgd2UgZG9uJ3QgaGF2ZSB3aWR0aC9oZWlnaHQgb24gdGhlIHNvdXJjZSwgd2Ug
ZmFsbCBiYWNrIHRvIHdpZHRoL2hlaWdodCBvbiB0aGUgPGltZz4uCitQQVNTIElmIHdlIG9ubHkg
aGF2ZSBvbmUgd2lkdGggYXR0cmlidXRlLCB3ZSBzaG91bGQgZ2V0IHdpZHRoIG1hcHBlZCBidXQg
bm8gYXNwZWN0IHJhdGlvLCBldmVuIGlmIDxpbWc+IGhhcyBhdHRyaWJ1dGVzLgorUEFTUyBJZiB3
ZSBvbmx5IGhhdmUgaGVpZ2h0IGF0dHJpYnV0ZSwgd2Ugc2hvdWxkIGdldCBoZWlnaHQgbWFwcGVk
IGJ1dCBubyBhc3BlY3QgcmF0aW8sIGV2ZW4gaWYgPGltZz4gaGFzIGF0dHJpYnV0ZXMuCitQQVNT
IER5bmFtaWNhbGx5IGNoYW5naW5nIHdpZHRoL2hlaWdodCBzaG91bGQgY2hhbmdlIGNvbXB1dGVk
IHN0eWxlCitQQVNTIENoYW5naW5nIHdoaWNoIDxzb3VyY2U+IG1hdGNoZXMgc2hvdWxkIGNoYW5n
ZSBjb21wdXRlZCBzdHlsZQorUEFTUyBQZXJjZW50YWdlcyBvbiBzb3VyY2Ugc2hvdWxkIGJlIGln
bm9yZWQgZm9yIGFzcGVjdC1yYXRpbyBidXQgdXNlZCBmb3Igd2lkdGgvaGVpZ2h0LgorUEFTUyBU
cmFpbGluZyBnYXJiYWdlIHNob3VsZCBiZSBpZ25vcmVkIGJ1dCBub3QgbWFrZSB0aGUgYXR0cmli
dXRlIGludmFsaWQKIFBBU1MgTG9hZGVkIHBpY3R1cmUgdGVzdDogQm90aCA8c291cmNlPiBhbmQg
PGltZz4gYXJlIHdpdGhvdXQgd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzCi1GQUlMIExvYWRl
ZCBwaWN0dXJlIHRlc3Q6IDxzb3VyY2U+IHdpdGggd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGVz
LCA8aW1nPiB3aXRob3V0IHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlcyBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAiYXV0byAxMDAgLyAxMDAiIGJ1dCBnb3QgImF1dG8iCi1GQUlMIExvYWRlZCBw
aWN0dXJlIHRlc3Q6IEJvdGggPHNvdXJjZT4gYW5kIDxpbWc+IGFyZSB3aXRoIHdpZHRoIGFuZCBo
ZWlnaHQgYXR0cmlidXRlcyBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYXV0byAxMDAgLyAxMDAi
IGJ1dCBnb3QgImF1dG8iCitQQVNTIExvYWRlZCBwaWN0dXJlIHRlc3Q6IDxzb3VyY2U+IHdpdGgg
d2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzLCA8aW1nPiB3aXRob3V0IHdpZHRoIGFuZCBoZWln
aHQgYXR0cmlidXRlcworUEFTUyBMb2FkZWQgcGljdHVyZSB0ZXN0OiBCb3RoIDxzb3VyY2U+IGFu
ZCA8aW1nPiBhcmUgd2l0aCB3aWR0aCBhbmQgaGVpZ2h0IGF0dHJpYnV0ZXMKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>