<?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>245399</bug_id>
          
          <creation_ts>2022-09-19 15:26:34 -0700</creation_ts>
          <short_desc>SVG animations should respect Page::imageAnimationEnabled</short_desc>
          <delta_ts>2022-10-28 17:18:28 -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>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>244128</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tyler_w</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1899656</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-09-19 15:26:34 -0700</bug_when>
    <thetext>SVG animations should respect Page::imageAnimationEnabled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1899659</commentid>
    <comment_count>1</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-09-19 15:32:40 -0700</bug_when>
    <thetext>rdar://100143723</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1899662</commentid>
    <comment_count>2</comment_count>
      <attachid>462456</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-09-19 15:36:25 -0700</bug_when>
    <thetext>Created attachment 462456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1899947</commentid>
    <comment_count>3</comment_count>
      <attachid>462456</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-09-20 15:53:18 -0700</bug_when>
    <thetext>Comment on attachment 462456
Patch

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

&gt; Source/WebCore/svg/SVGAnimateElementBase.cpp:159
&gt; +    if (auto* page = document().page()) {
&gt; +        if (!page-&gt;imageAnimationEnabled())
&gt; +            return;
&gt; +    }

This can be written less nested:

    if (auto* page = document().page(); page &amp;&amp; !page-&gt;imageAnimationEnabled())
        return;

&gt; Source/WebCore/svg/animation/SVGSMILElement.cpp:1091
&gt; +    if (auto* page = document().page()) {
&gt; +        if (!page-&gt;imageAnimationEnabled()) {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1899954</commentid>
    <comment_count>4</comment_count>
      <attachid>462479</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-09-20 16:28:32 -0700</bug_when>
    <thetext>Created attachment 462479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1899956</commentid>
    <comment_count>5</comment_count>
      <attachid>462456</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-09-20 16:35:44 -0700</bug_when>
    <thetext>Comment on attachment 462456
Patch

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

&gt; Source/WebCore/svg/animation/SVGSMILElement.cpp:1096
&gt; +    }

I do not think this is the right level of pausing the SVG animation. I think this should be done by calling SVGSVGElement::pauseAnimations() at a higher level.

&gt; LayoutTests/fast/images/disable-animations-svg.html:8
&gt; +&lt;svg version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; style=&quot;background-color: rgb(232, 232, 237);&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; width=&quot;200&quot; height=&quot;200&quot; viewBox=&quot;-4 -4 8 8&quot;&gt;

Two extra cases we need to test: the embedded SVG image and the background image:

&lt;style&gt;
  .box {
    width: 300px;
    height: 200px;
    background: url(&apos;data:image/svg+xml;utf8,&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;rect id=&quot;green&quot; width=&quot;100&quot; height=&quot;100&quot; fill=&quot;green&quot;&gt;&lt;animate attributeName=&quot;x&quot; from=&quot;0&quot; to=&quot;200&quot; dur=&quot;3s&quot; repeatCount=&quot;indefinite&quot;/&gt;&lt;/rect&gt;&lt;/svg&gt;&apos;);
    }
  &lt;/style&gt;
&lt;body&gt;
  &lt;div class=&quot;box&quot;&gt;&lt;/div&gt;
  &lt;img src=&apos;data:image/svg+xml;utf8,
    &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
      &lt;rect id=&quot;green&quot; width=&quot;100&quot; height=&quot;100&quot; fill=&quot;green&quot;&gt;
        &lt;animate attributeName=&quot;x&quot; from=&quot;0&quot; to=&quot;200&quot; dur=&quot;3s&quot; repeatCount=&quot;indefinite&quot;/&gt;
      &lt;/rect&gt;
    &lt;/svg&gt;&apos;&gt;
&lt;/body&gt;

&gt; LayoutTests/fast/images/disable-animations-svg.html:32
&gt; +        shouldBeFalse(&quot;internals.isSVGAnimating(svgElement)&quot;);

I do not think this is enough testing. We should be testing the animated property (&quot;transform&quot; in this case) did not changed after sometime (e.g. 50ms). Search for &quot;svg.setCurrentTime()&quot; and &quot;svg.pauseAnimations()&quot; under LayoutTests/svg for examples on how to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1901320</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-09-26 15:27:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/100430906&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1902636</commentid>
    <comment_count>7</comment_count>
      <attachid>462749</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-10-01 13:16:34 -0700</bug_when>
    <thetext>Created attachment 462749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1902663</commentid>
    <comment_count>8</comment_count>
      <attachid>462755</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-10-01 16:29:07 -0700</bug_when>
    <thetext>Created attachment 462755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1902677</commentid>
    <comment_count>9</comment_count>
      <attachid>462757</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-10-01 18:09:21 -0700</bug_when>
    <thetext>Created attachment 462757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1902691</commentid>
    <comment_count>10</comment_count>
      <attachid>462760</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-10-01 23:22:36 -0700</bug_when>
    <thetext>Created attachment 462760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1902928</commentid>
    <comment_count>11</comment_count>
      <attachid>462760</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-10-03 14:27:40 -0700</bug_when>
    <thetext>Comment on attachment 462760
Patch

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

&gt; Source/WebCore/rendering/RenderView.cpp:879
&gt; +void RenderView::repaintImageAnimationsIfNeeded(const IntRect&amp; visibleRect, bool animationEnabled)

I think the patch will look smaller if we access page().imageAnimationEnabled() instead of passing &apos;animationEnabled&apos; from Page::setImageAnimationEnabled() all the way through here.

bool animationEnabled = page().imageAnimationEnabled();

&gt; Source/WebCore/rendering/RenderView.cpp:899
&gt; +            if (auto* cachedImage = layer-&gt;image() ? layer-&gt;image()-&gt;cachedImage() : nullptr) {
&gt; +                if (auto* svgImage = dynamicDowncast&lt;SVGImage&gt;(cachedImage-&gt;image()))
&gt; +                    updateAnimations(*svgImage);
&gt; +                else if (auto* image = cachedImage-&gt;image(); image &amp;&amp; image-&gt;isAnimated())
&gt; +                    needsRepaint = true;
&gt; +            }

This code is repeated for the RenderImage. Can we make a lambda which takes care of:
1. Checking cachedImage != nullptr
2. Checking is&lt;SVGImage&gt;(cachedImage-&gt;image()) and updates the animation according to animationEnabled.
3. Checking cachedImage-&gt;image() &amp;&amp; cachedImage-&gt;image()-&gt;isAnimated() and sets needsRepaint = true.

&gt; Source/WebCore/svg/SVGDocumentExtensions.cpp:118
&gt; +    // If animations are paused at the document level, don&apos;t allow `this` to be unpaused.
&gt; +    if (animationsPausedForDocument(m_document))
&gt; +        return;

I do not understand why we need this check here. Why do not we allow overriding the global page setting for pausing/unpausing the animation on the document level? We already allow overriding it for a single image.

&gt; Source/WebCore/svg/graphics/SVGImage.h:61
&gt; +    void resumeAnimation();

I think the names are getting out of control for animation:

startAnimation()

// Maybe the same
resumeAnimation()
unpauseAnimation()

// Maybe the same
stopAnimation()
pauseAnimation()

resetAnimation()

But I think this can be addressed later.

&gt; Source/WebCore/testing/Internals.cpp:786
&gt; +Vector&lt;Ref&lt;SVGSVGElement&gt;&gt; Internals::allSVGSVGElements() const

I wonder if an equivalent JS code for this function can be written. Maybe we cannot get the CSS background SVGImages?

&gt; Source/WebCore/testing/Internals.cpp:796
&gt; +        document-&gt;accessSVGExtensions().timeContainersForTesting().forEach([&amp;elements] (WeakPtr&lt;SVGSVGElement, WeakPtrImplWithEventTargetData&gt; element) {
&gt; +            if (element)
&gt; +                elements.append(*element);
&gt; +        });

Maybe this code can can be implemented as a function in SVGDocumentExtensions:

elements.appendVector(WTFMove(document-&gt;accessSVGExtensions().allSVGSVGElements()));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1903299</commentid>
    <comment_count>12</comment_count>
      <attachid>462801</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-10-04 17:58:42 -0700</bug_when>
    <thetext>Created attachment 462801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1903303</commentid>
    <comment_count>13</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-10-04 18:23:19 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #11)
&gt; Comment on attachment 462760 [details]
&gt; &gt; Source/WebCore/svg/SVGDocumentExtensions.cpp:118
&gt; &gt; +    // If animations are paused at the document level, don&apos;t allow `this` to be unpaused.
&gt; &gt; +    if (animationsPausedForDocument(m_document))
&gt; &gt; +        return;
&gt; 
&gt; I do not understand why we need this check here. Why do not we allow
&gt; overriding the global page setting for pausing/unpausing the animation on
&gt; the document level? We already allow overriding it for a single image.
Josh had trouble creating a good UI for individually pausing / resuming SVG animations (e.g. via context menu or user agent shadow DOM button). Until I can experiment with this myself, I think we should try to move forward without the ability to individually control SVG animations. The global play / pause control over SVG animations will still cover the main use case we eventually hope to achieve (animations can be made to pause by default).   The reason this check is in this specific place is because in this scenario: 

  1. Open a page with animations
  2. Pause animations (e.g. via some future UI — I&apos;ve hacked something together locally to test for now)
  3. Minimize Safari
  4. Re-open Safari

We call SVGDocumentExtensions::unpauseAnimations(). Without this new check, we would unpause animations despite Page::m_imageAnimationEnabled being false.

&gt; &gt; Source/WebCore/testing/Internals.cpp:786
&gt; &gt; +Vector&lt;Ref&lt;SVGSVGElement&gt;&gt; Internals::allSVGSVGElements() const
&gt; 
&gt; I wonder if an equivalent JS code for this function can be written. Maybe we
&gt; cannot get the CSS background SVGImages?
I did experiment with this for a while but couldn&apos;t find a way to use JS to get at the SVG elements backing CSS background images, or those embedded in img elements.

&gt; &gt; Source/WebCore/testing/Internals.cpp:796
&gt; &gt; +        document-&gt;accessSVGExtensions().timeContainersForTesting().forEach([&amp;elements] (WeakPtr&lt;SVGSVGElement, WeakPtrImplWithEventTargetData&gt; element) {
&gt; &gt; +            if (element)
&gt; &gt; +                elements.append(*element);
&gt; &gt; +        });
&gt; 
&gt; Maybe this code can can be implemented as a function in
&gt; SVGDocumentExtensions:
&gt; 
&gt; elements.appendVector(WTFMove(document-&gt;accessSVGExtensions().
&gt; allSVGSVGElements()));
Done, minus the WTFMove — seems like it&apos;s unnecessary:

Source/WebCore/testing/Internals.cpp:793:31: error: moving a temporary object prevents copy elision [-Werror,-Wpessimizing-move]
elements.appendVector(WTFMove(document-&gt;accessSVGExtensions().allSVGSVGElements()));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1903831</commentid>
    <comment_count>14</comment_count>
      <attachid>462801</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-10-06 12:20:09 -0700</bug_when>
    <thetext>Comment on attachment 462801
Patch

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

&gt; Source/WTF/wtf/WeakHashSet.h:192
&gt; +template&lt;typename T, typename WeakMapImpl&gt;
&gt; +inline Vector&lt;Ref&lt;T&gt;&gt; copyToRefVector(const WeakHashSet&lt;T, WeakMapImpl&gt;&amp; weakHashSet)
&gt; +{
&gt; +    Vector&lt;Ref&lt;T&gt;&gt; result;
&gt; +    result.reserveInitialCapacity(weakHashSet.computeSize());
&gt; +    weakHashSet.forEach([&amp;] (WeakPtr&lt;T, WeakMapImpl&gt; item) {
&gt; +        // Unconditionally dereferencing `item` is safe here because `forEach` will only execute our callback for non-null WeakPtrs.
&gt; +        result.uncheckedAppend(*item);
&gt; +    });
&gt; +    return result;
&gt; +}

I do not think this is needed. The caller can just say:

copyToVectorOf&lt;Ref&lt;SVGSVGElement&gt;&gt;(m_timeContainers);

See SVGDocumentExtensions::dispatchLoadEventToOutermostSVGElements().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1903970</commentid>
    <comment_count>15</comment_count>
      <attachid>462858</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-10-06 20:31:12 -0700</bug_when>
    <thetext>Created attachment 462858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1903972</commentid>
    <comment_count>16</comment_count>
      <attachid>462858</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-10-06 20:49:41 -0700</bug_when>
    <thetext>Comment on attachment 462858
Patch

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

&gt; Source/WebCore/rendering/RenderView.cpp:881
&gt;  void RenderView::repaintImageAnimationsIfNeeded(const IntRect&amp; visibleRect)

I think this function’s name should be updated, since it now does other things. Unless you think of calling stop/resumeAnimation on an SVGImage as &quot;repainting&quot;.

&gt; Source/WebCore/rendering/RenderView.cpp:898
&gt; +            if (auto* svgImage = dynamicDowncast&lt;SVGImage&gt;(image)) {
&gt; +                if (animationEnabled)
&gt; +                    svgImage-&gt;resumeAnimation();
&gt; +                else
&gt; +                    svgImage-&gt;stopAnimation();

I understand for &quot;repainting&quot; why we would only do work for visible elements. But what about for an SVGImage? Is there code that stops and starts these as the elements with them are scrolled into and out of the visible rectangle? Or some other reason it is OK to neither stop nor start ones that are outside the visible rectangle?

&gt; Source/WebCore/svg/SVGAnimateElementBase.cpp:28
&gt; +#include &quot;Document.h&quot;
&gt; +#include &quot;Page.h&quot;

What change in this patch motivates adding these includes here?

&gt; Source/WebCore/svg/SVGDocumentExtensions.cpp:72
&gt;  }
&gt;  
&gt; +
&gt; +Vector&lt;Ref&lt;SVGSVGElement&gt;&gt; SVGDocumentExtensions::allSVGSVGElements() const

Extra blank line here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1905541</commentid>
    <comment_count>17</comment_count>
      <attachid>462977</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-10-13 23:01:45 -0700</bug_when>
    <thetext>Created attachment 462977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1905769</commentid>
    <comment_count>18</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-10-14 16:22:55 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #16)
&gt; Comment on attachment 462858 [details]
&gt; Patch
&gt; &gt; Source/WebCore/rendering/RenderView.cpp:898
&gt; &gt; +            if (auto* svgImage = dynamicDowncast&lt;SVGImage&gt;(image)) {
&gt; &gt; +                if (animationEnabled)
&gt; &gt; +                    svgImage-&gt;resumeAnimation();
&gt; &gt; +                else
&gt; &gt; +                    svgImage-&gt;stopAnimation();
&gt; 
&gt; I understand for &quot;repainting&quot; why we would only do work for visible
&gt; elements. But what about for an SVGImage? Is there code that stops and
&gt; starts these as the elements with them are scrolled into and out of the
&gt; visible rectangle? Or some other reason it is OK to neither stop nor start
&gt; ones that are outside the visible rectangle?
 This was a bug — thanks! Fixed in the latest patch with a layout test verifying it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1907451</commentid>
    <comment_count>19</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-10-21 15:52:25 -0700</bug_when>
    <thetext>Tyler, this seems to be looking pretty good. @Said, any other comments? I&apos;m inclined to approve</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908176</commentid>
    <comment_count>20</comment_count>
      <attachid>462977</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-10-25 12:03:21 -0700</bug_when>
    <thetext>Comment on attachment 462977
Patch

r+ 
@said jump in if you think we need more changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1909113</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-10-28 17:18:20 -0700</bug_when>
    <thetext>Committed 256122@main (a2cbeb35dc51): &lt;https://commits.webkit.org/256122@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 462977.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462456</attachid>
            <date>2022-09-19 15:36:25 -0700</date>
            <delta_ts>2022-09-20 16:28:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-245399-20220919153625.patch</filename>
            <type>text/plain</type>
            <size>7884</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA0YWNjNzdjZGJjNzUzNDE2ODI2ZDNkY2U0Njk1MzQ1ZjUyOTVlOTMwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogTW9uLCAxOSBTZXAgMjAyMiAxNToyNjo0NiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFNWRyBh
bmltYXRpb25zIHNob3VsZCByZXNwZWN0IFBhZ2U6OmltYWdlQW5pbWF0aW9uRW5hYmxlZAogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NTM5OSByZGFyOi8vMTAwMTQz
NzIzCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkluIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNDQxMjggKEFkZCBleHBlcmltZW50YWwKZmVhdHVyZSB0byBj
b250cm9sIGltYWdlIGFuaW1hdGlvbiBwbGF5L3BhdXNlIHN0YXRlKSwgd2UgYWRkZWQgYQpwYWdl
LXdpZGUgc2V0dGluZyB0byBjb250cm9sIGFuaW1hdGlvbiBwbGF5L3BhdXNlIHN0YXRlLiBTVkcK
YW5pbWF0aW9ucyBzaG91bGQgcmVzcGVjdCB0aGlzIHNldHRpbmcgdG9vLgoKUGF0Y2ggb3JpZ2lu
YWxseSBhdXRob3JlZCBieSBKb3NoIEhvZmZtYW4gYW5kIG1vZGlmaWVkIGJ5IG1lIChUeWxlcgpX
aWxjb2NrKS4KCiogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25zLXN2
Zy1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2FibGUt
YW5pbWF0aW9ucy1zdmcuaHRtbDogQWRkZWQuCgoqIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlRWxlbWVudEJhc2UuY3BwOgooV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpzdGFy
dEFuaW1hdGlvbik6CiogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcDoKKFdlYkNvcmU6OlNW
R1NNSUxFbGVtZW50Ojpwcm9ncmVzcyk6ClRoZXNlIGZ1bmN0aW9ucyBub3cgY2hlY2sgUGFnZTo6
aW1hZ2VBbmltYXRpb25FbmFibGVkIGJlZm9yZSBwcm9jZWVkaW5nLgoKKiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHA6CihXZWJDb3JlOjpJbnRlcm5hbHM6OmlzU1ZHQW5pbWF0
aW5nKToKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oOgoqIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlLmNwcCAgfCAgNyArKysrCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5oICAgICAgICAgICAgfCAgMiArLQogLi4uL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9T
VkdTTUlMRWxlbWVudC5jcHAgIHwgIDggKysrKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwICAgICAgICAgIHwgIDUgKysrCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oICAgICAgICAgICAgfCAgMSArCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwgICAgICAgICAgfCAgMSArCiAuLi4vZGlzYWJsZS1hbmltYXRpb25zLXN2Zy1leHBlY3Rl
ZC50eHQgICAgICAgfCAxMCArKysrKwogLi4uL2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5pbWF0aW9u
cy1zdmcuaHRtbCAgIHwgMzkgKysrKysrKysrKysrKysrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCA3
MiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25zLXN2Zy1leHBlY3RlZC50eHQKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kaXNhYmxlLWFuaW1hdGlv
bnMtc3ZnLmh0bWwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2Uu
Y3BwCmluZGV4IGY2ZmY5NGIzYmQ4Yy4uY2E4YTFjY2MwMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcApAQCAtMjQsNiArMjQsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIgogCisjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVk
TmFtZS5oIgogI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU1ZH
RWxlbWVudC5oIgpAQCAtMTUxLDYgKzE1MywxMSBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFz
ZTo6c3RhcnRBbmltYXRpb24oKQogICAgIGlmICghdGFyZ2V0RWxlbWVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKSB7CisgICAg
ICAgIGlmICghcGFnZS0+aW1hZ2VBbmltYXRpb25FbmFibGVkKCkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgaWYgKFJlZlB0ciBwcm90ZWN0ZWRBbmltYXRvciA9IHRoaXMtPmFu
aW1hdG9yKCkpCiAgICAgICAgIHByb3RlY3RlZEFuaW1hdG9yLT5zdGFydCgqdGFyZ2V0RWxlbWVu
dCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCmluZGV4IDE4NWE4ZTgwOTFkZC4u
ODhiMzI4ODhkNDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAgLTcyLDcgKzcy
LDcgQEAgcHVibGljOiAvLyBET00KICAgICB2b2lkIHBhdXNlQW5pbWF0aW9ucygpOwogICAgIHZv
aWQgdW5wYXVzZUFuaW1hdGlvbnMoKTsKICAgICBib29sIGFuaW1hdGlvbnNQYXVzZWQoKSBjb25z
dDsKLSAgICBib29sIGhhc0FjdGl2ZUFuaW1hdGlvbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaGFzQWN0aXZlQW5pbWF0aW9uKCkgY29uc3Q7CiAgICAgZmxvYXQgZ2V0Q3VycmVu
dFRpbWUoKSBjb25zdDsKICAgICB2b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0KTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKaW5kZXgg
ZTkyY2EyZDY0YzRlLi4zYjFhZTgwYWQ3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9h
bmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCkBAIC0xMDg3LDYgKzEwODcsMTQgQEAgYm9vbCBT
VkdTTUlMRWxlbWVudDo6cHJvZ3Jlc3MoU01JTFRpbWUgZWxhcHNlZCwgU1ZHU01JTEVsZW1lbnQm
IGZpcnN0QW5pbWF0aW9uLAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgaWYg
KGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkgeworICAgICAgICBpZiAoIXBhZ2UtPmlt
YWdlQW5pbWF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAgICBzdG9wQW5pbWF0aW9uKG1fdGFy
Z2V0RWxlbWVudC5nZXQoKSk7CisgICAgICAgICAgICBtX2FjdGl2ZVN0YXRlID0gSW5hY3RpdmU7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAo
ZWxhcHNlZCA8IG1faW50ZXJ2YWxCZWdpbikgewogICAgICAgICBBU1NFUlQobV9hY3RpdmVTdGF0
ZSAhPSBBY3RpdmUpOwogICAgICAgICBpZiAobV9hY3RpdmVTdGF0ZSA9PSBGcm96ZW4pIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAyYjk1ZDE1ZjkwNjIuLmEzNTk0NWYx
NWY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTA2Nyw2ICsxMDY3
LDExIEBAIHZvaWQgSW50ZXJuYWxzOjpwYXVzZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1l
bnQmIGVsZW1lbnQpCiAgICAgZWxlbWVudC5zZXRBbGxvd3NBbmltYXRpb24oZmFsc2UpOwogfQog
Citib29sIEludGVybmFsczo6aXNTVkdBbmltYXRpbmcoU1ZHU1ZHRWxlbWVudCYgZWxlbWVudCkK
K3sKKyAgICByZXR1cm4gZWxlbWVudC5oYXNBY3RpdmVBbmltYXRpb24oKTsKK30KKwogdW5zaWdu
ZWQgSW50ZXJuYWxzOjppbWFnZVBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZyhI
VE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIHJldHVybiBlbGVtZW50LnBlbmRpbmdE
ZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKaW5kZXggNTUzMjA5MjgwYzBkLi44YzI4NWQ4MjQ3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaApAQCAtMjI1LDYgKzIyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEltYWdl
RnJhbWVEZWNvZGluZ0R1cmF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmLCBmbG9hdCBkdXJhdGlvbik7
CiAgICAgdm9pZCByZXNldEltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmKTsKICAgICBi
b29sIGlzSW1hZ2VBbmltYXRpbmcoSFRNTEltYWdlRWxlbWVudCYpOworICAgIGJvb2wgaXNTVkdB
bmltYXRpbmcoU1ZHU1ZHRWxlbWVudCYpOwogICAgIHZvaWQgc2V0SW1hZ2VBbmltYXRpb25FbmFi
bGVkKGJvb2wpOwogICAgIHZvaWQgcmVzdW1lSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVu
dCYpOwogICAgIHZvaWQgcGF1c2VJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggMmQwMzMzZDNhZjM3Li5hYjZkYzI4
YThkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTU1NCw2ICs1NTQs
NyBAQCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0Y2hPYmplY3Q7
CiAgICAgdW5kZWZpbmVkIHNldEltYWdlRnJhbWVEZWNvZGluZ0R1cmF0aW9uKEhUTUxJbWFnZUVs
ZW1lbnQgZWxlbWVudCwgdW5yZXN0cmljdGVkIGZsb2F0IGR1cmF0aW9uKTsKICAgICB1bmRlZmlu
ZWQgcmVzZXRJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwogICAgIGJv
b2xlYW4gaXNJbWFnZUFuaW1hdGluZyhIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOworICAgIGJv
b2xlYW4gaXNTVkdBbmltYXRpbmcoU1ZHU1ZHRWxlbWVudCBlbGVtZW50KTsKICAgICB1bmRlZmlu
ZWQgc2V0SW1hZ2VBbmltYXRpb25FbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAgICAgdW5kZWZp
bmVkIHJlc3VtZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CiAgICAg
dW5kZWZpbmVkIHBhdXNlSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5pbWF0aW9ucy1z
dmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRp
b25zLXN2Zy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi5jZDkyN2RkYTA0YTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy9kaXNhYmxlLWFuaW1hdGlvbnMtc3ZnLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBA
CitUaGlzIGVuc3VyZXMgdGhhdCBTVkcgYW5pbWF0aW9ucyBhcmUgZGlzYWJsZWQgd2hlbiB0aGUg
cGFnZS13aWRlIGltYWdlIGFuaW1hdGlvbiBzZXR0aW5nIGlzIHR1cm5lZCBvZmYuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGludGVybmFscy5pc1NWR0FuaW1hdGluZyhz
dmdFbGVtZW50KSBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2Fi
bGUtYW5pbWF0aW9ucy1zdmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2FibGUt
YW5pbWF0aW9ucy1zdmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmM2NGJjMDhiMTQyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL2Rpc2FibGUtYW5pbWF0aW9ucy1zdmcuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxzdmcgdmVyc2lvbj0iMS4x
IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJiYWNrZ3JvdW5kLWNv
bG9yOiByZ2IoMjMyLCAyMzIsIDIzNyk7IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHZpZXdCb3g9Ii00IC00IDggOCI+
CisgIDxjaXJjbGUgY3g9IjAiIGN5PSIxIiByPSIyIiBzdHJva2U9InJlZCIgZmlsbD0ibm9uZSI+
CisgICAgPGFuaW1hdGVUcmFuc2Zvcm0KKyAgICAgYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIgor
ICAgICBhdHRyaWJ1dGVUeXBlPSJYTUwiCisgICAgIHR5cGU9InJvdGF0ZSIKKyAgICAgZnJvbT0i
MCIKKyAgICAgdG89IjM2MCIKKyAgICAgYmVnaW49IjBzIgorICAgICBkdXI9IjFzIgorICAgICBy
ZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIKKyAgICAvPgorICA8L2NpcmNsZT4KKzwvc3ZnPgorCis8
c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIGVuc3VyZXMgdGhhdCBTVkcgYW5pbWF0aW9u
cyBhcmUgZGlzYWJsZWQgd2hlbiB0aGUgcGFnZS13aWRlIGltYWdlIGFuaW1hdGlvbiBzZXR0aW5n
IGlzIHR1cm5lZCBvZmYuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50ZXJu
YWxzLnNldHRpbmdzLnNldEltYWdlQW5pbWF0aW9uQ29udHJvbEVuYWJsZWQodHJ1ZSk7CisgICAg
aW50ZXJuYWxzLnNldEltYWdlQW5pbWF0aW9uRW5hYmxlZChmYWxzZSk7CisKKyAgICB2YXIgc3Zn
RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzdmciKVswXTsKKworICAg
IHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiaW50
ZXJuYWxzLmlzU1ZHQW5pbWF0aW5nKHN2Z0VsZW1lbnQpIik7CisgICAgICAgIGludGVybmFscy5z
ZXRJbWFnZUFuaW1hdGlvbkVuYWJsZWQodHJ1ZSk7CisgICAgICAgIGludGVybmFscy5jbGVhck1l
bW9yeUNhY2hlKCk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH07Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462479</attachid>
            <date>2022-09-20 16:28:32 -0700</date>
            <delta_ts>2022-10-01 13:16:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-245399-20220920162831.patch</filename>
            <type>text/plain</type>
            <size>7830</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA0NzE5NGIxZmI4OGYyNWI1MDZjOTU2MzcyNGNjYjE5OGNmMWU2MTY2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogTW9uLCAxOSBTZXAgMjAyMiAxNToyNjo0NiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFNWRyBh
bmltYXRpb25zIHNob3VsZCByZXNwZWN0IFBhZ2U6OmltYWdlQW5pbWF0aW9uRW5hYmxlZAogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NTM5OSByZGFyOi8vMTAwMTQz
NzIzCgpSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KCkluIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNDQxMjggKEFkZCBleHBlcmltZW50YWwKZmVhdHVyZSB0byBjb250
cm9sIGltYWdlIGFuaW1hdGlvbiBwbGF5L3BhdXNlIHN0YXRlKSwgd2UgYWRkZWQgYQpwYWdlLXdp
ZGUgc2V0dGluZyB0byBjb250cm9sIGFuaW1hdGlvbiBwbGF5L3BhdXNlIHN0YXRlLiBTVkcKYW5p
bWF0aW9ucyBzaG91bGQgcmVzcGVjdCB0aGlzIHNldHRpbmcgdG9vLgoKUGF0Y2ggb3JpZ2luYWxs
eSBhdXRob3JlZCBieSBKb3NoIEhvZmZtYW4gYW5kIG1vZGlmaWVkIGJ5IG1lIChUeWxlcgpXaWxj
b2NrKS4KCiogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25zLXN2Zy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5p
bWF0aW9ucy1zdmcuaHRtbDogQWRkZWQuCgoqIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
RWxlbWVudEJhc2UuY3BwOgooV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpzdGFydEFu
aW1hdGlvbik6CiogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKiBTb3VyY2Uv
V2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcDoKKFdlYkNvcmU6OlNWR1NN
SUxFbGVtZW50Ojpwcm9ncmVzcyk6ClRoZXNlIGZ1bmN0aW9ucyBub3cgY2hlY2sgUGFnZTo6aW1h
Z2VBbmltYXRpb25FbmFibGVkIGJlZm9yZSBwcm9jZWVkaW5nLgoKKiBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHA6CihXZWJDb3JlOjpJbnRlcm5hbHM6OmlzU1ZHQW5pbWF0aW5n
KToKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oOgoqIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZUVsZW1lbnRCYXNlLmNwcCAgfCAgNSArKysKIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVt
ZW50LmggICAgICAgICAgICB8ICAyICstCiAuLi4vV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NN
SUxFbGVtZW50LmNwcCAgfCAgNiArKysKIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcCAgICAgICAgICB8ICA1ICsrKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aCAgICAgICAgICAgIHwgIDEgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
ICAgICAgICAgIHwgIDEgKwogLi4uL2Rpc2FibGUtYW5pbWF0aW9ucy1zdmctZXhwZWN0ZWQudHh0
ICAgICAgIHwgMTAgKysrKysKIC4uLi9mYXN0L2ltYWdlcy9kaXNhYmxlLWFuaW1hdGlvbnMtc3Zn
Lmh0bWwgICB8IDM5ICsrKysrKysrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgNjggaW5z
ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5pbWF0aW9ucy1zdmctZXhwZWN0ZWQudHh0CiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25zLXN2
Zy5odG1sCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcApp
bmRleCBmNmZmOTRiM2JkOGMuLjQ0ZjhkMGFjN2Y5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKQEAgLTI0LDYgKzI0LDggQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlRWxlbWVudEJhc2UuaCIKIAorI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUu
aCIKICNpbmNsdWRlICJTVkdBdHRyaWJ1dGVBbmltYXRvci5oIgogI2luY2x1ZGUgIlNWR0VsZW1l
bnQuaCIKQEAgLTE1MSw2ICsxNTMsOSBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6c3Rh
cnRBbmltYXRpb24oKQogICAgIGlmICghdGFyZ2V0RWxlbWVudCgpKQogICAgICAgICByZXR1cm47
CiAKKyAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpOyBwYWdlICYmICFwYWdl
LT5pbWFnZUFuaW1hdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKFJl
ZlB0ciBwcm90ZWN0ZWRBbmltYXRvciA9IHRoaXMtPmFuaW1hdG9yKCkpCiAgICAgICAgIHByb3Rl
Y3RlZEFuaW1hdG9yLT5zdGFydCgqdGFyZ2V0RWxlbWVudCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5oCmluZGV4IDE4NWE4ZTgwOTFkZC4uODhiMzI4ODhkNDNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOiAvLyBET00KICAg
ICB2b2lkIHBhdXNlQW5pbWF0aW9ucygpOwogICAgIHZvaWQgdW5wYXVzZUFuaW1hdGlvbnMoKTsK
ICAgICBib29sIGFuaW1hdGlvbnNQYXVzZWQoKSBjb25zdDsKLSAgICBib29sIGhhc0FjdGl2ZUFu
aW1hdGlvbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQWN0aXZlQW5pbWF0
aW9uKCkgY29uc3Q7CiAgICAgZmxvYXQgZ2V0Q3VycmVudFRpbWUoKSBjb25zdDsKICAgICB2b2lk
IHNldEN1cnJlbnRUaW1lKGZsb2F0KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2Fu
aW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKaW5kZXggZTkyY2EyZDY0YzRlLi5iMzJjNTczOTRl
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQu
Y3BwCkBAIC0xMDg3LDYgKzEwODcsMTIgQEAgYm9vbCBTVkdTTUlMRWxlbWVudDo6cHJvZ3Jlc3Mo
U01JTFRpbWUgZWxhcHNlZCwgU1ZHU01JTEVsZW1lbnQmIGZpcnN0QW5pbWF0aW9uLAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgp
LnBhZ2UoKTsgcGFnZSAmJiAhcGFnZS0+aW1hZ2VBbmltYXRpb25FbmFibGVkKCkpIHsKKyAgICAg
ICAgc3RvcEFuaW1hdGlvbihtX3RhcmdldEVsZW1lbnQuZ2V0KCkpOworICAgICAgICBtX2FjdGl2
ZVN0YXRlID0gSW5hY3RpdmU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBp
ZiAoZWxhcHNlZCA8IG1faW50ZXJ2YWxCZWdpbikgewogICAgICAgICBBU1NFUlQobV9hY3RpdmVT
dGF0ZSAhPSBBY3RpdmUpOwogICAgICAgICBpZiAobV9hY3RpdmVTdGF0ZSA9PSBGcm96ZW4pIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAyYjk1ZDE1ZjkwNjIuLmEzNTk0
NWYxNWY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTA2Nyw2ICsx
MDY3LDExIEBAIHZvaWQgSW50ZXJuYWxzOjpwYXVzZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVs
ZW1lbnQmIGVsZW1lbnQpCiAgICAgZWxlbWVudC5zZXRBbGxvd3NBbmltYXRpb24oZmFsc2UpOwog
fQogCitib29sIEludGVybmFsczo6aXNTVkdBbmltYXRpbmcoU1ZHU1ZHRWxlbWVudCYgZWxlbWVu
dCkKK3sKKyAgICByZXR1cm4gZWxlbWVudC5oYXNBY3RpdmVBbmltYXRpb24oKTsKK30KKwogdW5z
aWduZWQgSW50ZXJuYWxzOjppbWFnZVBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGlu
ZyhIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIHJldHVybiBlbGVtZW50LnBlbmRp
bmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKaW5kZXggNTUzMjA5MjgwYzBkLi44YzI4NWQ4MjQ3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaApAQCAtMjI1LDYgKzIyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElt
YWdlRnJhbWVEZWNvZGluZ0R1cmF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmLCBmbG9hdCBkdXJhdGlv
bik7CiAgICAgdm9pZCByZXNldEltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmKTsKICAg
ICBib29sIGlzSW1hZ2VBbmltYXRpbmcoSFRNTEltYWdlRWxlbWVudCYpOworICAgIGJvb2wgaXNT
VkdBbmltYXRpbmcoU1ZHU1ZHRWxlbWVudCYpOwogICAgIHZvaWQgc2V0SW1hZ2VBbmltYXRpb25F
bmFibGVkKGJvb2wpOwogICAgIHZvaWQgcmVzdW1lSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxl
bWVudCYpOwogICAgIHZvaWQgcGF1c2VJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggMmQwMzMzZDNhZjM3Li5hYjZk
YzI4YThkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTU1NCw2ICs1
NTQsNyBAQCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0Y2hPYmpl
Y3Q7CiAgICAgdW5kZWZpbmVkIHNldEltYWdlRnJhbWVEZWNvZGluZ0R1cmF0aW9uKEhUTUxJbWFn
ZUVsZW1lbnQgZWxlbWVudCwgdW5yZXN0cmljdGVkIGZsb2F0IGR1cmF0aW9uKTsKICAgICB1bmRl
ZmluZWQgcmVzZXRJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwogICAg
IGJvb2xlYW4gaXNJbWFnZUFuaW1hdGluZyhIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOworICAg
IGJvb2xlYW4gaXNTVkdBbmltYXRpbmcoU1ZHU1ZHRWxlbWVudCBlbGVtZW50KTsKICAgICB1bmRl
ZmluZWQgc2V0SW1hZ2VBbmltYXRpb25FbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAgICAgdW5k
ZWZpbmVkIHJlc3VtZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CiAg
ICAgdW5kZWZpbmVkIHBhdXNlSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVtZW50
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5pbWF0aW9u
cy1zdmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmlt
YXRpb25zLXN2Zy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5jZDkyN2RkYTA0YTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2ltYWdlcy9kaXNhYmxlLWFuaW1hdGlvbnMtc3ZnLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEw
IEBACitUaGlzIGVuc3VyZXMgdGhhdCBTVkcgYW5pbWF0aW9ucyBhcmUgZGlzYWJsZWQgd2hlbiB0
aGUgcGFnZS13aWRlIGltYWdlIGFuaW1hdGlvbiBzZXR0aW5nIGlzIHR1cm5lZCBvZmYuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGludGVybmFscy5pc1NWR0FuaW1hdGlu
ZyhzdmdFbGVtZW50KSBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rp
c2FibGUtYW5pbWF0aW9ucy1zdmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2Fi
bGUtYW5pbWF0aW9ucy1zdmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmM2NGJjMDhiMTQyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL2Rpc2FibGUtYW5pbWF0aW9ucy1zdmcuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxzdmcgdmVyc2lvbj0i
MS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJiYWNrZ3JvdW5k
LWNvbG9yOiByZ2IoMjMyLCAyMzIsIDIzNyk7IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHZpZXdCb3g9Ii00IC00IDgg
OCI+CisgIDxjaXJjbGUgY3g9IjAiIGN5PSIxIiByPSIyIiBzdHJva2U9InJlZCIgZmlsbD0ibm9u
ZSI+CisgICAgPGFuaW1hdGVUcmFuc2Zvcm0KKyAgICAgYXR0cmlidXRlTmFtZT0idHJhbnNmb3Jt
IgorICAgICBhdHRyaWJ1dGVUeXBlPSJYTUwiCisgICAgIHR5cGU9InJvdGF0ZSIKKyAgICAgZnJv
bT0iMCIKKyAgICAgdG89IjM2MCIKKyAgICAgYmVnaW49IjBzIgorICAgICBkdXI9IjFzIgorICAg
ICByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIKKyAgICAvPgorICA8L2NpcmNsZT4KKzwvc3ZnPgor
Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIGVuc3VyZXMgdGhhdCBTVkcgYW5pbWF0
aW9ucyBhcmUgZGlzYWJsZWQgd2hlbiB0aGUgcGFnZS13aWRlIGltYWdlIGFuaW1hdGlvbiBzZXR0
aW5nIGlzIHR1cm5lZCBvZmYuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50
ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlQW5pbWF0aW9uQ29udHJvbEVuYWJsZWQodHJ1ZSk7Cisg
ICAgaW50ZXJuYWxzLnNldEltYWdlQW5pbWF0aW9uRW5hYmxlZChmYWxzZSk7CisKKyAgICB2YXIg
c3ZnRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzdmciKVswXTsKKwor
ICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgi
aW50ZXJuYWxzLmlzU1ZHQW5pbWF0aW5nKHN2Z0VsZW1lbnQpIik7CisgICAgICAgIGludGVybmFs
cy5zZXRJbWFnZUFuaW1hdGlvbkVuYWJsZWQodHJ1ZSk7CisgICAgICAgIGludGVybmFscy5jbGVh
ck1lbW9yeUNhY2hlKCk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH07Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462749</attachid>
            <date>2022-10-01 13:16:34 -0700</date>
            <delta_ts>2022-10-01 16:29:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-245399-20221001151633.patch</filename>
            <type>text/plain</type>
            <size>23152</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSAzNDdmYzkxYTZkZGJmNDRjNTczM2U1YzJkNWFkODA5M2IxYmE0YzQyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogU2F0LCAxIE9jdCAyMDIyIDE0OjUyOjQ0IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gU1ZHIGFu
aW1hdGlvbnMgc2hvdWxkIHJlc3BlY3QgUGFnZTo6aW1hZ2VBbmltYXRpb25FbmFibGVkCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ1Mzk5IHJkYXI6Ly8xMDAxNDM3
MjMKClJldmlld2VkIGJ5IChOT0JPRFkpLgoKSW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI0NDEyOCAoQWRkIGV4cGVyaW1lbnRhbApmZWF0dXJlIHRvIGNvbnRyb2wg
aW1hZ2UgYW5pbWF0aW9uIHBsYXkvcGF1c2Ugc3RhdGUpLCB3ZSBhZGRlZCBhCnBhZ2Utd2lkZSBz
ZXR0aW5nIHRvIGNvbnRyb2wgYW5pbWF0aW9uIHBsYXkvcGF1c2Ugc3RhdGUuIFNWRwphbmltYXRp
b25zIHNob3VsZCByZXNwZWN0IHRoaXMgc2V0dGluZyB0b28uCgoqIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1h
bmltYXRpb25zLmh0bWw6IEFkZGVkLgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cDoKKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVwYWludFZpc2libGVJbWFnZUFuaW1hdGlvbnMpOgoo
V2ViQ29yZTo6RnJhbWVWaWV3OjpyZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGlu
Z1N1YmZyYW1lcyk6CiogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaDoKKiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6UGFnZTo6c2V0SW1hZ2VBbmltYXRpb25F
bmFibGVkKToKKFdlYkNvcmU6OlBhZ2U6OnJlcGFpbnRBbmltYXRlZEltYWdlcyk6CiogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwOgooV2ViQ29yZTo6UmVuZGVyVmlldzo6cmVwYWludEltYWdlQW5pbWF0aW9uc0lmTmVl
ZGVkKToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oOgoqIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwOgoqIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgooV2ViQ29yZTo6YW5pbWF0aW9uc1BhdXNlZEZv
ckRvY3VtZW50KToKKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHRG9jdW1lbnRF
eHRlbnNpb25zKToKKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6dW5wYXVzZUFuaW1h
dGlvbnMpOgoqIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaDoKKFdl
YkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6dGltZUNvbnRhaW5lcnNGb3JUZXN0aW5nIGNv
bnN0KTogQWRkZWQuCiogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoK
KFdlYkNvcmU6OlNWR0ltYWdlOjpyZXN1bWVBbmltYXRpb24pOiBBZGRlZC4KKiBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHA6CihXZWJDb3JlOjpJbnRlcm5hbHM6OmFsbFNWR1NWR0VsZW1lbnRzIGNvbnN0
KTogQWRkZWQuCiogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaDoKKiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGw6Ci0tLQogU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwICAgICAgICAgICAgIHwgIDEwICstCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAgICAgICAgICAgICAgICAgICB8ICAgNiArLQogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmggICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAgICAgICAgfCAgNDEgKysrLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmggICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVFbGVtZW50QmFzZS5jcHAgIHwgICAyICsKIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1
bWVudEV4dGVuc2lvbnMuY3BwICB8ICAxMSArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5oICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAgICAgICB8ICAgOCArCiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaCAgICAgICAgfCAgIDMgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwICAgICAgICAgIHwgIDE1ICsrCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
ICAgICAgICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
ICAgICAgICAgIHwgICAxICsKIC4uLmlkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRpb25zLWV4cGVj
dGVkLnR4dCB8ICA0NCArKysrKysKIC4uLi9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRp
b25zLmh0bWwgICB8IDE0NCArKysrKysrKysrKysrKysrKysKIDE2IGZpbGVzIGNoYW5nZWQsIDI3
NCBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRpb25zLWV4
cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Bh
Z2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMuaHRtbAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAppbmRleCBmMzJlZTc1Y2E3MmEuLjYwZGJjNTQ0YjA2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcApAQCAtMjgwOCwxMyArMjgwOCwxMyBAQCB2b2lkIEZyYW1lVmlldzo6cmVz
dW1lVmlzaWJsZUltYWdlQW5pbWF0aW9ucyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkKICAg
ICAgICAgcmVuZGVyVmlldy0+cmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQodmlz
aWJsZVJlY3QpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cmVwYWludFZpc2libGVJbWFnZUFuaW1h
dGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCit2b2lkIEZyYW1lVmlldzo6cmVwYWlu
dFZpc2libGVJbWFnZUFuaW1hdGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGJvb2wg
YW5pbWF0aW9uRW5hYmxlZCkKIHsKICAgICBpZiAodmlzaWJsZVJlY3QuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogcmVuZGVyVmlldyA9IGZyYW1lKCkuY29udGVu
dFJlbmRlcmVyKCkpCi0gICAgICAgIHJlbmRlclZpZXctPnJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJ
Zk5lZWRlZCh2aXNpYmxlUmVjdCk7CisgICAgICAgIHJlbmRlclZpZXctPnJlcGFpbnRJbWFnZUFu
aW1hdGlvbnNJZk5lZWRlZCh2aXNpYmxlUmVjdCwgYW5pbWF0aW9uRW5hYmxlZCk7CiB9CiAKIHZv
aWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JpcHRlZEFuaW1hdGlvbnNBbmRUaW1lcnNUaHJvdHRsaW5n
U3RhdGUoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCkBAIC0yODUyLDEwICsyODUyLDEwIEBA
IHZvaWQgRnJhbWVWaWV3OjpyZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3Vi
ZnJhbWVzKCkKICAgICB9KTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnJlcGFpbnRWaXNpYmxlSW1h
Z2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCkKK3ZvaWQgRnJhbWVWaWV3OjpyZXBhaW50
VmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcyhib29sIGFuaW1hdGlvbkVu
YWJsZWQpCiB7Ci0gICAgYXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChbXSAoRnJhbWVW
aWV3JiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KSB7Ci0gICAgICAgIGZy
YW1lVmlldy5yZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0aW9ucyh2aXNpYmxlUmVjdCk7CisgICAg
YXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChbJl0gKEZyYW1lVmlldyYgZnJhbWVWaWV3
LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkgeworICAgICAgICBmcmFtZVZpZXcucmVwYWlu
dFZpc2libGVJbWFnZUFuaW1hdGlvbnModmlzaWJsZVJlY3QsIGFuaW1hdGlvbkVuYWJsZWQpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBkOGQ4ZjNhYTA5MjEuLjk4
YjdmZTVhMjcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0zMjEsNyArMzIxLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCB2aWV3cG9ydENvbnRlbnRzQ2hhbmdlZCgpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZy
YW1lcygpOwotICAgIHZvaWQgcmVwYWludFZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdT
dWJmcmFtZXMoKTsKKyAgICB2b2lkIHJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVk
aW5nU3ViZnJhbWVzKGJvb2wgLyogYW5pbWF0aW9uRW5hYmxlZCAqLyk7CiAKICAgICBTdHJpbmcg
bWVkaWFUeXBlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZWRpYVR5cGUo
Y29uc3QgU3RyaW5nJik7CkBAIC03NzQsNyArNzc0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
YXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChjb25zdCBGdW5jdGlvbjx2b2lkKEZyYW1l
VmlldyYgZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk+Jik7CiAgICAgdm9p
ZCByZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0
KTsKLSAgICB2b2lkIHJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJlY3Qm
IHZpc2libGVSZWN0KTsKKyAgICB2b2lkIHJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNv
bnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBib29sIC8qIGFuaW1hdGlvbkVuYWJsZWQgKi8pOwog
ICAgIHZvaWQgdXBkYXRlU2NyaXB0ZWRBbmltYXRpb25zQW5kVGltZXJzVGhyb3R0bGluZ1N0YXRl
KGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YWRqdXN0VGlsZWRCYWNraW5nQ292ZXJhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGVlMThl
MmVmOGI4NC4uYTM0Yjc5Yzc4MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NTAsNyArMTk1
MCw3IEBAIHZvaWQgUGFnZTo6c2V0SW1hZ2VBbmltYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkK
ICAgICBpZiAobV9pbWFnZUFuaW1hdGlvbkVuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0
dXJuOwogICAgIG1faW1hZ2VBbmltYXRpb25FbmFibGVkID0gZW5hYmxlZDsKLSAgICByZXBhaW50
QW5pbWF0ZWRJbWFnZXMoKTsKKyAgICByZXBhaW50QW5pbWF0ZWRJbWFnZXMoZW5hYmxlZCk7CiB9
CiAKIHZvaWQgUGFnZTo6c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9ucygpCkBAIC00MDE5LDEwICs0
MDE5LDEwIEBAIHZvaWQgUGFnZTo6Zm9yY2VSZXBhaW50QWxsRnJhbWVzKCkKICAgICB9CiB9CiAK
LXZvaWQgUGFnZTo6cmVwYWludEFuaW1hdGVkSW1hZ2VzKCkKK3ZvaWQgUGFnZTo6cmVwYWludEFu
aW1hdGVkSW1hZ2VzKGJvb2wgYW5pbWF0aW9uRW5hYmxlZCkKIHsKICAgICBpZiAoYXV0byogdmll
dyA9IG1haW5GcmFtZSgpLnZpZXcoKSkKLSAgICAgICAgdmlldy0+cmVwYWludFZpc2libGVJbWFn
ZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKTsKKyAgICAgICAgdmlldy0+cmVwYWludFZp
c2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoYW5pbWF0aW9uRW5hYmxlZCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMmJlODk2OTEx
ZGNiLi4yZDA1NzUzNTE2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC02OTYsNyArNjk2LDcgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0
ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW5nSW1hZ2Vz
KCk7Ci0gICAgdm9pZCByZXBhaW50QW5pbWF0ZWRJbWFnZXMoKTsKKyAgICB2b2lkIHJlcGFpbnRB
bmltYXRlZEltYWdlcyhib29sIC8qIGFuaW1hdGlvbkVuYWJsZWQgKi8pOwogCiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDE3NjYwN2E0NzRlMy4uMWJi
MDlkYmUwZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC01
MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyUXVvdGUuaCIKICNpbmNsdWRlICJSZW5kZXJU
cmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgorI2luY2x1ZGUgIlNWR0lt
YWdlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERh
dGEuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgpAQCAtODc1LDI0ICs4NzYsNDYgQEAg
dm9pZCBSZW5kZXJWaWV3OjpyZXN1bWVQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25z
dCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkKICAgICAgICAgcmVtb3ZlUmVuZGVyZXJXaXRoUGF1c2Vk
SW1hZ2VBbmltYXRpb25zKCpwYWlyLmZpcnN0LCAqcGFpci5zZWNvbmQpOwogfQogCi12b2lkIFJl
bmRlclZpZXc6OnJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0JiB2
aXNpYmxlUmVjdCkKK3ZvaWQgUmVuZGVyVmlldzo6cmVwYWludEltYWdlQW5pbWF0aW9uc0lmTmVl
ZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBib29sIGFuaW1hdGlvbkVuYWJsZWQpCiB7
CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8UmVuZGVyRWxlbWVu
dD4oKnRoaXMpKSB7CiAgICAgICAgIGlmICghZWxlbWVudC5pc1Zpc2libGVJbkRvY3VtZW50UmVj
dCh2aXNpYmxlUmVjdCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAvLyBGSVhN
RTogQ2hlY2sgd2hldGhlciB0aGUgYmFja2dyb3VuZCBpbWFnZShzKSBjYW4gYW5pbWF0ZSBiZWZv
cmUgcmVwYWludGluZy4KLSAgICAgICAgaWYgKGVsZW1lbnQuc3R5bGUoKS5oYXNCYWNrZ3JvdW5k
SW1hZ2UoKSkgewotICAgICAgICAgICAgZWxlbWVudC5yZXBhaW50KCk7Ci0gICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgYXV0byB1cGRhdGVBbmltYXRpb25zID0gWyZdKFNWR0ltYWdlJiBz
dmdJbWFnZSkgeworICAgICAgICAgICAgaWYgKGFuaW1hdGlvbkVuYWJsZWQpCisgICAgICAgICAg
ICAgICAgc3ZnSW1hZ2UucmVzdW1lQW5pbWF0aW9uKCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgc3ZnSW1hZ2Uuc3RvcEFuaW1hdGlvbigpOworICAgICAgICB9OworCisgICAg
ICAgIGJvb2wgbmVlZHNSZXBhaW50ID0gZmFsc2U7CisgICAgICAgIGZvciAoY29uc3QgYXV0byog
bGF5ZXIgPSAmZWxlbWVudC5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKTsgbGF5ZXI7IGxheWVy
ID0gbGF5ZXItPm5leHQoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0g
bGF5ZXItPmltYWdlKCkgPyBsYXllci0+aW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKSA6IG51bGxwdHIp
IHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogc3ZnSW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8
U1ZHSW1hZ2U+KGNhY2hlZEltYWdlLT5pbWFnZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgdXBk
YXRlQW5pbWF0aW9ucygqc3ZnSW1hZ2UpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF1dG8q
IGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7IGltYWdlICYmIGltYWdlLT5pc0FuaW1hdGVk
KCkpCisgICAgICAgICAgICAgICAgICAgIG5lZWRzUmVwYWludCA9IHRydWU7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYXV0byogcmVuZGVySW1hZ2UgPSBkeW5hbWlj
RG93bmNhc3Q8UmVuZGVySW1hZ2U+KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBpZiAocmVuZGVy
SW1hZ2UtPmhhc0FuaW1hdGVkSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgIGVsZW1lbnQucmVw
YWludCgpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYXV0byogY2FjaGVkSW1hZ2UgPSByZW5kZXJJbWFnZS0+Y2FjaGVkSW1hZ2UoKTsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBzdmdJbWFnZSA9IGNhY2hlZEltYWdlID8gZHluYW1pY0Rvd25j
YXN0PFNWR0ltYWdlPihjYWNoZWRJbWFnZS0+aW1hZ2UoKSkgOiBudWxscHRyKQorICAgICAgICAg
ICAgICAgIHVwZGF0ZUFuaW1hdGlvbnMoKnN2Z0ltYWdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KHJlbmRlckltYWdlLT5oYXNBbmltYXRlZEltYWdlKCkpCisgICAgICAgICAgICAgICAgbmVlZHNS
ZXBhaW50ID0gdHJ1ZTsKICAgICAgICAgfQorCisgICAgICAgIGlmIChuZWVkc1JlcGFpbnQpCisg
ICAgICAgICAgICBlbGVtZW50LnJlcGFpbnQoKTsKKyAgICB9CisKKyAgICBpZiAoZG9jdW1lbnQo
KS5zdmdFeHRlbnNpb25zKCkpIHsKKyAgICAgICAgaWYgKGFuaW1hdGlvbkVuYWJsZWQpCisgICAg
ICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS51bnBhdXNlQW5pbWF0aW9u
cygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVu
c2lvbnMoKS5wYXVzZUFuaW1hdGlvbnMoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5oCmluZGV4IGRjMWE1ZDI1MjdlNi4uZGZhNDI3YzJjYjQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTE3Miw3ICsxNzIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZWdpc3RlckZvclZpc2libGVJblZpZXdwb3J0Q2FsbGJhY2soUmVuZGVyRWxl
bWVudCYpOwogICAgIHZvaWQgdW5yZWdpc3RlckZvclZpc2libGVJblZpZXdwb3J0Q2FsbGJhY2so
UmVuZGVyRWxlbWVudCYpOwogICAgIHZvaWQgcmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZO
ZWVkZWQoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpOwotICAgIHZvaWQgcmVwYWludEltYWdl
QW5pbWF0aW9uc0lmTmVlZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KTsKKyAgICB2b2lk
IHJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVj
dCwgYm9vbCAvKiBhbmltYXRpb25FbmFibGVkICovKTsKICAgICB2b2lkIGFkZFJlbmRlcmVyV2l0
aFBhdXNlZEltYWdlQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50JiwgQ2FjaGVkSW1hZ2UmKTsKICAg
ICB2b2lkIHJlbW92ZVJlbmRlcmVyV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9ucyhSZW5kZXJFbGVt
ZW50Jik7CiAgICAgdm9pZCByZW1vdmVSZW5kZXJlcldpdGhQYXVzZWRJbWFnZUFuaW1hdGlvbnMo
UmVuZGVyRWxlbWVudCYsIENhY2hlZEltYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlRWxlbWVudEJhc2UuY3BwCmluZGV4IGY2ZmY5NGIzYmQ4Yy4uN2E3OWU3NDZmYTQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcApAQCAtMjQs
NiArMjQsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVt
ZW50QmFzZS5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFuaW1hdG9y
LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9j
dW1lbnRFeHRlbnNpb25zLmNwcAppbmRleCBiOWI5NDUxMmE1ZWUuLjY2MjZjZWUzZmUxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTQyLDEw
ICs0MiwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBib29sIGFuaW1hdGlv
bnNQYXVzZWRGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgcmV0dXJuICFk
b2N1bWVudC5wYWdlKCkgfHwgIWRvY3VtZW50LnBhZ2UoKS0+aXNWaXNpYmxlKCkgfHwgIWRvY3Vt
ZW50LnBhZ2UoKS0+aW1hZ2VBbmltYXRpb25FbmFibGVkKCk7Cit9CisKIFNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6
IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX3Jlc291cmNlc0NhY2hlKG1ha2VVbmlxdWU8
U1ZHUmVzb3VyY2VzQ2FjaGU+KCkpCi0gICAgLCBtX2FyZUFuaW1hdGlvbnNQYXVzZWQoIWRvY3Vt
ZW50LnBhZ2UoKSB8fCAhZG9jdW1lbnQucGFnZSgpLT5pc1Zpc2libGUoKSkKKyAgICAsIG1fYXJl
QW5pbWF0aW9uc1BhdXNlZChhbmltYXRpb25zUGF1c2VkRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQog
ewogfQogCkBAIC0xMDgsNiArMTEzLDEwIEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpw
YXVzZUFuaW1hdGlvbnMoKQogCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6dW5wYXVzZUFu
aW1hdGlvbnMoKQogeworICAgIC8vIElmIGFuaW1hdGlvbnMgYXJlIHBhdXNlZCBhdCB0aGUgZG9j
dW1lbnQgbGV2ZWwsIGRvbid0IGFsbG93IGB0aGlzYCB0byBiZSB1bnBhdXNlZC4KKyAgICBpZiAo
YW5pbWF0aW9uc1BhdXNlZEZvckRvY3VtZW50KG1fZG9jdW1lbnQpKQorICAgICAgICByZXR1cm47
CisKICAgICBmb3IgKGF1dG8mIGNvbnRhaW5lciA6IG1fdGltZUNvbnRhaW5lcnMpCiAgICAgICAg
IGNvbnRhaW5lci51bnBhdXNlQW5pbWF0aW9ucygpOwogICAgIG1fYXJlQW5pbWF0aW9uc1BhdXNl
ZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCmlu
ZGV4IGRmNWMwMDg4NGU2ZC4uODc5Y2ExMGRiMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0RvY3VtZW50RXh0ZW5zaW9ucy5oCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYWRkVGltZUNvbnRhaW5lcihTVkdTVkdFbGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVUaW1l
Q29udGFpbmVyKFNWR1NWR0VsZW1lbnQmKTsKKyAgICBXZWFrSGFzaFNldDxTVkdTVkdFbGVtZW50
LCBXZWFrUHRySW1wbFdpdGhFdmVudFRhcmdldERhdGE+IHRpbWVDb250YWluZXJzRm9yVGVzdGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUNvbnRhaW5lcnM7IH0KIAogICAgIHZvaWQgYWRkUmVz
b3VyY2UoY29uc3QgQXRvbVN0cmluZyYgaWQsIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyJik7
CiAgICAgdm9pZCByZW1vdmVSZXNvdXJjZShjb25zdCBBdG9tU3RyaW5nJiBpZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCAxY2Y4ZTE5YTU2OTUuLjQ3OWY4
YTZkMjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0z
ODUsNiArMzg1LDE0IEBAIHZvaWQgU1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKCkKICAgICByb290
RWxlbWVudC0+c2V0Q3VycmVudFRpbWUoMCk7CiB9CiAKK3ZvaWQgU1ZHSW1hZ2U6OnJlc3VtZUFu
aW1hdGlvbigpCit7CisgICAgYXV0byByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7
CisgICAgaWYgKCFyb290RWxlbWVudCB8fCAhcm9vdEVsZW1lbnQtPmFuaW1hdGlvbnNQYXVzZWQo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIHJvb3RFbGVtZW50LT51bnBhdXNlQW5pbWF0aW9ucygp
OworfQorCiB2b2lkIFNWR0ltYWdlOjpzdG9wQW5pbWF0aW9uKCkKIHsKICAgICBtX3N0YXJ0QW5p
bWF0aW9uVGltZXIuc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApp
bmRleCBmODAzMWUwYjBjYjguLmYwNjM1M2U5OGU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmgKQEAgLTU1LDcgKzU1LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1Jl
bGF0aXZlV2lkdGgoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGhhc1JlbGF0aXZlSGVpZ2h0KCkg
Y29uc3QgZmluYWw7CiAKKyAgICAvLyBTdGFydCB0aGUgYW5pbWF0aW9uIGZyb20gdGhlIGJlZ2lu
bmluZy4KICAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uKCkgZmluYWw7CisgICAgLy8gUmVzdW1lIHRo
ZSBhbmltYXRpb24gZnJvbSB3aGVyZSBpdCB3YXMgbGFzdCBzdG9wcGVkLgorICAgIHZvaWQgcmVz
dW1lQW5pbWF0aW9uKCk7CiAgICAgdm9pZCBzdG9wQW5pbWF0aW9uKCkgZmluYWw7CiAgICAgdm9p
ZCByZXNldEFuaW1hdGlvbigpIGZpbmFsOwogICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdCBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAyYjk1ZDE1ZjkwNjIu
LmYwNWE5ZGM0YjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNzgz
LDYgKzc4MywyMSBAQCBFeGNlcHRpb25Pcjxkb3VibGU+IEludGVybmFsczo6c3ZnQW5pbWF0aW9u
c0ludGVydmFsKFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQpIGNvbgogICAgIHJldHVybiBlbGVtZW50
LnRpbWVDb250YWluZXIoKS5hbmltYXRpb25GcmFtZURlbGF5KCkudmFsdWUoKTsKIH0KIAorVmVj
dG9yPFJlZjxTVkdTVkdFbGVtZW50Pj4gSW50ZXJuYWxzOjphbGxTVkdTVkdFbGVtZW50cygpIGNv
bnN0Cit7CisgICAgVmVjdG9yPFJlZjxTVkdTVkdFbGVtZW50Pj4gZWxlbWVudHM7CisgICAgZm9y
IChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgICAgICBp
ZiAoIWRvY3VtZW50LT5zdmdFeHRlbnNpb25zKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBkb2N1bWVudC0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnRpbWVDb250YWluZXJzRm9y
VGVzdGluZygpLmZvckVhY2goWyZlbGVtZW50c10gKFdlYWtQdHI8U1ZHU1ZHRWxlbWVudCwgV2Vh
a1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRhPiBlbGVtZW50KSB7CisgICAgICAgICAgICBpZiAo
ZWxlbWVudCkKKyAgICAgICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQoKmVsZW1lbnQpOworICAg
ICAgICB9KTsKKyAgICB9CisgICAgcmV0dXJuIGVsZW1lbnRzOworfQorCiBTdHJpbmcgSW50ZXJu
YWxzOjphZGRyZXNzKE5vZGUmIG5vZGUpCiB7CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIjB4Iiwg
aGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pigmbm9kZSkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCmluZGV4IDU1MzIwOTI4MGMwZC4uNTMwNzM5YTdmZWJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTQ0Myw2ICs0NDMsOCBAQCBwdWJsaWM6CiAgICAgdW5z
aWduZWQgd29ya2VyVGhyZWFkQ291bnQoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjxib29sPiBh
cmVTVkdBbmltYXRpb25zUGF1c2VkKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8ZG91YmxlPiBz
dmdBbmltYXRpb25zSW50ZXJ2YWwoU1ZHU1ZHRWxlbWVudCYpIGNvbnN0OworICAgIC8vIFNvbWUg
U1ZHIGVsZW1lbnRzIGFyZSBub3QgYWNjZXNzaWJsZSB2aWEgbm9ybWFsIEFQSXMgKGUuZy4gdGhv
c2UgaW4gQ1NTIGBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2Zz4u
Li4pYCwgYnV0IHdlIG5lZWQgYWNjZXNzIHRvIHRoZW0gZm9yIHRlc3RpbmcuCisgICAgVmVjdG9y
PFJlZjxTVkdTVkdFbGVtZW50Pj4gYWxsU1ZHU1ZHRWxlbWVudHMoKSBjb25zdDsKIAogICAgIGVu
dW0gewogICAgICAgICAvLyBWYWx1ZXMgbmVlZCB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCBJbnRl
cm5hbHMuaWRsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDJkMDMzM2Qz
YWYzNy4uN2ExOGNjZWUwOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBA
IC01NzIsNiArNTcyLDcgQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2Up
IEZldGNoT2JqZWN0OwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYXJlU1ZHQW5p
bWF0aW9uc1BhdXNlZDsKICAgICBkb3VibGUgc3ZnQW5pbWF0aW9uc0ludGVydmFsKFNWR1NWR0Vs
ZW1lbnQgZWxlbWVudCk7CisgICAgc2VxdWVuY2U8U1ZHU1ZHRWxlbWVudD4gYWxsU1ZHU1ZHRWxl
bWVudHMoKTsKIAogICAgIGJvb2xlYW4gdGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1do
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1zdmctYW5pbWF0aW9u
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5k
MmIxNGU5NTc1ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9w
YWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQ0IEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IFNWRyBhbmltYXRpb25zIHBhdXNlZCBhbmQg
cmVzdW1lZCB3aGVuIHRoZSBwYWdlLXdpZGUgaW1hZ2UgYW5pbWF0aW9uIHNldHRpbmcgaXMgdG9n
Z2xlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKy0tLS0tIERpc2FibGluZyBp
bWFnZSBhbmltYXRpb25zLiAtLS0tLQorCitUZXN0aW5nICNhbmltYXRlVHJhbnNmb3JtLXN2Zy4K
K1BBU1Mgc3ZnTWF0cmljZXNBcmVFcXVhbChnZXRBbmltYXRlVHJhbnNmb3JtTWF0cml4KHN2Z1N2
Z0VsZW1lbnQpLCBpbml0aWFsQW5pbWF0ZVRyYW5zZm9ybU1hdHJpeCkgaXMgdHJ1ZQorCitUZXN0
aW5nICNjc3MtYmFja2dyb3VuZC1zdmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQuY2hpbGRyZW5bMF0u
eC5hbmltVmFsLnZhbHVlID09PSAwIGlzIHRydWUKKworVGVzdGluZyAjaWZyYW1lLXNyY2RvYy1z
dmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQuY2hpbGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlID09PSAw
IGlzIHRydWUKKworVGVzdGluZyAjaW1nLXNyYy1zdmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQuY2hp
bGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlID09PSAwIGlzIHRydWUKKworVGVzdGluZyAjaW5saW5l
LXN2Zy4KK1BBU1Mgc3ZnU3ZnRWxlbWVudC5jaGlsZHJlblswXS54LmFuaW1WYWwudmFsdWUgPT09
IDAgaXMgdHJ1ZQorCistLS0tLSBFbmFibGluZyBpbWFnZSBhbmltYXRpb25zLiAtLS0tLQorCitU
ZXN0aW5nICNhbmltYXRlVHJhbnNmb3JtLXN2Zy4KK1BBU1Mgc3ZnTWF0cmljZXNBcmVFcXVhbChn
ZXRBbmltYXRlVHJhbnNmb3JtTWF0cml4KHN2Z1N2Z0VsZW1lbnQpLCBpbml0aWFsQW5pbWF0ZVRy
YW5zZm9ybU1hdHJpeCkgaXMgZmFsc2UKKworVGVzdGluZyAjY3NzLWJhY2tncm91bmQtc3ZnLgor
UEFTUyBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAhPT0gMCBpcyB0
cnVlCisKK1Rlc3RpbmcgI2lmcmFtZS1zcmNkb2Mtc3ZnLgorUEFTUyBzdmdTdmdFbGVtZW50LmNo
aWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAhPT0gMCBpcyB0cnVlCisKK1Rlc3RpbmcgI2ltZy1z
cmMtc3ZnLgorUEFTUyBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAh
PT0gMCBpcyB0cnVlCisKK1Rlc3RpbmcgI2lubGluZS1zdmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQu
Y2hpbGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlICE9PSAwIGlzIHRydWUKKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1zdmctYW5pbWF0aW9ucy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1zdmctYW5p
bWF0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjk2
YTgyNTdjNTA0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFn
ZXdpZGUtcGxheS1wYXVzZS1zdmctYW5pbWF0aW9ucy5odG1sCkBAIC0wLDAgKzEsMTQ0IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorLmJveCB7CisgIHdpZHRoOiAzMDBw
eDsKKyAgaGVpZ2h0OiAyMDBweDsKKyAgYmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4
bWw7dXRmOCw8c3ZnIGlkPSJjc3MtYmFja2dyb3VuZC1zdmciIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyI+PHJlY3QgaWQ9ImJhY2tncm91bmQtaW1hZ2Utc3ZnLXJlY3QiIHdpZHRo
PSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiI+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0i
eCIgZnJvbT0iMCIgdG89IjIwMCIgZHVyPSI1cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz48
L3JlY3Q+PC9zdmc+Jyk7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzwhLS0gQmFz
aWMgaW5saW5lIFNWRyBhbmltYXRpb24gLS0+Cis8c3ZnIGlkPSJpbmxpbmUtc3ZnIiB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICA8cmVjdCBpZD0ic3ZnLXJlY3QiIHdpZHRo
PSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiI+CisgICAgPGFuaW1hdGUgYXR0cmlidXRl
TmFtZT0ieCIgZnJvbT0iMCIgdG89IjIwMCIgZHVyPSI1cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5p
dGUiLz4KKyAgPC9yZWN0PgorPC9zdmc+CisKKzwhLS0gYW5pbWF0ZVRyYW5zZm9ybSBTVkcgLS0+
Cis8c3ZnIGlkPSJhbmltYXRlVHJhbnNmb3JtLXN2ZyIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMy
LCAyMzIsIDIzNyk7IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIg
d2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHZpZXdCb3g9Ii00IC00IDggOCI+CisgIDxjaXJjbGUg
Y3g9IjAiIGN5PSIxIiByPSIyIiBzdHJva2U9InJlZCIgZmlsbD0ibm9uZSI+CisgICAgPGFuaW1h
dGVUcmFuc2Zvcm0KKyAgICAgIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIKKyAgICAgIGF0dHJp
YnV0ZVR5cGU9IlhNTCIKKyAgICAgIHR5cGU9InJvdGF0ZSIKKyAgICAgIGZyb209IjAiCisgICAg
ICB0bz0iMzYwIgorICAgICAgYmVnaW49IjBzIgorICAgICAgZHVyPSIxcyIKKyAgICAgIHJlcGVh
dENvdW50PSJpbmRlZmluaXRlIi8+CisgIDwvY2lyY2xlPgorPC9zdmc+CisKKzwhLS0gQ1NTIGJh
Y2tncm91bmQgU1ZHIGFuaW1hdGlvbiAtLT4KKzxkaXYgY2xhc3M9ImJveCI+PC9kaXY+CisKKzwh
LS0gU1ZHIGFuaW1hdGlvbiBlbWJlZGRlZCBpbiA8aW1nPiAtLT4KKzxpbWcgc3JjPQorJ2RhdGE6
aW1hZ2Uvc3ZnK3htbDt1dGY4LAorICA8c3ZnIGlkPSJpbWctc3JjLXN2ZyIgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw
MCIgZmlsbD0iZ3JlZW4iPgorICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ieCIgZnJvbT0i
MCIgdG89IjIwMCIgZHVyPSI1cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz4KKyAgICA8L3Jl
Y3Q+CisgIDwvc3ZnPgorJz4KKworPCEtLSBTVkcgYW5pbWF0aW9uIGVtYmVkZGVkIGluIDxpZnJh
bWU+IC0tPgorPGlmcmFtZSBzcmNkb2M9JworICA8c3ZnIGlkPSJpZnJhbWUtc3JjZG9jLXN2ZyIg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICA8cmVjdCB3aWR0aD0iMTAw
IiBoZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iPgorICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFt
ZT0ieCIgZnJvbT0iMCIgdG89IjIwMCIgZHVyPSI1cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUi
Lz4KKyAgICA8L3JlY3Q+CisgIDwvc3ZnPgorJz48L2lmcmFtZT4KKworPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IFNWRyBhbmltYXRpb25zIHBhdXNlZCBhbmQg
cmVzdW1lZCB3aGVuIHRoZSBwYWdlLXdpZGUgaW1hZ2UgYW5pbWF0aW9uIHNldHRpbmcgaXMgdG9n
Z2xlZC4iKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHN2Z1N2Z0VsZW1l
bnQsIGluaXRpYWxBbmltYXRlVHJhbnNmb3JtTWF0cml4OworCisvLyBIYXJkY29kZWQgdG8gdGhl
IHN0cnVjdHVyZSBvZiAjYW5pbWF0ZVRyYW5zZm9ybS1zdmcuIElmIHlvdSBjaGFuZ2UgdGhlIG1h
cmt1cCwgeW91IG11c3QgYWxzbyBjaGFuZ2UgdGhpcyBmdW5jdGlvbi4KK2Z1bmN0aW9uIGdldEFu
aW1hdGVUcmFuc2Zvcm1NYXRyaXgoc3ZnU3ZnRWxlbWVudCkgeworICAgIHJldHVybiBzdmdTdmdF
bGVtZW50LmNoaWxkcmVuWzBdLnRyYW5zZm9ybS5hbmltVmFsLmdldEl0ZW0oMCkubWF0cml4Owor
fQorCitmdW5jdGlvbiBzdmdNYXRyaWNlc0FyZUVxdWFsKG1hdHJpeEEsIG1hdHJpeEIpIHsKKyAg
cmV0dXJuIG1hdHJpeEEuYSA9PT0gbWF0cml4Qi5hCisgICAgJiYgbWF0cml4QS5iID09PSBtYXRy
aXhCLmIKKyAgICAmJiBtYXRyaXhBLmMgPT09IG1hdHJpeEIuYworICAgICYmIG1hdHJpeEEuZCA9
PT0gbWF0cml4Qi5kCisgICAgJiYgbWF0cml4QS5lID09PSBtYXRyaXhCLmUKKyAgICAmJiBtYXRy
aXhBLmYgPT09IG1hdHJpeEIuZjsKK30KKworZnVuY3Rpb24gdmVyaWZ5U1ZHc0FyZVBhdXNlZChl
eHBlY3RQYXVzZWQpIHsKKyAgY29uc3Qgc29ydGVkU1ZHU1ZHRWxlbWVudHMgPSBpbnRlcm5hbHMu
YWxsU1ZHU1ZHRWxlbWVudHMoKS5zb3J0KChlbGVtZW50QSwgZWxlbWVudEIpID0+IHsKKyAgICBp
ZiAoZWxlbWVudEEuaWQgPiBlbGVtZW50Qi5pZCkKKyAgICAgIHJldHVybiAxOworCisgICAgaWYg
KGVsZW1lbnRBLmlkIDwgZWxlbWVudEIuaWQpCisgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1
cm4gMDsKKyAgfSk7CisKKyAgZm9yIChjb25zdCBlbGVtZW50IG9mIHNvcnRlZFNWR1NWR0VsZW1l
bnRzKSB7CisgICAgc3ZnU3ZnRWxlbWVudCA9IGVsZW1lbnQ7CisgICAgZGVidWcoYFRlc3Rpbmcg
IyR7c3ZnU3ZnRWxlbWVudC5pZH0uYCk7CisgICAgc3dpdGNoIChzdmdTdmdFbGVtZW50LmlkKSB7
CisgICAgICBjYXNlICJjc3MtYmFja2dyb3VuZC1zdmciOgorICAgICAgY2FzZSAiaW5saW5lLXN2
ZyI6CisgICAgICBjYXNlICJpbWctc3JjLXN2ZyI6CisgICAgICBjYXNlICJpZnJhbWUtc3JjZG9j
LXN2ZyI6CisgICAgICAgIGlmICghKHN2Z1N2Z0VsZW1lbnQuY2hpbGRyZW5bMF0gaW5zdGFuY2Vv
ZiBTVkdSZWN0RWxlbWVudCkpCisgICAgICAgICAgZGVidWcoYEZBSUw6ICdjaGlsZHJlblswXScg
b2YgJHtzdmdTdmdFbGVtZW50LmlkfSBzaG91bGQndmUgYmVlbiBhbiBTVkdSZWN0RWxlbWVudCBi
dXQgd2Fzbid0LCBzbyB0aGlzIHRlc3Qgd29uJ3QgYmVoYXZlIGFzIGV4cGVjdGVkLmApOworICAg
ICAgICBzaG91bGRCZVRydWUoYHN2Z1N2Z0VsZW1lbnQuY2hpbGRyZW5bMF0ueC5hbmltVmFsLnZh
bHVlICR7ZXhwZWN0UGF1c2VkID8gIj09PSIgOiAiIT09In0gMGApOworICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgImFuaW1hdGVUcmFuc2Zvcm0tc3ZnIjoKKyAgICAgICAgc2hvdWxkQmUoInN2
Z01hdHJpY2VzQXJlRXF1YWwoZ2V0QW5pbWF0ZVRyYW5zZm9ybU1hdHJpeChzdmdTdmdFbGVtZW50
KSwgaW5pdGlhbEFuaW1hdGVUcmFuc2Zvcm1NYXRyaXgpIiwgZXhwZWN0UGF1c2VkID8gInRydWUi
IDogImZhbHNlIik7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgZGVi
dWcoYEZBSUw6IFNWRyB0ZXN0Y2FzZSB3aXRoIHVuZXhwZWN0ZWQgSUQ6ICR7c3ZnU3ZnRWxlbWVu
dC5pZH1gKTsKKyAgICB9CisgICAgZGVidWcoIiIpOworICB9Cit9CisKK3dpbmRvdy5vbmxvYWQg
PSBmdW5jdGlvbigpIHsKKyAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgZGVidWcoIi0tLS0tIERp
c2FibGluZyBpbWFnZSBhbmltYXRpb25zLiAtLS0tLVxuIik7CisgICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXRJbWFnZUFuaW1hdGlvbkNvbnRyb2xFbmFibGVkKHRydWUpOworICAgIHdp
bmRvdy5pbnRlcm5hbHMuc2V0SW1hZ2VBbmltYXRpb25FbmFibGVkKGZhbHNlKTsKKworICAgIC8v
IFJlc2V0IGFuaW1hdGlvbnMgdG8gdGhlIGJlZ2lubmluZy4KKyAgICBmb3IgKGNvbnN0IGVsZW1l
bnQgb2YgaW50ZXJuYWxzLmFsbFNWR1NWR0VsZW1lbnRzKCkpIHsKKyAgICAgIGVsZW1lbnQuc2V0
Q3VycmVudFRpbWUoMCk7CisgICAgICBpZiAoZWxlbWVudC5pZCA9PT0gImFuaW1hdGVUcmFuc2Zv
cm0tc3ZnIikKKyAgICAgICAgaW5pdGlhbEFuaW1hdGVUcmFuc2Zvcm1NYXRyaXggPSBnZXRBbmlt
YXRlVHJhbnNmb3JtTWF0cml4KGVsZW1lbnQpOworICAgIH0KKworICAgIC8vIEFsbG93IHNvbWUg
dGltZSB0byBwYXNzLgorICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgLy8gQWZ0ZXIgNTBt
cywgdGhlIGFuaW1hdGlvbnMgc2hvdWxkIG5vdCBoYXZlIHByb2dyZXNzZWQgYmVjYXVzZSB0aGUg
cGFnZS13aWRlIGltYWdlIGFuaW1hdGlvbiBzZXR0aW5nIGlzIGRpc2FibGVkLgorICAgICAgdmVy
aWZ5U1ZHc0FyZVBhdXNlZCh0cnVlKTsKKworICAgICAgZGVidWcoIi0tLS0tIEVuYWJsaW5nIGlt
YWdlIGFuaW1hdGlvbnMuIC0tLS0tXG4iKTsKKyAgICAgIC8vIFJlLWVuYWJsZSBhbmltYXRpb25z
IGFuZCBhbGxvdyB0aW1lIHRvIHBhc3Mgc28gdGhleSBjYW4gcHJvZ3Jlc3MuCisgICAgICBpbnRl
cm5hbHMuc2V0SW1hZ2VBbmltYXRpb25FbmFibGVkKHRydWUpOworICAgICAgc2V0VGltZW91dCgo
KSA9PiB7CisgICAgICAgIHZlcmlmeVNWR3NBcmVQYXVzZWQoZmFsc2UpOworCisgICAgICAgIGlu
dGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgfSwgNTApOworICAgIH0sIDUwKTsKKyAgfSwgNTApCit9OworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462755</attachid>
            <date>2022-10-01 16:29:07 -0700</date>
            <delta_ts>2022-10-01 18:09:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-245399-20221001182906.patch</filename>
            <type>text/plain</type>
            <size>23456</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA3N2M0NzQzMzY2OGViNGQ2ZTM5ZjQ5MWU4MjliNzAxNTgyNzEyYjdkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogU2F0LCAxIE9jdCAyMDIyIDE0OjUyOjQ0IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gU1ZHIGFu
aW1hdGlvbnMgc2hvdWxkIHJlc3BlY3QgUGFnZTo6aW1hZ2VBbmltYXRpb25FbmFibGVkCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ1Mzk5IHJkYXI6Ly8xMDAxNDM3
MjMKClJldmlld2VkIGJ5IChOT0JPRFkpLgoKSW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI0NDEyOCAoQWRkIGV4cGVyaW1lbnRhbApmZWF0dXJlIHRvIGNvbnRyb2wg
aW1hZ2UgYW5pbWF0aW9uIHBsYXkvcGF1c2Ugc3RhdGUpLCB3ZSBhZGRlZCBhCnBhZ2Utd2lkZSBz
ZXR0aW5nIHRvIGNvbnRyb2wgYW5pbWF0aW9uIHBsYXkvcGF1c2Ugc3RhdGUuIFNWRwphbmltYXRp
b25zIHNob3VsZCByZXNwZWN0IHRoaXMgc2V0dGluZyB0b28uCgoqIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1h
bmltYXRpb25zLmh0bWw6IEFkZGVkLgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cDoKKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVwYWludFZpc2libGVJbWFnZUFuaW1hdGlvbnMpOgoo
V2ViQ29yZTo6RnJhbWVWaWV3OjpyZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGlu
Z1N1YmZyYW1lcyk6CiogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaDoKKiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6UGFnZTo6c2V0SW1hZ2VBbmltYXRpb25F
bmFibGVkKToKKFdlYkNvcmU6OlBhZ2U6OnJlcGFpbnRBbmltYXRlZEltYWdlcyk6CiogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwOgooV2ViQ29yZTo6UmVuZGVyVmlldzo6cmVwYWludEltYWdlQW5pbWF0aW9uc0lmTmVl
ZGVkKToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oOgoqIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwOgoqIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgooV2ViQ29yZTo6YW5pbWF0aW9uc1BhdXNlZEZv
ckRvY3VtZW50KToKKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHRG9jdW1lbnRF
eHRlbnNpb25zKToKKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6dW5wYXVzZUFuaW1h
dGlvbnMpOgoqIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaDoKKFdl
YkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6dGltZUNvbnRhaW5lcnNGb3JUZXN0aW5nIGNv
bnN0KTogQWRkZWQuCiogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoK
KFdlYkNvcmU6OlNWR0ltYWdlOjpyZXN1bWVBbmltYXRpb24pOiBBZGRlZC4KKiBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHA6CihXZWJDb3JlOjpJbnRlcm5hbHM6OmFsbFNWR1NWR0VsZW1lbnRzIGNvbnN0
KTogQWRkZWQuCiogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaDoKKiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGw6Ci0tLQogU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwICAgICAgICAgICAgIHwgIDEwICstCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAgICAgICAgICAgICAgICAgICB8ICAgNiArLQogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmggICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAgICAgICAgfCAgNDEgKysrLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmggICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVFbGVtZW50QmFzZS5jcHAgIHwgICAyICsKIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1
bWVudEV4dGVuc2lvbnMuY3BwICB8ICAxMSArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5oICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAgICAgICB8ICAgOCArCiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaCAgICAgICAgfCAgIDMgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwICAgICAgICAgIHwgIDE1ICsrCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
ICAgICAgICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
ICAgICAgICAgIHwgICAxICsKIC4uLmlkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRpb25zLWV4cGVj
dGVkLnR4dCB8ICA0NCArKysrKysKIC4uLi9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRp
b25zLmh0bWwgICB8IDE0NyArKysrKysrKysrKysrKysrKysKIDE2IGZpbGVzIGNoYW5nZWQsIDI3
NyBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRpb25zLWV4
cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Bh
Z2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMuaHRtbAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAppbmRleCBmMzJlZTc1Y2E3MmEuLjYwZGJjNTQ0YjA2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcApAQCAtMjgwOCwxMyArMjgwOCwxMyBAQCB2b2lkIEZyYW1lVmlldzo6cmVz
dW1lVmlzaWJsZUltYWdlQW5pbWF0aW9ucyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkKICAg
ICAgICAgcmVuZGVyVmlldy0+cmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQodmlz
aWJsZVJlY3QpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cmVwYWludFZpc2libGVJbWFnZUFuaW1h
dGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCit2b2lkIEZyYW1lVmlldzo6cmVwYWlu
dFZpc2libGVJbWFnZUFuaW1hdGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGJvb2wg
YW5pbWF0aW9uRW5hYmxlZCkKIHsKICAgICBpZiAodmlzaWJsZVJlY3QuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogcmVuZGVyVmlldyA9IGZyYW1lKCkuY29udGVu
dFJlbmRlcmVyKCkpCi0gICAgICAgIHJlbmRlclZpZXctPnJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJ
Zk5lZWRlZCh2aXNpYmxlUmVjdCk7CisgICAgICAgIHJlbmRlclZpZXctPnJlcGFpbnRJbWFnZUFu
aW1hdGlvbnNJZk5lZWRlZCh2aXNpYmxlUmVjdCwgYW5pbWF0aW9uRW5hYmxlZCk7CiB9CiAKIHZv
aWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JpcHRlZEFuaW1hdGlvbnNBbmRUaW1lcnNUaHJvdHRsaW5n
U3RhdGUoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCkBAIC0yODUyLDEwICsyODUyLDEwIEBA
IHZvaWQgRnJhbWVWaWV3OjpyZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3Vi
ZnJhbWVzKCkKICAgICB9KTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnJlcGFpbnRWaXNpYmxlSW1h
Z2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCkKK3ZvaWQgRnJhbWVWaWV3OjpyZXBhaW50
VmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcyhib29sIGFuaW1hdGlvbkVu
YWJsZWQpCiB7Ci0gICAgYXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChbXSAoRnJhbWVW
aWV3JiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KSB7Ci0gICAgICAgIGZy
YW1lVmlldy5yZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0aW9ucyh2aXNpYmxlUmVjdCk7CisgICAg
YXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChbJl0gKEZyYW1lVmlldyYgZnJhbWVWaWV3
LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkgeworICAgICAgICBmcmFtZVZpZXcucmVwYWlu
dFZpc2libGVJbWFnZUFuaW1hdGlvbnModmlzaWJsZVJlY3QsIGFuaW1hdGlvbkVuYWJsZWQpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBkOGQ4ZjNhYTA5MjEuLjk4
YjdmZTVhMjcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0zMjEsNyArMzIxLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCB2aWV3cG9ydENvbnRlbnRzQ2hhbmdlZCgpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZy
YW1lcygpOwotICAgIHZvaWQgcmVwYWludFZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdT
dWJmcmFtZXMoKTsKKyAgICB2b2lkIHJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVk
aW5nU3ViZnJhbWVzKGJvb2wgLyogYW5pbWF0aW9uRW5hYmxlZCAqLyk7CiAKICAgICBTdHJpbmcg
bWVkaWFUeXBlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZWRpYVR5cGUo
Y29uc3QgU3RyaW5nJik7CkBAIC03NzQsNyArNzc0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
YXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChjb25zdCBGdW5jdGlvbjx2b2lkKEZyYW1l
VmlldyYgZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk+Jik7CiAgICAgdm9p
ZCByZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0
KTsKLSAgICB2b2lkIHJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJlY3Qm
IHZpc2libGVSZWN0KTsKKyAgICB2b2lkIHJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNv
bnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBib29sIC8qIGFuaW1hdGlvbkVuYWJsZWQgKi8pOwog
ICAgIHZvaWQgdXBkYXRlU2NyaXB0ZWRBbmltYXRpb25zQW5kVGltZXJzVGhyb3R0bGluZ1N0YXRl
KGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YWRqdXN0VGlsZWRCYWNraW5nQ292ZXJhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGVlMThl
MmVmOGI4NC4uYTM0Yjc5Yzc4MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NTAsNyArMTk1
MCw3IEBAIHZvaWQgUGFnZTo6c2V0SW1hZ2VBbmltYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkK
ICAgICBpZiAobV9pbWFnZUFuaW1hdGlvbkVuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0
dXJuOwogICAgIG1faW1hZ2VBbmltYXRpb25FbmFibGVkID0gZW5hYmxlZDsKLSAgICByZXBhaW50
QW5pbWF0ZWRJbWFnZXMoKTsKKyAgICByZXBhaW50QW5pbWF0ZWRJbWFnZXMoZW5hYmxlZCk7CiB9
CiAKIHZvaWQgUGFnZTo6c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9ucygpCkBAIC00MDE5LDEwICs0
MDE5LDEwIEBAIHZvaWQgUGFnZTo6Zm9yY2VSZXBhaW50QWxsRnJhbWVzKCkKICAgICB9CiB9CiAK
LXZvaWQgUGFnZTo6cmVwYWludEFuaW1hdGVkSW1hZ2VzKCkKK3ZvaWQgUGFnZTo6cmVwYWludEFu
aW1hdGVkSW1hZ2VzKGJvb2wgYW5pbWF0aW9uRW5hYmxlZCkKIHsKICAgICBpZiAoYXV0byogdmll
dyA9IG1haW5GcmFtZSgpLnZpZXcoKSkKLSAgICAgICAgdmlldy0+cmVwYWludFZpc2libGVJbWFn
ZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKTsKKyAgICAgICAgdmlldy0+cmVwYWludFZp
c2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoYW5pbWF0aW9uRW5hYmxlZCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMmJlODk2OTEx
ZGNiLi4yZDA1NzUzNTE2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC02OTYsNyArNjk2LDcgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0
ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW5nSW1hZ2Vz
KCk7Ci0gICAgdm9pZCByZXBhaW50QW5pbWF0ZWRJbWFnZXMoKTsKKyAgICB2b2lkIHJlcGFpbnRB
bmltYXRlZEltYWdlcyhib29sIC8qIGFuaW1hdGlvbkVuYWJsZWQgKi8pOwogCiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDE3NjYwN2E0NzRlMy4uMWJi
MDlkYmUwZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC01
MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyUXVvdGUuaCIKICNpbmNsdWRlICJSZW5kZXJU
cmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgorI2luY2x1ZGUgIlNWR0lt
YWdlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERh
dGEuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgpAQCAtODc1LDI0ICs4NzYsNDYgQEAg
dm9pZCBSZW5kZXJWaWV3OjpyZXN1bWVQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25z
dCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkKICAgICAgICAgcmVtb3ZlUmVuZGVyZXJXaXRoUGF1c2Vk
SW1hZ2VBbmltYXRpb25zKCpwYWlyLmZpcnN0LCAqcGFpci5zZWNvbmQpOwogfQogCi12b2lkIFJl
bmRlclZpZXc6OnJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0JiB2
aXNpYmxlUmVjdCkKK3ZvaWQgUmVuZGVyVmlldzo6cmVwYWludEltYWdlQW5pbWF0aW9uc0lmTmVl
ZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBib29sIGFuaW1hdGlvbkVuYWJsZWQpCiB7
CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8UmVuZGVyRWxlbWVu
dD4oKnRoaXMpKSB7CiAgICAgICAgIGlmICghZWxlbWVudC5pc1Zpc2libGVJbkRvY3VtZW50UmVj
dCh2aXNpYmxlUmVjdCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAvLyBGSVhN
RTogQ2hlY2sgd2hldGhlciB0aGUgYmFja2dyb3VuZCBpbWFnZShzKSBjYW4gYW5pbWF0ZSBiZWZv
cmUgcmVwYWludGluZy4KLSAgICAgICAgaWYgKGVsZW1lbnQuc3R5bGUoKS5oYXNCYWNrZ3JvdW5k
SW1hZ2UoKSkgewotICAgICAgICAgICAgZWxlbWVudC5yZXBhaW50KCk7Ci0gICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgYXV0byB1cGRhdGVBbmltYXRpb25zID0gWyZdKFNWR0ltYWdlJiBz
dmdJbWFnZSkgeworICAgICAgICAgICAgaWYgKGFuaW1hdGlvbkVuYWJsZWQpCisgICAgICAgICAg
ICAgICAgc3ZnSW1hZ2UucmVzdW1lQW5pbWF0aW9uKCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgc3ZnSW1hZ2Uuc3RvcEFuaW1hdGlvbigpOworICAgICAgICB9OworCisgICAg
ICAgIGJvb2wgbmVlZHNSZXBhaW50ID0gZmFsc2U7CisgICAgICAgIGZvciAoY29uc3QgYXV0byog
bGF5ZXIgPSAmZWxlbWVudC5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKTsgbGF5ZXI7IGxheWVy
ID0gbGF5ZXItPm5leHQoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0g
bGF5ZXItPmltYWdlKCkgPyBsYXllci0+aW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKSA6IG51bGxwdHIp
IHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogc3ZnSW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8
U1ZHSW1hZ2U+KGNhY2hlZEltYWdlLT5pbWFnZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgdXBk
YXRlQW5pbWF0aW9ucygqc3ZnSW1hZ2UpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF1dG8q
IGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7IGltYWdlICYmIGltYWdlLT5pc0FuaW1hdGVk
KCkpCisgICAgICAgICAgICAgICAgICAgIG5lZWRzUmVwYWludCA9IHRydWU7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYXV0byogcmVuZGVySW1hZ2UgPSBkeW5hbWlj
RG93bmNhc3Q8UmVuZGVySW1hZ2U+KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBpZiAocmVuZGVy
SW1hZ2UtPmhhc0FuaW1hdGVkSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgIGVsZW1lbnQucmVw
YWludCgpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYXV0byogY2FjaGVkSW1hZ2UgPSByZW5kZXJJbWFnZS0+Y2FjaGVkSW1hZ2UoKTsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBzdmdJbWFnZSA9IGNhY2hlZEltYWdlID8gZHluYW1pY0Rvd25j
YXN0PFNWR0ltYWdlPihjYWNoZWRJbWFnZS0+aW1hZ2UoKSkgOiBudWxscHRyKQorICAgICAgICAg
ICAgICAgIHVwZGF0ZUFuaW1hdGlvbnMoKnN2Z0ltYWdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KHJlbmRlckltYWdlLT5oYXNBbmltYXRlZEltYWdlKCkpCisgICAgICAgICAgICAgICAgbmVlZHNS
ZXBhaW50ID0gdHJ1ZTsKICAgICAgICAgfQorCisgICAgICAgIGlmIChuZWVkc1JlcGFpbnQpCisg
ICAgICAgICAgICBlbGVtZW50LnJlcGFpbnQoKTsKKyAgICB9CisKKyAgICBpZiAoZG9jdW1lbnQo
KS5zdmdFeHRlbnNpb25zKCkpIHsKKyAgICAgICAgaWYgKGFuaW1hdGlvbkVuYWJsZWQpCisgICAg
ICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS51bnBhdXNlQW5pbWF0aW9u
cygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVu
c2lvbnMoKS5wYXVzZUFuaW1hdGlvbnMoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5oCmluZGV4IGRjMWE1ZDI1MjdlNi4uZGZhNDI3YzJjYjQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTE3Miw3ICsxNzIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZWdpc3RlckZvclZpc2libGVJblZpZXdwb3J0Q2FsbGJhY2soUmVuZGVyRWxl
bWVudCYpOwogICAgIHZvaWQgdW5yZWdpc3RlckZvclZpc2libGVJblZpZXdwb3J0Q2FsbGJhY2so
UmVuZGVyRWxlbWVudCYpOwogICAgIHZvaWQgcmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZO
ZWVkZWQoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpOwotICAgIHZvaWQgcmVwYWludEltYWdl
QW5pbWF0aW9uc0lmTmVlZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KTsKKyAgICB2b2lk
IHJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVj
dCwgYm9vbCAvKiBhbmltYXRpb25FbmFibGVkICovKTsKICAgICB2b2lkIGFkZFJlbmRlcmVyV2l0
aFBhdXNlZEltYWdlQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50JiwgQ2FjaGVkSW1hZ2UmKTsKICAg
ICB2b2lkIHJlbW92ZVJlbmRlcmVyV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9ucyhSZW5kZXJFbGVt
ZW50Jik7CiAgICAgdm9pZCByZW1vdmVSZW5kZXJlcldpdGhQYXVzZWRJbWFnZUFuaW1hdGlvbnMo
UmVuZGVyRWxlbWVudCYsIENhY2hlZEltYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlRWxlbWVudEJhc2UuY3BwCmluZGV4IGY2ZmY5NGIzYmQ4Yy4uN2E3OWU3NDZmYTQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcApAQCAtMjQs
NiArMjQsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVt
ZW50QmFzZS5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFuaW1hdG9y
LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9j
dW1lbnRFeHRlbnNpb25zLmNwcAppbmRleCBiOWI5NDUxMmE1ZWUuLjY2MjZjZWUzZmUxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTQyLDEw
ICs0MiwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBib29sIGFuaW1hdGlv
bnNQYXVzZWRGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgcmV0dXJuICFk
b2N1bWVudC5wYWdlKCkgfHwgIWRvY3VtZW50LnBhZ2UoKS0+aXNWaXNpYmxlKCkgfHwgIWRvY3Vt
ZW50LnBhZ2UoKS0+aW1hZ2VBbmltYXRpb25FbmFibGVkKCk7Cit9CisKIFNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6
IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX3Jlc291cmNlc0NhY2hlKG1ha2VVbmlxdWU8
U1ZHUmVzb3VyY2VzQ2FjaGU+KCkpCi0gICAgLCBtX2FyZUFuaW1hdGlvbnNQYXVzZWQoIWRvY3Vt
ZW50LnBhZ2UoKSB8fCAhZG9jdW1lbnQucGFnZSgpLT5pc1Zpc2libGUoKSkKKyAgICAsIG1fYXJl
QW5pbWF0aW9uc1BhdXNlZChhbmltYXRpb25zUGF1c2VkRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQog
ewogfQogCkBAIC0xMDgsNiArMTEzLDEwIEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpw
YXVzZUFuaW1hdGlvbnMoKQogCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6dW5wYXVzZUFu
aW1hdGlvbnMoKQogeworICAgIC8vIElmIGFuaW1hdGlvbnMgYXJlIHBhdXNlZCBhdCB0aGUgZG9j
dW1lbnQgbGV2ZWwsIGRvbid0IGFsbG93IGB0aGlzYCB0byBiZSB1bnBhdXNlZC4KKyAgICBpZiAo
YW5pbWF0aW9uc1BhdXNlZEZvckRvY3VtZW50KG1fZG9jdW1lbnQpKQorICAgICAgICByZXR1cm47
CisKICAgICBmb3IgKGF1dG8mIGNvbnRhaW5lciA6IG1fdGltZUNvbnRhaW5lcnMpCiAgICAgICAg
IGNvbnRhaW5lci51bnBhdXNlQW5pbWF0aW9ucygpOwogICAgIG1fYXJlQW5pbWF0aW9uc1BhdXNl
ZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCmlu
ZGV4IGRmNWMwMDg4NGU2ZC4uODc5Y2ExMGRiMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0RvY3VtZW50RXh0ZW5zaW9ucy5oCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYWRkVGltZUNvbnRhaW5lcihTVkdTVkdFbGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVUaW1l
Q29udGFpbmVyKFNWR1NWR0VsZW1lbnQmKTsKKyAgICBXZWFrSGFzaFNldDxTVkdTVkdFbGVtZW50
LCBXZWFrUHRySW1wbFdpdGhFdmVudFRhcmdldERhdGE+IHRpbWVDb250YWluZXJzRm9yVGVzdGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUNvbnRhaW5lcnM7IH0KIAogICAgIHZvaWQgYWRkUmVz
b3VyY2UoY29uc3QgQXRvbVN0cmluZyYgaWQsIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyJik7
CiAgICAgdm9pZCByZW1vdmVSZXNvdXJjZShjb25zdCBBdG9tU3RyaW5nJiBpZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCAxY2Y4ZTE5YTU2OTUuLjQ3OWY4
YTZkMjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0z
ODUsNiArMzg1LDE0IEBAIHZvaWQgU1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKCkKICAgICByb290
RWxlbWVudC0+c2V0Q3VycmVudFRpbWUoMCk7CiB9CiAKK3ZvaWQgU1ZHSW1hZ2U6OnJlc3VtZUFu
aW1hdGlvbigpCit7CisgICAgYXV0byByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7
CisgICAgaWYgKCFyb290RWxlbWVudCB8fCAhcm9vdEVsZW1lbnQtPmFuaW1hdGlvbnNQYXVzZWQo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIHJvb3RFbGVtZW50LT51bnBhdXNlQW5pbWF0aW9ucygp
OworfQorCiB2b2lkIFNWR0ltYWdlOjpzdG9wQW5pbWF0aW9uKCkKIHsKICAgICBtX3N0YXJ0QW5p
bWF0aW9uVGltZXIuc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApp
bmRleCBmODAzMWUwYjBjYjguLmYwNjM1M2U5OGU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmgKQEAgLTU1LDcgKzU1LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1Jl
bGF0aXZlV2lkdGgoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGhhc1JlbGF0aXZlSGVpZ2h0KCkg
Y29uc3QgZmluYWw7CiAKKyAgICAvLyBTdGFydCB0aGUgYW5pbWF0aW9uIGZyb20gdGhlIGJlZ2lu
bmluZy4KICAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uKCkgZmluYWw7CisgICAgLy8gUmVzdW1lIHRo
ZSBhbmltYXRpb24gZnJvbSB3aGVyZSBpdCB3YXMgbGFzdCBzdG9wcGVkLgorICAgIHZvaWQgcmVz
dW1lQW5pbWF0aW9uKCk7CiAgICAgdm9pZCBzdG9wQW5pbWF0aW9uKCkgZmluYWw7CiAgICAgdm9p
ZCByZXNldEFuaW1hdGlvbigpIGZpbmFsOwogICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdCBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAyYjk1ZDE1ZjkwNjIu
LmYwNWE5ZGM0YjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNzgz
LDYgKzc4MywyMSBAQCBFeGNlcHRpb25Pcjxkb3VibGU+IEludGVybmFsczo6c3ZnQW5pbWF0aW9u
c0ludGVydmFsKFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQpIGNvbgogICAgIHJldHVybiBlbGVtZW50
LnRpbWVDb250YWluZXIoKS5hbmltYXRpb25GcmFtZURlbGF5KCkudmFsdWUoKTsKIH0KIAorVmVj
dG9yPFJlZjxTVkdTVkdFbGVtZW50Pj4gSW50ZXJuYWxzOjphbGxTVkdTVkdFbGVtZW50cygpIGNv
bnN0Cit7CisgICAgVmVjdG9yPFJlZjxTVkdTVkdFbGVtZW50Pj4gZWxlbWVudHM7CisgICAgZm9y
IChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgICAgICBp
ZiAoIWRvY3VtZW50LT5zdmdFeHRlbnNpb25zKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBkb2N1bWVudC0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnRpbWVDb250YWluZXJzRm9y
VGVzdGluZygpLmZvckVhY2goWyZlbGVtZW50c10gKFdlYWtQdHI8U1ZHU1ZHRWxlbWVudCwgV2Vh
a1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRhPiBlbGVtZW50KSB7CisgICAgICAgICAgICBpZiAo
ZWxlbWVudCkKKyAgICAgICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQoKmVsZW1lbnQpOworICAg
ICAgICB9KTsKKyAgICB9CisgICAgcmV0dXJuIGVsZW1lbnRzOworfQorCiBTdHJpbmcgSW50ZXJu
YWxzOjphZGRyZXNzKE5vZGUmIG5vZGUpCiB7CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIjB4Iiwg
aGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pigmbm9kZSkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCmluZGV4IDU1MzIwOTI4MGMwZC4uNTMwNzM5YTdmZWJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTQ0Myw2ICs0NDMsOCBAQCBwdWJsaWM6CiAgICAgdW5z
aWduZWQgd29ya2VyVGhyZWFkQ291bnQoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjxib29sPiBh
cmVTVkdBbmltYXRpb25zUGF1c2VkKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8ZG91YmxlPiBz
dmdBbmltYXRpb25zSW50ZXJ2YWwoU1ZHU1ZHRWxlbWVudCYpIGNvbnN0OworICAgIC8vIFNvbWUg
U1ZHIGVsZW1lbnRzIGFyZSBub3QgYWNjZXNzaWJsZSB2aWEgbm9ybWFsIEFQSXMgKGUuZy4gdGhv
c2UgaW4gQ1NTIGBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2Zz4u
Li4pYCwgYnV0IHdlIG5lZWQgYWNjZXNzIHRvIHRoZW0gZm9yIHRlc3RpbmcuCisgICAgVmVjdG9y
PFJlZjxTVkdTVkdFbGVtZW50Pj4gYWxsU1ZHU1ZHRWxlbWVudHMoKSBjb25zdDsKIAogICAgIGVu
dW0gewogICAgICAgICAvLyBWYWx1ZXMgbmVlZCB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCBJbnRl
cm5hbHMuaWRsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDJkMDMzM2Qz
YWYzNy4uN2ExOGNjZWUwOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBA
IC01NzIsNiArNTcyLDcgQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2Up
IEZldGNoT2JqZWN0OwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYXJlU1ZHQW5p
bWF0aW9uc1BhdXNlZDsKICAgICBkb3VibGUgc3ZnQW5pbWF0aW9uc0ludGVydmFsKFNWR1NWR0Vs
ZW1lbnQgZWxlbWVudCk7CisgICAgc2VxdWVuY2U8U1ZHU1ZHRWxlbWVudD4gYWxsU1ZHU1ZHRWxl
bWVudHMoKTsKIAogICAgIGJvb2xlYW4gdGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1do
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1zdmctYW5pbWF0aW9u
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5k
MmIxNGU5NTc1ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9w
YWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQ0IEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IFNWRyBhbmltYXRpb25zIHBhdXNlZCBhbmQg
cmVzdW1lZCB3aGVuIHRoZSBwYWdlLXdpZGUgaW1hZ2UgYW5pbWF0aW9uIHNldHRpbmcgaXMgdG9n
Z2xlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKy0tLS0tIERpc2FibGluZyBp
bWFnZSBhbmltYXRpb25zLiAtLS0tLQorCitUZXN0aW5nICNhbmltYXRlVHJhbnNmb3JtLXN2Zy4K
K1BBU1Mgc3ZnTWF0cmljZXNBcmVFcXVhbChnZXRBbmltYXRlVHJhbnNmb3JtTWF0cml4KHN2Z1N2
Z0VsZW1lbnQpLCBpbml0aWFsQW5pbWF0ZVRyYW5zZm9ybU1hdHJpeCkgaXMgdHJ1ZQorCitUZXN0
aW5nICNjc3MtYmFja2dyb3VuZC1zdmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQuY2hpbGRyZW5bMF0u
eC5hbmltVmFsLnZhbHVlID09PSAwIGlzIHRydWUKKworVGVzdGluZyAjaWZyYW1lLXNyY2RvYy1z
dmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQuY2hpbGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlID09PSAw
IGlzIHRydWUKKworVGVzdGluZyAjaW1nLXNyYy1zdmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQuY2hp
bGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlID09PSAwIGlzIHRydWUKKworVGVzdGluZyAjaW5saW5l
LXN2Zy4KK1BBU1Mgc3ZnU3ZnRWxlbWVudC5jaGlsZHJlblswXS54LmFuaW1WYWwudmFsdWUgPT09
IDAgaXMgdHJ1ZQorCistLS0tLSBFbmFibGluZyBpbWFnZSBhbmltYXRpb25zLiAtLS0tLQorCitU
ZXN0aW5nICNhbmltYXRlVHJhbnNmb3JtLXN2Zy4KK1BBU1Mgc3ZnTWF0cmljZXNBcmVFcXVhbChn
ZXRBbmltYXRlVHJhbnNmb3JtTWF0cml4KHN2Z1N2Z0VsZW1lbnQpLCBpbml0aWFsQW5pbWF0ZVRy
YW5zZm9ybU1hdHJpeCkgaXMgZmFsc2UKKworVGVzdGluZyAjY3NzLWJhY2tncm91bmQtc3ZnLgor
UEFTUyBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAhPT0gMCBpcyB0
cnVlCisKK1Rlc3RpbmcgI2lmcmFtZS1zcmNkb2Mtc3ZnLgorUEFTUyBzdmdTdmdFbGVtZW50LmNo
aWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAhPT0gMCBpcyB0cnVlCisKK1Rlc3RpbmcgI2ltZy1z
cmMtc3ZnLgorUEFTUyBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAh
PT0gMCBpcyB0cnVlCisKK1Rlc3RpbmcgI2lubGluZS1zdmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQu
Y2hpbGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlICE9PSAwIGlzIHRydWUKKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1zdmctYW5pbWF0aW9ucy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1zdmctYW5p
bWF0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzNm
ZDVhMjMxMTdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFn
ZXdpZGUtcGxheS1wYXVzZS1zdmctYW5pbWF0aW9ucy5odG1sCkBAIC0wLDAgKzEsMTQ3IEBACis8
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHJ1blNpbmdseT10cnVlIF0gLS0+Cis8IS0tIFdpdGhv
dXQgcnVuU2luZ2x5PXRydWUsIGJhY2stdG8tYmFjayBydW5zIG9mIHRoaXMgdGVzdCBmYWlsIGR1
ZSB0byBzdGF0ZSBsZWZ0b3ZlciBiZXR3ZWVuIGVhY2ggcnVuLiBXZSBmb3JjZSBjbGVhbnVwIHdp
dGggcnVuU2luZ2x5IHRvIG1ha2UgdGhpcyB0ZXN0IGNvbnNpc3RlbnQuIC0tPgorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKy5ib3ggeworICB3aWR0aDogMzAwcHg7CisgIGhl
aWdodDogMjAwcHg7CisgIGJhY2tncm91bmQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0Zjgs
PHN2ZyBpZD0iY3NzLWJhY2tncm91bmQtc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciPjxyZWN0IGlkPSJiYWNrZ3JvdW5kLWltYWdlLXN2Zy1yZWN0IiB3aWR0aD0iMTAwIiBo
ZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iPjxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9IngiIGZyb209
IjAiIHRvPSIyMDAiIGR1cj0iNXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8+PC9yZWN0Pjwv
c3ZnPicpOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorCis8IS0tIEJhc2ljIGlubGlu
ZSBTVkcgYW5pbWF0aW9uIC0tPgorPHN2ZyBpZD0iaW5saW5lLXN2ZyIgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgPHJlY3QgaWQ9InN2Zy1yZWN0IiB3aWR0aD0iMTAwIiBo
ZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iPgorICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9Ingi
IGZyb209IjAiIHRvPSIyMDAiIGR1cj0iNXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8+Cisg
IDwvcmVjdD4KKzwvc3ZnPgorCis8IS0tIGFuaW1hdGVUcmFuc2Zvcm0gU1ZHIC0tPgorPHN2ZyBp
ZD0iYW5pbWF0ZVRyYW5zZm9ybS1zdmciIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMiwgMjMyLCAy
MzcpOyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIy
MDAiIGhlaWdodD0iMjAwIiB2aWV3Qm94PSItNCAtNCA4IDgiPgorICA8Y2lyY2xlIGN4PSIwIiBj
eT0iMSIgcj0iMiIgc3Ryb2tlPSJyZWQiIGZpbGw9Im5vbmUiPgorICAgIDxhbmltYXRlVHJhbnNm
b3JtCisgICAgICBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iCisgICAgICBhdHRyaWJ1dGVUeXBl
PSJYTUwiCisgICAgICB0eXBlPSJyb3RhdGUiCisgICAgICBmcm9tPSIwIgorICAgICAgdG89IjM2
MCIKKyAgICAgIGJlZ2luPSIwcyIKKyAgICAgIGR1cj0iMXMiCisgICAgICByZXBlYXRDb3VudD0i
aW5kZWZpbml0ZSIvPgorICA8L2NpcmNsZT4KKzwvc3ZnPgorCis8IS0tIENTUyBiYWNrZ3JvdW5k
IFNWRyBhbmltYXRpb24gLS0+Cis8ZGl2IGNsYXNzPSJib3giPjwvZGl2PgorCis8IS0tIFNWRyBh
bmltYXRpb24gZW1iZWRkZWQgaW4gPGltZz4gLS0+Cis8aW1nIHNyYz0KKydkYXRhOmltYWdlL3N2
Zyt4bWw7dXRmOCwKKyAgPHN2ZyBpZD0iaW1nLXNyYy1zdmciIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyI+CisgICAgPHJlY3Qgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9
ImdyZWVuIj4KKyAgICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9IngiIGZyb209IjAiIHRvPSIy
MDAiIGR1cj0iNXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8+CisgICAgPC9yZWN0PgorICA8
L3N2Zz4KKyc+CisKKzwhLS0gU1ZHIGFuaW1hdGlvbiBlbWJlZGRlZCBpbiA8aWZyYW1lPiAtLT4K
KzxpZnJhbWUgc3JjZG9jPScKKyAgPHN2ZyBpZD0iaWZyYW1lLXNyY2RvYy1zdmciIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgPHJlY3Qgd2lkdGg9IjEwMCIgaGVpZ2h0
PSIxMDAiIGZpbGw9ImdyZWVuIj4KKyAgICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9IngiIGZy
b209IjAiIHRvPSIyMDAiIGR1cj0iNXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8+CisgICAg
PC9yZWN0PgorICA8L3N2Zz4KKyc+PC9pZnJhbWU+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBTVkcgYW5pbWF0aW9ucyBwYXVzZWQgYW5kIHJlc3VtZWQg
d2hlbiB0aGUgcGFnZS13aWRlIGltYWdlIGFuaW1hdGlvbiBzZXR0aW5nIGlzIHRvZ2dsZWQuIik7
Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciBzdmdTdmdFbGVtZW50LCBpbml0
aWFsQW5pbWF0ZVRyYW5zZm9ybU1hdHJpeDsKKworLy8gSGFyZGNvZGVkIHRvIHRoZSBzdHJ1Y3R1
cmUgb2YgI2FuaW1hdGVUcmFuc2Zvcm0tc3ZnLiBJZiB5b3UgY2hhbmdlIHRoZSBtYXJrdXAsIHlv
dSBtdXN0IGFsc28gY2hhbmdlIHRoaXMgZnVuY3Rpb24uCitmdW5jdGlvbiBnZXRBbmltYXRlVHJh
bnNmb3JtTWF0cml4KHN2Z1N2Z0VsZW1lbnQpIHsKKyAgICByZXR1cm4gc3ZnU3ZnRWxlbWVudC5j
aGlsZHJlblswXS50cmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLm1hdHJpeDsKK30KKworZnVu
Y3Rpb24gc3ZnTWF0cmljZXNBcmVFcXVhbChtYXRyaXhBLCBtYXRyaXhCKSB7CisgIHJldHVybiBt
YXRyaXhBLmEgPT09IG1hdHJpeEIuYQorICAgICYmIG1hdHJpeEEuYiA9PT0gbWF0cml4Qi5iCisg
ICAgJiYgbWF0cml4QS5jID09PSBtYXRyaXhCLmMKKyAgICAmJiBtYXRyaXhBLmQgPT09IG1hdHJp
eEIuZAorICAgICYmIG1hdHJpeEEuZSA9PT0gbWF0cml4Qi5lCisgICAgJiYgbWF0cml4QS5mID09
PSBtYXRyaXhCLmY7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeVNWR3NBcmVQYXVzZWQoZXhwZWN0UGF1
c2VkKSB7CisgIC8vIFNvcnQgdGhlIFNWRyBlbGVtZW50cyBieSBJRCBzbyB0aGUgdGVzdCBvdXRw
dXQgaXMgY29uc2lzdGVudCBmcm9tIHJ1biB0byBydW4uCisgIGNvbnN0IHNvcnRlZFNWR1NWR0Vs
ZW1lbnRzID0gaW50ZXJuYWxzLmFsbFNWR1NWR0VsZW1lbnRzKCkuc29ydCgoZWxlbWVudEEsIGVs
ZW1lbnRCKSA9PiB7CisgICAgaWYgKGVsZW1lbnRBLmlkID4gZWxlbWVudEIuaWQpCisgICAgICBy
ZXR1cm4gMTsKKworICAgIGlmIChlbGVtZW50QS5pZCA8IGVsZW1lbnRCLmlkKQorICAgICAgcmV0
dXJuIC0xOworCisgICAgcmV0dXJuIDA7CisgIH0pOworCisgIGZvciAoY29uc3QgZWxlbWVudCBv
ZiBzb3J0ZWRTVkdTVkdFbGVtZW50cykgeworICAgIHN2Z1N2Z0VsZW1lbnQgPSBlbGVtZW50Owor
ICAgIGRlYnVnKGBUZXN0aW5nICMke3N2Z1N2Z0VsZW1lbnQuaWR9LmApOworICAgIHN3aXRjaCAo
c3ZnU3ZnRWxlbWVudC5pZCkgeworICAgICAgY2FzZSAiY3NzLWJhY2tncm91bmQtc3ZnIjoKKyAg
ICAgIGNhc2UgImlubGluZS1zdmciOgorICAgICAgY2FzZSAiaW1nLXNyYy1zdmciOgorICAgICAg
Y2FzZSAiaWZyYW1lLXNyY2RvYy1zdmciOgorICAgICAgICBpZiAoIShzdmdTdmdFbGVtZW50LmNo
aWxkcmVuWzBdIGluc3RhbmNlb2YgU1ZHUmVjdEVsZW1lbnQpKQorICAgICAgICAgIGRlYnVnKGBG
QUlMOiAnY2hpbGRyZW5bMF0nIG9mICR7c3ZnU3ZnRWxlbWVudC5pZH0gc2hvdWxkJ3ZlIGJlZW4g
YW4gU1ZHUmVjdEVsZW1lbnQgYnV0IHdhc24ndCwgc28gdGhpcyB0ZXN0IHdvbid0IGJlaGF2ZSBh
cyBleHBlY3RlZC5gKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKGBzdmdTdmdFbGVtZW50LmNoaWxk
cmVuWzBdLnguYW5pbVZhbC52YWx1ZSAke2V4cGVjdFBhdXNlZCA/ICI9PT0iIDogIiE9PSJ9IDBg
KTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICJhbmltYXRlVHJhbnNmb3JtLXN2ZyI6Cisg
ICAgICAgIHNob3VsZEJlKCJzdmdNYXRyaWNlc0FyZUVxdWFsKGdldEFuaW1hdGVUcmFuc2Zvcm1N
YXRyaXgoc3ZnU3ZnRWxlbWVudCksIGluaXRpYWxBbmltYXRlVHJhbnNmb3JtTWF0cml4KSIsIGV4
cGVjdFBhdXNlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgICAgICBicmVhazsKKyAgICAgIGRl
ZmF1bHQ6CisgICAgICAgIGRlYnVnKGBGQUlMOiBTVkcgdGVzdGNhc2Ugd2l0aCB1bmV4cGVjdGVk
IElEOiAke3N2Z1N2Z0VsZW1lbnQuaWR9YCk7CisgICAgfQorICAgIGRlYnVnKCIiKTsKKyAgfQor
fQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgIHNldFRpbWVvdXQoKCkgPT4gewor
ICAgIGRlYnVnKCItLS0tLSBEaXNhYmxpbmcgaW1hZ2UgYW5pbWF0aW9ucy4gLS0tLS1cbiIpOwor
ICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2VBbmltYXRpb25Db250cm9sRW5h
YmxlZCh0cnVlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldEltYWdlQW5pbWF0aW9uRW5hYmxl
ZChmYWxzZSk7CisKKyAgICAvLyBSZXNldCBhbmltYXRpb25zIHRvIHRoZSBiZWdpbm5pbmcuCisg
ICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGludGVybmFscy5hbGxTVkdTVkdFbGVtZW50cygpKSB7
CisgICAgICBlbGVtZW50LnNldEN1cnJlbnRUaW1lKDApOworICAgICAgaWYgKGVsZW1lbnQuaWQg
PT09ICJhbmltYXRlVHJhbnNmb3JtLXN2ZyIpCisgICAgICAgIGluaXRpYWxBbmltYXRlVHJhbnNm
b3JtTWF0cml4ID0gZ2V0QW5pbWF0ZVRyYW5zZm9ybU1hdHJpeChlbGVtZW50KTsKKyAgICB9CisK
KyAgICAvLyBBbGxvdyBzb21lIHRpbWUgdG8gcGFzcy4KKyAgICBzZXRUaW1lb3V0KCgpID0+IHsK
KyAgICAgIC8vIEFmdGVyIDUwbXMsIHRoZSBhbmltYXRpb25zIHNob3VsZCBub3QgaGF2ZSBwcm9n
cmVzc2VkIGJlY2F1c2UgdGhlIHBhZ2Utd2lkZSBpbWFnZSBhbmltYXRpb24gc2V0dGluZyBpcyBk
aXNhYmxlZC4KKyAgICAgIHZlcmlmeVNWR3NBcmVQYXVzZWQodHJ1ZSk7CisKKyAgICAgIGRlYnVn
KCItLS0tLSBFbmFibGluZyBpbWFnZSBhbmltYXRpb25zLiAtLS0tLVxuIik7CisgICAgICAvLyBS
ZS1lbmFibGUgYW5pbWF0aW9ucyBhbmQgYWxsb3cgdGltZSB0byBwYXNzIHNvIHRoZXkgY2FuIHBy
b2dyZXNzLgorICAgICAgaW50ZXJuYWxzLnNldEltYWdlQW5pbWF0aW9uRW5hYmxlZCh0cnVlKTsK
KyAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICB2ZXJpZnlTVkdzQXJlUGF1c2VkKGZh
bHNlKTsKKworICAgICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOworICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgIH0sIDUwKTsKKyAgICB9LCA1MCk7CisgIH0sIDUwKQorfTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462757</attachid>
            <date>2022-10-01 18:09:21 -0700</date>
            <delta_ts>2022-10-01 23:22:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-245399-20221001200920.patch</filename>
            <type>text/plain</type>
            <size>23254</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSAzMTczODhhNDUxYTM3NDkxZWIzOWFmZTI5NGQ5ZTU1YWM5OTIzMjI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogU2F0LCAxIE9jdCAyMDIyIDE0OjUyOjQ0IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gU1ZHIGFu
aW1hdGlvbnMgc2hvdWxkIHJlc3BlY3QgUGFnZTo6aW1hZ2VBbmltYXRpb25FbmFibGVkCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ1Mzk5IHJkYXI6Ly8xMDAxNDM3
MjMKClJldmlld2VkIGJ5IChOT0JPRFkpLgoKSW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI0NDEyOCAoQWRkIGV4cGVyaW1lbnRhbApmZWF0dXJlIHRvIGNvbnRyb2wg
aW1hZ2UgYW5pbWF0aW9uIHBsYXkvcGF1c2Ugc3RhdGUpLCB3ZSBhZGRlZCBhCnBhZ2Utd2lkZSBz
ZXR0aW5nIHRvIGNvbnRyb2wgYW5pbWF0aW9uIHBsYXkvcGF1c2Ugc3RhdGUuIFNWRwphbmltYXRp
b25zIHNob3VsZCByZXNwZWN0IHRoaXMgc2V0dGluZyB0b28uCgoqIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1h
bmltYXRpb25zLmh0bWw6IEFkZGVkLgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cDoKKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVwYWludFZpc2libGVJbWFnZUFuaW1hdGlvbnMpOgoo
V2ViQ29yZTo6RnJhbWVWaWV3OjpyZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGlu
Z1N1YmZyYW1lcyk6CiogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaDoKKiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6UGFnZTo6c2V0SW1hZ2VBbmltYXRpb25F
bmFibGVkKToKKFdlYkNvcmU6OlBhZ2U6OnJlcGFpbnRBbmltYXRlZEltYWdlcyk6CiogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwOgooV2ViQ29yZTo6UmVuZGVyVmlldzo6cmVwYWludEltYWdlQW5pbWF0aW9uc0lmTmVl
ZGVkKToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oOgoqIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwOgoqIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgooV2ViQ29yZTo6YW5pbWF0aW9uc1BhdXNlZEZv
ckRvY3VtZW50KToKKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHRG9jdW1lbnRF
eHRlbnNpb25zKToKKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6dW5wYXVzZUFuaW1h
dGlvbnMpOgoqIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaDoKKFdl
YkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6dGltZUNvbnRhaW5lcnNGb3JUZXN0aW5nIGNv
bnN0KTogQWRkZWQuCiogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoK
KFdlYkNvcmU6OlNWR0ltYWdlOjpyZXN1bWVBbmltYXRpb24pOiBBZGRlZC4KKiBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHA6CihXZWJDb3JlOjpJbnRlcm5hbHM6OmFsbFNWR1NWR0VsZW1lbnRzIGNvbnN0
KTogQWRkZWQuCiogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaDoKKiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGw6Ci0tLQogU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwICAgICAgICAgICAgIHwgIDEwICstCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAgICAgICAgICAgICAgICAgICB8ICAgNiArLQogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmggICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAgICAgICAgfCAgNDEgKysrLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmggICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVFbGVtZW50QmFzZS5jcHAgIHwgICAyICsKIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1
bWVudEV4dGVuc2lvbnMuY3BwICB8ICAxMSArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5oICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAgICAgICB8ICAgOCArCiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaCAgICAgICAgfCAgIDMgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwICAgICAgICAgIHwgIDE1ICsrCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
ICAgICAgICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
ICAgICAgICAgIHwgICAxICsKIC4uLmlkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRpb25zLWV4cGVj
dGVkLnR4dCB8ICA0NCArKysrKysKIC4uLi9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRp
b25zLmh0bWwgICB8IDE0NyArKysrKysrKysrKysrKysrKysKIDE2IGZpbGVzIGNoYW5nZWQsIDI3
NyBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRpb25zLWV4
cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Bh
Z2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMuaHRtbAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAppbmRleCBmMzJlZTc1Y2E3MmEuLjYwZGJjNTQ0YjA2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcApAQCAtMjgwOCwxMyArMjgwOCwxMyBAQCB2b2lkIEZyYW1lVmlldzo6cmVz
dW1lVmlzaWJsZUltYWdlQW5pbWF0aW9ucyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkKICAg
ICAgICAgcmVuZGVyVmlldy0+cmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQodmlz
aWJsZVJlY3QpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cmVwYWludFZpc2libGVJbWFnZUFuaW1h
dGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCit2b2lkIEZyYW1lVmlldzo6cmVwYWlu
dFZpc2libGVJbWFnZUFuaW1hdGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGJvb2wg
YW5pbWF0aW9uRW5hYmxlZCkKIHsKICAgICBpZiAodmlzaWJsZVJlY3QuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogcmVuZGVyVmlldyA9IGZyYW1lKCkuY29udGVu
dFJlbmRlcmVyKCkpCi0gICAgICAgIHJlbmRlclZpZXctPnJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJ
Zk5lZWRlZCh2aXNpYmxlUmVjdCk7CisgICAgICAgIHJlbmRlclZpZXctPnJlcGFpbnRJbWFnZUFu
aW1hdGlvbnNJZk5lZWRlZCh2aXNpYmxlUmVjdCwgYW5pbWF0aW9uRW5hYmxlZCk7CiB9CiAKIHZv
aWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JpcHRlZEFuaW1hdGlvbnNBbmRUaW1lcnNUaHJvdHRsaW5n
U3RhdGUoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCkBAIC0yODUyLDEwICsyODUyLDEwIEBA
IHZvaWQgRnJhbWVWaWV3OjpyZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3Vi
ZnJhbWVzKCkKICAgICB9KTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnJlcGFpbnRWaXNpYmxlSW1h
Z2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCkKK3ZvaWQgRnJhbWVWaWV3OjpyZXBhaW50
VmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcyhib29sIGFuaW1hdGlvbkVu
YWJsZWQpCiB7Ci0gICAgYXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChbXSAoRnJhbWVW
aWV3JiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KSB7Ci0gICAgICAgIGZy
YW1lVmlldy5yZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0aW9ucyh2aXNpYmxlUmVjdCk7CisgICAg
YXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChbJl0gKEZyYW1lVmlldyYgZnJhbWVWaWV3
LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkgeworICAgICAgICBmcmFtZVZpZXcucmVwYWlu
dFZpc2libGVJbWFnZUFuaW1hdGlvbnModmlzaWJsZVJlY3QsIGFuaW1hdGlvbkVuYWJsZWQpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBkOGQ4ZjNhYTA5MjEuLjk4
YjdmZTVhMjcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0zMjEsNyArMzIxLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCB2aWV3cG9ydENvbnRlbnRzQ2hhbmdlZCgpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZy
YW1lcygpOwotICAgIHZvaWQgcmVwYWludFZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdT
dWJmcmFtZXMoKTsKKyAgICB2b2lkIHJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVk
aW5nU3ViZnJhbWVzKGJvb2wgLyogYW5pbWF0aW9uRW5hYmxlZCAqLyk7CiAKICAgICBTdHJpbmcg
bWVkaWFUeXBlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZWRpYVR5cGUo
Y29uc3QgU3RyaW5nJik7CkBAIC03NzQsNyArNzc0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
YXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChjb25zdCBGdW5jdGlvbjx2b2lkKEZyYW1l
VmlldyYgZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk+Jik7CiAgICAgdm9p
ZCByZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0
KTsKLSAgICB2b2lkIHJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJlY3Qm
IHZpc2libGVSZWN0KTsKKyAgICB2b2lkIHJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNv
bnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBib29sIC8qIGFuaW1hdGlvbkVuYWJsZWQgKi8pOwog
ICAgIHZvaWQgdXBkYXRlU2NyaXB0ZWRBbmltYXRpb25zQW5kVGltZXJzVGhyb3R0bGluZ1N0YXRl
KGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YWRqdXN0VGlsZWRCYWNraW5nQ292ZXJhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGVlMThl
MmVmOGI4NC4uYTM0Yjc5Yzc4MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NTAsNyArMTk1
MCw3IEBAIHZvaWQgUGFnZTo6c2V0SW1hZ2VBbmltYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkK
ICAgICBpZiAobV9pbWFnZUFuaW1hdGlvbkVuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0
dXJuOwogICAgIG1faW1hZ2VBbmltYXRpb25FbmFibGVkID0gZW5hYmxlZDsKLSAgICByZXBhaW50
QW5pbWF0ZWRJbWFnZXMoKTsKKyAgICByZXBhaW50QW5pbWF0ZWRJbWFnZXMoZW5hYmxlZCk7CiB9
CiAKIHZvaWQgUGFnZTo6c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9ucygpCkBAIC00MDE5LDEwICs0
MDE5LDEwIEBAIHZvaWQgUGFnZTo6Zm9yY2VSZXBhaW50QWxsRnJhbWVzKCkKICAgICB9CiB9CiAK
LXZvaWQgUGFnZTo6cmVwYWludEFuaW1hdGVkSW1hZ2VzKCkKK3ZvaWQgUGFnZTo6cmVwYWludEFu
aW1hdGVkSW1hZ2VzKGJvb2wgYW5pbWF0aW9uRW5hYmxlZCkKIHsKICAgICBpZiAoYXV0byogdmll
dyA9IG1haW5GcmFtZSgpLnZpZXcoKSkKLSAgICAgICAgdmlldy0+cmVwYWludFZpc2libGVJbWFn
ZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKTsKKyAgICAgICAgdmlldy0+cmVwYWludFZp
c2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoYW5pbWF0aW9uRW5hYmxlZCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMmJlODk2OTEx
ZGNiLi4yZDA1NzUzNTE2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC02OTYsNyArNjk2LDcgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0
ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW5nSW1hZ2Vz
KCk7Ci0gICAgdm9pZCByZXBhaW50QW5pbWF0ZWRJbWFnZXMoKTsKKyAgICB2b2lkIHJlcGFpbnRB
bmltYXRlZEltYWdlcyhib29sIC8qIGFuaW1hdGlvbkVuYWJsZWQgKi8pOwogCiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDE3NjYwN2E0NzRlMy4uMWJi
MDlkYmUwZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC01
MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyUXVvdGUuaCIKICNpbmNsdWRlICJSZW5kZXJU
cmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgorI2luY2x1ZGUgIlNWR0lt
YWdlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERh
dGEuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgpAQCAtODc1LDI0ICs4NzYsNDYgQEAg
dm9pZCBSZW5kZXJWaWV3OjpyZXN1bWVQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25z
dCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkKICAgICAgICAgcmVtb3ZlUmVuZGVyZXJXaXRoUGF1c2Vk
SW1hZ2VBbmltYXRpb25zKCpwYWlyLmZpcnN0LCAqcGFpci5zZWNvbmQpOwogfQogCi12b2lkIFJl
bmRlclZpZXc6OnJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0JiB2
aXNpYmxlUmVjdCkKK3ZvaWQgUmVuZGVyVmlldzo6cmVwYWludEltYWdlQW5pbWF0aW9uc0lmTmVl
ZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBib29sIGFuaW1hdGlvbkVuYWJsZWQpCiB7
CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8UmVuZGVyRWxlbWVu
dD4oKnRoaXMpKSB7CiAgICAgICAgIGlmICghZWxlbWVudC5pc1Zpc2libGVJbkRvY3VtZW50UmVj
dCh2aXNpYmxlUmVjdCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAvLyBGSVhN
RTogQ2hlY2sgd2hldGhlciB0aGUgYmFja2dyb3VuZCBpbWFnZShzKSBjYW4gYW5pbWF0ZSBiZWZv
cmUgcmVwYWludGluZy4KLSAgICAgICAgaWYgKGVsZW1lbnQuc3R5bGUoKS5oYXNCYWNrZ3JvdW5k
SW1hZ2UoKSkgewotICAgICAgICAgICAgZWxlbWVudC5yZXBhaW50KCk7Ci0gICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgYXV0byB1cGRhdGVBbmltYXRpb25zID0gWyZdKFNWR0ltYWdlJiBz
dmdJbWFnZSkgeworICAgICAgICAgICAgaWYgKGFuaW1hdGlvbkVuYWJsZWQpCisgICAgICAgICAg
ICAgICAgc3ZnSW1hZ2UucmVzdW1lQW5pbWF0aW9uKCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgc3ZnSW1hZ2Uuc3RvcEFuaW1hdGlvbigpOworICAgICAgICB9OworCisgICAg
ICAgIGJvb2wgbmVlZHNSZXBhaW50ID0gZmFsc2U7CisgICAgICAgIGZvciAoY29uc3QgYXV0byog
bGF5ZXIgPSAmZWxlbWVudC5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKTsgbGF5ZXI7IGxheWVy
ID0gbGF5ZXItPm5leHQoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0g
bGF5ZXItPmltYWdlKCkgPyBsYXllci0+aW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKSA6IG51bGxwdHIp
IHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogc3ZnSW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8
U1ZHSW1hZ2U+KGNhY2hlZEltYWdlLT5pbWFnZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgdXBk
YXRlQW5pbWF0aW9ucygqc3ZnSW1hZ2UpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF1dG8q
IGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7IGltYWdlICYmIGltYWdlLT5pc0FuaW1hdGVk
KCkpCisgICAgICAgICAgICAgICAgICAgIG5lZWRzUmVwYWludCA9IHRydWU7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYXV0byogcmVuZGVySW1hZ2UgPSBkeW5hbWlj
RG93bmNhc3Q8UmVuZGVySW1hZ2U+KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBpZiAocmVuZGVy
SW1hZ2UtPmhhc0FuaW1hdGVkSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgIGVsZW1lbnQucmVw
YWludCgpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYXV0byogY2FjaGVkSW1hZ2UgPSByZW5kZXJJbWFnZS0+Y2FjaGVkSW1hZ2UoKTsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBzdmdJbWFnZSA9IGNhY2hlZEltYWdlID8gZHluYW1pY0Rvd25j
YXN0PFNWR0ltYWdlPihjYWNoZWRJbWFnZS0+aW1hZ2UoKSkgOiBudWxscHRyKQorICAgICAgICAg
ICAgICAgIHVwZGF0ZUFuaW1hdGlvbnMoKnN2Z0ltYWdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KHJlbmRlckltYWdlLT5oYXNBbmltYXRlZEltYWdlKCkpCisgICAgICAgICAgICAgICAgbmVlZHNS
ZXBhaW50ID0gdHJ1ZTsKICAgICAgICAgfQorCisgICAgICAgIGlmIChuZWVkc1JlcGFpbnQpCisg
ICAgICAgICAgICBlbGVtZW50LnJlcGFpbnQoKTsKKyAgICB9CisKKyAgICBpZiAoZG9jdW1lbnQo
KS5zdmdFeHRlbnNpb25zKCkpIHsKKyAgICAgICAgaWYgKGFuaW1hdGlvbkVuYWJsZWQpCisgICAg
ICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS51bnBhdXNlQW5pbWF0aW9u
cygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVu
c2lvbnMoKS5wYXVzZUFuaW1hdGlvbnMoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5oCmluZGV4IGRjMWE1ZDI1MjdlNi4uZGZhNDI3YzJjYjQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTE3Miw3ICsxNzIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZWdpc3RlckZvclZpc2libGVJblZpZXdwb3J0Q2FsbGJhY2soUmVuZGVyRWxl
bWVudCYpOwogICAgIHZvaWQgdW5yZWdpc3RlckZvclZpc2libGVJblZpZXdwb3J0Q2FsbGJhY2so
UmVuZGVyRWxlbWVudCYpOwogICAgIHZvaWQgcmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZO
ZWVkZWQoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpOwotICAgIHZvaWQgcmVwYWludEltYWdl
QW5pbWF0aW9uc0lmTmVlZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KTsKKyAgICB2b2lk
IHJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVj
dCwgYm9vbCAvKiBhbmltYXRpb25FbmFibGVkICovKTsKICAgICB2b2lkIGFkZFJlbmRlcmVyV2l0
aFBhdXNlZEltYWdlQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50JiwgQ2FjaGVkSW1hZ2UmKTsKICAg
ICB2b2lkIHJlbW92ZVJlbmRlcmVyV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9ucyhSZW5kZXJFbGVt
ZW50Jik7CiAgICAgdm9pZCByZW1vdmVSZW5kZXJlcldpdGhQYXVzZWRJbWFnZUFuaW1hdGlvbnMo
UmVuZGVyRWxlbWVudCYsIENhY2hlZEltYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlRWxlbWVudEJhc2UuY3BwCmluZGV4IGY2ZmY5NGIzYmQ4Yy4uN2E3OWU3NDZmYTQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcApAQCAtMjQs
NiArMjQsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVt
ZW50QmFzZS5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFuaW1hdG9y
LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9j
dW1lbnRFeHRlbnNpb25zLmNwcAppbmRleCBiOWI5NDUxMmE1ZWUuLjY2MjZjZWUzZmUxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTQyLDEw
ICs0MiwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBib29sIGFuaW1hdGlv
bnNQYXVzZWRGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgcmV0dXJuICFk
b2N1bWVudC5wYWdlKCkgfHwgIWRvY3VtZW50LnBhZ2UoKS0+aXNWaXNpYmxlKCkgfHwgIWRvY3Vt
ZW50LnBhZ2UoKS0+aW1hZ2VBbmltYXRpb25FbmFibGVkKCk7Cit9CisKIFNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6
IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX3Jlc291cmNlc0NhY2hlKG1ha2VVbmlxdWU8
U1ZHUmVzb3VyY2VzQ2FjaGU+KCkpCi0gICAgLCBtX2FyZUFuaW1hdGlvbnNQYXVzZWQoIWRvY3Vt
ZW50LnBhZ2UoKSB8fCAhZG9jdW1lbnQucGFnZSgpLT5pc1Zpc2libGUoKSkKKyAgICAsIG1fYXJl
QW5pbWF0aW9uc1BhdXNlZChhbmltYXRpb25zUGF1c2VkRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQog
ewogfQogCkBAIC0xMDgsNiArMTEzLDEwIEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpw
YXVzZUFuaW1hdGlvbnMoKQogCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6dW5wYXVzZUFu
aW1hdGlvbnMoKQogeworICAgIC8vIElmIGFuaW1hdGlvbnMgYXJlIHBhdXNlZCBhdCB0aGUgZG9j
dW1lbnQgbGV2ZWwsIGRvbid0IGFsbG93IGB0aGlzYCB0byBiZSB1bnBhdXNlZC4KKyAgICBpZiAo
YW5pbWF0aW9uc1BhdXNlZEZvckRvY3VtZW50KG1fZG9jdW1lbnQpKQorICAgICAgICByZXR1cm47
CisKICAgICBmb3IgKGF1dG8mIGNvbnRhaW5lciA6IG1fdGltZUNvbnRhaW5lcnMpCiAgICAgICAg
IGNvbnRhaW5lci51bnBhdXNlQW5pbWF0aW9ucygpOwogICAgIG1fYXJlQW5pbWF0aW9uc1BhdXNl
ZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCmlu
ZGV4IGRmNWMwMDg4NGU2ZC4uODc5Y2ExMGRiMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0RvY3VtZW50RXh0ZW5zaW9ucy5oCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYWRkVGltZUNvbnRhaW5lcihTVkdTVkdFbGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVUaW1l
Q29udGFpbmVyKFNWR1NWR0VsZW1lbnQmKTsKKyAgICBXZWFrSGFzaFNldDxTVkdTVkdFbGVtZW50
LCBXZWFrUHRySW1wbFdpdGhFdmVudFRhcmdldERhdGE+IHRpbWVDb250YWluZXJzRm9yVGVzdGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUNvbnRhaW5lcnM7IH0KIAogICAgIHZvaWQgYWRkUmVz
b3VyY2UoY29uc3QgQXRvbVN0cmluZyYgaWQsIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyJik7
CiAgICAgdm9pZCByZW1vdmVSZXNvdXJjZShjb25zdCBBdG9tU3RyaW5nJiBpZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCAxY2Y4ZTE5YTU2OTUuLjQ3OWY4
YTZkMjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0z
ODUsNiArMzg1LDE0IEBAIHZvaWQgU1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKCkKICAgICByb290
RWxlbWVudC0+c2V0Q3VycmVudFRpbWUoMCk7CiB9CiAKK3ZvaWQgU1ZHSW1hZ2U6OnJlc3VtZUFu
aW1hdGlvbigpCit7CisgICAgYXV0byByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7
CisgICAgaWYgKCFyb290RWxlbWVudCB8fCAhcm9vdEVsZW1lbnQtPmFuaW1hdGlvbnNQYXVzZWQo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIHJvb3RFbGVtZW50LT51bnBhdXNlQW5pbWF0aW9ucygp
OworfQorCiB2b2lkIFNWR0ltYWdlOjpzdG9wQW5pbWF0aW9uKCkKIHsKICAgICBtX3N0YXJ0QW5p
bWF0aW9uVGltZXIuc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApp
bmRleCBmODAzMWUwYjBjYjguLmYwNjM1M2U5OGU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmgKQEAgLTU1LDcgKzU1LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1Jl
bGF0aXZlV2lkdGgoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGhhc1JlbGF0aXZlSGVpZ2h0KCkg
Y29uc3QgZmluYWw7CiAKKyAgICAvLyBTdGFydCB0aGUgYW5pbWF0aW9uIGZyb20gdGhlIGJlZ2lu
bmluZy4KICAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uKCkgZmluYWw7CisgICAgLy8gUmVzdW1lIHRo
ZSBhbmltYXRpb24gZnJvbSB3aGVyZSBpdCB3YXMgbGFzdCBzdG9wcGVkLgorICAgIHZvaWQgcmVz
dW1lQW5pbWF0aW9uKCk7CiAgICAgdm9pZCBzdG9wQW5pbWF0aW9uKCkgZmluYWw7CiAgICAgdm9p
ZCByZXNldEFuaW1hdGlvbigpIGZpbmFsOwogICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdCBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAyYjk1ZDE1ZjkwNjIu
LmYwNWE5ZGM0YjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNzgz
LDYgKzc4MywyMSBAQCBFeGNlcHRpb25Pcjxkb3VibGU+IEludGVybmFsczo6c3ZnQW5pbWF0aW9u
c0ludGVydmFsKFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQpIGNvbgogICAgIHJldHVybiBlbGVtZW50
LnRpbWVDb250YWluZXIoKS5hbmltYXRpb25GcmFtZURlbGF5KCkudmFsdWUoKTsKIH0KIAorVmVj
dG9yPFJlZjxTVkdTVkdFbGVtZW50Pj4gSW50ZXJuYWxzOjphbGxTVkdTVkdFbGVtZW50cygpIGNv
bnN0Cit7CisgICAgVmVjdG9yPFJlZjxTVkdTVkdFbGVtZW50Pj4gZWxlbWVudHM7CisgICAgZm9y
IChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgICAgICBp
ZiAoIWRvY3VtZW50LT5zdmdFeHRlbnNpb25zKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBkb2N1bWVudC0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnRpbWVDb250YWluZXJzRm9y
VGVzdGluZygpLmZvckVhY2goWyZlbGVtZW50c10gKFdlYWtQdHI8U1ZHU1ZHRWxlbWVudCwgV2Vh
a1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRhPiBlbGVtZW50KSB7CisgICAgICAgICAgICBpZiAo
ZWxlbWVudCkKKyAgICAgICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQoKmVsZW1lbnQpOworICAg
ICAgICB9KTsKKyAgICB9CisgICAgcmV0dXJuIGVsZW1lbnRzOworfQorCiBTdHJpbmcgSW50ZXJu
YWxzOjphZGRyZXNzKE5vZGUmIG5vZGUpCiB7CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIjB4Iiwg
aGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pigmbm9kZSkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCmluZGV4IDU1MzIwOTI4MGMwZC4uNTMwNzM5YTdmZWJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTQ0Myw2ICs0NDMsOCBAQCBwdWJsaWM6CiAgICAgdW5z
aWduZWQgd29ya2VyVGhyZWFkQ291bnQoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjxib29sPiBh
cmVTVkdBbmltYXRpb25zUGF1c2VkKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8ZG91YmxlPiBz
dmdBbmltYXRpb25zSW50ZXJ2YWwoU1ZHU1ZHRWxlbWVudCYpIGNvbnN0OworICAgIC8vIFNvbWUg
U1ZHIGVsZW1lbnRzIGFyZSBub3QgYWNjZXNzaWJsZSB2aWEgbm9ybWFsIEFQSXMgKGUuZy4gdGhv
c2UgaW4gQ1NTIGBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2Zz4u
Li4pYCwgYnV0IHdlIG5lZWQgYWNjZXNzIHRvIHRoZW0gZm9yIHRlc3RpbmcuCisgICAgVmVjdG9y
PFJlZjxTVkdTVkdFbGVtZW50Pj4gYWxsU1ZHU1ZHRWxlbWVudHMoKSBjb25zdDsKIAogICAgIGVu
dW0gewogICAgICAgICAvLyBWYWx1ZXMgbmVlZCB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCBJbnRl
cm5hbHMuaWRsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDJkMDMzM2Qz
YWYzNy4uN2ExOGNjZWUwOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBA
IC01NzIsNiArNTcyLDcgQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2Up
IEZldGNoT2JqZWN0OwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYXJlU1ZHQW5p
bWF0aW9uc1BhdXNlZDsKICAgICBkb3VibGUgc3ZnQW5pbWF0aW9uc0ludGVydmFsKFNWR1NWR0Vs
ZW1lbnQgZWxlbWVudCk7CisgICAgc2VxdWVuY2U8U1ZHU1ZHRWxlbWVudD4gYWxsU1ZHU1ZHRWxl
bWVudHMoKTsKIAogICAgIGJvb2xlYW4gdGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1do
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1zdmctYW5pbWF0aW9u
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5k
MmIxNGU5NTc1ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9w
YWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQ0IEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IFNWRyBhbmltYXRpb25zIHBhdXNlZCBhbmQg
cmVzdW1lZCB3aGVuIHRoZSBwYWdlLXdpZGUgaW1hZ2UgYW5pbWF0aW9uIHNldHRpbmcgaXMgdG9n
Z2xlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKy0tLS0tIERpc2FibGluZyBp
bWFnZSBhbmltYXRpb25zLiAtLS0tLQorCitUZXN0aW5nICNhbmltYXRlVHJhbnNmb3JtLXN2Zy4K
K1BBU1Mgc3ZnTWF0cmljZXNBcmVFcXVhbChnZXRBbmltYXRlVHJhbnNmb3JtTWF0cml4KHN2Z1N2
Z0VsZW1lbnQpLCBpbml0aWFsQW5pbWF0ZVRyYW5zZm9ybU1hdHJpeCkgaXMgdHJ1ZQorCitUZXN0
aW5nICNjc3MtYmFja2dyb3VuZC1zdmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQuY2hpbGRyZW5bMF0u
eC5hbmltVmFsLnZhbHVlID09PSAwIGlzIHRydWUKKworVGVzdGluZyAjaWZyYW1lLXNyY2RvYy1z
dmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQuY2hpbGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlID09PSAw
IGlzIHRydWUKKworVGVzdGluZyAjaW1nLXNyYy1zdmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQuY2hp
bGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlID09PSAwIGlzIHRydWUKKworVGVzdGluZyAjaW5saW5l
LXN2Zy4KK1BBU1Mgc3ZnU3ZnRWxlbWVudC5jaGlsZHJlblswXS54LmFuaW1WYWwudmFsdWUgPT09
IDAgaXMgdHJ1ZQorCistLS0tLSBFbmFibGluZyBpbWFnZSBhbmltYXRpb25zLiAtLS0tLQorCitU
ZXN0aW5nICNhbmltYXRlVHJhbnNmb3JtLXN2Zy4KK1BBU1Mgc3ZnTWF0cmljZXNBcmVFcXVhbChn
ZXRBbmltYXRlVHJhbnNmb3JtTWF0cml4KHN2Z1N2Z0VsZW1lbnQpLCBpbml0aWFsQW5pbWF0ZVRy
YW5zZm9ybU1hdHJpeCkgaXMgZmFsc2UKKworVGVzdGluZyAjY3NzLWJhY2tncm91bmQtc3ZnLgor
UEFTUyBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAhPT0gMCBpcyB0
cnVlCisKK1Rlc3RpbmcgI2lmcmFtZS1zcmNkb2Mtc3ZnLgorUEFTUyBzdmdTdmdFbGVtZW50LmNo
aWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAhPT0gMCBpcyB0cnVlCisKK1Rlc3RpbmcgI2ltZy1z
cmMtc3ZnLgorUEFTUyBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAh
PT0gMCBpcyB0cnVlCisKK1Rlc3RpbmcgI2lubGluZS1zdmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQu
Y2hpbGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlICE9PSAwIGlzIHRydWUKKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1zdmctYW5pbWF0aW9ucy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1zdmctYW5p
bWF0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzg1
Y2E5NTlmZGZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFn
ZXdpZGUtcGxheS1wYXVzZS1zdmctYW5pbWF0aW9ucy5odG1sCkBAIC0wLDAgKzEsMTQ3IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorLmJveCB7CisgIHdpZHRoOiAzMDBw
eDsKKyAgaGVpZ2h0OiAyMDBweDsKKyAgYmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4
bWw7dXRmOCw8c3ZnIGlkPSJjc3MtYmFja2dyb3VuZC1zdmciIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyI+PHJlY3QgaWQ9ImJhY2tncm91bmQtaW1hZ2Utc3ZnLXJlY3QiIHdpZHRo
PSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiI+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0i
eCIgZnJvbT0iMCIgdG89IjIwMCIgZHVyPSI1cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz48
L3JlY3Q+PC9zdmc+Jyk7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzwhLS0gQmFz
aWMgaW5saW5lIFNWRyBhbmltYXRpb24gLS0+Cis8c3ZnIGlkPSJpbmxpbmUtc3ZnIiB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICA8cmVjdCBpZD0ic3ZnLXJlY3QiIHdpZHRo
PSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiI+CisgICAgPGFuaW1hdGUgYXR0cmlidXRl
TmFtZT0ieCIgZnJvbT0iMCIgdG89IjIwMCIgZHVyPSI1cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5p
dGUiLz4KKyAgPC9yZWN0PgorPC9zdmc+CisKKzwhLS0gYW5pbWF0ZVRyYW5zZm9ybSBTVkcgLS0+
Cis8c3ZnIGlkPSJhbmltYXRlVHJhbnNmb3JtLXN2ZyIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMy
LCAyMzIsIDIzNyk7IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIg
d2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHZpZXdCb3g9Ii00IC00IDggOCI+CisgIDxjaXJjbGUg
Y3g9IjAiIGN5PSIxIiByPSIyIiBzdHJva2U9InJlZCIgZmlsbD0ibm9uZSI+CisgICAgPGFuaW1h
dGVUcmFuc2Zvcm0KKyAgICAgIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIKKyAgICAgIGF0dHJp
YnV0ZVR5cGU9IlhNTCIKKyAgICAgIHR5cGU9InJvdGF0ZSIKKyAgICAgIGZyb209IjAiCisgICAg
ICB0bz0iMzYwIgorICAgICAgYmVnaW49IjBzIgorICAgICAgZHVyPSIxcyIKKyAgICAgIHJlcGVh
dENvdW50PSJpbmRlZmluaXRlIi8+CisgIDwvY2lyY2xlPgorPC9zdmc+CisKKzwhLS0gQ1NTIGJh
Y2tncm91bmQgU1ZHIGFuaW1hdGlvbiAtLT4KKzxkaXYgY2xhc3M9ImJveCI+PC9kaXY+CisKKzwh
LS0gU1ZHIGFuaW1hdGlvbiBlbWJlZGRlZCBpbiA8aW1nPiAtLT4KKzxpbWcgc3JjPQorJ2RhdGE6
aW1hZ2Uvc3ZnK3htbDt1dGY4LAorICA8c3ZnIGlkPSJpbWctc3JjLXN2ZyIgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw
MCIgZmlsbD0iZ3JlZW4iPgorICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ieCIgZnJvbT0i
MCIgdG89IjIwMCIgZHVyPSI1cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz4KKyAgICA8L3Jl
Y3Q+CisgIDwvc3ZnPgorJz4KKworPCEtLSBTVkcgYW5pbWF0aW9uIGVtYmVkZGVkIGluIDxpZnJh
bWU+IC0tPgorPGlmcmFtZSBzcmNkb2M9JworICA8c3ZnIGlkPSJpZnJhbWUtc3JjZG9jLXN2ZyIg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICA8cmVjdCB3aWR0aD0iMTAw
IiBoZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iPgorICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFt
ZT0ieCIgZnJvbT0iMCIgdG89IjIwMCIgZHVyPSI1cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUi
Lz4KKyAgICA8L3JlY3Q+CisgIDwvc3ZnPgorJz48L2lmcmFtZT4KKworPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IFNWRyBhbmltYXRpb25zIHBhdXNlZCBhbmQg
cmVzdW1lZCB3aGVuIHRoZSBwYWdlLXdpZGUgaW1hZ2UgYW5pbWF0aW9uIHNldHRpbmcgaXMgdG9n
Z2xlZC4iKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2djKCk7CisKK3ZhciBzdmdT
dmdFbGVtZW50LCBpbml0aWFsQW5pbWF0ZVRyYW5zZm9ybU1hdHJpeDsKKworLy8gSGFyZGNvZGVk
IHRvIHRoZSBzdHJ1Y3R1cmUgb2YgI2FuaW1hdGVUcmFuc2Zvcm0tc3ZnLiBJZiB5b3UgY2hhbmdl
IHRoZSBtYXJrdXAsIHlvdSBtdXN0IGFsc28gY2hhbmdlIHRoaXMgZnVuY3Rpb24uCitmdW5jdGlv
biBnZXRBbmltYXRlVHJhbnNmb3JtTWF0cml4KHN2Z1N2Z0VsZW1lbnQpIHsKKyAgICByZXR1cm4g
c3ZnU3ZnRWxlbWVudC5jaGlsZHJlblswXS50cmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLm1h
dHJpeDsKK30KKworZnVuY3Rpb24gc3ZnTWF0cmljZXNBcmVFcXVhbChtYXRyaXhBLCBtYXRyaXhC
KSB7CisgIHJldHVybiBtYXRyaXhBLmEgPT09IG1hdHJpeEIuYQorICAgICYmIG1hdHJpeEEuYiA9
PT0gbWF0cml4Qi5iCisgICAgJiYgbWF0cml4QS5jID09PSBtYXRyaXhCLmMKKyAgICAmJiBtYXRy
aXhBLmQgPT09IG1hdHJpeEIuZAorICAgICYmIG1hdHJpeEEuZSA9PT0gbWF0cml4Qi5lCisgICAg
JiYgbWF0cml4QS5mID09PSBtYXRyaXhCLmY7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeVNWR3NBcmVQ
YXVzZWQoZXhwZWN0UGF1c2VkKSB7CisgIC8vIFNvcnQgdGhlIFNWRyBlbGVtZW50cyBieSBJRCBz
byB0aGUgdGVzdCBvdXRwdXQgaXMgY29uc2lzdGVudCBmcm9tIHJ1biB0byBydW4uCisgIGNvbnN0
IHNvcnRlZFNWR1NWR0VsZW1lbnRzID0gaW50ZXJuYWxzLmFsbFNWR1NWR0VsZW1lbnRzKCkuc29y
dCgoZWxlbWVudEEsIGVsZW1lbnRCKSA9PiB7CisgICAgaWYgKGVsZW1lbnRBLmlkID4gZWxlbWVu
dEIuaWQpCisgICAgICByZXR1cm4gMTsKKworICAgIGlmIChlbGVtZW50QS5pZCA8IGVsZW1lbnRC
LmlkKQorICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIDA7CisgIH0pOworCisgIGZvciAo
Y29uc3QgZWxlbWVudCBvZiBzb3J0ZWRTVkdTVkdFbGVtZW50cykgeworICAgIHN2Z1N2Z0VsZW1l
bnQgPSBlbGVtZW50OworICAgIGRlYnVnKGBUZXN0aW5nICMke3N2Z1N2Z0VsZW1lbnQuaWR9LmAp
OworICAgIHN3aXRjaCAoc3ZnU3ZnRWxlbWVudC5pZCkgeworICAgICAgY2FzZSAiY3NzLWJhY2tn
cm91bmQtc3ZnIjoKKyAgICAgIGNhc2UgImlubGluZS1zdmciOgorICAgICAgY2FzZSAiaW1nLXNy
Yy1zdmciOgorICAgICAgY2FzZSAiaWZyYW1lLXNyY2RvYy1zdmciOgorICAgICAgICBpZiAoIShz
dmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdIGluc3RhbmNlb2YgU1ZHUmVjdEVsZW1lbnQpKQorICAg
ICAgICAgIGRlYnVnKGBGQUlMOiAnY2hpbGRyZW5bMF0nIG9mICR7c3ZnU3ZnRWxlbWVudC5pZH0g
c2hvdWxkJ3ZlIGJlZW4gYW4gU1ZHUmVjdEVsZW1lbnQgYnV0IHdhc24ndCwgc28gdGhpcyB0ZXN0
IHdvbid0IGJlaGF2ZSBhcyBleHBlY3RlZC5gKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKGBzdmdT
dmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAke2V4cGVjdFBhdXNlZCA/ICI9
PT0iIDogIiE9PSJ9IDBgKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICJhbmltYXRlVHJh
bnNmb3JtLXN2ZyI6CisgICAgICAgIHNob3VsZEJlKCJzdmdNYXRyaWNlc0FyZUVxdWFsKGdldEFu
aW1hdGVUcmFuc2Zvcm1NYXRyaXgoc3ZnU3ZnRWxlbWVudCksIGluaXRpYWxBbmltYXRlVHJhbnNm
b3JtTWF0cml4KSIsIGV4cGVjdFBhdXNlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgICAgICBi
cmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGRlYnVnKGBGQUlMOiBTVkcgdGVzdGNhc2Ug
d2l0aCB1bmV4cGVjdGVkIElEOiAke3N2Z1N2Z0VsZW1lbnQuaWR9YCk7CisgICAgfQorICAgIGRl
YnVnKCIiKTsKKyAgfQorfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgIHNldFRp
bWVvdXQoKCkgPT4geworICAgIGRlYnVnKCItLS0tLSBEaXNhYmxpbmcgaW1hZ2UgYW5pbWF0aW9u
cy4gLS0tLS1cbiIpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2VBbmlt
YXRpb25Db250cm9sRW5hYmxlZCh0cnVlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldEltYWdl
QW5pbWF0aW9uRW5hYmxlZChmYWxzZSk7CisKKyAgICBnYygpOworICAgIC8vIFJlc2V0IGFuaW1h
dGlvbnMgdG8gdGhlIGJlZ2lubmluZy4KKyAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgaW50ZXJu
YWxzLmFsbFNWR1NWR0VsZW1lbnRzKCkpIHsKKyAgICAgIGVsZW1lbnQuc2V0Q3VycmVudFRpbWUo
MCk7CisgICAgICBpZiAoZWxlbWVudC5pZCA9PT0gImFuaW1hdGVUcmFuc2Zvcm0tc3ZnIikKKyAg
ICAgICAgaW5pdGlhbEFuaW1hdGVUcmFuc2Zvcm1NYXRyaXggPSBnZXRBbmltYXRlVHJhbnNmb3Jt
TWF0cml4KGVsZW1lbnQpOworICAgIH0KKworICAgIC8vIEFsbG93IHNvbWUgdGltZSB0byBwYXNz
LgorICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgLy8gQWZ0ZXIgNTBtcywgdGhlIGFuaW1h
dGlvbnMgc2hvdWxkIG5vdCBoYXZlIHByb2dyZXNzZWQgYmVjYXVzZSB0aGUgcGFnZS13aWRlIGlt
YWdlIGFuaW1hdGlvbiBzZXR0aW5nIGlzIGRpc2FibGVkLgorICAgICAgdmVyaWZ5U1ZHc0FyZVBh
dXNlZCh0cnVlKTsKKworICAgICAgZGVidWcoIi0tLS0tIEVuYWJsaW5nIGltYWdlIGFuaW1hdGlv
bnMuIC0tLS0tXG4iKTsKKyAgICAgIC8vIFJlLWVuYWJsZSBhbmltYXRpb25zIGFuZCBhbGxvdyB0
aW1lIHRvIHBhc3Mgc28gdGhleSBjYW4gcHJvZ3Jlc3MuCisgICAgICBpbnRlcm5hbHMuc2V0SW1h
Z2VBbmltYXRpb25FbmFibGVkKHRydWUpOworICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAg
ICAgIHZlcmlmeVNWR3NBcmVQYXVzZWQoZmFsc2UpOworCisgICAgICAgIGludGVybmFscy5jbGVh
ck1lbW9yeUNhY2hlKCk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgfSwgNTApOwor
ICAgIH0sIDUwKTsKKyAgfSwgNTApCit9OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462760</attachid>
            <date>2022-10-01 23:22:36 -0700</date>
            <delta_ts>2022-10-04 17:58:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-245399-20221002012235.patch</filename>
            <type>text/plain</type>
            <size>23478</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA1YmY4ZGQ4Mzg1ZjRlYWNiOGRjOWVlZmEwZTUxZjkxZTY4OGVhNzIzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogU2F0LCAxIE9jdCAyMDIyIDE0OjUyOjQ0IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gU1ZHIGFu
aW1hdGlvbnMgc2hvdWxkIHJlc3BlY3QgUGFnZTo6aW1hZ2VBbmltYXRpb25FbmFibGVkCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ1Mzk5IHJkYXI6Ly8xMDAxNDM3
MjMKClJldmlld2VkIGJ5IChOT0JPRFkpLgoKSW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI0NDEyOCAoQWRkIGV4cGVyaW1lbnRhbApmZWF0dXJlIHRvIGNvbnRyb2wg
aW1hZ2UgYW5pbWF0aW9uIHBsYXkvcGF1c2Ugc3RhdGUpLCB3ZSBhZGRlZCBhCnBhZ2Utd2lkZSBz
ZXR0aW5nIHRvIGNvbnRyb2wgYW5pbWF0aW9uIHBsYXkvcGF1c2Ugc3RhdGUuIFNWRwphbmltYXRp
b25zIHNob3VsZCByZXNwZWN0IHRoaXMgc2V0dGluZyB0b28uCgoqIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1h
bmltYXRpb25zLmh0bWw6IEFkZGVkLgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cDoKKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVwYWludFZpc2libGVJbWFnZUFuaW1hdGlvbnMpOgoo
V2ViQ29yZTo6RnJhbWVWaWV3OjpyZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGlu
Z1N1YmZyYW1lcyk6CiogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaDoKKiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6UGFnZTo6c2V0SW1hZ2VBbmltYXRpb25F
bmFibGVkKToKKFdlYkNvcmU6OlBhZ2U6OnJlcGFpbnRBbmltYXRlZEltYWdlcyk6CiogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwOgooV2ViQ29yZTo6UmVuZGVyVmlldzo6cmVwYWludEltYWdlQW5pbWF0aW9uc0lmTmVl
ZGVkKToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oOgoqIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwOgoqIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgooV2ViQ29yZTo6YW5pbWF0aW9uc1BhdXNlZEZv
ckRvY3VtZW50KToKKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHRG9jdW1lbnRF
eHRlbnNpb25zKToKKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6dW5wYXVzZUFuaW1h
dGlvbnMpOgoqIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaDoKKFdl
YkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6dGltZUNvbnRhaW5lcnNGb3JUZXN0aW5nIGNv
bnN0KTogQWRkZWQuCiogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoK
KFdlYkNvcmU6OlNWR0ltYWdlOjpyZXN1bWVBbmltYXRpb24pOiBBZGRlZC4KKiBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHA6CihXZWJDb3JlOjpJbnRlcm5hbHM6OmFsbFNWR1NWR0VsZW1lbnRzIGNvbnN0
KTogQWRkZWQuCiogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaDoKKiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGw6Ci0tLQogU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwICAgICAgICAgICAgIHwgIDEwICstCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAgICAgICAgICAgICAgICAgICB8ICAgNiArLQogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmggICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAgICAgICAgfCAgNDEgKysrLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmggICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVFbGVtZW50QmFzZS5jcHAgIHwgICAyICsKIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1
bWVudEV4dGVuc2lvbnMuY3BwICB8ICAxMSArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5oICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAgICAgICB8ICAgOCArCiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaCAgICAgICAgfCAgIDMgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwICAgICAgICAgIHwgIDE1ICsrCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
ICAgICAgICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
ICAgICAgICAgIHwgICAxICsKIC4uLmlkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRpb25zLWV4cGVj
dGVkLnR4dCB8ICA0NCArKysrKysKIC4uLi9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRp
b25zLmh0bWwgICB8IDE0OCArKysrKysrKysrKysrKysrKysKIDE2IGZpbGVzIGNoYW5nZWQsIDI3
OCBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRpb25zLWV4
cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Bh
Z2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMuaHRtbAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAppbmRleCBmMzJlZTc1Y2E3MmEuLjYwZGJjNTQ0YjA2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcApAQCAtMjgwOCwxMyArMjgwOCwxMyBAQCB2b2lkIEZyYW1lVmlldzo6cmVz
dW1lVmlzaWJsZUltYWdlQW5pbWF0aW9ucyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkKICAg
ICAgICAgcmVuZGVyVmlldy0+cmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQodmlz
aWJsZVJlY3QpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cmVwYWludFZpc2libGVJbWFnZUFuaW1h
dGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCit2b2lkIEZyYW1lVmlldzo6cmVwYWlu
dFZpc2libGVJbWFnZUFuaW1hdGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGJvb2wg
YW5pbWF0aW9uRW5hYmxlZCkKIHsKICAgICBpZiAodmlzaWJsZVJlY3QuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogcmVuZGVyVmlldyA9IGZyYW1lKCkuY29udGVu
dFJlbmRlcmVyKCkpCi0gICAgICAgIHJlbmRlclZpZXctPnJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJ
Zk5lZWRlZCh2aXNpYmxlUmVjdCk7CisgICAgICAgIHJlbmRlclZpZXctPnJlcGFpbnRJbWFnZUFu
aW1hdGlvbnNJZk5lZWRlZCh2aXNpYmxlUmVjdCwgYW5pbWF0aW9uRW5hYmxlZCk7CiB9CiAKIHZv
aWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JpcHRlZEFuaW1hdGlvbnNBbmRUaW1lcnNUaHJvdHRsaW5n
U3RhdGUoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCkBAIC0yODUyLDEwICsyODUyLDEwIEBA
IHZvaWQgRnJhbWVWaWV3OjpyZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3Vi
ZnJhbWVzKCkKICAgICB9KTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnJlcGFpbnRWaXNpYmxlSW1h
Z2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCkKK3ZvaWQgRnJhbWVWaWV3OjpyZXBhaW50
VmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcyhib29sIGFuaW1hdGlvbkVu
YWJsZWQpCiB7Ci0gICAgYXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChbXSAoRnJhbWVW
aWV3JiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KSB7Ci0gICAgICAgIGZy
YW1lVmlldy5yZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0aW9ucyh2aXNpYmxlUmVjdCk7CisgICAg
YXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChbJl0gKEZyYW1lVmlldyYgZnJhbWVWaWV3
LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkgeworICAgICAgICBmcmFtZVZpZXcucmVwYWlu
dFZpc2libGVJbWFnZUFuaW1hdGlvbnModmlzaWJsZVJlY3QsIGFuaW1hdGlvbkVuYWJsZWQpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBkOGQ4ZjNhYTA5MjEuLjk4
YjdmZTVhMjcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0zMjEsNyArMzIxLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCB2aWV3cG9ydENvbnRlbnRzQ2hhbmdlZCgpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZy
YW1lcygpOwotICAgIHZvaWQgcmVwYWludFZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdT
dWJmcmFtZXMoKTsKKyAgICB2b2lkIHJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVk
aW5nU3ViZnJhbWVzKGJvb2wgLyogYW5pbWF0aW9uRW5hYmxlZCAqLyk7CiAKICAgICBTdHJpbmcg
bWVkaWFUeXBlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZWRpYVR5cGUo
Y29uc3QgU3RyaW5nJik7CkBAIC03NzQsNyArNzc0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
YXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChjb25zdCBGdW5jdGlvbjx2b2lkKEZyYW1l
VmlldyYgZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk+Jik7CiAgICAgdm9p
ZCByZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0
KTsKLSAgICB2b2lkIHJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJlY3Qm
IHZpc2libGVSZWN0KTsKKyAgICB2b2lkIHJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNv
bnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBib29sIC8qIGFuaW1hdGlvbkVuYWJsZWQgKi8pOwog
ICAgIHZvaWQgdXBkYXRlU2NyaXB0ZWRBbmltYXRpb25zQW5kVGltZXJzVGhyb3R0bGluZ1N0YXRl
KGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YWRqdXN0VGlsZWRCYWNraW5nQ292ZXJhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGVlMThl
MmVmOGI4NC4uYTM0Yjc5Yzc4MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NTAsNyArMTk1
MCw3IEBAIHZvaWQgUGFnZTo6c2V0SW1hZ2VBbmltYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkK
ICAgICBpZiAobV9pbWFnZUFuaW1hdGlvbkVuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0
dXJuOwogICAgIG1faW1hZ2VBbmltYXRpb25FbmFibGVkID0gZW5hYmxlZDsKLSAgICByZXBhaW50
QW5pbWF0ZWRJbWFnZXMoKTsKKyAgICByZXBhaW50QW5pbWF0ZWRJbWFnZXMoZW5hYmxlZCk7CiB9
CiAKIHZvaWQgUGFnZTo6c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9ucygpCkBAIC00MDE5LDEwICs0
MDE5LDEwIEBAIHZvaWQgUGFnZTo6Zm9yY2VSZXBhaW50QWxsRnJhbWVzKCkKICAgICB9CiB9CiAK
LXZvaWQgUGFnZTo6cmVwYWludEFuaW1hdGVkSW1hZ2VzKCkKK3ZvaWQgUGFnZTo6cmVwYWludEFu
aW1hdGVkSW1hZ2VzKGJvb2wgYW5pbWF0aW9uRW5hYmxlZCkKIHsKICAgICBpZiAoYXV0byogdmll
dyA9IG1haW5GcmFtZSgpLnZpZXcoKSkKLSAgICAgICAgdmlldy0+cmVwYWludFZpc2libGVJbWFn
ZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKTsKKyAgICAgICAgdmlldy0+cmVwYWludFZp
c2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoYW5pbWF0aW9uRW5hYmxlZCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMmJlODk2OTEx
ZGNiLi4yZDA1NzUzNTE2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC02OTYsNyArNjk2LDcgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0
ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW5nSW1hZ2Vz
KCk7Ci0gICAgdm9pZCByZXBhaW50QW5pbWF0ZWRJbWFnZXMoKTsKKyAgICB2b2lkIHJlcGFpbnRB
bmltYXRlZEltYWdlcyhib29sIC8qIGFuaW1hdGlvbkVuYWJsZWQgKi8pOwogCiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDE3NjYwN2E0NzRlMy4uMWJi
MDlkYmUwZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC01
MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyUXVvdGUuaCIKICNpbmNsdWRlICJSZW5kZXJU
cmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgorI2luY2x1ZGUgIlNWR0lt
YWdlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERh
dGEuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgpAQCAtODc1LDI0ICs4NzYsNDYgQEAg
dm9pZCBSZW5kZXJWaWV3OjpyZXN1bWVQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25z
dCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkKICAgICAgICAgcmVtb3ZlUmVuZGVyZXJXaXRoUGF1c2Vk
SW1hZ2VBbmltYXRpb25zKCpwYWlyLmZpcnN0LCAqcGFpci5zZWNvbmQpOwogfQogCi12b2lkIFJl
bmRlclZpZXc6OnJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0JiB2
aXNpYmxlUmVjdCkKK3ZvaWQgUmVuZGVyVmlldzo6cmVwYWludEltYWdlQW5pbWF0aW9uc0lmTmVl
ZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBib29sIGFuaW1hdGlvbkVuYWJsZWQpCiB7
CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8UmVuZGVyRWxlbWVu
dD4oKnRoaXMpKSB7CiAgICAgICAgIGlmICghZWxlbWVudC5pc1Zpc2libGVJbkRvY3VtZW50UmVj
dCh2aXNpYmxlUmVjdCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAvLyBGSVhN
RTogQ2hlY2sgd2hldGhlciB0aGUgYmFja2dyb3VuZCBpbWFnZShzKSBjYW4gYW5pbWF0ZSBiZWZv
cmUgcmVwYWludGluZy4KLSAgICAgICAgaWYgKGVsZW1lbnQuc3R5bGUoKS5oYXNCYWNrZ3JvdW5k
SW1hZ2UoKSkgewotICAgICAgICAgICAgZWxlbWVudC5yZXBhaW50KCk7Ci0gICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgYXV0byB1cGRhdGVBbmltYXRpb25zID0gWyZdKFNWR0ltYWdlJiBz
dmdJbWFnZSkgeworICAgICAgICAgICAgaWYgKGFuaW1hdGlvbkVuYWJsZWQpCisgICAgICAgICAg
ICAgICAgc3ZnSW1hZ2UucmVzdW1lQW5pbWF0aW9uKCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgc3ZnSW1hZ2Uuc3RvcEFuaW1hdGlvbigpOworICAgICAgICB9OworCisgICAg
ICAgIGJvb2wgbmVlZHNSZXBhaW50ID0gZmFsc2U7CisgICAgICAgIGZvciAoY29uc3QgYXV0byog
bGF5ZXIgPSAmZWxlbWVudC5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKTsgbGF5ZXI7IGxheWVy
ID0gbGF5ZXItPm5leHQoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0g
bGF5ZXItPmltYWdlKCkgPyBsYXllci0+aW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKSA6IG51bGxwdHIp
IHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogc3ZnSW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8
U1ZHSW1hZ2U+KGNhY2hlZEltYWdlLT5pbWFnZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgdXBk
YXRlQW5pbWF0aW9ucygqc3ZnSW1hZ2UpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF1dG8q
IGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7IGltYWdlICYmIGltYWdlLT5pc0FuaW1hdGVk
KCkpCisgICAgICAgICAgICAgICAgICAgIG5lZWRzUmVwYWludCA9IHRydWU7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYXV0byogcmVuZGVySW1hZ2UgPSBkeW5hbWlj
RG93bmNhc3Q8UmVuZGVySW1hZ2U+KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBpZiAocmVuZGVy
SW1hZ2UtPmhhc0FuaW1hdGVkSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgIGVsZW1lbnQucmVw
YWludCgpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYXV0byogY2FjaGVkSW1hZ2UgPSByZW5kZXJJbWFnZS0+Y2FjaGVkSW1hZ2UoKTsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBzdmdJbWFnZSA9IGNhY2hlZEltYWdlID8gZHluYW1pY0Rvd25j
YXN0PFNWR0ltYWdlPihjYWNoZWRJbWFnZS0+aW1hZ2UoKSkgOiBudWxscHRyKQorICAgICAgICAg
ICAgICAgIHVwZGF0ZUFuaW1hdGlvbnMoKnN2Z0ltYWdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KHJlbmRlckltYWdlLT5oYXNBbmltYXRlZEltYWdlKCkpCisgICAgICAgICAgICAgICAgbmVlZHNS
ZXBhaW50ID0gdHJ1ZTsKICAgICAgICAgfQorCisgICAgICAgIGlmIChuZWVkc1JlcGFpbnQpCisg
ICAgICAgICAgICBlbGVtZW50LnJlcGFpbnQoKTsKKyAgICB9CisKKyAgICBpZiAoZG9jdW1lbnQo
KS5zdmdFeHRlbnNpb25zKCkpIHsKKyAgICAgICAgaWYgKGFuaW1hdGlvbkVuYWJsZWQpCisgICAg
ICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS51bnBhdXNlQW5pbWF0aW9u
cygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVu
c2lvbnMoKS5wYXVzZUFuaW1hdGlvbnMoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5oCmluZGV4IGRjMWE1ZDI1MjdlNi4uZGZhNDI3YzJjYjQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTE3Miw3ICsxNzIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZWdpc3RlckZvclZpc2libGVJblZpZXdwb3J0Q2FsbGJhY2soUmVuZGVyRWxl
bWVudCYpOwogICAgIHZvaWQgdW5yZWdpc3RlckZvclZpc2libGVJblZpZXdwb3J0Q2FsbGJhY2so
UmVuZGVyRWxlbWVudCYpOwogICAgIHZvaWQgcmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZO
ZWVkZWQoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpOwotICAgIHZvaWQgcmVwYWludEltYWdl
QW5pbWF0aW9uc0lmTmVlZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KTsKKyAgICB2b2lk
IHJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVj
dCwgYm9vbCAvKiBhbmltYXRpb25FbmFibGVkICovKTsKICAgICB2b2lkIGFkZFJlbmRlcmVyV2l0
aFBhdXNlZEltYWdlQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50JiwgQ2FjaGVkSW1hZ2UmKTsKICAg
ICB2b2lkIHJlbW92ZVJlbmRlcmVyV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9ucyhSZW5kZXJFbGVt
ZW50Jik7CiAgICAgdm9pZCByZW1vdmVSZW5kZXJlcldpdGhQYXVzZWRJbWFnZUFuaW1hdGlvbnMo
UmVuZGVyRWxlbWVudCYsIENhY2hlZEltYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlRWxlbWVudEJhc2UuY3BwCmluZGV4IGY2ZmY5NGIzYmQ4Yy4uN2E3OWU3NDZmYTQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcApAQCAtMjQs
NiArMjQsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVt
ZW50QmFzZS5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFuaW1hdG9y
LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9j
dW1lbnRFeHRlbnNpb25zLmNwcAppbmRleCBiOWI5NDUxMmE1ZWUuLjY2MjZjZWUzZmUxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTQyLDEw
ICs0MiwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBib29sIGFuaW1hdGlv
bnNQYXVzZWRGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgcmV0dXJuICFk
b2N1bWVudC5wYWdlKCkgfHwgIWRvY3VtZW50LnBhZ2UoKS0+aXNWaXNpYmxlKCkgfHwgIWRvY3Vt
ZW50LnBhZ2UoKS0+aW1hZ2VBbmltYXRpb25FbmFibGVkKCk7Cit9CisKIFNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6
IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX3Jlc291cmNlc0NhY2hlKG1ha2VVbmlxdWU8
U1ZHUmVzb3VyY2VzQ2FjaGU+KCkpCi0gICAgLCBtX2FyZUFuaW1hdGlvbnNQYXVzZWQoIWRvY3Vt
ZW50LnBhZ2UoKSB8fCAhZG9jdW1lbnQucGFnZSgpLT5pc1Zpc2libGUoKSkKKyAgICAsIG1fYXJl
QW5pbWF0aW9uc1BhdXNlZChhbmltYXRpb25zUGF1c2VkRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQog
ewogfQogCkBAIC0xMDgsNiArMTEzLDEwIEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpw
YXVzZUFuaW1hdGlvbnMoKQogCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6dW5wYXVzZUFu
aW1hdGlvbnMoKQogeworICAgIC8vIElmIGFuaW1hdGlvbnMgYXJlIHBhdXNlZCBhdCB0aGUgZG9j
dW1lbnQgbGV2ZWwsIGRvbid0IGFsbG93IGB0aGlzYCB0byBiZSB1bnBhdXNlZC4KKyAgICBpZiAo
YW5pbWF0aW9uc1BhdXNlZEZvckRvY3VtZW50KG1fZG9jdW1lbnQpKQorICAgICAgICByZXR1cm47
CisKICAgICBmb3IgKGF1dG8mIGNvbnRhaW5lciA6IG1fdGltZUNvbnRhaW5lcnMpCiAgICAgICAg
IGNvbnRhaW5lci51bnBhdXNlQW5pbWF0aW9ucygpOwogICAgIG1fYXJlQW5pbWF0aW9uc1BhdXNl
ZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCmlu
ZGV4IGRmNWMwMDg4NGU2ZC4uODc5Y2ExMGRiMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0RvY3VtZW50RXh0ZW5zaW9ucy5oCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYWRkVGltZUNvbnRhaW5lcihTVkdTVkdFbGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVUaW1l
Q29udGFpbmVyKFNWR1NWR0VsZW1lbnQmKTsKKyAgICBXZWFrSGFzaFNldDxTVkdTVkdFbGVtZW50
LCBXZWFrUHRySW1wbFdpdGhFdmVudFRhcmdldERhdGE+IHRpbWVDb250YWluZXJzRm9yVGVzdGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUNvbnRhaW5lcnM7IH0KIAogICAgIHZvaWQgYWRkUmVz
b3VyY2UoY29uc3QgQXRvbVN0cmluZyYgaWQsIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyJik7
CiAgICAgdm9pZCByZW1vdmVSZXNvdXJjZShjb25zdCBBdG9tU3RyaW5nJiBpZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCAxY2Y4ZTE5YTU2OTUuLjQ3OWY4
YTZkMjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0z
ODUsNiArMzg1LDE0IEBAIHZvaWQgU1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKCkKICAgICByb290
RWxlbWVudC0+c2V0Q3VycmVudFRpbWUoMCk7CiB9CiAKK3ZvaWQgU1ZHSW1hZ2U6OnJlc3VtZUFu
aW1hdGlvbigpCit7CisgICAgYXV0byByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7
CisgICAgaWYgKCFyb290RWxlbWVudCB8fCAhcm9vdEVsZW1lbnQtPmFuaW1hdGlvbnNQYXVzZWQo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIHJvb3RFbGVtZW50LT51bnBhdXNlQW5pbWF0aW9ucygp
OworfQorCiB2b2lkIFNWR0ltYWdlOjpzdG9wQW5pbWF0aW9uKCkKIHsKICAgICBtX3N0YXJ0QW5p
bWF0aW9uVGltZXIuc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApp
bmRleCBmODAzMWUwYjBjYjguLmYwNjM1M2U5OGU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmgKQEAgLTU1LDcgKzU1LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1Jl
bGF0aXZlV2lkdGgoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGhhc1JlbGF0aXZlSGVpZ2h0KCkg
Y29uc3QgZmluYWw7CiAKKyAgICAvLyBTdGFydCB0aGUgYW5pbWF0aW9uIGZyb20gdGhlIGJlZ2lu
bmluZy4KICAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uKCkgZmluYWw7CisgICAgLy8gUmVzdW1lIHRo
ZSBhbmltYXRpb24gZnJvbSB3aGVyZSBpdCB3YXMgbGFzdCBzdG9wcGVkLgorICAgIHZvaWQgcmVz
dW1lQW5pbWF0aW9uKCk7CiAgICAgdm9pZCBzdG9wQW5pbWF0aW9uKCkgZmluYWw7CiAgICAgdm9p
ZCByZXNldEFuaW1hdGlvbigpIGZpbmFsOwogICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdCBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAyYjk1ZDE1ZjkwNjIu
LmYwNWE5ZGM0YjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNzgz
LDYgKzc4MywyMSBAQCBFeGNlcHRpb25Pcjxkb3VibGU+IEludGVybmFsczo6c3ZnQW5pbWF0aW9u
c0ludGVydmFsKFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQpIGNvbgogICAgIHJldHVybiBlbGVtZW50
LnRpbWVDb250YWluZXIoKS5hbmltYXRpb25GcmFtZURlbGF5KCkudmFsdWUoKTsKIH0KIAorVmVj
dG9yPFJlZjxTVkdTVkdFbGVtZW50Pj4gSW50ZXJuYWxzOjphbGxTVkdTVkdFbGVtZW50cygpIGNv
bnN0Cit7CisgICAgVmVjdG9yPFJlZjxTVkdTVkdFbGVtZW50Pj4gZWxlbWVudHM7CisgICAgZm9y
IChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgICAgICBp
ZiAoIWRvY3VtZW50LT5zdmdFeHRlbnNpb25zKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBkb2N1bWVudC0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnRpbWVDb250YWluZXJzRm9y
VGVzdGluZygpLmZvckVhY2goWyZlbGVtZW50c10gKFdlYWtQdHI8U1ZHU1ZHRWxlbWVudCwgV2Vh
a1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRhPiBlbGVtZW50KSB7CisgICAgICAgICAgICBpZiAo
ZWxlbWVudCkKKyAgICAgICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQoKmVsZW1lbnQpOworICAg
ICAgICB9KTsKKyAgICB9CisgICAgcmV0dXJuIGVsZW1lbnRzOworfQorCiBTdHJpbmcgSW50ZXJu
YWxzOjphZGRyZXNzKE5vZGUmIG5vZGUpCiB7CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIjB4Iiwg
aGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pigmbm9kZSkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCmluZGV4IDU1MzIwOTI4MGMwZC4uNTMwNzM5YTdmZWJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTQ0Myw2ICs0NDMsOCBAQCBwdWJsaWM6CiAgICAgdW5z
aWduZWQgd29ya2VyVGhyZWFkQ291bnQoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjxib29sPiBh
cmVTVkdBbmltYXRpb25zUGF1c2VkKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8ZG91YmxlPiBz
dmdBbmltYXRpb25zSW50ZXJ2YWwoU1ZHU1ZHRWxlbWVudCYpIGNvbnN0OworICAgIC8vIFNvbWUg
U1ZHIGVsZW1lbnRzIGFyZSBub3QgYWNjZXNzaWJsZSB2aWEgbm9ybWFsIEFQSXMgKGUuZy4gdGhv
c2UgaW4gQ1NTIGBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2Zz4u
Li4pYCwgYnV0IHdlIG5lZWQgYWNjZXNzIHRvIHRoZW0gZm9yIHRlc3RpbmcuCisgICAgVmVjdG9y
PFJlZjxTVkdTVkdFbGVtZW50Pj4gYWxsU1ZHU1ZHRWxlbWVudHMoKSBjb25zdDsKIAogICAgIGVu
dW0gewogICAgICAgICAvLyBWYWx1ZXMgbmVlZCB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCBJbnRl
cm5hbHMuaWRsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDJkMDMzM2Qz
YWYzNy4uN2ExOGNjZWUwOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBA
IC01NzIsNiArNTcyLDcgQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2Up
IEZldGNoT2JqZWN0OwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYXJlU1ZHQW5p
bWF0aW9uc1BhdXNlZDsKICAgICBkb3VibGUgc3ZnQW5pbWF0aW9uc0ludGVydmFsKFNWR1NWR0Vs
ZW1lbnQgZWxlbWVudCk7CisgICAgc2VxdWVuY2U8U1ZHU1ZHRWxlbWVudD4gYWxsU1ZHU1ZHRWxl
bWVudHMoKTsKIAogICAgIGJvb2xlYW4gdGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1do
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1zdmctYW5pbWF0aW9u
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5k
MmIxNGU5NTc1ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9w
YWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQ0IEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IFNWRyBhbmltYXRpb25zIHBhdXNlZCBhbmQg
cmVzdW1lZCB3aGVuIHRoZSBwYWdlLXdpZGUgaW1hZ2UgYW5pbWF0aW9uIHNldHRpbmcgaXMgdG9n
Z2xlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKy0tLS0tIERpc2FibGluZyBp
bWFnZSBhbmltYXRpb25zLiAtLS0tLQorCitUZXN0aW5nICNhbmltYXRlVHJhbnNmb3JtLXN2Zy4K
K1BBU1Mgc3ZnTWF0cmljZXNBcmVFcXVhbChnZXRBbmltYXRlVHJhbnNmb3JtTWF0cml4KHN2Z1N2
Z0VsZW1lbnQpLCBpbml0aWFsQW5pbWF0ZVRyYW5zZm9ybU1hdHJpeCkgaXMgdHJ1ZQorCitUZXN0
aW5nICNjc3MtYmFja2dyb3VuZC1zdmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQuY2hpbGRyZW5bMF0u
eC5hbmltVmFsLnZhbHVlID09PSAwIGlzIHRydWUKKworVGVzdGluZyAjaWZyYW1lLXNyY2RvYy1z
dmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQuY2hpbGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlID09PSAw
IGlzIHRydWUKKworVGVzdGluZyAjaW1nLXNyYy1zdmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQuY2hp
bGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlID09PSAwIGlzIHRydWUKKworVGVzdGluZyAjaW5saW5l
LXN2Zy4KK1BBU1Mgc3ZnU3ZnRWxlbWVudC5jaGlsZHJlblswXS54LmFuaW1WYWwudmFsdWUgPT09
IDAgaXMgdHJ1ZQorCistLS0tLSBFbmFibGluZyBpbWFnZSBhbmltYXRpb25zLiAtLS0tLQorCitU
ZXN0aW5nICNhbmltYXRlVHJhbnNmb3JtLXN2Zy4KK1BBU1Mgc3ZnTWF0cmljZXNBcmVFcXVhbChn
ZXRBbmltYXRlVHJhbnNmb3JtTWF0cml4KHN2Z1N2Z0VsZW1lbnQpLCBpbml0aWFsQW5pbWF0ZVRy
YW5zZm9ybU1hdHJpeCkgaXMgZmFsc2UKKworVGVzdGluZyAjY3NzLWJhY2tncm91bmQtc3ZnLgor
UEFTUyBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAhPT0gMCBpcyB0
cnVlCisKK1Rlc3RpbmcgI2lmcmFtZS1zcmNkb2Mtc3ZnLgorUEFTUyBzdmdTdmdFbGVtZW50LmNo
aWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAhPT0gMCBpcyB0cnVlCisKK1Rlc3RpbmcgI2ltZy1z
cmMtc3ZnLgorUEFTUyBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAh
PT0gMCBpcyB0cnVlCisKK1Rlc3RpbmcgI2lubGluZS1zdmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQu
Y2hpbGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlICE9PSAwIGlzIHRydWUKKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1zdmctYW5pbWF0aW9ucy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1zdmctYW5p
bWF0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjg5
NTdlNDlmYzA0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFn
ZXdpZGUtcGxheS1wYXVzZS1zdmctYW5pbWF0aW9ucy5odG1sCkBAIC0wLDAgKzEsMTQ4IEBACis8
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHJ1blNpbmdseT10cnVlIF0gLS0+Cis8IS0tIEFsd2F5
cyBydW4gdGhpcyB0ZXN0IGluIGEgY2xlYW4gdGVzdGluZyBlbnZpcm9ubWVudCB3aXRoIHJ1blNp
bmdseT10cnVlLiBXaXRob3V0IGRvaW5nIHRoaXMsIHN0YXRlIHByZXNlcnZlZCBiZXR3ZWVuCisg
ICAgIGVhY2ggcnVuIGNhbiBjYXVzZSByZXBlYXRlZCBpdGVyYXRpb25zIG9mIHRoaXMgdGVzdCB0
byBmYWlsLiAtLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisuYm94IHsK
KyAgd2lkdGg6IDMwMHB4OworICBoZWlnaHQ6IDIwMHB4OworICBiYWNrZ3JvdW5kOiB1cmwoJ2Rh
dGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgaWQ9ImNzcy1iYWNrZ3JvdW5kLXN2ZyIgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCBpZD0iYmFja2dyb3VuZC1pbWFnZS1z
dmctcmVjdCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImdyZWVuIj48YW5pbWF0ZSBh
dHRyaWJ1dGVOYW1lPSJ4IiBmcm9tPSIwIiB0bz0iMjAwIiBkdXI9IjVzIiByZXBlYXRDb3VudD0i
aW5kZWZpbml0ZSIvPjwvcmVjdD48L3N2Zz4nKTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKworPCEtLSBCYXNpYyBpbmxpbmUgU1ZHIGFuaW1hdGlvbiAtLT4KKzxzdmcgaWQ9ImlubGlu
ZS1zdmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgIDxyZWN0IGlkPSJz
dmctcmVjdCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImdyZWVuIj4KKyAgICA8YW5p
bWF0ZSBhdHRyaWJ1dGVOYW1lPSJ4IiBmcm9tPSIwIiB0bz0iMjAwIiBkdXI9IjVzIiByZXBlYXRD
b3VudD0iaW5kZWZpbml0ZSIvPgorICA8L3JlY3Q+Cis8L3N2Zz4KKworPCEtLSBhbmltYXRlVHJh
bnNmb3JtIFNWRyAtLT4KKzxzdmcgaWQ9ImFuaW1hdGVUcmFuc2Zvcm0tc3ZnIiB2ZXJzaW9uPSIx
LjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3R5bGU9ImJhY2tncm91bmQt
Y29sb3I6IHJnYigyMzIsIDIzMiwgMjM3KTsiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgdmlld0JveD0iLTQgLTQgOCA4
Ij4KKyAgPGNpcmNsZSBjeD0iMCIgY3k9IjEiIHI9IjIiIHN0cm9rZT0icmVkIiBmaWxsPSJub25l
Ij4KKyAgICA8YW5pbWF0ZVRyYW5zZm9ybQorICAgICAgYXR0cmlidXRlTmFtZT0idHJhbnNmb3Jt
IgorICAgICAgYXR0cmlidXRlVHlwZT0iWE1MIgorICAgICAgdHlwZT0icm90YXRlIgorICAgICAg
ZnJvbT0iMCIKKyAgICAgIHRvPSIzNjAiCisgICAgICBiZWdpbj0iMHMiCisgICAgICBkdXI9IjFz
IgorICAgICAgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz4KKyAgPC9jaXJjbGU+Cis8L3N2Zz4K
KworPCEtLSBDU1MgYmFja2dyb3VuZCBTVkcgYW5pbWF0aW9uIC0tPgorPGRpdiBjbGFzcz0iYm94
Ij48L2Rpdj4KKworPCEtLSBTVkcgYW5pbWF0aW9uIGVtYmVkZGVkIGluIDxpbWc+IC0tPgorPGlt
ZyBzcmM9CisnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsCisgIDxzdmcgaWQ9ImltZy1zcmMtc3Zn
IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgIDxyZWN0IHdpZHRoPSIx
MDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiI+CisgICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVO
YW1lPSJ4IiBmcm9tPSIwIiB0bz0iMjAwIiBkdXI9IjVzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0
ZSIvPgorICAgIDwvcmVjdD4KKyAgPC9zdmc+CisnPgorCis8IS0tIFNWRyBhbmltYXRpb24gZW1i
ZWRkZWQgaW4gPGlmcmFtZT4gLS0+Cis8aWZyYW1lIHNyY2RvYz0nCisgIDxzdmcgaWQ9ImlmcmFt
ZS1zcmNkb2Mtc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgIDxy
ZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiI+CisgICAgICA8YW5pbWF0
ZSBhdHRyaWJ1dGVOYW1lPSJ4IiBmcm9tPSIwIiB0bz0iMjAwIiBkdXI9IjVzIiByZXBlYXRDb3Vu
dD0iaW5kZWZpbml0ZSIvPgorICAgIDwvcmVjdD4KKyAgPC9zdmc+CisnPjwvaWZyYW1lPgorCis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgU1ZHIGFuaW1hdGlv
bnMgcGF1c2VkIGFuZCByZXN1bWVkIHdoZW4gdGhlIHBhZ2Utd2lkZSBpbWFnZSBhbmltYXRpb24g
c2V0dGluZyBpcyB0b2dnbGVkLiIpOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2
YXIgc3ZnU3ZnRWxlbWVudCwgaW5pdGlhbEFuaW1hdGVUcmFuc2Zvcm1NYXRyaXg7CisKKy8vIEhh
cmRjb2RlZCB0byB0aGUgc3RydWN0dXJlIG9mICNhbmltYXRlVHJhbnNmb3JtLXN2Zy4gSWYgeW91
IGNoYW5nZSB0aGUgbWFya3VwLCB5b3UgbXVzdCBhbHNvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uLgor
ZnVuY3Rpb24gZ2V0QW5pbWF0ZVRyYW5zZm9ybU1hdHJpeChzdmdTdmdFbGVtZW50KSB7CisgICAg
cmV0dXJuIHN2Z1N2Z0VsZW1lbnQuY2hpbGRyZW5bMF0udHJhbnNmb3JtLmFuaW1WYWwuZ2V0SXRl
bSgwKS5tYXRyaXg7Cit9CisKK2Z1bmN0aW9uIHN2Z01hdHJpY2VzQXJlRXF1YWwobWF0cml4QSwg
bWF0cml4QikgeworICByZXR1cm4gbWF0cml4QS5hID09PSBtYXRyaXhCLmEKKyAgICAmJiBtYXRy
aXhBLmIgPT09IG1hdHJpeEIuYgorICAgICYmIG1hdHJpeEEuYyA9PT0gbWF0cml4Qi5jCisgICAg
JiYgbWF0cml4QS5kID09PSBtYXRyaXhCLmQKKyAgICAmJiBtYXRyaXhBLmUgPT09IG1hdHJpeEIu
ZQorICAgICYmIG1hdHJpeEEuZiA9PT0gbWF0cml4Qi5mOworfQorCitmdW5jdGlvbiB2ZXJpZnlT
VkdzQXJlUGF1c2VkKGV4cGVjdFBhdXNlZCkgeworICAvLyBTb3J0IHRoZSBTVkcgZWxlbWVudHMg
YnkgSUQgc28gdGhlIHRlc3Qgb3V0cHV0IGlzIGNvbnNpc3RlbnQgZnJvbSBydW4gdG8gcnVuLgor
ICBjb25zdCBzb3J0ZWRTVkdTVkdFbGVtZW50cyA9IGludGVybmFscy5hbGxTVkdTVkdFbGVtZW50
cygpLnNvcnQoKGVsZW1lbnRBLCBlbGVtZW50QikgPT4geworICAgIGlmIChlbGVtZW50QS5pZCA+
IGVsZW1lbnRCLmlkKQorICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAoZWxlbWVudEEuaWQgPCBl
bGVtZW50Qi5pZCkKKyAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiAwOworICB9KTsKKwor
ICBmb3IgKGNvbnN0IGVsZW1lbnQgb2Ygc29ydGVkU1ZHU1ZHRWxlbWVudHMpIHsKKyAgICBzdmdT
dmdFbGVtZW50ID0gZWxlbWVudDsKKyAgICBkZWJ1ZyhgVGVzdGluZyAjJHtzdmdTdmdFbGVtZW50
LmlkfS5gKTsKKyAgICBzd2l0Y2ggKHN2Z1N2Z0VsZW1lbnQuaWQpIHsKKyAgICAgIGNhc2UgImNz
cy1iYWNrZ3JvdW5kLXN2ZyI6CisgICAgICBjYXNlICJpbmxpbmUtc3ZnIjoKKyAgICAgIGNhc2Ug
ImltZy1zcmMtc3ZnIjoKKyAgICAgIGNhc2UgImlmcmFtZS1zcmNkb2Mtc3ZnIjoKKyAgICAgICAg
aWYgKCEoc3ZnU3ZnRWxlbWVudC5jaGlsZHJlblswXSBpbnN0YW5jZW9mIFNWR1JlY3RFbGVtZW50
KSkKKyAgICAgICAgICBkZWJ1ZyhgRkFJTDogJ2NoaWxkcmVuWzBdJyBvZiAke3N2Z1N2Z0VsZW1l
bnQuaWR9IHNob3VsZCd2ZSBiZWVuIGFuIFNWR1JlY3RFbGVtZW50IGJ1dCB3YXNuJ3QsIHNvIHRo
aXMgdGVzdCB3b24ndCBiZWhhdmUgYXMgZXhwZWN0ZWQuYCk7CisgICAgICAgIHNob3VsZEJlVHJ1
ZShgc3ZnU3ZnRWxlbWVudC5jaGlsZHJlblswXS54LmFuaW1WYWwudmFsdWUgJHtleHBlY3RQYXVz
ZWQgPyAiPT09IiA6ICIhPT0ifSAwYCk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAiYW5p
bWF0ZVRyYW5zZm9ybS1zdmciOgorICAgICAgICBzaG91bGRCZSgic3ZnTWF0cmljZXNBcmVFcXVh
bChnZXRBbmltYXRlVHJhbnNmb3JtTWF0cml4KHN2Z1N2Z0VsZW1lbnQpLCBpbml0aWFsQW5pbWF0
ZVRyYW5zZm9ybU1hdHJpeCkiLCBleHBlY3RQYXVzZWQgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBkZWJ1ZyhgRkFJTDogU1ZHIHRl
c3RjYXNlIHdpdGggdW5leHBlY3RlZCBJRDogJHtzdmdTdmdFbGVtZW50LmlkfWApOworICAgIH0K
KyAgICBkZWJ1ZygiIik7CisgIH0KK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewor
ICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICBkZWJ1ZygiLS0tLS0gRGlzYWJsaW5nIGltYWdlIGFu
aW1hdGlvbnMuIC0tLS0tXG4iKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldElt
YWdlQW5pbWF0aW9uQ29udHJvbEVuYWJsZWQodHJ1ZSk7CisgICAgd2luZG93LmludGVybmFscy5z
ZXRJbWFnZUFuaW1hdGlvbkVuYWJsZWQoZmFsc2UpOworCisgICAgLy8gUmVzZXQgYW5pbWF0aW9u
cyB0byB0aGUgYmVnaW5uaW5nLgorICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBpbnRlcm5hbHMu
YWxsU1ZHU1ZHRWxlbWVudHMoKSkgeworICAgICAgZWxlbWVudC5zZXRDdXJyZW50VGltZSgwKTsK
KyAgICAgIGlmIChlbGVtZW50LmlkID09PSAiYW5pbWF0ZVRyYW5zZm9ybS1zdmciKQorICAgICAg
ICBpbml0aWFsQW5pbWF0ZVRyYW5zZm9ybU1hdHJpeCA9IGdldEFuaW1hdGVUcmFuc2Zvcm1NYXRy
aXgoZWxlbWVudCk7CisgICAgfQorCisgICAgLy8gQWxsb3cgc29tZSB0aW1lIHRvIHBhc3MuCisg
ICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAvLyBBZnRlciA1MG1zLCB0aGUgYW5pbWF0aW9u
cyBzaG91bGQgbm90IGhhdmUgcHJvZ3Jlc3NlZCBiZWNhdXNlIHRoZSBwYWdlLXdpZGUgaW1hZ2Ug
YW5pbWF0aW9uIHNldHRpbmcgaXMgZGlzYWJsZWQuCisgICAgICB2ZXJpZnlTVkdzQXJlUGF1c2Vk
KHRydWUpOworCisgICAgICBkZWJ1ZygiLS0tLS0gRW5hYmxpbmcgaW1hZ2UgYW5pbWF0aW9ucy4g
LS0tLS1cbiIpOworICAgICAgLy8gUmUtZW5hYmxlIGFuaW1hdGlvbnMgYW5kIGFsbG93IHRpbWUg
dG8gcGFzcyBzbyB0aGV5IGNhbiBwcm9ncmVzcy4KKyAgICAgIGludGVybmFscy5zZXRJbWFnZUFu
aW1hdGlvbkVuYWJsZWQodHJ1ZSk7CisgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAg
dmVyaWZ5U1ZHc0FyZVBhdXNlZChmYWxzZSk7CisKKyAgICAgICAgaW50ZXJuYWxzLmNsZWFyTWVt
b3J5Q2FjaGUoKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICB9LCA1MCk7CisgICAg
fSwgNTApOworICB9LCA1MCkKK307Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462801</attachid>
            <date>2022-10-04 17:58:42 -0700</date>
            <delta_ts>2022-10-06 20:31:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-245399-20221004175841.patch</filename>
            <type>text/plain</type>
            <size>19427</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA5NWFlMzdmMDNkNjFjNWU3OTJhZTNmZGQ2NDBiNWRmNGUxM2ZjY2EwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogVHVlLCA0IE9jdCAyMDIyIDE3OjMzOjQwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gU1ZHIGFu
aW1hdGlvbnMgc2hvdWxkIHJlc3BlY3QgUGFnZTo6aW1hZ2VBbmltYXRpb25FbmFibGVkCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ1Mzk5IHJkYXI6Ly8xMDAxNDM3
MjMKClJldmlld2VkIGJ5IChOT0JPRFkpLgoKSW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI0NDEyOCAoQWRkIGV4cGVyaW1lbnRhbApmZWF0dXJlIHRvIGNvbnRyb2wg
aW1hZ2UgYW5pbWF0aW9uIHBsYXkvcGF1c2Ugc3RhdGUpLCB3ZSBhZGRlZCBhCnBhZ2Utd2lkZSBz
ZXR0aW5nIHRvIGNvbnRyb2wgYW5pbWF0aW9uIHBsYXkvcGF1c2Ugc3RhdGUuIFNWRwphbmltYXRp
b25zIHNob3VsZCByZXNwZWN0IHRoaXMgc2V0dGluZyB0b28uCgoqIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1h
bmltYXRpb25zLmh0bWw6IEFkZGVkLgoqIFNvdXJjZS9XVEYvd3RmL1dlYWtIYXNoU2V0Lmg6Ck1h
a2UgYGZvckVhY2hgIGNvbnN0IGJlY2F1c2UgaXQgY2FuIGJlIChhbmQgaXQgd2FzIHJlcXVpcmVk
IGZvciB0aGlzIHBhdGNoKS4KKFdURjo6Y29weVRvUmVmVmVjdG9yKTogQWRkZWQuCiogU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwOgooV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXBhaW50
VmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcyk6CiogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgooV2ViQ29yZTo6UmVuZGVyVmlldzo6cmVwYWlu
dEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkKToKKiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZUVsZW1lbnRCYXNlLmNwcDoKKiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNp
b25zLmNwcDoKKFdlYkNvcmU6OmFuaW1hdGlvbnNQYXVzZWRGb3JEb2N1bWVudCk6CihXZWJDb3Jl
OjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR0RvY3VtZW50RXh0ZW5zaW9ucyk6CihXZWJDb3Jl
OjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFsbFNWR1NWR0VsZW1lbnRzIGNvbnN0KTogQWRkZWQu
CihXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnVucGF1c2VBbmltYXRpb25zKToKKiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmg6CiogU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKFdlYkNvcmU6OlNWR0ltYWdlOjpyZXN1bWVB
bmltYXRpb24pOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aDoKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHA6CihXZWJDb3JlOjpJbnRl
cm5hbHM6OmFsbFNWR1NWR0VsZW1lbnRzIGNvbnN0KTogQWRkZWQuCiogU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaDoKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGw6Ci0tLQogU291cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaCAgICAgICAgICAgICAgICAgIHwg
IDEzICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgICAgICAgfCAg
MzkgKysrLS0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwICB8
ICAgMiArCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCAgfCAg
MTcgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaCAgICB8ICAg
MSArCiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwICAgICAgfCAgIDgg
KwogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggICAgICAgIHwgICAzICsK
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCAgICAgICAgICB8ICAxMSArKwog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCAgICAgICAgICAgIHwgICAyICsKIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCAgICAgICAgICB8ICAgMSArCiAuLi5p
ZGUtcGxheS1wYXVzZS1zdmctYW5pbWF0aW9ucy1leHBlY3RlZC50eHQgfCAgNDQgKysrKysrCiAu
Li4vcGFnZXdpZGUtcGxheS1wYXVzZS1zdmctYW5pbWF0aW9ucy5odG1sICAgfCAxNDggKysrKysr
KysrKysrKysrKysrCiAxMiBmaWxlcyBjaGFuZ2VkLCAyNzcgaW5zZXJ0aW9ucygrKSwgMTIgZGVs
ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFn
ZXdpZGUtcGxheS1wYXVzZS1zdmctYW5pbWF0aW9ucy1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1h
bmltYXRpb25zLmh0bWwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaFNldC5o
IGIvU291cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaAppbmRleCBjYWZiODc2MjViYTAuLjg1Zjgw
NWQ4MDM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9XZWFrSGFzaFNldC5oCkBAIC0xMzYsNyArMTM2LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbV9zZXQuc2l6ZSgpOwogICAgIH0KIAotICAgIHZvaWQgZm9yRWFjaChj
b25zdCBGdW5jdGlvbjx2b2lkKFQmKT4mIGNhbGxiYWNrKQorICAgIHZvaWQgZm9yRWFjaChjb25z
dCBGdW5jdGlvbjx2b2lkKFQmKT4mIGNhbGxiYWNrKSBjb25zdAogICAgIHsKICAgICAgICAgYXV0
byBpdGVtcyA9IG1hcChtX3NldCwgW10oY29uc3QgUmVmPFdlYWtQdHJJbXBsPiYgaXRlbSkgewog
ICAgICAgICAgICAgYXV0byogcG9pbnRlciA9IHN0YXRpY19jYXN0PFQqPihpdGVtLT50ZW1wbGF0
ZSBnZXQ8VD4oKSk7CkBAIC0xNzksNiArMTc5LDE3IEBAIGlubGluZSBhdXRvIGNvcHlUb1ZlY3Rv
cihjb25zdCBXZWFrSGFzaFNldDxULCBXZWFrTWFwSW1wbD4mIGNvbGxlY3Rpb24pIC0+IFZlY3Rv
CiAgICAgcmV0dXJuIFdURjo6bWFwKGNvbGxlY3Rpb24sIFtdKGF1dG8mIHYpIC0+IFdlYWtQdHI8
VCwgV2Vha01hcEltcGw+IHsgcmV0dXJuIFdlYWtQdHI8VCwgV2Vha01hcEltcGw+IHsgdiB9OyB9
KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgV2Vha01hcEltcGw+Citpbmxp
bmUgVmVjdG9yPFJlZjxUPj4gY29weVRvUmVmVmVjdG9yKGNvbnN0IFdlYWtIYXNoU2V0PFQsIFdl
YWtNYXBJbXBsPiYgd2Vha0hhc2hTZXQpCit7CisgICAgVmVjdG9yPFJlZjxUPj4gcmVzdWx0Owor
ICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHdlYWtIYXNoU2V0LmNvbXB1dGVTaXpl
KCkpOworICAgIHdlYWtIYXNoU2V0LmZvckVhY2goWyZdIChXZWFrUHRyPFQsIFdlYWtNYXBJbXBs
PiBpdGVtKSB7CisgICAgICAgIC8vIFVuY29uZGl0aW9uYWxseSBkZXJlZmVyZW5jaW5nIGBpdGVt
YCBpcyBzYWZlIGhlcmUgYmVjYXVzZSBgZm9yRWFjaGAgd2lsbCBvbmx5IGV4ZWN1dGUgb3VyIGNh
bGxiYWNrIGZvciBub24tbnVsbCBXZWFrUHRycy4KKyAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFw
cGVuZCgqaXRlbSk7CisgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAogfSAvLyBuYW1l
c3BhY2UgV1RGCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCAx
NzY2MDdhNDc0ZTMuLmVhN2Y5ZTBiODVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcApAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIlJlbmRlclF1b3RlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVHJlZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIK
KyNpbmNsdWRlICJTVkdJbWFnZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U3R5bGVJbmhlcml0ZWREYXRhLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKQEAgLTg3
NywyMiArODc4LDQwIEBAIHZvaWQgUmVuZGVyVmlldzo6cmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRp
b25zSWZOZWVkZWQoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCiAKIHZvaWQgUmVuZGVyVmll
dzo6cmVwYWludEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVS
ZWN0KQogeworICAgIGJvb2wgYW5pbWF0aW9uRW5hYmxlZCA9IHBhZ2UoKS5pbWFnZUFuaW1hdGlv
bkVuYWJsZWQoKTsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxS
ZW5kZXJFbGVtZW50PigqdGhpcykpIHsKICAgICAgICAgaWYgKCFlbGVtZW50LmlzVmlzaWJsZUlu
RG9jdW1lbnRSZWN0KHZpc2libGVSZWN0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIC8vIEZJWE1FOiBDaGVjayB3aGV0aGVyIHRoZSBiYWNrZ3JvdW5kIGltYWdlKHMpIGNhbiBh
bmltYXRlIGJlZm9yZSByZXBhaW50aW5nLgotICAgICAgICBpZiAoZWxlbWVudC5zdHlsZSgpLmhh
c0JhY2tncm91bmRJbWFnZSgpKSB7CisgICAgICAgIGJvb2wgbmVlZHNSZXBhaW50ID0gZmFsc2U7
CisgICAgICAgIGF1dG8gdXBkYXRlQW5pbWF0aW9uID0gWyZdKENhY2hlZEltYWdlKiBjYWNoZWRJ
bWFnZSkgeworICAgICAgICAgICAgaWYgKCFjYWNoZWRJbWFnZSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgIGlmIChhdXRvKiBzdmdJbWFnZSA9IGR5bmFtaWNEb3duY2Fz
dDxTVkdJbWFnZT4oY2FjaGVkSW1hZ2UtPmltYWdlKCkpKSB7CisgICAgICAgICAgICAgICAgaWYg
KGFuaW1hdGlvbkVuYWJsZWQpCisgICAgICAgICAgICAgICAgICAgIHN2Z0ltYWdlLT5yZXN1bWVB
bmltYXRpb24oKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN2
Z0ltYWdlLT5zdG9wQW5pbWF0aW9uKCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIGlt
YWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7IGltYWdlICYmIGltYWdlLT5pc0FuaW1hdGVkKCkp
CisgICAgICAgICAgICAgICAgbmVlZHNSZXBhaW50ID0gdHJ1ZTsKKyAgICAgICAgfTsKKworICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8qIGxheWVyID0gJmVsZW1lbnQuc3R5bGUoKS5iYWNrZ3JvdW5k
TGF5ZXJzKCk7IGxheWVyOyBsYXllciA9IGxheWVyLT5uZXh0KCkpCisgICAgICAgICAgICB1cGRh
dGVBbmltYXRpb24obGF5ZXItPmltYWdlKCkgPyBsYXllci0+aW1hZ2UoKS0+Y2FjaGVkSW1hZ2Uo
KSA6IG51bGxwdHIpOworCisgICAgICAgIGlmIChhdXRvKiByZW5kZXJJbWFnZSA9IGR5bmFtaWNE
b3duY2FzdDxSZW5kZXJJbWFnZT4oZWxlbWVudCkpCisgICAgICAgICAgICB1cGRhdGVBbmltYXRp
b24ocmVuZGVySW1hZ2UtPmNhY2hlZEltYWdlKCkpOworCisgICAgICAgIGlmIChuZWVkc1JlcGFp
bnQpCiAgICAgICAgICAgICBlbGVtZW50LnJlcGFpbnQoKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9CisgICAgfQogCi0gICAgICAgIGlmIChhdXRvKiByZW5kZXJJbWFnZSA9IGR5
bmFtaWNEb3duY2FzdDxSZW5kZXJJbWFnZT4oZWxlbWVudCkpIHsKLSAgICAgICAgICAgIGlmIChy
ZW5kZXJJbWFnZS0+aGFzQW5pbWF0ZWRJbWFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgZWxlbWVu
dC5yZXBhaW50KCk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KKyAgICBpZiAoZG9jdW1lbnQoKS5zdmdFeHRlbnNpb25zKCkpIHsKKyAgICAgICAg
aWYgKGFuaW1hdGlvbkVuYWJsZWQpCisgICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4
dGVuc2lvbnMoKS51bnBhdXNlQW5pbWF0aW9ucygpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5wYXVzZUFuaW1hdGlvbnMoKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVu
dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAK
aW5kZXggZjZmZjk0YjNiZDhjLi43YTc5ZTc0NmZhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCkBAIC0yNCw2ICsyNCw4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgiCiAKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1l
LmgiCiAjaW5jbHVkZSAiU1ZHQXR0cmlidXRlQW5pbWF0b3IuaCIKICNpbmNsdWRlICJTVkdFbGVt
ZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNp
b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmlu
ZGV4IGI5Yjk0NTEyYTVlZS4uOGQ4Y2NmYzljNGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcApAQCAtNDIsMTAgKzQyLDE1IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorc3RhdGljIGJvb2wgYW5pbWF0aW9uc1BhdXNlZEZvckRvY3VtZW50KERv
Y3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gIWRvY3VtZW50LnBhZ2UoKSB8fCAhZG9j
dW1lbnQucGFnZSgpLT5pc1Zpc2libGUoKSB8fCAhZG9jdW1lbnQucGFnZSgpLT5pbWFnZUFuaW1h
dGlvbkVuYWJsZWQoKTsKK30KKwogU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpTVkdEb2N1bWVudEV4
dGVuc2lvbnMoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkK
ICAgICAsIG1fcmVzb3VyY2VzQ2FjaGUobWFrZVVuaXF1ZTxTVkdSZXNvdXJjZXNDYWNoZT4oKSkK
LSAgICAsIG1fYXJlQW5pbWF0aW9uc1BhdXNlZCghZG9jdW1lbnQucGFnZSgpIHx8ICFkb2N1bWVu
dC5wYWdlKCktPmlzVmlzaWJsZSgpKQorICAgICwgbV9hcmVBbmltYXRpb25zUGF1c2VkKGFuaW1h
dGlvbnNQYXVzZWRGb3JEb2N1bWVudChkb2N1bWVudCkpCiB7CiB9CiAKQEAgLTYzLDYgKzY4LDEy
IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVUaW1lQ29udGFpbmVyKFNWR1NW
R0VsZW1lbnQmIGVsZW1lbnQpCiAgICAgbV90aW1lQ29udGFpbmVycy5yZW1vdmUoZWxlbWVudCk7
CiB9CiAKKworVmVjdG9yPFJlZjxTVkdTVkdFbGVtZW50Pj4gU1ZHRG9jdW1lbnRFeHRlbnNpb25z
OjphbGxTVkdTVkdFbGVtZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvcHlUb1JlZlZlY3Rv
cihtX3RpbWVDb250YWluZXJzKTsKK30KKwogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFk
ZFJlc291cmNlKGNvbnN0IEF0b21TdHJpbmcmIGlkLCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5l
ciYgcmVzb3VyY2UpCiB7CiAgICAgaWYgKGlkLmlzRW1wdHkoKSkKQEAgLTEwOCw2ICsxMTksMTAg
QEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnBhdXNlQW5pbWF0aW9ucygpCiAKIHZvaWQg
U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjp1bnBhdXNlQW5pbWF0aW9ucygpCiB7CisgICAgLy8gSWYg
YW5pbWF0aW9ucyBhcmUgcGF1c2VkIGF0IHRoZSBkb2N1bWVudCBsZXZlbCwgZG9uJ3QgYWxsb3cg
YHRoaXNgIHRvIGJlIHVucGF1c2VkLgorICAgIGlmIChhbmltYXRpb25zUGF1c2VkRm9yRG9jdW1l
bnQobV9kb2N1bWVudCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGZvciAoYXV0byYgY29udGFp
bmVyIDogbV90aW1lQ29udGFpbmVycykKICAgICAgICAgY29udGFpbmVyLnVucGF1c2VBbmltYXRp
b25zKCk7CiAgICAgbV9hcmVBbmltYXRpb25zUGF1c2VkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKaW5kZXggZGY1YzAwODg0ZTZkLi45MWE2NmEz
OTUyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lv
bnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKQEAg
LTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRUaW1lQ29udGFpbmVyKFNWR1NW
R0VsZW1lbnQmKTsKICAgICB2b2lkIHJlbW92ZVRpbWVDb250YWluZXIoU1ZHU1ZHRWxlbWVudCYp
OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxSZWY8U1ZHU1ZHRWxlbWVudD4+IGFsbFNWR1NW
R0VsZW1lbnRzKCkgY29uc3Q7CiAKICAgICB2b2lkIGFkZFJlc291cmNlKGNvbnN0IEF0b21TdHJp
bmcmIGlkLCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciYpOwogICAgIHZvaWQgcmVtb3ZlUmVz
b3VyY2UoY29uc3QgQXRvbVN0cmluZyYgaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKaW5kZXggMWNmOGUxOWE1Njk1Li40NzlmOGE2ZDI2YjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMzg1LDYgKzM4NSwxNCBAQCB2b2lk
IFNWR0ltYWdlOjpzdGFydEFuaW1hdGlvbigpCiAgICAgcm9vdEVsZW1lbnQtPnNldEN1cnJlbnRU
aW1lKDApOwogfQogCit2b2lkIFNWR0ltYWdlOjpyZXN1bWVBbmltYXRpb24oKQoreworICAgIGF1
dG8gcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOworICAgIGlmICghcm9vdEVsZW1l
bnQgfHwgIXJvb3RFbGVtZW50LT5hbmltYXRpb25zUGF1c2VkKCkpCisgICAgICAgIHJldHVybjsK
KyAgICByb290RWxlbWVudC0+dW5wYXVzZUFuaW1hdGlvbnMoKTsKK30KKwogdm9pZCBTVkdJbWFn
ZTo6c3RvcEFuaW1hdGlvbigpCiB7CiAgICAgbV9zdGFydEFuaW1hdGlvblRpbWVyLnN0b3AoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggZjgwMzFlMGIwY2I4Li5m
MDYzNTNlOThlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC01
NSw3ICs1NSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBoYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IGZpbmFsOwogCisgICAg
Ly8gU3RhcnQgdGhlIGFuaW1hdGlvbiBmcm9tIHRoZSBiZWdpbm5pbmcuCiAgICAgdm9pZCBzdGFy
dEFuaW1hdGlvbigpIGZpbmFsOworICAgIC8vIFJlc3VtZSB0aGUgYW5pbWF0aW9uIGZyb20gd2hl
cmUgaXQgd2FzIGxhc3Qgc3RvcHBlZC4KKyAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbigpOwogICAg
IHZvaWQgc3RvcEFuaW1hdGlvbigpIGZpbmFsOwogICAgIHZvaWQgcmVzZXRBbmltYXRpb24oKSBm
aW5hbDsKICAgICBib29sIGlzQW5pbWF0aW5nKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggMmI5NWQxNWY5MDYyLi4wNDg5MmJlMGRjNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTc4Myw2ICs3ODMsMTcgQEAgRXhjZXB0
aW9uT3I8ZG91YmxlPiBJbnRlcm5hbHM6OnN2Z0FuaW1hdGlvbnNJbnRlcnZhbChTVkdTVkdFbGVt
ZW50JiBlbGVtZW50KSBjb24KICAgICByZXR1cm4gZWxlbWVudC50aW1lQ29udGFpbmVyKCkuYW5p
bWF0aW9uRnJhbWVEZWxheSgpLnZhbHVlKCk7CiB9CiAKK1ZlY3RvcjxSZWY8U1ZHU1ZHRWxlbWVu
dD4+IEludGVybmFsczo6YWxsU1ZHU1ZHRWxlbWVudHMoKSBjb25zdAoreworICAgIFZlY3RvcjxS
ZWY8U1ZHU1ZHRWxlbWVudD4+IGVsZW1lbnRzOworICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBE
b2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKKyAgICAgICAgaWYgKCFkb2N1bWVudC0+c3ZnRXh0
ZW5zaW9ucygpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGVsZW1lbnRzLmFwcGVu
ZFZlY3Rvcihkb2N1bWVudC0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFsbFNWR1NWR0VsZW1lbnRz
KCkpOworICAgIH0KKyAgICByZXR1cm4gZWxlbWVudHM7Cit9CisKIFN0cmluZyBJbnRlcm5hbHM6
OmFkZHJlc3MoTm9kZSYgbm9kZSkKIHsKICAgICByZXR1cm4gbWFrZVN0cmluZygiMHgiLCBoZXgo
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZub2RlKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKaW5kZXggNTUzMjA5MjgwYzBkLi41MzA3MzlhN2ZlYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaApAQCAtNDQzLDYgKzQ0Myw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25l
ZCB3b3JrZXJUaHJlYWRDb3VudCgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGFyZVNW
R0FuaW1hdGlvbnNQYXVzZWQoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjxkb3VibGU+IHN2Z0Fu
aW1hdGlvbnNJbnRlcnZhbChTVkdTVkdFbGVtZW50JikgY29uc3Q7CisgICAgLy8gU29tZSBTVkcg
ZWxlbWVudHMgYXJlIG5vdCBhY2Nlc3NpYmxlIHZpYSBub3JtYWwgQVBJcyAoZS5nLiB0aG9zZSBp
biBDU1MgYGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnPi4uLilg
LCBidXQgd2UgbmVlZCBhY2Nlc3MgdG8gdGhlbSBmb3IgdGVzdGluZy4KKyAgICBWZWN0b3I8UmVm
PFNWR1NWR0VsZW1lbnQ+PiBhbGxTVkdTVkdFbGVtZW50cygpIGNvbnN0OwogCiAgICAgZW51bSB7
CiAgICAgICAgIC8vIFZhbHVlcyBuZWVkIHRvIGJlIGtlcHQgaW4gc3luYyB3aXRoIEludGVybmFs
cy5pZGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggMmQwMzMzZDNhZjM3
Li43YTE4Y2NlZTA5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTU3
Miw2ICs1NzIsNyBAQCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0
Y2hPYmplY3Q7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBhcmVTVkdBbmltYXRp
b25zUGF1c2VkOwogICAgIGRvdWJsZSBzdmdBbmltYXRpb25zSW50ZXJ2YWwoU1ZHU1ZHRWxlbWVu
dCBlbGVtZW50KTsKKyAgICBzZXF1ZW5jZTxTVkdTVkdFbGVtZW50PiBhbGxTVkdTVkdFbGVtZW50
cygpOwogCiAgICAgYm9vbGVhbiB0ZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHkoKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1zdmctYW5pbWF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRpb25zLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQyYjE0
ZTk1NzVlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BhZ2V3
aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDQg
QEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgU1ZHIGFuaW1hdGlvbnMgcGF1c2VkIGFuZCByZXN1
bWVkIHdoZW4gdGhlIHBhZ2Utd2lkZSBpbWFnZSBhbmltYXRpb24gc2V0dGluZyBpcyB0b2dnbGVk
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworLS0tLS0gRGlzYWJsaW5nIGltYWdl
IGFuaW1hdGlvbnMuIC0tLS0tCisKK1Rlc3RpbmcgI2FuaW1hdGVUcmFuc2Zvcm0tc3ZnLgorUEFT
UyBzdmdNYXRyaWNlc0FyZUVxdWFsKGdldEFuaW1hdGVUcmFuc2Zvcm1NYXRyaXgoc3ZnU3ZnRWxl
bWVudCksIGluaXRpYWxBbmltYXRlVHJhbnNmb3JtTWF0cml4KSBpcyB0cnVlCisKK1Rlc3Rpbmcg
I2Nzcy1iYWNrZ3JvdW5kLXN2Zy4KK1BBU1Mgc3ZnU3ZnRWxlbWVudC5jaGlsZHJlblswXS54LmFu
aW1WYWwudmFsdWUgPT09IDAgaXMgdHJ1ZQorCitUZXN0aW5nICNpZnJhbWUtc3JjZG9jLXN2Zy4K
K1BBU1Mgc3ZnU3ZnRWxlbWVudC5jaGlsZHJlblswXS54LmFuaW1WYWwudmFsdWUgPT09IDAgaXMg
dHJ1ZQorCitUZXN0aW5nICNpbWctc3JjLXN2Zy4KK1BBU1Mgc3ZnU3ZnRWxlbWVudC5jaGlsZHJl
blswXS54LmFuaW1WYWwudmFsdWUgPT09IDAgaXMgdHJ1ZQorCitUZXN0aW5nICNpbmxpbmUtc3Zn
LgorUEFTUyBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSA9PT0gMCBp
cyB0cnVlCisKKy0tLS0tIEVuYWJsaW5nIGltYWdlIGFuaW1hdGlvbnMuIC0tLS0tCisKK1Rlc3Rp
bmcgI2FuaW1hdGVUcmFuc2Zvcm0tc3ZnLgorUEFTUyBzdmdNYXRyaWNlc0FyZUVxdWFsKGdldEFu
aW1hdGVUcmFuc2Zvcm1NYXRyaXgoc3ZnU3ZnRWxlbWVudCksIGluaXRpYWxBbmltYXRlVHJhbnNm
b3JtTWF0cml4KSBpcyBmYWxzZQorCitUZXN0aW5nICNjc3MtYmFja2dyb3VuZC1zdmcuCitQQVNT
IHN2Z1N2Z0VsZW1lbnQuY2hpbGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlICE9PSAwIGlzIHRydWUK
KworVGVzdGluZyAjaWZyYW1lLXNyY2RvYy1zdmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQuY2hpbGRy
ZW5bMF0ueC5hbmltVmFsLnZhbHVlICE9PSAwIGlzIHRydWUKKworVGVzdGluZyAjaW1nLXNyYy1z
dmcuCitQQVNTIHN2Z1N2Z0VsZW1lbnQuY2hpbGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlICE9PSAw
IGlzIHRydWUKKworVGVzdGluZyAjaW5saW5lLXN2Zy4KK1BBU1Mgc3ZnU3ZnRWxlbWVudC5jaGls
ZHJlblswXS54LmFuaW1WYWwudmFsdWUgIT09IDAgaXMgdHJ1ZQorCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRpb25zLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRp
b25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iODk1N2U0
OWZjMDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lk
ZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRpb25zLmh0bWwKQEAgLTAsMCArMSwxNDggQEAKKzwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgcnVuU2luZ2x5PXRydWUgXSAtLT4KKzwhLS0gQWx3YXlzIHJ1
biB0aGlzIHRlc3QgaW4gYSBjbGVhbiB0ZXN0aW5nIGVudmlyb25tZW50IHdpdGggcnVuU2luZ2x5
PXRydWUuIFdpdGhvdXQgZG9pbmcgdGhpcywgc3RhdGUgcHJlc2VydmVkIGJldHdlZW4KKyAgICAg
ZWFjaCBydW4gY2FuIGNhdXNlIHJlcGVhdGVkIGl0ZXJhdGlvbnMgb2YgdGhpcyB0ZXN0IHRvIGZh
aWwuIC0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKy5ib3ggeworICB3
aWR0aDogMzAwcHg7CisgIGhlaWdodDogMjAwcHg7CisgIGJhY2tncm91bmQ6IHVybCgnZGF0YTpp
bWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyBpZD0iY3NzLWJhY2tncm91bmQtc3ZnIiB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxyZWN0IGlkPSJiYWNrZ3JvdW5kLWltYWdlLXN2Zy1y
ZWN0IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iPjxhbmltYXRlIGF0dHJp
YnV0ZU5hbWU9IngiIGZyb209IjAiIHRvPSIyMDAiIGR1cj0iNXMiIHJlcGVhdENvdW50PSJpbmRl
ZmluaXRlIi8+PC9yZWN0Pjwvc3ZnPicpOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
Cis8IS0tIEJhc2ljIGlubGluZSBTVkcgYW5pbWF0aW9uIC0tPgorPHN2ZyBpZD0iaW5saW5lLXN2
ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgPHJlY3QgaWQ9InN2Zy1y
ZWN0IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iPgorICAgIDxhbmltYXRl
IGF0dHJpYnV0ZU5hbWU9IngiIGZyb209IjAiIHRvPSIyMDAiIGR1cj0iNXMiIHJlcGVhdENvdW50
PSJpbmRlZmluaXRlIi8+CisgIDwvcmVjdD4KKzwvc3ZnPgorCis8IS0tIGFuaW1hdGVUcmFuc2Zv
cm0gU1ZHIC0tPgorPHN2ZyBpZD0iYW5pbWF0ZVRyYW5zZm9ybS1zdmciIHZlcnNpb249IjEuMSIg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xv
cjogcmdiKDIzMiwgMjMyLCAyMzcpOyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiB2aWV3Qm94PSItNCAtNCA4IDgiPgor
ICA8Y2lyY2xlIGN4PSIwIiBjeT0iMSIgcj0iMiIgc3Ryb2tlPSJyZWQiIGZpbGw9Im5vbmUiPgor
ICAgIDxhbmltYXRlVHJhbnNmb3JtCisgICAgICBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iCisg
ICAgICBhdHRyaWJ1dGVUeXBlPSJYTUwiCisgICAgICB0eXBlPSJyb3RhdGUiCisgICAgICBmcm9t
PSIwIgorICAgICAgdG89IjM2MCIKKyAgICAgIGJlZ2luPSIwcyIKKyAgICAgIGR1cj0iMXMiCisg
ICAgICByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIvPgorICA8L2NpcmNsZT4KKzwvc3ZnPgorCis8
IS0tIENTUyBiYWNrZ3JvdW5kIFNWRyBhbmltYXRpb24gLS0+Cis8ZGl2IGNsYXNzPSJib3giPjwv
ZGl2PgorCis8IS0tIFNWRyBhbmltYXRpb24gZW1iZWRkZWQgaW4gPGltZz4gLS0+Cis8aW1nIHNy
Yz0KKydkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwKKyAgPHN2ZyBpZD0iaW1nLXNyYy1zdmciIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgPHJlY3Qgd2lkdGg9IjEwMCIg
aGVpZ2h0PSIxMDAiIGZpbGw9ImdyZWVuIj4KKyAgICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9
IngiIGZyb209IjAiIHRvPSIyMDAiIGR1cj0iNXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8+
CisgICAgPC9yZWN0PgorICA8L3N2Zz4KKyc+CisKKzwhLS0gU1ZHIGFuaW1hdGlvbiBlbWJlZGRl
ZCBpbiA8aWZyYW1lPiAtLT4KKzxpZnJhbWUgc3JjZG9jPScKKyAgPHN2ZyBpZD0iaWZyYW1lLXNy
Y2RvYy1zdmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgPHJlY3Qg
d2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImdyZWVuIj4KKyAgICAgIDxhbmltYXRlIGF0
dHJpYnV0ZU5hbWU9IngiIGZyb209IjAiIHRvPSIyMDAiIGR1cj0iNXMiIHJlcGVhdENvdW50PSJp
bmRlZmluaXRlIi8+CisgICAgPC9yZWN0PgorICA8L3N2Zz4KKyc+PC9pZnJhbWU+CisKKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBTVkcgYW5pbWF0aW9ucyBw
YXVzZWQgYW5kIHJlc3VtZWQgd2hlbiB0aGUgcGFnZS13aWRlIGltYWdlIGFuaW1hdGlvbiBzZXR0
aW5nIGlzIHRvZ2dsZWQuIik7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciBz
dmdTdmdFbGVtZW50LCBpbml0aWFsQW5pbWF0ZVRyYW5zZm9ybU1hdHJpeDsKKworLy8gSGFyZGNv
ZGVkIHRvIHRoZSBzdHJ1Y3R1cmUgb2YgI2FuaW1hdGVUcmFuc2Zvcm0tc3ZnLiBJZiB5b3UgY2hh
bmdlIHRoZSBtYXJrdXAsIHlvdSBtdXN0IGFsc28gY2hhbmdlIHRoaXMgZnVuY3Rpb24uCitmdW5j
dGlvbiBnZXRBbmltYXRlVHJhbnNmb3JtTWF0cml4KHN2Z1N2Z0VsZW1lbnQpIHsKKyAgICByZXR1
cm4gc3ZnU3ZnRWxlbWVudC5jaGlsZHJlblswXS50cmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDAp
Lm1hdHJpeDsKK30KKworZnVuY3Rpb24gc3ZnTWF0cmljZXNBcmVFcXVhbChtYXRyaXhBLCBtYXRy
aXhCKSB7CisgIHJldHVybiBtYXRyaXhBLmEgPT09IG1hdHJpeEIuYQorICAgICYmIG1hdHJpeEEu
YiA9PT0gbWF0cml4Qi5iCisgICAgJiYgbWF0cml4QS5jID09PSBtYXRyaXhCLmMKKyAgICAmJiBt
YXRyaXhBLmQgPT09IG1hdHJpeEIuZAorICAgICYmIG1hdHJpeEEuZSA9PT0gbWF0cml4Qi5lCisg
ICAgJiYgbWF0cml4QS5mID09PSBtYXRyaXhCLmY7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeVNWR3NB
cmVQYXVzZWQoZXhwZWN0UGF1c2VkKSB7CisgIC8vIFNvcnQgdGhlIFNWRyBlbGVtZW50cyBieSBJ
RCBzbyB0aGUgdGVzdCBvdXRwdXQgaXMgY29uc2lzdGVudCBmcm9tIHJ1biB0byBydW4uCisgIGNv
bnN0IHNvcnRlZFNWR1NWR0VsZW1lbnRzID0gaW50ZXJuYWxzLmFsbFNWR1NWR0VsZW1lbnRzKCku
c29ydCgoZWxlbWVudEEsIGVsZW1lbnRCKSA9PiB7CisgICAgaWYgKGVsZW1lbnRBLmlkID4gZWxl
bWVudEIuaWQpCisgICAgICByZXR1cm4gMTsKKworICAgIGlmIChlbGVtZW50QS5pZCA8IGVsZW1l
bnRCLmlkKQorICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIDA7CisgIH0pOworCisgIGZv
ciAoY29uc3QgZWxlbWVudCBvZiBzb3J0ZWRTVkdTVkdFbGVtZW50cykgeworICAgIHN2Z1N2Z0Vs
ZW1lbnQgPSBlbGVtZW50OworICAgIGRlYnVnKGBUZXN0aW5nICMke3N2Z1N2Z0VsZW1lbnQuaWR9
LmApOworICAgIHN3aXRjaCAoc3ZnU3ZnRWxlbWVudC5pZCkgeworICAgICAgY2FzZSAiY3NzLWJh
Y2tncm91bmQtc3ZnIjoKKyAgICAgIGNhc2UgImlubGluZS1zdmciOgorICAgICAgY2FzZSAiaW1n
LXNyYy1zdmciOgorICAgICAgY2FzZSAiaWZyYW1lLXNyY2RvYy1zdmciOgorICAgICAgICBpZiAo
IShzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdIGluc3RhbmNlb2YgU1ZHUmVjdEVsZW1lbnQpKQor
ICAgICAgICAgIGRlYnVnKGBGQUlMOiAnY2hpbGRyZW5bMF0nIG9mICR7c3ZnU3ZnRWxlbWVudC5p
ZH0gc2hvdWxkJ3ZlIGJlZW4gYW4gU1ZHUmVjdEVsZW1lbnQgYnV0IHdhc24ndCwgc28gdGhpcyB0
ZXN0IHdvbid0IGJlaGF2ZSBhcyBleHBlY3RlZC5gKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKGBz
dmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAke2V4cGVjdFBhdXNlZCA/
ICI9PT0iIDogIiE9PSJ9IDBgKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICJhbmltYXRl
VHJhbnNmb3JtLXN2ZyI6CisgICAgICAgIHNob3VsZEJlKCJzdmdNYXRyaWNlc0FyZUVxdWFsKGdl
dEFuaW1hdGVUcmFuc2Zvcm1NYXRyaXgoc3ZnU3ZnRWxlbWVudCksIGluaXRpYWxBbmltYXRlVHJh
bnNmb3JtTWF0cml4KSIsIGV4cGVjdFBhdXNlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgICAg
ICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGRlYnVnKGBGQUlMOiBTVkcgdGVzdGNh
c2Ugd2l0aCB1bmV4cGVjdGVkIElEOiAke3N2Z1N2Z0VsZW1lbnQuaWR9YCk7CisgICAgfQorICAg
IGRlYnVnKCIiKTsKKyAgfQorfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgIHNl
dFRpbWVvdXQoKCkgPT4geworICAgIGRlYnVnKCItLS0tLSBEaXNhYmxpbmcgaW1hZ2UgYW5pbWF0
aW9ucy4gLS0tLS1cbiIpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2VB
bmltYXRpb25Db250cm9sRW5hYmxlZCh0cnVlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldElt
YWdlQW5pbWF0aW9uRW5hYmxlZChmYWxzZSk7CisKKyAgICAvLyBSZXNldCBhbmltYXRpb25zIHRv
IHRoZSBiZWdpbm5pbmcuCisgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGludGVybmFscy5hbGxT
VkdTVkdFbGVtZW50cygpKSB7CisgICAgICBlbGVtZW50LnNldEN1cnJlbnRUaW1lKDApOworICAg
ICAgaWYgKGVsZW1lbnQuaWQgPT09ICJhbmltYXRlVHJhbnNmb3JtLXN2ZyIpCisgICAgICAgIGlu
aXRpYWxBbmltYXRlVHJhbnNmb3JtTWF0cml4ID0gZ2V0QW5pbWF0ZVRyYW5zZm9ybU1hdHJpeChl
bGVtZW50KTsKKyAgICB9CisKKyAgICAvLyBBbGxvdyBzb21lIHRpbWUgdG8gcGFzcy4KKyAgICBz
ZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgIC8vIEFmdGVyIDUwbXMsIHRoZSBhbmltYXRpb25zIHNo
b3VsZCBub3QgaGF2ZSBwcm9ncmVzc2VkIGJlY2F1c2UgdGhlIHBhZ2Utd2lkZSBpbWFnZSBhbmlt
YXRpb24gc2V0dGluZyBpcyBkaXNhYmxlZC4KKyAgICAgIHZlcmlmeVNWR3NBcmVQYXVzZWQodHJ1
ZSk7CisKKyAgICAgIGRlYnVnKCItLS0tLSBFbmFibGluZyBpbWFnZSBhbmltYXRpb25zLiAtLS0t
LVxuIik7CisgICAgICAvLyBSZS1lbmFibGUgYW5pbWF0aW9ucyBhbmQgYWxsb3cgdGltZSB0byBw
YXNzIHNvIHRoZXkgY2FuIHByb2dyZXNzLgorICAgICAgaW50ZXJuYWxzLnNldEltYWdlQW5pbWF0
aW9uRW5hYmxlZCh0cnVlKTsKKyAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICB2ZXJp
ZnlTVkdzQXJlUGF1c2VkKGZhbHNlKTsKKworICAgICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlD
YWNoZSgpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgIH0sIDUwKTsKKyAgICB9LCA1
MCk7CisgIH0sIDUwKQorfTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462858</attachid>
            <date>2022-10-06 20:31:12 -0700</date>
            <delta_ts>2022-10-13 23:01:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-245399-20221006203111.patch</filename>
            <type>text/plain</type>
            <size>17998</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSAxZTY5MmU5YTk3Yzc5OGFmNmZhNWMwNzU3M2UwZmFlZjUwNjkyMzJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogVHVlLCA0IE9jdCAyMDIyIDE3OjMzOjQwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gU1ZHIGFu
aW1hdGlvbnMgc2hvdWxkIHJlc3BlY3QgUGFnZTo6aW1hZ2VBbmltYXRpb25FbmFibGVkCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ1Mzk5IHJkYXI6Ly8xMDAxNDM3
MjMKClJldmlld2VkIGJ5IChOT0JPRFkpLgoKSW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI0NDEyOCAoQWRkIGV4cGVyaW1lbnRhbApmZWF0dXJlIHRvIGNvbnRyb2wg
aW1hZ2UgYW5pbWF0aW9uIHBsYXkvcGF1c2Ugc3RhdGUpLCB3ZSBhZGRlZCBhCnBhZ2Utd2lkZSBz
ZXR0aW5nIHRvIGNvbnRyb2wgYW5pbWF0aW9uIHBsYXkvcGF1c2Ugc3RhdGUuIFNWRwphbmltYXRp
b25zIHNob3VsZCByZXNwZWN0IHRoaXMgc2V0dGluZyB0b28uCgoqIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1h
bmltYXRpb25zLmh0bWw6IEFkZGVkLgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cDoKKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVwYWludFZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNs
dWRpbmdTdWJmcmFtZXMpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cDoKKFdlYkNvcmU6OlJlbmRlclZpZXc6OnJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZCk6
CiogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHA6CiogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHA6CihXZWJDb3JlOjphbmltYXRp
b25zUGF1c2VkRm9yRG9jdW1lbnQpOgooV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpT
VkdEb2N1bWVudEV4dGVuc2lvbnMpOgooV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjph
bGxTVkdTVkdFbGVtZW50cyBjb25zdCk6IEFkZGVkLgooV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRl
bnNpb25zOjp1bnBhdXNlQW5pbWF0aW9ucyk6CiogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5oOgoqIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHA6CihXZWJDb3JlOjpTVkdJbWFnZTo6cmVzdW1lQW5pbWF0aW9uKTogQWRkZWQuCiogU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CiogU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgooV2ViQ29yZTo6SW50ZXJuYWxzOjphbGxTVkdTVkdFbGVtZW50cyBj
b25zdCk6IEFkZGVkLgoqIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmg6CiogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsOgotLS0KIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcCAgICAgICB8ICA0MCArKystLQogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgIHwgICAyICsKIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwICB8ICAxNyArLQogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAgICAgICB8ICAgOCArCiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuaCAgICAgICAgfCAgIDMgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwICAgICAgICAgIHwgIDExICsrCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oICAgICAgICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsICAgICAgICAgIHwgICAxICsKIC4uLmlkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRp
b25zLWV4cGVjdGVkLnR4dCB8ICA0NCArKysrKysKIC4uLi9wYWdld2lkZS1wbGF5LXBhdXNlLXN2
Zy1hbmltYXRpb25zLmh0bWwgICB8IDE0OCArKysrKysrKysrKysrKysrKysKIDExIGZpbGVzIGNo
YW5nZWQsIDI2NiBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1hbmlt
YXRpb25zLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMuaHRtbAoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA5ZjU1ZTE0NGMxNzcuLjIxYzgyZDc0
OTAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtNTEsNiAr
NTEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclF1b3RlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUJ1
aWxkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKKyNpbmNsdWRlICJTVkdJbWFnZS5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0ZWREYXRhLmgi
CiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKQEAgLTg3OSwyMiArODgwLDQxIEBAIHZvaWQg
UmVuZGVyVmlldzo6cmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQoY29uc3QgSW50
UmVjdCYgdmlzaWJsZVJlY3QpCiAKIHZvaWQgUmVuZGVyVmlldzo6cmVwYWludEltYWdlQW5pbWF0
aW9uc0lmTmVlZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KQogeworICAgIGJvb2wgYW5p
bWF0aW9uRW5hYmxlZCA9IHBhZ2UoKS5pbWFnZUFuaW1hdGlvbkVuYWJsZWQoKTsKICAgICBmb3Ig
KGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxSZW5kZXJFbGVtZW50PigqdGhpcykp
IHsKICAgICAgICAgaWYgKCFlbGVtZW50LmlzVmlzaWJsZUluRG9jdW1lbnRSZWN0KHZpc2libGVS
ZWN0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIC8vIEZJWE1FOiBDaGVjayB3
aGV0aGVyIHRoZSBiYWNrZ3JvdW5kIGltYWdlKHMpIGNhbiBhbmltYXRlIGJlZm9yZSByZXBhaW50
aW5nLgotICAgICAgICBpZiAoZWxlbWVudC5zdHlsZSgpLmhhc0JhY2tncm91bmRJbWFnZSgpKSB7
CisgICAgICAgIGJvb2wgbmVlZHNSZXBhaW50ID0gZmFsc2U7CisgICAgICAgIGF1dG8gdXBkYXRl
QW5pbWF0aW9uID0gWyZdKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSkgeworICAgICAgICAgICAg
aWYgKCFjYWNoZWRJbWFnZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CisgICAgICAgICAgICBpZiAoYXV0
byogc3ZnSW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8U1ZHSW1hZ2U+KGltYWdlKSkgeworICAgICAg
ICAgICAgICAgIGlmIChhbmltYXRpb25FbmFibGVkKQorICAgICAgICAgICAgICAgICAgICBzdmdJ
bWFnZS0+cmVzdW1lQW5pbWF0aW9uKCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICBzdmdJbWFnZS0+c3RvcEFuaW1hdGlvbigpOworICAgICAgICAgICAgfSBlbHNl
IGlmIChpbWFnZSAmJiBpbWFnZS0+aXNBbmltYXRlZCgpKQorICAgICAgICAgICAgICAgIG5lZWRz
UmVwYWludCA9IHRydWU7CisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvKiBs
YXllciA9ICZlbGVtZW50LnN0eWxlKCkuYmFja2dyb3VuZExheWVycygpOyBsYXllcjsgbGF5ZXIg
PSBsYXllci0+bmV4dCgpKQorICAgICAgICAgICAgdXBkYXRlQW5pbWF0aW9uKGxheWVyLT5pbWFn
ZSgpID8gbGF5ZXItPmltYWdlKCktPmNhY2hlZEltYWdlKCkgOiBudWxscHRyKTsKKworICAgICAg
ICBpZiAoYXV0byogcmVuZGVySW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW1hZ2U+KGVs
ZW1lbnQpKQorICAgICAgICAgICAgdXBkYXRlQW5pbWF0aW9uKHJlbmRlckltYWdlLT5jYWNoZWRJ
bWFnZSgpKTsKKworICAgICAgICBpZiAobmVlZHNSZXBhaW50KQogICAgICAgICAgICAgZWxlbWVu
dC5yZXBhaW50KCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgIH0KIAot
ICAgICAgICBpZiAoYXV0byogcmVuZGVySW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW1h
Z2U+KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBpZiAocmVuZGVySW1hZ2UtPmhhc0FuaW1hdGVk
SW1hZ2UoKSkgewotICAgICAgICAgICAgICAgIGVsZW1lbnQucmVwYWludCgpOwotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgaWYgKGRvY3Vt
ZW50KCkuc3ZnRXh0ZW5zaW9ucygpKSB7CisgICAgICAgIGlmIChhbmltYXRpb25FbmFibGVkKQor
ICAgICAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkudW5wYXVzZUFuaW1h
dGlvbnMoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdF
eHRlbnNpb25zKCkucGF1c2VBbmltYXRpb25zKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCmluZGV4IGY2ZmY5NGIzYmQ4Yy4uN2E3
OWU3NDZmYTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1l
bnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNl
LmNwcApAQCAtMjQsNiArMjQsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNW
R0FuaW1hdGVFbGVtZW50QmFzZS5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNWR0F0dHJp
YnV0ZUFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAppbmRleCBiOWI5NDUxMmE1ZWUuLjAwNGQ1
MjAxMTk3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5j
cHAKQEAgLTQyLDEwICs0MiwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBi
b29sIGFuaW1hdGlvbnNQYXVzZWRGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCit7Cisg
ICAgcmV0dXJuICFkb2N1bWVudC5wYWdlKCkgfHwgIWRvY3VtZW50LnBhZ2UoKS0+aXNWaXNpYmxl
KCkgfHwgIWRvY3VtZW50LnBhZ2UoKS0+aW1hZ2VBbmltYXRpb25FbmFibGVkKCk7Cit9CisKIFNW
R0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zKERvY3VtZW50JiBkb2N1
bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX3Jlc291cmNlc0NhY2hl
KG1ha2VVbmlxdWU8U1ZHUmVzb3VyY2VzQ2FjaGU+KCkpCi0gICAgLCBtX2FyZUFuaW1hdGlvbnNQ
YXVzZWQoIWRvY3VtZW50LnBhZ2UoKSB8fCAhZG9jdW1lbnQucGFnZSgpLT5pc1Zpc2libGUoKSkK
KyAgICAsIG1fYXJlQW5pbWF0aW9uc1BhdXNlZChhbmltYXRpb25zUGF1c2VkRm9yRG9jdW1lbnQo
ZG9jdW1lbnQpKQogewogfQogCkBAIC02Myw2ICs2OCwxMiBAQCB2b2lkIFNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6cmVtb3ZlVGltZUNvbnRhaW5lcihTVkdTVkdFbGVtZW50JiBlbGVtZW50KQogICAg
IG1fdGltZUNvbnRhaW5lcnMucmVtb3ZlKGVsZW1lbnQpOwogfQogCisKK1ZlY3RvcjxSZWY8U1ZH
U1ZHRWxlbWVudD4+IFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWxsU1ZHU1ZHRWxlbWVudHMoKSBj
b25zdAoreworICAgIHJldHVybiBjb3B5VG9WZWN0b3JPZjxSZWY8U1ZHU1ZHRWxlbWVudD4+KG1f
dGltZUNvbnRhaW5lcnMpOworfQorCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkUmVz
b3VyY2UoY29uc3QgQXRvbVN0cmluZyYgaWQsIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyJiBy
ZXNvdXJjZSkKIHsKICAgICBpZiAoaWQuaXNFbXB0eSgpKQpAQCAtMTA4LDYgKzExOSwxMCBAQCB2
b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cGF1c2VBbmltYXRpb25zKCkKIAogdm9pZCBTVkdE
b2N1bWVudEV4dGVuc2lvbnM6OnVucGF1c2VBbmltYXRpb25zKCkKIHsKKyAgICAvLyBJZiBhbmlt
YXRpb25zIGFyZSBwYXVzZWQgYXQgdGhlIGRvY3VtZW50IGxldmVsLCBkb24ndCBhbGxvdyBgdGhp
c2AgdG8gYmUgdW5wYXVzZWQuCisgICAgaWYgKGFuaW1hdGlvbnNQYXVzZWRGb3JEb2N1bWVudCht
X2RvY3VtZW50KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZm9yIChhdXRvJiBjb250YWluZXIg
OiBtX3RpbWVDb250YWluZXJzKQogICAgICAgICBjb250YWluZXIudW5wYXVzZUFuaW1hdGlvbnMo
KTsKICAgICBtX2FyZUFuaW1hdGlvbnNQYXVzZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaAppbmRleCBkZjVjMDA4ODRlNmQuLjkxYTY2YTM5NTJm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaApAQCAtNDgs
NiArNDgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFRpbWVDb250YWluZXIoU1ZHU1ZHRWxl
bWVudCYpOwogICAgIHZvaWQgcmVtb3ZlVGltZUNvbnRhaW5lcihTVkdTVkdFbGVtZW50Jik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFJlZjxTVkdTVkdFbGVtZW50Pj4gYWxsU1ZHU1ZHRWxl
bWVudHMoKSBjb25zdDsKIAogICAgIHZvaWQgYWRkUmVzb3VyY2UoY29uc3QgQXRvbVN0cmluZyYg
aWQsIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyJik7CiAgICAgdm9pZCByZW1vdmVSZXNvdXJj
ZShjb25zdCBBdG9tU3RyaW5nJiBpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcAppbmRleCAxY2Y4ZTE5YTU2OTUuLjQ3OWY4YTZkMjZiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0zODUsNiArMzg1LDE0IEBAIHZvaWQgU1ZH
SW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKCkKICAgICByb290RWxlbWVudC0+c2V0Q3VycmVudFRpbWUo
MCk7CiB9CiAKK3ZvaWQgU1ZHSW1hZ2U6OnJlc3VtZUFuaW1hdGlvbigpCit7CisgICAgYXV0byBy
b290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7CisgICAgaWYgKCFyb290RWxlbWVudCB8
fCAhcm9vdEVsZW1lbnQtPmFuaW1hdGlvbnNQYXVzZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IHJvb3RFbGVtZW50LT51bnBhdXNlQW5pbWF0aW9ucygpOworfQorCiB2b2lkIFNWR0ltYWdlOjpz
dG9wQW5pbWF0aW9uKCkKIHsKICAgICBtX3N0YXJ0QW5pbWF0aW9uVGltZXIuc3RvcCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCBmODAzMWUwYjBjYjguLmYwNjM1
M2U5OGU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTU1LDcg
KzU1LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCBmaW5h
bDsKICAgICBib29sIGhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgZmluYWw7CiAKKyAgICAvLyBT
dGFydCB0aGUgYW5pbWF0aW9uIGZyb20gdGhlIGJlZ2lubmluZy4KICAgICB2b2lkIHN0YXJ0QW5p
bWF0aW9uKCkgZmluYWw7CisgICAgLy8gUmVzdW1lIHRoZSBhbmltYXRpb24gZnJvbSB3aGVyZSBp
dCB3YXMgbGFzdCBzdG9wcGVkLgorICAgIHZvaWQgcmVzdW1lQW5pbWF0aW9uKCk7CiAgICAgdm9p
ZCBzdG9wQW5pbWF0aW9uKCkgZmluYWw7CiAgICAgdm9pZCByZXNldEFuaW1hdGlvbigpIGZpbmFs
OwogICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCAyYjk1ZDE1ZjkwNjIuLjA0ODkyYmUwZGM3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNzgzLDYgKzc4MywxNyBAQCBFeGNlcHRpb25P
cjxkb3VibGU+IEludGVybmFsczo6c3ZnQW5pbWF0aW9uc0ludGVydmFsKFNWR1NWR0VsZW1lbnQm
IGVsZW1lbnQpIGNvbgogICAgIHJldHVybiBlbGVtZW50LnRpbWVDb250YWluZXIoKS5hbmltYXRp
b25GcmFtZURlbGF5KCkudmFsdWUoKTsKIH0KIAorVmVjdG9yPFJlZjxTVkdTVkdFbGVtZW50Pj4g
SW50ZXJuYWxzOjphbGxTVkdTVkdFbGVtZW50cygpIGNvbnN0Cit7CisgICAgVmVjdG9yPFJlZjxT
VkdTVkdFbGVtZW50Pj4gZWxlbWVudHM7CisgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3Vt
ZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgICAgICBpZiAoIWRvY3VtZW50LT5zdmdFeHRlbnNp
b25zKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZWxlbWVudHMuYXBwZW5kVmVj
dG9yKGRvY3VtZW50LT5hY2Nlc3NTVkdFeHRlbnNpb25zKCkuYWxsU1ZHU1ZHRWxlbWVudHMoKSk7
CisgICAgfQorICAgIHJldHVybiBlbGVtZW50czsKK30KKwogU3RyaW5nIEludGVybmFsczo6YWRk
cmVzcyhOb2RlJiBub2RlKQogewogICAgIHJldHVybiBtYWtlU3RyaW5nKCIweCIsIGhleChyZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJm5vZGUpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAppbmRleCA3ZDkyNzRlNWI5MTkuLjYzYzBkMDEyNGEyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCkBAIC00NDcsNiArNDQ3LDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHdv
cmtlclRocmVhZENvdW50KCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8Ym9vbD4gYXJlU1ZHQW5p
bWF0aW9uc1BhdXNlZCgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPGRvdWJsZT4gc3ZnQW5pbWF0
aW9uc0ludGVydmFsKFNWR1NWR0VsZW1lbnQmKSBjb25zdDsKKyAgICAvLyBTb21lIFNWRyBlbGVt
ZW50cyBhcmUgbm90IGFjY2Vzc2libGUgdmlhIG5vcm1hbCBBUElzIChlLmcuIHRob3NlIGluIENT
UyBgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmc+Li4uKWAsIGJ1
dCB3ZSBuZWVkIGFjY2VzcyB0byB0aGVtIGZvciB0ZXN0aW5nLgorICAgIFZlY3RvcjxSZWY8U1ZH
U1ZHRWxlbWVudD4+IGFsbFNWR1NWR0VsZW1lbnRzKCkgY29uc3Q7CiAKICAgICBlbnVtIHsKICAg
ICAgICAgLy8gVmFsdWVzIG5lZWQgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggSW50ZXJuYWxzLmlk
bC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAyZDAzMzNkM2FmMzcuLjdh
MThjY2VlMDkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNTcyLDYg
KzU3Miw3IEBAIHR5cGVkZWYgKEZldGNoUmVxdWVzdCBvciBGZXRjaFJlc3BvbnNlKSBGZXRjaE9i
amVjdDsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGFyZVNWR0FuaW1hdGlvbnNQ
YXVzZWQ7CiAgICAgZG91YmxlIHN2Z0FuaW1hdGlvbnNJbnRlcnZhbChTVkdTVkdFbGVtZW50IGVs
ZW1lbnQpOworICAgIHNlcXVlbmNlPFNWR1NWR0VsZW1lbnQ+IGFsbFNWR1NWR0VsZW1lbnRzKCk7
CiAKICAgICBib29sZWFuIHRlc3RQcm9jZXNzSW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGlu
Z0ZvclN5bmNSZXBseSgpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9w
YWdld2lkZS1wbGF5LXBhdXNlLXN2Zy1hbmltYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDJiMTRlOTU3
NWU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZXdpZGUt
cGxheS1wYXVzZS1zdmctYW5pbWF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0NCBAQAor
VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBTVkcgYW5pbWF0aW9ucyBwYXVzZWQgYW5kIHJlc3VtZWQg
d2hlbiB0aGUgcGFnZS13aWRlIGltYWdlIGFuaW1hdGlvbiBzZXR0aW5nIGlzIHRvZ2dsZWQuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCistLS0tLSBEaXNhYmxpbmcgaW1hZ2UgYW5p
bWF0aW9ucy4gLS0tLS0KKworVGVzdGluZyAjYW5pbWF0ZVRyYW5zZm9ybS1zdmcuCitQQVNTIHN2
Z01hdHJpY2VzQXJlRXF1YWwoZ2V0QW5pbWF0ZVRyYW5zZm9ybU1hdHJpeChzdmdTdmdFbGVtZW50
KSwgaW5pdGlhbEFuaW1hdGVUcmFuc2Zvcm1NYXRyaXgpIGlzIHRydWUKKworVGVzdGluZyAjY3Nz
LWJhY2tncm91bmQtc3ZnLgorUEFTUyBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZh
bC52YWx1ZSA9PT0gMCBpcyB0cnVlCisKK1Rlc3RpbmcgI2lmcmFtZS1zcmNkb2Mtc3ZnLgorUEFT
UyBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSA9PT0gMCBpcyB0cnVl
CisKK1Rlc3RpbmcgI2ltZy1zcmMtc3ZnLgorUEFTUyBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBd
LnguYW5pbVZhbC52YWx1ZSA9PT0gMCBpcyB0cnVlCisKK1Rlc3RpbmcgI2lubGluZS1zdmcuCitQ
QVNTIHN2Z1N2Z0VsZW1lbnQuY2hpbGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlID09PSAwIGlzIHRy
dWUKKworLS0tLS0gRW5hYmxpbmcgaW1hZ2UgYW5pbWF0aW9ucy4gLS0tLS0KKworVGVzdGluZyAj
YW5pbWF0ZVRyYW5zZm9ybS1zdmcuCitQQVNTIHN2Z01hdHJpY2VzQXJlRXF1YWwoZ2V0QW5pbWF0
ZVRyYW5zZm9ybU1hdHJpeChzdmdTdmdFbGVtZW50KSwgaW5pdGlhbEFuaW1hdGVUcmFuc2Zvcm1N
YXRyaXgpIGlzIGZhbHNlCisKK1Rlc3RpbmcgI2Nzcy1iYWNrZ3JvdW5kLXN2Zy4KK1BBU1Mgc3Zn
U3ZnRWxlbWVudC5jaGlsZHJlblswXS54LmFuaW1WYWwudmFsdWUgIT09IDAgaXMgdHJ1ZQorCitU
ZXN0aW5nICNpZnJhbWUtc3JjZG9jLXN2Zy4KK1BBU1Mgc3ZnU3ZnRWxlbWVudC5jaGlsZHJlblsw
XS54LmFuaW1WYWwudmFsdWUgIT09IDAgaXMgdHJ1ZQorCitUZXN0aW5nICNpbWctc3JjLXN2Zy4K
K1BBU1Mgc3ZnU3ZnRWxlbWVudC5jaGlsZHJlblswXS54LmFuaW1WYWwudmFsdWUgIT09IDAgaXMg
dHJ1ZQorCitUZXN0aW5nICNpbmxpbmUtc3ZnLgorUEFTUyBzdmdTdmdFbGVtZW50LmNoaWxkcmVu
WzBdLnguYW5pbVZhbC52YWx1ZSAhPT0gMCBpcyB0cnVlCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI4OTU3ZTQ5ZmMw
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BhZ2V3aWRlLXBs
YXktcGF1c2Utc3ZnLWFuaW1hdGlvbnMuaHRtbApAQCAtMCwwICsxLDE0OCBAQAorPCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyBydW5TaW5nbHk9dHJ1ZSBdIC0tPgorPCEtLSBBbHdheXMgcnVuIHRo
aXMgdGVzdCBpbiBhIGNsZWFuIHRlc3RpbmcgZW52aXJvbm1lbnQgd2l0aCBydW5TaW5nbHk9dHJ1
ZS4gV2l0aG91dCBkb2luZyB0aGlzLCBzdGF0ZSBwcmVzZXJ2ZWQgYmV0d2VlbgorICAgICBlYWNo
IHJ1biBjYW4gY2F1c2UgcmVwZWF0ZWQgaXRlcmF0aW9ucyBvZiB0aGlzIHRlc3QgdG8gZmFpbC4g
LS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorLmJveCB7CisgIHdpZHRo
OiAzMDBweDsKKyAgaGVpZ2h0OiAyMDBweDsKKyAgYmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdl
L3N2Zyt4bWw7dXRmOCw8c3ZnIGlkPSJjc3MtYmFja2dyb3VuZC1zdmciIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3QgaWQ9ImJhY2tncm91bmQtaW1hZ2Utc3ZnLXJlY3Qi
IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiI+PGFuaW1hdGUgYXR0cmlidXRl
TmFtZT0ieCIgZnJvbT0iMCIgdG89IjIwMCIgZHVyPSI1cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5p
dGUiLz48L3JlY3Q+PC9zdmc+Jyk7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzwh
LS0gQmFzaWMgaW5saW5lIFNWRyBhbmltYXRpb24gLS0+Cis8c3ZnIGlkPSJpbmxpbmUtc3ZnIiB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICA8cmVjdCBpZD0ic3ZnLXJlY3Qi
IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiI+CisgICAgPGFuaW1hdGUgYXR0
cmlidXRlTmFtZT0ieCIgZnJvbT0iMCIgdG89IjIwMCIgZHVyPSI1cyIgcmVwZWF0Q291bnQ9Imlu
ZGVmaW5pdGUiLz4KKyAgPC9yZWN0PgorPC9zdmc+CisKKzwhLS0gYW5pbWF0ZVRyYW5zZm9ybSBT
VkcgLS0+Cis8c3ZnIGlkPSJhbmltYXRlVHJhbnNmb3JtLXN2ZyIgdmVyc2lvbj0iMS4xIiB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2IoMjMyLCAyMzIsIDIzNyk7IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHZpZXdCb3g9Ii00IC00IDggOCI+CisgIDxj
aXJjbGUgY3g9IjAiIGN5PSIxIiByPSIyIiBzdHJva2U9InJlZCIgZmlsbD0ibm9uZSI+CisgICAg
PGFuaW1hdGVUcmFuc2Zvcm0KKyAgICAgIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIKKyAgICAg
IGF0dHJpYnV0ZVR5cGU9IlhNTCIKKyAgICAgIHR5cGU9InJvdGF0ZSIKKyAgICAgIGZyb209IjAi
CisgICAgICB0bz0iMzYwIgorICAgICAgYmVnaW49IjBzIgorICAgICAgZHVyPSIxcyIKKyAgICAg
IHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8+CisgIDwvY2lyY2xlPgorPC9zdmc+CisKKzwhLS0g
Q1NTIGJhY2tncm91bmQgU1ZHIGFuaW1hdGlvbiAtLT4KKzxkaXYgY2xhc3M9ImJveCI+PC9kaXY+
CisKKzwhLS0gU1ZHIGFuaW1hdGlvbiBlbWJlZGRlZCBpbiA8aW1nPiAtLT4KKzxpbWcgc3JjPQor
J2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LAorICA8c3ZnIGlkPSJpbWctc3JjLXN2ZyIgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICA8cmVjdCB3aWR0aD0iMTAwIiBoZWln
aHQ9IjEwMCIgZmlsbD0iZ3JlZW4iPgorICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ieCIg
ZnJvbT0iMCIgdG89IjIwMCIgZHVyPSI1cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz4KKyAg
ICA8L3JlY3Q+CisgIDwvc3ZnPgorJz4KKworPCEtLSBTVkcgYW5pbWF0aW9uIGVtYmVkZGVkIGlu
IDxpZnJhbWU+IC0tPgorPGlmcmFtZSBzcmNkb2M9JworICA8c3ZnIGlkPSJpZnJhbWUtc3JjZG9j
LXN2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICA8cmVjdCB3aWR0
aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iPgorICAgICAgPGFuaW1hdGUgYXR0cmli
dXRlTmFtZT0ieCIgZnJvbT0iMCIgdG89IjIwMCIgZHVyPSI1cyIgcmVwZWF0Q291bnQ9ImluZGVm
aW5pdGUiLz4KKyAgICA8L3JlY3Q+CisgIDwvc3ZnPgorJz48L2lmcmFtZT4KKworPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IFNWRyBhbmltYXRpb25zIHBhdXNl
ZCBhbmQgcmVzdW1lZCB3aGVuIHRoZSBwYWdlLXdpZGUgaW1hZ2UgYW5pbWF0aW9uIHNldHRpbmcg
aXMgdG9nZ2xlZC4iKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHN2Z1N2
Z0VsZW1lbnQsIGluaXRpYWxBbmltYXRlVHJhbnNmb3JtTWF0cml4OworCisvLyBIYXJkY29kZWQg
dG8gdGhlIHN0cnVjdHVyZSBvZiAjYW5pbWF0ZVRyYW5zZm9ybS1zdmcuIElmIHlvdSBjaGFuZ2Ug
dGhlIG1hcmt1cCwgeW91IG11c3QgYWxzbyBjaGFuZ2UgdGhpcyBmdW5jdGlvbi4KK2Z1bmN0aW9u
IGdldEFuaW1hdGVUcmFuc2Zvcm1NYXRyaXgoc3ZnU3ZnRWxlbWVudCkgeworICAgIHJldHVybiBz
dmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnRyYW5zZm9ybS5hbmltVmFsLmdldEl0ZW0oMCkubWF0
cml4OworfQorCitmdW5jdGlvbiBzdmdNYXRyaWNlc0FyZUVxdWFsKG1hdHJpeEEsIG1hdHJpeEIp
IHsKKyAgcmV0dXJuIG1hdHJpeEEuYSA9PT0gbWF0cml4Qi5hCisgICAgJiYgbWF0cml4QS5iID09
PSBtYXRyaXhCLmIKKyAgICAmJiBtYXRyaXhBLmMgPT09IG1hdHJpeEIuYworICAgICYmIG1hdHJp
eEEuZCA9PT0gbWF0cml4Qi5kCisgICAgJiYgbWF0cml4QS5lID09PSBtYXRyaXhCLmUKKyAgICAm
JiBtYXRyaXhBLmYgPT09IG1hdHJpeEIuZjsKK30KKworZnVuY3Rpb24gdmVyaWZ5U1ZHc0FyZVBh
dXNlZChleHBlY3RQYXVzZWQpIHsKKyAgLy8gU29ydCB0aGUgU1ZHIGVsZW1lbnRzIGJ5IElEIHNv
IHRoZSB0ZXN0IG91dHB1dCBpcyBjb25zaXN0ZW50IGZyb20gcnVuIHRvIHJ1bi4KKyAgY29uc3Qg
c29ydGVkU1ZHU1ZHRWxlbWVudHMgPSBpbnRlcm5hbHMuYWxsU1ZHU1ZHRWxlbWVudHMoKS5zb3J0
KChlbGVtZW50QSwgZWxlbWVudEIpID0+IHsKKyAgICBpZiAoZWxlbWVudEEuaWQgPiBlbGVtZW50
Qi5pZCkKKyAgICAgIHJldHVybiAxOworCisgICAgaWYgKGVsZW1lbnRBLmlkIDwgZWxlbWVudEIu
aWQpCisgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gMDsKKyAgfSk7CisKKyAgZm9yIChj
b25zdCBlbGVtZW50IG9mIHNvcnRlZFNWR1NWR0VsZW1lbnRzKSB7CisgICAgc3ZnU3ZnRWxlbWVu
dCA9IGVsZW1lbnQ7CisgICAgZGVidWcoYFRlc3RpbmcgIyR7c3ZnU3ZnRWxlbWVudC5pZH0uYCk7
CisgICAgc3dpdGNoIChzdmdTdmdFbGVtZW50LmlkKSB7CisgICAgICBjYXNlICJjc3MtYmFja2dy
b3VuZC1zdmciOgorICAgICAgY2FzZSAiaW5saW5lLXN2ZyI6CisgICAgICBjYXNlICJpbWctc3Jj
LXN2ZyI6CisgICAgICBjYXNlICJpZnJhbWUtc3JjZG9jLXN2ZyI6CisgICAgICAgIGlmICghKHN2
Z1N2Z0VsZW1lbnQuY2hpbGRyZW5bMF0gaW5zdGFuY2VvZiBTVkdSZWN0RWxlbWVudCkpCisgICAg
ICAgICAgZGVidWcoYEZBSUw6ICdjaGlsZHJlblswXScgb2YgJHtzdmdTdmdFbGVtZW50LmlkfSBz
aG91bGQndmUgYmVlbiBhbiBTVkdSZWN0RWxlbWVudCBidXQgd2Fzbid0LCBzbyB0aGlzIHRlc3Qg
d29uJ3QgYmVoYXZlIGFzIGV4cGVjdGVkLmApOworICAgICAgICBzaG91bGRCZVRydWUoYHN2Z1N2
Z0VsZW1lbnQuY2hpbGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlICR7ZXhwZWN0UGF1c2VkID8gIj09
PSIgOiAiIT09In0gMGApOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgImFuaW1hdGVUcmFu
c2Zvcm0tc3ZnIjoKKyAgICAgICAgc2hvdWxkQmUoInN2Z01hdHJpY2VzQXJlRXF1YWwoZ2V0QW5p
bWF0ZVRyYW5zZm9ybU1hdHJpeChzdmdTdmdFbGVtZW50KSwgaW5pdGlhbEFuaW1hdGVUcmFuc2Zv
cm1NYXRyaXgpIiwgZXhwZWN0UGF1c2VkID8gInRydWUiIDogImZhbHNlIik7CisgICAgICAgIGJy
ZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgZGVidWcoYEZBSUw6IFNWRyB0ZXN0Y2FzZSB3
aXRoIHVuZXhwZWN0ZWQgSUQ6ICR7c3ZnU3ZnRWxlbWVudC5pZH1gKTsKKyAgICB9CisgICAgZGVi
dWcoIiIpOworICB9Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgc2V0VGlt
ZW91dCgoKSA9PiB7CisgICAgZGVidWcoIi0tLS0tIERpc2FibGluZyBpbWFnZSBhbmltYXRpb25z
LiAtLS0tLVxuIik7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZUFuaW1h
dGlvbkNvbnRyb2xFbmFibGVkKHRydWUpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0SW1hZ2VB
bmltYXRpb25FbmFibGVkKGZhbHNlKTsKKworICAgIC8vIFJlc2V0IGFuaW1hdGlvbnMgdG8gdGhl
IGJlZ2lubmluZy4KKyAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgaW50ZXJuYWxzLmFsbFNWR1NW
R0VsZW1lbnRzKCkpIHsKKyAgICAgIGVsZW1lbnQuc2V0Q3VycmVudFRpbWUoMCk7CisgICAgICBp
ZiAoZWxlbWVudC5pZCA9PT0gImFuaW1hdGVUcmFuc2Zvcm0tc3ZnIikKKyAgICAgICAgaW5pdGlh
bEFuaW1hdGVUcmFuc2Zvcm1NYXRyaXggPSBnZXRBbmltYXRlVHJhbnNmb3JtTWF0cml4KGVsZW1l
bnQpOworICAgIH0KKworICAgIC8vIEFsbG93IHNvbWUgdGltZSB0byBwYXNzLgorICAgIHNldFRp
bWVvdXQoKCkgPT4geworICAgICAgLy8gQWZ0ZXIgNTBtcywgdGhlIGFuaW1hdGlvbnMgc2hvdWxk
IG5vdCBoYXZlIHByb2dyZXNzZWQgYmVjYXVzZSB0aGUgcGFnZS13aWRlIGltYWdlIGFuaW1hdGlv
biBzZXR0aW5nIGlzIGRpc2FibGVkLgorICAgICAgdmVyaWZ5U1ZHc0FyZVBhdXNlZCh0cnVlKTsK
KworICAgICAgZGVidWcoIi0tLS0tIEVuYWJsaW5nIGltYWdlIGFuaW1hdGlvbnMuIC0tLS0tXG4i
KTsKKyAgICAgIC8vIFJlLWVuYWJsZSBhbmltYXRpb25zIGFuZCBhbGxvdyB0aW1lIHRvIHBhc3Mg
c28gdGhleSBjYW4gcHJvZ3Jlc3MuCisgICAgICBpbnRlcm5hbHMuc2V0SW1hZ2VBbmltYXRpb25F
bmFibGVkKHRydWUpOworICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgIHZlcmlmeVNW
R3NBcmVQYXVzZWQoZmFsc2UpOworCisgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hl
KCk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgfSwgNTApOworICAgIH0sIDUwKTsK
KyAgfSwgNTApCit9OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462977</attachid>
            <date>2022-10-13 23:01:45 -0700</date>
            <delta_ts>2022-10-28 17:18:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-245399-20221013230144.patch</filename>
            <type>text/plain</type>
            <size>36503</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBhNWFkMTA5ZmVmZjVjODdmZjAwMTkzZmFlY2FhMmNjNGE4YmUwYjc5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogVGh1LCAxMyBPY3QgMjAyMiAyMjo0ODo0NiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFNWRyBh
bmltYXRpb25zIHNob3VsZCByZXNwZWN0IFBhZ2U6OmltYWdlQW5pbWF0aW9uRW5hYmxlZAogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NTM5OSByZGFyOi8vMTAwMTQz
NzIzCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkluIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNDQxMjggKEFkZCBleHBlcmltZW50YWwKZmVhdHVyZSB0byBj
b250cm9sIGltYWdlIGFuaW1hdGlvbiBwbGF5L3BhdXNlIHN0YXRlKSwgd2UgYWRkZWQgYQpwYWdl
LXdpZGUgc2V0dGluZyB0byBjb250cm9sIGFuaW1hdGlvbiBwbGF5L3BhdXNlIHN0YXRlLiBTVkcK
YW5pbWF0aW9ucyBzaG91bGQgcmVzcGVjdCB0aGlzIHNldHRpbmcgdG9vLgoKVGhpcyBwYXRjaCBh
bHNvIGZpeGVzIGEgYnVnIHdoZXJlIHJlLWVuYWJsaW5nIHBhZ2Utd2lkZSBhbmltYXRpb24gZGlk
Cm5vdCBjYXVzZSBhbmltYXRpb25zIG9mZnNjcmVlbiBkdXJpbmcgdGhlIHNldHRpbmcgY2hhbmdl
IHRvIGJlCnJlc3VtZWQgd2hlbiB0aGV5IGxhdGVyIGJlY2FtZSB2aXNpYmxlIGluIHRoZSB2aWV3
cG9ydCAoaW5zdGVhZCwgdGhleQpyZW1haW5lZCBwZXJtYW5lbnRseSBwYXVzZWQpLgoKKiBMYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLWFuaW1hdGVUcmFuc2Zvcm0t
c3ZnLWFuaW1hdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL3BhZ2V3aWRlLXBsYXktcGF1c2UtYW5pbWF0ZVRyYW5zZm9ybS1zdmctYW5pbWF0aW9uLmh0
bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Ut
b2Zmc2NyZWVuLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9m
YXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLW9mZnNjcmVlbi1hbmltYXRpb25zLmh0bWw6
IEFkZGVkLgoqIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczoK
U2tpcCBuZXcgcGFnZXdpZGUtcGxheS1wYXVzZS1vZmZzY3JlZW4tYW5pbWF0aW9ucy5odG1sIHRl
c3QgZHVlIHRvIGRpZmZlcmVuY2VzIGluIGFuaW1hdGlvbiBhbmQKdmlld3BvcnQgYmVoYXZpb3Ig
aW4gV0sxIC8gRHVtcFJlbmRlclRyZWUuCgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcDoKKFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlUGxheVN0YXRlRm9yQWxsQW5pbWF0aW9u
cyk6CihXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVBsYXlTdGF0ZUZvckFsbEFuaW1hdGlvbnNJ
bmNsdWRpbmdTdWJmcmFtZXMpOgooV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXBhaW50VmlzaWJsZUlt
YWdlQW5pbWF0aW9ucyk6IERlbGV0ZWQuCihXZWJDb3JlOjpGcmFtZVZpZXc6OnJlcGFpbnRWaXNp
YmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKTogRGVsZXRlZC4KKiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHA6
CihXZWJDb3JlOjpQYWdlOjpzZXRJbWFnZUFuaW1hdGlvbkVuYWJsZWQpOgooV2ViQ29yZTo6UGFn
ZTo6dXBkYXRlUGxheVN0YXRlRm9yQWxsQW5pbWF0aW9ucyk6CihXZWJDb3JlOjpQYWdlOjpyZXBh
aW50QW5pbWF0ZWRJbWFnZXMpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
OgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OnJlcGFpbnRGb3JQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZCk6
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgooV2ViQ29yZTo6UmVu
ZGVyVmlldzo6cmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQpOgpDaGVjayBuZXcg
bV9TVkdTVkdFbGVtZW50c1dpdGhQYXVzZWRJbWFnZUFuaW1hdGlvbiBtZW1iZXIgZm9yIHBhdXNl
ZCBTVkcKYW5pbWF0aW9ucyBhbmQgcmVzdW1lIHRoZW0gaWYgbmVlZGVkLgooV2ViQ29yZTo6c3Zn
U3ZnRWxlbWVudEZyb20pOiBBZGRlZC4KKFdlYkNvcmU6OlJlbmRlclZpZXc6OnVwZGF0ZVBsYXlT
dGF0ZUZvckFsbEFuaW1hdGlvbnMpOgooV2ViQ29yZTo6UmVuZGVyVmlldzo6cmVwYWludEltYWdl
QW5pbWF0aW9uc0lmTmVlZGVkKTogRGVsZXRlZC4KQWxsIG1ldGhvZHMgYWRkZWQgaW4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEyOCBhbmQKbmFtZWQgbGlrZSAi
cmVwYWludEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkIiBhcmUgcmVuYW1lZCB0byB1cGRhdGVQbGF5
U3RhdGVGb3JBbGxBbmltYXRpb25zLApzaW5jZSB0aGVzZSBtZXRob2RzIG5vdyBkbyBtb3JlIHRo
YW4gcmVwYWludHMgKGJlY2F1c2UgU1ZHIGFuaW1hdGlvbnMgaGF2ZSBleHBsaWNpdCByZXN1bWUg
LyBwYXVzZSBtZXRob2RzKS4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
aDoKQWRkIG5ldyBtX1NWR1NWR0VsZW1lbnRzV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9uIG1lbWJl
ci4gVGhpcyBhbGxvd3MgdXMKdG8ga2VlcCB0cmFjayBvZiB0aGUgcGF1c2VkIFNWRyBhbmltYXRp
b25zIHNvIHRoYXQgd2UgY2FuIHJlc3VtZSB0aGVtIGFzCnRoZXkgYmVjb21lIHZpc2libGUgaW4g
dGhlIHZpZXdwb3J0LCBzaW1pbGFyIHRvIG1fcmVuZGVyZXJzV2l0aFBhdXNlZEltYWdlQW5pbWF0
aW9uLgoKKiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcDoKKFdl
YkNvcmU6OmFuaW1hdGlvbnNQYXVzZWRGb3JEb2N1bWVudCk6IEFkZGVkLgooV2ViQ29yZTo6U1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjpTVkdEb2N1bWVudEV4dGVuc2lvbnMpOgooV2ViQ29yZTo6U1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjphbGxTVkdTVkdFbGVtZW50cyBjb25zdCk6IEFkZGVkLgoqIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaDoKKiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CihXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpyZXN1bWVQ
YXVzZWRBbmltYXRpb25zSWZOZWVkZWQpOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5oOgoqIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6
CiogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CihXZWJDb3JlOjpTVkdJ
bWFnZTo6cmVzdW1lQW5pbWF0aW9uKToKQWRkZWQuIERpZmZlcmVudCBmcm9tIFNWR0ltYWdlOjpz
dGFydEFuaW1hdGlvbiBpbiB0aGF0IGl0IHN0YXJ0cyB0aGUKYW5pbWF0aW9uIGZyb20gd2hlcmUg
aXQgbGFzdCBsZWZ0IG9mZiByYXRoZXIgdGhhbiBmcm9tIHRoZSBiZWdpbm5pbmcuCgoqIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKFdlYkNvcmU6OkludGVybmFsczo6YWxs
U1ZHU1ZHRWxlbWVudHMgY29uc3QpOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oOgoqIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbDoKLS0tCiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgICAgICAgICAgICAgfCAgMTEgKy0KIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggICAgICAgICAgICAgICB8ICAgNCArLQogU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCAgICAgICAgICAgICAgICAgIHwgICA2ICstCiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCAgICB8ICAgMiArLQogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwICAgICAgIHwgIDg0ICsrKysrKysrLS0K
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggICAgICAgICB8ICAgNCArLQog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgIHwgIDE2ICstCiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmggICAgfCAgIDEgKwogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwICAgICAgICAgIHwgIDEwICsrCiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oICAgICAgICAgICAgfCAgIDEgKwogU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCAgICAgIHwgICA4ICsKIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oICAgICAgICB8ICAgMyArCiBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgICAgICAgICAgfCAgMTEgKysKIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggICAgICAgICAgICB8ICAgMiArCiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwgICAgICAgICAgfCAgIDEgKwogLi4ubmltYXRlVHJhbnNm
b3JtLXN2Zy1hbmltYXRpb24tZXhwZWN0ZWQudHh0IHwgIDE1ICsrCiAuLi4tcGF1c2UtYW5pbWF0
ZVRyYW5zZm9ybS1zdmctYW5pbWF0aW9uLmh0bWwgfCAgNzcgKysrKysrKysrCiAuLi5heS1wYXVz
ZS1vZmZzY3JlZW4tYW5pbWF0aW9ucy1leHBlY3RlZC50eHQgfCAgNzEgKysrKysrKysrCiAuLi5l
d2lkZS1wbGF5LXBhdXNlLW9mZnNjcmVlbi1hbmltYXRpb25zLmh0bWwgfCAxNTAgKysrKysrKysr
KysrKysrKysrCiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMg
fCAgIDUgKwogMjEgZmlsZXMgY2hhbmdlZCwgNDU1IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9u
cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BhZ2V3aWRl
LXBsYXktcGF1c2UtYW5pbWF0ZVRyYW5zZm9ybS1zdmctYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BhZ2V3aWRlLXBsYXkt
cGF1c2UtYW5pbWF0ZVRyYW5zZm9ybS1zdmctYW5pbWF0aW9uLmh0bWwKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLW9mZnNjcmVl
bi1hbmltYXRpb25zLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Utb2Zmc2NyZWVuLWFuaW1hdGlvbnMuaHRt
bAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA5ODc2MmQ4OTIxOTcuLjg3YWJmNThh
MWQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjgyMSwxMyArMjgyMSwxMCBA
QCB2b2lkIEZyYW1lVmlldzo6cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9ucyhjb25zdCBJbnRS
ZWN0JiB2aXNpYmxlUmVjdCkKICAgICAgICAgcmVuZGVyVmlldy0+cmVzdW1lUGF1c2VkSW1hZ2VB
bmltYXRpb25zSWZOZWVkZWQodmlzaWJsZVJlY3QpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cmVw
YWludFZpc2libGVJbWFnZUFuaW1hdGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCit2
b2lkIEZyYW1lVmlldzo6dXBkYXRlUGxheVN0YXRlRm9yQWxsQW5pbWF0aW9ucyhjb25zdCBJbnRS
ZWN0JiB2aXNpYmxlUmVjdCkKIHsKLSAgICBpZiAodmlzaWJsZVJlY3QuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBpZiAoYXV0byogcmVuZGVyVmlldyA9IGZyYW1lKCkuY29udGVu
dFJlbmRlcmVyKCkpCi0gICAgICAgIHJlbmRlclZpZXctPnJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJ
Zk5lZWRlZCh2aXNpYmxlUmVjdCk7CisgICAgICAgIHJlbmRlclZpZXctPnVwZGF0ZVBsYXlTdGF0
ZUZvckFsbEFuaW1hdGlvbnModmlzaWJsZVJlY3QpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6dXBk
YXRlU2NyaXB0ZWRBbmltYXRpb25zQW5kVGltZXJzVGhyb3R0bGluZ1N0YXRlKGNvbnN0IEludFJl
Y3QmIHZpc2libGVSZWN0KQpAQCAtMjg2NSwxMCArMjg2MiwxMCBAQCB2b2lkIEZyYW1lVmlldzo6
cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcygpCiAgICAgfSk7
CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpyZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1
ZGluZ1N1YmZyYW1lcygpCit2b2lkIEZyYW1lVmlldzo6dXBkYXRlUGxheVN0YXRlRm9yQWxsQW5p
bWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcygpCiB7CiAgICAgYXBwbHlSZWN1cnNpdmVseVdpdGhW
aXNpYmxlUmVjdChbXSAoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHZpc2li
bGVSZWN0KSB7Ci0gICAgICAgIGZyYW1lVmlldy5yZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0aW9u
cyh2aXNpYmxlUmVjdCk7CisgICAgICAgIGZyYW1lVmlldy51cGRhdGVQbGF5U3RhdGVGb3JBbGxB
bmltYXRpb25zKHZpc2libGVSZWN0KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmgKaW5kZXggZDhkOGYzYWEwOTIxLi5jYzAzNWMxNGFmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaApAQCAtMzIxLDcgKzMyMSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmlld3BvcnRDb250
ZW50c0NoYW5nZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZVZpc2libGVJbWFn
ZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKTsKLSAgICB2b2lkIHJlcGFpbnRWaXNpYmxl
SW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCk7CisgICAgdm9pZCB1cGRhdGVQbGF5
U3RhdGVGb3JBbGxBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCk7CiAKICAgICBTdHJpbmcg
bWVkaWFUeXBlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZWRpYVR5cGUo
Y29uc3QgU3RyaW5nJik7CkBAIC03NzQsNyArNzc0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
YXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChjb25zdCBGdW5jdGlvbjx2b2lkKEZyYW1l
VmlldyYgZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk+Jik7CiAgICAgdm9p
ZCByZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0
KTsKLSAgICB2b2lkIHJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJlY3Qm
IHZpc2libGVSZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVBsYXlTdGF0ZUZvckFsbEFuaW1hdGlvbnMo
Y29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpOwogICAgIHZvaWQgdXBkYXRlU2NyaXB0ZWRBbmlt
YXRpb25zQW5kVGltZXJzVGhyb3R0bGluZ1N0YXRlKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRqdXN0VGlsZWRCYWNraW5nQ292ZXJhZ2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDIwMWM3OGQyZDNhZS4uYTE5NDk2Yjc4MTg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKQEAgLTE5NTIsNyArMTk1Miw3IEBAIHZvaWQgUGFnZTo6c2V0SW1hZ2VB
bmltYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBpZiAobV9pbWFnZUFuaW1hdGlvbkVu
YWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1faW1hZ2VBbmltYXRpb25F
bmFibGVkID0gZW5hYmxlZDsKLSAgICByZXBhaW50QW5pbWF0ZWRJbWFnZXMoKTsKKyAgICB1cGRh
dGVQbGF5U3RhdGVGb3JBbGxBbmltYXRpb25zKCk7CiB9CiAKIHZvaWQgUGFnZTo6c3VzcGVuZFNj
cmlwdGVkQW5pbWF0aW9ucygpCkBAIC00MDIxLDEwICs0MDIxLDEwIEBAIHZvaWQgUGFnZTo6Zm9y
Y2VSZXBhaW50QWxsRnJhbWVzKCkKICAgICB9CiB9CiAKLXZvaWQgUGFnZTo6cmVwYWludEFuaW1h
dGVkSW1hZ2VzKCkKK3ZvaWQgUGFnZTo6dXBkYXRlUGxheVN0YXRlRm9yQWxsQW5pbWF0aW9ucygp
CiB7CiAgICAgaWYgKGF1dG8qIHZpZXcgPSBtYWluRnJhbWUoKS52aWV3KCkpCi0gICAgICAgIHZp
ZXctPnJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCk7Cisg
ICAgICAgIHZpZXctPnVwZGF0ZVBsYXlTdGF0ZUZvckFsbEFuaW1hdGlvbnNJbmNsdWRpbmdTdWJm
cmFtZXMoKTsKIH0KIAogU2NyZWVuT3JpZW50YXRpb25NYW5hZ2VyKiBQYWdlOjpzY3JlZW5Pcmll
bnRhdGlvbk1hbmFnZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBjYWRkNzNhZjVlYTYuLjFm
ODc5NjFkZTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTY5Nyw3ICs2OTcsNyBAQCBwdWJsaWM6CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlKCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVBbmltYXRpbmdJbWFnZXMoKTsKLSAg
ICB2b2lkIHJlcGFpbnRBbmltYXRlZEltYWdlcygpOworICAgIHZvaWQgdXBkYXRlUGxheVN0YXRl
Rm9yQWxsQW5pbWF0aW9ucygpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JF
bGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCmluZGV4IGRkYmEzZDI4NDFiNi4uOWVlYWUzMWZmOTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0xNDgxLDcgKzE0ODEs
NyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9ySW1hZ2Uo
Q2FjaGVkSW1hZ2UmKQogYm9vbCBSZW5kZXJFbGVtZW50OjpyZXBhaW50Rm9yUGF1c2VkSW1hZ2VB
bmltYXRpb25zSWZOZWVkZWQoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIENhY2hlZEltYWdl
JiBjYWNoZWRJbWFnZSkKIHsKICAgICBBU1NFUlQobV9oYXNQYXVzZWRJbWFnZUFuaW1hdGlvbnMp
OwotICAgIGlmICghaXNWaXNpYmxlSW5Eb2N1bWVudFJlY3QodmlzaWJsZVJlY3QpKQorICAgIGlm
ICghcGFnZSgpLmltYWdlQW5pbWF0aW9uRW5hYmxlZCgpIHx8ICFpc1Zpc2libGVJbkRvY3VtZW50
UmVjdCh2aXNpYmxlUmVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJlcGFpbnQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA5N2YwMDZkMzdj
MDQuLjJiZTNhYWU3YTY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cApAQCAtNTIsNiArNTIsOSBAQAogI2luY2x1ZGUgIlJlbmRlclF1b3RlLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVHJlZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKKyNpbmNsdWRl
ICJTVkdFbGVtZW50VHlwZUhlbHBlcnMuaCIKKyNpbmNsdWRlICJTVkdJbWFnZS5oIgorI2luY2x1
ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0
eWxlSW5oZXJpdGVkRGF0YS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybVN0YXRlLmgiCkBAIC04OTEs
MjQgKzg5NCw3OSBAQCB2b2lkIFJlbmRlclZpZXc6OnJlc3VtZVBhdXNlZEltYWdlQW5pbWF0aW9u
c0lmTmVlZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KQogICAgIH0KICAgICBmb3IgKGF1
dG8mIHBhaXIgOiB0b1JlbW92ZSkKICAgICAgICAgcmVtb3ZlUmVuZGVyZXJXaXRoUGF1c2VkSW1h
Z2VBbmltYXRpb25zKCpwYWlyLmZpcnN0LCAqcGFpci5zZWNvbmQpOworCisgICAgVmVjdG9yPFNW
R1NWR0VsZW1lbnQqPiBzdmdTdmdFbGVtZW50c1RvUmVtb3ZlOworICAgIG1fU1ZHU1ZHRWxlbWVu
dHNXaXRoUGF1c2VkSW1hZ2VBbmltYXRpb24uZm9yRWFjaChbJl0gKFdlYWtQdHI8U1ZHU1ZHRWxl
bWVudCwgV2Vha1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRhPiBzdmdTdmdFbGVtZW50KSB7Cisg
ICAgICAgIGlmIChzdmdTdmdFbGVtZW50ICYmIHN2Z1N2Z0VsZW1lbnQtPnJlc3VtZVBhdXNlZEFu
aW1hdGlvbnNJZk5lZWRlZCh2aXNpYmxlUmVjdCkpCisgICAgICAgICAgICBzdmdTdmdFbGVtZW50
c1RvUmVtb3ZlLmFwcGVuZChzdmdTdmdFbGVtZW50LmdldCgpKTsKKyAgICB9KTsKKyAgICBmb3Ig
KGF1dG8mIHN2Z1N2Z0VsZW1lbnQgOiBzdmdTdmdFbGVtZW50c1RvUmVtb3ZlKQorICAgICAgICBt
X1NWR1NWR0VsZW1lbnRzV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9uLnJlbW92ZSgqc3ZnU3ZnRWxl
bWVudCk7CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6cmVwYWludEltYWdlQW5pbWF0aW9uc0lmTmVl
ZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KQorc3RhdGljIFNWR1NWR0VsZW1lbnQqIHN2
Z1N2Z0VsZW1lbnRGcm9tKFJlbmRlckVsZW1lbnQmIHJlbmRlckVsZW1lbnQpCiB7Ci0gICAgZm9y
IChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8UmVuZGVyRWxlbWVudD4oKnRoaXMp
KSB7Ci0gICAgICAgIGlmICghZWxlbWVudC5pc1Zpc2libGVJbkRvY3VtZW50UmVjdCh2aXNpYmxl
UmVjdCkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBpZiAoYXV0byogc3ZnU3ZnRWxlbWVu
dCA9IGR5bmFtaWNEb3duY2FzdDxTVkdTVkdFbGVtZW50PihyZW5kZXJFbGVtZW50LmVsZW1lbnQo
KSkpCisgICAgICAgIHJldHVybiBzdmdTdmdFbGVtZW50OworI2lmIEVOQUJMRShMQVlFUl9CQVNF
RF9TVkdfRU5HSU5FKQorICAgIGlmIChhdXRvKiBzdmdSb290ID0gZHluYW1pY0Rvd25jYXN0PFJl
bmRlclNWR1Jvb3Q+KHJlbmRlckVsZW1lbnQpKQorICAgICAgICByZXR1cm4gJnN2Z1Jvb3QtPnN2
Z1NWR0VsZW1lbnQoKTsKKyNlbmRpZgorICAgIGlmIChhdXRvKiBzdmdSb290ID0gZHluYW1pY0Rv
d25jYXN0PExlZ2FjeVJlbmRlclNWR1Jvb3Q+KHJlbmRlckVsZW1lbnQpKQorICAgICAgICByZXR1
cm4gJnN2Z1Jvb3QtPnN2Z1NWR0VsZW1lbnQoKTsKIAotICAgICAgICAvLyBGSVhNRTogQ2hlY2sg
d2hldGhlciB0aGUgYmFja2dyb3VuZCBpbWFnZShzKSBjYW4gYW5pbWF0ZSBiZWZvcmUgcmVwYWlu
dGluZy4KLSAgICAgICAgaWYgKGVsZW1lbnQuc3R5bGUoKS5oYXNCYWNrZ3JvdW5kSW1hZ2UoKSkg
ewotICAgICAgICAgICAgZWxlbWVudC5yZXBhaW50KCk7Ci0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJlbmRlclZpZXc6OnVw
ZGF0ZVBsYXlTdGF0ZUZvckFsbEFuaW1hdGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3Qp
Cit7CisgICAgYm9vbCBhbmltYXRpb25FbmFibGVkID0gcGFnZSgpLmltYWdlQW5pbWF0aW9uRW5h
YmxlZCgpOworICAgIGZvciAoYXV0byYgcmVuZGVyRWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBl
PFJlbmRlckVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBib29sIG5lZWRzUmVwYWludCA9IGZh
bHNlOworICAgICAgICBib29sIHNob3VsZEFuaW1hdGUgPSBhbmltYXRpb25FbmFibGVkICYmIHJl
bmRlckVsZW1lbnQuaXNWaXNpYmxlSW5Eb2N1bWVudFJlY3QodmlzaWJsZVJlY3QpOworCisgICAg
ICAgIGF1dG8gdXBkYXRlQW5pbWF0aW9uID0gWyZdKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSkg
eworICAgICAgICAgICAgaWYgKCFjYWNoZWRJbWFnZSkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGJvb2wgaGFzUGF1c2VkQW5pbWF0aW9uID0gcmVuZGVyRWxlbWVudC5o
YXNQYXVzZWRJbWFnZUFuaW1hdGlvbnMoKTsKKyAgICAgICAgICAgIGF1dG8qIGltYWdlID0gY2Fj
aGVkSW1hZ2UtPmltYWdlKCk7CisgICAgICAgICAgICBpZiAoYXV0byogc3ZnSW1hZ2UgPSBkeW5h
bWljRG93bmNhc3Q8U1ZHSW1hZ2U+KGltYWdlKSkgeworICAgICAgICAgICAgICAgIGlmIChzaG91
bGRBbmltYXRlICYmIGhhc1BhdXNlZEFuaW1hdGlvbikgeworICAgICAgICAgICAgICAgICAgICBz
dmdJbWFnZS0+cmVzdW1lQW5pbWF0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIHJlbW92ZVJl
bmRlcmVyV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9ucyhyZW5kZXJFbGVtZW50LCAqY2FjaGVkSW1h
Z2UpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWhhc1BhdXNlZEFuaW1hdGlvbikgewor
ICAgICAgICAgICAgICAgICAgICBzdmdJbWFnZS0+c3RvcEFuaW1hdGlvbigpOworICAgICAgICAg
ICAgICAgICAgICBhZGRSZW5kZXJlcldpdGhQYXVzZWRJbWFnZUFuaW1hdGlvbnMocmVuZGVyRWxl
bWVudCwgKmNhY2hlZEltYWdlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVs
c2UgaWYgKGltYWdlICYmIGltYWdlLT5pc0FuaW1hdGVkKCkpIHsKKyAgICAgICAgICAgICAgICAv
LyBBbmltYXRpb25zIG9mIHRoaXMgdHlwZSByZXF1aXJlIGEgcmVwYWludCB0byBiZSBwYXVzZWQg
b3IgcmVzdW1lZC4KKyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQW5pbWF0ZSAmJiBoYXNQYXVz
ZWRBbmltYXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgbmVlZHNSZXBhaW50ID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlUmVuZGVyZXJXaXRoUGF1c2VkSW1hZ2VBbmltYXRp
b25zKHJlbmRlckVsZW1lbnQsICpjYWNoZWRJbWFnZSk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IGlmICghaGFzUGF1c2VkQW5pbWF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIG5lZWRzUmVw
YWludCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFkZFJlbmRlcmVyV2l0aFBhdXNlZElt
YWdlQW5pbWF0aW9ucyhyZW5kZXJFbGVtZW50LCAqY2FjaGVkSW1hZ2UpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8qIGxheWVyID0gJnJlbmRlckVsZW1lbnQuc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCk7IGxh
eWVyOyBsYXllciA9IGxheWVyLT5uZXh0KCkpCisgICAgICAgICAgICB1cGRhdGVBbmltYXRpb24o
bGF5ZXItPmltYWdlKCkgPyBsYXllci0+aW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKSA6IG51bGxwdHIp
OworCisgICAgICAgIGlmIChhdXRvKiByZW5kZXJJbWFnZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5k
ZXJJbWFnZT4ocmVuZGVyRWxlbWVudCkpCisgICAgICAgICAgICB1cGRhdGVBbmltYXRpb24ocmVu
ZGVySW1hZ2UtPmNhY2hlZEltYWdlKCkpOworCisgICAgICAgIGlmIChuZWVkc1JlcGFpbnQpCisg
ICAgICAgICAgICByZW5kZXJFbGVtZW50LnJlcGFpbnQoKTsKIAotICAgICAgICBpZiAoYXV0byog
cmVuZGVySW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW1hZ2U+KGVsZW1lbnQpKSB7Ci0g
ICAgICAgICAgICBpZiAocmVuZGVySW1hZ2UtPmhhc0FuaW1hdGVkSW1hZ2UoKSkgewotICAgICAg
ICAgICAgICAgIGVsZW1lbnQucmVwYWludCgpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBpZiAoYXV0byogc3ZnU3ZnRWxlbWVudCA9IHN2Z1N2Z0VsZW1lbnRGcm9tKHJlbmRl
ckVsZW1lbnQpKSB7CisgICAgICAgICAgICBpZiAoc2hvdWxkQW5pbWF0ZSkgeworICAgICAgICAg
ICAgICAgIHN2Z1N2Z0VsZW1lbnQtPnVucGF1c2VBbmltYXRpb25zKCk7CisgICAgICAgICAgICAg
ICAgbV9TVkdTVkdFbGVtZW50c1dpdGhQYXVzZWRJbWFnZUFuaW1hdGlvbi5yZW1vdmUoKnN2Z1N2
Z0VsZW1lbnQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdmdTdmdF
bGVtZW50LT5wYXVzZUFuaW1hdGlvbnMoKTsKKyAgICAgICAgICAgICAgICBtX1NWR1NWR0VsZW1l
bnRzV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9uLmFkZCgqc3ZnU3ZnRWxlbWVudCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
aAppbmRleCA4MzRhMjA4ZmIyYmIuLjdhZDExMTQyYTJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5oCkBAIC0xODEsOCArMTgxLDkgQEAgcHVibGljOgogICAgIHZvaWQgdXBk
YXRlVmlzaWJsZVZpZXdwb3J0UmVjdChjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9pZCByZWdpc3Rl
ckZvclZpc2libGVJblZpZXdwb3J0Q2FsbGJhY2soUmVuZGVyRWxlbWVudCYpOwogICAgIHZvaWQg
dW5yZWdpc3RlckZvclZpc2libGVJblZpZXdwb3J0Q2FsbGJhY2soUmVuZGVyRWxlbWVudCYpOwor
CiAgICAgdm9pZCByZXN1bWVQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRS
ZWN0JiB2aXNpYmxlUmVjdCk7Ci0gICAgdm9pZCByZXBhaW50SW1hZ2VBbmltYXRpb25zSWZOZWVk
ZWQoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpOworICAgIHZvaWQgdXBkYXRlUGxheVN0YXRl
Rm9yQWxsQW5pbWF0aW9ucyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk7CiAgICAgdm9pZCBh
ZGRSZW5kZXJlcldpdGhQYXVzZWRJbWFnZUFuaW1hdGlvbnMoUmVuZGVyRWxlbWVudCYsIENhY2hl
ZEltYWdlJik7CiAgICAgdm9pZCByZW1vdmVSZW5kZXJlcldpdGhQYXVzZWRJbWFnZUFuaW1hdGlv
bnMoUmVuZGVyRWxlbWVudCYpOwogICAgIHZvaWQgcmVtb3ZlUmVuZGVyZXJXaXRoUGF1c2VkSW1h
Z2VBbmltYXRpb25zKFJlbmRlckVsZW1lbnQmLCBDYWNoZWRJbWFnZSYpOwpAQCAtMjc1LDYgKzI3
Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX25lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25D
b21wb3NpdGVkRnJhbWUgeyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDxSZW5kZXJFbGVtZW50Kiwg
VmVjdG9yPENhY2hlZEltYWdlKj4+IG1fcmVuZGVyZXJzV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9u
OworICAgIFdlYWtIYXNoU2V0PFNWR1NWR0VsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFy
Z2V0RGF0YT4gbV9TVkdTVkdFbGVtZW50c1dpdGhQYXVzZWRJbWFnZUFuaW1hdGlvbjsKICAgICBI
YXNoU2V0PFJlbmRlckVsZW1lbnQqPiBtX3Zpc2libGVJblZpZXdwb3J0UmVuZGVyZXJzOwogCiAg
ICAgSGFzaFNldDxjb25zdCBSZW5kZXJCb3gqPiBtX2JveGVzV2l0aFNjcm9sbFNuYXBQb3NpdGlv
bnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmluZGV4
IGI5Yjk0NTEyYTVlZS4uZjEyNDY3ZGQ2MDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLmNwcApAQCAtNDIsMTAgKzQyLDE1IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorc3RhdGljIGJvb2wgYW5pbWF0aW9uc1BhdXNlZEZvckRvY3VtZW50KERvY3Vt
ZW50JiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gIWRvY3VtZW50LnBhZ2UoKSB8fCAhZG9jdW1l
bnQucGFnZSgpLT5pc1Zpc2libGUoKSB8fCAhZG9jdW1lbnQucGFnZSgpLT5pbWFnZUFuaW1hdGlv
bkVuYWJsZWQoKTsKK30KKwogU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpTVkdEb2N1bWVudEV4dGVu
c2lvbnMoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKICAg
ICAsIG1fcmVzb3VyY2VzQ2FjaGUobWFrZVVuaXF1ZTxTVkdSZXNvdXJjZXNDYWNoZT4oKSkKLSAg
ICAsIG1fYXJlQW5pbWF0aW9uc1BhdXNlZCghZG9jdW1lbnQucGFnZSgpIHx8ICFkb2N1bWVudC5w
YWdlKCktPmlzVmlzaWJsZSgpKQorICAgICwgbV9hcmVBbmltYXRpb25zUGF1c2VkKGFuaW1hdGlv
bnNQYXVzZWRGb3JEb2N1bWVudChkb2N1bWVudCkpCiB7CiB9CiAKQEAgLTYzLDYgKzY4LDExIEBA
IHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVUaW1lQ29udGFpbmVyKFNWR1NWR0Vs
ZW1lbnQmIGVsZW1lbnQpCiAgICAgbV90aW1lQ29udGFpbmVycy5yZW1vdmUoZWxlbWVudCk7CiB9
CiAKK1ZlY3RvcjxSZWY8U1ZHU1ZHRWxlbWVudD4+IFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWxs
U1ZHU1ZHRWxlbWVudHMoKSBjb25zdAoreworICAgIHJldHVybiBjb3B5VG9WZWN0b3JPZjxSZWY8
U1ZHU1ZHRWxlbWVudD4+KG1fdGltZUNvbnRhaW5lcnMpOworfQorCiB2b2lkIFNWR0RvY3VtZW50
RXh0ZW5zaW9uczo6YWRkUmVzb3VyY2UoY29uc3QgQXRvbVN0cmluZyYgaWQsIFJlbmRlclNWR1Jl
c291cmNlQ29udGFpbmVyJiByZXNvdXJjZSkKIHsKICAgICBpZiAoaWQuaXNFbXB0eSgpKQpAQCAt
MTA4LDYgKzExOCwxMCBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cGF1c2VBbmltYXRp
b25zKCkKIAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnVucGF1c2VBbmltYXRpb25zKCkK
IHsKKyAgICAvLyBJZiBhbmltYXRpb25zIGFyZSBwYXVzZWQgYXQgdGhlIGRvY3VtZW50IGxldmVs
LCBkb24ndCBhbGxvdyBgdGhpc2AgdG8gYmUgdW5wYXVzZWQuCisgICAgaWYgKGFuaW1hdGlvbnNQ
YXVzZWRGb3JEb2N1bWVudChtX2RvY3VtZW50KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZm9y
IChhdXRvJiBjb250YWluZXIgOiBtX3RpbWVDb250YWluZXJzKQogICAgICAgICBjb250YWluZXIu
dW5wYXVzZUFuaW1hdGlvbnMoKTsKICAgICBtX2FyZUFuaW1hdGlvbnNQYXVzZWQgPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaAppbmRleCBkZjVjMDA4
ODRlNmQuLjkxYTY2YTM5NTJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Rv
Y3VtZW50RXh0ZW5zaW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4
dGVuc2lvbnMuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFRpbWVD
b250YWluZXIoU1ZHU1ZHRWxlbWVudCYpOwogICAgIHZvaWQgcmVtb3ZlVGltZUNvbnRhaW5lcihT
VkdTVkdFbGVtZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFJlZjxTVkdTVkdFbGVt
ZW50Pj4gYWxsU1ZHU1ZHRWxlbWVudHMoKSBjb25zdDsKIAogICAgIHZvaWQgYWRkUmVzb3VyY2Uo
Y29uc3QgQXRvbVN0cmluZyYgaWQsIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyJik7CiAgICAg
dm9pZCByZW1vdmVSZXNvdXJjZShjb25zdCBBdG9tU3RyaW5nJiBpZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggYWI3NjkwYmMxOWFkLi5hYWUxZDg5Y2MxOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTQ4OSw2ICs0ODksMTYgQEAgdm9pZCBT
VkdTVkdFbGVtZW50Ojp1bnBhdXNlQW5pbWF0aW9ucygpCiAgICAgICAgIG1fdGltZUNvbnRhaW5l
ci0+cmVzdW1lKCk7CiB9CiAKK2Jvb2wgU1ZHU1ZHRWxlbWVudDo6cmVzdW1lUGF1c2VkQW5pbWF0
aW9uc0lmTmVlZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KQoreworICAgIGJvb2wgYW5p
bWF0aW9uRW5hYmxlZCA9IGRvY3VtZW50KCkucGFnZSgpID8gZG9jdW1lbnQoKS5wYWdlKCktPmlt
YWdlQW5pbWF0aW9uRW5hYmxlZCgpIDogdHJ1ZTsKKyAgICBpZiAoIWFuaW1hdGlvbkVuYWJsZWQg
fHwgIXJlbmRlcmVyKCkgfHwgIXJlbmRlcmVyKCktPmlzVmlzaWJsZUluRG9jdW1lbnRSZWN0KHZp
c2libGVSZWN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdW5wYXVzZUFuaW1hdGlv
bnMoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBTVkdTVkdFbGVtZW50OjphbmltYXRp
b25zUGF1c2VkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90aW1lQ29udGFpbmVyLT5pc1BhdXNl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKaW5kZXggYWM0NjQwODQ4NmMwLi5kZWU1
ZTRhZTZiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaApAQCAtNzEsNiArNzEsNyBA
QCBwdWJsaWM6IC8vIERPTQogCiAgICAgdm9pZCBwYXVzZUFuaW1hdGlvbnMoKTsKICAgICB2b2lk
IHVucGF1c2VBbmltYXRpb25zKCk7CisgICAgYm9vbCByZXN1bWVQYXVzZWRBbmltYXRpb25zSWZO
ZWVkZWQoY29uc3QgSW50UmVjdCYpOwogICAgIGJvb2wgYW5pbWF0aW9uc1BhdXNlZCgpIGNvbnN0
OwogICAgIGJvb2wgaGFzQWN0aXZlQW5pbWF0aW9uKCkgY29uc3Q7CiAgICAgZmxvYXQgZ2V0Q3Vy
cmVudFRpbWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
CmluZGV4IGFmZmM4Zjg3MzlhYS4uYzUyMTk0NzU2MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTM4NSw2ICszODUsMTQgQEAgdm9pZCBTVkdJbWFnZTo6
c3RhcnRBbmltYXRpb24oKQogICAgIHJvb3RFbGVtZW50LT5zZXRDdXJyZW50VGltZSgwKTsKIH0K
IAordm9pZCBTVkdJbWFnZTo6cmVzdW1lQW5pbWF0aW9uKCkKK3sKKyAgICBhdXRvIHJvb3RFbGVt
ZW50ID0gdGhpcy0+cm9vdEVsZW1lbnQoKTsKKyAgICBpZiAoIXJvb3RFbGVtZW50IHx8ICFyb290
RWxlbWVudC0+YW5pbWF0aW9uc1BhdXNlZCgpKQorICAgICAgICByZXR1cm47CisgICAgcm9vdEVs
ZW1lbnQtPnVucGF1c2VBbmltYXRpb25zKCk7Cit9CisKIHZvaWQgU1ZHSW1hZ2U6OnN0b3BBbmlt
YXRpb24oKQogewogICAgIG1fc3RhcnRBbmltYXRpb25UaW1lci5zdG9wKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IGY4MDMxZTBiMGNiOC4uZjA2MzUzZTk4ZTVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtNTUsNyArNTUsMTAg
QEAgcHVibGljOgogICAgIGJvb2wgaGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgaGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCBmaW5hbDsKIAorICAgIC8vIFN0YXJ0IHRo
ZSBhbmltYXRpb24gZnJvbSB0aGUgYmVnaW5uaW5nLgogICAgIHZvaWQgc3RhcnRBbmltYXRpb24o
KSBmaW5hbDsKKyAgICAvLyBSZXN1bWUgdGhlIGFuaW1hdGlvbiBmcm9tIHdoZXJlIGl0IHdhcyBs
YXN0IHN0b3BwZWQuCisgICAgdm9pZCByZXN1bWVBbmltYXRpb24oKTsKICAgICB2b2lkIHN0b3BB
bmltYXRpb24oKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgZmluYWw7CiAgICAg
Ym9vbCBpc0FuaW1hdGluZygpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCmluZGV4IDg0ZjhiMDM1YTNkMy4uYzBkYjcxZDEyZWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCkBAIC03ODMsNiArNzgzLDE3IEBAIEV4Y2VwdGlvbk9yPGRvdWJs
ZT4gSW50ZXJuYWxzOjpzdmdBbmltYXRpb25zSW50ZXJ2YWwoU1ZHU1ZHRWxlbWVudCYgZWxlbWVu
dCkgY29uCiAgICAgcmV0dXJuIGVsZW1lbnQudGltZUNvbnRhaW5lcigpLmFuaW1hdGlvbkZyYW1l
RGVsYXkoKS52YWx1ZSgpOwogfQogCitWZWN0b3I8UmVmPFNWR1NWR0VsZW1lbnQ+PiBJbnRlcm5h
bHM6OmFsbFNWR1NWR0VsZW1lbnRzKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8UmVmPFNWR1NWR0Vs
ZW1lbnQ+PiBlbGVtZW50czsKKyAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFs
bERvY3VtZW50cygpKSB7CisgICAgICAgIGlmICghZG9jdW1lbnQtPnN2Z0V4dGVuc2lvbnMoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBlbGVtZW50cy5hcHBlbmRWZWN0b3IoZG9j
dW1lbnQtPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5hbGxTVkdTVkdFbGVtZW50cygpKTsKKyAgICB9
CisgICAgcmV0dXJuIGVsZW1lbnRzOworfQorCiBTdHJpbmcgSW50ZXJuYWxzOjphZGRyZXNzKE5v
ZGUmIG5vZGUpCiB7CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIjB4IiwgaGV4KHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pigmbm9kZSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmlu
ZGV4IDdkOTI3NGU1YjkxOS4uMzUyZDExYzVhNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKQEAgLTQ0Nyw2ICs0NDcsOCBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgd29ya2VyVGhy
ZWFkQ291bnQoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjxib29sPiBhcmVTVkdBbmltYXRpb25z
UGF1c2VkKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8ZG91YmxlPiBzdmdBbmltYXRpb25zSW50
ZXJ2YWwoU1ZHU1ZHRWxlbWVudCYpIGNvbnN0OworICAgIC8vIFNvbWUgU1ZHU1ZHRWxlbWVudHMg
YXJlIG5vdCBhY2Nlc3NpYmxlIHZpYSBKYXZhU2NyaXB0IChlLmcuIHRob3NlIGluIENTUyBgYmFj
a2dyb3VuZDogdXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmc+Li4uKWAsIGJ1dCB3ZSBu
ZWVkIGFjY2VzcyB0byB0aGVtIGZvciB0ZXN0aW5nLgorICAgIFZlY3RvcjxSZWY8U1ZHU1ZHRWxl
bWVudD4+IGFsbFNWR1NWR0VsZW1lbnRzKCkgY29uc3Q7CiAKICAgICBlbnVtIHsKICAgICAgICAg
Ly8gVmFsdWVzIG5lZWQgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggSW50ZXJuYWxzLmlkbC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAyZDAzMzNkM2FmMzcuLjdhMThjY2Vl
MDkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNTcyLDYgKzU3Miw3
IEBAIHR5cGVkZWYgKEZldGNoUmVxdWVzdCBvciBGZXRjaFJlc3BvbnNlKSBGZXRjaE9iamVjdDsK
IAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGFyZVNWR0FuaW1hdGlvbnNQYXVzZWQ7
CiAgICAgZG91YmxlIHN2Z0FuaW1hdGlvbnNJbnRlcnZhbChTVkdTVkdFbGVtZW50IGVsZW1lbnQp
OworICAgIHNlcXVlbmNlPFNWR1NWR0VsZW1lbnQ+IGFsbFNWR1NWR0VsZW1lbnRzKCk7CiAKICAg
ICBib29sZWFuIHRlc3RQcm9jZXNzSW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5
bmNSZXBseSgpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lk
ZS1wbGF5LXBhdXNlLWFuaW1hdGVUcmFuc2Zvcm0tc3ZnLWFuaW1hdGlvbi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLWFuaW1hdGVUcmFu
c2Zvcm0tc3ZnLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5iNzdhZTM3ODNmYmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLWFuaW1hdGVUcmFuc2Zvcm0tc3Zn
LWFuaW1hdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0IGVuc3Vy
ZXMgdGhhdCBhbmltYXRlVHJhbnNmb3JtIFNWRyBhbmltYXRpb25zIGFyZSBwYXVzZWQgYW5kIHJl
c3VtZWQgd2hlbiB0aGUgcGFnZS13aWRlIGltYWdlIGFuaW1hdGlvbiBzZXR0aW5nIGlzIHRvZ2ds
ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitEaXNhYmxpbmcgYW5pbWF0aW9u
cy4KK1BBU1Mgc3ZnTWF0cmljZXNBcmVFcXVhbChnZXRBbmltYXRlVHJhbnNmb3JtTWF0cml4KHN2
Z0VsZW1lbnQpLCBpbml0aWFsQW5pbWF0ZVRyYW5zZm9ybU1hdHJpeCkgaXMgdHJ1ZQorCitFbmFi
bGluZyBhbmltYXRpb25zLgorUEFTUyBzdmdNYXRyaWNlc0FyZUVxdWFsKGdldEFuaW1hdGVUcmFu
c2Zvcm1NYXRyaXgoc3ZnRWxlbWVudCksIGluaXRpYWxBbmltYXRlVHJhbnNmb3JtTWF0cml4KSBp
cyBmYWxzZQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1w
YXVzZS1hbmltYXRlVHJhbnNmb3JtLXN2Zy1hbmltYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2UtYW5pbWF0ZVRyYW5zZm9ybS1zdmctYW5pbWF0
aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jYWZhMDVl
ZDk2NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lk
ZS1wbGF5LXBhdXNlLWFuaW1hdGVUcmFuc2Zvcm0tc3ZnLWFuaW1hdGlvbi5odG1sCkBAIC0wLDAg
KzEsNzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKwor
PHN2ZyBpZD0ic3ZnIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyMzIsIDIzMiwgMjM3KTsiIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9
IjIwMCIgdmlld0JveD0iLTQgLTQgOCA4Ij4KKyAgPGNpcmNsZSBjeD0iMCIgY3k9IjEiIHI9IjIi
IHN0cm9rZT0icmVkIiBmaWxsPSJub25lIj4KKyAgICA8YW5pbWF0ZVRyYW5zZm9ybQorICAgICAg
YXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIgorICAgICAgYXR0cmlidXRlVHlwZT0iWE1MIgorICAg
ICAgdHlwZT0icm90YXRlIgorICAgICAgZnJvbT0iMCIKKyAgICAgIHRvPSIzNjAiCisgICAgICBi
ZWdpbj0iMHMiCisgICAgICBkdXI9IjFzIgorICAgICAgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUi
Lz4KKyAgPC9jaXJjbGU+Cis8L3N2Zz4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRl
c3QgZW5zdXJlcyB0aGF0IGFuaW1hdGVUcmFuc2Zvcm0gU1ZHIGFuaW1hdGlvbnMgYXJlIHBhdXNl
ZCBhbmQgcmVzdW1lZCB3aGVuIHRoZSBwYWdlLXdpZGUgaW1hZ2UgYW5pbWF0aW9uIHNldHRpbmcg
aXMgdG9nZ2xlZC4iKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHN2Z0Vs
ZW1lbnQsIGluaXRpYWxBbmltYXRlVHJhbnNmb3JtTWF0cml4Oword2luZG93Lm9ubG9hZCA9IGZ1
bmN0aW9uKCkgeworICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgcmV0dXJuOworICBkZWJ1
ZygiRGlzYWJsaW5nIGFuaW1hdGlvbnMuIik7CisgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0SW1hZ2VBbmltYXRpb25Db250cm9sRW5hYmxlZCh0cnVlKTsKKyAgd2luZG93LmludGVybmFs
cy5zZXRJbWFnZUFuaW1hdGlvbkVuYWJsZWQoZmFsc2UpOworCisgIHN2Z0VsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic3ZnIik7CisgIHNldFRpbWVvdXQoKCkgPT4geworICAgIHN2
Z0VsZW1lbnQuc2V0Q3VycmVudFRpbWUoMCk7CisgICAgaW5pdGlhbEFuaW1hdGVUcmFuc2Zvcm1N
YXRyaXggPSBnZXRBbmltYXRlVHJhbnNmb3JtTWF0cml4KHN2Z0VsZW1lbnQpOworCisgICAgLy8g
QWxsb3cgc29tZSB0aW1lIHRvIHBhc3MuCisgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAv
LyBBZnRlciA1MG1zLCB0aGUgYW5pbWF0aW9uIHNob3VsZCBub3QgaGF2ZSBwcm9ncmVzc2VkIGJl
Y2F1c2UgdGhlIHBhZ2Utd2lkZSBpbWFnZSBhbmltYXRpb24gc2V0dGluZyBpcyBkaXNhYmxlZC4K
KyAgICAgIHZlcmlmeUFuaW1hdGlvbklzUGF1c2VkKHRydWUpOworCisgICAgICBkZWJ1ZygiRW5h
YmxpbmcgYW5pbWF0aW9ucy4iKTsKKyAgICAgIC8vIFJlLWVuYWJsZSBhbmltYXRpb25zIGFuZCBh
bGxvdyB0aW1lIHRvIHBhc3Mgc28gdGhleSBjYW4gcHJvZ3Jlc3MuCisgICAgICBpbnRlcm5hbHMu
c2V0SW1hZ2VBbmltYXRpb25FbmFibGVkKHRydWUpOworICAgICAgc2V0VGltZW91dCgoKSA9PiB7
CisgICAgICAgIHZlcmlmeUFuaW1hdGlvbklzUGF1c2VkKGZhbHNlKTsKKyAgICAgICAgaW50ZXJu
YWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICB9
LCA1MCk7CisgICAgfSwgNTApOworICB9LCA1MCkKK307CisKKy8vIEhhcmRjb2RlZCB0byB0aGUg
c3RydWN0dXJlIG9mICNzdmcuIElmIHlvdSBjaGFuZ2UgdGhlIG1hcmt1cCwgeW91IG11c3QgYWxz
byBjaGFuZ2UgdGhpcyBmdW5jdGlvbi4KK2Z1bmN0aW9uIGdldEFuaW1hdGVUcmFuc2Zvcm1NYXRy
aXgoZWxlbWVudCkgeworICByZXR1cm4gZWxlbWVudC5jaGlsZHJlblswXS50cmFuc2Zvcm0uYW5p
bVZhbC5nZXRJdGVtKDApLm1hdHJpeDsKK30KKworZnVuY3Rpb24gc3ZnTWF0cmljZXNBcmVFcXVh
bChtYXRyaXhBLCBtYXRyaXhCKSB7CisgIHJldHVybiBtYXRyaXhBLmEgPT09IG1hdHJpeEIuYQor
ICAgICYmIG1hdHJpeEEuYiA9PT0gbWF0cml4Qi5iCisgICAgJiYgbWF0cml4QS5jID09PSBtYXRy
aXhCLmMKKyAgICAmJiBtYXRyaXhBLmQgPT09IG1hdHJpeEIuZAorICAgICYmIG1hdHJpeEEuZSA9
PT0gbWF0cml4Qi5lCisgICAgJiYgbWF0cml4QS5mID09PSBtYXRyaXhCLmY7Cit9CisKK2Z1bmN0
aW9uIHZlcmlmeUFuaW1hdGlvbklzUGF1c2VkKGV4cGVjdFBhdXNlZCkgeworICBzaG91bGRCZSgi
c3ZnTWF0cmljZXNBcmVFcXVhbChnZXRBbmltYXRlVHJhbnNmb3JtTWF0cml4KHN2Z0VsZW1lbnQp
LCBpbml0aWFsQW5pbWF0ZVRyYW5zZm9ybU1hdHJpeCkiLCBleHBlY3RQYXVzZWQgPyAidHJ1ZSIg
OiAiZmFsc2UiKTsKKyAgZGVidWcoIiIpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1
c2Utb2Zmc2NyZWVuLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9p
bWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1vZmZzY3JlZW4tYW5pbWF0aW9ucy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NGExNmM5ODQ0YjkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5
LXBhdXNlLW9mZnNjcmVlbi1hbmltYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcxIEBA
CitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGFuaW1hdGlvbnMgcmVzdW1lZCBvZmYtc2NyZWVuIGRv
bid0IHN0YXJ0IHBsYXlpbmcgdW50aWwgdGhleSBiZWNvbWUgdmlzaWJsZSBpbiB0aGUgdmlld3Bv
cnQuCisKK1ZlcmlmeWluZyBhbmltYXRpb25zIGFyZSBpbml0aWFsbHkgcGxheWluZy4KKworVGVz
dGluZyAjY3NzLWJhY2tncm91bmQtc3ZnLgorUEFTUzogc3ZnU3ZnRWxlbWVudC5jaGlsZHJlblsw
XS54LmFuaW1WYWwudmFsdWUgIT09IDAgaXMgdHJ1ZQorVGVzdGluZyAjaWZyYW1lLXNyY2RvYy1z
dmcuCitQQVNTOiBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAhPT0g
MCBpcyB0cnVlCitUZXN0aW5nICNpbWctc3JjLXN2Zy4KK1BBU1M6IHN2Z1N2Z0VsZW1lbnQuY2hp
bGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlICE9PSAwIGlzIHRydWUKK1Rlc3RpbmcgI2lubGluZS1z
dmcuCitQQVNTOiBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAhPT0g
MCBpcyB0cnVlCitUZXN0aW5nICNnaWYtZWxlbWVudC4KK1BBU1M6IGludGVybmFscy5pc0ltYWdl
QW5pbWF0aW5nKGdpZkVsZW1lbnQpIGlzIHRydWUKKworUGF1c2luZyBhbmltYXRpb25zIHBhZ2Ut
d2lkZS4KKworVGVzdGluZyAjY3NzLWJhY2tncm91bmQtc3ZnLgorUEFTUzogc3ZnU3ZnRWxlbWVu
dC5jaGlsZHJlblswXS54LmFuaW1WYWwudmFsdWUgPT09IDAgaXMgdHJ1ZQorVGVzdGluZyAjaWZy
YW1lLXNyY2RvYy1zdmcuCitQQVNTOiBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZh
bC52YWx1ZSA9PT0gMCBpcyB0cnVlCitUZXN0aW5nICNpbWctc3JjLXN2Zy4KK1BBU1M6IHN2Z1N2
Z0VsZW1lbnQuY2hpbGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlID09PSAwIGlzIHRydWUKK1Rlc3Rp
bmcgI2lubGluZS1zdmcuCitQQVNTOiBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZh
bC52YWx1ZSA9PT0gMCBpcyB0cnVlCitUZXN0aW5nICNnaWYtZWxlbWVudC4KK1BBU1M6IGludGVy
bmFscy5pc0ltYWdlQW5pbWF0aW5nKGdpZkVsZW1lbnQpIGlzIGZhbHNlCisKK01vdmluZyBhbmlt
YXRpb25zIG9mZi1zY3JlZW4gYW5kIGVuYWJsaW5nIHBhZ2Utd2lkZSBhbmltYXRpb24gKHdoaWNo
IHNob3VsZCBoYXZlIG5vIGVmZmVjdCBmb3Igb2ZmLXNjcmVlbiBhbmltYXRpb25zKS4KKworI2lu
bGluZS1zdmcgaXMgbm8gbG9uZ2VyIHZpc2libGUgaW4gdGhlIHZpZXdwb3J0LgorI2Nzcy1iYWNr
Z3JvdW5kLXN2Zy1jb250YWluZXIgaXMgbm8gbG9uZ2VyIHZpc2libGUgaW4gdGhlIHZpZXdwb3J0
LgorI2ltZy1zcmMtc3ZnLWNvbnRhaW5lciBpcyBubyBsb25nZXIgdmlzaWJsZSBpbiB0aGUgdmll
d3BvcnQuCisjaWZyYW1lLXNyY2RvYy1zdmctY29udGFpbmVyIGlzIG5vIGxvbmdlciB2aXNpYmxl
IGluIHRoZSB2aWV3cG9ydC4KKyNnaWYtZWxlbWVudCBpcyBubyBsb25nZXIgdmlzaWJsZSBpbiB0
aGUgdmlld3BvcnQuCisKK1Rlc3RpbmcgI2Nzcy1iYWNrZ3JvdW5kLXN2Zy4KK1BBU1M6IHN2Z1N2
Z0VsZW1lbnQuY2hpbGRyZW5bMF0ueC5hbmltVmFsLnZhbHVlID09PSAwIGlzIHRydWUKK1Rlc3Rp
bmcgI2lmcmFtZS1zcmNkb2Mtc3ZnLgorUEFTUzogc3ZnU3ZnRWxlbWVudC5jaGlsZHJlblswXS54
LmFuaW1WYWwudmFsdWUgPT09IDAgaXMgdHJ1ZQorVGVzdGluZyAjaW1nLXNyYy1zdmcuCitQQVNT
OiBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSA9PT0gMCBpcyB0cnVl
CitUZXN0aW5nICNpbmxpbmUtc3ZnLgorUEFTUzogc3ZnU3ZnRWxlbWVudC5jaGlsZHJlblswXS54
LmFuaW1WYWwudmFsdWUgPT09IDAgaXMgdHJ1ZQorVGVzdGluZyAjZ2lmLWVsZW1lbnQuCitQQVNT
OiBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhnaWZFbGVtZW50KSBpcyBmYWxzZQorCitTY3Jv
bGxpbmcgdG8gbWFrZSBhbmltYXRpb25zIHZpc2libGUgYWdhaW4uIFRoZXkgc2hvdWxkIHJlc3Vt
ZSBhdXRvbWF0aWNhbGx5IGJlY2F1c2UgcGFnZS13aWRlIGFuaW1hdGlvbiBpcyBlbmFibGVkLgor
CisjaW5saW5lLXN2ZyBpcyBub3cgdmlzaWJsZSBpbiB0aGUgdmlld3BvcnQuCisjY3NzLWJhY2tn
cm91bmQtc3ZnLWNvbnRhaW5lciBpcyBub3cgdmlzaWJsZSBpbiB0aGUgdmlld3BvcnQuCisjaW1n
LXNyYy1zdmctY29udGFpbmVyIGlzIG5vdyB2aXNpYmxlIGluIHRoZSB2aWV3cG9ydC4KKyNpZnJh
bWUtc3JjZG9jLXN2Zy1jb250YWluZXIgaXMgbm93IHZpc2libGUgaW4gdGhlIHZpZXdwb3J0Lgor
I2dpZi1lbGVtZW50IGlzIG5vdyB2aXNpYmxlIGluIHRoZSB2aWV3cG9ydC4KKworVGVzdGluZyAj
Y3NzLWJhY2tncm91bmQtc3ZnLgorUEFTUzogc3ZnU3ZnRWxlbWVudC5jaGlsZHJlblswXS54LmFu
aW1WYWwudmFsdWUgIT09IDAgaXMgdHJ1ZQorVGVzdGluZyAjaWZyYW1lLXNyY2RvYy1zdmcuCitQ
QVNTOiBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAhPT0gMCBpcyB0
cnVlCitUZXN0aW5nICNpbWctc3JjLXN2Zy4KK1BBU1M6IHN2Z1N2Z0VsZW1lbnQuY2hpbGRyZW5b
MF0ueC5hbmltVmFsLnZhbHVlICE9PSAwIGlzIHRydWUKK1Rlc3RpbmcgI2lubGluZS1zdmcuCitQ
QVNTOiBzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdLnguYW5pbVZhbC52YWx1ZSAhPT0gMCBpcyB0
cnVlCitUZXN0aW5nICNnaWYtZWxlbWVudC4KK1BBU1M6IGludGVybmFscy5pc0ltYWdlQW5pbWF0
aW5nKGdpZkVsZW1lbnQpIGlzIHRydWUKKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1vZmZzY3JlZW4tYW5pbWF0aW9ucy5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1vZmZzY3JlZW4tYW5pbWF0aW9u
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDAyODgzZmJi
OTAwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZXdpZGUt
cGxheS1wYXVzZS1vZmZzY3JlZW4tYW5pbWF0aW9ucy5odG1sCkBAIC0wLDAgKzEsMTUwIEBACis8
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHJ1blNpbmdseT10cnVlIF0gLS0+Cis8IS0tIEFsd2F5
cyBydW4gdGhpcyB0ZXN0IGluIGEgY2xlYW4gdGVzdGluZyBlbnZpcm9ubWVudCB3aXRoIHJ1blNp
bmdseT10cnVlLiBXaXRob3V0IGRvaW5nIHRoaXMsIHN0YXRlIHByZXNlcnZlZCBiZXR3ZWVuCisg
ICAgIGVhY2ggcnVuIGNhbiBjYXVzZSByZXBlYXRlZCBpdGVyYXRpb25zIG9mIHRoaXMgdGVzdCB0
byBmYWlsLiAtLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisjY3NzLWJh
Y2tncm91bmQtc3ZnLWNvbnRhaW5lciB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiA2MHB4
OworICBiYWNrZ3JvdW5kOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgaWQ9ImNz
cy1iYWNrZ3JvdW5kLXN2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVj
dCBpZD0iYmFja2dyb3VuZC1pbWFnZS1zdmctcmVjdCIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBm
aWxsPSJncmVlbiI+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ieCIgZnJvbT0iMCIgdG89IjIwMCIg
ZHVyPSI1cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz48L3JlY3Q+PC9zdmc+Jyk7Cit9Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJtYXJnaW4tYm90dG9tLWFuY2hvciI+
PC9kaXY+CisKKzxzdmcgaWQ9ImlubGluZS1zdmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyI+CisgIDxyZWN0IGlkPSJzdmctcmVjdCIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBm
aWxsPSJncmVlbiI+CisgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ieCIgZnJvbT0iMCIgdG89
IjMwIiBkdXI9IjVzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIvPgorICA8L3JlY3Q+Cis8L3N2
Zz4KKworPGRpdiBpZD0iY3NzLWJhY2tncm91bmQtc3ZnLWNvbnRhaW5lciI+PC9kaXY+CisKKzxp
bWcgaWQ9ImltZy1zcmMtc3ZnLWNvbnRhaW5lciIgc3JjPQorJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1
dGY4LAorICA8c3ZnIGlkPSJpbWctc3JjLXN2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIj4KKyAgICA8cmVjdCB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9ImdyZWVuIj4K
KyAgICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9IngiIGZyb209IjAiIHRvPSIzMCIgZHVyPSI1
cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz4KKyAgICA8L3JlY3Q+CisgIDwvc3ZnPgorJz4K
KworPGlmcmFtZSBpZD0iaWZyYW1lLXNyY2RvYy1zdmctY29udGFpbmVyIiBzcmNkb2M9JworICA8
c3ZnIGlkPSJpZnJhbWUtc3JjZG9jLXN2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIj4KKyAgICA8cmVjdCB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9ImdyZWVuIj4KKyAg
ICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9IngiIGZyb209IjAiIHRvPSIzMCIgZHVyPSI1cyIg
cmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz4KKyAgICA8L3JlY3Q+CisgIDwvc3ZnPgorJz48L2lm
cmFtZT4KKworPGltZyBpZD0iZ2lmLWVsZW1lbnQiIHNyYz0icmVzb3VyY2VzL2FuaW1hdGlvbi5n
aWYiIC8+CisKKzxzY3JpcHQ+Cit2YXIgdGVzdE91dHB1dCA9ICJUaGlzIHRlc3QgZW5zdXJlcyB0
aGF0IGFuaW1hdGlvbnMgcmVzdW1lZCBvZmYtc2NyZWVuIGRvbid0IHN0YXJ0IHBsYXlpbmcgdW50
aWwgdGhleSBiZWNvbWUgdmlzaWJsZSBpbiB0aGUgdmlld3BvcnQuXG5cbiI7Cit3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgaWYg
KCF3aW5kb3cuaW50ZXJuYWxzKQorICAgIHJldHVybjsKKyAgaW50ZXJuYWxzLnNldHRpbmdzLnNl
dEltYWdlQW5pbWF0aW9uQ29udHJvbEVuYWJsZWQodHJ1ZSk7CisKKyAgc2V0VGltZW91dChhc3lu
YyAoKSA9PiB7CisgICAgdGVzdE91dHB1dCArPSAiVmVyaWZ5aW5nIGFuaW1hdGlvbnMgYXJlIGlu
aXRpYWxseSBwbGF5aW5nLlxuXG4iOworICAgIGF3YWl0IHZlcmlmeUFuaW1hdGlvbnNBcmVQYXVz
ZWQoZmFsc2UpOworCisgICAgdGVzdE91dHB1dCArPSAiUGF1c2luZyBhbmltYXRpb25zIHBhZ2Ut
d2lkZS5cblxuIjsKKyAgICBpbnRlcm5hbHMuc2V0SW1hZ2VBbmltYXRpb25FbmFibGVkKGZhbHNl
KTsKKyAgICBhd2FpdCB2ZXJpZnlBbmltYXRpb25zQXJlUGF1c2VkKHRydWUpOworCisgICAgdGVz
dE91dHB1dCArPSAiTW92aW5nIGFuaW1hdGlvbnMgb2ZmLXNjcmVlbiBhbmQgZW5hYmxpbmcgcGFn
ZS13aWRlIGFuaW1hdGlvbiAod2hpY2ggc2hvdWxkIGhhdmUgbm8gZWZmZWN0IGZvciBvZmYtc2Ny
ZWVuIGFuaW1hdGlvbnMpLlxuXG4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYXJn
aW4tYm90dG9tLWFuY2hvciIpLnN0eWxlLm1hcmdpbkJvdHRvbSA9ICIyMDAwcHgiOworICAgIC8v
IFdhaXQgZm9yIHRoZSBwYWdlIHRvIHVwZGF0ZS4KKyAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTApKTsKKyAgICBpbnRlcm5hbHMuc2V0SW1hZ2VB
bmltYXRpb25FbmFibGVkKHRydWUpOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZUFu
aW1hdGlvbkNvbnRyb2xFbmFibGVkKGZhbHNlKTsKKyAgICBhd2FpdCB2ZXJpZnlBbmltYXRpb25z
QXJlUGF1c2VkKHRydWUpOworCisgICAgdGVzdE91dHB1dCArPSAiU2Nyb2xsaW5nIHRvIG1ha2Ug
YW5pbWF0aW9ucyB2aXNpYmxlIGFnYWluLiBUaGV5IHNob3VsZCByZXN1bWUgYXV0b21hdGljYWxs
eSBiZWNhdXNlIHBhZ2Utd2lkZSBhbmltYXRpb24gaXMgZW5hYmxlZC5cblxuIjsKKyAgICB3aW5k
b3cuc2Nyb2xsQnkoMCwgMjAwMCk7CisgICAgYXdhaXQgdmVyaWZ5QW5pbWF0aW9uc0FyZVBhdXNl
ZChmYWxzZSk7CisKKyAgICBkZWJ1Zyh0ZXN0T3V0cHV0KTsKKyAgICBpbnRlcm5hbHMuY2xlYXJN
ZW1vcnlDYWNoZSgpOworICAgIGZpbmlzaEpTVGVzdCgpOworICB9KTsKK307CisKK3ZhciBnaWZF
bGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdpZi1lbGVtZW50Iik7Cit2YXIgc3Zn
U3ZnRWxlbWVudDsKK2FzeW5jIGZ1bmN0aW9uIHZlcmlmeUFuaW1hdGlvbnNBcmVQYXVzZWQoZXhw
ZWN0UGF1c2VkKSB7CisgIGZvciAoY29uc3QgZWxlbWVudCBvZiBpbnRlcm5hbHMuYWxsU1ZHU1ZH
RWxlbWVudHMoKSkKKyAgICBlbGVtZW50LnNldEN1cnJlbnRUaW1lKDApOworCisgIC8vIEFsbG93
IHRpbWUgdG8gcGFzcyB0byBzZWUgaWYgdGhlIGFuaW1hdGlvbnMgcHJvZ3Jlc3MuCisgIGF3YWl0
IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCA1MCkpOworCisgIGZv
ciAoY29uc3QgZWxlbWVudCBvZiBzb3J0ZWRTVkdTVkdFbGVtZW50cygpKSB7CisgICAgc3ZnU3Zn
RWxlbWVudCA9IGVsZW1lbnQ7CisgICAgdGVzdE91dHB1dCArPSBgVGVzdGluZyAjJHtzdmdTdmdF
bGVtZW50LmlkfS5cbmA7CisKKyAgICBpZiAoIShzdmdTdmdFbGVtZW50LmNoaWxkcmVuWzBdIGlu
c3RhbmNlb2YgU1ZHUmVjdEVsZW1lbnQpKQorICAgICAgdGVzdE91dHB1dCArPSBgRkFJTDogJ2No
aWxkcmVuWzBdJyBvZiAke3N2Z1N2Z0VsZW1lbnQuaWR9IHNob3VsZCd2ZSBiZWVuIGFuIFNWR1Jl
Y3RFbGVtZW50IGJ1dCB3YXNuJ3QsIHNvIHRoaXMgdGVzdCB3b24ndCBiZWhhdmUgYXMgZXhwZWN0
ZWQuXG5gOworCisgICAgdGVzdE91dHB1dCArPSBleHBlY3QoYHN2Z1N2Z0VsZW1lbnQuY2hpbGRy
ZW5bMF0ueC5hbmltVmFsLnZhbHVlICR7ZXhwZWN0UGF1c2VkID8gIj09PSIgOiAiIT09In0gMGAs
ICJ0cnVlIik7CisgIH0KKworICB0ZXN0T3V0cHV0ICs9IGBUZXN0aW5nICMke2dpZkVsZW1lbnQu
aWR9LlxuYDsKKyAgYXdhaXQgd2FpdEZvcigoKSA9PiBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGlu
ZyhnaWZFbGVtZW50KSA9PT0gIWV4cGVjdFBhdXNlZCk7CisgIHRlc3RPdXRwdXQgKz0gZXhwZWN0
KCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhnaWZFbGVtZW50KSIsIGAkeyFleHBlY3RQYXVz
ZWR9YCk7CisgIHRlc3RPdXRwdXQgKz0gIlxuIjsKK30KKworLy8gSW50ZXJzZWN0aW9uT2JzZXJ2
ZXIgaXMgbm90IG5lY2Vzc2FyeSBmb3IgdGhpcyB0ZXN0LCBidXQgdGhlIG91dHB1dCBpcyBoZWxw
ZnVsIHdoZW4gcmVhZGluZyB0aGUgLWV4cGVjdGVkLnR4dCBmaWxlLgorbGV0IGhhZEZpcnN0T2Jz
ZXJ2YXRpb24gPSBmYWxzZTsKK2NvbnN0IHZpZXdwb3J0VmlzaWJpbGl0eU9ic2VydmVyID0gbmV3
IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uIChlbnRyaWVzKSB7CisgIGlmICghaGFkRmly
c3RPYnNlcnZhdGlvbikgeworICAgIGhhZEZpcnN0T2JzZXJ2YXRpb24gPSB0cnVlOworICAgIHJl
dHVybjsKKyAgfQorCisgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykgeworICAgIGlmIChl
bnRyeS5pc0ludGVyc2VjdGluZykKKyAgICAgIHRlc3RPdXRwdXQgKz0gYCMke2VudHJ5LnRhcmdl
dC5pZH0gaXMgbm93IHZpc2libGUgaW4gdGhlIHZpZXdwb3J0LlxuYDsKKyAgICBlbHNlCisgICAg
ICB0ZXN0T3V0cHV0ICs9IGAjJHtlbnRyeS50YXJnZXQuaWR9IGlzIG5vIGxvbmdlciB2aXNpYmxl
IGluIHRoZSB2aWV3cG9ydC5cbmA7CisgIH0KKyAgdGVzdE91dHB1dCArPSAiXG4iOworfSk7CisK
K2ZvciAoY29uc3QgaWQgb2YgWyJpbmxpbmUtc3ZnIiwgImNzcy1iYWNrZ3JvdW5kLXN2Zy1jb250
YWluZXIiLCAiaW1nLXNyYy1zdmctY29udGFpbmVyIiwgImlmcmFtZS1zcmNkb2Mtc3ZnLWNvbnRh
aW5lciIsIGdpZkVsZW1lbnQuaWRdKQorICB2aWV3cG9ydFZpc2liaWxpdHlPYnNlcnZlci5vYnNl
cnZlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSk7CisKK2Z1bmN0aW9uIHNvcnRlZFNWR1NW
R0VsZW1lbnRzKCkgeworICAvLyBTb3J0IHRoZSBTVkcgZWxlbWVudHMgYnkgSUQgc28gdGhlIHRl
c3Qgb3V0cHV0IGlzIGNvbnNpc3RlbnQgZnJvbSBydW4gdG8gcnVuLgorICByZXR1cm4gaW50ZXJu
YWxzLmFsbFNWR1NWR0VsZW1lbnRzKCkuc29ydCgoZWxlbWVudEEsIGVsZW1lbnRCKSA9PiBlbGVt
ZW50QS5pZC5sb2NhbGVDb21wYXJlKGVsZW1lbnRCLmlkKSk7Cit9CisKK2Z1bmN0aW9uIGV4cGVj
dChleHByZXNzaW9uLCBleHBlY3RlZFZhbHVlKSB7CisgIGNvbnN0IGV2YWxFeHByZXNzaW9uID0g
YCR7ZXhwcmVzc2lvbn0gPT09ICR7ZXhwZWN0ZWRWYWx1ZX1gOworICBpZiAoZXZhbChldmFsRXhw
cmVzc2lvbikpCisgICAgcmV0dXJuIGBQQVNTOiAke2V4cHJlc3Npb259IGlzICR7ZXhwZWN0ZWRW
YWx1ZX1cbmA7CisgIHJldHVybiBgRkFJTDogJHtleHByZXNzaW9ufSBkaWRuJ3QgZXF1YWwgJHtl
eHBlY3RlZFZhbHVlfTsgd2FzICR7ZXZhbChleHByZXNzaW9uKX1cbmA7Cit9CisKK2Z1bmN0aW9u
IHdhaXRGb3IoY29uZGl0aW9uKSB7CisgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsK
KyAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHsKKyAgICAgIGlmIChjb25k
aXRpb24oKSkgeworICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTsKKyAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgfQorICAgIH0sIDUpOworICB9KTsKK30KKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDY0NzA0M2NiNWI4My4uMDc0OWI3ZDI0ZGVjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC03OTIsNiArNzkyLDExIEBAIGZh
c3QvY2FudmFzL3dlYmdsL3VzZVdoaWxlUGVuZGluZy5odG1sIFsgU2tpcCBdCiAjIE1hYy1XSzEg
b25seSBjYWNoZXMgZnJhbWVzIGNvbnRhaW5pbmcgSFRNTCBhdCB0aGUgbW9tZW50LgogaHR0cC90
ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtaWZyYW1lLW5vLWN1cnJlbnQtaGlzdG9yeUl0ZW0u
aHRtbAogCisjIFNraXBwZWQgb24gV0sxIGJlY2F1c2UgdGhpcyB0ZXN0IHJlbGllcyBvbiBtb3Zp
bmcgZWxlbWVudHMgb3V0c2lkZSBhIGZpeGVkIHZpZXdwb3J0LAorIyBidXQgaW4gV0sxIC8gRHVt
cFJlbmRlclRyZWUgdGhlIHZpZXdwb3J0IGdyb3dzIGluZmluaXRlbHkgbWFraW5nIG5vdGhpbmcg
aW52aXNpYmxlLgorIyBUaGUgYW5pbWF0aW9uIHRlc3RzIGJlbG93IChlLmcuIGFuaW1hdGVkLWdp
Zi1ib2R5LW91dHNpZGUtdmlld3BvcnQuaHRtbCkgYXJlIHNraXBwZWQgZm9yIHNpbWlsYXIgcmVh
c29ucy4KK2Zhc3QvaW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Utb2Zmc2NyZWVuLWFuaW1hdGlv
bnMuaHRtbCBbIFNraXAgXQorCiAjIEFuaW1hdGVkIGltYWdlIHRocm90dGxpbmcgYmVoYXZlcyBk
aWZmZXJlbnRseSBvbiBXSzEuCiBmYXN0L2ltYWdlcy9hbmltYXRlZC1naWYtYm9keS1vdXRzaWRl
LXZpZXdwb3J0Lmh0bWwgWyBTa2lwIF0KIGZhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi13aW5kb3ct
cmVzaXppbmcuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>