<?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>217529</bug_id>
          
          <creation_ts>2020-10-09 13:15:45 -0700</creation_ts>
          <short_desc>Define image intrinsic aspect ratio by mapping to the `aspect-ratio` property.</short_desc>
          <delta_ts>2021-08-06 14:08:46 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=226467</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=228872</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WPTImpact</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>225648</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tab Atkins Jr.">jackalmage</reporter>
          <assigned_to name="cathiechen">cathiechen</assigned_to>
          <cc>cathiechen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</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>jonlee</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</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>1696336</commentid>
    <comment_count>0</comment_count>
    <who name="Tab Atkins Jr.">jackalmage</who>
    <bug_when>2020-10-09 13:15:45 -0700</bug_when>
    <thetext>Per &lt;https://github.com/whatwg/html/pull/6032&gt; (and linked related issues), &lt;img width height&gt; should define an aspect ratio for the element by creating a presentational hint for the &apos;aspect-ratio&apos; property, rather than by changing the image&apos;s intrinsic aspect ratio.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696440</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-09 18:15:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/70161811&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761819</commentid>
    <comment_count>2</comment_count>
      <attachid>429128</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-05-19 20:07:42 -0700</bug_when>
    <thetext>Created attachment 429128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761857</commentid>
    <comment_count>3</comment_count>
      <attachid>429128</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-05-20 00:42:02 -0700</bug_when>
    <thetext>Comment on attachment 429128
Patch

Hi,
I think this patch is ready for review now. Thanks:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761867</commentid>
    <comment_count>4</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-05-20 01:29:17 -0700</bug_when>
    <thetext>(In reply to cathiechen from comment #3)
&gt; Comment on attachment 429128 [details]
&gt; Patch
&gt; 
&gt; Hi,
&gt; I think this patch is ready for review now. Thanks:)

Thanks, Cathie, the patch LGTM. IIUC this is needed for some WPT tests and it is nice to move some HTML parsing code out of rendering/ IMHO. I prefer somebody from Apple to do the review though :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761873</commentid>
    <comment_count>5</comment_count>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-05-20 02:39:42 -0700</bug_when>
    <thetext>(In reply to Rob Buis from comment #4)
&gt; (In reply to cathiechen from comment #3)
&gt; &gt; Comment on attachment 429128 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Hi,
&gt; &gt; I think this patch is ready for review now. Thanks:)
&gt; 
&gt; Thanks, Cathie, the patch LGTM. IIUC this is needed for some WPT tests and
&gt; it is nice to move some HTML parsing code out of rendering/ IMHO. I prefer
&gt; somebody from Apple to do the review though :)

Thanks, Rob!

Yeah, this is needed by the WPT tests for mapping attributes w h to aspect ratio, like, img-aspect-ratio.html, video-aspect-ratio.html, picture-aspect-ratio.html and so on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761987</commentid>
    <comment_count>6</comment_count>
      <attachid>429128</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-05-20 09:21:19 -0700</bug_when>
    <thetext>Comment on attachment 429128
Patch

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

&gt; Source/WebCore/style/StyleAdjuster.cpp:509
&gt; +    if (m_element &amp;&amp; m_document.settings().aspectRatioOfImgFromWidthAndHeightEnabled() &amp;&amp; style.aspectRatioType() == AspectRatioType::Auto) {
&gt; +        double attributeWidth = -1;
&gt; +        double attributeHeight = -1;
&gt; +        if (m_element-&gt;useWidthHeightAsAspectRatioHint(attributeWidth, attributeHeight)) {
&gt; +            style.setAspectRatioType(AspectRatioType::AutoAndRatio);
&gt; +            style.setAspectRatio(attributeWidth, attributeHeight);
&gt; +        }
&gt; +    }
&gt; +

Won&apos;t this change the getComputedStyle value of the aspect-ratio property too? Is that what the spec wants?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761989</commentid>
    <comment_count>7</comment_count>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-05-20 09:30:29 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #6)
&gt; Comment on attachment 429128 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=429128&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/style/StyleAdjuster.cpp:509
&gt; &gt; +    if (m_element &amp;&amp; m_document.settings().aspectRatioOfImgFromWidthAndHeightEnabled() &amp;&amp; style.aspectRatioType() == AspectRatioType::Auto) {
&gt; &gt; +        double attributeWidth = -1;
&gt; &gt; +        double attributeHeight = -1;
&gt; &gt; +        if (m_element-&gt;useWidthHeightAsAspectRatioHint(attributeWidth, attributeHeight)) {
&gt; &gt; +            style.setAspectRatioType(AspectRatioType::AutoAndRatio);
&gt; &gt; +            style.setAspectRatio(attributeWidth, attributeHeight);
&gt; &gt; +        }
&gt; &gt; +    }
&gt; &gt; +
&gt; 
&gt; Won&apos;t this change the getComputedStyle value of the aspect-ratio property
&gt; too? Is that what the spec wants?


Yes, that&apos;s want the spec wants. https://html.spec.whatwg.org/#map-to-the-aspect-ratio-property-(using-dimension-rules)
And `test_computed_style()` in the WPT test img-aspect-ratio.html is testing this behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761990</commentid>
    <comment_count>8</comment_count>
      <attachid>429128</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-05-20 09:31:39 -0700</bug_when>
    <thetext>Comment on attachment 429128
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        This patch uses CSS property aspect-ratio to implement mapping width / height to intrinsic aspect ratio.
&gt; +        Style adjust changes the value CSS property aspect-ratio by getting the values of attributes width and height
&gt; +        if allowed from Element::useWidthHeightAsAspectRatioHint.

Could you link to the spec here please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761991</commentid>
    <comment_count>9</comment_count>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-05-20 09:33:44 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #8)
&gt; Comment on attachment 429128 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=429128&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        This patch uses CSS property aspect-ratio to implement mapping width / height to intrinsic aspect ratio.
&gt; &gt; +        Style adjust changes the value CSS property aspect-ratio by getting the values of attributes width and height
&gt; &gt; +        if allowed from Element::useWidthHeightAsAspectRatioHint.
&gt; 
&gt; Could you link to the spec here please?

Sure, will do!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761994</commentid>
    <comment_count>10</comment_count>
      <attachid>429180</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-05-20 09:39:01 -0700</bug_when>
    <thetext>Created attachment 429180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761996</commentid>
    <comment_count>11</comment_count>
      <attachid>429180</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-05-20 09:40:53 -0700</bug_when>
    <thetext>Comment on attachment 429180
Patch

Added the spec link to the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761997</commentid>
    <comment_count>12</comment_count>
      <attachid>429180</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-05-20 09:41:11 -0700</bug_when>
    <thetext>Comment on attachment 429180
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        [1] https://html.spec.whatwg.org/#map-to-the-aspect-ratio-property-(using-dimension-rules)

The spec says &quot;The width and height attributes map to the aspect-ratio property (using dimension rules) on img and video elements, and input elements with a type attribute in the Image Button state.&quot; so do we need code for &lt;video&gt; and image buttons too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761998</commentid>
    <comment_count>13</comment_count>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-05-20 09:44:57 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #12)
&gt; Comment on attachment 429180 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=429180&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        [1] https://html.spec.whatwg.org/#map-to-the-aspect-ratio-property-(using-dimension-rules)
&gt; 
&gt; The spec says &quot;The width and height attributes map to the aspect-ratio
&gt; property (using dimension rules) on img and video elements, and input
&gt; elements with a type attribute in the Image Button state.&quot; so do we need
&gt; code for &lt;video&gt; and image buttons too?

Yeah, we need to override `useWidthHeightAsAspectRatioHint` for HTMLVideoElement and HTMLInputElement.

The plan is to work on a new bug for video and input, based on this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762004</commentid>
    <comment_count>14</comment_count>
      <attachid>429180</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-05-20 09:55:57 -0700</bug_when>
    <thetext>Comment on attachment 429180
Patch

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

&gt; Source/WebCore/style/StyleAdjuster.cpp:508
&gt; +    if (m_element &amp;&amp; m_document.settings().aspectRatioOfImgFromWidthAndHeightEnabled() &amp;&amp; style.aspectRatioType() == AspectRatioType::Auto) {
&gt; +        double attributeWidth = -1;
&gt; +        double attributeHeight = -1;
&gt; +        if (m_element-&gt;useWidthHeightAsAspectRatioHint(attributeWidth, attributeHeight)) {
&gt; +            style.setAspectRatioType(AspectRatioType::AutoAndRatio);
&gt; +            style.setAspectRatio(attributeWidth, attributeHeight);
&gt; +        }
&gt; +    }

&quot;When the text below says that a pair of attributes w and h on an element element map to the aspect-ratio property (using dimension rules), it means that if element has both attributes w and h, and parsing those attributes&apos; values using the rules for parsing dimension values doesn&apos;t generate an error or return a percentage for either, then the user agent is expected to use the parsed dimensions as a presentational hint for the &apos;aspect-ratio&apos; property of the form auto w / h.&quot;

So the concept used in the spec here is &quot;presentational hint&quot;, https://html.spec.whatwg.org/#the-css-user-agent-style-sheet-and-presentational-hints

It is the same concept as used for stuff like &lt;body bgcolor=&quot;blue&quot;&gt;

In WebKit this is implemented as Element::presentationAttributeStyle(). To generate it correctly see for example HTMLBodyElement::collectStyleForPresentationAttribute.

You shouldn&apos;t need anything in style adjuster for this feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762005</commentid>
    <comment_count>15</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-05-20 09:56:44 -0700</bug_when>
    <thetext>...and HTMLBodyElement::isPresentationAttribute(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762007</commentid>
    <comment_count>16</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-05-20 10:00:35 -0700</bug_when>
    <thetext>In fact width/height are already presentation attributes for img/video, just not for aspect-ratio.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762461</commentid>
    <comment_count>17</comment_count>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-05-21 10:08:47 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #14)
&gt; Comment on attachment 429180 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=429180&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/style/StyleAdjuster.cpp:508
&gt; &gt; +    if (m_element &amp;&amp; m_document.settings().aspectRatioOfImgFromWidthAndHeightEnabled() &amp;&amp; style.aspectRatioType() == AspectRatioType::Auto) {
&gt; &gt; +        double attributeWidth = -1;
&gt; &gt; +        double attributeHeight = -1;
&gt; &gt; +        if (m_element-&gt;useWidthHeightAsAspectRatioHint(attributeWidth, attributeHeight)) {
&gt; &gt; +            style.setAspectRatioType(AspectRatioType::AutoAndRatio);
&gt; &gt; +            style.setAspectRatio(attributeWidth, attributeHeight);
&gt; &gt; +        }
&gt; &gt; +    }
&gt; 
&gt; &quot;When the text below says that a pair of attributes w and h on an element
&gt; element map to the aspect-ratio property (using dimension rules), it means
&gt; that if element has both attributes w and h, and parsing those attributes&apos;
&gt; values using the rules for parsing dimension values doesn&apos;t generate an
&gt; error or return a percentage for either, then the user agent is expected to
&gt; use the parsed dimensions as a presentational hint for the &apos;aspect-ratio&apos;
&gt; property of the form auto w / h.&quot;
&gt; 
&gt; So the concept used in the spec here is &quot;presentational hint&quot;,
&gt; https://html.spec.whatwg.org/#the-css-user-agent-style-sheet-and-
&gt; presentational-hints
&gt; 
&gt; It is the same concept as used for stuff like &lt;body bgcolor=&quot;blue&quot;&gt;
&gt; 
&gt; In WebKit this is implemented as Element::presentationAttributeStyle(). To
&gt; generate it correctly see for example
&gt; HTMLBodyElement::collectStyleForPresentationAttribute.
&gt; 
&gt; You shouldn&apos;t need anything in style adjuster for this feature.

Hi Antti, thanks for the review!

Yeah, indeed, it makes more sense to implement in collectStyleForPresentationAttribute.
And supporting for &lt;video&gt; and &lt;input&gt; elements becomes easier.

I will upload a new patch for this. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762463</commentid>
    <comment_count>18</comment_count>
      <attachid>429304</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-05-21 10:12:48 -0700</bug_when>
    <thetext>Created attachment 429304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762788</commentid>
    <comment_count>19</comment_count>
      <attachid>429304</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-05-22 01:13:56 -0700</bug_when>
    <thetext>Comment on attachment 429304
Patch

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

Much better!

&gt; Source/WebCore/html/HTMLElement.cpp:641
&gt; +void HTMLElement::applyAspectRatioToStyle(const AtomString&amp; widthAttribute, const AtomString&amp; heightAttribute, MutableStyleProperties&amp; style)
&gt; +{
&gt; +    if (!document().settings().aspectRatioOfImgFromWidthAndHeightEnabled())
&gt; +        return;
&gt; +
&gt; +    double width = parseValidHTMLFloatingPointNumber(widthAttribute).valueOr(-1);
&gt; +    double height = parseValidHTMLFloatingPointNumber(heightAttribute).valueOr(-1);
&gt; +    if (width &lt; 0 || height &lt; 0)
&gt; +        return;
&gt; +    auto ratioList = CSSValueList::createSlashSeparated();
&gt; +    ratioList-&gt;append(CSSValuePool::singleton().createValue(width, CSSUnitType::CSS_NUMBER));
&gt; +    ratioList-&gt;append(CSSValuePool::singleton().createValue(height, CSSUnitType::CSS_NUMBER));
&gt; +    auto list = CSSValueList::createSpaceSeparated();
&gt; +    list-&gt;append(CSSValuePool::singleton().createIdentifierValue(CSSValueAuto));
&gt; +    list-&gt;append(ratioList);
&gt; +
&gt; +    style.setProperty(CSSPropertyAspectRatio, RefPtr&lt;CSSValue&gt;(WTFMove(list)));
&gt; +}

This could test in the beginning if CSSPropertyAspectRatio is already set and bail out (since it gets called twice, separately for both and width and height).

It would look nicer (but be slightly less efficient) in the call sites if it didn&apos;t take width/height as parameters but grabbed both here (&apos;applyAspectRatioFromWidthAndHeightAttributesToStyle&apos;)

&gt; Source/WebCore/html/HTMLImageElement.cpp:121
&gt; +        if (hasAttribute(heightAttr))
&gt; +            applyAspectRatioToStyle(value, getAttribute(heightAttr), style);

The hasAttribute test here is not needed, applyAspectRatioToStyle will just bail out if one is missing.
This should use attributeWithoutSynchronization() instead of getAttribute.

&gt; Source/WebCore/html/HTMLImageElement.cpp:125
&gt; +        if (hasAttribute(widthAttr))
&gt; +            applyAspectRatioToStyle(getAttribute(widthAttr), value, style);

Same here.

&gt; Source/WebCore/html/HTMLInputElement.cpp:711
&gt; +        if (hasAttribute(heightAttr) &amp;&amp; isImageButton())
&gt; +            applyAspectRatioToStyle(value, getAttribute(heightAttr), style);

Same here.

&gt; Source/WebCore/html/HTMLInputElement.cpp:716
&gt; +        if (hasAttribute(widthAttr) &amp;&amp; isImageButton())
&gt; +            applyAspectRatioToStyle(getAttribute(widthAttr), value, style);

Same here.

&gt; Source/WebCore/html/HTMLVideoElement.cpp:119
&gt; +        if (hasAttribute(heightAttr))
&gt; +            applyAspectRatioToStyle(value, getAttribute(heightAttr), style);

Same here.

&gt; Source/WebCore/html/HTMLVideoElement.cpp:123
&gt; +        if (hasAttribute(widthAttr))
&gt; +            applyAspectRatioToStyle(getAttribute(widthAttr), value, style);

Same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763000</commentid>
    <comment_count>20</comment_count>
      <attachid>429304</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-05-23 19:56:49 -0700</bug_when>
    <thetext>Comment on attachment 429304
Patch

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

Hi Antti, thanks for the review!

&gt;&gt; Source/WebCore/html/HTMLElement.cpp:641
&gt;&gt; +}
&gt; 
&gt; This could test in the beginning if CSSPropertyAspectRatio is already set and bail out (since it gets called twice, separately for both and width and height).
&gt; 
&gt; It would look nicer (but be slightly less efficient) in the call sites if it didn&apos;t take width/height as parameters but grabbed both here (&apos;applyAspectRatioFromWidthAndHeightAttributesToStyle&apos;)

Done, thanks!

&gt;&gt; Source/WebCore/html/HTMLImageElement.cpp:121
&gt;&gt; +            applyAspectRatioToStyle(value, getAttribute(heightAttr), style);
&gt; 
&gt; The hasAttribute test here is not needed, applyAspectRatioToStyle will just bail out if one is missing.
&gt; This should use attributeWithoutSynchronization() instead of getAttribute.

Done, thanks!

&gt;&gt; Source/WebCore/html/HTMLImageElement.cpp:125
&gt;&gt; +            applyAspectRatioToStyle(getAttribute(widthAttr), value, style);
&gt; 
&gt; Same here.

Done.

&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:711
&gt;&gt; +            applyAspectRatioToStyle(value, getAttribute(heightAttr), style);
&gt; 
&gt; Same here.

Done.

&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:716
&gt;&gt; +            applyAspectRatioToStyle(getAttribute(widthAttr), value, style);
&gt; 
&gt; Same here.

Done.

&gt;&gt; Source/WebCore/html/HTMLVideoElement.cpp:119
&gt;&gt; +            applyAspectRatioToStyle(value, getAttribute(heightAttr), style);
&gt; 
&gt; Same here.

Done.

&gt;&gt; Source/WebCore/html/HTMLVideoElement.cpp:123
&gt;&gt; +            applyAspectRatioToStyle(getAttribute(widthAttr), value, style);
&gt; 
&gt; Same here.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763002</commentid>
    <comment_count>21</comment_count>
      <attachid>429497</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-05-23 20:08:48 -0700</bug_when>
    <thetext>Created attachment 429497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763440</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-24 22:39:21 -0700</bug_when>
    <thetext>Committed r277997 (238110@main): &lt;https://commits.webkit.org/238110@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429497.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429128</attachid>
            <date>2021-05-19 20:07:42 -0700</date>
            <delta_ts>2021-05-20 09:38:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217529-20210520110741.patch</filename>
            <type>text/plain</type>
            <size>14068</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI0OGQzZjY4MjIwMTIy
Zjc5MWVjYjBiNjdjZjA2ZTUyMzI0ZGRiNS4uZmFmNGYwNzVlOTQ5ZWJkZWJlNmViZWVmNjM1N2U1
YzQ3YjdlNmVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTA1LTE5ICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgdGhlIHBhcnNl
ZCB3aWR0aCBhbmQgaGVpZ2h0IGF0dHJpYnV0ZXMgYXMgYSBwcmVzZW50YXRpb25hbCBoaW50IGZv
ciBhc3BlY3QtcmF0aW8gQ1NTIHByb3BlcnR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHVzZXMgQ1NTIHByb3BlcnR5IGFzcGVjdC1y
YXRpbyB0byBpbXBsZW1lbnQgbWFwcGluZyB3aWR0aCAvIGhlaWdodCB0byBpbnRyaW5zaWMgYXNw
ZWN0IHJhdGlvLgorICAgICAgICBTdHlsZSBhZGp1c3QgY2hhbmdlcyB0aGUgdmFsdWUgQ1NTIHBy
b3BlcnR5IGFzcGVjdC1yYXRpbyBieSBnZXR0aW5nIHRoZSB2YWx1ZXMgb2YgYXR0cmlidXRlcyB3
aWR0aCBhbmQgaGVpZ2h0CisgICAgICAgIGlmIGFsbG93ZWQgZnJvbSBFbGVtZW50Ojp1c2VXaWR0
aEhlaWdodEFzQXNwZWN0UmF0aW9IaW50LgorCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVzZVdpZHRoSGVpZ2h0QXNBc3BlY3RSYXRpb0hpbnQg
Y29uc3QpOiBDaGVjayBpZiB0aGUgZWxlbWVudCBpcyBhbGxvd2VkIHRvIHVzZQorICAgICAgICBh
dHRyaWJ1dGVzIHdpZHRoIGFuZCBoZWlnaHQgYXMgYSBoaW50LCBpZiB5ZXMsIHVwZGF0ZSB0aGUg
d2lkdGggYW5kIGhlaWdodCB2YWx1ZXMuCisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnVzZVdpZHRoSGVpZ2h0
QXNBc3BlY3RSYXRpb0hpbnQgY29uc3QpOiA8aW1nPiBpcyBhbGxvd2VkIHRvIHVzZSBpdC4KKyAg
ICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNvbXB1dGVJbnRy
aW5zaWNSYXRpb0luZm9ybWF0aW9uIGNvbnN0KTogVGhlIGludHJpbnNpY1JhdGlvIGlzIGxvZ2lj
YWxBc3BlY3RSYXRpbygpCisgICAgICAgIGlmIGVycm9yIGltYWdlIGlzIG5vdCBzaG93aW5nIGFs
dCB0ZXh0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbk1hcFdpZHRoSGVpZ2h0
VG9Bc3BlY3RSYXRpbyBjb25zdCk6IERlbGV0ZWQuIFJlcGxhY2VkIGJ5IHVzZVdpZHRoSGVpZ2h0
QXNBc3BlY3RSYXRpb0hpbnQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbiBjb25zdCk6
IFJlbW92ZSB0aGUgbGVnYWN5IGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNl
ZDo6aW50cmluc2ljQXNwZWN0UmF0aW9Gcm9tV2lkdGhIZWlnaHQgY29uc3QpOiBEZWxldGVkLiBE
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjYW5NYXBXaWR0aEhlaWdodFRvQXNwZWN0UmF0aW8gY29u
c3QpOiBEZWxldGVkLiBEaXR0by4KKyAgICAgICAgKiBzdHlsZS9TdHlsZUFkanVzdGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBZGp1c3Rlcjo6YWRqdXN0IGNvbnN0KTogSWYgdXNl
V2lkdGhIZWlnaHRBc0FzcGVjdFJhdGlvSGludCgpLCBzZXQgdGhlIHcgLyBoIHZhbHVlIHRvIGFz
cGVjdC1yYXRpby4KKwogMjAyMS0wNS0xNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgU3VwcG9ydCBzZXJpYWxpemluZyBJbWFnZURhdGEgb2JqZWN0IGNvbG9yU3Bh
Y2UgcHJvcGVydHkgaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRl
eCBjNGFhNjY4M2NiZmEzYWQ3NTU4ZTU1MDhkOGJiNGQ4MmZlYjZkNDczLi41N2VkYTE1ZTY0NzVj
YzFhZWJiNWEzMmI3MWJmZjI5NzZmMGViZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTYyNiw2
ICs2MjYsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlOwogCisgICAgdmlydHVhbCBib29sIHVzZVdpZHRoSGVpZ2h0QXNBc3BlY3RSYXRp
b0hpbnQoZG91YmxlJiAvKmF0dHJpYnV0ZVdpZHRoKi8sIGRvdWJsZSYgLyphdHRyaWJ1dGVIZWln
aHQqLykgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogcHJvdGVjdGVkOgogICAgIEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgQ29uc3RydWN0aW9uVHlwZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGQwNmEwMDhlOTE0Y2Vl
MDkyNDg2ZjYzODFjNWI5ZmM0YjA5NDM4NTguLjdiMGMxZTlmN2M5MDBiOTZmNmNhYzFjNGNhODk3
MTFmZjJmZjNjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApA
QCAtNzk3LDQgKzc5NywxMSBAQCBSZWZlcnJlclBvbGljeSBIVE1MSW1hZ2VFbGVtZW50OjpyZWZl
cnJlclBvbGljeSgpIGNvbnN0CiAgICAgcmV0dXJuIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmlu
ZzsKIH0KIAorYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojp1c2VXaWR0aEhlaWdodEFzQXNwZWN0UmF0
aW9IaW50KGRvdWJsZSYgYXR0cmlidXRlV2lkdGgsIGRvdWJsZSYgYXR0cmlidXRlSGVpZ2h0KSBj
b25zdAoreworICAgIGF0dHJpYnV0ZVdpZHRoID0gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50
TnVtYmVyKGdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OndpZHRoQXR0cikpLnZhbHVlT3IoLTEpOwor
ICAgIGF0dHJpYnV0ZUhlaWdodCA9IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihn
ZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpoZWlnaHRBdHRyKSkudmFsdWVPcigtMSk7CisgICAgcmV0
dXJuIGF0dHJpYnV0ZVdpZHRoID49IDAgJiYgYXR0cmlidXRlSGVpZ2h0ID49IDA7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5kZXggNmUxYjMzMjk3MWU1ZTRh
Yzk5ZDRjMWMyMDUyNTk2M2Y3OTYxZDk0MC4uMDliODRiMzFmNWRiMjc5MzJlNTVjYWQzY2FiOTJh
MWU1ZjFjZDI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTE0
MCw2ICsxNDAsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGFsbG93c09yaWVudGF0aW9uT3ZlcnJp
ZGUoKSBjb25zdDsKIAorICAgIGJvb2wgdXNlV2lkdGhIZWlnaHRBc0FzcGVjdFJhdGlvSGludChk
b3VibGUmIC8qYXR0cmlidXRlV2lkdGgqLywgZG91YmxlJiAvKmF0dHJpYnV0ZUhlaWdodCovKSBj
b25zdCBmaW5hbDsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxJbWFnZUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50KiA9IG51bGxwdHIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBiYmRiYzVhNDNlOGRm
YjgzOGY0ZTgzZjdlMmI5NTEzNzM4NTk2NzNlLi5iZWE0NjNiOTllZjcyODM0MDQxMjkwZGYzYTM5
YzQ5YTZiMjgxNDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAK
QEAgLTg0MiwxMiArODQyLDYgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0U2hhZG93Q29udGVu
dChjb25zdCBMYXlvdXRTaXplJiBvbGRTaXplKQogICAgIGNsZWFyQ2hpbGROZWVkc0xheW91dCgp
OwogfQogCi1ib29sIFJlbmRlckltYWdlOjpjYW5NYXBXaWR0aEhlaWdodFRvQXNwZWN0UmF0aW8o
KSBjb25zdAotewotICAgIC8vIFRoZSBhc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0
IG9ubHkgYXBwbGllcyB0byA8aW1nPi4KLSAgICByZXR1cm4gaXM8SFRNTEltYWdlRWxlbWVudD4o
ZWxlbWVudCgpKSAmJiAhaXNTaG93aW5nQWx0VGV4dCgpOwotfQotCiB2b2lkIFJlbmRlckltYWdl
Ojpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbihGbG9hdFNpemUmIGludHJpbnNpY1Np
emUsIGRvdWJsZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFzaG91bGRB
cHBseVNpemVDb250YWlubWVudCgqdGhpcykpOwpAQCAtODY1LDExICs4NTksMTEgQEAgdm9pZCBS
ZW5kZXJJbWFnZTo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oRmxvYXRTaXplJiBp
bnRyaW5zaWNTaXplLCBkb3UKIAogICAgIC8vIERvbid0IGNvbXB1dGUgYW4gaW50cmluc2ljIHJh
dGlvIHRvIHByZXNlcnZlIGhpc3RvcmljYWwgV2ViS2l0IGJlaGF2aW9yIGlmIHdlJ3JlIHBhaW50
aW5nIGFsdCB0ZXh0IGFuZC9vciBhIGJyb2tlbiBpbWFnZS4KICAgICBpZiAoc2hvdWxkRGlzcGxh
eUJyb2tlbkltYWdlSWNvbigpKSB7Ci0gICAgICAgIGlmICghc3R5bGUoKS5oYXNBc3BlY3RSYXRp
bygpKSB7Ci0gICAgICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IGludHJpbnNpY0FzcGVjdFJhdGlv
RnJvbVdpZHRoSGVpZ2h0KCkudmFsdWVPcigxKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IDE7CisgICAgICAgIGlmIChzZXR0aW5ncygp
LmFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkKCkKKyAgICAgICAgICAg
ICYmIHN0eWxlKCkuYXNwZWN0UmF0aW9UeXBlKCkgPT0gQXNwZWN0UmF0aW9UeXBlOjpBdXRvQW5k
UmF0aW8gJiYgIWlzU2hvd2luZ0FsdFRleHQoKSkKKyAgICAgICAgICAgIGludHJpbnNpY1JhdGlv
ID0gc3R5bGUoKS5sb2dpY2FsQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgaW50cmluc2ljUmF0aW8gPSAxOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAppbmRleCA2NzU3NWM2ZTdmZjJhZWQxMTU0YWMw
ZjI5OTk1NmIwZWFkYzJmMDJlLi4xMjk2NzU5MGI0YzMzODRkM2QxNTQxZTNhZDAwODljY2UzZTEz
MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtMTAzLDggKzEw
Myw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgaW1hZ2VDaGFuZ2VkKGltYWdlUmVzb3VyY2UoKS5p
bWFnZVB0cigpKTsKICAgICB9CiAKLSAgICBib29sIGNhbk1hcFdpZHRoSGVpZ2h0VG9Bc3BlY3RS
YXRpbygpIGNvbnN0IG92ZXJyaWRlOwotCiBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVySW1hZ2UiOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDhmZTMzYjAwMzc5
YTBhODBhOGZiODkyNmI2MWJhNmRkNzhkNmU2ODQuLmFkYzc5MmI5ODU3NWFhY2FjYTFhMjllMTY4
MmI5ZWY0ZTA5ZTIyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmNwcApAQCAtNDc4LDIzICs0NzgsNiBAQCBSb3VuZGVkUmVjdCBSZW5kZXJSZXBsYWNlZDo6
cm91bmRlZENvbnRlbnRCb3hSZWN0KCkgY29uc3QKICAgICAgICAgYm9yZGVyTGVmdCgpICsgcGFk
ZGluZ0xlZnQoKSwgYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdodCgpKTsKIH0KIAotT3B0aW9u
YWw8ZG91YmxlPiBSZW5kZXJSZXBsYWNlZDo6aW50cmluc2ljQXNwZWN0UmF0aW9Gcm9tV2lkdGhI
ZWlnaHQoKSBjb25zdAotewotICAgIGlmICghc2V0dGluZ3MoKS5hc3BlY3RSYXRpb09mSW1nRnJv
bVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8ZG91Ymxl
PigpOwotCi0gICAgaWYgKCFjYW5NYXBXaWR0aEhlaWdodFRvQXNwZWN0UmF0aW8oKSkKLSAgICAg
ICAgcmV0dXJuIE9wdGlvbmFsPGRvdWJsZT4oKTsKLQotICAgIEFTU0VSVChlbGVtZW50KCkpOwot
ICAgIGRvdWJsZSBhdHRyaWJ1dGVXaWR0aCA9IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51
bWJlcihlbGVtZW50KCktPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OndpZHRoQXR0cikpLnZhbHVl
T3IoMCk7Ci0gICAgZG91YmxlIGF0dHJpYnV0ZUhlaWdodCA9IHBhcnNlVmFsaWRIVE1MRmxvYXRp
bmdQb2ludE51bWJlcihlbGVtZW50KCktPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhlaWdodEF0
dHIpKS52YWx1ZU9yKDApOwotICAgIGlmIChhdHRyaWJ1dGVXaWR0aCA+IDAgJiYgYXR0cmlidXRl
SGVpZ2h0ID4gMCkKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZVdpZHRoIC8gYXR0cmlidXRlSGVp
Z2h0OwotCi0gICAgcmV0dXJuIE9wdGlvbmFsPGRvdWJsZT4oKTsKLX0KLQogdm9pZCBSZW5kZXJS
ZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oRmxvYXRTaXplJiBpbnRy
aW5zaWNTaXplLCBkb3VibGUmIGludHJpbnNpY1JhdGlvKSBjb25zdAogewogICAgIC8vIElmIHRo
ZXJlJ3MgYW4gZW1iZWRkZWRDb250ZW50Qm94KCkgb2YgYSByZW1vdGUsIHJlZmVyZW5jZWQgZG9j
dW1lbnQgYXZhaWxhYmxlLCB0aGlzIGNvZGUtcGF0aCBzaG91bGQgbmV2ZXIgYmUgdXNlZC4KQEAg
LTUxMCwxMCArNDkzLDggQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1Jh
dGlvSW5mb3JtYXRpb24oRmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLAogICAgIGlmICghaGFzSW50
cmluc2ljQXNwZWN0UmF0aW8oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGludHJpbnNp
Y1NpemUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGludHJpbnNpY1JhdGlvID0gaW50cmluc2ljQXNw
ZWN0UmF0aW9Gcm9tV2lkdGhIZWlnaHQoKS52YWx1ZU9yKDApOworICAgIGlmIChpbnRyaW5zaWNT
aXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGludHJpbnNpY1Jh
dGlvID0gaW50cmluc2ljU2l6ZS53aWR0aCgpIC8gaW50cmluc2ljU2l6ZS5oZWlnaHQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKaW5kZXggOTliYWEwOWY4
OGY5NTJiZGQ1YjU3OGM2MmIzZmRmYmU1YWViZmMwZS4uYzE5ZTQ1YWZkMjU3N2U4NjNjYzNmY2Ex
OTM3ZmMwYjBmY2FjNTU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmgKQEAgLTYzLDEwICs2Myw2IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgY29tcHV0ZUlu
dHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRV
bml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IGZpbmFsOwogCi0gICAgLy8gVGhpcyBmdW5jdGlv
biBkZXRlcm1pbmVzIGlmIHRoZSBvYmplY3QgaXMgYWxsb3dlZCB0byBjb21wdXRlIGFzcGVjdCBy
YXRpbyBmcm9tIGF0dHJpYnV0ZXMgd2lkdGggYW5kIGhlaWdodC4KLSAgICB2aXJ0dWFsIGJvb2wg
Y2FuTWFwV2lkdGhIZWlnaHRUb0FzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBPcHRpb25hbDxkb3VibGU+IGludHJpbnNpY0FzcGVjdFJhdGlvRnJvbVdpZHRoSGVpZ2h0
KCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWluaW11bVJlcGxhY2VkSGVpZ2h0
KCkgY29uc3QgeyByZXR1cm4gMF9sdTsgfQogCiAgICAgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUFkanVzdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIuY3BwCmluZGV4IDI4ZjJhZmExNzkxOTJl
NzNjOTQ5Y2E2NjNiZDUxYjc2N2U1MGY2ZTYuLjFkMGI0YWJmM2M5ODMzMjFlNWZjNzU0MTAxNTIw
Njg4ZjgzMDM4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIuY3BwCkBAIC0z
Nyw5ICszNywxMSBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZVZp
ZXcuaCIKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbWFnZUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1h
cnF1ZWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBh
cnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCkBAIC00
OTYsNiArNDk4LDE1IEBAIHZvaWQgQWRqdXN0ZXI6OmFkanVzdChSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlKiB1c2VyQWdlbnRBcHBlYXJhbmNlCiAgICAgICAgIGFkanVzdEZv
clRleHRBdXRvc2l6aW5nKHN0eWxlLCAqbV9lbGVtZW50KTsKICNlbmRpZgogCisgICAgaWYgKG1f
ZWxlbWVudCAmJiBtX2RvY3VtZW50LnNldHRpbmdzKCkuYXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0
aEFuZEhlaWdodEVuYWJsZWQoKSAmJiBzdHlsZS5hc3BlY3RSYXRpb1R5cGUoKSA9PSBBc3BlY3RS
YXRpb1R5cGU6OkF1dG8pIHsKKyAgICAgICAgZG91YmxlIGF0dHJpYnV0ZVdpZHRoID0gLTE7Cisg
ICAgICAgIGRvdWJsZSBhdHRyaWJ1dGVIZWlnaHQgPSAtMTsKKyAgICAgICAgaWYgKG1fZWxlbWVu
dC0+dXNlV2lkdGhIZWlnaHRBc0FzcGVjdFJhdGlvSGludChhdHRyaWJ1dGVXaWR0aCwgYXR0cmli
dXRlSGVpZ2h0KSkgeworICAgICAgICAgICAgc3R5bGUuc2V0QXNwZWN0UmF0aW9UeXBlKEFzcGVj
dFJhdGlvVHlwZTo6QXV0b0FuZFJhdGlvKTsKKyAgICAgICAgICAgIHN0eWxlLnNldEFzcGVjdFJh
dGlvKGF0dHJpYnV0ZVdpZHRoLCBhdHRyaWJ1dGVIZWlnaHQpOworICAgICAgICB9CisgICAgfQor
CiAgICAgYWRqdXN0Rm9yU2l0ZVNwZWNpZmljUXVpcmtzKHN0eWxlKTsKIH0KIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggZWUxZjY4OTAwZGViNDk4OTViNTBmYmNkZjczMmE5N2Yy
ZDA5MDU4OS4uOTQzMjc1OTk3ZGU4NTY0M2IyYzFkMDEzNDg1MDMwOGJmM2I0NzQ0OSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMTkgIENh
dGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFVzZSB0aGUgcGFy
c2VkIHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlcyBhcyBhIHByZXNlbnRhdGlvbmFsIGhpbnQg
Zm9yIGFzcGVjdC1yYXRpbyBDU1MgcHJvcGVydHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgZXhwZWN0ZWQgcmVzdWx0cyBvZiB0ZXN0
X2NvbXB1dGVkX3N0eWxlIHdoaWNoIGFyZSBwYXNzZWQgbm93LgorCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL3JlcGxhY2VkLWVsZW1lbnRzL2F0dHJpYnV0ZXMt
Zm9yLWVtYmVkZGVkLWNvbnRlbnQtYW5kLWltYWdlcy9pbWctYXNwZWN0LXJhdGlvLWV4cGVjdGVk
LnR4dDoKKwogMjAyMS0wNS0xNiAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIE1ha2UgTWF0aE1MIFdQVHMgd2FpdCBmb3IgYWxsIGZvbnQgbG9hZHMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMvYXR0cmlidXRlcy1mb3ItZW1iZWRkZWQtY29u
dGVudC1hbmQtaW1hZ2VzL2ltZy1hc3BlY3QtcmF0aW8tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9yZXBsYWNl
ZC1lbGVtZW50cy9hdHRyaWJ1dGVzLWZvci1lbWJlZGRlZC1jb250ZW50LWFuZC1pbWFnZXMvaW1n
LWFzcGVjdC1yYXRpby1leHBlY3RlZC50eHQKaW5kZXggMmU3MzIyOWVjMGE2OWNmNjcwZDQ5YjVj
N2YzMWQ5NDhkZTI1ZDcxMy4uYTJjNTZkNzhmYjQ5ZDcyMzZmOTM3MGExYzgxMzViZjkwMjVhOGZk
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3JlbmRlcmluZy9yZXBsYWNlZC1lbGVtZW50cy9hdHRyaWJ1dGVzLWZvci1lbWJlZGRl
ZC1jb250ZW50LWFuZC1pbWFnZXMvaW1nLWFzcGVjdC1yYXRpby1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmlu
Zy9yZXBsYWNlZC1lbGVtZW50cy9hdHRyaWJ1dGVzLWZvci1lbWJlZGRlZC1jb250ZW50LWFuZC1p
bWFnZXMvaW1nLWFzcGVjdC1yYXRpby1leHBlY3RlZC50eHQKQEAgLTQsMTkgKzQsMTkgQEAgUEFT
UyBJbWFnZSB3aWR0aCBhbmQgaGVpZ2h0IGF0dHJpYnV0ZXMgYXJlIHVzZWQgdG8gaW5mZXIgYXNw
ZWN0LXJhdGlvCiBQQVNTIENyZWF0ZSwgYXBwZW5kIGFuZCB0ZXN0IGltbWVkaWF0ZWx5OiA8aW1n
PiB3aXRoIGF0dHJpYnV0ZXMgd2lkdGg9MjUwLCBoZWlnaHQ9MTAwCiBQQVNTIENyZWF0ZSwgYXBw
ZW5kIGFuZCB0ZXN0IGltbWVkaWF0ZWx5OiA8aW1nPiB3aXRoIGF0dHJpYnV0ZXMgd2lkdGg9MC44
LCBoZWlnaHQ9MC4yCiBQQVNTIENyZWF0ZSwgYXBwZW5kIGFuZCB0ZXN0IGltbWVkaWF0ZWx5OiA8
aW1nPiB3aXRoIGF0dHJpYnV0ZXMgd2lkdGg9NTAlIGhlaWdodD0yNSUKLUZBSUwgQ29tcHV0ZWQg
c3R5bGUgdGVzdDogaW1nIHdpdGggeyJ3aWR0aCI6IjEwIiwiaGVpZ2h0IjoiMjAifSBhc3NlcnRf
ZXF1YWxzOiBleHBlY3RlZCAiYXV0byAxMCAvIDIwIiBidXQgZ290ICJhdXRvIgorUEFTUyBDb21w
dXRlZCBzdHlsZSB0ZXN0OiBpbWcgd2l0aCB7IndpZHRoIjoiMTAiLCJoZWlnaHQiOiIyMCJ9CiBG
QUlMIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGlucHV0IHdpdGggeyJ0eXBlIjoiaW1hZ2UiLCJ3aWR0
aCI6IjEwIiwiaGVpZ2h0IjoiMjAifSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYXV0byAxMCAv
IDIwIiBidXQgZ290ICJhdXRvIgogUEFTUyBDb21wdXRlZCBzdHlsZSB0ZXN0OiBpbnB1dCB3aXRo
IHsidHlwZSI6InN1Ym1pdCIsIndpZHRoIjoiMTAiLCJoZWlnaHQiOiIyMCJ9Ci1GQUlMIENvbXB1
dGVkIHN0eWxlIHRlc3Q6IGltZyB3aXRoIHsid2lkdGgiOiIwIiwiaGVpZ2h0IjoiMSJ9IGFzc2Vy
dF9lcXVhbHM6IGV4cGVjdGVkICJhdXRvIDAgLyAxIiBidXQgZ290ICJhdXRvIgorUEFTUyBDb21w
dXRlZCBzdHlsZSB0ZXN0OiBpbWcgd2l0aCB7IndpZHRoIjoiMCIsImhlaWdodCI6IjEifQogRkFJ
TCBDb21wdXRlZCBzdHlsZSB0ZXN0OiBpbnB1dCB3aXRoIHsidHlwZSI6ImltYWdlIiwid2lkdGgi
OiIwIiwiaGVpZ2h0IjoiMSJ9IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhdXRvIDAgLyAxIiBi
dXQgZ290ICJhdXRvIgogUEFTUyBDb21wdXRlZCBzdHlsZSB0ZXN0OiBpbnB1dCB3aXRoIHsidHlw
ZSI6InN1Ym1pdCIsIndpZHRoIjoiMCIsImhlaWdodCI6IjEifQotRkFJTCBDb21wdXRlZCBzdHls
ZSB0ZXN0OiBpbWcgd2l0aCB7IndpZHRoIjoiMSIsImhlaWdodCI6IjAifSBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAiYXV0byAxIC8gMCIgYnV0IGdvdCAiYXV0byIKK1BBU1MgQ29tcHV0ZWQgc3R5
bGUgdGVzdDogaW1nIHdpdGggeyJ3aWR0aCI6IjEiLCJoZWlnaHQiOiIwIn0KIEZBSUwgQ29tcHV0
ZWQgc3R5bGUgdGVzdDogaW5wdXQgd2l0aCB7InR5cGUiOiJpbWFnZSIsIndpZHRoIjoiMSIsImhl
aWdodCI6IjAifSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYXV0byAxIC8gMCIgYnV0IGdvdCAi
YXV0byIKIFBBU1MgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW5wdXQgd2l0aCB7InR5cGUiOiJzdWJt
aXQiLCJ3aWR0aCI6IjEiLCJoZWlnaHQiOiIwIn0KLUZBSUwgQ29tcHV0ZWQgc3R5bGUgdGVzdDog
aW1nIHdpdGggeyJ3aWR0aCI6IjAiLCJoZWlnaHQiOiIwIn0gYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgImF1dG8gMCAvIDAiIGJ1dCBnb3QgImF1dG8iCitQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6
IGltZyB3aXRoIHsid2lkdGgiOiIwIiwiaGVpZ2h0IjoiMCJ9CiBGQUlMIENvbXB1dGVkIHN0eWxl
IHRlc3Q6IGlucHV0IHdpdGggeyJ0eXBlIjoiaW1hZ2UiLCJ3aWR0aCI6IjAiLCJoZWlnaHQiOiIw
In0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1dG8gMCAvIDAiIGJ1dCBnb3QgImF1dG8iCiBQ
QVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGlucHV0IHdpdGggeyJ0eXBlIjoic3VibWl0Iiwid2lk
dGgiOiIwIiwiaGVpZ2h0IjoiMCJ9Ci1GQUlMIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGltZyB3aXRo
IHsid2lkdGgiOiIwLjUiLCJoZWlnaHQiOiIxLjUifSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAi
YXV0byAwLjUgLyAxLjUiIGJ1dCBnb3QgImF1dG8iCitQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6
IGltZyB3aXRoIHsid2lkdGgiOiIwLjUiLCJoZWlnaHQiOiIxLjUifQogRkFJTCBDb21wdXRlZCBz
dHlsZSB0ZXN0OiBpbnB1dCB3aXRoIHsidHlwZSI6ImltYWdlIiwid2lkdGgiOiIwLjUiLCJoZWln
aHQiOiIxLjUifSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYXV0byAwLjUgLyAxLjUiIGJ1dCBn
b3QgImF1dG8iCiBQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGlucHV0IHdpdGggeyJ0eXBlIjoi
c3VibWl0Iiwid2lkdGgiOiIwLjUiLCJoZWlnaHQiOiIxLjUifQogUEFTUyBDb21wdXRlZCBzdHls
ZSB0ZXN0OiBpbWcgd2l0aCB7IndpZHRoIjpudWxsLCJoZWlnaHQiOm51bGx9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429180</attachid>
            <date>2021-05-20 09:39:01 -0700</date>
            <delta_ts>2021-05-21 10:12:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217529-20210521003900.patch</filename>
            <type>text/plain</type>
            <size>14209</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjAxYTRkMDc5OTRjMjBm
YjI3NWQ4MzBhNDA0NWQyY2Q4NThiMzRkMC4uMjQ2N2VkNmRmOTA4OGQ1YmViMzU2OTA4ZDYxZDdm
NDM2NWJmZWI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTA1LTE5ICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgdGhlIHBhcnNl
ZCB3aWR0aCBhbmQgaGVpZ2h0IGF0dHJpYnV0ZXMgYXMgYSBwcmVzZW50YXRpb25hbCBoaW50IGZv
ciBhc3BlY3QtcmF0aW8gQ1NTIHByb3BlcnR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHVzZXMgQ1NTIHByb3BlcnR5IGFzcGVjdC1y
YXRpbyB0byBpbXBsZW1lbnQgbWFwcGluZyB3aWR0aCAvIGhlaWdodCB0byBpbnRyaW5zaWMgYXNw
ZWN0IHJhdGlvIHBlciBbMV0uCisgICAgICAgIFN0eWxlIGFkanVzdCBjaGFuZ2VzIHRoZSB2YWx1
ZSBDU1MgcHJvcGVydHkgYXNwZWN0LXJhdGlvIGJ5IGdldHRpbmcgdGhlIHZhbHVlcyBvZiBhdHRy
aWJ1dGVzIHdpZHRoIGFuZCBoZWlnaHQKKyAgICAgICAgaWYgYWxsb3dlZCBmcm9tIEVsZW1lbnQ6
OnVzZVdpZHRoSGVpZ2h0QXNBc3BlY3RSYXRpb0hpbnQuCisKKyAgICAgICAgWzFdIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvI21hcC10by10aGUtYXNwZWN0LXJhdGlvLXByb3BlcnR5LSh1
c2luZy1kaW1lbnNpb24tcnVsZXMpCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6dXNlV2lkdGhIZWlnaHRBc0FzcGVjdFJhdGlvSGludCBjb25z
dCk6IENoZWNrIGlmIHRoZSBlbGVtZW50IGlzIGFsbG93ZWQgdG8gdXNlCisgICAgICAgIGF0dHJp
YnV0ZXMgd2lkdGggYW5kIGhlaWdodCBhcyBhIGhpbnQsIGlmIHllcywgdXBkYXRlIHRoZSB3aWR0
aCBhbmQgaGVpZ2h0IHZhbHVlcy4KKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6dXNlV2lkdGhIZWlnaHRBc0Fz
cGVjdFJhdGlvSGludCBjb25zdCk6IDxpbWc+IGlzIGFsbG93ZWQgdG8gdXNlIGl0LgorICAgICAg
ICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y29tcHV0ZUludHJpbnNp
Y1JhdGlvSW5mb3JtYXRpb24gY29uc3QpOiBUaGUgaW50cmluc2ljUmF0aW8gaXMgbG9naWNhbEFz
cGVjdFJhdGlvKCkKKyAgICAgICAgaWYgZXJyb3IgaW1hZ2UgaXMgbm90IHNob3dpbmcgYWx0IHRl
eHQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FuTWFwV2lkdGhIZWlnaHRUb0Fz
cGVjdFJhdGlvIGNvbnN0KTogRGVsZXRlZC4gUmVwbGFjZWQgYnkgdXNlV2lkdGhIZWlnaHRBc0Fz
cGVjdFJhdGlvSGludC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uIGNvbnN0KTogUmVt
b3ZlIHRoZSBsZWdhY3kgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpp
bnRyaW5zaWNBc3BlY3RSYXRpb0Zyb21XaWR0aEhlaWdodCBjb25zdCk6IERlbGV0ZWQuIERpdHRv
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyUmVwbGFjZWQ6OmNhbk1hcFdpZHRoSGVpZ2h0VG9Bc3BlY3RSYXRpbyBjb25zdCk6
IERlbGV0ZWQuIERpdHRvLgorICAgICAgICAqIHN0eWxlL1N0eWxlQWRqdXN0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OkFkanVzdGVyOjphZGp1c3QgY29uc3QpOiBJZiB1c2VXaWR0
aEhlaWdodEFzQXNwZWN0UmF0aW9IaW50KCksIHNldCB0aGUgdyAvIGggdmFsdWUgdG8gYXNwZWN0
LXJhdGlvLgorCiAyMDIxLTA1LTE5ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgYSB3YXkgdG8gY3JlYXRlIGAid2hlZWwiYCBldmVudHMgZnJvbSBnZXN0
dXJlL3RvdWNoIGV2ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggYmU4NWJiNDc5ODIwYzkwYzdl
MzE4NzhhY2Q4NWE1ZDk5YTAzNzU3OC4uNTU5NjMzZGY0NzFkYmNhMjM1NTYxNzVkNDFjNzNkMGUw
ZGYxNWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC02MjcsNiArNjI3LDggQEAgcHVibGljOgog
ICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBkZWJ1
Z0Rlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB2aXJ0dWFsIGJvb2wgdXNlV2lk
dGhIZWlnaHRBc0FzcGVjdFJhdGlvSGludChkb3VibGUmIC8qYXR0cmlidXRlV2lkdGgqLywgZG91
YmxlJiAvKmF0dHJpYnV0ZUhlaWdodCovKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiBwcm90
ZWN0ZWQ6CiAgICAgRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBDb25z
dHJ1Y3Rpb25UeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
aW5kZXggZDA2YTAwOGU5MTRjZWUwOTI0ODZmNjM4MWM1YjlmYzRiMDk0Mzg1OC4uN2IwYzFlOWY3
YzkwMGI5NmY2Y2FjMWM0Y2E4OTcxMWZmMmZmM2M2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwCkBAIC03OTcsNCArNzk3LDExIEBAIFJlZmVycmVyUG9saWN5IEhU
TUxJbWFnZUVsZW1lbnQ6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKICAgICByZXR1cm4gUmVmZXJy
ZXJQb2xpY3k6OkVtcHR5U3RyaW5nOwogfQogCitib29sIEhUTUxJbWFnZUVsZW1lbnQ6OnVzZVdp
ZHRoSGVpZ2h0QXNBc3BlY3RSYXRpb0hpbnQoZG91YmxlJiBhdHRyaWJ1dGVXaWR0aCwgZG91Ymxl
JiBhdHRyaWJ1dGVIZWlnaHQpIGNvbnN0Cit7CisgICAgYXR0cmlidXRlV2lkdGggPSBwYXJzZVZh
bGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXIoZ2V0QXR0cmlidXRlKEhUTUxOYW1lczo6d2lkdGhB
dHRyKSkudmFsdWVPcigtMSk7CisgICAgYXR0cmlidXRlSGVpZ2h0ID0gcGFyc2VWYWxpZEhUTUxG
bG9hdGluZ1BvaW50TnVtYmVyKGdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhlaWdodEF0dHIpKS52
YWx1ZU9yKC0xKTsKKyAgICByZXR1cm4gYXR0cmlidXRlV2lkdGggPj0gMCAmJiBhdHRyaWJ1dGVI
ZWlnaHQgPj0gMDsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApp
bmRleCA2ZTFiMzMyOTcxZTVlNGFjOTlkNGMxYzIwNTI1OTYzZjc5NjFkOTQwLi4wOWI4NGIzMWY1
ZGIyNzkzMmU1NWNhZDNjYWI5MmExZTVmMWNkMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuaApAQCAtMTQwLDYgKzE0MCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYWxs
b3dzT3JpZW50YXRpb25PdmVycmlkZSgpIGNvbnN0OwogCisgICAgYm9vbCB1c2VXaWR0aEhlaWdo
dEFzQXNwZWN0UmF0aW9IaW50KGRvdWJsZSYgLyphdHRyaWJ1dGVXaWR0aCovLCBkb3VibGUmIC8q
YXR0cmlidXRlSGVpZ2h0Ki8pIGNvbnN0IGZpbmFsOworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTElt
YWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1l
bnQqID0gbnVsbHB0cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CmluZGV4IGJiZGJjNWE0M2U4ZGZiODM4ZjRlODNmN2UyYjk1MTM3Mzg1OTY3M2UuLmJlYTQ2M2I5
OWVmNzI4MzQwNDEyOTBkZjNhMzljNDlhNmIyODE0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcApAQCAtODQyLDEyICs4NDIsNiBAQCB2b2lkIFJlbmRlckltYWdl
OjpsYXlvdXRTaGFkb3dDb250ZW50KGNvbnN0IExheW91dFNpemUmIG9sZFNpemUpCiAgICAgY2xl
YXJDaGlsZE5lZWRzTGF5b3V0KCk7CiB9CiAKLWJvb2wgUmVuZGVySW1hZ2U6OmNhbk1hcFdpZHRo
SGVpZ2h0VG9Bc3BlY3RSYXRpbygpIGNvbnN0Ci17Ci0gICAgLy8gVGhlIGFzcGVjdFJhdGlvT2ZJ
bWdGcm9tV2lkdGhBbmRIZWlnaHQgb25seSBhcHBsaWVzIHRvIDxpbWc+LgotICAgIHJldHVybiBp
czxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpICYmICFpc1Nob3dpbmdBbHRUZXh0KCk7Ci19
Ci0KIHZvaWQgUmVuZGVySW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKEZs
b2F0U2l6ZSYgaW50cmluc2ljU2l6ZSwgZG91YmxlJiBpbnRyaW5zaWNSYXRpbykgY29uc3QKIHsK
ICAgICBBU1NFUlQoIXNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCp0aGlzKSk7CkBAIC04NjUs
MTEgKzg1OSwxMSBAQCB2b2lkIFJlbmRlckltYWdlOjpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZv
cm1hdGlvbihGbG9hdFNpemUmIGludHJpbnNpY1NpemUsIGRvdQogCiAgICAgLy8gRG9uJ3QgY29t
cHV0ZSBhbiBpbnRyaW5zaWMgcmF0aW8gdG8gcHJlc2VydmUgaGlzdG9yaWNhbCBXZWJLaXQgYmVo
YXZpb3IgaWYgd2UncmUgcGFpbnRpbmcgYWx0IHRleHQgYW5kL29yIGEgYnJva2VuIGltYWdlLgog
ICAgIGlmIChzaG91bGREaXNwbGF5QnJva2VuSW1hZ2VJY29uKCkpIHsKLSAgICAgICAgaWYgKCFz
dHlsZSgpLmhhc0FzcGVjdFJhdGlvKCkpIHsKLSAgICAgICAgICAgIGludHJpbnNpY1JhdGlvID0g
aW50cmluc2ljQXNwZWN0UmF0aW9Gcm9tV2lkdGhIZWlnaHQoKS52YWx1ZU9yKDEpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGludHJpbnNpY1JhdGlvID0gMTsKKyAg
ICAgICAgaWYgKHNldHRpbmdzKCkuYXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVu
YWJsZWQoKQorICAgICAgICAgICAgJiYgc3R5bGUoKS5hc3BlY3RSYXRpb1R5cGUoKSA9PSBBc3Bl
Y3RSYXRpb1R5cGU6OkF1dG9BbmRSYXRpbyAmJiAhaXNTaG93aW5nQWx0VGV4dCgpKQorICAgICAg
ICAgICAgaW50cmluc2ljUmF0aW8gPSBzdHlsZSgpLmxvZ2ljYWxBc3BlY3RSYXRpbygpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IDE7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IDY3
NTc1YzZlN2ZmMmFlZDExNTRhYzBmMjk5OTU2YjBlYWRjMmYwMmUuLjEyOTY3NTkwYjRjMzM4NGQz
ZDE1NDFlM2FkMDA4OWNjZTNlMTMyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oCkBAIC0xMDMsOCArMTAzLDYgQEAgcHJvdGVjdGVkOgogICAgICAgICBpbWFnZUNoYW5n
ZWQoaW1hZ2VSZXNvdXJjZSgpLmltYWdlUHRyKCkpOwogICAgIH0KIAotICAgIGJvb2wgY2FuTWFw
V2lkdGhIZWlnaHRUb0FzcGVjdFJhdGlvKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KIHByaXZhdGU6CiAg
ICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5k
ZXJJbWFnZSI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5j
cHAKaW5kZXggOGZlMzNiMDAzNzlhMGE4MGE4ZmI4OTI2YjYxYmE2ZGQ3OGQ2ZTY4NC4uYWRjNzky
Yjk4NTc1YWFjYWNhMWEyOWUxNjgyYjllZjRlMDllMjJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC00NzgsMjMgKzQ3OCw2IEBAIFJvdW5kZWRS
ZWN0IFJlbmRlclJlcGxhY2VkOjpyb3VuZGVkQ29udGVudEJveFJlY3QoKSBjb25zdAogICAgICAg
ICBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJSaWdodCgpICsgcGFkZGluZ1Jp
Z2h0KCkpOwogfQogCi1PcHRpb25hbDxkb3VibGU+IFJlbmRlclJlcGxhY2VkOjppbnRyaW5zaWNB
c3BlY3RSYXRpb0Zyb21XaWR0aEhlaWdodCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFzZXR0aW5ncygp
LmFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkKCkpCi0gICAgICAgIHJl
dHVybiBPcHRpb25hbDxkb3VibGU+KCk7Ci0KLSAgICBpZiAoIWNhbk1hcFdpZHRoSGVpZ2h0VG9B
c3BlY3RSYXRpbygpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8ZG91YmxlPigpOwotCi0gICAg
QVNTRVJUKGVsZW1lbnQoKSk7Ci0gICAgZG91YmxlIGF0dHJpYnV0ZVdpZHRoID0gcGFyc2VWYWxp
ZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKGVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1l
czo6d2lkdGhBdHRyKSkudmFsdWVPcigwKTsKLSAgICBkb3VibGUgYXR0cmlidXRlSGVpZ2h0ID0g
cGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKGVsZW1lbnQoKS0+Z2V0QXR0cmlidXRl
KEhUTUxOYW1lczo6aGVpZ2h0QXR0cikpLnZhbHVlT3IoMCk7Ci0gICAgaWYgKGF0dHJpYnV0ZVdp
ZHRoID4gMCAmJiBhdHRyaWJ1dGVIZWlnaHQgPiAwKQotICAgICAgICByZXR1cm4gYXR0cmlidXRl
V2lkdGggLyBhdHRyaWJ1dGVIZWlnaHQ7Ci0KLSAgICByZXR1cm4gT3B0aW9uYWw8ZG91YmxlPigp
OwotfQotCiB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1h
dGlvbihGbG9hdFNpemUmIGludHJpbnNpY1NpemUsIGRvdWJsZSYgaW50cmluc2ljUmF0aW8pIGNv
bnN0CiB7CiAgICAgLy8gSWYgdGhlcmUncyBhbiBlbWJlZGRlZENvbnRlbnRCb3goKSBvZiBhIHJl
bW90ZSwgcmVmZXJlbmNlZCBkb2N1bWVudCBhdmFpbGFibGUsIHRoaXMgY29kZS1wYXRoIHNob3Vs
ZCBuZXZlciBiZSB1c2VkLgpAQCAtNTEwLDEwICs0OTMsOCBAQCB2b2lkIFJlbmRlclJlcGxhY2Vk
Ojpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbihGbG9hdFNpemUmIGludHJpbnNpY1Np
emUsCiAgICAgaWYgKCFoYXNJbnRyaW5zaWNBc3BlY3RSYXRpbygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoaW50cmluc2ljU2l6ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaW50cmluc2lj
UmF0aW8gPSBpbnRyaW5zaWNBc3BlY3RSYXRpb0Zyb21XaWR0aEhlaWdodCgpLnZhbHVlT3IoMCk7
CisgICAgaWYgKGludHJpbnNpY1NpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAg
fQogCiAgICAgaW50cmluc2ljUmF0aW8gPSBpbnRyaW5zaWNTaXplLndpZHRoKCkgLyBpbnRyaW5z
aWNTaXplLmhlaWdodCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuaAppbmRleCA5OWJhYTA5Zjg4Zjk1MmJkZDViNTc4YzYyYjNmZGZiZTVhZWJmYzBlLi5jMTll
NDVhZmQyNTc3ZTg2M2NjM2ZjYTE5MzdmYzBiMGZjYWM1NTU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaApAQCAtNjMsMTAgKzYzLDYgQEAgcHJvdGVjdGVkOgog
CiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5M
b2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3QgZmluYWw7CiAK
LSAgICAvLyBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgaWYgdGhlIG9iamVjdCBpcyBhbGxvd2Vk
IHRvIGNvbXB1dGUgYXNwZWN0IHJhdGlvIGZyb20gYXR0cmlidXRlcyB3aWR0aCBhbmQgaGVpZ2h0
LgotICAgIHZpcnR1YWwgYm9vbCBjYW5NYXBXaWR0aEhlaWdodFRvQXNwZWN0UmF0aW8oKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIE9wdGlvbmFsPGRvdWJsZT4gaW50cmluc2ljQXNwZWN0
UmF0aW9Gcm9tV2lkdGhIZWlnaHQoKSBjb25zdDsKLQogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBt
aW5pbXVtUmVwbGFjZWRIZWlnaHQoKSBjb25zdCB7IHJldHVybiAwX2x1OyB9CiAKICAgICBib29s
IGlzU2VsZWN0ZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlQWRqdXN0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5jcHAK
aW5kZXggMjhmMmFmYTE3OTE5MmU3M2M5NDljYTY2M2JkNTFiNzY3ZTUwZjZlNi4uMWQwYjRhYmYz
Yzk4MzMyMWU1ZmM3NTQxMDE1MjA2ODhmODMwMzhiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVBZGp1c3Rlci5jcHAKQEAgLTM3LDkgKzM3LDExIEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCisj
aW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MTWFycXVlZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFNsb3RFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0
QXJlYUVsZW1lbnQuaCIKQEAgLTQ5Niw2ICs0OTgsMTUgQEAgdm9pZCBBZGp1c3Rlcjo6YWRqdXN0
KFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHVzZXJBZ2VudEFwcGVhcmFu
Y2UKICAgICAgICAgYWRqdXN0Rm9yVGV4dEF1dG9zaXppbmcoc3R5bGUsICptX2VsZW1lbnQpOwog
I2VuZGlmCiAKKyAgICBpZiAobV9lbGVtZW50ICYmIG1fZG9jdW1lbnQuc2V0dGluZ3MoKS5hc3Bl
Y3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCgpICYmIHN0eWxlLmFzcGVjdFJh
dGlvVHlwZSgpID09IEFzcGVjdFJhdGlvVHlwZTo6QXV0bykgeworICAgICAgICBkb3VibGUgYXR0
cmlidXRlV2lkdGggPSAtMTsKKyAgICAgICAgZG91YmxlIGF0dHJpYnV0ZUhlaWdodCA9IC0xOwor
ICAgICAgICBpZiAobV9lbGVtZW50LT51c2VXaWR0aEhlaWdodEFzQXNwZWN0UmF0aW9IaW50KGF0
dHJpYnV0ZVdpZHRoLCBhdHRyaWJ1dGVIZWlnaHQpKSB7CisgICAgICAgICAgICBzdHlsZS5zZXRB
c3BlY3RSYXRpb1R5cGUoQXNwZWN0UmF0aW9UeXBlOjpBdXRvQW5kUmF0aW8pOworICAgICAgICAg
ICAgc3R5bGUuc2V0QXNwZWN0UmF0aW8oYXR0cmlidXRlV2lkdGgsIGF0dHJpYnV0ZUhlaWdodCk7
CisgICAgICAgIH0KKyAgICB9CisKICAgICBhZGp1c3RGb3JTaXRlU3BlY2lmaWNRdWlya3Moc3R5
bGUpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBhYzMyNzFmMzU4MzNm
NmU5OTY1NWM0ZTViOTQ5OTcwYTgyNWIzNTFjLi44MTMxN2QyODkwY2UyZjA3YTk4ZGRlZTRlMmRk
MmZjM2NmNGVlMjY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAyMS0wNS0xOSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisK
KyAgICAgICAgVXNlIHRoZSBwYXJzZWQgd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzIGFzIGEg
cHJlc2VudGF0aW9uYWwgaGludCBmb3IgYXNwZWN0LXJhdGlvIENTUyBwcm9wZXJ0eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTI5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSBleHBl
Y3RlZCByZXN1bHRzIG9mIHRlc3RfY29tcHV0ZWRfc3R5bGUgd2hpY2ggYXJlIHBhc3NlZCBub3cu
CisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvcmVwbGFjZWQt
ZWxlbWVudHMvYXR0cmlidXRlcy1mb3ItZW1iZWRkZWQtY29udGVudC1hbmQtaW1hZ2VzL2ltZy1h
c3BlY3QtcmF0aW8tZXhwZWN0ZWQudHh0OgorCiAyMDIxLTA1LTE5ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIE5h
dmlnYXRpb24gVGltaW5nIExldmVsIDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMv
YXR0cmlidXRlcy1mb3ItZW1iZWRkZWQtY29udGVudC1hbmQtaW1hZ2VzL2ltZy1hc3BlY3QtcmF0
aW8tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3JlbmRlcmluZy9yZXBsYWNlZC1lbGVtZW50cy9hdHRyaWJ1dGVzLWZvci1lbWJl
ZGRlZC1jb250ZW50LWFuZC1pbWFnZXMvaW1nLWFzcGVjdC1yYXRpby1leHBlY3RlZC50eHQKaW5k
ZXggMmU3MzIyOWVjMGE2OWNmNjcwZDQ5YjVjN2YzMWQ5NDhkZTI1ZDcxMy4uYTJjNTZkNzhmYjQ5
ZDcyMzZmOTM3MGExYzgxMzViZjkwMjVhOGZkOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9yZXBsYWNlZC1lbGVt
ZW50cy9hdHRyaWJ1dGVzLWZvci1lbWJlZGRlZC1jb250ZW50LWFuZC1pbWFnZXMvaW1nLWFzcGVj
dC1yYXRpby1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9yZXBsYWNlZC1lbGVtZW50cy9hdHRyaWJ1dGVz
LWZvci1lbWJlZGRlZC1jb250ZW50LWFuZC1pbWFnZXMvaW1nLWFzcGVjdC1yYXRpby1leHBlY3Rl
ZC50eHQKQEAgLTQsMTkgKzQsMTkgQEAgUEFTUyBJbWFnZSB3aWR0aCBhbmQgaGVpZ2h0IGF0dHJp
YnV0ZXMgYXJlIHVzZWQgdG8gaW5mZXIgYXNwZWN0LXJhdGlvCiBQQVNTIENyZWF0ZSwgYXBwZW5k
IGFuZCB0ZXN0IGltbWVkaWF0ZWx5OiA8aW1nPiB3aXRoIGF0dHJpYnV0ZXMgd2lkdGg9MjUwLCBo
ZWlnaHQ9MTAwCiBQQVNTIENyZWF0ZSwgYXBwZW5kIGFuZCB0ZXN0IGltbWVkaWF0ZWx5OiA8aW1n
PiB3aXRoIGF0dHJpYnV0ZXMgd2lkdGg9MC44LCBoZWlnaHQ9MC4yCiBQQVNTIENyZWF0ZSwgYXBw
ZW5kIGFuZCB0ZXN0IGltbWVkaWF0ZWx5OiA8aW1nPiB3aXRoIGF0dHJpYnV0ZXMgd2lkdGg9NTAl
IGhlaWdodD0yNSUKLUZBSUwgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW1nIHdpdGggeyJ3aWR0aCI6
IjEwIiwiaGVpZ2h0IjoiMjAifSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYXV0byAxMCAvIDIw
IiBidXQgZ290ICJhdXRvIgorUEFTUyBDb21wdXRlZCBzdHlsZSB0ZXN0OiBpbWcgd2l0aCB7Indp
ZHRoIjoiMTAiLCJoZWlnaHQiOiIyMCJ9CiBGQUlMIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGlucHV0
IHdpdGggeyJ0eXBlIjoiaW1hZ2UiLCJ3aWR0aCI6IjEwIiwiaGVpZ2h0IjoiMjAifSBhc3NlcnRf
ZXF1YWxzOiBleHBlY3RlZCAiYXV0byAxMCAvIDIwIiBidXQgZ290ICJhdXRvIgogUEFTUyBDb21w
dXRlZCBzdHlsZSB0ZXN0OiBpbnB1dCB3aXRoIHsidHlwZSI6InN1Ym1pdCIsIndpZHRoIjoiMTAi
LCJoZWlnaHQiOiIyMCJ9Ci1GQUlMIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGltZyB3aXRoIHsid2lk
dGgiOiIwIiwiaGVpZ2h0IjoiMSJ9IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhdXRvIDAgLyAx
IiBidXQgZ290ICJhdXRvIgorUEFTUyBDb21wdXRlZCBzdHlsZSB0ZXN0OiBpbWcgd2l0aCB7Indp
ZHRoIjoiMCIsImhlaWdodCI6IjEifQogRkFJTCBDb21wdXRlZCBzdHlsZSB0ZXN0OiBpbnB1dCB3
aXRoIHsidHlwZSI6ImltYWdlIiwid2lkdGgiOiIwIiwiaGVpZ2h0IjoiMSJ9IGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkICJhdXRvIDAgLyAxIiBidXQgZ290ICJhdXRvIgogUEFTUyBDb21wdXRlZCBz
dHlsZSB0ZXN0OiBpbnB1dCB3aXRoIHsidHlwZSI6InN1Ym1pdCIsIndpZHRoIjoiMCIsImhlaWdo
dCI6IjEifQotRkFJTCBDb21wdXRlZCBzdHlsZSB0ZXN0OiBpbWcgd2l0aCB7IndpZHRoIjoiMSIs
ImhlaWdodCI6IjAifSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYXV0byAxIC8gMCIgYnV0IGdv
dCAiYXV0byIKK1BBU1MgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW1nIHdpdGggeyJ3aWR0aCI6IjEi
LCJoZWlnaHQiOiIwIn0KIEZBSUwgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW5wdXQgd2l0aCB7InR5
cGUiOiJpbWFnZSIsIndpZHRoIjoiMSIsImhlaWdodCI6IjAifSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiYXV0byAxIC8gMCIgYnV0IGdvdCAiYXV0byIKIFBBU1MgQ29tcHV0ZWQgc3R5bGUgdGVz
dDogaW5wdXQgd2l0aCB7InR5cGUiOiJzdWJtaXQiLCJ3aWR0aCI6IjEiLCJoZWlnaHQiOiIwIn0K
LUZBSUwgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW1nIHdpdGggeyJ3aWR0aCI6IjAiLCJoZWlnaHQi
OiIwIn0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1dG8gMCAvIDAiIGJ1dCBnb3QgImF1dG8i
CitQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGltZyB3aXRoIHsid2lkdGgiOiIwIiwiaGVpZ2h0
IjoiMCJ9CiBGQUlMIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGlucHV0IHdpdGggeyJ0eXBlIjoiaW1h
Z2UiLCJ3aWR0aCI6IjAiLCJoZWlnaHQiOiIwIn0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1
dG8gMCAvIDAiIGJ1dCBnb3QgImF1dG8iCiBQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGlucHV0
IHdpdGggeyJ0eXBlIjoic3VibWl0Iiwid2lkdGgiOiIwIiwiaGVpZ2h0IjoiMCJ9Ci1GQUlMIENv
bXB1dGVkIHN0eWxlIHRlc3Q6IGltZyB3aXRoIHsid2lkdGgiOiIwLjUiLCJoZWlnaHQiOiIxLjUi
fSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYXV0byAwLjUgLyAxLjUiIGJ1dCBnb3QgImF1dG8i
CitQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGltZyB3aXRoIHsid2lkdGgiOiIwLjUiLCJoZWln
aHQiOiIxLjUifQogRkFJTCBDb21wdXRlZCBzdHlsZSB0ZXN0OiBpbnB1dCB3aXRoIHsidHlwZSI6
ImltYWdlIiwid2lkdGgiOiIwLjUiLCJoZWlnaHQiOiIxLjUifSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiYXV0byAwLjUgLyAxLjUiIGJ1dCBnb3QgImF1dG8iCiBQQVNTIENvbXB1dGVkIHN0eWxl
IHRlc3Q6IGlucHV0IHdpdGggeyJ0eXBlIjoic3VibWl0Iiwid2lkdGgiOiIwLjUiLCJoZWlnaHQi
OiIxLjUifQogUEFTUyBDb21wdXRlZCBzdHlsZSB0ZXN0OiBpbWcgd2l0aCB7IndpZHRoIjpudWxs
LCJoZWlnaHQiOm51bGx9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429304</attachid>
            <date>2021-05-21 10:12:48 -0700</date>
            <delta_ts>2021-05-23 20:08:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217529-20210522011246.patch</filename>
            <type>text/plain</type>
            <size>19469</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjAxYTRkMDc5OTRjMjBm
YjI3NWQ4MzBhNDA0NWQyY2Q4NThiMzRkMC4uNDJkY2E5Mjc2YjkwYWU4MTc1Y2I3ODA2OWU5ZTFk
ZDkyZWZmOTYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA1LTIxICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgdGhlIHBhcnNl
ZCB3aWR0aCBhbmQgaGVpZ2h0IGF0dHJpYnV0ZXMgYXMgYSBwcmVzZW50YXRpb25hbCBoaW50IGZv
ciBhc3BlY3QtcmF0aW8gQ1NTIHByb3BlcnR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgZmVhdHVyZSAibWFwcGluZyBhdHRyaWJ1dGVzIHdpZHRo
IGFuZCBoZWlnaHQgdG8gYXNwZWN0IHJhdGlvIiBjdXJyZW50bHkgaXMgaGFuZGxlZCBieSBSZW5k
ZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24uCisgICAgICAgIEhv
d2V2ZXIsIHBlciBbMV0sIHRoZSBub24tbmVnYXRpdmUgd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1
dGVzIGFyZSBleHBlY3RlZCB0byBiZSB1c2VkIGFzIGEgcHJlc2VudGF0aW9uYWwgaGludCBmb3Ig
dGhlIGFzcGVjdC1yYXRpbyBwcm9wZXJ0eS4KKyAgICAgICAgVGhpcyBwYXRjaCBhZGRlcyBIVE1M
RWxlbWVudDo6YXBwbHlBc3BlY3RSYXRpb1RvU3R5bGUgdG8gYXBwbHkgdGhlIGF0dHJpYnV0ZXMg
dG8gbV9wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZS4KKyAgICAgICAgQWxzbyB0aGlzIHBhdGNo
IHN1cHBvcnRzIHRoZSBmZWF0dXJlIGZvciA8dmlkZW8+IGFuZCA8aW5wdXQ+IHdpdGggdHlwZT0i
aW1hZ2UiLgorCisgICAgICAgIFsxXSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNtYXAt
dG8tdGhlLWFzcGVjdC1yYXRpby1wcm9wZXJ0eS0odXNpbmctZGltZW5zaW9uLXJ1bGVzKQorCisg
ICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxl
bWVudDo6YXBwbHlBc3BlY3RSYXRpb1RvU3R5bGUpOiBBcHBseSAiYXV0byBhdHRyaWJ1dGVXaWR0
aCAvIGF0dHJpYnV0ZUhlaWdodCIgdG8gYXNwZWN0UmF0aW8gb2Ygc3R5bGUgaWYgdGhleSBhcmVu
J3QgbmVnYXRpdmUuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVt
ZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUpOiBVc2UgYXR0cmlidXRl
cyB3aWR0aCBhbmQgaGVpZ2h0IGFzIGEgcHJlc2VudGF0aW9uYWwgaGludCBmb3IgYXNwZWN0LXJh
dGlvLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW5wdXRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1
dGUpOiBJZiBpc0ltYWdlQnV0dG9uKCksIGNvbGxlY3QgYXR0cmlidXRlcyB3aWR0aCBhbmQgaGVp
Z2h0IGFzIGFzcGVjdC1yYXRpbyBvZiBtX3ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlLgorICAg
ICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUpOiBEaXR0
by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uIGNvbnN0KTog
VGhlIGludHJpbnNpY1JhdGlvIGlzIGxvZ2ljYWxBc3BlY3RSYXRpbygpCisgICAgICAgIGlmIGVy
cm9yIGltYWdlIGlzIG5vdCBzaG93aW5nIGFsdCB0ZXh0LgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2U6OmNhbk1hcFdpZHRoSGVpZ2h0VG9Bc3BlY3RSYXRpbyBjb25zdCk6IERlbGV0ZWQu
IFJlbW92ZSB0aGUgbGVnYWN5IGNvZGUuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdl
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbiBj
b25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmludHJpbnNp
Y0FzcGVjdFJhdGlvRnJvbVdpZHRoSGVpZ2h0IGNvbnN0KTogRGVsZXRlZC4gRGl0dG8uCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZXBsYWNlZDo6Y2FuTWFwV2lkdGhIZWlnaHRUb0FzcGVjdFJhdGlvIGNvbnN0KTogRGVsZXRl
ZC4gRGl0dG8uCisKIDIwMjEtMDUtMTkgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBhIHdheSB0byBjcmVhdGUgYCJ3aGVlbCJgIGV2ZW50cyBmcm9tIGdl
c3R1cmUvdG91Y2ggZXZlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDRl
ODdjYmM1MDc3NmQ3NGY1NjIyMzJkZjVlYTdmNmQwY2UwNTc3ODMuLmFkNGY2YzNjZDAwOGFhYzQ0
YmUxNjY2MjU1MzRiOTdmOTZhZTEyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ1NTTWFya3VwLmgiCiAjaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRl
ICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJD
aHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKQEAgLTYyMCw2ICs2MjEsMjUgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNldE91dGVyVGV4dChjb25zdCBTdHJpbmcm
IHRleHQpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAordm9pZCBIVE1MRWxlbWVudDo6YXBwbHlBc3Bl
Y3RSYXRpb1RvU3R5bGUoY29uc3QgQXRvbVN0cmluZyYgd2lkdGhBdHRyaWJ1dGUsIGNvbnN0IEF0
b21TdHJpbmcmIGhlaWdodEF0dHJpYnV0ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUp
Cit7CisgICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkuYXNwZWN0UmF0aW9PZkltZ0Zyb21X
aWR0aEFuZEhlaWdodEVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZG91YmxlIHdp
ZHRoID0gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKHdpZHRoQXR0cmlidXRlKS52
YWx1ZU9yKC0xKTsKKyAgICBkb3VibGUgaGVpZ2h0ID0gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1Bv
aW50TnVtYmVyKGhlaWdodEF0dHJpYnV0ZSkudmFsdWVPcigtMSk7CisgICAgaWYgKHdpZHRoIDwg
MCB8fCBoZWlnaHQgPCAwKQorICAgICAgICByZXR1cm47CisgICAgYXV0byByYXRpb0xpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJhdGVkKCk7CisgICAgcmF0aW9MaXN0LT5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSh3aWR0aCwgQ1NTVW5pdFR5
cGU6OkNTU19OVU1CRVIpKTsKKyAgICByYXRpb0xpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZVZhbHVlKGhlaWdodCwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsK
KyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Cisg
ICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlQXV0bykpOworICAgIGxpc3QtPmFwcGVuZChyYXRpb0xpc3QpOworCisg
ICAgc3R5bGUuc2V0UHJvcGVydHkoQ1NTUHJvcGVydHlBc3BlY3RSYXRpbywgUmVmUHRyPENTU1Zh
bHVlPihXVEZNb3ZlKGxpc3QpKSk7Cit9CisKIHZvaWQgSFRNTEVsZW1lbnQ6OmFwcGx5QWxpZ25t
ZW50QXR0cmlidXRlVG9TdHlsZShjb25zdCBBdG9tU3RyaW5nJiBhbGlnbm1lbnQsIE11dGFibGVT
dHlsZVByb3BlcnRpZXMmIHN0eWxlKQogewogICAgIC8vIFZlcnRpY2FsIGFsaWdubWVudCB3aXRo
IHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgYmFzZWxpbmUgb2YgdGhlIHRleHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuaAppbmRleCA5MTAwYWFlZGJmYzJjNTQ1ZDY1ODcwM2Y5MjlkZDE0MTI5MDQ1
M2YyLi42YWI5YzQ5NjE4NzAxNGQ3YzgxZjY4YjJhMzEyZDhmMDExNDIyZTM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5oCkBAIC0xNTQsNiArMTU0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgYWRkSFRNTExlbmd0aFRvU3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYsIENTU1Byb3Bl
cnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHZvaWQgYWRkSFRNTENvbG9yVG9TdHls
ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBj
b2xvcik7CiAKKyAgICB2b2lkIGFwcGx5QXNwZWN0UmF0aW9Ub1N0eWxlKGNvbnN0IEF0b21TdHJp
bmcmIHdpZHRoQXR0cmlidXRlLCBjb25zdCBBdG9tU3RyaW5nJiBoZWlnaHRBdHRyaWJ1dGUsIE11
dGFibGVTdHlsZVByb3BlcnRpZXMmKTsKICAgICB2b2lkIGFwcGx5QWxpZ25tZW50QXR0cmlidXRl
VG9TdHlsZShjb25zdCBBdG9tU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpOwogICAg
IHZvaWQgYXBwbHlCb3JkZXJBdHRyaWJ1dGVUb1N0eWxlKGNvbnN0IEF0b21TdHJpbmcmLCBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwCmluZGV4IGQwNmEwMDhlOTE0Y2VlMDkyNDg2ZjYzODFjNWI5ZmM0YjA5NDM4NTguLjc3
YTY2ZDQ4YzFlNzIxN2QwODQxZTYxY2ZmNDgzMjAwYWMyOWU2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMTE1LDExICsxMTUsMTUgQEAgYm9vbCBIVE1M
SW1hZ2VFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lKSBjb25zdAogCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclBy
ZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
U3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7Ci0gICAgaWYg
KG5hbWUgPT0gd2lkdGhBdHRyKQorICAgIGlmIChuYW1lID09IHdpZHRoQXR0cikgewogICAgICAg
ICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgdmFsdWUpOwot
ICAgIGVsc2UgaWYgKG5hbWUgPT0gaGVpZ2h0QXR0cikKKyAgICAgICAgaWYgKGhhc0F0dHJpYnV0
ZShoZWlnaHRBdHRyKSkKKyAgICAgICAgICAgIGFwcGx5QXNwZWN0UmF0aW9Ub1N0eWxlKHZhbHVl
LCBnZXRBdHRyaWJ1dGUoaGVpZ2h0QXR0ciksIHN0eWxlKTsKKyAgICB9IGVsc2UgaWYgKG5hbWUg
PT0gaGVpZ2h0QXR0cikgewogICAgICAgICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NT
UHJvcGVydHlIZWlnaHQsIHZhbHVlKTsKLSAgICBlbHNlIGlmIChuYW1lID09IGJvcmRlckF0dHIp
CisgICAgICAgIGlmIChoYXNBdHRyaWJ1dGUod2lkdGhBdHRyKSkKKyAgICAgICAgICAgIGFwcGx5
QXNwZWN0UmF0aW9Ub1N0eWxlKGdldEF0dHJpYnV0ZSh3aWR0aEF0dHIpLCB2YWx1ZSwgc3R5bGUp
OworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBib3JkZXJBdHRyKQogICAgICAgICBhcHBseUJvcmRl
ckF0dHJpYnV0ZVRvU3R5bGUodmFsdWUsIHN0eWxlKTsKICAgICBlbHNlIGlmIChuYW1lID09IHZz
cGFjZUF0dHIpIHsKICAgICAgICAgYWRkSFRNTExlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3Bl
cnR5TWFyZ2luVG9wLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAppbmRleCA2YTRmYTNjOTRmZmY0ZjEzZWZhYjVkYzdhOGQxODM0YTFkZGI4ZWVhLi4zODQ5
NDc3MmQ5MmE1MDBlZTdmMTAwZmYzZTMwM2Y3MGQzZWFkMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTcwNyw5ICs3MDcsMTMgQEAgdm9pZCBIVE1MSW5w
dXRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gd2lkdGhBdHRyKSB7CiAgICAgICAg
IGlmIChtX2lucHV0VHlwZS0+c2hvdWxkUmVzcGVjdEhlaWdodEFuZFdpZHRoQXR0cmlidXRlcygp
KQogICAgICAgICAgICAgYWRkSFRNTExlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lk
dGgsIHZhbHVlKTsKKyAgICAgICAgaWYgKGhhc0F0dHJpYnV0ZShoZWlnaHRBdHRyKSAmJiBpc0lt
YWdlQnV0dG9uKCkpCisgICAgICAgICAgICBhcHBseUFzcGVjdFJhdGlvVG9TdHlsZSh2YWx1ZSwg
Z2V0QXR0cmlidXRlKGhlaWdodEF0dHIpLCBzdHlsZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09
IGhlaWdodEF0dHIpIHsKICAgICAgICAgaWYgKG1faW5wdXRUeXBlLT5zaG91bGRSZXNwZWN0SGVp
Z2h0QW5kV2lkdGhBdHRyaWJ1dGVzKCkpCiAgICAgICAgICAgICBhZGRIVE1MTGVuZ3RoVG9TdHls
ZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIHZhbHVlKTsKKyAgICAgICAgaWYgKGhhc0F0dHJp
YnV0ZSh3aWR0aEF0dHIpICYmIGlzSW1hZ2VCdXR0b24oKSkKKyAgICAgICAgICAgIGFwcGx5QXNw
ZWN0UmF0aW9Ub1N0eWxlKGdldEF0dHJpYnV0ZSh3aWR0aEF0dHIpLCB2YWx1ZSwgc3R5bGUpOwog
ICAgIH0gZWxzZSBpZiAobmFtZSA9PSBib3JkZXJBdHRyICYmIGlzSW1hZ2VCdXR0b24oKSkKICAg
ICAgICAgYXBwbHlCb3JkZXJBdHRyaWJ1dGVUb1N0eWxlKHZhbHVlLCBzdHlsZSk7CiAgICAgZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggMmVkY2M5Y2Ix
YzFjYWIwYWJlMTFhOTlhOTg2MTg2MzcxMmYxMDJhZC4uM2QyYmE3NzNmZjU4ZWI5YjFjZGQzM2M4
MTlmZDY5MmNjMjMwOWVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwCkBAIC0xMTMsMTEgKzExMywxNSBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZEF0dGFj
aFJlbmRlcmVycygpCiAKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJl
c2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21T
dHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKIHsKLSAgICBpZiAo
bmFtZSA9PSB3aWR0aEF0dHIpCisgICAgaWYgKG5hbWUgPT0gd2lkdGhBdHRyKSB7CiAgICAgICAg
IGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCB2YWx1ZSk7Ci0g
ICAgZWxzZSBpZiAobmFtZSA9PSBoZWlnaHRBdHRyKQorICAgICAgICBpZiAoaGFzQXR0cmlidXRl
KGhlaWdodEF0dHIpKQorICAgICAgICAgICAgYXBwbHlBc3BlY3RSYXRpb1RvU3R5bGUodmFsdWUs
IGdldEF0dHJpYnV0ZShoZWlnaHRBdHRyKSwgc3R5bGUpOworICAgIH0gZWxzZSBpZiAobmFtZSA9
PSBoZWlnaHRBdHRyKSB7CiAgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQ
cm9wZXJ0eUhlaWdodCwgdmFsdWUpOwotICAgIGVsc2UKKyAgICAgICAgaWYgKGhhc0F0dHJpYnV0
ZSh3aWR0aEF0dHIpKQorICAgICAgICAgICAgYXBwbHlBc3BlY3RSYXRpb1RvU3R5bGUoZ2V0QXR0
cmlidXRlKHdpZHRoQXR0ciksIHZhbHVlLCBzdHlsZSk7CisgICAgfSBlbHNlCiAgICAgICAgIEhU
TUxNZWRpYUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1l
LCB2YWx1ZSwgc3R5bGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcAppbmRleCBiYmRiYzVhNDNlOGRmYjgzOGY0ZTgzZjdlMmI5NTEzNzM4NTk2NzNlLi5iZWE0
NjNiOTllZjcyODM0MDQxMjkwZGYzYTM5YzQ5YTZiMjgxNDZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTg0MiwxMiArODQyLDYgQEAgdm9pZCBSZW5kZXJJ
bWFnZTo6bGF5b3V0U2hhZG93Q29udGVudChjb25zdCBMYXlvdXRTaXplJiBvbGRTaXplKQogICAg
IGNsZWFyQ2hpbGROZWVkc0xheW91dCgpOwogfQogCi1ib29sIFJlbmRlckltYWdlOjpjYW5NYXBX
aWR0aEhlaWdodFRvQXNwZWN0UmF0aW8oKSBjb25zdAotewotICAgIC8vIFRoZSBhc3BlY3RSYXRp
b09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0IG9ubHkgYXBwbGllcyB0byA8aW1nPi4KLSAgICByZXR1
cm4gaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSAmJiAhaXNTaG93aW5nQWx0VGV4dCgp
OwotfQotCiB2b2lkIFJlbmRlckltYWdlOjpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlv
bihGbG9hdFNpemUmIGludHJpbnNpY1NpemUsIGRvdWJsZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0
CiB7CiAgICAgQVNTRVJUKCFzaG91bGRBcHBseVNpemVDb250YWlubWVudCgqdGhpcykpOwpAQCAt
ODY1LDExICs4NTksMTEgQEAgdm9pZCBSZW5kZXJJbWFnZTo6Y29tcHV0ZUludHJpbnNpY1JhdGlv
SW5mb3JtYXRpb24oRmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBkb3UKIAogICAgIC8vIERvbid0
IGNvbXB1dGUgYW4gaW50cmluc2ljIHJhdGlvIHRvIHByZXNlcnZlIGhpc3RvcmljYWwgV2ViS2l0
IGJlaGF2aW9yIGlmIHdlJ3JlIHBhaW50aW5nIGFsdCB0ZXh0IGFuZC9vciBhIGJyb2tlbiBpbWFn
ZS4KICAgICBpZiAoc2hvdWxkRGlzcGxheUJyb2tlbkltYWdlSWNvbigpKSB7Ci0gICAgICAgIGlm
ICghc3R5bGUoKS5oYXNBc3BlY3RSYXRpbygpKSB7Ci0gICAgICAgICAgICBpbnRyaW5zaWNSYXRp
byA9IGludHJpbnNpY0FzcGVjdFJhdGlvRnJvbVdpZHRoSGVpZ2h0KCkudmFsdWVPcigxKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IDE7
CisgICAgICAgIGlmIChzZXR0aW5ncygpLmFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWln
aHRFbmFibGVkKCkKKyAgICAgICAgICAgICYmIHN0eWxlKCkuYXNwZWN0UmF0aW9UeXBlKCkgPT0g
QXNwZWN0UmF0aW9UeXBlOjpBdXRvQW5kUmF0aW8gJiYgIWlzU2hvd2luZ0FsdFRleHQoKSkKKyAg
ICAgICAgICAgIGludHJpbnNpY1JhdGlvID0gc3R5bGUoKS5sb2dpY2FsQXNwZWN0UmF0aW8oKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW50cmluc2ljUmF0aW8gPSAxOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAppbmRl
eCA2NzU3NWM2ZTdmZjJhZWQxMTU0YWMwZjI5OTk1NmIwZWFkYzJmMDJlLi4xMjk2NzU5MGI0YzMz
ODRkM2QxNTQxZTNhZDAwODljY2UzZTEzMmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuaApAQCAtMTAzLDggKzEwMyw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgaW1hZ2VD
aGFuZ2VkKGltYWdlUmVzb3VyY2UoKS5pbWFnZVB0cigpKTsKICAgICB9CiAKLSAgICBib29sIGNh
bk1hcFdpZHRoSGVpZ2h0VG9Bc3BlY3RSYXRpbygpIGNvbnN0IG92ZXJyaWRlOwotCiBwcml2YXRl
OgogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVySW1hZ2UiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwCmluZGV4IDhmZTMzYjAwMzc5YTBhODBhOGZiODkyNmI2MWJhNmRkNzhkNmU2ODQuLmFk
Yzc5MmI5ODU3NWFhY2FjYTFhMjllMTY4MmI5ZWY0ZTA5ZTIyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtNDc4LDIzICs0NzgsNiBAQCBSb3Vu
ZGVkUmVjdCBSZW5kZXJSZXBsYWNlZDo6cm91bmRlZENvbnRlbnRCb3hSZWN0KCkgY29uc3QKICAg
ICAgICAgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyUmlnaHQoKSArIHBhZGRp
bmdSaWdodCgpKTsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBSZW5kZXJSZXBsYWNlZDo6aW50cmlu
c2ljQXNwZWN0UmF0aW9Gcm9tV2lkdGhIZWlnaHQoKSBjb25zdAotewotICAgIGlmICghc2V0dGlu
Z3MoKS5hc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCgpKQotICAgICAg
ICByZXR1cm4gT3B0aW9uYWw8ZG91YmxlPigpOwotCi0gICAgaWYgKCFjYW5NYXBXaWR0aEhlaWdo
dFRvQXNwZWN0UmF0aW8oKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGRvdWJsZT4oKTsKLQot
ICAgIEFTU0VSVChlbGVtZW50KCkpOwotICAgIGRvdWJsZSBhdHRyaWJ1dGVXaWR0aCA9IHBhcnNl
VmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihlbGVtZW50KCktPmdldEF0dHJpYnV0ZShIVE1M
TmFtZXM6OndpZHRoQXR0cikpLnZhbHVlT3IoMCk7Ci0gICAgZG91YmxlIGF0dHJpYnV0ZUhlaWdo
dCA9IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihlbGVtZW50KCktPmdldEF0dHJp
YnV0ZShIVE1MTmFtZXM6OmhlaWdodEF0dHIpKS52YWx1ZU9yKDApOwotICAgIGlmIChhdHRyaWJ1
dGVXaWR0aCA+IDAgJiYgYXR0cmlidXRlSGVpZ2h0ID4gMCkKLSAgICAgICAgcmV0dXJuIGF0dHJp
YnV0ZVdpZHRoIC8gYXR0cmlidXRlSGVpZ2h0OwotCi0gICAgcmV0dXJuIE9wdGlvbmFsPGRvdWJs
ZT4oKTsKLX0KLQogdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5m
b3JtYXRpb24oRmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBkb3VibGUmIGludHJpbnNpY1JhdGlv
KSBjb25zdAogewogICAgIC8vIElmIHRoZXJlJ3MgYW4gZW1iZWRkZWRDb250ZW50Qm94KCkgb2Yg
YSByZW1vdGUsIHJlZmVyZW5jZWQgZG9jdW1lbnQgYXZhaWxhYmxlLCB0aGlzIGNvZGUtcGF0aCBz
aG91bGQgbmV2ZXIgYmUgdXNlZC4KQEAgLTUxMCwxMCArNDkzLDggQEAgdm9pZCBSZW5kZXJSZXBs
YWNlZDo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oRmxvYXRTaXplJiBpbnRyaW5z
aWNTaXplLAogICAgIGlmICghaGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKGludHJpbnNpY1NpemUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGludHJp
bnNpY1JhdGlvID0gaW50cmluc2ljQXNwZWN0UmF0aW9Gcm9tV2lkdGhIZWlnaHQoKS52YWx1ZU9y
KDApOworICAgIGlmIChpbnRyaW5zaWNTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KIAogICAgIGludHJpbnNpY1JhdGlvID0gaW50cmluc2ljU2l6ZS53aWR0aCgpIC8gaW50
cmluc2ljU2l6ZS5oZWlnaHQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmgKaW5kZXggOTliYWEwOWY4OGY5NTJiZGQ1YjU3OGM2MmIzZmRmYmU1YWViZmMwZS4u
YzE5ZTQ1YWZkMjU3N2U4NjNjYzNmY2ExOTM3ZmMwYjBmY2FjNTU1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTYzLDEwICs2Myw2IEBAIHByb3RlY3Rl
ZDoKIAogICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYg
bWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IGZpbmFs
OwogCi0gICAgLy8gVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIGlmIHRoZSBvYmplY3QgaXMgYWxs
b3dlZCB0byBjb21wdXRlIGFzcGVjdCByYXRpbyBmcm9tIGF0dHJpYnV0ZXMgd2lkdGggYW5kIGhl
aWdodC4KLSAgICB2aXJ0dWFsIGJvb2wgY2FuTWFwV2lkdGhIZWlnaHRUb0FzcGVjdFJhdGlvKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBPcHRpb25hbDxkb3VibGU+IGludHJpbnNpY0Fz
cGVjdFJhdGlvRnJvbVdpZHRoSGVpZ2h0KCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFsIExheW91dFVu
aXQgbWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gMF9sdTsgfQogCiAgICAg
Ym9vbCBpc1NlbGVjdGVkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRl
eCBhYzMyNzFmMzU4MzNmNmU5OTY1NWM0ZTViOTQ5OTcwYTgyNWIzNTFjLi4yNTVjMmY2YmI0YTZj
YWNjYzQ1ZmQ0YmY1NmM5MGRjYjMzNjZkN2NiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNS0yMSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVu
QGlnYWxpYS5jb20+CisKKyAgICAgICAgVXNlIHRoZSBwYXJzZWQgd2lkdGggYW5kIGhlaWdodCBh
dHRyaWJ1dGVzIGFzIGEgcHJlc2VudGF0aW9uYWwgaGludCBmb3IgYXNwZWN0LXJhdGlvIENTUyBw
cm9wZXJ0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE3NTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIHRoZSBleHBlY3RlZCByZXN1bHRzIG9mIHRlc3RfY29tcHV0ZWRfc3R5bGUgd2hpY2gg
YXJlIHBhc3NlZCBub3cuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5k
ZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMvYXR0cmlidXRlcy1mb3ItZW1iZWRkZWQtY29udGVudC1h
bmQtaW1hZ2VzL2ltZy1hc3BlY3QtcmF0aW8tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9yZXBsYWNlZC1lbGVtZW50cy9hdHRyaWJ1dGVz
LWZvci1lbWJlZGRlZC1jb250ZW50LWFuZC1pbWFnZXMvdmlkZW8tYXNwZWN0LXJhdGlvLWV4cGVj
dGVkLnR4dDoKKwogMjAyMS0wNS0xOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBOYXZpZ2F0aW9uIFRpbWluZyBM
ZXZlbCAyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvcmVuZGVyaW5nL3JlcGxhY2VkLWVsZW1lbnRzL2F0dHJpYnV0ZXMtZm9yLWVt
YmVkZGVkLWNvbnRlbnQtYW5kLWltYWdlcy9pbWctYXNwZWN0LXJhdGlvLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJp
bmcvcmVwbGFjZWQtZWxlbWVudHMvYXR0cmlidXRlcy1mb3ItZW1iZWRkZWQtY29udGVudC1hbmQt
aW1hZ2VzL2ltZy1hc3BlY3QtcmF0aW8tZXhwZWN0ZWQudHh0CmluZGV4IDJlNzMyMjllYzBhNjlj
ZjY3MGQ0OWI1YzdmMzFkOTQ4ZGUyNWQ3MTMuLmFiNWZhNzFjMjQwZWIzOWNjMDUzYmRlYjhmOThm
MDYxMTFhZmZmMzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMvYXR0cmlidXRlcy1m
b3ItZW1iZWRkZWQtY29udGVudC1hbmQtaW1hZ2VzL2ltZy1hc3BlY3QtcmF0aW8tZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMvYXR0cmlidXRlcy1mb3ItZW1iZWRkZWQtY29u
dGVudC1hbmQtaW1hZ2VzL2ltZy1hc3BlY3QtcmF0aW8tZXhwZWN0ZWQudHh0CkBAIC00LDIwICs0
LDIwIEBAIFBBU1MgSW1hZ2Ugd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzIGFyZSB1c2VkIHRv
IGluZmVyIGFzcGVjdC1yYXRpbwogUEFTUyBDcmVhdGUsIGFwcGVuZCBhbmQgdGVzdCBpbW1lZGlh
dGVseTogPGltZz4gd2l0aCBhdHRyaWJ1dGVzIHdpZHRoPTI1MCwgaGVpZ2h0PTEwMAogUEFTUyBD
cmVhdGUsIGFwcGVuZCBhbmQgdGVzdCBpbW1lZGlhdGVseTogPGltZz4gd2l0aCBhdHRyaWJ1dGVz
IHdpZHRoPTAuOCwgaGVpZ2h0PTAuMgogUEFTUyBDcmVhdGUsIGFwcGVuZCBhbmQgdGVzdCBpbW1l
ZGlhdGVseTogPGltZz4gd2l0aCBhdHRyaWJ1dGVzIHdpZHRoPTUwJSBoZWlnaHQ9MjUlCi1GQUlM
IENvbXB1dGVkIHN0eWxlIHRlc3Q6IGltZyB3aXRoIHsid2lkdGgiOiIxMCIsImhlaWdodCI6IjIw
In0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1dG8gMTAgLyAyMCIgYnV0IGdvdCAiYXV0byIK
LUZBSUwgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW5wdXQgd2l0aCB7InR5cGUiOiJpbWFnZSIsIndp
ZHRoIjoiMTAiLCJoZWlnaHQiOiIyMCJ9IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhdXRvIDEw
IC8gMjAiIGJ1dCBnb3QgImF1dG8iCitQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGltZyB3aXRo
IHsid2lkdGgiOiIxMCIsImhlaWdodCI6IjIwIn0KK1BBU1MgQ29tcHV0ZWQgc3R5bGUgdGVzdDog
aW5wdXQgd2l0aCB7InR5cGUiOiJpbWFnZSIsIndpZHRoIjoiMTAiLCJoZWlnaHQiOiIyMCJ9CiBQ
QVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGlucHV0IHdpdGggeyJ0eXBlIjoic3VibWl0Iiwid2lk
dGgiOiIxMCIsImhlaWdodCI6IjIwIn0KLUZBSUwgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW1nIHdp
dGggeyJ3aWR0aCI6IjAiLCJoZWlnaHQiOiIxIn0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1
dG8gMCAvIDEiIGJ1dCBnb3QgImF1dG8iCi1GQUlMIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGlucHV0
IHdpdGggeyJ0eXBlIjoiaW1hZ2UiLCJ3aWR0aCI6IjAiLCJoZWlnaHQiOiIxIn0gYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgImF1dG8gMCAvIDEiIGJ1dCBnb3QgImF1dG8iCitQQVNTIENvbXB1dGVk
IHN0eWxlIHRlc3Q6IGltZyB3aXRoIHsid2lkdGgiOiIwIiwiaGVpZ2h0IjoiMSJ9CitQQVNTIENv
bXB1dGVkIHN0eWxlIHRlc3Q6IGlucHV0IHdpdGggeyJ0eXBlIjoiaW1hZ2UiLCJ3aWR0aCI6IjAi
LCJoZWlnaHQiOiIxIn0KIFBBU1MgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW5wdXQgd2l0aCB7InR5
cGUiOiJzdWJtaXQiLCJ3aWR0aCI6IjAiLCJoZWlnaHQiOiIxIn0KLUZBSUwgQ29tcHV0ZWQgc3R5
bGUgdGVzdDogaW1nIHdpdGggeyJ3aWR0aCI6IjEiLCJoZWlnaHQiOiIwIn0gYXNzZXJ0X2VxdWFs
czogZXhwZWN0ZWQgImF1dG8gMSAvIDAiIGJ1dCBnb3QgImF1dG8iCi1GQUlMIENvbXB1dGVkIHN0
eWxlIHRlc3Q6IGlucHV0IHdpdGggeyJ0eXBlIjoiaW1hZ2UiLCJ3aWR0aCI6IjEiLCJoZWlnaHQi
OiIwIn0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1dG8gMSAvIDAiIGJ1dCBnb3QgImF1dG8i
CitQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGltZyB3aXRoIHsid2lkdGgiOiIxIiwiaGVpZ2h0
IjoiMCJ9CitQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGlucHV0IHdpdGggeyJ0eXBlIjoiaW1h
Z2UiLCJ3aWR0aCI6IjEiLCJoZWlnaHQiOiIwIn0KIFBBU1MgQ29tcHV0ZWQgc3R5bGUgdGVzdDog
aW5wdXQgd2l0aCB7InR5cGUiOiJzdWJtaXQiLCJ3aWR0aCI6IjEiLCJoZWlnaHQiOiIwIn0KLUZB
SUwgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW1nIHdpdGggeyJ3aWR0aCI6IjAiLCJoZWlnaHQiOiIw
In0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1dG8gMCAvIDAiIGJ1dCBnb3QgImF1dG8iCi1G
QUlMIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGlucHV0IHdpdGggeyJ0eXBlIjoiaW1hZ2UiLCJ3aWR0
aCI6IjAiLCJoZWlnaHQiOiIwIn0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1dG8gMCAvIDAi
IGJ1dCBnb3QgImF1dG8iCitQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGltZyB3aXRoIHsid2lk
dGgiOiIwIiwiaGVpZ2h0IjoiMCJ9CitQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGlucHV0IHdp
dGggeyJ0eXBlIjoiaW1hZ2UiLCJ3aWR0aCI6IjAiLCJoZWlnaHQiOiIwIn0KIFBBU1MgQ29tcHV0
ZWQgc3R5bGUgdGVzdDogaW5wdXQgd2l0aCB7InR5cGUiOiJzdWJtaXQiLCJ3aWR0aCI6IjAiLCJo
ZWlnaHQiOiIwIn0KLUZBSUwgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW1nIHdpdGggeyJ3aWR0aCI6
IjAuNSIsImhlaWdodCI6IjEuNSJ9IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhdXRvIDAuNSAv
IDEuNSIgYnV0IGdvdCAiYXV0byIKLUZBSUwgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW5wdXQgd2l0
aCB7InR5cGUiOiJpbWFnZSIsIndpZHRoIjoiMC41IiwiaGVpZ2h0IjoiMS41In0gYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgImF1dG8gMC41IC8gMS41IiBidXQgZ290ICJhdXRvIgorUEFTUyBDb21w
dXRlZCBzdHlsZSB0ZXN0OiBpbWcgd2l0aCB7IndpZHRoIjoiMC41IiwiaGVpZ2h0IjoiMS41In0K
K1BBU1MgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW5wdXQgd2l0aCB7InR5cGUiOiJpbWFnZSIsIndp
ZHRoIjoiMC41IiwiaGVpZ2h0IjoiMS41In0KIFBBU1MgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW5w
dXQgd2l0aCB7InR5cGUiOiJzdWJtaXQiLCJ3aWR0aCI6IjAuNSIsImhlaWdodCI6IjEuNSJ9CiBQ
QVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGltZyB3aXRoIHsid2lkdGgiOm51bGwsImhlaWdodCI6
bnVsbH0KIFBBU1MgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW5wdXQgd2l0aCB7InR5cGUiOiJpbWFn
ZSIsIndpZHRoIjpudWxsLCJoZWlnaHQiOm51bGx9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL3JlcGxhY2VkLWVs
ZW1lbnRzL2F0dHJpYnV0ZXMtZm9yLWVtYmVkZGVkLWNvbnRlbnQtYW5kLWltYWdlcy92aWRlby1h
c3BlY3QtcmF0aW8tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9yZXBsYWNlZC1lbGVtZW50cy9hdHRyaWJ1dGVz
LWZvci1lbWJlZGRlZC1jb250ZW50LWFuZC1pbWFnZXMvdmlkZW8tYXNwZWN0LXJhdGlvLWV4cGVj
dGVkLnR4dAppbmRleCAzYzQ1YzdlNDM2ZjA4YTQ2YmRhODJmZGI0NjAwNjEzODBjOTFhYmY0Li44
YWI3MjgyNzY3YTdlYzVhNWJiZWVjYWZjZWE2NDlhOTA2ODljNjI2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL3Jl
cGxhY2VkLWVsZW1lbnRzL2F0dHJpYnV0ZXMtZm9yLWVtYmVkZGVkLWNvbnRlbnQtYW5kLWltYWdl
cy92aWRlby1hc3BlY3QtcmF0aW8tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVu
dHMvYXR0cmlidXRlcy1mb3ItZW1iZWRkZWQtY29udGVudC1hbmQtaW1hZ2VzL3ZpZGVvLWFzcGVj
dC1yYXRpby1leHBlY3RlZC50eHQKQEAgLTEsOCArMSw4IEBACiAKIAotRkFJTCBWaWRlbyB3aWR0
aCBhbmQgaGVpZ2h0IGF0dHJpYnV0ZXMgYXJlIG5vdCB1c2VkIHRvIGluZmVyIGFzcGVjdC1yYXRp
byBhc3NlcnRfYXBwcm94X2VxdWFsczogZXhwZWN0ZWQgMi41ICsvLSAwLjAwMSBidXQgZ290IElu
ZmluaXR5Ci1GQUlMIENvbXB1dGVkIHN0eWxlIHRlc3Q6IHZpZGVvIHdpdGggeyJ3aWR0aCI6IjEw
IiwiaGVpZ2h0IjoiMjAifSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYXV0byAxMCAvIDIwIiBi
dXQgZ290ICJhdXRvIgotRkFJTCBDb21wdXRlZCBzdHlsZSB0ZXN0OiB2aWRlbyB3aXRoIHsid2lk
dGgiOiIwLjUiLCJoZWlnaHQiOiIxLjUifSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYXV0byAw
LjUgLyAxLjUiIGJ1dCBnb3QgImF1dG8iCitQQVNTIFZpZGVvIHdpZHRoIGFuZCBoZWlnaHQgYXR0
cmlidXRlcyBhcmUgbm90IHVzZWQgdG8gaW5mZXIgYXNwZWN0LXJhdGlvCitQQVNTIENvbXB1dGVk
IHN0eWxlIHRlc3Q6IHZpZGVvIHdpdGggeyJ3aWR0aCI6IjEwIiwiaGVpZ2h0IjoiMjAifQorUEFT
UyBDb21wdXRlZCBzdHlsZSB0ZXN0OiB2aWRlbyB3aXRoIHsid2lkdGgiOiIwLjUiLCJoZWlnaHQi
OiIxLjUifQogUEFTUyBDb21wdXRlZCBzdHlsZSB0ZXN0OiB2aWRlbyB3aXRoIHsid2lkdGgiOiIw
IiwiaGVpZ2h0IjoiMSJ9CiBQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IHZpZGVvIHdpdGggeyJ3
aWR0aCI6IjEiLCJoZWlnaHQiOiIwIn0KIFBBU1MgQ29tcHV0ZWQgc3R5bGUgdGVzdDogdmlkZW8g
d2l0aCB7IndpZHRoIjoiMCIsImhlaWdodCI6IjAifQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429497</attachid>
            <date>2021-05-23 20:08:48 -0700</date>
            <delta_ts>2021-05-24 22:39:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217529-20210524110846.patch</filename>
            <type>text/plain</type>
            <size>19259</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjAxYTRkMDc5OTRjMjBm
YjI3NWQ4MzBhNDA0NWQyY2Q4NThiMzRkMC4uYTQxN2EwZDgyZmE2MWNkNjkxZGU4YmVjNGJhNzNm
MjE2ODliMGQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA1LTIxICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgdGhlIHBhcnNl
ZCB3aWR0aCBhbmQgaGVpZ2h0IGF0dHJpYnV0ZXMgYXMgYSBwcmVzZW50YXRpb25hbCBoaW50IGZv
ciBhc3BlY3QtcmF0aW8gQ1NTIHByb3BlcnR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBL
b2l2aXN0by4KKworICAgICAgICBUaGUgZmVhdHVyZSAibWFwcGluZyBhdHRyaWJ1dGVzIHdpZHRo
IGFuZCBoZWlnaHQgdG8gYXNwZWN0IHJhdGlvIiBjdXJyZW50bHkgaXMgaGFuZGxlZCBieSBSZW5k
ZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24uCisgICAgICAgIEhv
d2V2ZXIsIHBlciBbMV0sIHRoZSBub24tbmVnYXRpdmUgd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1
dGVzIGFyZSBleHBlY3RlZCB0byBiZSB1c2VkIGFzIGEgcHJlc2VudGF0aW9uYWwgaGludCBmb3Ig
dGhlIGFzcGVjdC1yYXRpbyBwcm9wZXJ0eS4KKyAgICAgICAgVGhpcyBwYXRjaCBhZGRlcyBIVE1M
RWxlbWVudDo6YXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0
eWxlIHRvIGFwcGx5IHRoZSBhdHRyaWJ1dGVzIHRvIG1fcHJlc2VudGF0aW9uQXR0cmlidXRlU3R5
bGUuCisgICAgICAgIEFsc28gdGhpcyBwYXRjaCBzdXBwb3J0cyB0aGUgZmVhdHVyZSBmb3IgPHZp
ZGVvPiBhbmQgPGlucHV0PiB3aXRoIHR5cGU9ImltYWdlIi4KKworICAgICAgICBbMV0gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jbWFwLXRvLXRoZS1hc3BlY3QtcmF0aW8tcHJvcGVydHkt
KHVzaW5nLWRpbWVuc2lvbi1ydWxlcykKKworICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lk
dGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZSk6IEFwcGx5IGF0dHJpYnV0ZXMgd2lkdGggLyBo
ZWlnaHQgdG8gYXNwZWN0UmF0aW8gb2Ygc3R5bGUgaWYgdGhleSBhcmVuJ3QgbmVnYXRpdmUuCisg
ICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUpOiBVc2UgYXR0cmlidXRlcyB3aWR0aCBhbmQgaGVp
Z2h0IGFzIGEgcHJlc2VudGF0aW9uYWwgaGludCBmb3IgYXNwZWN0LXJhdGlvLgorICAgICAgICAq
IGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUpOiBJZiBpc0ltYWdl
QnV0dG9uKCksIGNvbGxlY3QgYXR0cmlidXRlcyB3aWR0aCBhbmQgaGVpZ2h0IGFzIGFzcGVjdC1y
YXRpbyBvZiBtX3ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlLgorICAgICAgICAqIGh0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Ojpj
b2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6
OmNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uIGNvbnN0KTogVGhlIGludHJpbnNpY1Jh
dGlvIGlzIGxvZ2ljYWxBc3BlY3RSYXRpbygpCisgICAgICAgIGlmIGVycm9yIGltYWdlIGlzIG5v
dCBzaG93aW5nIGFsdCB0ZXh0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbk1h
cFdpZHRoSGVpZ2h0VG9Bc3BlY3RSYXRpbyBjb25zdCk6IERlbGV0ZWQuIFJlbW92ZSB0aGUgbGVn
YWN5IGNvZGUuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJl
cGxhY2VkOjpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbiBjb25zdCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmludHJpbnNpY0FzcGVjdFJhdGlvRnJv
bVdpZHRoSGVpZ2h0IGNvbnN0KTogRGVsZXRlZC4gRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y2Fu
TWFwV2lkdGhIZWlnaHRUb0FzcGVjdFJhdGlvIGNvbnN0KTogRGVsZXRlZC4gRGl0dG8uCisKIDIw
MjEtMDUtMTkgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBhIHdheSB0byBjcmVhdGUgYCJ3aGVlbCJgIGV2ZW50cyBmcm9tIGdlc3R1cmUvdG91Y2ggZXZl
bnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDRlODdjYmM1MDc3NmQ3NGY1
NjIyMzJkZjVlYTdmNmQwY2UwNTc3ODMuLmJiNzY4YTIxOWIwNjdmNTg1ZDA2YmJlNWRjNzk0ZmFk
NzFiNWIwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiQ1NTTWFya3VwLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5o
IgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZUxpc3Qu
aCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNs
dWRlICJDaHJvbWVDbGllbnQuaCIKQEAgLTYyMCw2ICs2MjEsMjggQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gSFRNTEVsZW1lbnQ6OnNldE91dGVyVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0
dXJuIHsgfTsKIH0KIAordm9pZCBIVE1MRWxlbWVudDo6YXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0
aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxl
KQoreworICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFzcGVjdFJhdGlvT2ZJbWdGcm9t
V2lkdGhBbmRIZWlnaHRFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSB3
aWR0aCA9IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihhdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKHdpZHRoQXR0cikpLnZhbHVlT3IoLTEpOworICAgIGlmICh3aWR0aCA8
IDApCisgICAgICAgIHJldHVybjsKKyAgICBkb3VibGUgaGVpZ2h0ID0gcGFyc2VWYWxpZEhUTUxG
bG9hdGluZ1BvaW50TnVtYmVyKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oaGVpZ2h0
QXR0cikpLnZhbHVlT3IoLTEpOworICAgIGlmIChoZWlnaHQgPCAwKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIHJhdGlvTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xhc2hTZXBhcmF0
ZWQoKTsKKyAgICByYXRpb0xpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZVZhbHVlKHdpZHRoLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOworICAgIHJhdGlvTGlz
dC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoaGVpZ2h0LCBD
U1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKSk7CisgICAgbGlz
dC0+YXBwZW5kKHJhdGlvTGlzdCk7CisKKyAgICBzdHlsZS5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUFzcGVjdFJhdGlvLCBSZWZQdHI8Q1NTVmFsdWU+KFdURk1vdmUobGlzdCkpKTsKK30KKwogdm9p
ZCBIVE1MRWxlbWVudDo6YXBwbHlBbGlnbm1lbnRBdHRyaWJ1dGVUb1N0eWxlKGNvbnN0IEF0b21T
dHJpbmcmIGFsaWdubWVudCwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7CiAgICAg
Ly8gVmVydGljYWwgYWxpZ25tZW50IHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudCBiYXNlbGlu
ZSBvZiB0aGUgdGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4IDkxMDBhYWVkYmZj
MmM1NDVkNjU4NzAzZjkyOWRkMTQxMjkwNDUzZjIuLjE4NjZhNjA0OTJmOTM1ZGRhMTAzOWEyYWFk
MWE1Y2ZmNzVkNTE0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTE1NCw2ICsx
NTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRIVE1MTGVuZ3RoVG9TdHlsZShNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzJiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAg
ICAgdm9pZCBhZGRIVE1MQ29sb3JUb1N0eWxlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmLCBDU1NQ
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGNvbG9yKTsKIAorICAgIHZvaWQgYXBwbHlBc3BlY3RS
YXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxlKE11dGFibGVTdHlsZVByb3Bl
cnRpZXMmKTsKICAgICB2b2lkIGFwcGx5QWxpZ25tZW50QXR0cmlidXRlVG9TdHlsZShjb25zdCBB
dG9tU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpOwogICAgIHZvaWQgYXBwbHlCb3Jk
ZXJBdHRyaWJ1dGVUb1N0eWxlKGNvbnN0IEF0b21TdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGQw
NmEwMDhlOTE0Y2VlMDkyNDg2ZjYzODFjNWI5ZmM0YjA5NDM4NTguLjAxNGQ0YjNkNzc2MDZlZDI0
MDRkYTQxNzkwNTM2ZGNlZmFhMTEyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcApAQCAtMTE1LDExICsxMTUsMTMgQEAgYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojpp
c1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAog
CiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwg
TXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7Ci0gICAgaWYgKG5hbWUgPT0gd2lkdGhB
dHRyKQorICAgIGlmIChuYW1lID09IHdpZHRoQXR0cikgewogICAgICAgICBhZGRIVE1MTGVuZ3Ro
VG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgdmFsdWUpOwotICAgIGVsc2UgaWYgKG5h
bWUgPT0gaGVpZ2h0QXR0cikKKyAgICAgICAgYXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhl
aWdodEF0dHJpYnV0ZXNUb1N0eWxlKHN0eWxlKTsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gaGVp
Z2h0QXR0cikgewogICAgICAgICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVy
dHlIZWlnaHQsIHZhbHVlKTsKLSAgICBlbHNlIGlmIChuYW1lID09IGJvcmRlckF0dHIpCisgICAg
ICAgIGFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZShz
dHlsZSk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IGJvcmRlckF0dHIpCiAgICAgICAgIGFwcGx5
Qm9yZGVyQXR0cmlidXRlVG9TdHlsZSh2YWx1ZSwgc3R5bGUpOwogICAgIGVsc2UgaWYgKG5hbWUg
PT0gdnNwYWNlQXR0cikgewogICAgICAgICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NT
UHJvcGVydHlNYXJnaW5Ub3AsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCmluZGV4IDZhNGZhM2M5NGZmZjRmMTNlZmFiNWRjN2E4ZDE4MzRhMWRkYjhlZWEu
LmIzYzIwOTNmMDhjMGFiMjYzMGI5ZjVlMmFiODA2Mzk3ZjVmMGEyZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNzA3LDkgKzcwNywxMyBAQCB2b2lkIEhU
TUxJbnB1dEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJgogICAgIH0gZWxzZSBpZiAobmFtZSA9PSB3aWR0aEF0dHIpIHsKICAg
ICAgICAgaWYgKG1faW5wdXRUeXBlLT5zaG91bGRSZXNwZWN0SGVpZ2h0QW5kV2lkdGhBdHRyaWJ1
dGVzKCkpCiAgICAgICAgICAgICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVy
dHlXaWR0aCwgdmFsdWUpOworICAgICAgICBpZiAoaXNJbWFnZUJ1dHRvbigpKQorICAgICAgICAg
ICAgYXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxlKHN0
eWxlKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gaGVpZ2h0QXR0cikgewogICAgICAgICBpZiAo
bV9pbnB1dFR5cGUtPnNob3VsZFJlc3BlY3RIZWlnaHRBbmRXaWR0aEF0dHJpYnV0ZXMoKSkKICAg
ICAgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhlaWdodCwg
dmFsdWUpOworICAgICAgICBpZiAoaXNJbWFnZUJ1dHRvbigpKQorICAgICAgICAgICAgYXBwbHlB
c3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxlKHN0eWxlKTsKICAg
ICB9IGVsc2UgaWYgKG5hbWUgPT0gYm9yZGVyQXR0ciAmJiBpc0ltYWdlQnV0dG9uKCkpCiAgICAg
ICAgIGFwcGx5Qm9yZGVyQXR0cmlidXRlVG9TdHlsZSh2YWx1ZSwgc3R5bGUpOwogICAgIGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDJlZGNjOWNiMWMx
Y2FiMGFiZTExYTk5YTk4NjE4NjM3MTJmMTAyYWQuLjMxMmVlZTNjYjIxYzc1ZGI1MzI1NDdmYTc3
YzljNjY3YmFkYjM4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cApAQCAtMTEzLDExICsxMTMsMTMgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hS
ZW5kZXJlcnMoKQogCiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNl
bnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3Ry
aW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7Ci0gICAgaWYgKG5h
bWUgPT0gd2lkdGhBdHRyKQorICAgIGlmIChuYW1lID09IHdpZHRoQXR0cikgewogICAgICAgICBh
ZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgdmFsdWUpOwotICAg
IGVsc2UgaWYgKG5hbWUgPT0gaGVpZ2h0QXR0cikKKyAgICAgICAgYXBwbHlBc3BlY3RSYXRpb0Zy
b21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxlKHN0eWxlKTsKKyAgICB9IGVsc2UgaWYg
KG5hbWUgPT0gaGVpZ2h0QXR0cikgewogICAgICAgICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHls
ZSwgQ1NTUHJvcGVydHlIZWlnaHQsIHZhbHVlKTsKLSAgICBlbHNlCisgICAgICAgIGFwcGx5QXNw
ZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZShzdHlsZSk7CisgICAg
fSBlbHNlCiAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRh
dGlvbkF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBiYmRiYzVhNDNlOGRmYjgzOGY0ZTgzZjdlMmI5
NTEzNzM4NTk2NzNlLi5iZWE0NjNiOTllZjcyODM0MDQxMjkwZGYzYTM5YzQ5YTZiMjgxNDZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTg0MiwxMiArODQy
LDYgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0U2hhZG93Q29udGVudChjb25zdCBMYXlvdXRT
aXplJiBvbGRTaXplKQogICAgIGNsZWFyQ2hpbGROZWVkc0xheW91dCgpOwogfQogCi1ib29sIFJl
bmRlckltYWdlOjpjYW5NYXBXaWR0aEhlaWdodFRvQXNwZWN0UmF0aW8oKSBjb25zdAotewotICAg
IC8vIFRoZSBhc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0IG9ubHkgYXBwbGllcyB0
byA8aW1nPi4KLSAgICByZXR1cm4gaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSAmJiAh
aXNTaG93aW5nQWx0VGV4dCgpOwotfQotCiB2b2lkIFJlbmRlckltYWdlOjpjb21wdXRlSW50cmlu
c2ljUmF0aW9JbmZvcm1hdGlvbihGbG9hdFNpemUmIGludHJpbnNpY1NpemUsIGRvdWJsZSYgaW50
cmluc2ljUmF0aW8pIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFzaG91bGRBcHBseVNpemVDb250YWlu
bWVudCgqdGhpcykpOwpAQCAtODY1LDExICs4NTksMTEgQEAgdm9pZCBSZW5kZXJJbWFnZTo6Y29t
cHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oRmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBk
b3UKIAogICAgIC8vIERvbid0IGNvbXB1dGUgYW4gaW50cmluc2ljIHJhdGlvIHRvIHByZXNlcnZl
IGhpc3RvcmljYWwgV2ViS2l0IGJlaGF2aW9yIGlmIHdlJ3JlIHBhaW50aW5nIGFsdCB0ZXh0IGFu
ZC9vciBhIGJyb2tlbiBpbWFnZS4KICAgICBpZiAoc2hvdWxkRGlzcGxheUJyb2tlbkltYWdlSWNv
bigpKSB7Ci0gICAgICAgIGlmICghc3R5bGUoKS5oYXNBc3BlY3RSYXRpbygpKSB7Ci0gICAgICAg
ICAgICBpbnRyaW5zaWNSYXRpbyA9IGludHJpbnNpY0FzcGVjdFJhdGlvRnJvbVdpZHRoSGVpZ2h0
KCkudmFsdWVPcigxKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBp
bnRyaW5zaWNSYXRpbyA9IDE7CisgICAgICAgIGlmIChzZXR0aW5ncygpLmFzcGVjdFJhdGlvT2ZJ
bWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkKCkKKyAgICAgICAgICAgICYmIHN0eWxlKCkuYXNw
ZWN0UmF0aW9UeXBlKCkgPT0gQXNwZWN0UmF0aW9UeXBlOjpBdXRvQW5kUmF0aW8gJiYgIWlzU2hv
d2luZ0FsdFRleHQoKSkKKyAgICAgICAgICAgIGludHJpbnNpY1JhdGlvID0gc3R5bGUoKS5sb2dp
Y2FsQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW50cmluc2ljUmF0
aW8gPSAxOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuaAppbmRleCA2NzU3NWM2ZTdmZjJhZWQxMTU0YWMwZjI5OTk1NmIwZWFkYzJm
MDJlLi4xMjk2NzU5MGI0YzMzODRkM2QxNTQxZTNhZDAwODljY2UzZTEzMmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtMTAzLDggKzEwMyw2IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgaW1hZ2VDaGFuZ2VkKGltYWdlUmVzb3VyY2UoKS5pbWFnZVB0cigpKTsKICAg
ICB9CiAKLSAgICBib29sIGNhbk1hcFdpZHRoSGVpZ2h0VG9Bc3BlY3RSYXRpbygpIGNvbnN0IG92
ZXJyaWRlOwotCiBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVySW1hZ2UiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDhmZTMzYjAwMzc5YTBhODBhOGZiODkyNmI2
MWJhNmRkNzhkNmU2ODQuLmFkYzc5MmI5ODU3NWFhY2FjYTFhMjllMTY4MmI5ZWY0ZTA5ZTIyZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtNDc4
LDIzICs0NzgsNiBAQCBSb3VuZGVkUmVjdCBSZW5kZXJSZXBsYWNlZDo6cm91bmRlZENvbnRlbnRC
b3hSZWN0KCkgY29uc3QKICAgICAgICAgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9y
ZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdodCgpKTsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBSZW5k
ZXJSZXBsYWNlZDo6aW50cmluc2ljQXNwZWN0UmF0aW9Gcm9tV2lkdGhIZWlnaHQoKSBjb25zdAot
ewotICAgIGlmICghc2V0dGluZ3MoKS5hc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0
RW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8ZG91YmxlPigpOwotCi0gICAgaWYg
KCFjYW5NYXBXaWR0aEhlaWdodFRvQXNwZWN0UmF0aW8oKSkKLSAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPGRvdWJsZT4oKTsKLQotICAgIEFTU0VSVChlbGVtZW50KCkpOwotICAgIGRvdWJsZSBhdHRy
aWJ1dGVXaWR0aCA9IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihlbGVtZW50KCkt
PmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OndpZHRoQXR0cikpLnZhbHVlT3IoMCk7Ci0gICAgZG91
YmxlIGF0dHJpYnV0ZUhlaWdodCA9IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihl
bGVtZW50KCktPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhlaWdodEF0dHIpKS52YWx1ZU9yKDAp
OwotICAgIGlmIChhdHRyaWJ1dGVXaWR0aCA+IDAgJiYgYXR0cmlidXRlSGVpZ2h0ID4gMCkKLSAg
ICAgICAgcmV0dXJuIGF0dHJpYnV0ZVdpZHRoIC8gYXR0cmlidXRlSGVpZ2h0OwotCi0gICAgcmV0
dXJuIE9wdGlvbmFsPGRvdWJsZT4oKTsKLX0KLQogdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0
ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oRmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBkb3Vi
bGUmIGludHJpbnNpY1JhdGlvKSBjb25zdAogewogICAgIC8vIElmIHRoZXJlJ3MgYW4gZW1iZWRk
ZWRDb250ZW50Qm94KCkgb2YgYSByZW1vdGUsIHJlZmVyZW5jZWQgZG9jdW1lbnQgYXZhaWxhYmxl
LCB0aGlzIGNvZGUtcGF0aCBzaG91bGQgbmV2ZXIgYmUgdXNlZC4KQEAgLTUxMCwxMCArNDkzLDgg
QEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24o
RmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLAogICAgIGlmICghaGFzSW50cmluc2ljQXNwZWN0UmF0
aW8oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGludHJpbnNpY1NpemUuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGludHJpbnNpY1JhdGlvID0gaW50cmluc2ljQXNwZWN0UmF0aW9Gcm9tV2lk
dGhIZWlnaHQoKS52YWx1ZU9yKDApOworICAgIGlmIChpbnRyaW5zaWNTaXplLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGludHJpbnNpY1JhdGlvID0gaW50cmluc2lj
U2l6ZS53aWR0aCgpIC8gaW50cmluc2ljU2l6ZS5oZWlnaHQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKaW5kZXggOTliYWEwOWY4OGY5NTJiZGQ1YjU3OGM2
MmIzZmRmYmU1YWViZmMwZS4uYzE5ZTQ1YWZkMjU3N2U4NjNjYzNmY2ExOTM3ZmMwYjBmY2FjNTU1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTYzLDEw
ICs2Myw2IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxX
aWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2Fs
V2lkdGgpIGNvbnN0IGZpbmFsOwogCi0gICAgLy8gVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIGlm
IHRoZSBvYmplY3QgaXMgYWxsb3dlZCB0byBjb21wdXRlIGFzcGVjdCByYXRpbyBmcm9tIGF0dHJp
YnV0ZXMgd2lkdGggYW5kIGhlaWdodC4KLSAgICB2aXJ0dWFsIGJvb2wgY2FuTWFwV2lkdGhIZWln
aHRUb0FzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBPcHRpb25hbDxk
b3VibGU+IGludHJpbnNpY0FzcGVjdFJhdGlvRnJvbVdpZHRoSGVpZ2h0KCkgY29uc3Q7Ci0KICAg
ICB2aXJ0dWFsIExheW91dFVuaXQgbWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gMF9sdTsgfQogCiAgICAgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwppbmRleCBhYzMyNzFmMzU4MzNmNmU5OTY1NWM0ZTViOTQ5OTcwYTgyNWIz
NTFjLi4yMDdiMzIyYjlmZTE4MGMwZjcwNzI1MGRmYjlmYzMxOTliNDZjNTk0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNS0yMSAgQ2F0aGll
IENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgVXNlIHRoZSBwYXJzZWQg
d2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzIGFzIGEgcHJlc2VudGF0aW9uYWwgaGludCBmb3Ig
YXNwZWN0LXJhdGlvIENTUyBwcm9wZXJ0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCisKKyAgICAgICAgVXBkYXRlIHRoZSBleHBlY3RlZCByZXN1bHRzIG9mIHRlc3RfY29t
cHV0ZWRfc3R5bGUgd2hpY2ggYXJlIHBhc3NlZCBub3cuCisKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMvYXR0cmlidXRlcy1mb3It
ZW1iZWRkZWQtY29udGVudC1hbmQtaW1hZ2VzL2ltZy1hc3BlY3QtcmF0aW8tZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9yZXBsYWNlZC1l
bGVtZW50cy9hdHRyaWJ1dGVzLWZvci1lbWJlZGRlZC1jb250ZW50LWFuZC1pbWFnZXMvdmlkZW8t
YXNwZWN0LXJhdGlvLWV4cGVjdGVkLnR4dDoKKwogMjAyMS0wNS0xOSAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBO
YXZpZ2F0aW9uIFRpbWluZyBMZXZlbCAyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL3JlcGxhY2VkLWVsZW1lbnRz
L2F0dHJpYnV0ZXMtZm9yLWVtYmVkZGVkLWNvbnRlbnQtYW5kLWltYWdlcy9pbWctYXNwZWN0LXJh
dGlvLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMvYXR0cmlidXRlcy1mb3ItZW1i
ZWRkZWQtY29udGVudC1hbmQtaW1hZ2VzL2ltZy1hc3BlY3QtcmF0aW8tZXhwZWN0ZWQudHh0Cmlu
ZGV4IDJlNzMyMjllYzBhNjljZjY3MGQ0OWI1YzdmMzFkOTQ4ZGUyNWQ3MTMuLmFiNWZhNzFjMjQw
ZWIzOWNjMDUzYmRlYjhmOThmMDYxMTFhZmZmMzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxl
bWVudHMvYXR0cmlidXRlcy1mb3ItZW1iZWRkZWQtY29udGVudC1hbmQtaW1hZ2VzL2ltZy1hc3Bl
Y3QtcmF0aW8tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMvYXR0cmlidXRl
cy1mb3ItZW1iZWRkZWQtY29udGVudC1hbmQtaW1hZ2VzL2ltZy1hc3BlY3QtcmF0aW8tZXhwZWN0
ZWQudHh0CkBAIC00LDIwICs0LDIwIEBAIFBBU1MgSW1hZ2Ugd2lkdGggYW5kIGhlaWdodCBhdHRy
aWJ1dGVzIGFyZSB1c2VkIHRvIGluZmVyIGFzcGVjdC1yYXRpbwogUEFTUyBDcmVhdGUsIGFwcGVu
ZCBhbmQgdGVzdCBpbW1lZGlhdGVseTogPGltZz4gd2l0aCBhdHRyaWJ1dGVzIHdpZHRoPTI1MCwg
aGVpZ2h0PTEwMAogUEFTUyBDcmVhdGUsIGFwcGVuZCBhbmQgdGVzdCBpbW1lZGlhdGVseTogPGlt
Zz4gd2l0aCBhdHRyaWJ1dGVzIHdpZHRoPTAuOCwgaGVpZ2h0PTAuMgogUEFTUyBDcmVhdGUsIGFw
cGVuZCBhbmQgdGVzdCBpbW1lZGlhdGVseTogPGltZz4gd2l0aCBhdHRyaWJ1dGVzIHdpZHRoPTUw
JSBoZWlnaHQ9MjUlCi1GQUlMIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGltZyB3aXRoIHsid2lkdGgi
OiIxMCIsImhlaWdodCI6IjIwIn0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1dG8gMTAgLyAy
MCIgYnV0IGdvdCAiYXV0byIKLUZBSUwgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW5wdXQgd2l0aCB7
InR5cGUiOiJpbWFnZSIsIndpZHRoIjoiMTAiLCJoZWlnaHQiOiIyMCJ9IGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICJhdXRvIDEwIC8gMjAiIGJ1dCBnb3QgImF1dG8iCitQQVNTIENvbXB1dGVkIHN0
eWxlIHRlc3Q6IGltZyB3aXRoIHsid2lkdGgiOiIxMCIsImhlaWdodCI6IjIwIn0KK1BBU1MgQ29t
cHV0ZWQgc3R5bGUgdGVzdDogaW5wdXQgd2l0aCB7InR5cGUiOiJpbWFnZSIsIndpZHRoIjoiMTAi
LCJoZWlnaHQiOiIyMCJ9CiBQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGlucHV0IHdpdGggeyJ0
eXBlIjoic3VibWl0Iiwid2lkdGgiOiIxMCIsImhlaWdodCI6IjIwIn0KLUZBSUwgQ29tcHV0ZWQg
c3R5bGUgdGVzdDogaW1nIHdpdGggeyJ3aWR0aCI6IjAiLCJoZWlnaHQiOiIxIn0gYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgImF1dG8gMCAvIDEiIGJ1dCBnb3QgImF1dG8iCi1GQUlMIENvbXB1dGVk
IHN0eWxlIHRlc3Q6IGlucHV0IHdpdGggeyJ0eXBlIjoiaW1hZ2UiLCJ3aWR0aCI6IjAiLCJoZWln
aHQiOiIxIn0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1dG8gMCAvIDEiIGJ1dCBnb3QgImF1
dG8iCitQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGltZyB3aXRoIHsid2lkdGgiOiIwIiwiaGVp
Z2h0IjoiMSJ9CitQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGlucHV0IHdpdGggeyJ0eXBlIjoi
aW1hZ2UiLCJ3aWR0aCI6IjAiLCJoZWlnaHQiOiIxIn0KIFBBU1MgQ29tcHV0ZWQgc3R5bGUgdGVz
dDogaW5wdXQgd2l0aCB7InR5cGUiOiJzdWJtaXQiLCJ3aWR0aCI6IjAiLCJoZWlnaHQiOiIxIn0K
LUZBSUwgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW1nIHdpdGggeyJ3aWR0aCI6IjEiLCJoZWlnaHQi
OiIwIn0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1dG8gMSAvIDAiIGJ1dCBnb3QgImF1dG8i
Ci1GQUlMIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGlucHV0IHdpdGggeyJ0eXBlIjoiaW1hZ2UiLCJ3
aWR0aCI6IjEiLCJoZWlnaHQiOiIwIn0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1dG8gMSAv
IDAiIGJ1dCBnb3QgImF1dG8iCitQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGltZyB3aXRoIHsi
d2lkdGgiOiIxIiwiaGVpZ2h0IjoiMCJ9CitQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGlucHV0
IHdpdGggeyJ0eXBlIjoiaW1hZ2UiLCJ3aWR0aCI6IjEiLCJoZWlnaHQiOiIwIn0KIFBBU1MgQ29t
cHV0ZWQgc3R5bGUgdGVzdDogaW5wdXQgd2l0aCB7InR5cGUiOiJzdWJtaXQiLCJ3aWR0aCI6IjEi
LCJoZWlnaHQiOiIwIn0KLUZBSUwgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW1nIHdpdGggeyJ3aWR0
aCI6IjAiLCJoZWlnaHQiOiIwIn0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1dG8gMCAvIDAi
IGJ1dCBnb3QgImF1dG8iCi1GQUlMIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGlucHV0IHdpdGggeyJ0
eXBlIjoiaW1hZ2UiLCJ3aWR0aCI6IjAiLCJoZWlnaHQiOiIwIn0gYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgImF1dG8gMCAvIDAiIGJ1dCBnb3QgImF1dG8iCitQQVNTIENvbXB1dGVkIHN0eWxlIHRl
c3Q6IGltZyB3aXRoIHsid2lkdGgiOiIwIiwiaGVpZ2h0IjoiMCJ9CitQQVNTIENvbXB1dGVkIHN0
eWxlIHRlc3Q6IGlucHV0IHdpdGggeyJ0eXBlIjoiaW1hZ2UiLCJ3aWR0aCI6IjAiLCJoZWlnaHQi
OiIwIn0KIFBBU1MgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW5wdXQgd2l0aCB7InR5cGUiOiJzdWJt
aXQiLCJ3aWR0aCI6IjAiLCJoZWlnaHQiOiIwIn0KLUZBSUwgQ29tcHV0ZWQgc3R5bGUgdGVzdDog
aW1nIHdpdGggeyJ3aWR0aCI6IjAuNSIsImhlaWdodCI6IjEuNSJ9IGFzc2VydF9lcXVhbHM6IGV4
cGVjdGVkICJhdXRvIDAuNSAvIDEuNSIgYnV0IGdvdCAiYXV0byIKLUZBSUwgQ29tcHV0ZWQgc3R5
bGUgdGVzdDogaW5wdXQgd2l0aCB7InR5cGUiOiJpbWFnZSIsIndpZHRoIjoiMC41IiwiaGVpZ2h0
IjoiMS41In0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImF1dG8gMC41IC8gMS41IiBidXQgZ290
ICJhdXRvIgorUEFTUyBDb21wdXRlZCBzdHlsZSB0ZXN0OiBpbWcgd2l0aCB7IndpZHRoIjoiMC41
IiwiaGVpZ2h0IjoiMS41In0KK1BBU1MgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW5wdXQgd2l0aCB7
InR5cGUiOiJpbWFnZSIsIndpZHRoIjoiMC41IiwiaGVpZ2h0IjoiMS41In0KIFBBU1MgQ29tcHV0
ZWQgc3R5bGUgdGVzdDogaW5wdXQgd2l0aCB7InR5cGUiOiJzdWJtaXQiLCJ3aWR0aCI6IjAuNSIs
ImhlaWdodCI6IjEuNSJ9CiBQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IGltZyB3aXRoIHsid2lk
dGgiOm51bGwsImhlaWdodCI6bnVsbH0KIFBBU1MgQ29tcHV0ZWQgc3R5bGUgdGVzdDogaW5wdXQg
d2l0aCB7InR5cGUiOiJpbWFnZSIsIndpZHRoIjpudWxsLCJoZWlnaHQiOm51bGx9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVu
ZGVyaW5nL3JlcGxhY2VkLWVsZW1lbnRzL2F0dHJpYnV0ZXMtZm9yLWVtYmVkZGVkLWNvbnRlbnQt
YW5kLWltYWdlcy92aWRlby1hc3BlY3QtcmF0aW8tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9yZXBsYWNlZC1l
bGVtZW50cy9hdHRyaWJ1dGVzLWZvci1lbWJlZGRlZC1jb250ZW50LWFuZC1pbWFnZXMvdmlkZW8t
YXNwZWN0LXJhdGlvLWV4cGVjdGVkLnR4dAppbmRleCAzYzQ1YzdlNDM2ZjA4YTQ2YmRhODJmZGI0
NjAwNjEzODBjOTFhYmY0Li44YWI3MjgyNzY3YTdlYzVhNWJiZWVjYWZjZWE2NDlhOTA2ODljNjI2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvcmVuZGVyaW5nL3JlcGxhY2VkLWVsZW1lbnRzL2F0dHJpYnV0ZXMtZm9yLWVtYmVkZGVk
LWNvbnRlbnQtYW5kLWltYWdlcy92aWRlby1hc3BlY3QtcmF0aW8tZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJp
bmcvcmVwbGFjZWQtZWxlbWVudHMvYXR0cmlidXRlcy1mb3ItZW1iZWRkZWQtY29udGVudC1hbmQt
aW1hZ2VzL3ZpZGVvLWFzcGVjdC1yYXRpby1leHBlY3RlZC50eHQKQEAgLTEsOCArMSw4IEBACiAK
IAotRkFJTCBWaWRlbyB3aWR0aCBhbmQgaGVpZ2h0IGF0dHJpYnV0ZXMgYXJlIG5vdCB1c2VkIHRv
IGluZmVyIGFzcGVjdC1yYXRpbyBhc3NlcnRfYXBwcm94X2VxdWFsczogZXhwZWN0ZWQgMi41ICsv
LSAwLjAwMSBidXQgZ290IEluZmluaXR5Ci1GQUlMIENvbXB1dGVkIHN0eWxlIHRlc3Q6IHZpZGVv
IHdpdGggeyJ3aWR0aCI6IjEwIiwiaGVpZ2h0IjoiMjAifSBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiYXV0byAxMCAvIDIwIiBidXQgZ290ICJhdXRvIgotRkFJTCBDb21wdXRlZCBzdHlsZSB0ZXN0
OiB2aWRlbyB3aXRoIHsid2lkdGgiOiIwLjUiLCJoZWlnaHQiOiIxLjUifSBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAiYXV0byAwLjUgLyAxLjUiIGJ1dCBnb3QgImF1dG8iCitQQVNTIFZpZGVvIHdp
ZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlcyBhcmUgbm90IHVzZWQgdG8gaW5mZXIgYXNwZWN0LXJh
dGlvCitQQVNTIENvbXB1dGVkIHN0eWxlIHRlc3Q6IHZpZGVvIHdpdGggeyJ3aWR0aCI6IjEwIiwi
aGVpZ2h0IjoiMjAifQorUEFTUyBDb21wdXRlZCBzdHlsZSB0ZXN0OiB2aWRlbyB3aXRoIHsid2lk
dGgiOiIwLjUiLCJoZWlnaHQiOiIxLjUifQogUEFTUyBDb21wdXRlZCBzdHlsZSB0ZXN0OiB2aWRl
byB3aXRoIHsid2lkdGgiOiIwIiwiaGVpZ2h0IjoiMSJ9CiBQQVNTIENvbXB1dGVkIHN0eWxlIHRl
c3Q6IHZpZGVvIHdpdGggeyJ3aWR0aCI6IjEiLCJoZWlnaHQiOiIwIn0KIFBBU1MgQ29tcHV0ZWQg
c3R5bGUgdGVzdDogdmlkZW8gd2l0aCB7IndpZHRoIjoiMCIsImhlaWdodCI6IjAifQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>